@theia/ai-chat 1.72.2 → 1.72.3

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 +1 @@
1
- {"version":3,"file":"ai-chat-frontend-module.d.ts","sourceRoot":"","sources":["../../src/browser/ai-chat-frontend-module.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;;AA0D/D,wBA8HG"}
1
+ {"version":3,"file":"ai-chat-frontend-module.d.ts","sourceRoot":"","sources":["../../src/browser/ai-chat-frontend-module.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;;AA2D/D,wBA+HG"}
@@ -50,6 +50,7 @@ const pending_image_registry_1 = require("./pending-image-registry");
50
50
  const agent_delegation_tool_1 = require("./agent-delegation-tool");
51
51
  const chat_tool_preference_bindings_1 = require("./chat-tool-preference-bindings");
52
52
  const chat_tool_preferences_1 = require("../common/chat-tool-preferences");
53
+ const pending_tool_confirmation_tracker_1 = require("./pending-tool-confirmation-tracker");
53
54
  const chat_session_store_1 = require("../common/chat-session-store");
54
55
  const chat_session_store_impl_1 = require("./chat-session-store-impl");
55
56
  const chat_content_deserializer_1 = require("../common/chat-content-deserializer");
@@ -90,6 +91,7 @@ exports.default = new inversify_1.ContainerModule(bind => {
90
91
  // Tool confirmation preferences
91
92
  (0, chat_tool_preferences_1.bindChatToolPreferences)(bind);
92
93
  bind(chat_tool_preference_bindings_1.ToolConfirmationManager).toSelf().inSingletonScope();
94
+ bind(pending_tool_confirmation_tracker_1.PendingToolConfirmationTracker).toSelf().inSingletonScope();
93
95
  bind(custom_chat_agent_1.CustomChatAgent).toSelf();
94
96
  bind(custom_agent_factory_1.CustomAgentFactory).toFactory(ctx => (id, name, description, prompt, defaultLLM, showInChat) => {
95
97
  const agent = ctx.container.get(custom_chat_agent_1.CustomChatAgent);
@@ -1 +1 @@
1
- {"version":3,"file":"ai-chat-frontend-module.js","sourceRoot":"","sources":["../../src/browser/ai-chat-frontend-module.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ai-chat-frontend-module.js","sourceRoot":"","sources":["../../src/browser/ai-chat-frontend-module.ts"],"names":[],"mappings":"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"}
@@ -43,6 +43,18 @@ export declare class ToolConfirmationManager {
43
43
  * @param toolRequest - Optional ToolRequest to check for confirmAlwaysAllow flag
44
44
  */
45
45
  setConfirmationMode(toolId: string, mode: ToolConfirmationMode, toolRequest?: ToolRequest): Promise<void>;
46
+ /**
47
+ * Apply multiple per-tool confirmation modes with a single preference write.
48
+ *
49
+ * Preserves the same "remove entry if it matches the effective default" behavior as
50
+ * {@link setConfirmationMode}. Use this for bulk operations to avoid one preference
51
+ * round-trip per tool.
52
+ */
53
+ setConfirmationModes(updates: Iterable<{
54
+ toolId: string;
55
+ mode: ToolConfirmationMode;
56
+ toolRequest?: ToolRequest;
57
+ }>): Promise<void>;
46
58
  /**
47
59
  * Set the confirmation mode for a specific tool for this session only (not persisted, per chat)
48
60
  */
@@ -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,EACH,oBAAoB,EAGvB,MAAM,iCAAiC,CAAC;AACzC,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;;;;;OAKG;IACH,0BAA0B,IAAI,oBAAoB;IAKlD;;;;;OAKG;IACH,0BAA0B,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrE;;;;;;;;;;OAUG;IACH,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,WAAW,GAAG,oBAAoB;IAmBpG;;;;;;OAMG;IACH,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,oBAAoB,EAAE,WAAW,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBzG;;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,OAAO,CAAC,IAAI,CAAC;IAIjD;;;OAGG;IACH,SAAS,CAAC,8BAA8B,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,WAAW,GAAG,oBAAoB;IAezG;;;OAGG;IACH,SAAS,CAAC,iCAAiC,IAAI,oBAAoB;CAMtE"}
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,EACH,oBAAoB,EAGvB,MAAM,iCAAiC,CAAC;AACzC,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;;;;;OAKG;IACH,0BAA0B,IAAI,oBAAoB;IAKlD;;;;;OAKG;IACH,0BAA0B,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrE;;;;;;;;;;OAUG;IACH,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,WAAW,GAAG,oBAAoB;IAmBpG;;;;;;OAMG;IACH,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,oBAAoB,EAAE,WAAW,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBzG;;;;;;OAMG;IACH,oBAAoB,CAAC,OAAO,EAAE,QAAQ,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,oBAAoB,CAAC;QAAC,WAAW,CAAC,EAAE,WAAW,CAAA;KAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAyBjI;;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,OAAO,CAAC,IAAI,CAAC;IAIjD;;;OAGG;IACH,SAAS,CAAC,8BAA8B,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,WAAW,GAAG,oBAAoB;IAezG;;;OAGG;IACH,SAAS,CAAC,iCAAiC,IAAI,oBAAoB;CAMtE"}
@@ -95,6 +95,36 @@ let ToolConfirmationManager = class ToolConfirmationManager {
95
95
  const updated = { ...current, [toolId]: mode };
96
96
  return this.preferenceService.updateValue(chat_tool_preferences_1.TOOL_CONFIRMATION_PREFERENCE, updated);
97
97
  }
98
+ /**
99
+ * Apply multiple per-tool confirmation modes with a single preference write.
100
+ *
101
+ * Preserves the same "remove entry if it matches the effective default" behavior as
102
+ * {@link setConfirmationMode}. Use this for bulk operations to avoid one preference
103
+ * round-trip per tool.
104
+ */
105
+ setConfirmationModes(updates) {
106
+ const current = this.trustAwareReader.get(chat_tool_preferences_1.TOOL_CONFIRMATION_PREFERENCE, {}) ?? {};
107
+ const next = { ...current };
108
+ let changed = false;
109
+ for (const { toolId, mode, toolRequest } of updates) {
110
+ const effectiveDefault = this.computeEffectiveDefaultForTool(toolId, toolRequest);
111
+ if (mode === effectiveDefault) {
112
+ if (toolId in next) {
113
+ delete next[toolId];
114
+ changed = true;
115
+ }
116
+ }
117
+ else if (next[toolId] !== mode) {
118
+ next[toolId] = mode;
119
+ changed = true;
120
+ }
121
+ }
122
+ // Avoid a redundant preference write (and the change event it fires) when nothing changed.
123
+ if (!changed) {
124
+ return Promise.resolve();
125
+ }
126
+ return this.preferenceService.updateValue(chat_tool_preferences_1.TOOL_CONFIRMATION_PREFERENCE, next);
127
+ }
98
128
  /**
99
129
  * Set the confirmation mode for a specific tool for this session only (not persisted, per chat)
100
130
  */
@@ -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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"}
@@ -0,0 +1,46 @@
1
+ import { Disposable, Emitter, Event } from '@theia/core';
2
+ import { ToolCallChatResponseContent } from '../common';
3
+ export interface PendingToolConfirmation {
4
+ readonly chatId: string;
5
+ readonly response: ToolCallChatResponseContent;
6
+ allow(): void;
7
+ deny(): void;
8
+ }
9
+ /**
10
+ * Tracks tool confirmations that are currently awaiting user input across all chats.
11
+ *
12
+ * Used to drive keyboard shortcuts that approve or deny the most recently surfaced
13
+ * pending confirmation. Queries are scoped by chat id so a shortcut only ever targets a
14
+ * confirmation in the chat the user is interacting with, never one in a different chat.
15
+ */
16
+ export declare class PendingToolConfirmationTracker {
17
+ protected readonly pending: PendingToolConfirmation[];
18
+ protected readonly onChangedEmitter: Emitter<void>;
19
+ protected readonly introShownChats: Set<string>;
20
+ readonly onChanged: Event<void>;
21
+ /**
22
+ * Whether the one-time tool-confirmation intro has already been shown for the given chat.
23
+ *
24
+ * Pure query - call {@link markIntroShown} to record that it was shown. Kept separate so it
25
+ * can be used from a React render without side effects.
26
+ */
27
+ hasShownIntro(chatId: string): boolean;
28
+ /**
29
+ * Marks the tool-confirmation intro as shown for the given chat, so it is only rendered once
30
+ * per chat session.
31
+ */
32
+ markIntroShown(chatId: string): void;
33
+ register(entry: PendingToolConfirmation): Disposable;
34
+ unregister(entry: PendingToolConfirmation): void;
35
+ /**
36
+ * Returns the most recently registered pending confirmation, optionally restricted to a single
37
+ * chat. Without a `chatId` it considers all chats (e.g. to drive a global context key); with a
38
+ * `chatId` it only returns a confirmation belonging to that chat.
39
+ */
40
+ getLatest(chatId?: string): PendingToolConfirmation | undefined;
41
+ /**
42
+ * Whether there is a pending confirmation, optionally restricted to a single chat.
43
+ */
44
+ hasPending(chatId?: string): boolean;
45
+ }
46
+ //# sourceMappingURL=pending-tool-confirmation-tracker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pending-tool-confirmation-tracker.d.ts","sourceRoot":"","sources":["../../src/browser/pending-tool-confirmation-tracker.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,2BAA2B,EAAE,MAAM,WAAW,CAAC;AAExD,MAAM,WAAW,uBAAuB;IACpC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,2BAA2B,CAAC;IAC/C,KAAK,IAAI,IAAI,CAAC;IACd,IAAI,IAAI,IAAI,CAAC;CAChB;AAED;;;;;;GAMG;AACH,qBACa,8BAA8B;IAEvC,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,uBAAuB,EAAE,CAAM;IAC3D,SAAS,CAAC,QAAQ,CAAC,gBAAgB,gBAAuB;IAC1D,SAAS,CAAC,QAAQ,CAAC,eAAe,cAAqB;IAEvD,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,CAA+B;IAE9D;;;;;OAKG;IACH,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAItC;;;OAGG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAIpC,QAAQ,CAAC,KAAK,EAAE,uBAAuB,GAAG,UAAU;IAMpD,UAAU,CAAC,KAAK,EAAE,uBAAuB,GAAG,IAAI;IAQhD;;;;OAIG;IACH,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,uBAAuB,GAAG,SAAS;IAS/D;;OAEG;IACH,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO;CAMvC"}
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+ // *****************************************************************************
3
+ // Copyright (C) 2026 EclipseSource GmbH.
4
+ //
5
+ // This program and the accompanying materials are made available under the
6
+ // terms of the Eclipse Public License v. 2.0 which is available at
7
+ // http://www.eclipse.org/legal/epl-2.0.
8
+ //
9
+ // This Source Code may also be made available under the following Secondary
10
+ // Licenses when the conditions for such availability set forth in the Eclipse
11
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
12
+ // with the GNU Classpath Exception which is available at
13
+ // https://www.gnu.org/software/classpath/license.html.
14
+ //
15
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
16
+ // *****************************************************************************
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.PendingToolConfirmationTracker = void 0;
19
+ const tslib_1 = require("tslib");
20
+ const inversify_1 = require("@theia/core/shared/inversify");
21
+ const core_1 = require("@theia/core");
22
+ /**
23
+ * Tracks tool confirmations that are currently awaiting user input across all chats.
24
+ *
25
+ * Used to drive keyboard shortcuts that approve or deny the most recently surfaced
26
+ * pending confirmation. Queries are scoped by chat id so a shortcut only ever targets a
27
+ * confirmation in the chat the user is interacting with, never one in a different chat.
28
+ */
29
+ let PendingToolConfirmationTracker = class PendingToolConfirmationTracker {
30
+ constructor() {
31
+ this.pending = [];
32
+ this.onChangedEmitter = new core_1.Emitter();
33
+ this.introShownChats = new Set();
34
+ this.onChanged = this.onChangedEmitter.event;
35
+ }
36
+ /**
37
+ * Whether the one-time tool-confirmation intro has already been shown for the given chat.
38
+ *
39
+ * Pure query - call {@link markIntroShown} to record that it was shown. Kept separate so it
40
+ * can be used from a React render without side effects.
41
+ */
42
+ hasShownIntro(chatId) {
43
+ return this.introShownChats.has(chatId);
44
+ }
45
+ /**
46
+ * Marks the tool-confirmation intro as shown for the given chat, so it is only rendered once
47
+ * per chat session.
48
+ */
49
+ markIntroShown(chatId) {
50
+ this.introShownChats.add(chatId);
51
+ }
52
+ register(entry) {
53
+ this.pending.push(entry);
54
+ this.onChangedEmitter.fire();
55
+ return core_1.Disposable.create(() => this.unregister(entry));
56
+ }
57
+ unregister(entry) {
58
+ const index = this.pending.indexOf(entry);
59
+ if (index >= 0) {
60
+ this.pending.splice(index, 1);
61
+ this.onChangedEmitter.fire();
62
+ }
63
+ }
64
+ /**
65
+ * Returns the most recently registered pending confirmation, optionally restricted to a single
66
+ * chat. Without a `chatId` it considers all chats (e.g. to drive a global context key); with a
67
+ * `chatId` it only returns a confirmation belonging to that chat.
68
+ */
69
+ getLatest(chatId) {
70
+ for (let i = this.pending.length - 1; i >= 0; i--) {
71
+ if (chatId === undefined || this.pending[i].chatId === chatId) {
72
+ return this.pending[i];
73
+ }
74
+ }
75
+ return undefined;
76
+ }
77
+ /**
78
+ * Whether there is a pending confirmation, optionally restricted to a single chat.
79
+ */
80
+ hasPending(chatId) {
81
+ if (chatId === undefined) {
82
+ return this.pending.length > 0;
83
+ }
84
+ return this.pending.some(entry => entry.chatId === chatId);
85
+ }
86
+ };
87
+ exports.PendingToolConfirmationTracker = PendingToolConfirmationTracker;
88
+ exports.PendingToolConfirmationTracker = PendingToolConfirmationTracker = tslib_1.__decorate([
89
+ (0, inversify_1.injectable)()
90
+ ], PendingToolConfirmationTracker);
91
+ //# sourceMappingURL=pending-tool-confirmation-tracker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pending-tool-confirmation-tracker.js","sourceRoot":"","sources":["../../src/browser/pending-tool-confirmation-tracker.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,4DAA0D;AAC1D,sCAAyD;AAUzD;;;;;;GAMG;AAEI,IAAM,8BAA8B,GAApC,MAAM,8BAA8B;IAApC;QAEgB,YAAO,GAA8B,EAAE,CAAC;QACxC,qBAAgB,GAAG,IAAI,cAAO,EAAQ,CAAC;QACvC,oBAAe,GAAG,IAAI,GAAG,EAAU,CAAC;QAE9C,cAAS,GAAgB,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;IAyDlE,CAAC;IAvDG;;;;;OAKG;IACH,aAAa,CAAC,MAAc;QACxB,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5C,CAAC;IAED;;;OAGG;IACH,cAAc,CAAC,MAAc;QACzB,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACrC,CAAC;IAED,QAAQ,CAAC,KAA8B;QACnC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzB,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;QAC7B,OAAO,iBAAU,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3D,CAAC;IAED,UAAU,CAAC,KAA8B;QACrC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC1C,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;YACb,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAC9B,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;QACjC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACH,SAAS,CAAC,MAAe;QACrB,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAChD,IAAI,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;gBAC5D,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC3B,CAAC;QACL,CAAC;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,MAAe;QACtB,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACvB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;QACnC,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;IAC/D,CAAC;CACJ,CAAA;AA/DY,wEAA8B;yCAA9B,8BAA8B;IAD1C,IAAA,sBAAU,GAAE;GACA,8BAA8B,CA+D1C"}
package/package.json CHANGED
@@ -1,16 +1,16 @@
1
1
  {
2
2
  "name": "@theia/ai-chat",
3
- "version": "1.72.2",
3
+ "version": "1.72.3",
4
4
  "description": "Theia - AI Chat Extension",
5
5
  "dependencies": {
6
- "@theia/ai-core": "1.72.2",
7
- "@theia/core": "1.72.2",
8
- "@theia/editor": "1.72.2",
9
- "@theia/file-search": "1.72.2",
10
- "@theia/filesystem": "1.72.2",
11
- "@theia/monaco": "1.72.2",
6
+ "@theia/ai-core": "1.72.3",
7
+ "@theia/core": "1.72.3",
8
+ "@theia/editor": "1.72.3",
9
+ "@theia/file-search": "1.72.3",
10
+ "@theia/filesystem": "1.72.3",
11
+ "@theia/monaco": "1.72.3",
12
12
  "@theia/monaco-editor-core": "1.108.201",
13
- "@theia/workspace": "1.72.2",
13
+ "@theia/workspace": "1.72.3",
14
14
  "js-yaml": "^4.1.1",
15
15
  "tslib": "^2.8.1"
16
16
  },
@@ -49,10 +49,10 @@
49
49
  "watch": "theiaext watch"
50
50
  },
51
51
  "devDependencies": {
52
- "@theia/ext-scripts": "1.72.2"
52
+ "@theia/ext-scripts": "1.72.3"
53
53
  },
54
54
  "nyc": {
55
55
  "extends": "../../configs/nyc.json"
56
56
  },
57
- "gitHead": "a827989b5c466ae010b4f0bfad054d01d9471505"
57
+ "gitHead": "006945cdc227f743d0308704c27e259ed677d64f"
58
58
  }
@@ -60,6 +60,7 @@ import { DefaultPendingImageRegistry, PendingImageRegistry } from './pending-ima
60
60
  import { AgentDelegationTool } from './agent-delegation-tool';
61
61
  import { ToolConfirmationManager } from './chat-tool-preference-bindings';
62
62
  import { bindChatToolPreferences } from '../common/chat-tool-preferences';
63
+ import { PendingToolConfirmationTracker } from './pending-tool-confirmation-tracker';
63
64
  import { ChatSessionStore } from '../common/chat-session-store';
64
65
  import { ChatSessionStoreImpl } from './chat-session-store-impl';
65
66
  import {
@@ -127,6 +128,7 @@ export default new ContainerModule(bind => {
127
128
  // Tool confirmation preferences
128
129
  bindChatToolPreferences(bind);
129
130
  bind(ToolConfirmationManager).toSelf().inSingletonScope();
131
+ bind(PendingToolConfirmationTracker).toSelf().inSingletonScope();
130
132
 
131
133
  bind(CustomChatAgent).toSelf();
132
134
  bind(CustomAgentFactory).toFactory<CustomChatAgent, [string, string, string, string, string, boolean | undefined]>(
@@ -114,6 +114,38 @@ export class ToolConfirmationManager {
114
114
  return this.preferenceService.updateValue(TOOL_CONFIRMATION_PREFERENCE, updated);
115
115
  }
116
116
 
117
+ /**
118
+ * Apply multiple per-tool confirmation modes with a single preference write.
119
+ *
120
+ * Preserves the same "remove entry if it matches the effective default" behavior as
121
+ * {@link setConfirmationMode}. Use this for bulk operations to avoid one preference
122
+ * round-trip per tool.
123
+ */
124
+ setConfirmationModes(updates: Iterable<{ toolId: string; mode: ToolConfirmationMode; toolRequest?: ToolRequest }>): Promise<void> {
125
+ const current = this.trustAwareReader.get<Record<string, ToolConfirmationMode>>(
126
+ TOOL_CONFIRMATION_PREFERENCE, {}
127
+ ) ?? {};
128
+ const next: Record<string, ToolConfirmationMode> = { ...current };
129
+ let changed = false;
130
+ for (const { toolId, mode, toolRequest } of updates) {
131
+ const effectiveDefault = this.computeEffectiveDefaultForTool(toolId, toolRequest);
132
+ if (mode === effectiveDefault) {
133
+ if (toolId in next) {
134
+ delete next[toolId];
135
+ changed = true;
136
+ }
137
+ } else if (next[toolId] !== mode) {
138
+ next[toolId] = mode;
139
+ changed = true;
140
+ }
141
+ }
142
+ // Avoid a redundant preference write (and the change event it fires) when nothing changed.
143
+ if (!changed) {
144
+ return Promise.resolve();
145
+ }
146
+ return this.preferenceService.updateValue(TOOL_CONFIRMATION_PREFERENCE, next);
147
+ }
148
+
117
149
  /**
118
150
  * Set the confirmation mode for a specific tool for this session only (not persisted, per chat)
119
151
  */
@@ -0,0 +1,99 @@
1
+ // *****************************************************************************
2
+ // Copyright (C) 2026 EclipseSource GmbH.
3
+ //
4
+ // This program and the accompanying materials are made available under the
5
+ // terms of the Eclipse Public License v. 2.0 which is available at
6
+ // http://www.eclipse.org/legal/epl-2.0.
7
+ //
8
+ // This Source Code may also be made available under the following Secondary
9
+ // Licenses when the conditions for such availability set forth in the Eclipse
10
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
11
+ // with the GNU Classpath Exception which is available at
12
+ // https://www.gnu.org/software/classpath/license.html.
13
+ //
14
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
15
+ // *****************************************************************************
16
+
17
+ import { injectable } from '@theia/core/shared/inversify';
18
+ import { Disposable, Emitter, Event } from '@theia/core';
19
+ import { ToolCallChatResponseContent } from '../common';
20
+
21
+ export interface PendingToolConfirmation {
22
+ readonly chatId: string;
23
+ readonly response: ToolCallChatResponseContent;
24
+ allow(): void;
25
+ deny(): void;
26
+ }
27
+
28
+ /**
29
+ * Tracks tool confirmations that are currently awaiting user input across all chats.
30
+ *
31
+ * Used to drive keyboard shortcuts that approve or deny the most recently surfaced
32
+ * pending confirmation. Queries are scoped by chat id so a shortcut only ever targets a
33
+ * confirmation in the chat the user is interacting with, never one in a different chat.
34
+ */
35
+ @injectable()
36
+ export class PendingToolConfirmationTracker {
37
+
38
+ protected readonly pending: PendingToolConfirmation[] = [];
39
+ protected readonly onChangedEmitter = new Emitter<void>();
40
+ protected readonly introShownChats = new Set<string>();
41
+
42
+ readonly onChanged: Event<void> = this.onChangedEmitter.event;
43
+
44
+ /**
45
+ * Whether the one-time tool-confirmation intro has already been shown for the given chat.
46
+ *
47
+ * Pure query - call {@link markIntroShown} to record that it was shown. Kept separate so it
48
+ * can be used from a React render without side effects.
49
+ */
50
+ hasShownIntro(chatId: string): boolean {
51
+ return this.introShownChats.has(chatId);
52
+ }
53
+
54
+ /**
55
+ * Marks the tool-confirmation intro as shown for the given chat, so it is only rendered once
56
+ * per chat session.
57
+ */
58
+ markIntroShown(chatId: string): void {
59
+ this.introShownChats.add(chatId);
60
+ }
61
+
62
+ register(entry: PendingToolConfirmation): Disposable {
63
+ this.pending.push(entry);
64
+ this.onChangedEmitter.fire();
65
+ return Disposable.create(() => this.unregister(entry));
66
+ }
67
+
68
+ unregister(entry: PendingToolConfirmation): void {
69
+ const index = this.pending.indexOf(entry);
70
+ if (index >= 0) {
71
+ this.pending.splice(index, 1);
72
+ this.onChangedEmitter.fire();
73
+ }
74
+ }
75
+
76
+ /**
77
+ * Returns the most recently registered pending confirmation, optionally restricted to a single
78
+ * chat. Without a `chatId` it considers all chats (e.g. to drive a global context key); with a
79
+ * `chatId` it only returns a confirmation belonging to that chat.
80
+ */
81
+ getLatest(chatId?: string): PendingToolConfirmation | undefined {
82
+ for (let i = this.pending.length - 1; i >= 0; i--) {
83
+ if (chatId === undefined || this.pending[i].chatId === chatId) {
84
+ return this.pending[i];
85
+ }
86
+ }
87
+ return undefined;
88
+ }
89
+
90
+ /**
91
+ * Whether there is a pending confirmation, optionally restricted to a single chat.
92
+ */
93
+ hasPending(chatId?: string): boolean {
94
+ if (chatId === undefined) {
95
+ return this.pending.length > 0;
96
+ }
97
+ return this.pending.some(entry => entry.chatId === chatId);
98
+ }
99
+ }