@theia/ai-ide 1.75.0-next.8 → 1.75.0
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-allow-all-mode-chat-banner.js +2 -20
- package/lib/browser/ai-allow-all-mode-chat-banner.js.map +1 -1
- package/lib/browser/ai-configuration/agent-icon.d.ts +16 -0
- package/lib/browser/ai-configuration/agent-icon.d.ts.map +1 -0
- package/lib/browser/ai-configuration/agent-icon.js +38 -0
- package/lib/browser/ai-configuration/agent-icon.js.map +1 -0
- package/lib/browser/ai-configuration/ai-configuration-breadcrumbs-contribution.d.ts +36 -0
- package/lib/browser/ai-configuration/ai-configuration-breadcrumbs-contribution.d.ts.map +1 -0
- package/lib/browser/ai-configuration/ai-configuration-breadcrumbs-contribution.js +163 -0
- package/lib/browser/ai-configuration/ai-configuration-breadcrumbs-contribution.js.map +1 -0
- package/lib/browser/ai-configuration/ai-configuration-detail-widget.d.ts +50 -0
- package/lib/browser/ai-configuration/ai-configuration-detail-widget.d.ts.map +1 -0
- package/lib/browser/ai-configuration/ai-configuration-detail-widget.js +208 -0
- package/lib/browser/ai-configuration/ai-configuration-detail-widget.js.map +1 -0
- package/lib/browser/ai-configuration/ai-configuration-detail-widget.spec.d.ts +2 -0
- package/lib/browser/ai-configuration/ai-configuration-detail-widget.spec.d.ts.map +1 -0
- package/lib/browser/ai-configuration/ai-configuration-detail-widget.spec.js +139 -0
- package/lib/browser/ai-configuration/ai-configuration-detail-widget.spec.js.map +1 -0
- package/lib/browser/ai-configuration/ai-configuration-label-provider-contribution.d.ts +13 -0
- package/lib/browser/ai-configuration/ai-configuration-label-provider-contribution.d.ts.map +1 -0
- package/lib/browser/ai-configuration/ai-configuration-label-provider-contribution.js +48 -0
- package/lib/browser/ai-configuration/ai-configuration-label-provider-contribution.js.map +1 -0
- package/lib/browser/ai-configuration/ai-configuration-open-preference-renderer.d.ts +22 -0
- package/lib/browser/ai-configuration/ai-configuration-open-preference-renderer.d.ts.map +1 -0
- package/lib/browser/ai-configuration/ai-configuration-open-preference-renderer.js +72 -0
- package/lib/browser/ai-configuration/ai-configuration-open-preference-renderer.js.map +1 -0
- package/lib/browser/ai-configuration/ai-configuration-preference-ownership.spec.d.ts +2 -0
- package/lib/browser/ai-configuration/ai-configuration-preference-ownership.spec.d.ts.map +1 -0
- package/lib/browser/ai-configuration/ai-configuration-preference-ownership.spec.js +126 -0
- package/lib/browser/ai-configuration/ai-configuration-preference-ownership.spec.js.map +1 -0
- package/lib/browser/ai-configuration/ai-configuration-resource.d.ts +10 -0
- package/lib/browser/ai-configuration/ai-configuration-resource.d.ts.map +1 -0
- package/lib/browser/ai-configuration/{components/configuration-section.js → ai-configuration-resource.js} +11 -11
- package/lib/browser/ai-configuration/ai-configuration-resource.js.map +1 -0
- package/lib/browser/ai-configuration/ai-configuration-search-widget.d.ts +29 -0
- package/lib/browser/ai-configuration/ai-configuration-search-widget.d.ts.map +1 -0
- package/lib/browser/ai-configuration/ai-configuration-search-widget.js +106 -0
- package/lib/browser/ai-configuration/ai-configuration-search-widget.js.map +1 -0
- package/lib/browser/ai-configuration/ai-configuration-search.d.ts +18 -0
- package/lib/browser/ai-configuration/ai-configuration-search.d.ts.map +1 -0
- package/lib/browser/ai-configuration/ai-configuration-search.js +45 -0
- package/lib/browser/ai-configuration/ai-configuration-search.js.map +1 -0
- package/lib/browser/ai-configuration/ai-configuration-search.spec.d.ts +2 -0
- package/lib/browser/ai-configuration/ai-configuration-search.spec.d.ts.map +1 -0
- package/lib/browser/ai-configuration/ai-configuration-search.spec.js +79 -0
- package/lib/browser/ai-configuration/ai-configuration-search.spec.js.map +1 -0
- package/lib/browser/ai-configuration/ai-configuration-tree-model.d.ts +8 -0
- package/lib/browser/ai-configuration/ai-configuration-tree-model.d.ts.map +1 -0
- package/lib/browser/ai-configuration/{base/ai-configuration-base-widget.js → ai-configuration-tree-model.js} +11 -14
- package/lib/browser/ai-configuration/ai-configuration-tree-model.js.map +1 -0
- package/lib/browser/ai-configuration/ai-configuration-tree-nodes.d.ts +57 -0
- package/lib/browser/ai-configuration/ai-configuration-tree-nodes.d.ts.map +1 -0
- package/lib/browser/ai-configuration/ai-configuration-tree-nodes.js +134 -0
- package/lib/browser/ai-configuration/ai-configuration-tree-nodes.js.map +1 -0
- package/lib/browser/ai-configuration/ai-configuration-tree-nodes.spec.d.ts +2 -0
- package/lib/browser/ai-configuration/ai-configuration-tree-nodes.spec.d.ts.map +1 -0
- package/lib/browser/ai-configuration/ai-configuration-tree-nodes.spec.js +134 -0
- package/lib/browser/ai-configuration/ai-configuration-tree-nodes.spec.js.map +1 -0
- package/lib/browser/ai-configuration/ai-configuration-tree-widget.d.ts +96 -0
- package/lib/browser/ai-configuration/ai-configuration-tree-widget.d.ts.map +1 -0
- package/lib/browser/ai-configuration/ai-configuration-tree-widget.js +407 -0
- package/lib/browser/ai-configuration/ai-configuration-tree-widget.js.map +1 -0
- package/lib/browser/ai-configuration/ai-configuration-view-contribution.d.ts +38 -4
- package/lib/browser/ai-configuration/ai-configuration-view-contribution.d.ts.map +1 -1
- package/lib/browser/ai-configuration/ai-configuration-view-contribution.js +151 -19
- package/lib/browser/ai-configuration/ai-configuration-view-contribution.js.map +1 -1
- package/lib/browser/ai-configuration/ai-configuration-widget.d.ts +21 -23
- package/lib/browser/ai-configuration/ai-configuration-widget.d.ts.map +1 -1
- package/lib/browser/ai-configuration/ai-configuration-widget.js +102 -70
- package/lib/browser/ai-configuration/ai-configuration-widget.js.map +1 -1
- package/lib/browser/ai-configuration/categories/agent-capabilities-settings.d.ts +56 -0
- package/lib/browser/ai-configuration/categories/agent-capabilities-settings.d.ts.map +1 -0
- package/lib/browser/ai-configuration/categories/agent-capabilities-settings.js +195 -0
- package/lib/browser/ai-configuration/categories/agent-capabilities-settings.js.map +1 -0
- package/lib/browser/ai-configuration/categories/agent-capabilities-settings.spec.d.ts +2 -0
- package/lib/browser/ai-configuration/categories/agent-capabilities-settings.spec.d.ts.map +1 -0
- package/lib/browser/ai-configuration/categories/agent-capabilities-settings.spec.js +140 -0
- package/lib/browser/ai-configuration/categories/agent-capabilities-settings.spec.js.map +1 -0
- package/lib/browser/ai-configuration/categories/agent-chips.d.ts +15 -0
- package/lib/browser/ai-configuration/categories/agent-chips.d.ts.map +1 -0
- package/lib/browser/ai-configuration/categories/agent-chips.js +19 -0
- package/lib/browser/ai-configuration/categories/agent-chips.js.map +1 -0
- package/lib/browser/ai-configuration/categories/agent-detail-model.d.ts +37 -0
- package/lib/browser/ai-configuration/categories/agent-detail-model.d.ts.map +1 -0
- package/lib/browser/ai-configuration/categories/agent-detail-model.js +99 -0
- package/lib/browser/ai-configuration/categories/agent-detail-model.js.map +1 -0
- package/lib/browser/ai-configuration/categories/agent-detail-view.d.ts +28 -0
- package/lib/browser/ai-configuration/categories/agent-detail-view.d.ts.map +1 -0
- package/lib/browser/ai-configuration/categories/agent-detail-view.js +135 -0
- package/lib/browser/ai-configuration/categories/agent-detail-view.js.map +1 -0
- package/lib/browser/ai-configuration/categories/agents-configuration-category.d.ts +78 -0
- package/lib/browser/ai-configuration/categories/agents-configuration-category.d.ts.map +1 -0
- package/lib/browser/ai-configuration/categories/agents-configuration-category.js +352 -0
- package/lib/browser/ai-configuration/categories/agents-configuration-category.js.map +1 -0
- package/lib/browser/ai-configuration/categories/agents-configuration-category.spec.d.ts +2 -0
- package/lib/browser/ai-configuration/categories/agents-configuration-category.spec.d.ts.map +1 -0
- package/lib/browser/ai-configuration/categories/agents-configuration-category.spec.js +99 -0
- package/lib/browser/ai-configuration/categories/agents-configuration-category.spec.js.map +1 -0
- package/lib/browser/ai-configuration/categories/general-configuration-category.d.ts +93 -0
- package/lib/browser/ai-configuration/categories/general-configuration-category.d.ts.map +1 -0
- package/lib/browser/ai-configuration/categories/general-configuration-category.js +313 -0
- package/lib/browser/ai-configuration/categories/general-configuration-category.js.map +1 -0
- package/lib/browser/ai-configuration/categories/general-configuration-category.spec.d.ts +2 -0
- package/lib/browser/ai-configuration/categories/general-configuration-category.spec.d.ts.map +1 -0
- package/lib/browser/ai-configuration/categories/general-configuration-category.spec.js +213 -0
- package/lib/browser/ai-configuration/categories/general-configuration-category.spec.js.map +1 -0
- package/lib/browser/ai-configuration/categories/model-aliases-configuration-category.d.ts +53 -0
- package/lib/browser/ai-configuration/categories/model-aliases-configuration-category.d.ts.map +1 -0
- package/lib/browser/ai-configuration/categories/model-aliases-configuration-category.js +241 -0
- package/lib/browser/ai-configuration/categories/model-aliases-configuration-category.js.map +1 -0
- package/lib/browser/ai-configuration/categories/model-aliases-configuration-category.spec.d.ts +2 -0
- package/lib/browser/ai-configuration/categories/model-aliases-configuration-category.spec.d.ts.map +1 -0
- package/lib/browser/ai-configuration/categories/model-aliases-configuration-category.spec.js +75 -0
- package/lib/browser/ai-configuration/categories/model-aliases-configuration-category.spec.js.map +1 -0
- package/lib/browser/ai-configuration/categories/models-configuration-category.d.ts +72 -0
- package/lib/browser/ai-configuration/categories/models-configuration-category.d.ts.map +1 -0
- package/lib/browser/ai-configuration/categories/models-configuration-category.js +227 -0
- package/lib/browser/ai-configuration/categories/models-configuration-category.js.map +1 -0
- package/lib/browser/ai-configuration/categories/models-configuration-category.spec.d.ts +2 -0
- package/lib/browser/ai-configuration/categories/models-configuration-category.spec.d.ts.map +1 -0
- package/lib/browser/ai-configuration/categories/models-configuration-category.spec.js +145 -0
- package/lib/browser/ai-configuration/categories/models-configuration-category.spec.js.map +1 -0
- package/lib/browser/ai-configuration/categories/prompt-snippets-configuration-category.d.ts +114 -0
- package/lib/browser/ai-configuration/categories/prompt-snippets-configuration-category.d.ts.map +1 -0
- package/lib/browser/ai-configuration/categories/prompt-snippets-configuration-category.js +341 -0
- package/lib/browser/ai-configuration/categories/prompt-snippets-configuration-category.js.map +1 -0
- package/lib/browser/ai-configuration/categories/prompt-snippets-configuration-category.spec.d.ts +2 -0
- package/lib/browser/ai-configuration/categories/prompt-snippets-configuration-category.spec.d.ts.map +1 -0
- package/lib/browser/ai-configuration/categories/prompt-snippets-configuration-category.spec.js +199 -0
- package/lib/browser/ai-configuration/categories/prompt-snippets-configuration-category.spec.js.map +1 -0
- package/lib/browser/ai-configuration/categories/prompts-and-skills-configuration-category.d.ts +84 -0
- package/lib/browser/ai-configuration/categories/prompts-and-skills-configuration-category.d.ts.map +1 -0
- package/lib/browser/ai-configuration/categories/prompts-and-skills-configuration-category.js +341 -0
- package/lib/browser/ai-configuration/categories/prompts-and-skills-configuration-category.js.map +1 -0
- package/lib/browser/ai-configuration/categories/prompts-and-skills-configuration-category.spec.d.ts +2 -0
- package/lib/browser/ai-configuration/categories/prompts-and-skills-configuration-category.spec.d.ts.map +1 -0
- package/lib/browser/ai-configuration/categories/prompts-and-skills-configuration-category.spec.js +184 -0
- package/lib/browser/ai-configuration/categories/prompts-and-skills-configuration-category.spec.js.map +1 -0
- package/lib/browser/ai-configuration/categories/token-usage-configuration-category.d.ts +38 -0
- package/lib/browser/ai-configuration/categories/token-usage-configuration-category.d.ts.map +1 -0
- package/lib/browser/ai-configuration/categories/token-usage-configuration-category.js +130 -0
- package/lib/browser/ai-configuration/categories/token-usage-configuration-category.js.map +1 -0
- package/lib/browser/ai-configuration/categories/token-usage-configuration-category.spec.d.ts +2 -0
- package/lib/browser/ai-configuration/categories/token-usage-configuration-category.spec.d.ts.map +1 -0
- package/lib/browser/ai-configuration/categories/token-usage-configuration-category.spec.js +51 -0
- package/lib/browser/ai-configuration/categories/token-usage-configuration-category.spec.js.map +1 -0
- package/lib/browser/ai-configuration/categories/tools-configuration-category.d.ts +60 -0
- package/lib/browser/ai-configuration/categories/tools-configuration-category.d.ts.map +1 -0
- package/lib/browser/ai-configuration/categories/tools-configuration-category.js +302 -0
- package/lib/browser/ai-configuration/categories/tools-configuration-category.js.map +1 -0
- package/lib/browser/ai-configuration/categories/tools-configuration-category.spec.d.ts +2 -0
- package/lib/browser/ai-configuration/categories/tools-configuration-category.spec.d.ts.map +1 -0
- package/lib/browser/ai-configuration/categories/tools-configuration-category.spec.js +111 -0
- package/lib/browser/ai-configuration/categories/tools-configuration-category.spec.js.map +1 -0
- package/lib/browser/ai-configuration/categories/variables-configuration-category.d.ts +72 -0
- package/lib/browser/ai-configuration/categories/variables-configuration-category.d.ts.map +1 -0
- package/lib/browser/ai-configuration/categories/variables-configuration-category.js +245 -0
- package/lib/browser/ai-configuration/categories/variables-configuration-category.js.map +1 -0
- package/lib/browser/ai-configuration/categories/variables-configuration-category.spec.d.ts +2 -0
- package/lib/browser/ai-configuration/categories/variables-configuration-category.spec.d.ts.map +1 -0
- package/lib/browser/ai-configuration/categories/variables-configuration-category.spec.js +131 -0
- package/lib/browser/ai-configuration/categories/variables-configuration-category.spec.js.map +1 -0
- package/lib/browser/ai-configuration/components/agent-notification-settings.d.ts +6 -2
- package/lib/browser/ai-configuration/components/agent-notification-settings.d.ts.map +1 -1
- package/lib/browser/ai-configuration/components/agent-notification-settings.js +15 -21
- package/lib/browser/ai-configuration/components/agent-notification-settings.js.map +1 -1
- package/lib/browser/ai-configuration/language-model-renderer.d.ts +25 -1
- package/lib/browser/ai-configuration/language-model-renderer.d.ts.map +1 -1
- package/lib/browser/ai-configuration/language-model-renderer.js +159 -63
- package/lib/browser/ai-configuration/language-model-renderer.js.map +1 -1
- package/lib/browser/ai-configuration/language-model-renderer.spec.d.ts +2 -0
- package/lib/browser/ai-configuration/language-model-renderer.spec.d.ts.map +1 -0
- package/lib/browser/ai-configuration/language-model-renderer.spec.js +93 -0
- package/lib/browser/ai-configuration/language-model-renderer.spec.js.map +1 -0
- package/lib/browser/ai-sessions-widget.js +12 -16
- package/lib/browser/ai-sessions-widget.js.map +1 -1
- package/lib/browser/app-tester-chat-agent.d.ts +2 -0
- package/lib/browser/app-tester-chat-agent.d.ts.map +1 -1
- package/lib/browser/app-tester-chat-agent.js +5 -0
- package/lib/browser/app-tester-chat-agent.js.map +1 -1
- package/lib/browser/architect-agent.d.ts +2 -0
- package/lib/browser/architect-agent.d.ts.map +1 -1
- package/lib/browser/architect-agent.js +5 -0
- package/lib/browser/architect-agent.js.map +1 -1
- package/lib/browser/architect-prompt-template.d.ts.map +1 -1
- package/lib/browser/architect-prompt-template.js +7 -0
- package/lib/browser/architect-prompt-template.js.map +1 -1
- package/lib/browser/chat-session-item.d.ts.map +1 -1
- package/lib/browser/chat-session-item.js +17 -30
- package/lib/browser/chat-session-item.js.map +1 -1
- package/lib/browser/chat-session-list-components.js +7 -30
- package/lib/browser/chat-session-list-components.js.map +1 -1
- package/lib/browser/chat-session-list-service.d.ts +2 -1
- package/lib/browser/chat-session-list-service.d.ts.map +1 -1
- package/lib/browser/chat-session-list-service.js +6 -1
- package/lib/browser/chat-session-list-service.js.map +1 -1
- package/lib/browser/chat-sessions-welcome-message-provider.js +3 -21
- package/lib/browser/chat-sessions-welcome-message-provider.js.map +1 -1
- package/lib/browser/code-reviewer-agent.d.ts +2 -0
- package/lib/browser/code-reviewer-agent.d.ts.map +1 -1
- package/lib/browser/code-reviewer-agent.js +5 -0
- package/lib/browser/code-reviewer-agent.js.map +1 -1
- package/lib/browser/coder-agent.d.ts +2 -0
- package/lib/browser/coder-agent.d.ts.map +1 -1
- package/lib/browser/coder-agent.js +6 -1
- package/lib/browser/coder-agent.js.map +1 -1
- package/lib/browser/context-file-validation-service-impl.spec.js +2 -0
- package/lib/browser/context-file-validation-service-impl.spec.js.map +1 -1
- package/lib/browser/create-skill-agent.d.ts +2 -0
- package/lib/browser/create-skill-agent.d.ts.map +1 -1
- package/lib/browser/create-skill-agent.js +5 -0
- package/lib/browser/create-skill-agent.js.map +1 -1
- package/lib/browser/explore-agent.d.ts +2 -0
- package/lib/browser/explore-agent.d.ts.map +1 -1
- package/lib/browser/explore-agent.js +5 -0
- package/lib/browser/explore-agent.js.map +1 -1
- package/lib/browser/file-changeset-functions.d.ts +7 -1
- package/lib/browser/file-changeset-functions.d.ts.map +1 -1
- package/lib/browser/file-changeset-functions.js +62 -20
- package/lib/browser/file-changeset-functions.js.map +1 -1
- package/lib/browser/file-changeset-functions.spec.js +130 -1
- package/lib/browser/file-changeset-functions.spec.js.map +1 -1
- package/lib/browser/frontend-module.d.ts.map +1 -1
- package/lib/browser/frontend-module.js +65 -59
- package/lib/browser/frontend-module.js.map +1 -1
- package/lib/browser/github-chat-agent.d.ts +2 -1
- package/lib/browser/github-chat-agent.d.ts.map +1 -1
- package/lib/browser/github-chat-agent.js +5 -0
- package/lib/browser/github-chat-agent.js.map +1 -1
- package/lib/browser/github-repo-variable-contribution.d.ts +2 -1
- package/lib/browser/github-repo-variable-contribution.d.ts.map +1 -1
- package/lib/browser/github-repo-variable-contribution.js +6 -1
- package/lib/browser/github-repo-variable-contribution.js.map +1 -1
- package/lib/browser/ide-chat-welcome-message-provider.d.ts.map +1 -1
- package/lib/browser/ide-chat-welcome-message-provider.js +31 -118
- package/lib/browser/ide-chat-welcome-message-provider.js.map +1 -1
- package/lib/browser/memory-capability-contribution.d.ts +8 -0
- package/lib/browser/memory-capability-contribution.d.ts.map +1 -0
- package/lib/browser/memory-capability-contribution.js +88 -0
- package/lib/browser/memory-capability-contribution.js.map +1 -0
- package/lib/browser/memory-capability-contribution.spec.d.ts +2 -0
- package/lib/browser/memory-capability-contribution.spec.d.ts.map +1 -0
- package/lib/browser/memory-capability-contribution.spec.js +74 -0
- package/lib/browser/memory-capability-contribution.spec.js.map +1 -0
- package/lib/browser/memory-directory-variable-contribution.d.ts +41 -0
- package/lib/browser/memory-directory-variable-contribution.d.ts.map +1 -0
- package/lib/browser/memory-directory-variable-contribution.js +107 -0
- package/lib/browser/memory-directory-variable-contribution.js.map +1 -0
- package/lib/browser/memory-directory-variable-contribution.spec.d.ts +2 -0
- package/lib/browser/memory-directory-variable-contribution.spec.d.ts.map +1 -0
- package/lib/browser/memory-directory-variable-contribution.spec.js +98 -0
- package/lib/browser/memory-directory-variable-contribution.spec.js.map +1 -0
- package/lib/browser/open-editors-hint-contribution.d.ts +7 -0
- package/lib/browser/open-editors-hint-contribution.d.ts.map +1 -0
- package/lib/browser/open-editors-hint-contribution.js +43 -0
- package/lib/browser/open-editors-hint-contribution.js.map +1 -0
- package/lib/browser/project-info-agent.d.ts +2 -0
- package/lib/browser/project-info-agent.d.ts.map +1 -1
- package/lib/browser/project-info-agent.js +5 -0
- package/lib/browser/project-info-agent.js.map +1 -1
- package/lib/browser/review/pr-review-agent.d.ts +2 -0
- package/lib/browser/review/pr-review-agent.d.ts.map +1 -1
- package/lib/browser/review/pr-review-agent.js +5 -0
- package/lib/browser/review/pr-review-agent.js.map +1 -1
- package/lib/browser/summarize-session-command-contribution.d.ts +2 -1
- package/lib/browser/summarize-session-command-contribution.d.ts.map +1 -1
- package/lib/browser/summarize-session-command-contribution.js +6 -1
- package/lib/browser/summarize-session-command-contribution.js.map +1 -1
- package/lib/browser/task-context-file-storage-service.d.ts.map +1 -1
- package/lib/browser/task-context-file-storage-service.js +1 -0
- package/lib/browser/task-context-file-storage-service.js.map +1 -1
- package/lib/browser/todo-tool-renderer.js +11 -19
- package/lib/browser/todo-tool-renderer.js.map +1 -1
- package/lib/browser/user-interaction-tool-renderer.js +39 -83
- package/lib/browser/user-interaction-tool-renderer.js.map +1 -1
- package/lib/browser/user-interaction-tool.d.ts +2 -0
- package/lib/browser/user-interaction-tool.d.ts.map +1 -1
- package/lib/browser/user-interaction-tool.js +7 -1
- package/lib/browser/user-interaction-tool.js.map +1 -1
- package/lib/browser/user-interaction-tool.spec.js +4 -2
- package/lib/browser/user-interaction-tool.spec.js.map +1 -1
- package/lib/browser/workspace-functions.d.ts +45 -7
- package/lib/browser/workspace-functions.d.ts.map +1 -1
- package/lib/browser/workspace-functions.js +108 -70
- package/lib/browser/workspace-functions.js.map +1 -1
- package/lib/browser/workspace-functions.spec.js +139 -9
- package/lib/browser/workspace-functions.spec.js.map +1 -1
- package/lib/browser/workspace-launch-provider.spec.js +3 -0
- package/lib/browser/workspace-launch-provider.spec.js.map +1 -1
- package/lib/browser/workspace-search-provider.d.ts.map +1 -1
- package/lib/browser/workspace-search-provider.js +4 -7
- package/lib/browser/workspace-search-provider.js.map +1 -1
- package/lib/browser/workspace-search-provider.spec.js +1 -2
- package/lib/browser/workspace-search-provider.spec.js.map +1 -1
- package/lib/browser/workspace-task-provider.spec.js +4 -0
- package/lib/browser/workspace-task-provider.spec.js.map +1 -1
- package/lib/common/coder-replace-prompt-template.d.ts +0 -2
- package/lib/common/coder-replace-prompt-template.d.ts.map +1 -1
- package/lib/common/coder-replace-prompt-template.js +10 -11
- package/lib/common/coder-replace-prompt-template.js.map +1 -1
- package/lib/common/command-chat-agents.d.ts +2 -1
- package/lib/common/command-chat-agents.d.ts.map +1 -1
- package/lib/common/command-chat-agents.js +6 -1
- package/lib/common/command-chat-agents.js.map +1 -1
- package/lib/common/open-editors-hint-fragment-id.d.ts +2 -0
- package/lib/common/open-editors-hint-fragment-id.d.ts.map +1 -0
- package/lib/{browser/ai-configuration/components/empty-state.js → common/open-editors-hint-fragment-id.js} +5 -11
- package/lib/common/open-editors-hint-fragment-id.js.map +1 -0
- package/lib/common/orchestrator-chat-agent.d.ts +2 -1
- package/lib/common/orchestrator-chat-agent.d.ts.map +1 -1
- package/lib/common/orchestrator-chat-agent.js +5 -0
- package/lib/common/orchestrator-chat-agent.js.map +1 -1
- package/lib/common/universal-chat-agent.d.ts +2 -0
- package/lib/common/universal-chat-agent.d.ts.map +1 -1
- package/lib/common/universal-chat-agent.js +5 -0
- package/lib/common/universal-chat-agent.js.map +1 -1
- package/lib/common/universal-prompt-template.d.ts.map +1 -1
- package/lib/common/universal-prompt-template.js +3 -0
- package/lib/common/universal-prompt-template.js.map +1 -1
- package/lib/common/workspace-preferences.js +2 -2
- package/lib/common/workspace-preferences.js.map +1 -1
- package/lib/common/workspace-search-provider-util.d.ts +2 -1
- package/lib/common/workspace-search-provider-util.d.ts.map +1 -1
- package/lib/common/workspace-search-provider-util.js +3 -2
- package/lib/common/workspace-search-provider-util.js.map +1 -1
- package/lib/common/workspace-search-provider-util.spec.d.ts +2 -0
- package/lib/common/workspace-search-provider-util.spec.d.ts.map +1 -0
- package/lib/common/workspace-search-provider-util.spec.js +55 -0
- package/lib/common/workspace-search-provider-util.spec.js.map +1 -0
- package/lib/node/github-repo-service-impl.d.ts +2 -0
- package/lib/node/github-repo-service-impl.d.ts.map +1 -1
- package/lib/node/github-repo-service-impl.js +7 -1
- package/lib/node/github-repo-service-impl.js.map +1 -1
- package/package.json +26 -25
- package/src/browser/ai-configuration/agent-icon.ts +37 -0
- package/src/browser/ai-configuration/ai-configuration-breadcrumbs-contribution.ts +164 -0
- package/src/browser/ai-configuration/ai-configuration-detail-widget.spec.ts +165 -0
- package/src/browser/ai-configuration/ai-configuration-detail-widget.tsx +237 -0
- package/src/browser/ai-configuration/ai-configuration-label-provider-contribution.ts +47 -0
- package/src/browser/ai-configuration/ai-configuration-open-preference-renderer.ts +64 -0
- package/src/browser/ai-configuration/ai-configuration-preference-ownership.spec.ts +135 -0
- package/src/browser/ai-configuration/{components/configuration-section.tsx → ai-configuration-resource.ts} +9 -19
- package/src/browser/ai-configuration/ai-configuration-search-widget.tsx +135 -0
- package/src/browser/ai-configuration/ai-configuration-search.spec.ts +91 -0
- package/src/browser/ai-configuration/ai-configuration-search.ts +43 -0
- package/src/browser/ai-configuration/{components/empty-state.tsx → ai-configuration-tree-model.ts} +7 -11
- package/src/browser/ai-configuration/ai-configuration-tree-nodes.spec.ts +150 -0
- package/src/browser/ai-configuration/ai-configuration-tree-nodes.ts +167 -0
- package/src/browser/ai-configuration/ai-configuration-tree-widget.tsx +457 -0
- package/src/browser/ai-configuration/ai-configuration-view-contribution.ts +156 -18
- package/src/browser/ai-configuration/ai-configuration-widget.tsx +107 -75
- package/src/browser/ai-configuration/categories/agent-capabilities-settings.spec.ts +161 -0
- package/src/browser/ai-configuration/categories/agent-capabilities-settings.tsx +340 -0
- package/src/browser/ai-configuration/categories/agent-chips.tsx +51 -0
- package/src/browser/ai-configuration/categories/agent-detail-model.ts +152 -0
- package/src/browser/ai-configuration/categories/agent-detail-view.tsx +329 -0
- package/src/browser/ai-configuration/categories/agents-configuration-category.spec.ts +119 -0
- package/src/browser/ai-configuration/categories/agents-configuration-category.tsx +431 -0
- package/src/browser/ai-configuration/categories/general-configuration-category.spec.ts +225 -0
- package/src/browser/ai-configuration/categories/general-configuration-category.tsx +465 -0
- package/src/browser/ai-configuration/categories/model-aliases-configuration-category.spec.ts +87 -0
- package/src/browser/ai-configuration/categories/model-aliases-configuration-category.tsx +286 -0
- package/src/browser/ai-configuration/categories/models-configuration-category.spec.ts +167 -0
- package/src/browser/ai-configuration/categories/models-configuration-category.tsx +264 -0
- package/src/browser/ai-configuration/categories/prompt-snippets-configuration-category.spec.ts +250 -0
- package/src/browser/ai-configuration/categories/prompt-snippets-configuration-category.tsx +438 -0
- package/src/browser/ai-configuration/categories/prompts-and-skills-configuration-category.spec.ts +226 -0
- package/src/browser/ai-configuration/categories/prompts-and-skills-configuration-category.tsx +419 -0
- package/src/browser/ai-configuration/categories/token-usage-configuration-category.spec.ts +57 -0
- package/src/browser/ai-configuration/categories/token-usage-configuration-category.tsx +185 -0
- package/src/browser/ai-configuration/categories/tools-configuration-category.spec.ts +130 -0
- package/src/browser/ai-configuration/categories/tools-configuration-category.tsx +421 -0
- package/src/browser/ai-configuration/categories/variables-configuration-category.spec.ts +154 -0
- package/src/browser/ai-configuration/categories/variables-configuration-category.tsx +322 -0
- package/src/browser/ai-configuration/components/agent-notification-settings.tsx +38 -33
- package/src/browser/ai-configuration/language-model-renderer.spec.ts +100 -0
- package/src/browser/ai-configuration/language-model-renderer.tsx +244 -100
- package/src/browser/app-tester-chat-agent.ts +5 -2
- package/src/browser/architect-agent.ts +5 -2
- package/src/browser/architect-prompt-template.ts +7 -0
- package/src/browser/chat-session-item.tsx +2 -4
- package/src/browser/chat-session-list-service.ts +6 -3
- package/src/browser/code-reviewer-agent.ts +5 -2
- package/src/browser/coder-agent.ts +7 -5
- package/src/browser/context-file-validation-service-impl.spec.ts +3 -2
- package/src/browser/create-skill-agent.ts +5 -2
- package/src/browser/explore-agent.ts +5 -2
- package/src/browser/file-changeset-functions.spec.ts +158 -5
- package/src/browser/file-changeset-functions.ts +61 -23
- package/src/browser/frontend-module.ts +76 -63
- package/src/browser/github-chat-agent.ts +5 -2
- package/src/browser/github-repo-variable-contribution.ts +6 -3
- package/src/browser/ide-chat-welcome-message-provider.tsx +11 -11
- package/src/browser/memory-capability-contribution.spec.ts +85 -0
- package/src/browser/memory-capability-contribution.ts +86 -0
- package/src/browser/memory-directory-variable-contribution.spec.ts +113 -0
- package/src/browser/memory-directory-variable-contribution.ts +113 -0
- package/src/browser/open-editors-hint-contribution.ts +38 -0
- package/src/browser/project-info-agent.ts +5 -2
- package/src/browser/review/pr-review-agent.ts +5 -2
- package/src/browser/style/ai-configuration-base.css +0 -6
- package/src/browser/style/ai-configuration-shell.css +416 -0
- package/src/browser/style/ai-configuration-table.css +2 -15
- package/src/browser/style/index.css +220 -276
- package/src/browser/summarize-session-command-contribution.ts +6 -3
- package/src/browser/task-context-file-storage-service.ts +5 -2
- package/src/browser/user-interaction-tool.spec.ts +5 -2
- package/src/browser/user-interaction-tool.ts +6 -2
- package/src/browser/workspace-functions.spec.ts +163 -10
- package/src/browser/workspace-functions.ts +121 -72
- package/src/browser/workspace-launch-provider.spec.ts +4 -1
- package/src/browser/workspace-search-provider.spec.ts +1 -2
- package/src/browser/workspace-search-provider.ts +4 -7
- package/src/browser/workspace-task-provider.spec.ts +5 -1
- package/src/common/coder-replace-prompt-template.ts +9 -9
- package/src/common/command-chat-agents.ts +6 -2
- package/src/{browser/ai-configuration/base/ai-configuration-base-widget.tsx → common/open-editors-hint-fragment-id.ts} +2 -22
- package/src/common/orchestrator-chat-agent.ts +5 -2
- package/src/common/universal-chat-agent.ts +5 -2
- package/src/common/universal-prompt-template.ts +3 -0
- package/src/common/workspace-preferences.ts +2 -2
- package/src/common/workspace-search-provider-util.spec.ts +61 -0
- package/src/common/workspace-search-provider-util.ts +3 -2
- package/src/node/github-repo-service-impl.ts +6 -2
- package/lib/browser/ai-configuration/agent-configuration-widget.d.ts +0 -72
- package/lib/browser/ai-configuration/agent-configuration-widget.d.ts.map +0 -1
- package/lib/browser/ai-configuration/agent-configuration-widget.js +0 -620
- package/lib/browser/ai-configuration/agent-configuration-widget.js.map +0 -1
- package/lib/browser/ai-configuration/agent-configuration-widget.spec.d.ts +0 -2
- package/lib/browser/ai-configuration/agent-configuration-widget.spec.d.ts.map +0 -1
- package/lib/browser/ai-configuration/agent-configuration-widget.spec.js +0 -56
- package/lib/browser/ai-configuration/agent-configuration-widget.spec.js.map +0 -1
- package/lib/browser/ai-configuration/base/ai-card-grid-configuration-widget.d.ts +0 -31
- package/lib/browser/ai-configuration/base/ai-card-grid-configuration-widget.d.ts.map +0 -1
- package/lib/browser/ai-configuration/base/ai-card-grid-configuration-widget.js +0 -55
- package/lib/browser/ai-configuration/base/ai-card-grid-configuration-widget.js.map +0 -1
- package/lib/browser/ai-configuration/base/ai-configuration-base-widget.d.ts +0 -13
- package/lib/browser/ai-configuration/base/ai-configuration-base-widget.d.ts.map +0 -1
- package/lib/browser/ai-configuration/base/ai-configuration-base-widget.js.map +0 -1
- package/lib/browser/ai-configuration/base/ai-hierarchical-configuration-widget.d.ts +0 -23
- package/lib/browser/ai-configuration/base/ai-hierarchical-configuration-widget.d.ts.map +0 -1
- package/lib/browser/ai-configuration/base/ai-hierarchical-configuration-widget.js +0 -60
- package/lib/browser/ai-configuration/base/ai-hierarchical-configuration-widget.js.map +0 -1
- package/lib/browser/ai-configuration/base/ai-list-detail-configuration-widget.d.ts +0 -55
- package/lib/browser/ai-configuration/base/ai-list-detail-configuration-widget.d.ts.map +0 -1
- package/lib/browser/ai-configuration/base/ai-list-detail-configuration-widget.js +0 -96
- package/lib/browser/ai-configuration/base/ai-list-detail-configuration-widget.js.map +0 -1
- package/lib/browser/ai-configuration/base/ai-table-configuration-widget.d.ts +0 -44
- package/lib/browser/ai-configuration/base/ai-table-configuration-widget.d.ts.map +0 -1
- package/lib/browser/ai-configuration/base/ai-table-configuration-widget.js +0 -66
- package/lib/browser/ai-configuration/base/ai-table-configuration-widget.js.map +0 -1
- package/lib/browser/ai-configuration/components/configuration-section.d.ts +0 -12
- package/lib/browser/ai-configuration/components/configuration-section.d.ts.map +0 -1
- package/lib/browser/ai-configuration/components/configuration-section.js.map +0 -1
- package/lib/browser/ai-configuration/components/empty-state.d.ts +0 -10
- package/lib/browser/ai-configuration/components/empty-state.d.ts.map +0 -1
- package/lib/browser/ai-configuration/components/empty-state.js.map +0 -1
- package/lib/browser/ai-configuration/components/expandable-section.d.ts +0 -13
- package/lib/browser/ai-configuration/components/expandable-section.d.ts.map +0 -1
- package/lib/browser/ai-configuration/components/expandable-section.js +0 -31
- package/lib/browser/ai-configuration/components/expandable-section.js.map +0 -1
- package/lib/browser/ai-configuration/model-aliases-configuration-widget.d.ts +0 -26
- package/lib/browser/ai-configuration/model-aliases-configuration-widget.d.ts.map +0 -1
- package/lib/browser/ai-configuration/model-aliases-configuration-widget.js +0 -198
- package/lib/browser/ai-configuration/model-aliases-configuration-widget.js.map +0 -1
- package/lib/browser/ai-configuration/prompt-fragments-configuration-widget.d.ts +0 -140
- package/lib/browser/ai-configuration/prompt-fragments-configuration-widget.d.ts.map +0 -1
- package/lib/browser/ai-configuration/prompt-fragments-configuration-widget.js +0 -508
- package/lib/browser/ai-configuration/prompt-fragments-configuration-widget.js.map +0 -1
- package/lib/browser/ai-configuration/skills-configuration-widget.d.ts +0 -29
- package/lib/browser/ai-configuration/skills-configuration-widget.d.ts.map +0 -1
- package/lib/browser/ai-configuration/skills-configuration-widget.js +0 -166
- package/lib/browser/ai-configuration/skills-configuration-widget.js.map +0 -1
- package/lib/browser/ai-configuration/skills-configuration-widget.spec.d.ts +0 -2
- package/lib/browser/ai-configuration/skills-configuration-widget.spec.d.ts.map +0 -1
- package/lib/browser/ai-configuration/skills-configuration-widget.spec.js +0 -191
- package/lib/browser/ai-configuration/skills-configuration-widget.spec.js.map +0 -1
- package/lib/browser/ai-configuration/template-settings-renderer.d.ts +0 -9
- package/lib/browser/ai-configuration/template-settings-renderer.d.ts.map +0 -1
- package/lib/browser/ai-configuration/template-settings-renderer.js +0 -78
- package/lib/browser/ai-configuration/template-settings-renderer.js.map +0 -1
- package/lib/browser/ai-configuration/token-usage-configuration-widget.d.ts +0 -20
- package/lib/browser/ai-configuration/token-usage-configuration-widget.d.ts.map +0 -1
- package/lib/browser/ai-configuration/token-usage-configuration-widget.js +0 -170
- package/lib/browser/ai-configuration/token-usage-configuration-widget.js.map +0 -1
- package/lib/browser/ai-configuration/tools-configuration-widget.d.ts +0 -52
- package/lib/browser/ai-configuration/tools-configuration-widget.d.ts.map +0 -1
- package/lib/browser/ai-configuration/tools-configuration-widget.js +0 -357
- package/lib/browser/ai-configuration/tools-configuration-widget.js.map +0 -1
- package/lib/browser/ai-configuration/variable-configuration-widget.d.ts +0 -22
- package/lib/browser/ai-configuration/variable-configuration-widget.d.ts.map +0 -1
- package/lib/browser/ai-configuration/variable-configuration-widget.js +0 -133
- package/lib/browser/ai-configuration/variable-configuration-widget.js.map +0 -1
- package/src/browser/ai-configuration/agent-configuration-widget.spec.ts +0 -71
- package/src/browser/ai-configuration/agent-configuration-widget.tsx +0 -928
- package/src/browser/ai-configuration/base/ai-card-grid-configuration-widget.tsx +0 -72
- package/src/browser/ai-configuration/base/ai-hierarchical-configuration-widget.tsx +0 -51
- package/src/browser/ai-configuration/base/ai-list-detail-configuration-widget.tsx +0 -140
- package/src/browser/ai-configuration/base/ai-table-configuration-widget.tsx +0 -107
- package/src/browser/ai-configuration/components/expandable-section.tsx +0 -51
- package/src/browser/ai-configuration/model-aliases-configuration-widget.tsx +0 -270
- package/src/browser/ai-configuration/prompt-fragments-configuration-widget.tsx +0 -736
- package/src/browser/ai-configuration/skills-configuration-widget.spec.ts +0 -248
- package/src/browser/ai-configuration/skills-configuration-widget.tsx +0 -229
- package/src/browser/ai-configuration/template-settings-renderer.tsx +0 -125
- package/src/browser/ai-configuration/token-usage-configuration-widget.tsx +0 -214
- package/src/browser/ai-configuration/tools-configuration-widget.tsx +0 -544
- package/src/browser/ai-configuration/variable-configuration-widget.tsx +0 -159
- package/src/browser/style/ai-configuration-cards.css +0 -60
|
@@ -23,6 +23,7 @@ import { ArchitectAgent } from './architect-agent';
|
|
|
23
23
|
import { CoderAgent } from './coder-agent';
|
|
24
24
|
import { SummarizeSessionCommandContribution } from './summarize-session-command-contribution';
|
|
25
25
|
import {
|
|
26
|
+
AccessibleRootContribution,
|
|
26
27
|
FileContentFunction,
|
|
27
28
|
FileDiagnosticProvider,
|
|
28
29
|
FindFilesByPattern,
|
|
@@ -31,6 +32,7 @@ import {
|
|
|
31
32
|
WorkspaceFunctionScope
|
|
32
33
|
} from './workspace-functions';
|
|
33
34
|
import { WorkspaceSearchProvider } from './workspace-search-provider';
|
|
35
|
+
import { MemoryDirectoryVariableContribution } from './memory-directory-variable-contribution';
|
|
34
36
|
import {
|
|
35
37
|
FrontendApplicationContribution,
|
|
36
38
|
WidgetFactory,
|
|
@@ -67,13 +69,29 @@ import { AppTesterChatAgent } from './app-tester-chat-agent';
|
|
|
67
69
|
import { GitHubChatAgent } from './github-chat-agent';
|
|
68
70
|
import { CommandChatAgent } from '../common/command-chat-agents';
|
|
69
71
|
import { ListChatContext, ResolveChatContext, AddFileToChatContext } from './context-functions';
|
|
70
|
-
import {
|
|
72
|
+
import { AgentsConfigurationCategory } from './ai-configuration/categories/agents-configuration-category';
|
|
73
|
+
import { GeneralConfigurationCategory } from './ai-configuration/categories/general-configuration-category';
|
|
74
|
+
import { ModelsConfigurationCategory } from './ai-configuration/categories/models-configuration-category';
|
|
75
|
+
import { ModelAliasesConfigurationCategory } from './ai-configuration/categories/model-aliases-configuration-category';
|
|
76
|
+
import { VariablesConfigurationCategory } from './ai-configuration/categories/variables-configuration-category';
|
|
77
|
+
import { TokenUsageConfigurationCategory } from './ai-configuration/categories/token-usage-configuration-category';
|
|
78
|
+
import { ToolsConfigurationCategory } from './ai-configuration/categories/tools-configuration-category';
|
|
79
|
+
import { PromptsAndSkillsConfigurationCategory } from './ai-configuration/categories/prompts-and-skills-configuration-category';
|
|
80
|
+
import { PromptSnippetsConfigurationCategory } from './ai-configuration/categories/prompt-snippets-configuration-category';
|
|
81
|
+
import { AiConfigurationOpenPreferenceRenderer, AiConfigurationOpenPreferenceRendererContribution } from './ai-configuration/ai-configuration-open-preference-renderer';
|
|
82
|
+
import { PreferenceNodeRendererContribution } from '@theia/preferences/lib/browser/views/components/preference-node-renderer-creator';
|
|
83
|
+
import { AiConfigurationBreadcrumbsContribution } from './ai-configuration/ai-configuration-breadcrumbs-contribution';
|
|
84
|
+
import { BreadcrumbsContribution } from '@theia/core/lib/browser/breadcrumbs/breadcrumbs-constants';
|
|
85
|
+
import { AiConfigurationLabelProviderContribution } from './ai-configuration/ai-configuration-label-provider-contribution';
|
|
86
|
+
import { LabelProviderContribution } from '@theia/core/lib/browser/label-provider';
|
|
87
|
+
import { AiConfigurationCategory } from '@theia/ai-core-ui/lib/browser/ai-configuration/ai-configuration-category';
|
|
71
88
|
import { AIConfigurationSelectionService } from './ai-configuration/ai-configuration-service';
|
|
72
|
-
import {
|
|
89
|
+
import { AIConfigurationViewContribution } from './ai-configuration/ai-configuration-view-contribution';
|
|
73
90
|
import { AIConfigurationContainerWidget } from './ai-configuration/ai-configuration-widget';
|
|
74
|
-
import {
|
|
91
|
+
import { AiConfigurationDetailWidget } from './ai-configuration/ai-configuration-detail-widget';
|
|
92
|
+
import { AiConfigurationTreeWidget, createAiConfigurationTreeContainer } from './ai-configuration/ai-configuration-tree-widget';
|
|
93
|
+
import { AiConfigurationSearchWidget } from './ai-configuration/ai-configuration-search-widget';
|
|
75
94
|
import { ContextFilesVariableContribution } from '../common/context-files-variable';
|
|
76
|
-
import { AIToolsConfigurationWidget } from './ai-configuration/tools-configuration-widget';
|
|
77
95
|
import { TabBarToolbarContribution } from '@theia/core/lib/browser/shell/tab-bar-toolbar';
|
|
78
96
|
import { TemplatePreferenceContribution } from './template-preference-contribution';
|
|
79
97
|
import { ChatWelcomeMessageProvider } from '@theia/ai-chat-ui/lib/browser/chat-tree-view';
|
|
@@ -83,19 +101,15 @@ import { ChatSessionItemActionContribution, DefaultChatSessionItemActionContribu
|
|
|
83
101
|
import { AiAllowAllModeChatBanner } from './ai-allow-all-mode-chat-banner';
|
|
84
102
|
import { ChatBannerProvider } from '@theia/ai-chat-ui/lib/browser/chat-banner-provider';
|
|
85
103
|
import { DefaultChatAgentRecommendationService } from './default-chat-agent-recommendation-service';
|
|
86
|
-
import { AITokenUsageConfigurationWidget } from './ai-configuration/token-usage-configuration-widget';
|
|
87
|
-
import { AISkillsConfigurationWidget } from './ai-configuration/skills-configuration-widget';
|
|
88
104
|
import { TaskContextSummaryVariableContribution } from './task-background-summary-variable';
|
|
89
105
|
import { GitHubRepoVariableContribution } from './github-repo-variable-contribution';
|
|
90
106
|
import { TaskContextFileStorageService } from './task-context-file-storage-service';
|
|
91
107
|
import { TaskContextStorageService } from '@theia/ai-chat/lib/browser/task-context-service';
|
|
92
108
|
import { bindRootContributionProvider, CommandContribution, PreferenceContribution } from '@theia/core';
|
|
93
|
-
import { AIPromptFragmentsConfigurationWidget } from './ai-configuration/prompt-fragments-configuration-widget';
|
|
94
109
|
import { BrowserAutomation, browserAutomationPath } from '../common/browser-automation-protocol';
|
|
95
110
|
import { GitHubRepoService, githubRepoServicePath } from '../common/github-repo-protocol';
|
|
96
111
|
import { CloseBrowserProvider, IsBrowserRunningProvider, LaunchBrowserProvider, QueryDomProvider } from './app-tester-chat-functions';
|
|
97
112
|
import { GetSkillFileContent } from './skill-file-functions';
|
|
98
|
-
import { ModelAliasesConfigurationWidget } from './ai-configuration/model-aliases-configuration-widget';
|
|
99
113
|
import { aiIdePreferenceSchema } from '../common/ai-ide-preferences';
|
|
100
114
|
import { AIActivationService } from '@theia/ai-core/lib/browser';
|
|
101
115
|
import { AIIdeActivationServiceImpl } from './ai-ide-activation-service';
|
|
@@ -121,6 +135,8 @@ import { AddressGhReviewCommandContribution } from './address-pr-review-command-
|
|
|
121
135
|
import { AppTesterCapabilityContribution } from './apptester-capability-contribution';
|
|
122
136
|
import { GitHubCapabilityContribution } from './github-capability-contribution';
|
|
123
137
|
import { ShellExecutionCapabilityContribution } from './shell-execution-capability-contribution';
|
|
138
|
+
import { MemoryCapabilityContribution } from './memory-capability-contribution';
|
|
139
|
+
import { OpenEditorsHintContribution } from './open-editors-hint-contribution';
|
|
124
140
|
import { AgentModeConfirmationService, AgentModeConfirmationServiceImpl } from './agent-mode-confirmation-service';
|
|
125
141
|
import { ExploreAgent } from './explore-agent';
|
|
126
142
|
import { CodeReviewerAgent } from './code-reviewer-agent';
|
|
@@ -218,6 +234,11 @@ export default new ContainerModule((bind, _unbind, _isBound, rebind) => {
|
|
|
218
234
|
bind(WorkspaceFunctionScope).toSelf().inSingletonScope();
|
|
219
235
|
bindToolProvider(WorkspaceSearchProvider, bind);
|
|
220
236
|
|
|
237
|
+
bindRootContributionProvider(bind, AccessibleRootContribution);
|
|
238
|
+
bind(MemoryDirectoryVariableContribution).toSelf().inSingletonScope();
|
|
239
|
+
bind(AIVariableContribution).toService(MemoryDirectoryVariableContribution);
|
|
240
|
+
bind(AccessibleRootContribution).toService(MemoryDirectoryVariableContribution);
|
|
241
|
+
|
|
221
242
|
bindToolProvider(SuggestFileContent, bind);
|
|
222
243
|
bindToolProvider(WriteFileContent, bind);
|
|
223
244
|
bindToolProvider(TaskListProvider, bind);
|
|
@@ -235,6 +256,14 @@ export default new ContainerModule((bind, _unbind, _isBound, rebind) => {
|
|
|
235
256
|
bindToolProvider(ListChatContext, bind);
|
|
236
257
|
bindToolProvider(ResolveChatContext, bind);
|
|
237
258
|
bind(AIConfigurationSelectionService).toSelf().inSingletonScope();
|
|
259
|
+
// The container widget owns these children and disposes them when the view is closed. They must
|
|
260
|
+
// therefore be transient: a reopened container gets fresh children instead of injecting the
|
|
261
|
+
// already-disposed singletons from the previous instance (which rendered an empty view and logged
|
|
262
|
+
// "node does not belong to this tree" errors on layout restore).
|
|
263
|
+
bind(AiConfigurationSearchWidget).toSelf();
|
|
264
|
+
bind(AiConfigurationDetailWidget).toSelf();
|
|
265
|
+
bind(AiConfigurationTreeWidget)
|
|
266
|
+
.toDynamicValue(({ container }) => createAiConfigurationTreeContainer(container).get(AiConfigurationTreeWidget));
|
|
238
267
|
bind(AIConfigurationContainerWidget).toSelf();
|
|
239
268
|
bind(WidgetFactory)
|
|
240
269
|
.toDynamicValue(ctx => ({
|
|
@@ -248,32 +277,46 @@ export default new ContainerModule((bind, _unbind, _isBound, rebind) => {
|
|
|
248
277
|
bindToolProvider(IsBrowserRunningProvider, bind);
|
|
249
278
|
bindToolProvider(QueryDomProvider, bind);
|
|
250
279
|
|
|
251
|
-
bindViewContribution(bind,
|
|
252
|
-
bind(TabBarToolbarContribution).toService(
|
|
280
|
+
bindViewContribution(bind, AIConfigurationViewContribution);
|
|
281
|
+
bind(TabBarToolbarContribution).toService(AIConfigurationViewContribution);
|
|
253
282
|
|
|
254
|
-
bind(
|
|
255
|
-
bind(
|
|
256
|
-
.toDynamicValue(ctx => ({
|
|
257
|
-
id: AIVariableConfigurationWidget.ID,
|
|
258
|
-
createWidget: () => ctx.container.get(AIVariableConfigurationWidget)
|
|
259
|
-
}))
|
|
260
|
-
.inSingletonScope();
|
|
283
|
+
bind(AgentsConfigurationCategory).toSelf().inSingletonScope();
|
|
284
|
+
bind(AiConfigurationCategory).toService(AgentsConfigurationCategory);
|
|
261
285
|
|
|
262
|
-
bind(
|
|
263
|
-
bind(
|
|
264
|
-
.toDynamicValue(ctx => ({
|
|
265
|
-
id: AIAgentConfigurationWidget.ID,
|
|
266
|
-
createWidget: () => ctx.container.get(AIAgentConfigurationWidget)
|
|
267
|
-
}))
|
|
268
|
-
.inSingletonScope();
|
|
286
|
+
bind(GeneralConfigurationCategory).toSelf().inSingletonScope();
|
|
287
|
+
bind(AiConfigurationCategory).toService(GeneralConfigurationCategory);
|
|
269
288
|
|
|
270
|
-
bind(
|
|
271
|
-
bind(
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
289
|
+
bind(ModelsConfigurationCategory).toSelf().inSingletonScope();
|
|
290
|
+
bind(AiConfigurationCategory).toService(ModelsConfigurationCategory);
|
|
291
|
+
|
|
292
|
+
bind(ModelAliasesConfigurationCategory).toSelf().inSingletonScope();
|
|
293
|
+
bind(AiConfigurationCategory).toService(ModelAliasesConfigurationCategory);
|
|
294
|
+
|
|
295
|
+
bind(VariablesConfigurationCategory).toSelf().inSingletonScope();
|
|
296
|
+
bind(AiConfigurationCategory).toService(VariablesConfigurationCategory);
|
|
297
|
+
|
|
298
|
+
bind(TokenUsageConfigurationCategory).toSelf().inSingletonScope();
|
|
299
|
+
bind(AiConfigurationCategory).toService(TokenUsageConfigurationCategory);
|
|
300
|
+
|
|
301
|
+
bind(ToolsConfigurationCategory).toSelf().inSingletonScope();
|
|
302
|
+
bind(AiConfigurationCategory).toService(ToolsConfigurationCategory);
|
|
303
|
+
|
|
304
|
+
bind(PromptsAndSkillsConfigurationCategory).toSelf().inSingletonScope();
|
|
305
|
+
bind(AiConfigurationCategory).toService(PromptsAndSkillsConfigurationCategory);
|
|
306
|
+
|
|
307
|
+
bind(PromptSnippetsConfigurationCategory).toSelf().inSingletonScope();
|
|
308
|
+
bind(AiConfigurationCategory).toService(PromptSnippetsConfigurationCategory);
|
|
309
|
+
|
|
310
|
+
// Renders the Settings-UI "AI Features" placeholder as a button that opens the AI Configuration view (#316).
|
|
311
|
+
bind(AiConfigurationOpenPreferenceRenderer).toSelf();
|
|
312
|
+
bind(PreferenceNodeRendererContribution).to(AiConfigurationOpenPreferenceRendererContribution).inSingletonScope();
|
|
313
|
+
|
|
314
|
+
// Real Theia breadcrumbs for the AI Configuration view.
|
|
315
|
+
bind(AiConfigurationBreadcrumbsContribution).toSelf().inSingletonScope();
|
|
316
|
+
bind(BreadcrumbsContribution).toService(AiConfigurationBreadcrumbsContribution);
|
|
317
|
+
// Give the view's resource URI a readable name (window title, breadcrumbs) instead of "/".
|
|
318
|
+
bind(AiConfigurationLabelProviderContribution).toSelf().inSingletonScope();
|
|
319
|
+
bind(LabelProviderContribution).toService(AiConfigurationLabelProviderContribution);
|
|
277
320
|
|
|
278
321
|
bindToolProvider(SimpleSuggestFileReplacements, bind);
|
|
279
322
|
bindToolProvider(SimpleWriteFileReplacements, bind);
|
|
@@ -281,37 +324,12 @@ export default new ContainerModule((bind, _unbind, _isBound, rebind) => {
|
|
|
281
324
|
bindToolProvider(GetProposedFileState, bind);
|
|
282
325
|
bindToolProvider(AddFileToChatContext, bind);
|
|
283
326
|
|
|
284
|
-
bind(AIToolsConfigurationWidget).toSelf();
|
|
285
|
-
bind(WidgetFactory)
|
|
286
|
-
.toDynamicValue(ctx => ({
|
|
287
|
-
id: AIToolsConfigurationWidget.ID,
|
|
288
|
-
createWidget: () => ctx.container.get(AIToolsConfigurationWidget)
|
|
289
|
-
}))
|
|
290
|
-
.inSingletonScope();
|
|
291
|
-
|
|
292
|
-
bind(AISkillsConfigurationWidget).toSelf();
|
|
293
|
-
bind(WidgetFactory)
|
|
294
|
-
.toDynamicValue(ctx => ({
|
|
295
|
-
id: AISkillsConfigurationWidget.ID,
|
|
296
|
-
createWidget: () => ctx.container.get(AISkillsConfigurationWidget)
|
|
297
|
-
}))
|
|
298
|
-
.inSingletonScope();
|
|
299
|
-
|
|
300
327
|
bind(AIVariableContribution).to(ContextFilesVariableContribution).inSingletonScope();
|
|
301
328
|
|
|
302
329
|
bind(PreferenceContribution).toConstantValue({ schema: AiConfigurationPreferences });
|
|
303
330
|
|
|
304
331
|
bind(FrontendApplicationContribution).to(TemplatePreferenceContribution);
|
|
305
332
|
|
|
306
|
-
// Register the token usage configuration widget
|
|
307
|
-
bind(AITokenUsageConfigurationWidget).toSelf();
|
|
308
|
-
bind(WidgetFactory)
|
|
309
|
-
.toDynamicValue(ctx => ({
|
|
310
|
-
id: AITokenUsageConfigurationWidget.ID,
|
|
311
|
-
createWidget: () => ctx.container.get(AITokenUsageConfigurationWidget)
|
|
312
|
-
}))
|
|
313
|
-
.inSingletonScope();
|
|
314
|
-
|
|
315
333
|
bind(TaskContextSummaryVariableContribution).toSelf().inSingletonScope();
|
|
316
334
|
bind(AIVariableContribution).toService(TaskContextSummaryVariableContribution);
|
|
317
335
|
|
|
@@ -326,13 +344,6 @@ export default new ContainerModule((bind, _unbind, _isBound, rebind) => {
|
|
|
326
344
|
rebind(TaskContextStorageService).toService(TaskContextFileStorageService);
|
|
327
345
|
|
|
328
346
|
bind(CommandContribution).to(SummarizeSessionCommandContribution);
|
|
329
|
-
bind(AIPromptFragmentsConfigurationWidget).toSelf();
|
|
330
|
-
bind(WidgetFactory)
|
|
331
|
-
.toDynamicValue(ctx => ({
|
|
332
|
-
id: AIPromptFragmentsConfigurationWidget.ID,
|
|
333
|
-
createWidget: () => ctx.container.get(AIPromptFragmentsConfigurationWidget)
|
|
334
|
-
}))
|
|
335
|
-
.inSingletonScope();
|
|
336
347
|
|
|
337
348
|
bindToolProvider(SuggestTerminalCommand, bind);
|
|
338
349
|
|
|
@@ -357,6 +368,8 @@ export default new ContainerModule((bind, _unbind, _isBound, rebind) => {
|
|
|
357
368
|
bind(FrontendApplicationContribution).to(AppTesterCapabilityContribution);
|
|
358
369
|
bind(FrontendApplicationContribution).to(GitHubCapabilityContribution);
|
|
359
370
|
bind(FrontendApplicationContribution).to(ShellExecutionCapabilityContribution);
|
|
371
|
+
bind(FrontendApplicationContribution).to(MemoryCapabilityContribution);
|
|
372
|
+
bind(FrontendApplicationContribution).to(OpenEditorsHintContribution);
|
|
360
373
|
|
|
361
374
|
bind(FrontendApplicationContribution).to(CodeReviewCapabilityContribution);
|
|
362
375
|
bind(FrontendApplicationContribution).to(PRReviewCapabilityContribution);
|
|
@@ -18,8 +18,8 @@ import { AbstractStreamParsingChatAgent } from '@theia/ai-chat/lib/common/chat-a
|
|
|
18
18
|
import { ErrorChatResponseContentImpl, MarkdownChatResponseContentImpl, MutableChatRequestModel, QuestionResponseContentImpl } from '@theia/ai-chat/lib/common/chat-model';
|
|
19
19
|
import { LanguageModelRequirement } from '@theia/ai-core/lib/common';
|
|
20
20
|
import { MCPFrontendService, MCPServerDescription } from '@theia/ai-mcp/lib/common/mcp-server-manager';
|
|
21
|
-
import {
|
|
22
|
-
import { inject, injectable } from '@theia/core/shared/inversify';
|
|
21
|
+
import { CommandService, ILogger, nls } from '@theia/core';
|
|
22
|
+
import { inject, injectable, named } from '@theia/core/shared/inversify';
|
|
23
23
|
import { MCP_SERVERS_PREF } from '@theia/ai-mcp/lib/common/mcp-preferences';
|
|
24
24
|
import { PreferenceScope, PreferenceService } from '@theia/core/lib/common';
|
|
25
25
|
import { PreferencesCommands } from '@theia/preferences/lib/browser/util/preference-types';
|
|
@@ -32,6 +32,9 @@ export const GitHubChatAgentId = 'GitHub';
|
|
|
32
32
|
@injectable()
|
|
33
33
|
export class GitHubChatAgent extends AbstractStreamParsingChatAgent {
|
|
34
34
|
|
|
35
|
+
@inject(ILogger) @named('ai-ide:GitHubChatAgent')
|
|
36
|
+
protected override readonly logger: ILogger;
|
|
37
|
+
|
|
35
38
|
@inject(MCPFrontendService)
|
|
36
39
|
protected readonly mcpService: MCPFrontendService;
|
|
37
40
|
|
|
@@ -14,8 +14,8 @@
|
|
|
14
14
|
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
15
|
// *****************************************************************************
|
|
16
16
|
|
|
17
|
-
import { injectable, inject } from '@theia/core/shared/inversify';
|
|
18
|
-
import { MaybePromise, nls } from '@theia/core';
|
|
17
|
+
import { injectable, inject, named } from '@theia/core/shared/inversify';
|
|
18
|
+
import { MaybePromise, nls, ILogger } from '@theia/core';
|
|
19
19
|
import {
|
|
20
20
|
AIVariableContribution,
|
|
21
21
|
AIVariableResolver,
|
|
@@ -49,6 +49,9 @@ export class GitHubRepoVariableContribution implements AIVariableContribution, A
|
|
|
49
49
|
@inject(GitHubRepoService)
|
|
50
50
|
protected readonly gitHubRepoService: GitHubRepoService;
|
|
51
51
|
|
|
52
|
+
@inject(ILogger) @named('ai-ide:GitHubRepoVariableContribution')
|
|
53
|
+
protected readonly logger: ILogger;
|
|
54
|
+
|
|
52
55
|
registerVariables(service: AIVariableService): void {
|
|
53
56
|
service.registerResolver(GITHUB_REPO_NAME_VARIABLE, this);
|
|
54
57
|
}
|
|
@@ -115,7 +118,7 @@ export class GitHubRepoVariableContribution implements AIVariableContribution, A
|
|
|
115
118
|
};
|
|
116
119
|
|
|
117
120
|
} catch (error) {
|
|
118
|
-
|
|
121
|
+
this.logger.warn('Failed to resolve GitHub repository name:', error);
|
|
119
122
|
return { variable: request.variable, value: 'No GitHub repository is currently selected or detected.' };
|
|
120
123
|
}
|
|
121
124
|
}
|
|
@@ -18,7 +18,7 @@ import { ChatWelcomeMessageProvider } from '@theia/ai-chat-ui/lib/browser/chat-t
|
|
|
18
18
|
import * as React from '@theia/core/shared/react';
|
|
19
19
|
import { nls } from '@theia/core/lib/common/nls';
|
|
20
20
|
import { inject, injectable, postConstruct } from '@theia/core/shared/inversify';
|
|
21
|
-
import { codicon,
|
|
21
|
+
import { codicon, LocalizedMarkdown, MarkdownRenderer } from '@theia/core/lib/browser';
|
|
22
22
|
import { CommandRegistry, DisposableCollection, Emitter, Event, PreferenceScope } from '@theia/core';
|
|
23
23
|
import { AgentService, FrontendLanguageModelRegistry } from '@theia/ai-core/lib/common';
|
|
24
24
|
import { PreferenceService } from '@theia/core/lib/common';
|
|
@@ -388,15 +388,15 @@ Set up an API key for [OpenAI]({0}), [Anthropic]({1}), or [GoogleAI]({2}) or con
|
|
|
388
388
|
Some agents (e.g. Claude Code) work without a provider. [Learn more](https://theia-ide.org/docs/user_ai/).
|
|
389
389
|
`}
|
|
390
390
|
args={[
|
|
391
|
-
`command:${
|
|
392
|
-
`command:${
|
|
393
|
-
`command:${
|
|
391
|
+
`command:${OPEN_AI_CONFIG_VIEW.id}?ai-features.openAiOfficial.openAiApiKey`,
|
|
392
|
+
`command:${OPEN_AI_CONFIG_VIEW.id}?ai-features.anthropic.AnthropicApiKey`,
|
|
393
|
+
`command:${OPEN_AI_CONFIG_VIEW.id}?ai-features.google.apiKey`
|
|
394
394
|
]}
|
|
395
395
|
markdownRenderer={this.markdownRenderer}
|
|
396
396
|
className="theia-WelcomeMessage-Content"
|
|
397
397
|
markdownOptions={{
|
|
398
398
|
supportHtml: true,
|
|
399
|
-
isTrusted: { enabledCommands: [
|
|
399
|
+
isTrusted: { enabledCommands: [OPEN_AI_CONFIG_VIEW.id] }
|
|
400
400
|
}}
|
|
401
401
|
/>
|
|
402
402
|
{errorMessages.length > 0 && (
|
|
@@ -415,8 +415,8 @@ Some agents (e.g. Claude Code) work without a provider. [Learn more](https://the
|
|
|
415
415
|
<div className="theia-WelcomeMessage-Actions">
|
|
416
416
|
<button
|
|
417
417
|
className="theia-button main"
|
|
418
|
-
onClick={() => this.commandRegistry.executeCommand(
|
|
419
|
-
{nls.localize('theia/ai/ide/
|
|
418
|
+
onClick={() => this.commandRegistry.executeCommand(OPEN_AI_CONFIG_VIEW.id)}>
|
|
419
|
+
{nls.localize('theia/ai/ide/openAiConfiguration', 'Open AI Configuration')}
|
|
420
420
|
</button>
|
|
421
421
|
<button
|
|
422
422
|
className="theia-button secondary"
|
|
@@ -474,9 +474,9 @@ Choose the agent to use by default. You can always override this by mentioning *
|
|
|
474
474
|
<LocalizedMarkdown
|
|
475
475
|
localizationKey="theia/ai/ide/moreAgentsAvailable"
|
|
476
476
|
defaultMarkdown='Use @AgentName to try others or configure a different default in [preferences]({0}).'
|
|
477
|
-
args={[`command:${
|
|
477
|
+
args={[`command:${OPEN_AI_CONFIG_VIEW.id}?ai-features.chat.defaultChatAgent`]}
|
|
478
478
|
markdownRenderer={this.markdownRenderer}
|
|
479
|
-
markdownOptions={{ isTrusted: { enabledCommands: [
|
|
479
|
+
markdownOptions={{ isTrusted: { enabledCommands: [OPEN_AI_CONFIG_VIEW.id] } }}
|
|
480
480
|
/>
|
|
481
481
|
</div>
|
|
482
482
|
</div>
|
|
@@ -546,8 +546,8 @@ Choose the agent to use by default. You can always override this by mentioning *
|
|
|
546
546
|
<div className="theia-WelcomeMessage-Actions">
|
|
547
547
|
<button
|
|
548
548
|
className="theia-button main"
|
|
549
|
-
onClick={() => this.commandRegistry.executeCommand(
|
|
550
|
-
{nls.localize('theia/ai/ide/
|
|
549
|
+
onClick={() => this.commandRegistry.executeCommand(OPEN_AI_CONFIG_VIEW.id)}>
|
|
550
|
+
{nls.localize('theia/ai/ide/openAiConfiguration', 'Open AI Configuration')}
|
|
551
551
|
</button>
|
|
552
552
|
</div>
|
|
553
553
|
<LocalizedMarkdown
|
|
@@ -0,0 +1,85 @@
|
|
|
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 { expect } from 'chai';
|
|
18
|
+
import { PromptService } from '@theia/ai-core';
|
|
19
|
+
import { Container } from '@theia/core/shared/inversify';
|
|
20
|
+
import {
|
|
21
|
+
FILE_CONTENT_FUNCTION_ID,
|
|
22
|
+
FIND_FILES_BY_PATTERN_FUNCTION_ID,
|
|
23
|
+
GET_WORKSPACE_FILE_LIST_FUNCTION_ID,
|
|
24
|
+
SEARCH_IN_WORKSPACE_FUNCTION_ID
|
|
25
|
+
} from '../common/workspace-functions';
|
|
26
|
+
import { WRITE_FILE_CONTENT_ID, WRITE_FILE_REPLACEMENTS_ID } from '../common/file-changeset-function-ids';
|
|
27
|
+
import { MEMORY_DIRECTORY_VARIABLE } from './memory-directory-variable-contribution';
|
|
28
|
+
import { MemoryCapabilityContribution } from './memory-capability-contribution';
|
|
29
|
+
|
|
30
|
+
const registerFragment = (): { id: string, template: string } => {
|
|
31
|
+
const fragments: Array<{ id: string, template: string }> = [];
|
|
32
|
+
const container = new Container();
|
|
33
|
+
container.bind(PromptService).toConstantValue({
|
|
34
|
+
addBuiltInPromptFragment: (fragment: { id: string, template: string }) => fragments.push(fragment)
|
|
35
|
+
} as unknown as PromptService);
|
|
36
|
+
container.bind(MemoryCapabilityContribution).toSelf();
|
|
37
|
+
container.get(MemoryCapabilityContribution).onStart();
|
|
38
|
+
|
|
39
|
+
expect(fragments).to.have.lengthOf(1);
|
|
40
|
+
return fragments[0];
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
describe('MemoryCapabilityContribution', () => {
|
|
44
|
+
|
|
45
|
+
it('registers the memory fragment', () => {
|
|
46
|
+
const fragment = registerFragment();
|
|
47
|
+
expect(fragment.id).to.equal('memory');
|
|
48
|
+
expect(fragment.template).to.contain('## Memory');
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
it('starts the template with unindented front matter, so it parses as such', () => {
|
|
52
|
+
const { template } = registerFragment();
|
|
53
|
+
const lines = template.split('\n');
|
|
54
|
+
expect(lines[0]).to.equal('---');
|
|
55
|
+
expect(lines[1]).to.match(/^name: /);
|
|
56
|
+
expect(lines[2]).to.match(/^description: /);
|
|
57
|
+
expect(lines[3]).to.equal('---');
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
it('points the agent at the memory directory variable instead of a workspace path', () => {
|
|
61
|
+
const { template } = registerFragment();
|
|
62
|
+
expect(template).to.contain(`{{${MEMORY_DIRECTORY_VARIABLE.name}}}/wiki/index.md`);
|
|
63
|
+
expect(template).to.contain(`{{${MEMORY_DIRECTORY_VARIABLE.name}}}/raw/`);
|
|
64
|
+
expect(template).to.not.contain('.agents/memory');
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
it('resolves the date for raw filenames through the today variable', () => {
|
|
68
|
+
const { template } = registerFragment();
|
|
69
|
+
expect(template).to.contain('{{today:inIso8601}}');
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
it('instructs the agent to use the generic workspace tools', () => {
|
|
73
|
+
const { template } = registerFragment();
|
|
74
|
+
[
|
|
75
|
+
FILE_CONTENT_FUNCTION_ID,
|
|
76
|
+
FIND_FILES_BY_PATTERN_FUNCTION_ID,
|
|
77
|
+
GET_WORKSPACE_FILE_LIST_FUNCTION_ID,
|
|
78
|
+
SEARCH_IN_WORKSPACE_FUNCTION_ID,
|
|
79
|
+
WRITE_FILE_CONTENT_ID,
|
|
80
|
+
WRITE_FILE_REPLACEMENTS_ID
|
|
81
|
+
].forEach(id => {
|
|
82
|
+
expect(template).to.contain(`~{${id}}`);
|
|
83
|
+
});
|
|
84
|
+
});
|
|
85
|
+
});
|
|
@@ -0,0 +1,86 @@
|
|
|
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 { FrontendApplicationContribution } from '@theia/core/lib/browser';
|
|
18
|
+
import { inject, injectable } from '@theia/core/shared/inversify';
|
|
19
|
+
import { PromptService } from '@theia/ai-core';
|
|
20
|
+
import { nls } from '@theia/core';
|
|
21
|
+
import { GET_WORKSPACE_FILE_LIST_FUNCTION_ID, FILE_CONTENT_FUNCTION_ID, SEARCH_IN_WORKSPACE_FUNCTION_ID, FIND_FILES_BY_PATTERN_FUNCTION_ID } from '../common/workspace-functions';
|
|
22
|
+
import { WRITE_FILE_REPLACEMENTS_ID, WRITE_FILE_CONTENT_ID } from '../common/file-changeset-function-ids';
|
|
23
|
+
import { MEMORY_DIRECTORY_VARIABLE } from './memory-directory-variable-contribution';
|
|
24
|
+
|
|
25
|
+
@injectable()
|
|
26
|
+
export class MemoryCapabilityContribution implements FrontendApplicationContribution {
|
|
27
|
+
|
|
28
|
+
@inject(PromptService)
|
|
29
|
+
protected readonly promptService: PromptService;
|
|
30
|
+
|
|
31
|
+
onStart(): void {
|
|
32
|
+
this.promptService.addBuiltInPromptFragment({
|
|
33
|
+
id: 'memory',
|
|
34
|
+
template: this.buildTemplate()
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
protected buildTemplate(): string {
|
|
39
|
+
const name = nls.localize('theia/ai/ide/memoryCapability/name', 'Memory');
|
|
40
|
+
const description = nls.localize('theia/ai/ide/memoryCapability/description',
|
|
41
|
+
'Lets the agent maintain a persistent, wiki-style knowledge base for the workspace, so this and future sessions '
|
|
42
|
+
+ 'build on what came before instead of starting from scratch.');
|
|
43
|
+
const dir = `{{${MEMORY_DIRECTORY_VARIABLE.name}}}`;
|
|
44
|
+
|
|
45
|
+
return `---
|
|
46
|
+
name: ${name}
|
|
47
|
+
description: ${description}
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## Memory
|
|
51
|
+
|
|
52
|
+
Maintain a persistent knowledge base under \`${dir}\`, the same way a personal
|
|
53
|
+
LLM-maintained wiki is built: raw material is ingested once, then incrementally *compiled* into a linked set of concept
|
|
54
|
+
articles that you read from on every future task. The raw material itself is not the knowledge base — the compiled wiki is.
|
|
55
|
+
|
|
56
|
+
That directory belongs to the current workspace but lies outside it, so what you learn about one project neither bleeds into
|
|
57
|
+
the next nor shows up in the user's repository. Reach it with the ordinary file tools, prefixing every memory path with it.
|
|
58
|
+
|
|
59
|
+
- \`${dir}/raw/\` — append-only ingest: session transcripts, pasted findings, anything worth preserving verbatim. Keep one
|
|
60
|
+
file per task, \`raw/<date>-<topic>.md\` with the \`yyyy-mm-dd\` prefix of {{today:inIso8601}} as the date: create it with
|
|
61
|
+
~{${WRITE_FILE_CONTENT_ID}} as soon as there is something worth keeping and append later findings to it as new sections
|
|
62
|
+
(~{${WRITE_FILE_REPLACEMENTS_ID}}, so you don't re-emit the whole file). Only ever append to the current task's file — earlier
|
|
63
|
+
files and a single shared log are both off limits. Pruning \`raw/\` is the user's call, not yours.
|
|
64
|
+
- \`${dir}/wiki/\` — the actual knowledge base: one short, single-concept \`.md\` article per topic (a project fact, a
|
|
65
|
+
convention, an environment quirk, a standing decision), cross-linked from \`wiki/index.md\` and from related articles. This is
|
|
66
|
+
what you read from, not \`raw/\`.
|
|
67
|
+
- Start of task: read \`${dir}/wiki/index.md\` (~{${GET_WORKSPACE_FILE_LIST_FUNCTION_ID}} / ~{${FILE_CONTENT_FUNCTION_ID}})
|
|
68
|
+
and follow only the links relevant to the current task — browse the wiki, don't grep a diary. An empty memory directory simply
|
|
69
|
+
means this workspace has no memory yet: create \`wiki/index.md\` the first time you have something durable to record.
|
|
70
|
+
- Compile, don't just log: when something durable comes up, fold it into the right existing article
|
|
71
|
+
(~{${WRITE_FILE_REPLACEMENTS_ID}}) or create a new one linked from \`index.md\` and its related articles — don't leave it
|
|
72
|
+
stranded only in \`raw/\`.
|
|
73
|
+
- File outputs back in: substantial findings, decisions, or analysis produced during a task should be written into the wiki
|
|
74
|
+
article they inform, so future queries benefit from this session's work too, not just the next session's memory of it.
|
|
75
|
+
- Lint occasionally: when asked to clean up memory, or an article looks stale, use ~{${SEARCH_IN_WORKSPACE_FUNCTION_ID}} /
|
|
76
|
+
~{${FIND_FILES_BY_PATTERN_FUNCTION_ID}} across \`${dir}/wiki/\` to find contradictions, duplicate articles, and missing
|
|
77
|
+
links, then merge or fix them. Both take that directory as their search root.
|
|
78
|
+
- Memory is yours to maintain unprompted — that is what separates it from the project info file described below, which is the
|
|
79
|
+
user's own description of the project and is only updated when they ask for it. Record what you learn in the wiki instead of
|
|
80
|
+
editing that file.
|
|
81
|
+
- Keep the knowledge base to what belongs in it: what you learned about this project and how to work in it. It is not a place for
|
|
82
|
+
secrets, credentials, or copies of the user's files.
|
|
83
|
+
|
|
84
|
+
Use judgement on what's worth compiling — a small number of accurate, well-linked articles beats an exhaustive log.`;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
@@ -0,0 +1,113 @@
|
|
|
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 { expect } from 'chai';
|
|
18
|
+
import { URI } from '@theia/core';
|
|
19
|
+
import { Container } from '@theia/core/shared/inversify';
|
|
20
|
+
import { WorkspaceMetadataStorageService, WorkspaceMetadataStore } from '@theia/workspace/lib/browser/metadata-storage';
|
|
21
|
+
import { WorkspaceService } from '@theia/workspace/lib/browser/workspace-service';
|
|
22
|
+
import { MEMORY_DIRECTORY_VARIABLE, MEMORY_METADATA_STORE_KEY, MemoryDirectoryVariableContribution } from './memory-directory-variable-contribution';
|
|
23
|
+
|
|
24
|
+
describe('MemoryDirectoryVariableContribution', () => {
|
|
25
|
+
|
|
26
|
+
let contribution: MemoryDirectoryVariableContribution;
|
|
27
|
+
let location: URI;
|
|
28
|
+
let requestedKeys: string[];
|
|
29
|
+
let ensureExistsCalls: number;
|
|
30
|
+
let workspaceOpen: boolean;
|
|
31
|
+
|
|
32
|
+
beforeEach(() => {
|
|
33
|
+
location = new URI('file:///config/workspace-metadata/uuid/memory');
|
|
34
|
+
requestedKeys = [];
|
|
35
|
+
ensureExistsCalls = 0;
|
|
36
|
+
workspaceOpen = true;
|
|
37
|
+
|
|
38
|
+
const store = {
|
|
39
|
+
get location(): URI {
|
|
40
|
+
return location;
|
|
41
|
+
},
|
|
42
|
+
ensureExists: async () => {
|
|
43
|
+
ensureExistsCalls++;
|
|
44
|
+
}
|
|
45
|
+
} as unknown as WorkspaceMetadataStore;
|
|
46
|
+
|
|
47
|
+
const container = new Container();
|
|
48
|
+
container.bind(WorkspaceMetadataStorageService).toConstantValue({
|
|
49
|
+
getOrCreateStore: async (key: string) => {
|
|
50
|
+
requestedKeys.push(key);
|
|
51
|
+
if (!workspaceOpen) {
|
|
52
|
+
throw new Error('Cannot create metadata store: no workspace is currently open');
|
|
53
|
+
}
|
|
54
|
+
return store;
|
|
55
|
+
}
|
|
56
|
+
} as WorkspaceMetadataStorageService);
|
|
57
|
+
container.bind(WorkspaceService).toConstantValue({
|
|
58
|
+
tryGetRoots: () => workspaceOpen ? [{ resource: new URI('file:///workspace') }] : []
|
|
59
|
+
} as unknown as WorkspaceService);
|
|
60
|
+
container.bind(MemoryDirectoryVariableContribution).toSelf();
|
|
61
|
+
|
|
62
|
+
contribution = container.get(MemoryDirectoryVariableContribution);
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
const resolve = (name: string = MEMORY_DIRECTORY_VARIABLE.name) =>
|
|
66
|
+
contribution.resolve({ variable: { ...MEMORY_DIRECTORY_VARIABLE, name } }, {});
|
|
67
|
+
|
|
68
|
+
it('resolves the variable to the memory store of the current workspace', async () => {
|
|
69
|
+
const resolved = await resolve();
|
|
70
|
+
expect(resolved?.value).to.equal(location.path.fsPath());
|
|
71
|
+
expect(requestedKeys).to.deep.equal([MEMORY_METADATA_STORE_KEY]);
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
it('creates the directory when the variable is resolved, but only once per location', async () => {
|
|
75
|
+
await resolve();
|
|
76
|
+
await resolve();
|
|
77
|
+
expect(ensureExistsCalls).to.equal(1);
|
|
78
|
+
|
|
79
|
+
location = new URI('file:///config/workspace-metadata/other/memory');
|
|
80
|
+
await resolve();
|
|
81
|
+
expect(ensureExistsCalls).to.equal(2);
|
|
82
|
+
});
|
|
83
|
+
|
|
84
|
+
it('contributes the memory directory as an accessible root', async () => {
|
|
85
|
+
expect((await contribution.getRoots()).map(root => root.toString())).to.deep.equal([location.toString()]);
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
it('follows the store location without needing invalidation', async () => {
|
|
89
|
+
await contribution.getRoots();
|
|
90
|
+
location = new URI('file:///config/workspace-metadata/other/memory');
|
|
91
|
+
expect((await contribution.getRoots())[0].toString()).to.equal(location.toString());
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
it('does not resolve other variables', async () => {
|
|
95
|
+
expect(await resolve('somethingElse')).to.be.undefined;
|
|
96
|
+
});
|
|
97
|
+
|
|
98
|
+
it('has neither a value nor a root without a workspace', async () => {
|
|
99
|
+
workspaceOpen = false;
|
|
100
|
+
expect(await resolve()).to.be.undefined;
|
|
101
|
+
expect(await contribution.getRoots()).to.be.empty;
|
|
102
|
+
});
|
|
103
|
+
|
|
104
|
+
it('drops the memory of a closed workspace instead of keeping the cached location', async () => {
|
|
105
|
+
// The store cannot compute a location without a workspace, so on close it keeps the one of the
|
|
106
|
+
// closed workspace. Nothing may be reachable through it any more.
|
|
107
|
+
expect((await resolve())?.value).to.equal(location.path.fsPath());
|
|
108
|
+
|
|
109
|
+
workspaceOpen = false;
|
|
110
|
+
expect(await resolve()).to.be.undefined;
|
|
111
|
+
expect(await contribution.getRoots()).to.be.empty;
|
|
112
|
+
});
|
|
113
|
+
});
|