@theia/ai-ide 1.67.0-next.56 → 1.67.0-next.59
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-configuration/agent-configuration-widget.d.ts +41 -0
- package/lib/browser/ai-configuration/agent-configuration-widget.d.ts.map +1 -0
- package/lib/browser/ai-configuration/agent-configuration-widget.js +333 -0
- package/lib/browser/ai-configuration/agent-configuration-widget.js.map +1 -0
- package/lib/browser/ai-configuration/ai-configuration-service.d.ts +18 -0
- package/lib/browser/ai-configuration/ai-configuration-service.d.ts.map +1 -0
- package/lib/browser/ai-configuration/ai-configuration-service.js +53 -0
- package/lib/browser/ai-configuration/ai-configuration-service.js.map +1 -0
- package/lib/browser/ai-configuration/ai-configuration-view-contribution.d.ts +14 -0
- package/lib/browser/ai-configuration/ai-configuration-view-contribution.d.ts.map +1 -0
- package/lib/browser/ai-configuration/ai-configuration-view-contribution.js +67 -0
- package/lib/browser/ai-configuration/ai-configuration-view-contribution.js.map +1 -0
- package/lib/browser/ai-configuration/ai-configuration-widget.d.ts +29 -0
- package/lib/browser/ai-configuration/ai-configuration-widget.d.ts.map +1 -0
- package/lib/browser/ai-configuration/ai-configuration-widget.js +118 -0
- package/lib/browser/ai-configuration/ai-configuration-widget.js.map +1 -0
- package/lib/browser/ai-configuration/language-model-renderer.d.ts +13 -0
- package/lib/browser/ai-configuration/language-model-renderer.d.ts.map +1 -0
- package/lib/browser/ai-configuration/language-model-renderer.js +104 -0
- package/lib/browser/ai-configuration/language-model-renderer.js.map +1 -0
- package/lib/browser/ai-configuration/mcp-configuration-widget.d.ts +43 -0
- package/lib/browser/ai-configuration/mcp-configuration-widget.d.ts.map +1 -0
- package/lib/browser/ai-configuration/mcp-configuration-widget.js +302 -0
- package/lib/browser/ai-configuration/mcp-configuration-widget.js.map +1 -0
- package/lib/browser/ai-configuration/model-aliases-configuration-widget.d.ts +41 -0
- package/lib/browser/ai-configuration/model-aliases-configuration-widget.d.ts.map +1 -0
- package/lib/browser/ai-configuration/model-aliases-configuration-widget.js +226 -0
- package/lib/browser/ai-configuration/model-aliases-configuration-widget.js.map +1 -0
- package/lib/browser/ai-configuration/prompt-fragments-configuration-widget.d.ts +141 -0
- package/lib/browser/ai-configuration/prompt-fragments-configuration-widget.d.ts.map +1 -0
- package/lib/browser/ai-configuration/prompt-fragments-configuration-widget.js +508 -0
- package/lib/browser/ai-configuration/prompt-fragments-configuration-widget.js.map +1 -0
- package/lib/browser/ai-configuration/template-settings-renderer.d.ts +10 -0
- package/lib/browser/ai-configuration/template-settings-renderer.d.ts.map +1 -0
- package/lib/browser/ai-configuration/template-settings-renderer.js +48 -0
- package/lib/browser/ai-configuration/template-settings-renderer.js.map +1 -0
- package/lib/browser/ai-configuration/token-usage-configuration-widget.d.ts +22 -0
- package/lib/browser/ai-configuration/token-usage-configuration-widget.d.ts.map +1 -0
- package/lib/browser/ai-configuration/token-usage-configuration-widget.js +156 -0
- package/lib/browser/ai-configuration/token-usage-configuration-widget.js.map +1 -0
- package/lib/browser/ai-configuration/tools-configuration-widget.d.ts +30 -0
- package/lib/browser/ai-configuration/tools-configuration-widget.d.ts.map +1 -0
- package/lib/browser/ai-configuration/tools-configuration-widget.js +150 -0
- package/lib/browser/ai-configuration/tools-configuration-widget.js.map +1 -0
- package/lib/browser/ai-configuration/variable-configuration-widget.d.ts +19 -0
- package/lib/browser/ai-configuration/variable-configuration-widget.d.ts.map +1 -0
- package/lib/browser/ai-configuration/variable-configuration-widget.js +99 -0
- package/lib/browser/ai-configuration/variable-configuration-widget.js.map +1 -0
- package/lib/browser/ai-ide-activation-service.d.ts +18 -0
- package/lib/browser/ai-ide-activation-service.d.ts.map +1 -0
- package/lib/browser/ai-ide-activation-service.js +71 -0
- package/lib/browser/ai-ide-activation-service.js.map +1 -0
- package/lib/browser/ai-terminal-functions.d.ts +13 -0
- package/lib/browser/ai-terminal-functions.d.ts.map +1 -0
- package/lib/browser/ai-terminal-functions.js +114 -0
- package/lib/browser/ai-terminal-functions.js.map +1 -0
- package/lib/browser/app-tester-chat-agent.d.ts +35 -0
- package/lib/browser/app-tester-chat-agent.d.ts.map +1 -0
- package/lib/browser/app-tester-chat-agent.js +142 -0
- package/lib/browser/app-tester-chat-agent.js.map +1 -0
- package/lib/browser/app-tester-chat-functions.d.ts +25 -0
- package/lib/browser/app-tester-chat-functions.d.ts.map +1 -0
- package/lib/browser/app-tester-chat-functions.js +170 -0
- package/lib/browser/app-tester-chat-functions.js.map +1 -0
- package/lib/browser/app-tester-prompt-template.d.ts +6 -0
- package/lib/browser/app-tester-prompt-template.d.ts.map +1 -0
- package/lib/browser/app-tester-prompt-template.js +83 -0
- package/lib/browser/app-tester-prompt-template.js.map +1 -0
- package/lib/browser/architect-agent.d.ts +15 -0
- package/lib/browser/architect-agent.d.ts.map +1 -0
- package/lib/browser/architect-agent.js +68 -0
- package/lib/browser/architect-agent.js.map +1 -0
- package/lib/browser/coder-agent.d.ts +15 -0
- package/lib/browser/coder-agent.d.ts.map +1 -0
- package/lib/browser/coder-agent.js +81 -0
- package/lib/browser/coder-agent.js.map +1 -0
- package/lib/browser/context-file-validation-service-impl.d.ts +13 -0
- package/lib/browser/context-file-validation-service-impl.d.ts.map +1 -0
- package/lib/browser/context-file-validation-service-impl.js +123 -0
- package/lib/browser/context-file-validation-service-impl.js.map +1 -0
- package/lib/browser/context-file-validation-service-impl.spec.d.ts +2 -0
- package/lib/browser/context-file-validation-service-impl.spec.d.ts.map +1 -0
- package/lib/browser/context-file-validation-service-impl.spec.js +340 -0
- package/lib/browser/context-file-validation-service-impl.spec.js.map +1 -0
- package/lib/browser/context-functions.d.ts +16 -0
- package/lib/browser/context-functions.d.ts.map +1 -0
- package/lib/browser/context-functions.js +166 -0
- package/lib/browser/context-functions.js.map +1 -0
- package/lib/browser/context-functions.spec.d.ts +2 -0
- package/lib/browser/context-functions.spec.d.ts.map +1 -0
- package/lib/browser/context-functions.spec.js +213 -0
- package/lib/browser/context-functions.spec.js.map +1 -0
- package/lib/browser/file-changeset-function.spec.d.ts +2 -0
- package/lib/browser/file-changeset-function.spec.d.ts.map +1 -0
- package/lib/browser/file-changeset-function.spec.js +45 -0
- package/lib/browser/file-changeset-function.spec.js.map +1 -0
- package/lib/browser/file-changeset-functions.d.ts +87 -0
- package/lib/browser/file-changeset-functions.d.ts.map +1 -0
- package/lib/browser/file-changeset-functions.js +645 -0
- package/lib/browser/file-changeset-functions.js.map +1 -0
- package/lib/browser/file-changeset-functions.spec.d.ts +2 -0
- package/lib/browser/file-changeset-functions.spec.d.ts.map +1 -0
- package/lib/browser/file-changeset-functions.spec.js +179 -0
- package/lib/browser/file-changeset-functions.spec.js.map +1 -0
- package/lib/browser/frontend-module.d.ts +5 -0
- package/lib/browser/frontend-module.d.ts.map +1 -0
- package/lib/browser/frontend-module.js +220 -0
- package/lib/browser/frontend-module.js.map +1 -0
- package/lib/browser/github-chat-agent.d.ts +48 -0
- package/lib/browser/github-chat-agent.d.ts.map +1 -0
- package/lib/browser/github-chat-agent.js +222 -0
- package/lib/browser/github-chat-agent.js.map +1 -0
- package/lib/browser/github-prompt-template.d.ts +6 -0
- package/lib/browser/github-prompt-template.d.ts.map +1 -0
- package/lib/browser/github-prompt-template.js +53 -0
- package/lib/browser/github-prompt-template.js.map +1 -0
- package/lib/browser/github-repo-variable-contribution.d.ts +15 -0
- package/lib/browser/github-repo-variable-contribution.d.ts.map +1 -0
- package/lib/browser/github-repo-variable-contribution.js +82 -0
- package/lib/browser/github-repo-variable-contribution.js.map +1 -0
- package/lib/browser/ide-chat-welcome-message-provider.d.ts +10 -0
- package/lib/browser/ide-chat-welcome-message-provider.d.ts.map +1 -0
- package/lib/browser/ide-chat-welcome-message-provider.js +102 -0
- package/lib/browser/ide-chat-welcome-message-provider.js.map +1 -0
- package/lib/browser/project-info-agent.d.ts +13 -0
- package/lib/browser/project-info-agent.d.ts.map +1 -0
- package/lib/browser/project-info-agent.js +45 -0
- package/lib/browser/project-info-agent.js.map +1 -0
- package/lib/browser/remember-command-contribution.d.ts +16 -0
- package/lib/browser/remember-command-contribution.d.ts.map +1 -0
- package/lib/browser/remember-command-contribution.js +101 -0
- package/lib/browser/remember-command-contribution.js.map +1 -0
- package/lib/browser/summarize-session-command-contribution.d.ts +19 -0
- package/lib/browser/summarize-session-command-contribution.d.ts.map +1 -0
- package/lib/browser/summarize-session-command-contribution.js +118 -0
- package/lib/browser/summarize-session-command-contribution.js.map +1 -0
- package/lib/browser/task-background-summary-variable.d.ts +9 -0
- package/lib/browser/task-background-summary-variable.d.ts.map +1 -0
- package/lib/browser/task-background-summary-variable.js +60 -0
- package/lib/browser/task-background-summary-variable.js.map +1 -0
- package/lib/browser/task-context-agent.d.ts +13 -0
- package/lib/browser/task-context-agent.d.ts.map +1 -0
- package/lib/browser/task-context-agent.js +45 -0
- package/lib/browser/task-context-agent.js.map +1 -0
- package/lib/browser/task-context-file-storage-service.d.ts +40 -0
- package/lib/browser/task-context-file-storage-service.d.ts.map +1 -0
- package/lib/browser/task-context-file-storage-service.js +232 -0
- package/lib/browser/task-context-file-storage-service.js.map +1 -0
- package/lib/browser/template-preference-contribution.d.ts +17 -0
- package/lib/browser/template-preference-contribution.d.ts.map +1 -0
- package/lib/browser/template-preference-contribution.js +94 -0
- package/lib/browser/template-preference-contribution.js.map +1 -0
- package/lib/browser/test/tool-provider-cancellation-test-util.spec.d.ts +2 -0
- package/lib/browser/test/tool-provider-cancellation-test-util.spec.d.ts.map +1 -0
- package/lib/browser/test/tool-provider-cancellation-test-util.spec.js +52 -0
- package/lib/browser/test/tool-provider-cancellation-test-util.spec.js.map +1 -0
- package/lib/browser/workspace-functions.d.ts +78 -0
- package/lib/browser/workspace-functions.d.ts.map +1 -0
- package/lib/browser/workspace-functions.js +697 -0
- package/lib/browser/workspace-functions.js.map +1 -0
- package/lib/browser/workspace-functions.spec.d.ts +2 -0
- package/lib/browser/workspace-functions.spec.d.ts.map +1 -0
- package/lib/browser/workspace-functions.spec.js +161 -0
- package/lib/browser/workspace-functions.spec.js.map +1 -0
- package/lib/browser/workspace-launch-provider.d.ts +24 -0
- package/lib/browser/workspace-launch-provider.d.ts.map +1 -0
- package/lib/browser/workspace-launch-provider.js +216 -0
- package/lib/browser/workspace-launch-provider.js.map +1 -0
- package/lib/browser/workspace-launch-provider.spec.d.ts +2 -0
- package/lib/browser/workspace-launch-provider.spec.d.ts.map +1 -0
- package/lib/browser/workspace-launch-provider.spec.js +245 -0
- package/lib/browser/workspace-launch-provider.spec.js.map +1 -0
- package/lib/browser/workspace-search-provider.d.ts +15 -0
- package/lib/browser/workspace-search-provider.d.ts.map +1 -0
- package/lib/browser/workspace-search-provider.js +204 -0
- package/lib/browser/workspace-search-provider.js.map +1 -0
- package/lib/browser/workspace-search-provider.spec.d.ts +2 -0
- package/lib/browser/workspace-search-provider.spec.d.ts.map +1 -0
- package/lib/browser/workspace-search-provider.spec.js +82 -0
- package/lib/browser/workspace-search-provider.spec.js.map +1 -0
- package/lib/browser/workspace-task-provider.d.ts +15 -0
- package/lib/browser/workspace-task-provider.d.ts.map +1 -0
- package/lib/browser/workspace-task-provider.js +138 -0
- package/lib/browser/workspace-task-provider.js.map +1 -0
- package/lib/browser/workspace-task-provider.spec.d.ts +2 -0
- package/lib/browser/workspace-task-provider.spec.d.ts.map +1 -0
- package/lib/browser/workspace-task-provider.spec.js +109 -0
- package/lib/browser/workspace-task-provider.spec.js.map +1 -0
- package/lib/common/ai-configuration-preferences.d.ts +8 -0
- package/lib/common/ai-configuration-preferences.d.ts.map +1 -0
- package/lib/common/ai-configuration-preferences.js +41 -0
- package/lib/common/ai-configuration-preferences.js.map +1 -0
- package/lib/common/ai-ide-preferences.d.ts +5 -0
- package/lib/common/ai-ide-preferences.d.ts.map +1 -0
- package/lib/common/ai-ide-preferences.js +53 -0
- package/lib/common/ai-ide-preferences.js.map +1 -0
- package/lib/common/ai-terminal-functions.d.ts +2 -0
- package/lib/common/ai-terminal-functions.d.ts.map +1 -0
- package/lib/common/ai-terminal-functions.js +20 -0
- package/lib/common/ai-terminal-functions.js.map +1 -0
- package/lib/common/app-tester-chat-functions.d.ts +5 -0
- package/lib/common/app-tester-chat-functions.d.ts.map +1 -0
- package/lib/common/app-tester-chat-functions.js +23 -0
- package/lib/common/app-tester-chat-functions.js.map +1 -0
- package/lib/common/architect-prompt-template.d.ts +3 -0
- package/lib/common/architect-prompt-template.d.ts.map +1 -0
- package/lib/common/architect-prompt-template.js +81 -0
- package/lib/common/architect-prompt-template.js.map +1 -0
- package/lib/common/browser-automation-protocol.d.ts +15 -0
- package/lib/common/browser-automation-protocol.d.ts.map +1 -0
- package/lib/common/browser-automation-protocol.js +22 -0
- package/lib/common/browser-automation-protocol.js.map +1 -0
- package/lib/common/coder-replace-prompt-template.d.ts +11 -0
- package/lib/common/coder-replace-prompt-template.d.ts.map +1 -0
- package/lib/common/coder-replace-prompt-template.js +296 -0
- package/lib/common/coder-replace-prompt-template.js.map +1 -0
- package/lib/common/command-chat-agents.d.ts +36 -0
- package/lib/common/command-chat-agents.d.ts.map +1 -0
- package/lib/common/command-chat-agents.js +122 -0
- package/lib/common/command-chat-agents.js.map +1 -0
- package/lib/common/command-prompt-template.d.ts +3 -0
- package/lib/common/command-prompt-template.d.ts.map +1 -0
- package/lib/common/command-prompt-template.js +226 -0
- package/lib/common/command-prompt-template.js.map +1 -0
- package/lib/common/context-files-variable.d.ts +9 -0
- package/lib/common/context-files-variable.d.ts.map +1 -0
- package/lib/common/context-files-variable.js +52 -0
- package/lib/common/context-files-variable.js.map +1 -0
- package/lib/common/context-functions.d.ts +4 -0
- package/lib/common/context-functions.d.ts.map +1 -0
- package/lib/common/context-functions.js +22 -0
- package/lib/common/context-functions.js.map +1 -0
- package/lib/common/context-variables.d.ts +3 -0
- package/lib/common/context-variables.d.ts.map +1 -0
- package/lib/common/context-variables.js +21 -0
- package/lib/common/context-variables.js.map +1 -0
- package/lib/common/file-changeset-function-ids.d.ts +19 -0
- package/lib/common/file-changeset-function-ids.d.ts.map +1 -0
- package/lib/common/file-changeset-function-ids.js +37 -0
- package/lib/common/file-changeset-function-ids.js.map +1 -0
- package/lib/common/github-repo-protocol.d.ts +15 -0
- package/lib/common/github-repo-protocol.d.ts.map +1 -0
- package/lib/common/github-repo-protocol.js +21 -0
- package/lib/common/github-repo-protocol.js.map +1 -0
- package/lib/common/orchestrator-chat-agent.d.ts +36 -0
- package/lib/common/orchestrator-chat-agent.d.ts.map +1 -0
- package/lib/common/orchestrator-chat-agent.js +167 -0
- package/lib/common/orchestrator-chat-agent.js.map +1 -0
- package/lib/common/orchestrator-prompt-template.d.ts +3 -0
- package/lib/common/orchestrator-prompt-template.d.ts.map +1 -0
- package/lib/common/orchestrator-prompt-template.js +55 -0
- package/lib/common/orchestrator-prompt-template.js.map +1 -0
- package/lib/common/project-info-prompt-template.d.ts +6 -0
- package/lib/common/project-info-prompt-template.d.ts.map +1 -0
- package/lib/common/project-info-prompt-template.js +145 -0
- package/lib/common/project-info-prompt-template.js.map +1 -0
- package/lib/common/summarize-session-commands.d.ts +4 -0
- package/lib/common/summarize-session-commands.d.ts.map +1 -0
- package/lib/common/summarize-session-commands.js +28 -0
- package/lib/common/summarize-session-commands.js.map +1 -0
- package/lib/common/task-context-prompt-template.d.ts +8 -0
- package/lib/common/task-context-prompt-template.d.ts.map +1 -0
- package/lib/common/task-context-prompt-template.js +217 -0
- package/lib/common/task-context-prompt-template.js.map +1 -0
- package/lib/common/universal-chat-agent.d.ts +17 -0
- package/lib/common/universal-chat-agent.d.ts.map +1 -0
- package/lib/common/universal-chat-agent.js +47 -0
- package/lib/common/universal-chat-agent.js.map +1 -0
- package/lib/common/universal-prompt-template.d.ts +4 -0
- package/lib/common/universal-prompt-template.d.ts.map +1 -0
- package/lib/common/universal-prompt-template.js +32 -0
- package/lib/common/universal-prompt-template.js.map +1 -0
- package/lib/common/workspace-functions.d.ts +12 -0
- package/lib/common/workspace-functions.d.ts.map +1 -0
- package/lib/common/workspace-functions.js +30 -0
- package/lib/common/workspace-functions.js.map +1 -0
- package/lib/common/workspace-preferences.d.ts +10 -0
- package/lib/common/workspace-preferences.d.ts.map +1 -0
- package/lib/common/workspace-preferences.js +89 -0
- package/lib/common/workspace-preferences.js.map +1 -0
- package/lib/common/workspace-search-provider-util.d.ts +17 -0
- package/lib/common/workspace-search-provider-util.d.ts.map +1 -0
- package/lib/common/workspace-search-provider-util.js +51 -0
- package/lib/common/workspace-search-provider-util.js.map +1 -0
- package/lib/node/app-tester-agent/browser-automation-impl.d.ts +18 -0
- package/lib/node/app-tester-agent/browser-automation-impl.d.ts.map +1 -0
- package/lib/node/app-tester-agent/browser-automation-impl.js +96 -0
- package/lib/node/app-tester-agent/browser-automation-impl.js.map +1 -0
- package/lib/node/backend-module.d.ts +4 -0
- package/lib/node/backend-module.d.ts.map +1 -0
- package/lib/node/backend-module.js +45 -0
- package/lib/node/backend-module.js.map +1 -0
- package/lib/node/github-repo-service-impl.d.ts +7 -0
- package/lib/node/github-repo-service-impl.d.ts.map +1 -0
- package/lib/node/github-repo-service-impl.js +86 -0
- package/lib/node/github-repo-service-impl.js.map +1 -0
- package/lib/package.spec.d.ts +1 -0
- package/lib/package.spec.d.ts.map +1 -0
- package/lib/package.spec.js +26 -0
- package/lib/package.spec.js.map +1 -0
- package/package.json +21 -21
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
// *****************************************************************************
|
|
4
|
+
// Copyright (C) 2025 EclipseSource GmbH.
|
|
5
|
+
//
|
|
6
|
+
// This program and the accompanying materials are made available under the
|
|
7
|
+
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
8
|
+
// http://www.eclipse.org/legal/epl-2.0.
|
|
9
|
+
//
|
|
10
|
+
// This Source Code may also be made available under the following Secondary
|
|
11
|
+
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
12
|
+
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
13
|
+
// with the GNU Classpath Exception which is available at
|
|
14
|
+
// https://www.gnu.org/software/classpath/license.html.
|
|
15
|
+
//
|
|
16
|
+
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
17
|
+
// *****************************************************************************
|
|
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
|
+
const chai_1 = require("chai");
|
|
23
|
+
const context_functions_1 = require("./context-functions");
|
|
24
|
+
const core_1 = require("@theia/core");
|
|
25
|
+
const assert_1 = require("assert");
|
|
26
|
+
const context_file_validation_service_1 = require("@theia/ai-chat/lib/browser/context-file-validation-service");
|
|
27
|
+
disableJSDOM();
|
|
28
|
+
describe('Context Functions Cancellation Tests', () => {
|
|
29
|
+
let cancellationTokenSource;
|
|
30
|
+
let mockCtx;
|
|
31
|
+
before(() => {
|
|
32
|
+
disableJSDOM = (0, jsdom_1.enableJSDOM)();
|
|
33
|
+
});
|
|
34
|
+
after(() => {
|
|
35
|
+
// Disable JSDOM after all tests
|
|
36
|
+
disableJSDOM();
|
|
37
|
+
});
|
|
38
|
+
beforeEach(() => {
|
|
39
|
+
cancellationTokenSource = new core_1.CancellationTokenSource();
|
|
40
|
+
const context = {
|
|
41
|
+
addVariables: () => { },
|
|
42
|
+
getVariables: () => { var _a; return (_a = mockCtx.context) === null || _a === void 0 ? void 0 : _a.variables; }
|
|
43
|
+
};
|
|
44
|
+
mockCtx = {
|
|
45
|
+
response: {
|
|
46
|
+
cancellationToken: cancellationTokenSource.token
|
|
47
|
+
},
|
|
48
|
+
context: {
|
|
49
|
+
variables: [{
|
|
50
|
+
variable: { id: 'file1', name: 'File' },
|
|
51
|
+
arg: '/path/to/file',
|
|
52
|
+
contextValue: 'file content'
|
|
53
|
+
}]
|
|
54
|
+
},
|
|
55
|
+
session: {
|
|
56
|
+
context
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
});
|
|
60
|
+
afterEach(() => {
|
|
61
|
+
cancellationTokenSource.dispose();
|
|
62
|
+
});
|
|
63
|
+
it('ListChatContext should respect cancellation token', async () => {
|
|
64
|
+
const listChatContext = new context_functions_1.ListChatContext();
|
|
65
|
+
cancellationTokenSource.cancel();
|
|
66
|
+
const result = await listChatContext.getTool().handler('', mockCtx);
|
|
67
|
+
if (typeof result !== 'string') {
|
|
68
|
+
(0, assert_1.fail)(`Wrong tool call result type: ${result}`);
|
|
69
|
+
}
|
|
70
|
+
const jsonResponse = JSON.parse(result);
|
|
71
|
+
(0, chai_1.expect)(jsonResponse.error).to.equal('Operation cancelled by user');
|
|
72
|
+
});
|
|
73
|
+
it('ResolveChatContext should respect cancellation token', async () => {
|
|
74
|
+
const resolveChatContext = new context_functions_1.ResolveChatContext();
|
|
75
|
+
cancellationTokenSource.cancel();
|
|
76
|
+
const result = await resolveChatContext.getTool().handler('{"contextElementId":"file1/path/to/file"}', mockCtx);
|
|
77
|
+
if (typeof result !== 'string') {
|
|
78
|
+
(0, assert_1.fail)(`Wrong tool call result type: ${result}`);
|
|
79
|
+
}
|
|
80
|
+
const jsonResponse = JSON.parse(result);
|
|
81
|
+
(0, chai_1.expect)(jsonResponse.error).to.equal('Operation cancelled by user');
|
|
82
|
+
});
|
|
83
|
+
it('AddFileToChatContext should respect cancellation token', async () => {
|
|
84
|
+
const addFileToChatContext = new context_functions_1.AddFileToChatContext();
|
|
85
|
+
cancellationTokenSource.cancel();
|
|
86
|
+
const result = await addFileToChatContext.getTool().handler('{"filesToAdd":["/new/path/to/file"]}', mockCtx);
|
|
87
|
+
if (typeof result !== 'string') {
|
|
88
|
+
(0, assert_1.fail)(`Wrong tool call result type: ${result}`);
|
|
89
|
+
}
|
|
90
|
+
const jsonResponse = JSON.parse(result);
|
|
91
|
+
(0, chai_1.expect)(jsonResponse.error).to.equal('Operation cancelled by user');
|
|
92
|
+
});
|
|
93
|
+
});
|
|
94
|
+
describe('AddFileToChatContext Validation Tests', () => {
|
|
95
|
+
let mockCtx;
|
|
96
|
+
let addedFiles;
|
|
97
|
+
before(() => {
|
|
98
|
+
disableJSDOM = (0, jsdom_1.enableJSDOM)();
|
|
99
|
+
});
|
|
100
|
+
after(() => {
|
|
101
|
+
disableJSDOM();
|
|
102
|
+
});
|
|
103
|
+
beforeEach(() => {
|
|
104
|
+
addedFiles = [];
|
|
105
|
+
const context = {
|
|
106
|
+
addVariables: (...vars) => {
|
|
107
|
+
addedFiles.push(...vars);
|
|
108
|
+
},
|
|
109
|
+
getVariables: () => []
|
|
110
|
+
};
|
|
111
|
+
mockCtx = {
|
|
112
|
+
response: {
|
|
113
|
+
cancellationToken: new core_1.CancellationTokenSource().token
|
|
114
|
+
},
|
|
115
|
+
context: {
|
|
116
|
+
variables: []
|
|
117
|
+
},
|
|
118
|
+
session: {
|
|
119
|
+
context
|
|
120
|
+
}
|
|
121
|
+
};
|
|
122
|
+
});
|
|
123
|
+
it('should add valid files to context', async () => {
|
|
124
|
+
const mockValidationService = {
|
|
125
|
+
validateFile: async () => ({ state: context_file_validation_service_1.FileValidationState.VALID })
|
|
126
|
+
};
|
|
127
|
+
const addFileToChatContext = new context_functions_1.AddFileToChatContext();
|
|
128
|
+
addFileToChatContext.validationService = mockValidationService;
|
|
129
|
+
const result = await addFileToChatContext.getTool().handler('{"filesToAdd":["/valid/file1.ts","/valid/file2.ts"]}', mockCtx);
|
|
130
|
+
if (typeof result !== 'string') {
|
|
131
|
+
(0, assert_1.fail)(`Wrong tool call result type: ${result}`);
|
|
132
|
+
}
|
|
133
|
+
const jsonResponse = JSON.parse(result);
|
|
134
|
+
(0, chai_1.expect)(jsonResponse.added).to.have.lengthOf(2);
|
|
135
|
+
(0, chai_1.expect)(jsonResponse.added).to.include('/valid/file1.ts');
|
|
136
|
+
(0, chai_1.expect)(jsonResponse.added).to.include('/valid/file2.ts');
|
|
137
|
+
(0, chai_1.expect)(jsonResponse.rejected).to.have.lengthOf(0);
|
|
138
|
+
(0, chai_1.expect)(jsonResponse.summary.totalRequested).to.equal(2);
|
|
139
|
+
(0, chai_1.expect)(jsonResponse.summary.added).to.equal(2);
|
|
140
|
+
(0, chai_1.expect)(jsonResponse.summary.rejected).to.equal(0);
|
|
141
|
+
(0, chai_1.expect)(addedFiles).to.have.lengthOf(2);
|
|
142
|
+
});
|
|
143
|
+
it('should reject non-existent files', async () => {
|
|
144
|
+
const mockValidationService = {
|
|
145
|
+
validateFile: async (file) => {
|
|
146
|
+
if (file === '/nonexistent/file.ts') {
|
|
147
|
+
return {
|
|
148
|
+
state: context_file_validation_service_1.FileValidationState.INVALID_NOT_FOUND,
|
|
149
|
+
message: 'File does not exist'
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
return { state: context_file_validation_service_1.FileValidationState.VALID };
|
|
153
|
+
}
|
|
154
|
+
};
|
|
155
|
+
const addFileToChatContext = new context_functions_1.AddFileToChatContext();
|
|
156
|
+
addFileToChatContext.validationService = mockValidationService;
|
|
157
|
+
const result = await addFileToChatContext.getTool().handler('{"filesToAdd":["/valid/file.ts","/nonexistent/file.ts"]}', mockCtx);
|
|
158
|
+
if (typeof result !== 'string') {
|
|
159
|
+
(0, assert_1.fail)(`Wrong tool call result type: ${result}`);
|
|
160
|
+
}
|
|
161
|
+
const jsonResponse = JSON.parse(result);
|
|
162
|
+
(0, chai_1.expect)(jsonResponse.added).to.have.lengthOf(1);
|
|
163
|
+
(0, chai_1.expect)(jsonResponse.added).to.include('/valid/file.ts');
|
|
164
|
+
(0, chai_1.expect)(jsonResponse.rejected).to.have.lengthOf(1);
|
|
165
|
+
(0, chai_1.expect)(jsonResponse.rejected[0].file).to.equal('/nonexistent/file.ts');
|
|
166
|
+
(0, chai_1.expect)(jsonResponse.rejected[0].reason).to.equal('File does not exist');
|
|
167
|
+
(0, chai_1.expect)(jsonResponse.rejected[0].state).to.equal(context_file_validation_service_1.FileValidationState.INVALID_NOT_FOUND);
|
|
168
|
+
(0, chai_1.expect)(jsonResponse.summary.totalRequested).to.equal(2);
|
|
169
|
+
(0, chai_1.expect)(jsonResponse.summary.added).to.equal(1);
|
|
170
|
+
(0, chai_1.expect)(jsonResponse.summary.rejected).to.equal(1);
|
|
171
|
+
(0, chai_1.expect)(addedFiles).to.have.lengthOf(1);
|
|
172
|
+
});
|
|
173
|
+
it('should reject files in secondary workspace roots', async () => {
|
|
174
|
+
const mockValidationService = {
|
|
175
|
+
validateFile: async (file) => {
|
|
176
|
+
if (file === '/secondary/root/file.ts') {
|
|
177
|
+
return {
|
|
178
|
+
state: context_file_validation_service_1.FileValidationState.INVALID_SECONDARY,
|
|
179
|
+
message: 'File is in a secondary workspace root. AI agents can only access files in the first workspace root.'
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
return { state: context_file_validation_service_1.FileValidationState.VALID };
|
|
183
|
+
}
|
|
184
|
+
};
|
|
185
|
+
const addFileToChatContext = new context_functions_1.AddFileToChatContext();
|
|
186
|
+
addFileToChatContext.validationService = mockValidationService;
|
|
187
|
+
const result = await addFileToChatContext.getTool().handler('{"filesToAdd":["/secondary/root/file.ts"]}', mockCtx);
|
|
188
|
+
if (typeof result !== 'string') {
|
|
189
|
+
(0, assert_1.fail)(`Wrong tool call result type: ${result}`);
|
|
190
|
+
}
|
|
191
|
+
const jsonResponse = JSON.parse(result);
|
|
192
|
+
(0, chai_1.expect)(jsonResponse.added).to.have.lengthOf(0);
|
|
193
|
+
(0, chai_1.expect)(jsonResponse.rejected).to.have.lengthOf(1);
|
|
194
|
+
(0, chai_1.expect)(jsonResponse.rejected[0].file).to.equal('/secondary/root/file.ts');
|
|
195
|
+
(0, chai_1.expect)(jsonResponse.rejected[0].state).to.equal(context_file_validation_service_1.FileValidationState.INVALID_SECONDARY);
|
|
196
|
+
(0, chai_1.expect)(addedFiles).to.have.lengthOf(0);
|
|
197
|
+
});
|
|
198
|
+
it('should add all files when validation service is not available', async () => {
|
|
199
|
+
const addFileToChatContext = new context_functions_1.AddFileToChatContext();
|
|
200
|
+
const result = await addFileToChatContext.getTool().handler('{"filesToAdd":["/file1.ts","/file2.ts"]}', mockCtx);
|
|
201
|
+
if (typeof result !== 'string') {
|
|
202
|
+
(0, assert_1.fail)(`Wrong tool call result type: ${result}`);
|
|
203
|
+
}
|
|
204
|
+
const jsonResponse = JSON.parse(result);
|
|
205
|
+
(0, chai_1.expect)(jsonResponse.added).to.have.lengthOf(2);
|
|
206
|
+
(0, chai_1.expect)(jsonResponse.rejected).to.have.lengthOf(0);
|
|
207
|
+
(0, chai_1.expect)(jsonResponse.summary.totalRequested).to.equal(2);
|
|
208
|
+
(0, chai_1.expect)(jsonResponse.summary.added).to.equal(2);
|
|
209
|
+
(0, chai_1.expect)(jsonResponse.summary.rejected).to.equal(0);
|
|
210
|
+
(0, chai_1.expect)(addedFiles).to.have.lengthOf(2);
|
|
211
|
+
});
|
|
212
|
+
});
|
|
213
|
+
//# sourceMappingURL=context-functions.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-functions.spec.js","sourceRoot":"","sources":["../../src/browser/context-functions.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-changeset-function.spec.d.ts","sourceRoot":"","sources":["../../src/browser/file-changeset-function.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// *****************************************************************************
|
|
3
|
+
// Copyright (C) 2025 Lonti.com Pty Ltd.
|
|
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 frontend_application_config_provider_1 = require("@theia/core/lib/browser/frontend-application-config-provider");
|
|
19
|
+
const jsdom_1 = require("@theia/core/lib/browser/test/jsdom");
|
|
20
|
+
let disableJSDOM = (0, jsdom_1.enableJSDOM)();
|
|
21
|
+
frontend_application_config_provider_1.FrontendApplicationConfigProvider.set({});
|
|
22
|
+
const inversify_1 = require("@theia/core/shared/inversify");
|
|
23
|
+
const chai_1 = require("chai");
|
|
24
|
+
const file_changeset_functions_1 = require("./file-changeset-functions");
|
|
25
|
+
disableJSDOM();
|
|
26
|
+
describe('DefaultFileChangeSetTitleProvider', () => {
|
|
27
|
+
let provider;
|
|
28
|
+
before(() => {
|
|
29
|
+
const container = new inversify_1.Container();
|
|
30
|
+
container.bind(file_changeset_functions_1.DefaultFileChangeSetTitleProvider).toSelf();
|
|
31
|
+
provider = container.get(file_changeset_functions_1.DefaultFileChangeSetTitleProvider);
|
|
32
|
+
disableJSDOM = (0, jsdom_1.enableJSDOM)();
|
|
33
|
+
});
|
|
34
|
+
after(() => {
|
|
35
|
+
disableJSDOM();
|
|
36
|
+
});
|
|
37
|
+
it('should provide the title', () => {
|
|
38
|
+
const ctx = {
|
|
39
|
+
agentId: 'test-agent',
|
|
40
|
+
};
|
|
41
|
+
const title = provider.getChangeSetTitle(ctx);
|
|
42
|
+
(0, chai_1.expect)(title).to.equal('Changes proposed');
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
//# sourceMappingURL=file-changeset-function.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-changeset-function.spec.js","sourceRoot":"","sources":["../../src/browser/file-changeset-function.spec.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,wCAAwC;AACxC,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,uHAAiH;AACjH,8DAAiE;AACjE,IAAI,YAAY,GAAG,IAAA,mBAAW,GAAE,CAAC;AACjC,wEAAiC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAG1C,4DAAyD;AACzD,+BAA8B;AAC9B,yEAA+E;AAE/E,YAAY,EAAE,CAAC;AAEf,QAAQ,CAAC,mCAAmC,EAAE,GAAG,EAAE;IAC/C,IAAI,QAA2C,CAAC;IAEhD,MAAM,CAAC,GAAG,EAAE;QACR,MAAM,SAAS,GAAG,IAAI,qBAAS,EAAE,CAAC;QAClC,SAAS,CAAC,IAAI,CAAC,4DAAiC,CAAC,CAAC,MAAM,EAAE,CAAC;QAE3D,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,4DAAiC,CAAC,CAAC;QAC5D,YAAY,GAAG,IAAA,mBAAW,GAAE,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,GAAG,EAAE;QACP,YAAY,EAAE,CAAC;IACnB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;QAChC,MAAM,GAAG,GAAG;YACR,OAAO,EAAE,YAAY;SACG,CAAC;QAE7B,MAAM,KAAK,GAAG,QAAQ,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;QAC9C,IAAA,aAAM,EAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { MutableChatRequestModel } from '@theia/ai-chat';
|
|
2
|
+
import { ChangeSetFileElementFactory } from '@theia/ai-chat/lib/browser/change-set-file-element';
|
|
3
|
+
import { ToolProvider, ToolRequest, ToolRequestParameters } from '@theia/ai-core';
|
|
4
|
+
import { ContentReplacer } from '@theia/core/lib/common/content-replacer';
|
|
5
|
+
import { FileService } from '@theia/filesystem/lib/browser/file-service';
|
|
6
|
+
import { WorkspaceFunctionScope } from './workspace-functions';
|
|
7
|
+
export declare const FileChangeSetTitleProvider: unique symbol;
|
|
8
|
+
export interface FileChangeSetTitleProvider {
|
|
9
|
+
getChangeSetTitle(ctx: MutableChatRequestModel): string;
|
|
10
|
+
}
|
|
11
|
+
export declare class SuggestFileContent implements ToolProvider {
|
|
12
|
+
static ID: string;
|
|
13
|
+
protected readonly workspaceFunctionScope: WorkspaceFunctionScope;
|
|
14
|
+
fileService: FileService;
|
|
15
|
+
protected readonly fileChangeFactory: ChangeSetFileElementFactory;
|
|
16
|
+
protected readonly fileChangeSetTitleProvider: FileChangeSetTitleProvider;
|
|
17
|
+
getTool(): ToolRequest;
|
|
18
|
+
}
|
|
19
|
+
export declare class WriteFileContent implements ToolProvider {
|
|
20
|
+
static ID: string;
|
|
21
|
+
protected readonly workspaceFunctionScope: WorkspaceFunctionScope;
|
|
22
|
+
fileService: FileService;
|
|
23
|
+
protected readonly fileChangeFactory: ChangeSetFileElementFactory;
|
|
24
|
+
protected readonly fileChangeSetTitleProvider: FileChangeSetTitleProvider;
|
|
25
|
+
getTool(): ToolRequest;
|
|
26
|
+
}
|
|
27
|
+
export declare class ReplaceContentInFileFunctionHelper {
|
|
28
|
+
protected readonly workspaceFunctionScope: WorkspaceFunctionScope;
|
|
29
|
+
fileService: FileService;
|
|
30
|
+
protected readonly fileChangeFactory: ChangeSetFileElementFactory;
|
|
31
|
+
protected readonly fileChangeSetTitleProvider: FileChangeSetTitleProvider;
|
|
32
|
+
private replacer;
|
|
33
|
+
constructor();
|
|
34
|
+
protected setReplacer(replacer: ContentReplacer): void;
|
|
35
|
+
getToolMetadata(supportMultipleReplace?: boolean, immediateApplication?: boolean): {
|
|
36
|
+
description: string;
|
|
37
|
+
parameters: ToolRequestParameters;
|
|
38
|
+
};
|
|
39
|
+
createChangesetFromToolCall(toolCallString: string, ctx: MutableChatRequestModel): Promise<string>;
|
|
40
|
+
writeChangesetFromToolCall(toolCallString: string, ctx: MutableChatRequestModel): Promise<string>;
|
|
41
|
+
private processReplacementsCommon;
|
|
42
|
+
private findExistingChangeElement;
|
|
43
|
+
clearFileChanges(path: string, ctx: MutableChatRequestModel): Promise<string>;
|
|
44
|
+
getProposedFileState(path: string, ctx: MutableChatRequestModel): Promise<string>;
|
|
45
|
+
}
|
|
46
|
+
export declare class SimpleSuggestFileReplacements implements ToolProvider {
|
|
47
|
+
static ID: string;
|
|
48
|
+
protected readonly replaceContentInFileFunctionHelper: ReplaceContentInFileFunctionHelper;
|
|
49
|
+
getTool(): ToolRequest;
|
|
50
|
+
}
|
|
51
|
+
export declare class SimpleWriteFileReplacements implements ToolProvider {
|
|
52
|
+
static ID: string;
|
|
53
|
+
protected readonly replaceContentInFileFunctionHelper: ReplaceContentInFileFunctionHelper;
|
|
54
|
+
getTool(): ToolRequest;
|
|
55
|
+
}
|
|
56
|
+
export declare class SuggestFileReplacements_Simple implements ToolProvider {
|
|
57
|
+
static ID: string;
|
|
58
|
+
protected readonly replaceContentInFileFunctionHelper: ReplaceContentInFileFunctionHelper;
|
|
59
|
+
getTool(): ToolRequest;
|
|
60
|
+
}
|
|
61
|
+
export declare class WriteFileReplacements implements ToolProvider {
|
|
62
|
+
static ID: string;
|
|
63
|
+
protected readonly replaceContentInFileFunctionHelper: ReplaceContentInFileFunctionHelper;
|
|
64
|
+
getTool(): ToolRequest;
|
|
65
|
+
}
|
|
66
|
+
export declare class ClearFileChanges implements ToolProvider {
|
|
67
|
+
static ID: string;
|
|
68
|
+
protected readonly replaceContentInFileFunctionHelper: ReplaceContentInFileFunctionHelper;
|
|
69
|
+
getTool(): ToolRequest;
|
|
70
|
+
}
|
|
71
|
+
export declare class GetProposedFileState implements ToolProvider {
|
|
72
|
+
static ID: string;
|
|
73
|
+
protected readonly replaceContentInFileFunctionHelper: ReplaceContentInFileFunctionHelper;
|
|
74
|
+
getTool(): ToolRequest;
|
|
75
|
+
}
|
|
76
|
+
export declare class ReplaceContentInFileFunctionHelperV2 extends ReplaceContentInFileFunctionHelper {
|
|
77
|
+
constructor();
|
|
78
|
+
}
|
|
79
|
+
export declare class SuggestFileReplacements implements ToolProvider {
|
|
80
|
+
static ID: string;
|
|
81
|
+
protected readonly replaceContentInFileFunctionHelper: ReplaceContentInFileFunctionHelperV2;
|
|
82
|
+
getTool(): ToolRequest;
|
|
83
|
+
}
|
|
84
|
+
export declare class DefaultFileChangeSetTitleProvider implements FileChangeSetTitleProvider {
|
|
85
|
+
getChangeSetTitle(ctx: MutableChatRequestModel): string;
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=file-changeset-functions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-changeset-functions.d.ts","sourceRoot":"","sources":["../../src/browser/file-changeset-functions.ts"],"names":[],"mappings":"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"}
|