@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
|
@@ -0,0 +1,340 @@
|
|
|
1
|
+
// *****************************************************************************
|
|
2
|
+
// Copyright (C) 2026 EclipseSource and others.
|
|
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 {
|
|
18
|
+
AISettingsService,
|
|
19
|
+
ParsedCapability,
|
|
20
|
+
GenericCapabilitySelections,
|
|
21
|
+
CAPABILITY_TYPE_PROMPT_MAP,
|
|
22
|
+
ServerToolDescriptor,
|
|
23
|
+
} from '@theia/ai-core/lib/common';
|
|
24
|
+
import { nls } from '@theia/core';
|
|
25
|
+
import { codicon } from '@theia/core/lib/browser';
|
|
26
|
+
import * as React from '@theia/core/shared/react';
|
|
27
|
+
import { AiConfigurationItemRow } from '@theia/ai-core-ui/lib/browser/ai-configuration/components/ai-configuration-item-row';
|
|
28
|
+
import { AiSettingsRowService } from '@theia/ai-core-ui/lib/browser/ai-configuration/components/ai-settings-row-service';
|
|
29
|
+
import { AiToggleSwitch } from '@theia/ai-core-ui/lib/browser/ai-configuration/components/ai-configuration-controls';
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* An agent-detail subsection header with an optional trailing action, so a section-wide action (e.g. its
|
|
33
|
+
* reset) rides on the title line instead of taking a prominent row of its own above the list.
|
|
34
|
+
*/
|
|
35
|
+
const AgentSectionHeader: React.FC<{ title: string; action?: React.ReactNode }> = ({ title, action }) => (
|
|
36
|
+
<div className='settings-section-subcategory-title ai-settings-section-subcategory-title ai-agent-section-header'>
|
|
37
|
+
<span>{title}</span>
|
|
38
|
+
{action}
|
|
39
|
+
</div>
|
|
40
|
+
);
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* The section-wide reset: the same discard icon button the prompt variant rows use, rather than a text
|
|
44
|
+
* button, so it reads as a Theia reset affordance. Its tooltip says what the section-wide reset does.
|
|
45
|
+
*/
|
|
46
|
+
const ResetAllButton: React.FC<{ title: string; disabled?: boolean; onReset: () => void }> = ({ title, disabled, onReset }) => (
|
|
47
|
+
<button
|
|
48
|
+
className='ai-variant-action-button ai-agent-section-header-action'
|
|
49
|
+
onClick={onReset}
|
|
50
|
+
disabled={disabled}
|
|
51
|
+
title={title}
|
|
52
|
+
aria-label={title}
|
|
53
|
+
>
|
|
54
|
+
<span aria-hidden='true' className={codicon('discard')}></span>
|
|
55
|
+
</button>
|
|
56
|
+
);
|
|
57
|
+
|
|
58
|
+
export interface AgentCapabilitiesSettingsProps {
|
|
59
|
+
capabilities: ParsedCapability[];
|
|
60
|
+
agentId: string;
|
|
61
|
+
savedOverrides: Record<string, boolean> | undefined;
|
|
62
|
+
aiSettingsService: AISettingsService;
|
|
63
|
+
settingsRowService: AiSettingsRowService;
|
|
64
|
+
/**
|
|
65
|
+
* Reveals the capability's prompt fragment on the Prompt Snippets page. The text is global, shared by
|
|
66
|
+
* every agent that references it, which is why the row links there instead of editing it in place.
|
|
67
|
+
*/
|
|
68
|
+
onOpenPromptSnippet: (fragmentId: string) => void;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* The "Available Capabilities" section of the agent detail page: one toggle per capability the prompt
|
|
73
|
+
* declares. Each toggle writes an override only when it differs from the agent's default; a per-row
|
|
74
|
+
* reset (gear menu) and a "Reset All to Defaults" button clear overrides back to the declared defaults.
|
|
75
|
+
*/
|
|
76
|
+
export const AgentCapabilitiesSettings = ({
|
|
77
|
+
capabilities, agentId, savedOverrides, aiSettingsService, settingsRowService, onOpenPromptSnippet
|
|
78
|
+
}: AgentCapabilitiesSettingsProps) => {
|
|
79
|
+
const [loading, setLoading] = React.useState(false);
|
|
80
|
+
|
|
81
|
+
const handleToggle = async (fragmentId: string, currentValue: boolean): Promise<void> => {
|
|
82
|
+
if (loading) {
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
setLoading(true);
|
|
86
|
+
try {
|
|
87
|
+
const capability = capabilities.find(c => c.fragmentId === fragmentId);
|
|
88
|
+
if (!capability) {
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
const newValue = !currentValue;
|
|
92
|
+
const newOverrides = { ...savedOverrides };
|
|
93
|
+
if (newValue === capability.defaultEnabled) {
|
|
94
|
+
delete newOverrides[fragmentId];
|
|
95
|
+
} else {
|
|
96
|
+
newOverrides[fragmentId] = newValue;
|
|
97
|
+
}
|
|
98
|
+
await aiSettingsService.updateAgentSettings(agentId, { capabilityOverrides: newOverrides });
|
|
99
|
+
} finally {
|
|
100
|
+
setLoading(false);
|
|
101
|
+
}
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
const handleResetAll = async (): Promise<void> => {
|
|
105
|
+
if (loading) {
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
setLoading(true);
|
|
109
|
+
try {
|
|
110
|
+
await aiSettingsService.updateAgentSettings(agentId, { capabilityOverrides: undefined });
|
|
111
|
+
} finally {
|
|
112
|
+
setLoading(false);
|
|
113
|
+
}
|
|
114
|
+
};
|
|
115
|
+
|
|
116
|
+
// Drop a single capability's override so it falls back to the agent's default.
|
|
117
|
+
const resetCapability = async (fragmentId: string): Promise<void> => {
|
|
118
|
+
if (loading) {
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
setLoading(true);
|
|
122
|
+
try {
|
|
123
|
+
const newOverrides = { ...savedOverrides };
|
|
124
|
+
delete newOverrides[fragmentId];
|
|
125
|
+
await aiSettingsService.updateAgentSettings(agentId, { capabilityOverrides: newOverrides });
|
|
126
|
+
} finally {
|
|
127
|
+
setLoading(false);
|
|
128
|
+
}
|
|
129
|
+
};
|
|
130
|
+
|
|
131
|
+
const getCurrentValue = (capability: ParsedCapability): boolean =>
|
|
132
|
+
savedOverrides && capability.fragmentId in savedOverrides ? savedOverrides[capability.fragmentId] : capability.defaultEnabled;
|
|
133
|
+
const hasOverride = (capability: ParsedCapability): boolean => savedOverrides !== undefined && capability.fragmentId in savedOverrides;
|
|
134
|
+
const hasAnyOverrides = savedOverrides && Object.keys(savedOverrides).length > 0;
|
|
135
|
+
// Show "Name (id)" when the fragment declares a name; otherwise just the id.
|
|
136
|
+
const labelFor = (capability: ParsedCapability): string =>
|
|
137
|
+
capability.name ? `${capability.name} (${capability.fragmentId})` : capability.fragmentId;
|
|
138
|
+
const snippetLinkTooltip = nls.localize('theia/ai/ide/agentConfiguration/showCapabilitySnippet', 'Show snippet');
|
|
139
|
+
|
|
140
|
+
return <>
|
|
141
|
+
<AgentSectionHeader
|
|
142
|
+
title={nls.localize('theia/ai/core/agentConfiguration/availableCapabilities', 'Available Capabilities')}
|
|
143
|
+
action={hasAnyOverrides && <ResetAllButton
|
|
144
|
+
onReset={handleResetAll}
|
|
145
|
+
disabled={loading}
|
|
146
|
+
title={nls.localize('theia/ai/ide/agentConfiguration/resetAllCapabilities', 'Reset all capabilities to their default values')}
|
|
147
|
+
/>}
|
|
148
|
+
/>
|
|
149
|
+
<div className='ai-configuration-item-list'>
|
|
150
|
+
{capabilities.map(capability => <AiConfigurationItemRow
|
|
151
|
+
key={capability.fragmentId}
|
|
152
|
+
label={labelFor(capability)}
|
|
153
|
+
description={capability.description}
|
|
154
|
+
modified={hasOverride(capability)}
|
|
155
|
+
onOpenMenu={hasOverride(capability)
|
|
156
|
+
? gear => settingsRowService.openResetMenu(gear, () => resetCapability(capability.fragmentId))
|
|
157
|
+
: undefined}
|
|
158
|
+
onActivateLabel={() => onOpenPromptSnippet(capability.fragmentId)}
|
|
159
|
+
labelTooltip={snippetLinkTooltip}
|
|
160
|
+
trailing={<AiToggleSwitch
|
|
161
|
+
checked={getCurrentValue(capability)}
|
|
162
|
+
disabled={loading}
|
|
163
|
+
ariaLabel={labelFor(capability)}
|
|
164
|
+
onChange={() => handleToggle(capability.fragmentId, getCurrentValue(capability))}
|
|
165
|
+
/>}
|
|
166
|
+
/>)}
|
|
167
|
+
</div>
|
|
168
|
+
</>;
|
|
169
|
+
};
|
|
170
|
+
|
|
171
|
+
export interface AgentGenericCapabilitiesSettingsProps {
|
|
172
|
+
agentId: string;
|
|
173
|
+
savedSelections: GenericCapabilitySelections | undefined;
|
|
174
|
+
aiSettingsService: AISettingsService;
|
|
175
|
+
settingsRowService: AiSettingsRowService;
|
|
176
|
+
/** Reveals the snippet that wraps this capability type's selections, as in {@link AgentCapabilitiesSettings}. */
|
|
177
|
+
onOpenPromptSnippet: (fragmentId: string) => void;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
/**
|
|
181
|
+
* The "Generic Capabilities" section of the agent detail page: one row per capability type the user has
|
|
182
|
+
* selected (skills, MCP functions, functions, prompt fragments, agent delegation, variables). Only
|
|
183
|
+
* selected types are shown; each row is an override with a per-type reset and a shared "Reset All".
|
|
184
|
+
*/
|
|
185
|
+
export const AgentGenericCapabilitiesSettings = ({
|
|
186
|
+
agentId, savedSelections, aiSettingsService, settingsRowService, onOpenPromptSnippet
|
|
187
|
+
}: AgentGenericCapabilitiesSettingsProps) => {
|
|
188
|
+
const [loading, setLoading] = React.useState(false);
|
|
189
|
+
|
|
190
|
+
const handleResetAll = async (): Promise<void> => {
|
|
191
|
+
if (loading) {
|
|
192
|
+
return;
|
|
193
|
+
}
|
|
194
|
+
setLoading(true);
|
|
195
|
+
try {
|
|
196
|
+
await aiSettingsService.updateAgentSettings(agentId, { genericCapabilitySelections: undefined });
|
|
197
|
+
} finally {
|
|
198
|
+
setLoading(false);
|
|
199
|
+
}
|
|
200
|
+
};
|
|
201
|
+
|
|
202
|
+
// Drop a single capability type's selections.
|
|
203
|
+
const handleReset = async (capabilityType: keyof GenericCapabilitySelections): Promise<void> => {
|
|
204
|
+
if (loading) {
|
|
205
|
+
return;
|
|
206
|
+
}
|
|
207
|
+
setLoading(true);
|
|
208
|
+
try {
|
|
209
|
+
await aiSettingsService.updateAgentSettings(agentId, { genericCapabilitySelections: { ...savedSelections, [capabilityType]: undefined } });
|
|
210
|
+
} finally {
|
|
211
|
+
setLoading(false);
|
|
212
|
+
}
|
|
213
|
+
};
|
|
214
|
+
|
|
215
|
+
const capabilityTypes = CAPABILITY_TYPE_PROMPT_MAP.map(m => m.type);
|
|
216
|
+
const promptIdFor = (type: keyof GenericCapabilitySelections): string =>
|
|
217
|
+
CAPABILITY_TYPE_PROMPT_MAP.find(entry => entry.type === type)!.promptId;
|
|
218
|
+
const getDisplayName = (type: keyof GenericCapabilitySelections): string => ({
|
|
219
|
+
skills: nls.localizeByDefault('Skills'),
|
|
220
|
+
mcpFunctions: nls.localize('theia/ai/ide/agentConfiguration/genericCapabilityType/mcpFunctions', 'MCP Functions'),
|
|
221
|
+
functions: nls.localize('theia/ai/ide/agentConfiguration/genericCapabilityType/functions', 'Functions'),
|
|
222
|
+
promptFragments: nls.localize('theia/ai/ide/agentConfiguration/genericCapabilityType/promptFragments', 'Prompt Fragments'),
|
|
223
|
+
agentDelegation: nls.localize('theia/ai/ide/agentConfiguration/genericCapabilityType/agentDelegation', 'Agent Delegation'),
|
|
224
|
+
variables: nls.localizeByDefault('Variables')
|
|
225
|
+
} as const)[type];
|
|
226
|
+
|
|
227
|
+
// Only types the user has actually selected are shown; each such row is an override, so it carries the
|
|
228
|
+
// modified bar. A single "Reset All" clears every selection, mirroring the Available Capabilities section.
|
|
229
|
+
const shownTypes = capabilityTypes.filter(type => (savedSelections?.[type]?.length ?? 0) > 0);
|
|
230
|
+
return <>
|
|
231
|
+
<AgentSectionHeader
|
|
232
|
+
title={nls.localize('theia/ai/ide/agentConfiguration/genericCapabilitiesSettings', 'Generic Capabilities')}
|
|
233
|
+
action={shownTypes.length > 0 && <ResetAllButton
|
|
234
|
+
onReset={handleResetAll}
|
|
235
|
+
disabled={loading}
|
|
236
|
+
title={nls.localize('theia/ai/ide/agentConfiguration/resetAllGenericCapabilities', 'Reset all generic capability selections')}
|
|
237
|
+
/>}
|
|
238
|
+
/>
|
|
239
|
+
<div className='ai-configuration-item-list'>
|
|
240
|
+
{shownTypes.map(type => <AiConfigurationItemRow
|
|
241
|
+
key={type}
|
|
242
|
+
label={getDisplayName(type)}
|
|
243
|
+
description={(savedSelections?.[type] ?? []).join(', ')}
|
|
244
|
+
modified={true}
|
|
245
|
+
onOpenMenu={gear => settingsRowService.openResetMenu(gear, () => handleReset(type))}
|
|
246
|
+
onActivateLabel={() => onOpenPromptSnippet(promptIdFor(type))}
|
|
247
|
+
labelTooltip={nls.localize('theia/ai/ide/agentConfiguration/showCapabilitySnippet', 'Show snippet')}
|
|
248
|
+
/>)}
|
|
249
|
+
</div>
|
|
250
|
+
</>;
|
|
251
|
+
};
|
|
252
|
+
|
|
253
|
+
export interface AgentServerToolsSettingsProps {
|
|
254
|
+
agentId: string;
|
|
255
|
+
/** Server tools the agent's model offers. */
|
|
256
|
+
tools: ServerToolDescriptor[];
|
|
257
|
+
/** Vendor the selections are keyed by: the vendor of the model offering the tools. */
|
|
258
|
+
vendor: string;
|
|
259
|
+
savedSelections: Record<string, string[]> | undefined;
|
|
260
|
+
aiSettingsService: AISettingsService;
|
|
261
|
+
/** Backs each enabled row's gear menu, whose "Reset Setting" switches that tool back off. */
|
|
262
|
+
settingsRowService: AiSettingsRowService;
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
/**
|
|
266
|
+
* The "Server Tools" section of the agent detail page: one toggle per tool the agent's model offers, executed
|
|
267
|
+
* by the provider rather than by Theia. The same per-agent setting the chat input's capabilities popup writes,
|
|
268
|
+
* keyed by model vendor because the tools are vendor-specific.
|
|
269
|
+
*
|
|
270
|
+
* Nothing is enabled unless it is listed, so an enabled tool is the deviation from the default and carries the
|
|
271
|
+
* modified indicator; "Reset All to Defaults" drops this vendor's selections, leaving other vendors' alone.
|
|
272
|
+
*/
|
|
273
|
+
export const AgentServerToolsSettings = ({
|
|
274
|
+
agentId, tools, vendor, savedSelections, aiSettingsService, settingsRowService
|
|
275
|
+
}: AgentServerToolsSettingsProps) => {
|
|
276
|
+
const [loading, setLoading] = React.useState(false);
|
|
277
|
+
const enabledIds = savedSelections?.[vendor] ?? [];
|
|
278
|
+
|
|
279
|
+
const update = async (ids: string[]): Promise<void> => {
|
|
280
|
+
if (loading) {
|
|
281
|
+
return;
|
|
282
|
+
}
|
|
283
|
+
setLoading(true);
|
|
284
|
+
try {
|
|
285
|
+
// Drop the vendor's entry entirely once nothing is enabled, rather than leaving an empty array behind.
|
|
286
|
+
const next = { ...savedSelections };
|
|
287
|
+
if (ids.length > 0) {
|
|
288
|
+
next[vendor] = ids;
|
|
289
|
+
} else {
|
|
290
|
+
delete next[vendor];
|
|
291
|
+
}
|
|
292
|
+
await aiSettingsService.updateAgentSettings(agentId, {
|
|
293
|
+
serverToolSelections: Object.keys(next).length > 0 ? next : undefined
|
|
294
|
+
});
|
|
295
|
+
} finally {
|
|
296
|
+
setLoading(false);
|
|
297
|
+
}
|
|
298
|
+
};
|
|
299
|
+
|
|
300
|
+
const handleToggle = (toolId: string, enabled: boolean): Promise<void> =>
|
|
301
|
+
update(enabled ? [...enabledIds, toolId] : enabledIds.filter(id => id !== toolId));
|
|
302
|
+
|
|
303
|
+
return <>
|
|
304
|
+
<AgentSectionHeader
|
|
305
|
+
title={nls.localize('theia/ai/core/languageModelRenderer/serverTools', 'Server Tools')}
|
|
306
|
+
action={enabledIds.length > 0 && <ResetAllButton
|
|
307
|
+
onReset={() => update([])}
|
|
308
|
+
disabled={loading}
|
|
309
|
+
title={nls.localize('theia/ai/ide/agentConfiguration/resetAllServerTools', 'Turn off every server tool of this provider')}
|
|
310
|
+
/>}
|
|
311
|
+
/>
|
|
312
|
+
{/* Same warning the capabilities popup shows on its Server Tools group, since enabling one here has
|
|
313
|
+
exactly that consequence. Reuses that key so both read identically in every language. */}
|
|
314
|
+
<div className='ai-agent-section-warning'>
|
|
315
|
+
<span aria-hidden='true' className={codicon('warning')}></span>
|
|
316
|
+
<span>{nls.localize('theia/ai/chat-ui/serverToolsWarning',
|
|
317
|
+
'These tools are auto-approved when selected. They may be executed by the model at any time.')}</span>
|
|
318
|
+
</div>
|
|
319
|
+
<div className='ai-configuration-item-list'>
|
|
320
|
+
{tools.map(tool => {
|
|
321
|
+
const enabled = enabledIds.includes(tool.id);
|
|
322
|
+
return <AiConfigurationItemRow
|
|
323
|
+
key={tool.id}
|
|
324
|
+
label={tool.name}
|
|
325
|
+
description={tool.description}
|
|
326
|
+
modified={enabled}
|
|
327
|
+
onOpenMenu={enabled
|
|
328
|
+
? gear => settingsRowService.openResetMenu(gear, () => handleToggle(tool.id, false))
|
|
329
|
+
: undefined}
|
|
330
|
+
trailing={<AiToggleSwitch
|
|
331
|
+
checked={enabled}
|
|
332
|
+
disabled={loading}
|
|
333
|
+
ariaLabel={tool.name}
|
|
334
|
+
onChange={checked => handleToggle(tool.id, checked)}
|
|
335
|
+
/>}
|
|
336
|
+
/>;
|
|
337
|
+
})}
|
|
338
|
+
</div>
|
|
339
|
+
</>;
|
|
340
|
+
};
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
// *****************************************************************************
|
|
2
|
+
// Copyright (C) 2026 EclipseSource and others.
|
|
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 { Agent } from '@theia/ai-core';
|
|
18
|
+
import { nls } from '@theia/core';
|
|
19
|
+
import * as React from '@theia/core/shared/react';
|
|
20
|
+
import { getAgentIconClass } from '../agent-icon';
|
|
21
|
+
|
|
22
|
+
/** A single navigable agent chip (icon + name); shared by the Variables, Skills and Slash Command surfaces. */
|
|
23
|
+
export const AgentChip: React.FC<{ agent: Agent; onOpenAgent: (agentId: string) => void }> = ({ agent, onOpenAgent }) => {
|
|
24
|
+
const label = nls.localize('theia/ai/ide/variableConfiguration/openAgent', 'Open agent {0}', agent.name);
|
|
25
|
+
return <button
|
|
26
|
+
type='button'
|
|
27
|
+
className='agent-chip'
|
|
28
|
+
aria-label={label}
|
|
29
|
+
title={label}
|
|
30
|
+
onClick={event => {
|
|
31
|
+
event.stopPropagation();
|
|
32
|
+
onOpenAgent(agent.id);
|
|
33
|
+
}}
|
|
34
|
+
>
|
|
35
|
+
<span aria-hidden='true' className={getAgentIconClass(agent)}></span>
|
|
36
|
+
{agent.name}
|
|
37
|
+
</button>;
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
export interface AgentChipsProps {
|
|
41
|
+
readonly agents: Agent[];
|
|
42
|
+
/** Navigates to an agent's detail page when a chip is activated. */
|
|
43
|
+
readonly onOpenAgent: (agentId: string) => void;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/** A row of navigable {@link AgentChip}s. */
|
|
47
|
+
export const AgentChips: React.FC<AgentChipsProps> = ({ agents, onOpenAgent }) => (
|
|
48
|
+
<div className='agent-chips-container'>
|
|
49
|
+
{agents.map(agent => <AgentChip key={agent.id} agent={agent} onOpenAgent={onOpenAgent} />)}
|
|
50
|
+
</div>
|
|
51
|
+
);
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
// *****************************************************************************
|
|
2
|
+
// Copyright (C) 2026 EclipseSource and others.
|
|
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 {
|
|
18
|
+
Agent,
|
|
19
|
+
AgentService,
|
|
20
|
+
AISettingsService,
|
|
21
|
+
AIVariableService,
|
|
22
|
+
FrontendLanguageModelRegistry,
|
|
23
|
+
matchVariablesRegEx,
|
|
24
|
+
PROMPT_FUNCTION_REGEX,
|
|
25
|
+
ParsedCapability,
|
|
26
|
+
parseCapabilitiesFromTemplate,
|
|
27
|
+
PromptService,
|
|
28
|
+
NotificationType,
|
|
29
|
+
GenericCapabilitySelections,
|
|
30
|
+
ServerToolDescriptor,
|
|
31
|
+
ToolInvocationRegistry,
|
|
32
|
+
} from '@theia/ai-core/lib/common';
|
|
33
|
+
import { CommandService } from '@theia/core/lib/common/command';
|
|
34
|
+
import { ILogger } from '@theia/core';
|
|
35
|
+
import { AiSettingsRowService } from '@theia/ai-core-ui/lib/browser/ai-configuration/components/ai-settings-row-service';
|
|
36
|
+
|
|
37
|
+
/** The services the agent detail page needs; injected into the owning category and passed down. */
|
|
38
|
+
export interface AgentDetailServices {
|
|
39
|
+
readonly agentService: AgentService;
|
|
40
|
+
readonly aiSettingsService: AISettingsService;
|
|
41
|
+
readonly variableService: AIVariableService;
|
|
42
|
+
readonly promptService: PromptService;
|
|
43
|
+
readonly languageModelRegistry: FrontendLanguageModelRegistry;
|
|
44
|
+
readonly toolInvocationRegistry: ToolInvocationRegistry;
|
|
45
|
+
readonly commandService: CommandService;
|
|
46
|
+
readonly settingsRowService: AiSettingsRowService;
|
|
47
|
+
readonly logger: ILogger;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export interface ParsedPrompt {
|
|
51
|
+
functions: string[];
|
|
52
|
+
globalVariables: string[];
|
|
53
|
+
agentSpecificVariables: string[];
|
|
54
|
+
capabilities: ParsedCapability[];
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
export interface AgentDetailState {
|
|
58
|
+
parsed: ParsedPrompt;
|
|
59
|
+
showInChat: boolean;
|
|
60
|
+
completionNotification?: NotificationType;
|
|
61
|
+
capabilityOverrides?: Record<string, boolean>;
|
|
62
|
+
genericCapabilitySelections?: GenericCapabilitySelections;
|
|
63
|
+
/** Server tools the agent's model offers, if it declares any; empty/absent hides that section. */
|
|
64
|
+
serverTools?: ServerToolDescriptor[];
|
|
65
|
+
/** Vendor the server tool selections are keyed by, i.e. the vendor of the model offering them. */
|
|
66
|
+
serverToolVendor?: string;
|
|
67
|
+
/** Enabled server tool ids per vendor, as stored for this agent. */
|
|
68
|
+
serverToolSelections?: Record<string, string[]>;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
export async function loadAgentDetail(agent: Agent, services: AgentDetailServices): Promise<AgentDetailState> {
|
|
72
|
+
const parsed = await parsePromptFragments(agent, services);
|
|
73
|
+
const agentSettings = await services.aiSettingsService.getAgentSettings(agent.id);
|
|
74
|
+
const serverToolModel = await resolveServerToolModel(agent, services);
|
|
75
|
+
return {
|
|
76
|
+
parsed,
|
|
77
|
+
showInChat: agentSettings?.showInChat ?? true,
|
|
78
|
+
completionNotification: agentSettings?.completionNotification,
|
|
79
|
+
capabilityOverrides: agentSettings?.capabilityOverrides,
|
|
80
|
+
genericCapabilitySelections: agentSettings?.genericCapabilitySelections,
|
|
81
|
+
serverTools: serverToolModel?.serverTools,
|
|
82
|
+
serverToolVendor: serverToolModel?.vendor,
|
|
83
|
+
serverToolSelections: agentSettings?.serverToolSelections ? { ...agentSettings.serverToolSelections } : undefined
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* The model whose provider server tools the agent can use: the first of its requirements that resolves to a
|
|
89
|
+
* model declaring any, mirroring how the chat input picks the model behind its capabilities popup. Server
|
|
90
|
+
* tools are vendor-specific, so the vendor comes from that same model.
|
|
91
|
+
*/
|
|
92
|
+
async function resolveServerToolModel(agent: Agent, services: AgentDetailServices): Promise<{ serverTools: ServerToolDescriptor[]; vendor?: string } | undefined> {
|
|
93
|
+
for (const requirement of agent.languageModelRequirements ?? []) {
|
|
94
|
+
try {
|
|
95
|
+
const model = await services.languageModelRegistry.selectLanguageModel({ agent: agent.id, ...requirement });
|
|
96
|
+
if (model?.serverTools && model.serverTools.length > 0) {
|
|
97
|
+
return { serverTools: model.serverTools, vendor: model.vendor };
|
|
98
|
+
}
|
|
99
|
+
} catch (error) {
|
|
100
|
+
services.logger.warn('Failed to resolve language model for server tools:', error);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
return undefined;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
async function parsePromptFragments(agent: Agent, services: AgentDetailServices): Promise<ParsedPrompt> {
|
|
107
|
+
const { aiSettingsService, promptService, variableService } = services;
|
|
108
|
+
const result: ParsedPrompt = { functions: [], globalVariables: [], agentSpecificVariables: [], capabilities: [] };
|
|
109
|
+
const agentSettings = await aiSettingsService.getAgentSettings(agent.id);
|
|
110
|
+
const selectedVariants = agentSettings?.selectedVariants ?? {};
|
|
111
|
+
|
|
112
|
+
for (const mainTemplate of agent.prompts) {
|
|
113
|
+
const promptId = selectedVariants[mainTemplate.id] ?? mainTemplate.defaultVariant?.id ?? mainTemplate.id;
|
|
114
|
+
const promptToAnalyze = promptService.getRawPromptFragment(promptId)?.template;
|
|
115
|
+
if (!promptToAnalyze) {
|
|
116
|
+
continue;
|
|
117
|
+
}
|
|
118
|
+
extractVariablesAndFunctions(promptToAnalyze, result, agent, variableService);
|
|
119
|
+
extractCapabilities(promptToAnalyze, result, promptService);
|
|
120
|
+
}
|
|
121
|
+
return result;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
function extractCapabilities(promptContent: string, result: ParsedPrompt, promptService: PromptService): void {
|
|
125
|
+
const capabilities = parseCapabilitiesFromTemplate(promptContent);
|
|
126
|
+
const existingIds = new Set(result.capabilities.map(c => c.fragmentId));
|
|
127
|
+
for (const capability of capabilities) {
|
|
128
|
+
if (!existingIds.has(capability.fragmentId)) {
|
|
129
|
+
const fragment = promptService.getRawPromptFragment(capability.fragmentId);
|
|
130
|
+
result.capabilities.push({ ...capability, name: fragment?.name, description: fragment?.description });
|
|
131
|
+
existingIds.add(capability.fragmentId);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
function extractVariablesAndFunctions(promptContent: string, result: ParsedPrompt, agent: Agent, variableService: AIVariableService): void {
|
|
137
|
+
const variableMatches = matchVariablesRegEx(promptContent);
|
|
138
|
+
variableMatches.forEach(match => {
|
|
139
|
+
const variableId = match[1];
|
|
140
|
+
if (variableId.startsWith('!--') || variableId.startsWith('capability:')) {
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
const baseVariableId = variableId.split(':')[0];
|
|
144
|
+
if (variableService.hasVariable(baseVariableId) && agent.agentSpecificVariables.find(v => v.name === baseVariableId) === undefined) {
|
|
145
|
+
result.globalVariables.push(variableId);
|
|
146
|
+
} else {
|
|
147
|
+
result.agentSpecificVariables.push(variableId);
|
|
148
|
+
}
|
|
149
|
+
});
|
|
150
|
+
const functionMatches = [...promptContent.matchAll(PROMPT_FUNCTION_REGEX)];
|
|
151
|
+
functionMatches.forEach(match => result.functions.push(match[1]));
|
|
152
|
+
}
|