@theia/ai-chat 1.71.0-next.57 → 1.71.0-next.64
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/browser/chat-tool-preference-bindings.d.ts +3 -2
- package/lib/browser/chat-tool-preference-bindings.d.ts.map +1 -1
- package/lib/browser/chat-tool-preference-bindings.js +9 -8
- package/lib/browser/chat-tool-preference-bindings.js.map +1 -1
- package/lib/browser/chat-tool-preference-bindings.spec.js +72 -21
- package/lib/browser/chat-tool-preference-bindings.spec.js.map +1 -1
- package/package.json +9 -9
- package/src/browser/chat-tool-preference-bindings.spec.ts +83 -23
- package/src/browser/chat-tool-preference-bindings.ts +17 -8
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { PreferenceService } from '@theia/core/lib/common/preferences';
|
|
2
|
-
import { ToolConfirmationMode
|
|
2
|
+
import { ToolConfirmationMode } from '../common/chat-tool-preferences';
|
|
3
3
|
import { ToolRequest } from '@theia/ai-core';
|
|
4
|
+
import { TrustAwarePreferenceReader } from '@theia/ai-core/lib/browser/trust-aware-preference-reader';
|
|
4
5
|
/**
|
|
5
6
|
* Utility class to manage tool confirmation settings
|
|
6
7
|
*/
|
|
7
8
|
export declare class ToolConfirmationManager {
|
|
8
|
-
protected readonly preferences: ChatToolPreferences;
|
|
9
9
|
protected readonly preferenceService: PreferenceService;
|
|
10
|
+
protected readonly trustAwareReader: TrustAwarePreferenceReader;
|
|
10
11
|
protected sessionOverrides: Map<string, Map<string, ToolConfirmationMode>>;
|
|
11
12
|
/**
|
|
12
13
|
* Get the confirmation mode for a specific tool, considering session overrides first (per chat).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-tool-preference-bindings.d.ts","sourceRoot":"","sources":["../../src/browser/chat-tool-preference-bindings.ts"],"names":[],"mappings":"AAiBA,OAAO,EACH,iBAAiB,EACpB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAgC,
|
|
1
|
+
{"version":3,"file":"chat-tool-preference-bindings.d.ts","sourceRoot":"","sources":["../../src/browser/chat-tool-preference-bindings.ts"],"names":[],"mappings":"AAiBA,OAAO,EACH,iBAAiB,EACpB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAgC,MAAM,iCAAiC,CAAC;AACrG,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,0BAA0B,EAAE,MAAM,0DAA0D,CAAC;AAEtG;;GAEG;AACH,qBACa,uBAAuB;IAEhC,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAGxD,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAE,0BAA0B,CAAC;IAGhE,SAAS,CAAC,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC,CAAa;IAEvF;;;;;;;;;;OAUG;IACH,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,WAAW,GAAG,oBAAoB;IAyBpG;;;;;;OAMG;IACH,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,oBAAoB,EAAE,WAAW,CAAC,EAAE,WAAW,GAAG,IAAI;IA0BhG;;OAEG;IACH,0BAA0B,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,oBAAoB,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAS5F;;OAEG;IACH,qBAAqB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAQ5C;;OAEG;IACH,0BAA0B,IAAI;QAAE,CAAC,MAAM,EAAE,MAAM,GAAG,oBAAoB,CAAA;KAAE;IAMxE,gCAAgC,IAAI,IAAI;CAU3C"}
|
|
@@ -20,6 +20,7 @@ const tslib_1 = require("tslib");
|
|
|
20
20
|
const inversify_1 = require("@theia/core/shared/inversify");
|
|
21
21
|
const preferences_1 = require("@theia/core/lib/common/preferences");
|
|
22
22
|
const chat_tool_preferences_1 = require("../common/chat-tool-preferences");
|
|
23
|
+
const trust_aware_preference_reader_1 = require("@theia/ai-core/lib/browser/trust-aware-preference-reader");
|
|
23
24
|
/**
|
|
24
25
|
* Utility class to manage tool confirmation settings
|
|
25
26
|
*/
|
|
@@ -44,7 +45,7 @@ let ToolConfirmationManager = class ToolConfirmationManager {
|
|
|
44
45
|
if (chatMap && chatMap.has(toolId)) {
|
|
45
46
|
return chatMap.get(toolId);
|
|
46
47
|
}
|
|
47
|
-
const toolConfirmation = this.
|
|
48
|
+
const toolConfirmation = this.trustAwareReader.get(chat_tool_preferences_1.TOOL_CONFIRMATION_PREFERENCE, {}) ?? {};
|
|
48
49
|
if (toolConfirmation[toolId]) {
|
|
49
50
|
return toolConfirmation[toolId];
|
|
50
51
|
}
|
|
@@ -69,7 +70,7 @@ let ToolConfirmationManager = class ToolConfirmationManager {
|
|
|
69
70
|
*/
|
|
70
71
|
setConfirmationMode(toolId, mode, toolRequest) {
|
|
71
72
|
const defaultPref = this.preferenceService.inspect(chat_tool_preferences_1.TOOL_CONFIRMATION_PREFERENCE)?.defaultValue || {};
|
|
72
|
-
const current = this.
|
|
73
|
+
const current = this.trustAwareReader.get(chat_tool_preferences_1.TOOL_CONFIRMATION_PREFERENCE, {}) ?? {};
|
|
73
74
|
let starMode = current['*'];
|
|
74
75
|
if (starMode === undefined) {
|
|
75
76
|
starMode = defaultPref['*'] ?? chat_tool_preferences_1.ToolConfirmationMode.ALWAYS_ALLOW;
|
|
@@ -115,10 +116,10 @@ let ToolConfirmationManager = class ToolConfirmationManager {
|
|
|
115
116
|
* Get all tool confirmation settings
|
|
116
117
|
*/
|
|
117
118
|
getAllConfirmationSettings() {
|
|
118
|
-
return this.
|
|
119
|
+
return this.trustAwareReader.get(chat_tool_preferences_1.TOOL_CONFIRMATION_PREFERENCE, {}) ?? {};
|
|
119
120
|
}
|
|
120
121
|
resetAllConfirmationModeSettings() {
|
|
121
|
-
const current = this.
|
|
122
|
+
const current = this.trustAwareReader.get(chat_tool_preferences_1.TOOL_CONFIRMATION_PREFERENCE, {}) ?? {};
|
|
122
123
|
if ('*' in current) {
|
|
123
124
|
this.preferenceService.updateValue(chat_tool_preferences_1.TOOL_CONFIRMATION_PREFERENCE, { '*': current['*'] });
|
|
124
125
|
}
|
|
@@ -128,14 +129,14 @@ let ToolConfirmationManager = class ToolConfirmationManager {
|
|
|
128
129
|
}
|
|
129
130
|
};
|
|
130
131
|
exports.ToolConfirmationManager = ToolConfirmationManager;
|
|
131
|
-
tslib_1.__decorate([
|
|
132
|
-
(0, inversify_1.inject)(chat_tool_preferences_1.ChatToolPreferences),
|
|
133
|
-
tslib_1.__metadata("design:type", Object)
|
|
134
|
-
], ToolConfirmationManager.prototype, "preferences", void 0);
|
|
135
132
|
tslib_1.__decorate([
|
|
136
133
|
(0, inversify_1.inject)(preferences_1.PreferenceService),
|
|
137
134
|
tslib_1.__metadata("design:type", Object)
|
|
138
135
|
], ToolConfirmationManager.prototype, "preferenceService", void 0);
|
|
136
|
+
tslib_1.__decorate([
|
|
137
|
+
(0, inversify_1.inject)(trust_aware_preference_reader_1.TrustAwarePreferenceReader),
|
|
138
|
+
tslib_1.__metadata("design:type", trust_aware_preference_reader_1.TrustAwarePreferenceReader)
|
|
139
|
+
], ToolConfirmationManager.prototype, "trustAwareReader", void 0);
|
|
139
140
|
exports.ToolConfirmationManager = ToolConfirmationManager = tslib_1.__decorate([
|
|
140
141
|
(0, inversify_1.injectable)()
|
|
141
142
|
], ToolConfirmationManager);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-tool-preference-bindings.js","sourceRoot":"","sources":["../../src/browser/chat-tool-preference-bindings.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;;AAEhF,4DAAkE;AAClE,oEAE4C;AAC5C,
|
|
1
|
+
{"version":3,"file":"chat-tool-preference-bindings.js","sourceRoot":"","sources":["../../src/browser/chat-tool-preference-bindings.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,12 +17,18 @@
|
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
18
|
const chai_1 = require("chai");
|
|
19
19
|
const sinon = require("sinon");
|
|
20
|
+
const inversify_1 = require("@theia/core/shared/inversify");
|
|
20
21
|
const chat_tool_preference_bindings_1 = require("./chat-tool-preference-bindings");
|
|
21
22
|
const chat_tool_preferences_1 = require("../common/chat-tool-preferences");
|
|
23
|
+
const preferences_1 = require("@theia/core/lib/common/preferences");
|
|
24
|
+
const trust_aware_preference_reader_1 = require("@theia/ai-core/lib/browser/trust-aware-preference-reader");
|
|
22
25
|
describe('ToolConfirmationManager', () => {
|
|
23
26
|
let manager;
|
|
24
27
|
let preferenceServiceMock;
|
|
28
|
+
let trustAwareReaderMock;
|
|
25
29
|
let storedPreferences;
|
|
30
|
+
let trusted;
|
|
31
|
+
let inspectResult;
|
|
26
32
|
const createToolRequest = (id, confirmAlwaysAllow) => ({
|
|
27
33
|
id,
|
|
28
34
|
name: id,
|
|
@@ -30,23 +36,32 @@ describe('ToolConfirmationManager', () => {
|
|
|
30
36
|
parameters: { type: 'object', properties: {} },
|
|
31
37
|
confirmAlwaysAllow
|
|
32
38
|
});
|
|
33
|
-
const getPreferencesMock = () => ({
|
|
34
|
-
get [chat_tool_preferences_1.TOOL_CONFIRMATION_PREFERENCE]() {
|
|
35
|
-
return storedPreferences;
|
|
36
|
-
}
|
|
37
|
-
});
|
|
38
39
|
beforeEach(() => {
|
|
39
40
|
storedPreferences = {};
|
|
41
|
+
trusted = true;
|
|
42
|
+
inspectResult = undefined;
|
|
40
43
|
preferenceServiceMock = {
|
|
41
44
|
updateValue: sinon.stub().callsFake((_key, value) => {
|
|
42
45
|
storedPreferences = value;
|
|
43
46
|
return Promise.resolve();
|
|
44
47
|
}),
|
|
45
|
-
inspect: sinon.stub().
|
|
48
|
+
inspect: sinon.stub().callsFake(() => inspectResult)
|
|
49
|
+
};
|
|
50
|
+
trustAwareReaderMock = {
|
|
51
|
+
get: sinon.stub().callsFake((_name, fallback) => {
|
|
52
|
+
if (trusted) {
|
|
53
|
+
return storedPreferences ?? fallback;
|
|
54
|
+
}
|
|
55
|
+
const insp = inspectResult;
|
|
56
|
+
const value = insp?.globalValue ?? insp?.defaultValue;
|
|
57
|
+
return (value ?? fallback);
|
|
58
|
+
})
|
|
46
59
|
};
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
60
|
+
const container = new inversify_1.Container();
|
|
61
|
+
container.bind(chat_tool_preference_bindings_1.ToolConfirmationManager).toSelf().inSingletonScope();
|
|
62
|
+
container.bind(preferences_1.PreferenceService).toConstantValue(preferenceServiceMock);
|
|
63
|
+
container.bind(trust_aware_preference_reader_1.TrustAwarePreferenceReader).toConstantValue(trustAwareReaderMock);
|
|
64
|
+
manager = container.get(chat_tool_preference_bindings_1.ToolConfirmationManager);
|
|
50
65
|
});
|
|
51
66
|
describe('getConfirmationMode', () => {
|
|
52
67
|
it('should return ALWAYS_ALLOW for regular tools by default', () => {
|
|
@@ -81,6 +96,42 @@ describe('ToolConfirmationManager', () => {
|
|
|
81
96
|
(0, chai_1.expect)(mode).to.equal(chat_tool_preferences_1.ToolConfirmationMode.DISABLED);
|
|
82
97
|
});
|
|
83
98
|
});
|
|
99
|
+
describe('workspace trust', () => {
|
|
100
|
+
it('ignores workspace {"*": "always_allow"} when workspace is untrusted', () => {
|
|
101
|
+
trusted = false;
|
|
102
|
+
// Simulate the effective (workspace-merged) preference containing always_allow,
|
|
103
|
+
// while the user/global scope is not set and the schema default prescribes
|
|
104
|
+
// CONFIRM. If the workspace override were honoured the mode would be
|
|
105
|
+
// ALWAYS_ALLOW; because trust filters the workspace scope out, the default
|
|
106
|
+
// (CONFIRM) wins, which demonstrably proves the override was dropped.
|
|
107
|
+
storedPreferences['*'] = chat_tool_preferences_1.ToolConfirmationMode.ALWAYS_ALLOW;
|
|
108
|
+
inspectResult = {
|
|
109
|
+
defaultValue: { '*': chat_tool_preferences_1.ToolConfirmationMode.CONFIRM },
|
|
110
|
+
workspaceValue: { '*': chat_tool_preferences_1.ToolConfirmationMode.ALWAYS_ALLOW }
|
|
111
|
+
};
|
|
112
|
+
const mode = manager.getConfirmationMode('someTool', 'chat-1');
|
|
113
|
+
(0, chai_1.expect)(mode).to.equal(chat_tool_preferences_1.ToolConfirmationMode.CONFIRM);
|
|
114
|
+
});
|
|
115
|
+
it('blocks confirmAlwaysAllow bypass via workspace {"*": "always_allow"} when untrusted', () => {
|
|
116
|
+
trusted = false;
|
|
117
|
+
storedPreferences['*'] = chat_tool_preferences_1.ToolConfirmationMode.ALWAYS_ALLOW;
|
|
118
|
+
inspectResult = {
|
|
119
|
+
defaultValue: {},
|
|
120
|
+
workspaceValue: { '*': chat_tool_preferences_1.ToolConfirmationMode.ALWAYS_ALLOW }
|
|
121
|
+
};
|
|
122
|
+
const toolRequest = createToolRequest('dangerousTool', true);
|
|
123
|
+
const mode = manager.getConfirmationMode('dangerousTool', 'chat-1', toolRequest);
|
|
124
|
+
// Without the workspace value the map is empty, so the default for a
|
|
125
|
+
// confirmAlwaysAllow tool (CONFIRM) is used.
|
|
126
|
+
(0, chai_1.expect)(mode).to.equal(chat_tool_preferences_1.ToolConfirmationMode.CONFIRM);
|
|
127
|
+
});
|
|
128
|
+
it('honours workspace {"*": "always_allow"} when workspace is trusted', () => {
|
|
129
|
+
trusted = true;
|
|
130
|
+
storedPreferences['*'] = chat_tool_preferences_1.ToolConfirmationMode.ALWAYS_ALLOW;
|
|
131
|
+
const mode = manager.getConfirmationMode('regularTool', 'chat-1');
|
|
132
|
+
(0, chai_1.expect)(mode).to.equal(chat_tool_preferences_1.ToolConfirmationMode.ALWAYS_ALLOW);
|
|
133
|
+
});
|
|
134
|
+
});
|
|
84
135
|
describe('setConfirmationMode', () => {
|
|
85
136
|
it('should persist ALWAYS_ALLOW for regular tools when different from default', () => {
|
|
86
137
|
storedPreferences['*'] = chat_tool_preferences_1.ToolConfirmationMode.CONFIRM;
|
|
@@ -99,48 +150,48 @@ describe('ToolConfirmationManager', () => {
|
|
|
99
150
|
(0, chai_1.expect)(preferenceServiceMock.updateValue.called).to.be.false;
|
|
100
151
|
});
|
|
101
152
|
it('should not persist when mode matches the global preference default', () => {
|
|
102
|
-
|
|
153
|
+
inspectResult = {
|
|
103
154
|
defaultValue: { '*': chat_tool_preferences_1.ToolConfirmationMode.CONFIRM }
|
|
104
|
-
}
|
|
155
|
+
};
|
|
105
156
|
manager.setConfirmationMode('regularTool', chat_tool_preferences_1.ToolConfirmationMode.CONFIRM);
|
|
106
157
|
(0, chai_1.expect)(preferenceServiceMock.updateValue.called).to.be.false;
|
|
107
158
|
});
|
|
108
159
|
it('should persist when mode differs from the global preference default', () => {
|
|
109
|
-
|
|
160
|
+
inspectResult = {
|
|
110
161
|
defaultValue: { '*': chat_tool_preferences_1.ToolConfirmationMode.CONFIRM }
|
|
111
|
-
}
|
|
162
|
+
};
|
|
112
163
|
manager.setConfirmationMode('regularTool', chat_tool_preferences_1.ToolConfirmationMode.DISABLED);
|
|
113
164
|
(0, chai_1.expect)(preferenceServiceMock.updateValue.calledOnce).to.be.true;
|
|
114
165
|
(0, chai_1.expect)(storedPreferences['regularTool']).to.equal(chat_tool_preferences_1.ToolConfirmationMode.DISABLED);
|
|
115
166
|
});
|
|
116
167
|
it('should not persist when mode matches the tool-specific preference default', () => {
|
|
117
|
-
|
|
168
|
+
inspectResult = {
|
|
118
169
|
defaultValue: { 'myTool': chat_tool_preferences_1.ToolConfirmationMode.DISABLED }
|
|
119
|
-
}
|
|
170
|
+
};
|
|
120
171
|
manager.setConfirmationMode('myTool', chat_tool_preferences_1.ToolConfirmationMode.DISABLED);
|
|
121
172
|
(0, chai_1.expect)(preferenceServiceMock.updateValue.called).to.be.false;
|
|
122
173
|
});
|
|
123
174
|
it('should remove entry when mode matches the tool-specific preference default and entry exists', () => {
|
|
124
|
-
|
|
175
|
+
inspectResult = {
|
|
125
176
|
defaultValue: { 'myTool': chat_tool_preferences_1.ToolConfirmationMode.DISABLED }
|
|
126
|
-
}
|
|
177
|
+
};
|
|
127
178
|
storedPreferences['myTool'] = chat_tool_preferences_1.ToolConfirmationMode.ALWAYS_ALLOW;
|
|
128
179
|
manager.setConfirmationMode('myTool', chat_tool_preferences_1.ToolConfirmationMode.DISABLED);
|
|
129
180
|
(0, chai_1.expect)(preferenceServiceMock.updateValue.calledOnce).to.be.true;
|
|
130
181
|
(0, chai_1.expect)(storedPreferences['myTool']).to.be.undefined;
|
|
131
182
|
});
|
|
132
183
|
it('should not persist CONFIRM for confirmAlwaysAllow tool when global preference default is CONFIRM', () => {
|
|
133
|
-
|
|
184
|
+
inspectResult = {
|
|
134
185
|
defaultValue: { '*': chat_tool_preferences_1.ToolConfirmationMode.CONFIRM }
|
|
135
|
-
}
|
|
186
|
+
};
|
|
136
187
|
const toolRequest = createToolRequest('dangerousTool', true);
|
|
137
188
|
manager.setConfirmationMode('dangerousTool', chat_tool_preferences_1.ToolConfirmationMode.CONFIRM, toolRequest);
|
|
138
189
|
(0, chai_1.expect)(preferenceServiceMock.updateValue.called).to.be.false;
|
|
139
190
|
});
|
|
140
191
|
it('should persist ALWAYS_ALLOW for confirmAlwaysAllow tool when global preference default is CONFIRM', () => {
|
|
141
|
-
|
|
192
|
+
inspectResult = {
|
|
142
193
|
defaultValue: { '*': chat_tool_preferences_1.ToolConfirmationMode.CONFIRM }
|
|
143
|
-
}
|
|
194
|
+
};
|
|
144
195
|
const toolRequest = createToolRequest('dangerousTool', true);
|
|
145
196
|
manager.setConfirmationMode('dangerousTool', chat_tool_preferences_1.ToolConfirmationMode.ALWAYS_ALLOW, toolRequest);
|
|
146
197
|
(0, chai_1.expect)(preferenceServiceMock.updateValue.calledOnce).to.be.true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-tool-preference-bindings.spec.js","sourceRoot":"","sources":["../../src/browser/chat-tool-preference-bindings.spec.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"chat-tool-preference-bindings.spec.js","sourceRoot":"","sources":["../../src/browser/chat-tool-preference-bindings.spec.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@theia/ai-chat",
|
|
3
|
-
"version": "1.71.0-next.
|
|
3
|
+
"version": "1.71.0-next.64+5f7caff6d",
|
|
4
4
|
"description": "Theia - AI Chat Extension",
|
|
5
5
|
"dependencies": {
|
|
6
|
-
"@theia/ai-core": "1.71.0-next.
|
|
7
|
-
"@theia/core": "1.71.0-next.
|
|
8
|
-
"@theia/editor": "1.71.0-next.
|
|
9
|
-
"@theia/file-search": "1.71.0-next.
|
|
10
|
-
"@theia/filesystem": "1.71.0-next.
|
|
11
|
-
"@theia/monaco": "1.71.0-next.
|
|
6
|
+
"@theia/ai-core": "1.71.0-next.64+5f7caff6d",
|
|
7
|
+
"@theia/core": "1.71.0-next.64+5f7caff6d",
|
|
8
|
+
"@theia/editor": "1.71.0-next.64+5f7caff6d",
|
|
9
|
+
"@theia/file-search": "1.71.0-next.64+5f7caff6d",
|
|
10
|
+
"@theia/filesystem": "1.71.0-next.64+5f7caff6d",
|
|
11
|
+
"@theia/monaco": "1.71.0-next.64+5f7caff6d",
|
|
12
12
|
"@theia/monaco-editor-core": "1.108.201",
|
|
13
|
-
"@theia/workspace": "1.71.0-next.
|
|
13
|
+
"@theia/workspace": "1.71.0-next.64+5f7caff6d",
|
|
14
14
|
"js-yaml": "^4.1.1",
|
|
15
15
|
"tslib": "^2.6.2"
|
|
16
16
|
},
|
|
@@ -54,5 +54,5 @@
|
|
|
54
54
|
"nyc": {
|
|
55
55
|
"extends": "../../configs/nyc.json"
|
|
56
56
|
},
|
|
57
|
-
"gitHead": "
|
|
57
|
+
"gitHead": "5f7caff6d4a136452787442612656962b5c5099e"
|
|
58
58
|
}
|
|
@@ -16,15 +16,24 @@
|
|
|
16
16
|
|
|
17
17
|
import { expect } from 'chai';
|
|
18
18
|
import * as sinon from 'sinon';
|
|
19
|
+
import { Container } from '@theia/core/shared/inversify';
|
|
19
20
|
import { ToolConfirmationManager } from './chat-tool-preference-bindings';
|
|
20
|
-
import { ToolConfirmationMode
|
|
21
|
+
import { ToolConfirmationMode } from '../common/chat-tool-preferences';
|
|
21
22
|
import { ToolRequest } from '@theia/ai-core';
|
|
22
23
|
import { PreferenceService } from '@theia/core/lib/common/preferences';
|
|
24
|
+
import { TrustAwarePreferenceReader } from '@theia/ai-core/lib/browser/trust-aware-preference-reader';
|
|
23
25
|
|
|
24
26
|
describe('ToolConfirmationManager', () => {
|
|
25
27
|
let manager: ToolConfirmationManager;
|
|
26
28
|
let preferenceServiceMock: sinon.SinonStubbedInstance<PreferenceService>;
|
|
29
|
+
let trustAwareReaderMock: sinon.SinonStubbedInstance<TrustAwarePreferenceReader>;
|
|
27
30
|
let storedPreferences: { [toolId: string]: ToolConfirmationMode };
|
|
31
|
+
let trusted: boolean;
|
|
32
|
+
let inspectResult: {
|
|
33
|
+
defaultValue?: { [toolId: string]: ToolConfirmationMode };
|
|
34
|
+
globalValue?: { [toolId: string]: ToolConfirmationMode };
|
|
35
|
+
workspaceValue?: { [toolId: string]: ToolConfirmationMode };
|
|
36
|
+
} | undefined;
|
|
28
37
|
|
|
29
38
|
const createToolRequest = (id: string, confirmAlwaysAllow?: boolean | string): ToolRequest => ({
|
|
30
39
|
id,
|
|
@@ -34,26 +43,35 @@ describe('ToolConfirmationManager', () => {
|
|
|
34
43
|
confirmAlwaysAllow
|
|
35
44
|
});
|
|
36
45
|
|
|
37
|
-
const getPreferencesMock = (): ChatToolPreferences => ({
|
|
38
|
-
get [TOOL_CONFIRMATION_PREFERENCE](): { [toolId: string]: ToolConfirmationMode } {
|
|
39
|
-
return storedPreferences;
|
|
40
|
-
}
|
|
41
|
-
}) as unknown as ChatToolPreferences;
|
|
42
|
-
|
|
43
46
|
beforeEach(() => {
|
|
44
47
|
storedPreferences = {};
|
|
48
|
+
trusted = true;
|
|
49
|
+
inspectResult = undefined;
|
|
45
50
|
|
|
46
51
|
preferenceServiceMock = {
|
|
47
52
|
updateValue: sinon.stub().callsFake((_key: string, value: { [toolId: string]: ToolConfirmationMode }) => {
|
|
48
53
|
storedPreferences = value;
|
|
49
54
|
return Promise.resolve();
|
|
50
55
|
}),
|
|
51
|
-
inspect: sinon.stub().
|
|
56
|
+
inspect: sinon.stub().callsFake(() => inspectResult)
|
|
52
57
|
} as unknown as sinon.SinonStubbedInstance<PreferenceService>;
|
|
53
58
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
59
|
+
trustAwareReaderMock = {
|
|
60
|
+
get: sinon.stub().callsFake(<T>(_name: string, fallback?: T): T | undefined => {
|
|
61
|
+
if (trusted) {
|
|
62
|
+
return (storedPreferences as unknown as T) ?? fallback;
|
|
63
|
+
}
|
|
64
|
+
const insp = inspectResult;
|
|
65
|
+
const value = insp?.globalValue ?? insp?.defaultValue;
|
|
66
|
+
return ((value as unknown as T) ?? fallback);
|
|
67
|
+
})
|
|
68
|
+
} as unknown as sinon.SinonStubbedInstance<TrustAwarePreferenceReader>;
|
|
69
|
+
|
|
70
|
+
const container = new Container();
|
|
71
|
+
container.bind(ToolConfirmationManager).toSelf().inSingletonScope();
|
|
72
|
+
container.bind(PreferenceService).toConstantValue(preferenceServiceMock as unknown as PreferenceService);
|
|
73
|
+
container.bind(TrustAwarePreferenceReader).toConstantValue(trustAwareReaderMock as unknown as TrustAwarePreferenceReader);
|
|
74
|
+
manager = container.get(ToolConfirmationManager);
|
|
57
75
|
});
|
|
58
76
|
|
|
59
77
|
describe('getConfirmationMode', () => {
|
|
@@ -95,6 +113,48 @@ describe('ToolConfirmationManager', () => {
|
|
|
95
113
|
});
|
|
96
114
|
});
|
|
97
115
|
|
|
116
|
+
describe('workspace trust', () => {
|
|
117
|
+
it('ignores workspace {"*": "always_allow"} when workspace is untrusted', () => {
|
|
118
|
+
trusted = false;
|
|
119
|
+
// Simulate the effective (workspace-merged) preference containing always_allow,
|
|
120
|
+
// while the user/global scope is not set and the schema default prescribes
|
|
121
|
+
// CONFIRM. If the workspace override were honoured the mode would be
|
|
122
|
+
// ALWAYS_ALLOW; because trust filters the workspace scope out, the default
|
|
123
|
+
// (CONFIRM) wins, which demonstrably proves the override was dropped.
|
|
124
|
+
storedPreferences['*'] = ToolConfirmationMode.ALWAYS_ALLOW;
|
|
125
|
+
inspectResult = {
|
|
126
|
+
defaultValue: { '*': ToolConfirmationMode.CONFIRM },
|
|
127
|
+
workspaceValue: { '*': ToolConfirmationMode.ALWAYS_ALLOW }
|
|
128
|
+
};
|
|
129
|
+
|
|
130
|
+
const mode = manager.getConfirmationMode('someTool', 'chat-1');
|
|
131
|
+
expect(mode).to.equal(ToolConfirmationMode.CONFIRM);
|
|
132
|
+
});
|
|
133
|
+
|
|
134
|
+
it('blocks confirmAlwaysAllow bypass via workspace {"*": "always_allow"} when untrusted', () => {
|
|
135
|
+
trusted = false;
|
|
136
|
+
storedPreferences['*'] = ToolConfirmationMode.ALWAYS_ALLOW;
|
|
137
|
+
inspectResult = {
|
|
138
|
+
defaultValue: {},
|
|
139
|
+
workspaceValue: { '*': ToolConfirmationMode.ALWAYS_ALLOW }
|
|
140
|
+
};
|
|
141
|
+
|
|
142
|
+
const toolRequest = createToolRequest('dangerousTool', true);
|
|
143
|
+
const mode = manager.getConfirmationMode('dangerousTool', 'chat-1', toolRequest);
|
|
144
|
+
// Without the workspace value the map is empty, so the default for a
|
|
145
|
+
// confirmAlwaysAllow tool (CONFIRM) is used.
|
|
146
|
+
expect(mode).to.equal(ToolConfirmationMode.CONFIRM);
|
|
147
|
+
});
|
|
148
|
+
|
|
149
|
+
it('honours workspace {"*": "always_allow"} when workspace is trusted', () => {
|
|
150
|
+
trusted = true;
|
|
151
|
+
storedPreferences['*'] = ToolConfirmationMode.ALWAYS_ALLOW;
|
|
152
|
+
|
|
153
|
+
const mode = manager.getConfirmationMode('regularTool', 'chat-1');
|
|
154
|
+
expect(mode).to.equal(ToolConfirmationMode.ALWAYS_ALLOW);
|
|
155
|
+
});
|
|
156
|
+
});
|
|
157
|
+
|
|
98
158
|
describe('setConfirmationMode', () => {
|
|
99
159
|
it('should persist ALWAYS_ALLOW for regular tools when different from default', () => {
|
|
100
160
|
storedPreferences['*'] = ToolConfirmationMode.CONFIRM;
|
|
@@ -116,34 +176,34 @@ describe('ToolConfirmationManager', () => {
|
|
|
116
176
|
});
|
|
117
177
|
|
|
118
178
|
it('should not persist when mode matches the global preference default', () => {
|
|
119
|
-
|
|
179
|
+
inspectResult = {
|
|
120
180
|
defaultValue: { '*': ToolConfirmationMode.CONFIRM }
|
|
121
|
-
}
|
|
181
|
+
};
|
|
122
182
|
manager.setConfirmationMode('regularTool', ToolConfirmationMode.CONFIRM);
|
|
123
183
|
expect(preferenceServiceMock.updateValue.called).to.be.false;
|
|
124
184
|
});
|
|
125
185
|
|
|
126
186
|
it('should persist when mode differs from the global preference default', () => {
|
|
127
|
-
|
|
187
|
+
inspectResult = {
|
|
128
188
|
defaultValue: { '*': ToolConfirmationMode.CONFIRM }
|
|
129
|
-
}
|
|
189
|
+
};
|
|
130
190
|
manager.setConfirmationMode('regularTool', ToolConfirmationMode.DISABLED);
|
|
131
191
|
expect(preferenceServiceMock.updateValue.calledOnce).to.be.true;
|
|
132
192
|
expect(storedPreferences['regularTool']).to.equal(ToolConfirmationMode.DISABLED);
|
|
133
193
|
});
|
|
134
194
|
|
|
135
195
|
it('should not persist when mode matches the tool-specific preference default', () => {
|
|
136
|
-
|
|
196
|
+
inspectResult = {
|
|
137
197
|
defaultValue: { 'myTool': ToolConfirmationMode.DISABLED }
|
|
138
|
-
}
|
|
198
|
+
};
|
|
139
199
|
manager.setConfirmationMode('myTool', ToolConfirmationMode.DISABLED);
|
|
140
200
|
expect(preferenceServiceMock.updateValue.called).to.be.false;
|
|
141
201
|
});
|
|
142
202
|
|
|
143
203
|
it('should remove entry when mode matches the tool-specific preference default and entry exists', () => {
|
|
144
|
-
|
|
204
|
+
inspectResult = {
|
|
145
205
|
defaultValue: { 'myTool': ToolConfirmationMode.DISABLED }
|
|
146
|
-
}
|
|
206
|
+
};
|
|
147
207
|
storedPreferences['myTool'] = ToolConfirmationMode.ALWAYS_ALLOW;
|
|
148
208
|
manager.setConfirmationMode('myTool', ToolConfirmationMode.DISABLED);
|
|
149
209
|
expect(preferenceServiceMock.updateValue.calledOnce).to.be.true;
|
|
@@ -151,18 +211,18 @@ describe('ToolConfirmationManager', () => {
|
|
|
151
211
|
});
|
|
152
212
|
|
|
153
213
|
it('should not persist CONFIRM for confirmAlwaysAllow tool when global preference default is CONFIRM', () => {
|
|
154
|
-
|
|
214
|
+
inspectResult = {
|
|
155
215
|
defaultValue: { '*': ToolConfirmationMode.CONFIRM }
|
|
156
|
-
}
|
|
216
|
+
};
|
|
157
217
|
const toolRequest = createToolRequest('dangerousTool', true);
|
|
158
218
|
manager.setConfirmationMode('dangerousTool', ToolConfirmationMode.CONFIRM, toolRequest);
|
|
159
219
|
expect(preferenceServiceMock.updateValue.called).to.be.false;
|
|
160
220
|
});
|
|
161
221
|
|
|
162
222
|
it('should persist ALWAYS_ALLOW for confirmAlwaysAllow tool when global preference default is CONFIRM', () => {
|
|
163
|
-
|
|
223
|
+
inspectResult = {
|
|
164
224
|
defaultValue: { '*': ToolConfirmationMode.CONFIRM }
|
|
165
|
-
}
|
|
225
|
+
};
|
|
166
226
|
const toolRequest = createToolRequest('dangerousTool', true);
|
|
167
227
|
manager.setConfirmationMode('dangerousTool', ToolConfirmationMode.ALWAYS_ALLOW, toolRequest);
|
|
168
228
|
expect(preferenceServiceMock.updateValue.calledOnce).to.be.true;
|
|
@@ -18,20 +18,21 @@ import { injectable, inject } from '@theia/core/shared/inversify';
|
|
|
18
18
|
import {
|
|
19
19
|
PreferenceService,
|
|
20
20
|
} from '@theia/core/lib/common/preferences';
|
|
21
|
-
import { ToolConfirmationMode, TOOL_CONFIRMATION_PREFERENCE
|
|
21
|
+
import { ToolConfirmationMode, TOOL_CONFIRMATION_PREFERENCE } from '../common/chat-tool-preferences';
|
|
22
22
|
import { ToolRequest } from '@theia/ai-core';
|
|
23
|
+
import { TrustAwarePreferenceReader } from '@theia/ai-core/lib/browser/trust-aware-preference-reader';
|
|
23
24
|
|
|
24
25
|
/**
|
|
25
26
|
* Utility class to manage tool confirmation settings
|
|
26
27
|
*/
|
|
27
28
|
@injectable()
|
|
28
29
|
export class ToolConfirmationManager {
|
|
29
|
-
@inject(ChatToolPreferences)
|
|
30
|
-
protected readonly preferences: ChatToolPreferences;
|
|
31
|
-
|
|
32
30
|
@inject(PreferenceService)
|
|
33
31
|
protected readonly preferenceService: PreferenceService;
|
|
34
32
|
|
|
33
|
+
@inject(TrustAwarePreferenceReader)
|
|
34
|
+
protected readonly trustAwareReader: TrustAwarePreferenceReader;
|
|
35
|
+
|
|
35
36
|
// In-memory session overrides (not persisted), per chat
|
|
36
37
|
protected sessionOverrides: Map<string, Map<string, ToolConfirmationMode>> = new Map();
|
|
37
38
|
|
|
@@ -51,7 +52,9 @@ export class ToolConfirmationManager {
|
|
|
51
52
|
if (chatMap && chatMap.has(toolId)) {
|
|
52
53
|
return chatMap.get(toolId)!;
|
|
53
54
|
}
|
|
54
|
-
const toolConfirmation = this.
|
|
55
|
+
const toolConfirmation = this.trustAwareReader.get<Record<string, ToolConfirmationMode>>(
|
|
56
|
+
TOOL_CONFIRMATION_PREFERENCE, {}
|
|
57
|
+
) ?? {};
|
|
55
58
|
if (toolConfirmation[toolId]) {
|
|
56
59
|
return toolConfirmation[toolId];
|
|
57
60
|
}
|
|
@@ -80,7 +83,9 @@ export class ToolConfirmationManager {
|
|
|
80
83
|
const defaultPref = this.preferenceService.inspect(TOOL_CONFIRMATION_PREFERENCE)?.defaultValue as {
|
|
81
84
|
[toolId: string]: ToolConfirmationMode;
|
|
82
85
|
} || {};
|
|
83
|
-
const current = this.
|
|
86
|
+
const current = this.trustAwareReader.get<Record<string, ToolConfirmationMode>>(
|
|
87
|
+
TOOL_CONFIRMATION_PREFERENCE, {}
|
|
88
|
+
) ?? {};
|
|
84
89
|
let starMode = current['*'];
|
|
85
90
|
if (starMode === undefined) {
|
|
86
91
|
starMode = defaultPref['*'] ?? ToolConfirmationMode.ALWAYS_ALLOW;
|
|
@@ -127,11 +132,15 @@ export class ToolConfirmationManager {
|
|
|
127
132
|
* Get all tool confirmation settings
|
|
128
133
|
*/
|
|
129
134
|
getAllConfirmationSettings(): { [toolId: string]: ToolConfirmationMode } {
|
|
130
|
-
return this.
|
|
135
|
+
return this.trustAwareReader.get<Record<string, ToolConfirmationMode>>(
|
|
136
|
+
TOOL_CONFIRMATION_PREFERENCE, {}
|
|
137
|
+
) ?? {};
|
|
131
138
|
}
|
|
132
139
|
|
|
133
140
|
resetAllConfirmationModeSettings(): void {
|
|
134
|
-
const current = this.
|
|
141
|
+
const current = this.trustAwareReader.get<Record<string, ToolConfirmationMode>>(
|
|
142
|
+
TOOL_CONFIRMATION_PREFERENCE, {}
|
|
143
|
+
) ?? {};
|
|
135
144
|
if ('*' in current) {
|
|
136
145
|
this.preferenceService.updateValue(TOOL_CONFIRMATION_PREFERENCE, { '*': current['*'] });
|
|
137
146
|
} else {
|