@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.
@@ -1,12 +1,13 @@
1
1
  import { PreferenceService } from '@theia/core/lib/common/preferences';
2
- import { ToolConfirmationMode, ChatToolPreferences } from '../common/chat-tool-preferences';
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,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAC1H,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C;;GAEG;AACH,qBACa,uBAAuB;IAEhC,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,mBAAmB,CAAC;IAGpD,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAGxD,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;IAuBpG;;;;;;OAMG;IACH,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,oBAAoB,EAAE,WAAW,CAAC,EAAE,WAAW,GAAG,IAAI;IAwBhG;;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;IAIxE,gCAAgC,IAAI,IAAI;CAQ3C"}
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.preferences[chat_tool_preferences_1.TOOL_CONFIRMATION_PREFERENCE];
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.preferences[chat_tool_preferences_1.TOOL_CONFIRMATION_PREFERENCE] || {};
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.preferences[chat_tool_preferences_1.TOOL_CONFIRMATION_PREFERENCE] || {};
119
+ return this.trustAwareReader.get(chat_tool_preferences_1.TOOL_CONFIRMATION_PREFERENCE, {}) ?? {};
119
120
  }
120
121
  resetAllConfirmationModeSettings() {
121
- const current = this.preferences[chat_tool_preferences_1.TOOL_CONFIRMATION_PREFERENCE] || {};
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":"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"}
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().returns(undefined)
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
- manager = new chat_tool_preference_bindings_1.ToolConfirmationManager();
48
- manager.preferences = getPreferencesMock();
49
- manager.preferenceService = preferenceServiceMock;
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
- preferenceServiceMock.inspect.returns({
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
- preferenceServiceMock.inspect.returns({
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
- preferenceServiceMock.inspect.returns({
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
- preferenceServiceMock.inspect.returns({
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
- preferenceServiceMock.inspect.returns({
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
- preferenceServiceMock.inspect.returns({
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.57+1fc9a8239",
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.57+1fc9a8239",
7
- "@theia/core": "1.71.0-next.57+1fc9a8239",
8
- "@theia/editor": "1.71.0-next.57+1fc9a8239",
9
- "@theia/file-search": "1.71.0-next.57+1fc9a8239",
10
- "@theia/filesystem": "1.71.0-next.57+1fc9a8239",
11
- "@theia/monaco": "1.71.0-next.57+1fc9a8239",
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.57+1fc9a8239",
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": "1fc9a8239357c913ab79f1922b6e87aecd79cfdb"
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, TOOL_CONFIRMATION_PREFERENCE, ChatToolPreferences } from '../common/chat-tool-preferences';
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().returns(undefined)
56
+ inspect: sinon.stub().callsFake(() => inspectResult)
52
57
  } as unknown as sinon.SinonStubbedInstance<PreferenceService>;
53
58
 
54
- manager = new ToolConfirmationManager();
55
- (manager as unknown as { preferences: ChatToolPreferences }).preferences = getPreferencesMock();
56
- (manager as unknown as { preferenceService: PreferenceService }).preferenceService = preferenceServiceMock;
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
- (preferenceServiceMock.inspect as sinon.SinonStub).returns({
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
- (preferenceServiceMock.inspect as sinon.SinonStub).returns({
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
- (preferenceServiceMock.inspect as sinon.SinonStub).returns({
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
- (preferenceServiceMock.inspect as sinon.SinonStub).returns({
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
- (preferenceServiceMock.inspect as sinon.SinonStub).returns({
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
- (preferenceServiceMock.inspect as sinon.SinonStub).returns({
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, ChatToolPreferences } from '../common/chat-tool-preferences';
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.preferences[TOOL_CONFIRMATION_PREFERENCE];
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.preferences[TOOL_CONFIRMATION_PREFERENCE] || {};
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.preferences[TOOL_CONFIRMATION_PREFERENCE] || {};
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.preferences[TOOL_CONFIRMATION_PREFERENCE] || {};
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 {