Merge branch 'main' into copilot/fix-15
This commit is contained in:
commit
5dfe8679ac
8
.vscode/settings.json
vendored
8
.vscode/settings.json
vendored
@ -1,11 +1,11 @@
|
|||||||
{
|
{
|
||||||
"chat.modeFilesLocations": {
|
"chat.modeFilesLocations": {
|
||||||
".github/chatmodes": true
|
"chatmodes": true
|
||||||
},
|
},
|
||||||
"chat.promptFilesLocations": {
|
"chat.promptFilesLocations": {
|
||||||
".github/prompts": true
|
"prompts": true
|
||||||
},
|
},
|
||||||
"chat.instructionsFilesLocations": {
|
"chat.instructionsFilesLocations": {
|
||||||
".github/instructions": true
|
"instructions": true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -101,25 +101,10 @@ async function applyConfig(configPath = "awesome-copilot.config.yml") {
|
|||||||
};
|
};
|
||||||
|
|
||||||
// Import config manager for effective state computation
|
// Import config manager for effective state computation
|
||||||
const { computeEffectiveItemStates } = require("./config-manager");
|
const { getEffectivelyEnabledItems } = require("./config-manager");
|
||||||
|
|
||||||
// Compute effective states using precedence rules
|
// Get precomputed sets of effectively enabled items for O(1) performance
|
||||||
const effectiveStates = computeEffectiveItemStates(config);
|
const effectivelyEnabledSets = getEffectivelyEnabledItems(config);
|
||||||
|
|
||||||
// Create sets of effectively enabled items for performance
|
|
||||||
const effectivelyEnabledSets = {
|
|
||||||
prompts: new Set(),
|
|
||||||
instructions: new Set(),
|
|
||||||
chatmodes: new Set()
|
|
||||||
};
|
|
||||||
|
|
||||||
for (const section of ["prompts", "instructions", "chatmodes"]) {
|
|
||||||
for (const [itemName, state] of Object.entries(effectiveStates[section])) {
|
|
||||||
if (state.enabled) {
|
|
||||||
effectivelyEnabledSets[section].add(itemName);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Count enabled collections for summary
|
// Count enabled collections for summary
|
||||||
if (config.collections) {
|
if (config.collections) {
|
||||||
|
|||||||
@ -101,6 +101,11 @@ function toBoolean(value) {
|
|||||||
if (normalized === "false") return false;
|
if (normalized === "false") return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Preserve undefined as undefined for "no explicit override"
|
||||||
|
if (value === undefined) {
|
||||||
|
return undefined;
|
||||||
|
}
|
||||||
|
|
||||||
return Boolean(value);
|
return Boolean(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -257,6 +257,37 @@ function runTests() {
|
|||||||
assert(result.prompts.size > 0, 'Should have enabled prompts');
|
assert(result.prompts.size > 0, 'Should have enabled prompts');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Test 10: Undefined values are not treated as explicitly disabled (TASK-004)
|
||||||
|
test("Undefined values are not treated as explicitly disabled", () => {
|
||||||
|
const config = {
|
||||||
|
prompts: {
|
||||||
|
'playwright-generate-test': true, // explicit true
|
||||||
|
'csharp-nunit': false, // explicit false
|
||||||
|
// 'playwright-explore-website' is undefined (not mentioned)
|
||||||
|
},
|
||||||
|
collections: {
|
||||||
|
'testing-automation': true
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const result = computeEffectiveItemStates(config);
|
||||||
|
|
||||||
|
// Explicit true should be explicit
|
||||||
|
const explicitTrue = result.prompts['playwright-generate-test'];
|
||||||
|
assert(explicitTrue && explicitTrue.enabled && explicitTrue.reason === 'explicit',
|
||||||
|
'Explicit true should be enabled with explicit reason');
|
||||||
|
|
||||||
|
// Explicit false should be explicit (strict === false comparison)
|
||||||
|
const explicitFalse = result.prompts['csharp-nunit'];
|
||||||
|
assert(explicitFalse && !explicitFalse.enabled && explicitFalse.reason === 'explicit',
|
||||||
|
'Explicit false should be disabled with explicit reason');
|
||||||
|
|
||||||
|
// Undefined should inherit from collection
|
||||||
|
const undefinedItem = result.prompts['playwright-explore-website'];
|
||||||
|
assert(undefinedItem && undefinedItem.enabled && undefinedItem.reason === 'collection',
|
||||||
|
'Undefined items should inherit from collection, not be treated as explicitly disabled');
|
||||||
|
});
|
||||||
|
|
||||||
console.log(`\nTest Results: ${passedTests}/${totalTests} passed`);
|
console.log(`\nTest Results: ${passedTests}/${totalTests} passed`);
|
||||||
|
|
||||||
if (passedTests === totalTests) {
|
if (passedTests === totalTests) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user