feat: gate code tools by task mode

This commit is contained in:
John
2026-07-02 07:12:18 +08:00
parent c9b7252832
commit e17dcaf4a8
11 changed files with 338 additions and 19 deletions
+17 -1
View File
@@ -97,14 +97,30 @@ test('buildAgentExtensionPolicy filters developer tools', () => {
);
});
test('buildAgentExtensionPolicy includes aider and openhands when granted', () => {
test('buildAgentExtensionPolicy keeps aider and openhands out of chat mode when granted', () => {
const policy = buildAgentExtensionPolicy({
...DEFAULT_USER_CAPABILITIES,
aider: true,
openhands: true,
});
assert.equal(policy.extensionOverrides.some((ext) => ext.name === 'aider'), false);
assert.equal(policy.extensionOverrides.some((ext) => ext.name === 'openhands'), false);
});
test('buildAgentExtensionPolicy includes aider and openhands only for code tool mode', () => {
const policy = buildAgentExtensionPolicy({
...DEFAULT_USER_CAPABILITIES,
aider: true,
openhands: true,
}, { toolMode: 'code' });
assert.ok(policy.extensionOverrides.some((ext) => ext.name === 'aider'));
assert.ok(policy.extensionOverrides.some((ext) => ext.name === 'openhands'));
const aider = policy.extensionOverrides.find((ext) => ext.name === 'aider');
const openhands = policy.extensionOverrides.find((ext) => ext.name === 'openhands');
assert.equal(aider?.metadata?.runtime_scope, 'code_tool_task');
assert.equal(openhands?.metadata?.runtime_scope, 'code_tool_task');
assert.equal(typeof aider?.timeout_ms, 'number');
assert.equal(typeof openhands?.timeout_ms, 'number');
});
test('normalizeCapabilityPatch ignores unknown keys', () => {