@theia/ai-chat-ui 1.73.0-next.52 → 1.73.0-next.60
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-ui-frontend-module.d.ts.map +1 -1
- package/lib/browser/ai-chat-ui-frontend-module.js +4 -0
- package/lib/browser/ai-chat-ui-frontend-module.js.map +1 -1
- package/lib/browser/chat-capabilities-service.d.ts.map +1 -1
- package/lib/browser/chat-capabilities-service.js +1 -1
- package/lib/browser/chat-capabilities-service.js.map +1 -1
- package/lib/browser/chat-capabilities-service.spec.js +10 -0
- package/lib/browser/chat-capabilities-service.spec.js.map +1 -1
- package/lib/browser/chat-input-needed-notification-contribution.d.ts +28 -0
- package/lib/browser/chat-input-needed-notification-contribution.d.ts.map +1 -0
- package/lib/browser/chat-input-needed-notification-contribution.js +104 -0
- package/lib/browser/chat-input-needed-notification-contribution.js.map +1 -0
- package/lib/browser/chat-input-needed-notification-contribution.spec.d.ts +2 -0
- package/lib/browser/chat-input-needed-notification-contribution.spec.d.ts.map +1 -0
- package/lib/browser/chat-input-needed-notification-contribution.spec.js +171 -0
- package/lib/browser/chat-input-needed-notification-contribution.spec.js.map +1 -0
- package/lib/browser/chat-input-widget.d.ts +36 -5
- package/lib/browser/chat-input-widget.d.ts.map +1 -1
- package/lib/browser/chat-input-widget.js +113 -22
- package/lib/browser/chat-input-widget.js.map +1 -1
- package/lib/browser/chat-response-renderer/index.d.ts +1 -0
- package/lib/browser/chat-response-renderer/index.d.ts.map +1 -1
- package/lib/browser/chat-response-renderer/index.js +1 -0
- package/lib/browser/chat-response-renderer/index.js.map +1 -1
- package/lib/browser/chat-response-renderer/server-toolcall-part-renderer.d.ts +19 -0
- package/lib/browser/chat-response-renderer/server-toolcall-part-renderer.d.ts.map +1 -0
- package/lib/browser/chat-response-renderer/server-toolcall-part-renderer.js +124 -0
- package/lib/browser/chat-response-renderer/server-toolcall-part-renderer.js.map +1 -0
- package/lib/browser/chat-response-renderer/toolcall-part-renderer.d.ts +0 -1
- package/lib/browser/chat-response-renderer/toolcall-part-renderer.d.ts.map +1 -1
- package/lib/browser/chat-response-renderer/toolcall-part-renderer.js +2 -44
- package/lib/browser/chat-response-renderer/toolcall-part-renderer.js.map +1 -1
- package/lib/browser/chat-response-renderer/toolcall-part-renderer.spec.js +5 -1
- package/lib/browser/chat-response-renderer/toolcall-part-renderer.spec.js.map +1 -1
- package/lib/browser/chat-response-renderer/toolcall-result.d.ts +11 -0
- package/lib/browser/chat-response-renderer/toolcall-result.d.ts.map +1 -0
- package/lib/browser/chat-response-renderer/toolcall-result.js +73 -0
- package/lib/browser/chat-response-renderer/toolcall-result.js.map +1 -0
- package/lib/browser/chat-response-renderer/toolcall-utils.d.ts.map +1 -1
- package/lib/browser/chat-response-renderer/toolcall-utils.js +5 -0
- package/lib/browser/chat-response-renderer/toolcall-utils.js.map +1 -1
- package/lib/browser/chat-session-focus.d.ts +20 -0
- package/lib/browser/chat-session-focus.d.ts.map +1 -0
- package/lib/browser/chat-session-focus.js +49 -0
- package/lib/browser/chat-session-focus.js.map +1 -0
- package/lib/browser/chat-session-focus.spec.d.ts +2 -0
- package/lib/browser/chat-session-focus.spec.d.ts.map +1 -0
- package/lib/browser/chat-session-focus.spec.js +92 -0
- package/lib/browser/chat-session-focus.spec.js.map +1 -0
- package/lib/browser/chat-tree-view/chat-view-tree-input-widget.d.ts +2 -2
- package/lib/browser/chat-tree-view/chat-view-tree-input-widget.d.ts.map +1 -1
- package/lib/browser/chat-tree-view/chat-view-tree-input-widget.js.map +1 -1
- package/lib/browser/chat-tree-view/chat-view-tree-widget.d.ts.map +1 -1
- package/lib/browser/chat-tree-view/chat-view-tree-widget.js +4 -2
- package/lib/browser/chat-tree-view/chat-view-tree-widget.js.map +1 -1
- package/lib/browser/chat-view-language-contribution.d.ts +8 -1
- package/lib/browser/chat-view-language-contribution.d.ts.map +1 -1
- package/lib/browser/chat-view-language-contribution.js +17 -11
- package/lib/browser/chat-view-language-contribution.js.map +1 -1
- package/lib/browser/chat-view-widget.d.ts +1 -1
- package/lib/browser/chat-view-widget.d.ts.map +1 -1
- package/lib/browser/chat-view-widget.js +10 -3
- package/lib/browser/chat-view-widget.js.map +1 -1
- package/lib/browser/generic-capabilities-section.d.ts +3 -0
- package/lib/browser/generic-capabilities-section.d.ts.map +1 -1
- package/lib/browser/generic-capabilities-section.js +5 -4
- package/lib/browser/generic-capabilities-section.js.map +1 -1
- package/lib/browser/generic-capabilities-tree.d.ts +20 -1
- package/lib/browser/generic-capabilities-tree.d.ts.map +1 -1
- package/lib/browser/generic-capabilities-tree.js +90 -8
- package/lib/browser/generic-capabilities-tree.js.map +1 -1
- package/package.json +11 -11
- package/src/browser/ai-chat-ui-frontend-module.ts +6 -0
- package/src/browser/chat-capabilities-service.spec.ts +13 -0
- package/src/browser/chat-capabilities-service.ts +3 -2
- package/src/browser/chat-input-needed-notification-contribution.spec.ts +223 -0
- package/src/browser/chat-input-needed-notification-contribution.ts +103 -0
- package/src/browser/chat-input-widget.tsx +141 -24
- package/src/browser/chat-response-renderer/index.ts +1 -0
- package/src/browser/chat-response-renderer/server-toolcall-part-renderer.tsx +159 -0
- package/src/browser/chat-response-renderer/toolcall-part-renderer.spec.ts +6 -1
- package/src/browser/chat-response-renderer/toolcall-part-renderer.tsx +3 -47
- package/src/browser/chat-response-renderer/toolcall-result.tsx +74 -0
- package/src/browser/chat-response-renderer/toolcall-utils.ts +5 -0
- package/src/browser/chat-session-focus.spec.ts +122 -0
- package/src/browser/chat-session-focus.ts +50 -0
- package/src/browser/chat-tree-view/chat-view-tree-input-widget.tsx +8 -2
- package/src/browser/chat-tree-view/chat-view-tree-widget.tsx +4 -2
- package/src/browser/chat-view-language-contribution.ts +25 -12
- package/src/browser/chat-view-widget.tsx +11 -3
- package/src/browser/generic-capabilities-section.tsx +8 -3
- package/src/browser/generic-capabilities-tree.tsx +127 -10
- package/src/browser/style/index.css +19 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-chat-ui-frontend-module.d.ts","sourceRoot":"","sources":["../../src/browser/ai-chat-ui-frontend-module.ts"],"names":[],"mappings":"AAgBA,OAAO,mCAAmC,CAAC;AAC3C,OAAO,iDAAiD,CAAC;AAIzD,OAAO,EAAE,eAAe,EAAc,MAAM,8BAA8B,CAAC;;
|
|
1
|
+
{"version":3,"file":"ai-chat-ui-frontend-module.d.ts","sourceRoot":"","sources":["../../src/browser/ai-chat-ui-frontend-module.ts"],"names":[],"mappings":"AAgBA,OAAO,mCAAmC,CAAC;AAC3C,OAAO,iDAAiD,CAAC;AAIzD,OAAO,EAAE,eAAe,EAAc,MAAM,8BAA8B,CAAC;;AAsD3E,wBAoJG"}
|
|
@@ -52,6 +52,7 @@ const chat_capabilities_service_1 = require("./chat-capabilities-service");
|
|
|
52
52
|
const chat_input_capabilities_contribution_1 = require("./chat-input-capabilities-contribution");
|
|
53
53
|
const generic_capabilities_service_1 = require("./generic-capabilities-service");
|
|
54
54
|
const tool_confirmation_keybinding_contribution_1 = require("./tool-confirmation-keybinding-contribution");
|
|
55
|
+
const chat_input_needed_notification_contribution_1 = require("./chat-input-needed-notification-contribution");
|
|
55
56
|
exports.default = new inversify_1.ContainerModule((bind, _unbind, _isBound, rebind) => {
|
|
56
57
|
(0, chat_view_preferences_1.bindChatViewPreferences)(bind);
|
|
57
58
|
(0, browser_1.bindViewContribution)(bind, ai_chat_ui_contribution_1.AIChatContribution);
|
|
@@ -82,6 +83,8 @@ exports.default = new inversify_1.ContainerModule((bind, _unbind, _isBound, rebi
|
|
|
82
83
|
bind(tool_confirmation_keybinding_contribution_1.ToolConfirmationKeybindingContribution).toSelf().inSingletonScope();
|
|
83
84
|
bind(core_1.CommandContribution).toService(tool_confirmation_keybinding_contribution_1.ToolConfirmationKeybindingContribution);
|
|
84
85
|
bind(browser_1.KeybindingContribution).toService(tool_confirmation_keybinding_contribution_1.ToolConfirmationKeybindingContribution);
|
|
86
|
+
bind(chat_input_needed_notification_contribution_1.ChatInputNeededNotificationContribution).toSelf().inSingletonScope();
|
|
87
|
+
bind(browser_1.FrontendApplicationContribution).toService(chat_input_needed_notification_contribution_1.ChatInputNeededNotificationContribution);
|
|
85
88
|
(0, core_1.bindRootContributionProvider)(bind, chat_response_part_renderer_1.ChatResponsePartRenderer);
|
|
86
89
|
(0, core_1.bindRootContributionProvider)(bind, chat_tree_view_1.ChatWelcomeMessageProvider);
|
|
87
90
|
bindChatViewWidget(bind);
|
|
@@ -135,6 +138,7 @@ exports.default = new inversify_1.ContainerModule((bind, _unbind, _isBound, rebi
|
|
|
135
138
|
bind(chat_response_part_renderer_1.ChatResponsePartRenderer).to(chat_response_renderer_1.CodePartRenderer).inSingletonScope();
|
|
136
139
|
bind(chat_response_part_renderer_1.ChatResponsePartRenderer).to(chat_response_renderer_1.CommandPartRenderer).inSingletonScope();
|
|
137
140
|
bind(chat_response_part_renderer_1.ChatResponsePartRenderer).to(chat_response_renderer_1.ToolCallPartRenderer).inSingletonScope();
|
|
141
|
+
bind(chat_response_part_renderer_1.ChatResponsePartRenderer).to(chat_response_renderer_1.ServerToolCallPartRenderer).inSingletonScope();
|
|
138
142
|
bind(chat_response_part_renderer_1.ChatResponsePartRenderer).to(chat_response_renderer_1.NotAvailableToolCallRenderer).inSingletonScope();
|
|
139
143
|
bind(chat_response_part_renderer_1.ChatResponsePartRenderer).to(chat_response_renderer_1.ErrorPartRenderer).inSingletonScope();
|
|
140
144
|
bind(chat_response_part_renderer_1.ChatResponsePartRenderer).to(chat_response_renderer_1.ThinkingPartRenderer).inSingletonScope();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-chat-ui-frontend-module.js","sourceRoot":"","sources":["../../src/browser/ai-chat-ui-frontend-module.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,6CAA2C;AAC3C,2DAAyD;AACzD,sCAAkG;AAClG,qDAAuI;AACvI,mFAA0F;AAC1F,4DAA2E;AAC3E,6EAAmF;AACnF,uEAA+D;AAC/D,2DAAkF;AAClF,mGAAsI;AACtI,+EAAyE;AACzE,
|
|
1
|
+
{"version":3,"file":"ai-chat-ui-frontend-module.js","sourceRoot":"","sources":["../../src/browser/ai-chat-ui-frontend-module.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,6CAA2C;AAC3C,2DAAyD;AACzD,sCAAkG;AAClG,qDAAuI;AACvI,mFAA0F;AAC1F,4DAA2E;AAC3E,6EAAmF;AACnF,uEAA+D;AAC/D,2DAAkF;AAClF,mGAAsI;AACtI,+EAAyE;AACzE,qEAgBkC;AAClC,0FAAqF;AACrF,0FAIwD;AACxD,4FAAuF;AACvF,qDAAwF;AACxF,kFAA4E;AAC5E,qEAAoE;AACpE,uFAAiF;AACjF,mEAAkE;AAClE,yDAAoD;AACpD,mGAA4F;AAC5F,uEAAkE;AAClE,8FAAiH;AACjH,4FAAsF;AACtF,8FAAgK;AAChK,sEAAuF;AACvF,6DAA+D;AAC/D,uFAAiF;AACjF,iFAA2E;AAC3E,mFAA6E;AAC7E,yEAAmE;AACnE,uEAAkE;AAClE,2EAAmG;AACnG,iGAA2F;AAC3F,iFAA6I;AAC7I,2GAAqG;AACrG,+GAAwG;AAExG,kBAAe,IAAI,2BAAe,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE;IACnE,IAAA,+CAAuB,EAAC,IAAI,CAAC,CAAC;IAE9B,IAAA,8BAAoB,EAAC,IAAI,EAAE,4CAAkB,CAAC,CAAC;IAC/C,IAAI,CAAC,yCAA+B,CAAC,CAAC,SAAS,CAAC,4CAAkB,CAAC,CAAC;IACpE,IAAI,CAAC,2CAAyB,CAAC,CAAC,SAAS,CAAC,4CAAkB,CAAC,CAAC;IAE9D,IAAI,CAAC,4CAAuB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAC1D,IAAI,CAAC,8DAA4B,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAC/D,IAAI,CAAC,0BAAmB,CAAC,CAAC,SAAS,CAAC,8DAA4B,CAAC,CAAC;IAClE,IAAI,CAAC,gCAAsB,CAAC,CAAC,SAAS,CAAC,8DAA4B,CAAC,CAAC;IAErE,IAAI,CAAC,gDAAqB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAExD,IAAI,CAAC,wDAAyB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAC5D,IAAI,CAAC,0BAAmB,CAAC,CAAC,SAAS,CAAC,wDAAyB,CAAC,CAAC;IAC/D,IAAI,CAAC,gCAAsB,CAAC,CAAC,SAAS,CAAC,wDAAyB,CAAC,CAAC;IAElE,IAAI,CAAC,0DAA0B,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAC7D,IAAI,CAAC,0BAAmB,CAAC,CAAC,SAAS,CAAC,0DAA0B,CAAC,CAAC;IAChE,IAAI,CAAC,gCAAsB,CAAC,CAAC,SAAS,CAAC,0DAA0B,CAAC,CAAC;IAEnE,IAAI,CAAC,+CAAqB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACxD,IAAI,CAAC,0BAAmB,CAAC,CAAC,SAAS,CAAC,+CAAqB,CAAC,CAAC;IAC3D,IAAI,CAAC,gCAAsB,CAAC,CAAC,SAAS,CAAC,+CAAqB,CAAC,CAAC;IAE9D,IAAI,CAAC,uDAA2B,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAC9D,IAAI,CAAC,mDAAuB,CAAC,CAAC,SAAS,CAAC,uDAA2B,CAAC,CAAC;IAErE,IAAA,mCAA4B,EAAC,IAAI,EAAE,8DAA+B,CAAC,CAAC;IACpE,IAAI,CAAC,6DAA8B,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACjE,IAAI,CAAC,yDAA0B,CAAC,CAAC,SAAS,CAAC,6DAA8B,CAAC,CAAC;IAE3E,IAAI,CAAC,wEAAiC,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACpE,IAAI,CAAC,0BAAmB,CAAC,CAAC,SAAS,CAAC,wEAAiC,CAAC,CAAC;IACvE,IAAI,CAAC,gCAAsB,CAAC,CAAC,SAAS,CAAC,wEAAiC,CAAC,CAAC;IAE1E,IAAI,CAAC,kFAAsC,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACzE,IAAI,CAAC,0BAAmB,CAAC,CAAC,SAAS,CAAC,kFAAsC,CAAC,CAAC;IAC5E,IAAI,CAAC,gCAAsB,CAAC,CAAC,SAAS,CAAC,kFAAsC,CAAC,CAAC;IAE/E,IAAI,CAAC,qFAAuC,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAC1E,IAAI,CAAC,yCAA+B,CAAC,CAAC,SAAS,CAAC,qFAAuC,CAAC,CAAC;IAEzF,IAAA,mCAA4B,EAAC,IAAI,EAAE,sDAAwB,CAAC,CAAC;IAC7D,IAAA,mCAA4B,EAAC,IAAI,EAAE,2CAA0B,CAAC,CAAC;IAE/D,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAEzB,IAAI,CAAC,qCAAiB,CAAC,CAAC,MAAM,EAAE,CAAC;IACjC,IAAI,CAAC,4CAAwB,CAAC,CAAC,eAAe,CAAC;QAC3C,WAAW,EAAE,IAAI;QACjB,eAAe,EAAE,IAAI;QACrB,aAAa,EAAE,IAAI;QACnB,gBAAgB,EAAE,IAAI;QACtB,mBAAmB,EAAE,IAAI;KACO,CAAC,CAAC;IACtC,IAAI,CAAC,uBAAa,CAAC,CAAC,cAAc,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;QACnD,EAAE,EAAE,qCAAiB,CAAC,EAAE;QACxB,YAAY,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,qCAAiB,CAAC;KACvD,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAEvB,IAAI,CAAC,0CAAkB,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAC1C,IAAA,yCAAwB,EAAC,GAAG,CAAC,SAAS,CAAC,CAC1C,CAAC;IACF,IAAI,CAAC,uBAAa,CAAC,CAAC,cAAc,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;QACnD,EAAE,EAAE,0CAAkB,CAAC,EAAE;QACzB,YAAY,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,0CAAkB,CAAC;KACxD,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAEvB,IAAI,CAAC,oDAAsB,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAyB,EAAE,EAAE;QACxE,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;QAC9C,SAAS,CAAC,IAAI,CAAC,iDAAmB,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAC1D,SAAS,CAAC,IAAI,CAAC,0DAA4B,CAAC,CAAC,eAAe,CAAC;YACzD,WAAW,EAAE,IAAI;YACjB,eAAe,EAAE,IAAI;YACrB,aAAa,EAAE,KAAK;YACpB,eAAe,EAAE,KAAK;YACtB,gBAAgB,EAAE,IAAI;YACtB,mBAAmB,EAAE,KAAK;SACM,CAAC,CAAC;QACtC,SAAS,CAAC,IAAI,CAAC,mDAAqB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;QAClE,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,mDAAqB,CAAC,CAAC;QACpD,MAAM,IAAI,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC;QACvB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;QAC/C,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;QAC7C,MAAM,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QACxC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACxB,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC9B,6EAA6E;QAC7E,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC;QACtC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC;QACxC,MAAM,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC;QAC1D,MAAM,CAAC,wBAAwB,GAAG,IAAI,CAAC,wBAAwB,IAAI,IAAI,CAAC;QACxE,OAAO,MAAM,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,+CAAqB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAExD,IAAI,CAAC,sDAAwB,CAAC,CAAC,EAAE,CAAC,qDAA4B,CAAC,CAAC,gBAAgB,EAAE,CAAC;IACnF,IAAI,CAAC,sDAAwB,CAAC,CAAC,EAAE,CAAC,0CAAiB,CAAC,CAAC,gBAAgB,EAAE,CAAC;IACxE,IAAI,CAAC,sDAAwB,CAAC,CAAC,EAAE,CAAC,6CAAoB,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAC3E,IAAI,CAAC,sDAAwB,CAAC,CAAC,EAAE,CAAC,yCAAgB,CAAC,CAAC,gBAAgB,EAAE,CAAC;IACvE,IAAI,CAAC,sDAAwB,CAAC,CAAC,EAAE,CAAC,4CAAmB,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAC1E,IAAI,CAAC,sDAAwB,CAAC,CAAC,EAAE,CAAC,6CAAoB,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAC3E,IAAI,CAAC,sDAAwB,CAAC,CAAC,EAAE,CAAC,mDAA0B,CAAC,CAAC,gBAAgB,EAAE,CAAC;IACjF,IAAI,CAAC,sDAAwB,CAAC,CAAC,EAAE,CAAC,qDAA4B,CAAC,CAAC,gBAAgB,EAAE,CAAC;IACnF,IAAI,CAAC,sDAAwB,CAAC,CAAC,EAAE,CAAC,0CAAiB,CAAC,CAAC,gBAAgB,EAAE,CAAC;IACxE,IAAI,CAAC,sDAAwB,CAAC,CAAC,EAAE,CAAC,6CAAoB,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAC3E,IAAI,CAAC,sDAAwB,CAAC,CAAC,EAAE,CAAC,6CAAoB,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAC3E,IAAI,CAAC,sDAAwB,CAAC,CAAC,EAAE,CAAC,6CAAoB,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAC3E,IAAI,CAAC,sDAAwB,CAAC,CAAC,EAAE,CAAC,yCAAgB,CAAC,CAAC,gBAAgB,EAAE,CAAC;IACvE,IAAI,CAAC,sDAAwB,CAAC,CAAC,EAAE,CAAC,+CAAsB,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAC7E,IAAI,CAAC,sDAAwB,CAAC,CAAC,EAAE,CAAC,2CAAmB,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAC1E,CAAC,0BAAmB,EAAE,uBAAgB,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,CAChE,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,iDAAwB,CAAC,CAAC,gBAAgB,EAAE,CAC1E,CAAC;IAEF,IAAA,mCAA4B,EAAC,IAAI,EAAE,+CAAsB,CAAC,CAAC;IAC3D,IAAA,mCAA4B,EAAC,IAAI,EAAE,mDAAuB,CAAC,CAAC;IAC5D,IAAI,CAAC,oDAA2B,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAC9D,IAAI,CAAC,+CAAsB,CAAC,CAAC,SAAS,CAAC,oDAA2B,CAAC,CAAC;IACpE,IAAI,CAAC,uDAA8B,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACjE,IAAI,CAAC,+CAAsB,CAAC,CAAC,SAAS,CAAC,uDAA8B,CAAC,CAAC;IAEvE,IAAI,CAAC,wCAAuB,CAAC,CAAC,EAAE,CAAC,+CAAuB,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAC7E,IAAI,CAAC,wCAAuB,CAAC,CAAC,EAAE,CAAC,sDAA8B,CAAC,CAAC,gBAAgB,EAAE,CAAC;IACpF,IAAI,CAAC,wCAAuB,CAAC,CAAC,EAAE,CAAC,qDAA6B,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAEnF,IAAI,CAAC,yEAAiC,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACpE,IAAI,CAAC,2CAAyB,CAAC,CAAC,SAAS,CAAC,yEAAiC,CAAC,CAAC;IAE7E,IAAI,CAAC,yCAA+B,CAAC,CAAC,EAAE,CAAC,8DAA4B,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAC1F,IAAI,CAAC,kDAAsB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACzD,IAAI,CAAC,gDAAqB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACxD,IAAI,CAAC,mDAAuB,CAAC,CAAC,SAAS,CAAC,gDAAqB,CAAC,CAAC;IAE/D,IAAA,mCAA4B,EAAC,IAAI,EAAE,yEAAiC,CAAC,CAAC;IACtE,IAAI,CAAC,gFAAwC,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAC3E,IAAI,CAAC,yEAAiC,CAAC,CAAC,SAAS,CAAC,gFAAwC,CAAC,CAAC;IAE5F,IAAI,CAAC,sCAAoB,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE;QAC7C,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;QAC9C,SAAS,CAAC,IAAI,CAAC,+BAAa,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;QAC1D,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,+BAAa,CAAC,CAAC;QAC5C,OAAO,MAAM,CAAC;IAClB,CAAC,CAAC,CAAC;AAEP,CAAC,CAAC,CAAC;AAEH,SAAS,kBAAkB,CAAC,IAAqB;IAC7C,IAAI,cAA0C,CAAC;IAC/C,IAAI,CAAC,iCAAc,CAAC,CAAC,MAAM,EAAE,CAAC;IAE9B,IAAI,CAAC,uBAAa,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC3C,EAAE,EAAE,iCAAc,CAAC,EAAE;QACrB,YAAY,EAAE,GAAG,EAAE;YACf,IAAI,cAAc,EAAE,UAAU,KAAK,KAAK,EAAE,CAAC;gBACvC,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,CAAiB,iCAAc,CAAC,CAAC;YAC3E,CAAC;YACD,OAAO,cAAc,CAAC;QAC1B,CAAC;KACJ,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC;AAC3B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-capabilities-service.d.ts","sourceRoot":"","sources":["../../src/browser/chat-capabilities-service.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EACH,aAAa,EAEb,gBAAgB,EAChB,2BAA2B,
|
|
1
|
+
{"version":3,"file":"chat-capabilities-service.d.ts","sourceRoot":"","sources":["../../src/browser/chat-capabilities-service.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EACH,aAAa,EAEb,gBAAgB,EAChB,2BAA2B,EAI9B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAElD,eAAO,MAAM,uBAAuB,eAAoC,CAAC;AAEzE;;;GAGG;AACH,MAAM,WAAW,uBAAuB;IACpC;;OAEG;IACH,QAAQ,CAAC,uBAAuB,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IAE9C;;;;;;;OAOG;IACH,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAEvF;;;;;;;OAOG;IACH,kCAAkC,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,2BAA2B,CAAC,CAAC;CAC9G;AAED,qBACa,2BAA4B,YAAW,uBAAuB;IAGvE,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IAGhD,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IAEtD,SAAS,CAAC,QAAQ,CAAC,8BAA8B,gBAAuB;IAExE,QAAQ,CAAC,uBAAuB,EAAE,KAAK,CAAC,IAAI,CAAC,CAA6C;IAG1F,SAAS,CAAC,IAAI,IAAI,IAAI;IAMhB,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAatF,kCAAkC,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,2BAA2B,CAAC;IAKhH,SAAS,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAYhF;;;;OAIG;IACH,SAAS,CAAC,8BAA8B,CAAC,QAAQ,EAAE,MAAM,GAAG,2BAA2B;CA2B1F"}
|
|
@@ -69,7 +69,7 @@ let ChatCapabilitiesServiceImpl = class ChatCapabilitiesServiceImpl {
|
|
|
69
69
|
// Extract all functions using the standard regex
|
|
70
70
|
const functionMatches = (0, ai_core_1.matchFunctionsRegEx)(template);
|
|
71
71
|
for (const match of functionMatches) {
|
|
72
|
-
functions.push(match[1]);
|
|
72
|
+
functions.push((0, ai_core_1.parseFunctionReference)(match[1]).id);
|
|
73
73
|
}
|
|
74
74
|
// Extract all variables using the standard regex
|
|
75
75
|
const variableMatches = (0, ai_core_1.matchVariablesRegEx)(template);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-capabilities-service.js","sourceRoot":"","sources":["../../src/browser/chat-capabilities-service.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,4DAAiF;AACjF,sCAA6C;AAC7C,
|
|
1
|
+
{"version":3,"file":"chat-capabilities-service.js","sourceRoot":"","sources":["../../src/browser/chat-capabilities-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -133,6 +133,16 @@ describe('ChatCapabilitiesServiceImpl', () => {
|
|
|
133
133
|
(0, chai_1.expect)(result.functions).to.deep.equal([]);
|
|
134
134
|
(0, chai_1.expect)(result.variables).to.deep.equal([]);
|
|
135
135
|
});
|
|
136
|
+
it('extracts function ids without the deferred marker prefix', () => {
|
|
137
|
+
const template = `
|
|
138
|
+
You have access to these tools (some deferred):
|
|
139
|
+
~{eagerTool}
|
|
140
|
+
~{?deferredTool}
|
|
141
|
+
~{? spacedDeferredTool }
|
|
142
|
+
`;
|
|
143
|
+
const result = extract(template);
|
|
144
|
+
(0, chai_1.expect)(result.functions).to.deep.equal(['eagerTool', 'deferredTool', 'spacedDeferredTool']);
|
|
145
|
+
});
|
|
136
146
|
});
|
|
137
147
|
});
|
|
138
148
|
//# sourceMappingURL=chat-capabilities-service.spec.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-capabilities-service.spec.js","sourceRoot":"","sources":["../../src/browser/chat-capabilities-service.spec.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"chat-capabilities-service.spec.js","sourceRoot":"","sources":["../../src/browser/chat-capabilities-service.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { ChatService, ChatSession } from '@theia/ai-chat';
|
|
2
|
+
import { DisposableCollection } from '@theia/core';
|
|
3
|
+
import { ApplicationShell, FrontendApplicationContribution } from '@theia/core/lib/browser';
|
|
4
|
+
import { AgentNotificationService } from '@theia/ai-core/lib/browser';
|
|
5
|
+
interface SessionWaitingState {
|
|
6
|
+
/** Whether any request in the session was waiting for input at the last observed change. */
|
|
7
|
+
waiting: boolean;
|
|
8
|
+
listener: DisposableCollection;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Fires an agent notification when a chat session starts waiting for user input (e.g. a tool
|
|
12
|
+
* confirmation or an agent question). Watches all sessions, not just the active one, so that a
|
|
13
|
+
* background session requesting input still reaches the user. The agent completion notification
|
|
14
|
+
* (handled in the chat input widget) and this input-needed notification share the same delivery
|
|
15
|
+
* channel and user preference via {@link AgentNotificationService}.
|
|
16
|
+
*/
|
|
17
|
+
export declare class ChatInputNeededNotificationContribution implements FrontendApplicationContribution {
|
|
18
|
+
protected readonly chatService: ChatService;
|
|
19
|
+
protected readonly notificationService: AgentNotificationService;
|
|
20
|
+
protected readonly shell: ApplicationShell;
|
|
21
|
+
protected readonly states: Map<string, SessionWaitingState>;
|
|
22
|
+
onStart(): void;
|
|
23
|
+
protected watchSession(session: ChatSession): void;
|
|
24
|
+
protected handleSessionChanged(session: ChatSession, state: SessionWaitingState): void;
|
|
25
|
+
protected unwatchSession(sessionId: string): void;
|
|
26
|
+
}
|
|
27
|
+
export {};
|
|
28
|
+
//# sourceMappingURL=chat-input-needed-notification-contribution.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat-input-needed-notification-contribution.d.ts","sourceRoot":"","sources":["../../src/browser/chat-input-needed-notification-contribution.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,+BAA+B,EAAE,MAAM,yBAAyB,CAAC;AAE5F,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAItE,UAAU,mBAAmB;IACzB,4FAA4F;IAC5F,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,oBAAoB,CAAC;CAClC;AAED;;;;;;GAMG;AACH,qBACa,uCAAwC,YAAW,+BAA+B;IAG3F,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAG5C,SAAS,CAAC,QAAQ,CAAC,mBAAmB,EAAE,wBAAwB,CAAC;IAGjE,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,gBAAgB,CAAC;IAE3C,SAAS,CAAC,QAAQ,CAAC,MAAM,mCAA0C;IAEnE,OAAO,IAAI,IAAI;IAcf,SAAS,CAAC,YAAY,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IAYlD,SAAS,CAAC,oBAAoB,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,mBAAmB,GAAG,IAAI;IAkBtF,SAAS,CAAC,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;CAOpD"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// *****************************************************************************
|
|
3
|
+
// Copyright (C) 2026 EclipseSource GmbH and others.
|
|
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.ChatInputNeededNotificationContribution = void 0;
|
|
19
|
+
const tslib_1 = require("tslib");
|
|
20
|
+
const ai_chat_1 = require("@theia/ai-chat");
|
|
21
|
+
const core_1 = require("@theia/core");
|
|
22
|
+
const browser_1 = require("@theia/core/lib/browser");
|
|
23
|
+
const ai_core_1 = require("@theia/ai-core");
|
|
24
|
+
const browser_2 = require("@theia/ai-core/lib/browser");
|
|
25
|
+
const inversify_1 = require("@theia/core/shared/inversify");
|
|
26
|
+
const chat_session_focus_1 = require("./chat-session-focus");
|
|
27
|
+
/**
|
|
28
|
+
* Fires an agent notification when a chat session starts waiting for user input (e.g. a tool
|
|
29
|
+
* confirmation or an agent question). Watches all sessions, not just the active one, so that a
|
|
30
|
+
* background session requesting input still reaches the user. The agent completion notification
|
|
31
|
+
* (handled in the chat input widget) and this input-needed notification share the same delivery
|
|
32
|
+
* channel and user preference via {@link AgentNotificationService}.
|
|
33
|
+
*/
|
|
34
|
+
let ChatInputNeededNotificationContribution = class ChatInputNeededNotificationContribution {
|
|
35
|
+
constructor() {
|
|
36
|
+
this.states = new Map();
|
|
37
|
+
}
|
|
38
|
+
onStart() {
|
|
39
|
+
this.chatService.getSessions().forEach(session => this.watchSession(session));
|
|
40
|
+
this.chatService.onSessionEvent(event => {
|
|
41
|
+
if (event.type === 'created') {
|
|
42
|
+
const session = this.chatService.getSession(event.sessionId);
|
|
43
|
+
if (session) {
|
|
44
|
+
this.watchSession(session);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
else if (event.type === 'deleted') {
|
|
48
|
+
this.unwatchSession(event.sessionId);
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
watchSession(session) {
|
|
53
|
+
if (this.states.has(session.id)) {
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
const state = {
|
|
57
|
+
waiting: session.model.getRequests().some(request => request.response.isWaitingForInput),
|
|
58
|
+
listener: new core_1.DisposableCollection()
|
|
59
|
+
};
|
|
60
|
+
this.states.set(session.id, state);
|
|
61
|
+
session.model.onDidChange(() => this.handleSessionChanged(session, state), undefined, state.listener);
|
|
62
|
+
}
|
|
63
|
+
handleSessionChanged(session, state) {
|
|
64
|
+
const waitingRequest = session.model.getRequests().find(request => request.response.isWaitingForInput);
|
|
65
|
+
const nowWaiting = waitingRequest !== undefined;
|
|
66
|
+
// Only notify on the transition into waiting, so repeated model changes while still
|
|
67
|
+
// waiting do not produce duplicate notifications.
|
|
68
|
+
if (nowWaiting && !state.waiting) {
|
|
69
|
+
const agentId = waitingRequest.agentId ?? waitingRequest.response.agentId;
|
|
70
|
+
if (agentId) {
|
|
71
|
+
this.notificationService.showNotification(agentId, ai_core_1.AGENT_NOTIFICATION_KIND_INPUT_NEEDED, {
|
|
72
|
+
shouldSuppress: () => (0, chat_session_focus_1.isChatSessionFocused)(this.shell, this.chatService, session.id),
|
|
73
|
+
onActivate: () => this.chatService.setActiveSession(session.id, { focus: true }),
|
|
74
|
+
sessionTitle: session.title
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
state.waiting = nowWaiting;
|
|
79
|
+
}
|
|
80
|
+
unwatchSession(sessionId) {
|
|
81
|
+
const state = this.states.get(sessionId);
|
|
82
|
+
if (state) {
|
|
83
|
+
state.listener.dispose();
|
|
84
|
+
this.states.delete(sessionId);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
};
|
|
88
|
+
exports.ChatInputNeededNotificationContribution = ChatInputNeededNotificationContribution;
|
|
89
|
+
tslib_1.__decorate([
|
|
90
|
+
(0, inversify_1.inject)(ai_chat_1.ChatService),
|
|
91
|
+
tslib_1.__metadata("design:type", Object)
|
|
92
|
+
], ChatInputNeededNotificationContribution.prototype, "chatService", void 0);
|
|
93
|
+
tslib_1.__decorate([
|
|
94
|
+
(0, inversify_1.inject)(browser_2.AgentNotificationService),
|
|
95
|
+
tslib_1.__metadata("design:type", browser_2.AgentNotificationService)
|
|
96
|
+
], ChatInputNeededNotificationContribution.prototype, "notificationService", void 0);
|
|
97
|
+
tslib_1.__decorate([
|
|
98
|
+
(0, inversify_1.inject)(browser_1.ApplicationShell),
|
|
99
|
+
tslib_1.__metadata("design:type", browser_1.ApplicationShell)
|
|
100
|
+
], ChatInputNeededNotificationContribution.prototype, "shell", void 0);
|
|
101
|
+
exports.ChatInputNeededNotificationContribution = ChatInputNeededNotificationContribution = tslib_1.__decorate([
|
|
102
|
+
(0, inversify_1.injectable)()
|
|
103
|
+
], ChatInputNeededNotificationContribution);
|
|
104
|
+
//# sourceMappingURL=chat-input-needed-notification-contribution.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat-input-needed-notification-contribution.js","sourceRoot":"","sources":["../../src/browser/chat-input-needed-notification-contribution.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat-input-needed-notification-contribution.spec.d.ts","sourceRoot":"","sources":["../../src/browser/chat-input-needed-notification-contribution.spec.ts"],"names":[],"mappings":"AAuBA,OAAO,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// *****************************************************************************
|
|
3
|
+
// Copyright (C) 2026 EclipseSource and others.
|
|
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
|
+
const jsdom_1 = require("@theia/core/lib/browser/test/jsdom");
|
|
19
|
+
let disableJSDOM = (0, jsdom_1.enableJSDOM)();
|
|
20
|
+
const frontend_application_config_provider_1 = require("@theia/core/lib/browser/frontend-application-config-provider");
|
|
21
|
+
frontend_application_config_provider_1.FrontendApplicationConfigProvider.set({});
|
|
22
|
+
require("reflect-metadata");
|
|
23
|
+
const chai_1 = require("chai");
|
|
24
|
+
const core_1 = require("@theia/core");
|
|
25
|
+
const ai_core_1 = require("@theia/ai-core");
|
|
26
|
+
const chat_input_needed_notification_contribution_1 = require("./chat-input-needed-notification-contribution");
|
|
27
|
+
disableJSDOM();
|
|
28
|
+
class FakeChatModel {
|
|
29
|
+
constructor() {
|
|
30
|
+
this.id = 'test-model';
|
|
31
|
+
this.emitter = new core_1.Emitter();
|
|
32
|
+
this.onDidChange = this.emitter.event;
|
|
33
|
+
this.requests = [];
|
|
34
|
+
}
|
|
35
|
+
getRequests() {
|
|
36
|
+
return this.requests;
|
|
37
|
+
}
|
|
38
|
+
fireChange() {
|
|
39
|
+
this.emitter.fire();
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
function createSession(id, model, title = 'Session ' + id) {
|
|
43
|
+
return {
|
|
44
|
+
id,
|
|
45
|
+
title,
|
|
46
|
+
model: model,
|
|
47
|
+
isActive: false
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
class TestableContribution extends chat_input_needed_notification_contribution_1.ChatInputNeededNotificationContribution {
|
|
51
|
+
// Expose protected hooks so we can drive the contribution from tests without going through DI.
|
|
52
|
+
setChatService(service) {
|
|
53
|
+
this.chatService = service;
|
|
54
|
+
}
|
|
55
|
+
setNotificationService(service) {
|
|
56
|
+
this.notificationService = service;
|
|
57
|
+
}
|
|
58
|
+
setShell(shell) {
|
|
59
|
+
this.shell = shell;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
describe('ChatInputNeededNotificationContribution', () => {
|
|
63
|
+
before(() => disableJSDOM = (0, jsdom_1.enableJSDOM)());
|
|
64
|
+
after(() => disableJSDOM());
|
|
65
|
+
let contribution;
|
|
66
|
+
let chatModel;
|
|
67
|
+
let session;
|
|
68
|
+
let notifications;
|
|
69
|
+
let chatService;
|
|
70
|
+
let sessionEventEmitter;
|
|
71
|
+
beforeEach(() => {
|
|
72
|
+
chatModel = new FakeChatModel();
|
|
73
|
+
session = createSession('session-1', chatModel);
|
|
74
|
+
notifications = [];
|
|
75
|
+
const notificationService = {
|
|
76
|
+
async showNotification(agentId, kind, options) {
|
|
77
|
+
notifications.push({ agentId, kind, options });
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
sessionEventEmitter = new core_1.Emitter();
|
|
81
|
+
chatService = {
|
|
82
|
+
getSessions: () => [session],
|
|
83
|
+
getSession: (id) => (id === session.id ? session : undefined),
|
|
84
|
+
onSessionEvent: sessionEventEmitter.event,
|
|
85
|
+
setActiveSession: () => { }
|
|
86
|
+
};
|
|
87
|
+
const shell = { currentWidget: undefined };
|
|
88
|
+
contribution = new TestableContribution();
|
|
89
|
+
contribution.setChatService(chatService);
|
|
90
|
+
contribution.setNotificationService(notificationService);
|
|
91
|
+
contribution.setShell(shell);
|
|
92
|
+
contribution.onStart();
|
|
93
|
+
});
|
|
94
|
+
it('fires a notification on the false → true transition', () => {
|
|
95
|
+
chatModel.requests = [{
|
|
96
|
+
agentId: 'agent-a',
|
|
97
|
+
response: { isWaitingForInput: true }
|
|
98
|
+
}];
|
|
99
|
+
chatModel.fireChange();
|
|
100
|
+
(0, chai_1.expect)(notifications).to.have.lengthOf(1);
|
|
101
|
+
(0, chai_1.expect)(notifications[0].agentId).to.equal('agent-a');
|
|
102
|
+
(0, chai_1.expect)(notifications[0].kind).to.equal(ai_core_1.AGENT_NOTIFICATION_KIND_INPUT_NEEDED);
|
|
103
|
+
(0, chai_1.expect)(notifications[0].options?.sessionTitle).to.equal(session.title);
|
|
104
|
+
});
|
|
105
|
+
it('does not re-fire on repeated changes while still waiting', () => {
|
|
106
|
+
chatModel.requests = [{
|
|
107
|
+
agentId: 'agent-a',
|
|
108
|
+
response: { isWaitingForInput: true }
|
|
109
|
+
}];
|
|
110
|
+
chatModel.fireChange();
|
|
111
|
+
chatModel.fireChange();
|
|
112
|
+
chatModel.fireChange();
|
|
113
|
+
(0, chai_1.expect)(notifications).to.have.lengthOf(1);
|
|
114
|
+
});
|
|
115
|
+
it('fires again after the waiting state cleared and then started again', () => {
|
|
116
|
+
chatModel.requests = [{
|
|
117
|
+
agentId: 'agent-a',
|
|
118
|
+
response: { isWaitingForInput: true }
|
|
119
|
+
}];
|
|
120
|
+
chatModel.fireChange();
|
|
121
|
+
// Clear the waiting state — e.g. confirmation was answered.
|
|
122
|
+
chatModel.requests = [{
|
|
123
|
+
agentId: 'agent-a',
|
|
124
|
+
response: { isWaitingForInput: false }
|
|
125
|
+
}];
|
|
126
|
+
chatModel.fireChange();
|
|
127
|
+
// A new waiting-for-input request appears.
|
|
128
|
+
chatModel.requests = [{
|
|
129
|
+
agentId: 'agent-a',
|
|
130
|
+
response: { isWaitingForInput: true }
|
|
131
|
+
}];
|
|
132
|
+
chatModel.fireChange();
|
|
133
|
+
(0, chai_1.expect)(notifications).to.have.lengthOf(2);
|
|
134
|
+
});
|
|
135
|
+
it('does not fire when nothing is waiting for input', () => {
|
|
136
|
+
chatModel.requests = [{
|
|
137
|
+
agentId: 'agent-a',
|
|
138
|
+
response: { isWaitingForInput: false }
|
|
139
|
+
}];
|
|
140
|
+
chatModel.fireChange();
|
|
141
|
+
(0, chai_1.expect)(notifications).to.have.lengthOf(0);
|
|
142
|
+
});
|
|
143
|
+
it('falls back to the response.agentId when the request has no agentId', () => {
|
|
144
|
+
chatModel.requests = [{
|
|
145
|
+
response: { isWaitingForInput: true, agentId: 'response-agent' }
|
|
146
|
+
}];
|
|
147
|
+
chatModel.fireChange();
|
|
148
|
+
(0, chai_1.expect)(notifications).to.have.lengthOf(1);
|
|
149
|
+
(0, chai_1.expect)(notifications[0].agentId).to.equal('response-agent');
|
|
150
|
+
});
|
|
151
|
+
it('does not fire when no agent id is available on the waiting request', () => {
|
|
152
|
+
chatModel.requests = [{
|
|
153
|
+
response: { isWaitingForInput: true }
|
|
154
|
+
}];
|
|
155
|
+
chatModel.fireChange();
|
|
156
|
+
(0, chai_1.expect)(notifications).to.have.lengthOf(0);
|
|
157
|
+
});
|
|
158
|
+
it('does not double-watch a session when a created event arrives after onStart', () => {
|
|
159
|
+
// The session was already returned from getSessions() in onStart, so re-watching it via
|
|
160
|
+
// the 'created' event must not install a second listener that would fire duplicate
|
|
161
|
+
// notifications.
|
|
162
|
+
sessionEventEmitter.fire({ type: 'created', sessionId: session.id });
|
|
163
|
+
chatModel.requests = [{
|
|
164
|
+
agentId: 'agent-a',
|
|
165
|
+
response: { isWaitingForInput: true }
|
|
166
|
+
}];
|
|
167
|
+
chatModel.fireChange();
|
|
168
|
+
(0, chai_1.expect)(notifications).to.have.lengthOf(1);
|
|
169
|
+
});
|
|
170
|
+
});
|
|
171
|
+
//# sourceMappingURL=chat-input-needed-notification-contribution.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat-input-needed-notification-contribution.spec.js","sourceRoot":"","sources":["../../src/browser/chat-input-needed-notification-contribution.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { ChatAgent, ChatHierarchyBranch, ChatModel, ChatRequestModel, ChatService, ChatRequestParser, ChatMode, ChatSession } from '@theia/ai-chat';
|
|
2
2
|
import { ChatAgentService } from '@theia/ai-chat/lib/common/chat-agent-service';
|
|
3
3
|
import { ParsedChatRequest } from '@theia/ai-chat/lib/common/parsed-chat-request';
|
|
4
|
-
import { GenericCapabilitySelections, AIVariableResolutionRequest, ParsedCapability, FrontendLanguageModelRegistry, ReasoningLevel, ReasoningSettings, ReasoningSupport } from '@theia/ai-core';
|
|
4
|
+
import { GenericCapabilitySelections, AIVariableResolutionRequest, ParsedCapability, FrontendLanguageModelRegistry, ReasoningLevel, ReasoningSettings, ReasoningSupport, ServerToolDescriptor } from '@theia/ai-core';
|
|
5
5
|
import { ChangeSetDecoratorService } from '@theia/ai-chat/lib/browser/change-set-decorator-service';
|
|
6
6
|
import { ImageContextVariable } from '@theia/ai-chat/lib/common/image-context-variable';
|
|
7
|
-
import {
|
|
7
|
+
import { AgentNotificationService, FrontendVariableService, AIActivationService } from '@theia/ai-core/lib/browser';
|
|
8
8
|
import { AISettingsService, PromptService } from '@theia/ai-core/lib/common';
|
|
9
9
|
import { ApplicationShell } from '@theia/core/lib/browser/shell/application-shell';
|
|
10
10
|
import { CommandService, DisposableCollection, Emitter, InMemoryResources, MessageService, URI, Disposable, ILogger } from '@theia/core';
|
|
@@ -24,8 +24,9 @@ import { PendingImageRegistry } from '@theia/ai-chat/lib/browser/pending-image-r
|
|
|
24
24
|
import { ChatCapabilitiesService } from './chat-capabilities-service';
|
|
25
25
|
import { ChatInputFocusService } from './chat-input-focus-service';
|
|
26
26
|
import { AvailableGenericCapabilities, GenericCapabilitiesService } from './generic-capabilities-service';
|
|
27
|
+
import { ServerToolsSection } from './generic-capabilities-tree';
|
|
27
28
|
import { PreferenceService } from '@theia/core/lib/common/preferences';
|
|
28
|
-
type Query = (query: string, mode?: string, capabilityOverrides?: Record<string, boolean>, genericCapabilitySelections?: GenericCapabilitySelections) => Promise<void>;
|
|
29
|
+
type Query = (query: string, mode?: string, capabilityOverrides?: Record<string, boolean>, genericCapabilitySelections?: GenericCapabilitySelections, serverToolSelections?: Record<string, string[]>) => Promise<void>;
|
|
29
30
|
type Unpin = () => void;
|
|
30
31
|
type Cancel = (requestModel: ChatRequestModel) => void;
|
|
31
32
|
type DeleteChangeSet = (requestModel: ChatRequestModel) => void;
|
|
@@ -50,7 +51,7 @@ export declare class AIChatInputWidget extends ReactWidget {
|
|
|
50
51
|
protected readonly labelProvider: LabelProvider;
|
|
51
52
|
protected readonly contextVariablePicker: ContextVariablePicker;
|
|
52
53
|
protected readonly changeSetActionService: ChangeSetActionService;
|
|
53
|
-
protected readonly agentNotificationService:
|
|
54
|
+
protected readonly agentNotificationService: AgentNotificationService;
|
|
54
55
|
protected readonly changeSetDecoratorService: ChangeSetDecoratorService;
|
|
55
56
|
protected readonly openerService: OpenerService;
|
|
56
57
|
protected readonly chatService: ChatService;
|
|
@@ -99,6 +100,10 @@ export declare class AIChatInputWidget extends ReactWidget {
|
|
|
99
100
|
protected currentMaxInputTokens?: number;
|
|
100
101
|
/** Saved reasoning selection for the receiving agent (loaded from {@link AISettingsService}); kept in sync with the persisted value. */
|
|
101
102
|
protected savedReasoning?: ReasoningSettings;
|
|
103
|
+
/** Server tools declared by the receiving agent's primary model; undefined/empty hides the server tools category. */
|
|
104
|
+
protected currentServerTools?: ServerToolDescriptor[];
|
|
105
|
+
/** Vendor of the receiving agent's primary model; used to key server tool selections. */
|
|
106
|
+
protected currentModelVendor?: string;
|
|
102
107
|
protected handleReasoningChange: (level: ReasoningLevel) => Promise<void>;
|
|
103
108
|
/**
|
|
104
109
|
* Resolves the reasoning level to display in the selector. Priority: session override →
|
|
@@ -112,6 +117,7 @@ export declare class AIChatInputWidget extends ReactWidget {
|
|
|
112
117
|
protected handleCapabilityChange: (fragmentId: string, enabled: boolean) => void;
|
|
113
118
|
protected handleGenericCapabilityChange: (type: keyof GenericCapabilitySelections, ids: string[]) => void;
|
|
114
119
|
protected handleResetGenericCapabilities: () => void;
|
|
120
|
+
protected handleServerToolChange: (ids: string[]) => void;
|
|
115
121
|
protected updateCapabilitiesForAgent(agentId: string, modeId?: string, preserveOverrides?: boolean): Promise<void>;
|
|
116
122
|
/** Updates the active chat session's `commonSettings.reasoning`; pass `undefined` to clear. */
|
|
117
123
|
protected applyReasoningToSession(reasoning: ReasoningSettings | undefined): void;
|
|
@@ -131,6 +137,17 @@ export declare class AIChatInputWidget extends ReactWidget {
|
|
|
131
137
|
* Used to restore user's selections when switching sessions or on reload.
|
|
132
138
|
*/
|
|
133
139
|
protected getLastGenericCapabilitySelectionsFromModel(chatModel: ChatModel): GenericCapabilitySelections;
|
|
140
|
+
/**
|
|
141
|
+
* Extracts server tool selections from the last request in the chat model.
|
|
142
|
+
* Used to restore the user's selections when switching sessions or on reload.
|
|
143
|
+
*/
|
|
144
|
+
protected getLastServerToolSelectionsFromModel(chatModel: ChatModel): Record<string, string[]>;
|
|
145
|
+
/**
|
|
146
|
+
* Builds the server tools section for the capabilities panel, or `undefined` if the current
|
|
147
|
+
* model declares no server tools.
|
|
148
|
+
*/
|
|
149
|
+
protected getServerToolsSection(): ServerToolsSection | undefined;
|
|
150
|
+
protected getProviderDisplayName(vendor: string): string;
|
|
134
151
|
/**
|
|
135
152
|
* Refreshes capabilities for the current receiving agent.
|
|
136
153
|
* Called when prompt fragments change to ensure capabilities reflect the latest template.
|
|
@@ -144,12 +161,18 @@ export declare class AIChatInputWidget extends ReactWidget {
|
|
|
144
161
|
* Compares two string arrays for equality (order-independent).
|
|
145
162
|
*/
|
|
146
163
|
protected arraysEqualUnordered(a: string[], b: string[]): boolean;
|
|
164
|
+
/** Returns true if any vendor has at least one selected server tool. */
|
|
165
|
+
protected serverToolSelectionsHaveAny(selections: Record<string, string[]>): boolean;
|
|
147
166
|
/**
|
|
148
167
|
* Checks if current generic capability selections differ from saved settings.
|
|
149
168
|
*/
|
|
150
169
|
protected hasGenericCapabilityChangesFromSaved(): boolean;
|
|
151
170
|
/**
|
|
152
|
-
* Checks if
|
|
171
|
+
* Checks if current server tool selections differ from saved settings (across all vendors).
|
|
172
|
+
*/
|
|
173
|
+
protected hasServerToolChangesFromSaved(): boolean;
|
|
174
|
+
/**
|
|
175
|
+
* Checks if there are any unsaved changes (capability overrides, generic selections, or server tools).
|
|
153
176
|
* Reasoning is auto-persisted in {@link handleReasoningChange} and is intentionally excluded.
|
|
154
177
|
*/
|
|
155
178
|
hasAnyChangesFromSaved(): boolean;
|
|
@@ -182,6 +205,14 @@ export declare class AIChatInputWidget extends ReactWidget {
|
|
|
182
205
|
* Tracks user's generic capability selections from the dropdowns.
|
|
183
206
|
*/
|
|
184
207
|
protected genericCapabilitySelections: GenericCapabilitySelections;
|
|
208
|
+
/**
|
|
209
|
+
* Tracks user's server tool selections, keyed by model vendor to keep selections provider-specific.
|
|
210
|
+
*/
|
|
211
|
+
protected serverToolSelections: Record<string, string[]>;
|
|
212
|
+
/**
|
|
213
|
+
* Stores the saved server tool selections loaded from settings, for unsaved-change detection.
|
|
214
|
+
*/
|
|
215
|
+
protected savedServerToolSelections: Record<string, string[]> | undefined;
|
|
185
216
|
/**
|
|
186
217
|
* Available generic capabilities from all sources.
|
|
187
218
|
*/
|