@theia/ai-chat 1.72.1 → 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.
- package/lib/browser/ai-chat-frontend-module.d.ts.map +1 -1
- package/lib/browser/ai-chat-frontend-module.js +2 -0
- package/lib/browser/ai-chat-frontend-module.js.map +1 -1
- package/lib/browser/chat-tool-preference-bindings.d.ts +12 -0
- package/lib/browser/chat-tool-preference-bindings.d.ts.map +1 -1
- package/lib/browser/chat-tool-preference-bindings.js +30 -0
- package/lib/browser/chat-tool-preference-bindings.js.map +1 -1
- package/lib/browser/pending-tool-confirmation-tracker.d.ts +46 -0
- package/lib/browser/pending-tool-confirmation-tracker.d.ts.map +1 -0
- package/lib/browser/pending-tool-confirmation-tracker.js +91 -0
- package/lib/browser/pending-tool-confirmation-tracker.js.map +1 -0
- package/package.json +10 -10
- package/src/browser/ai-chat-frontend-module.ts +2 -0
- package/src/browser/chat-tool-preference-bindings.ts +32 -0
- package/src/browser/pending-tool-confirmation-tracker.ts +99 -0
|
@@ -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;;
|
|
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":";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,2EAIyC;AAEzC,4GAAsG;AAEtG;;GAEG;AAEI,IAAM,uBAAuB,GAA7B,MAAM,uBAAuB;IAA7B;QAOH,wDAAwD;QAC9C,qBAAgB,GAAmD,IAAI,GAAG,EAAE,CAAC;
|
|
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.
|
|
3
|
+
"version": "1.72.3",
|
|
4
4
|
"description": "Theia - AI Chat Extension",
|
|
5
5
|
"dependencies": {
|
|
6
|
-
"@theia/ai-core": "1.72.
|
|
7
|
-
"@theia/core": "1.72.
|
|
8
|
-
"@theia/editor": "1.72.
|
|
9
|
-
"@theia/file-search": "1.72.
|
|
10
|
-
"@theia/filesystem": "1.72.
|
|
11
|
-
"@theia/monaco": "1.72.
|
|
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.
|
|
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.
|
|
52
|
+
"@theia/ext-scripts": "1.72.3"
|
|
53
53
|
},
|
|
54
54
|
"nyc": {
|
|
55
55
|
"extends": "../../configs/nyc.json"
|
|
56
56
|
},
|
|
57
|
-
"gitHead": "
|
|
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
|
+
}
|