diff --git a/examples/browser/package.json b/examples/browser/package.json index ff31de38bbf72..142d1da189c85 100644 --- a/examples/browser/package.json +++ b/examples/browser/package.json @@ -35,7 +35,7 @@ "@theia/ai-openai": "1.58.0", "@theia/ai-scanoss": "1.58.0", "@theia/ai-terminal": "1.58.0", - "@theia/ai-ide-agents": "1.58.0", + "@theia/ai-ide": "1.58.0", "@theia/api-provider-sample": "1.58.0", "@theia/api-samples": "1.58.0", "@theia/bulk-edit": "1.58.0", diff --git a/examples/browser/tsconfig.json b/examples/browser/tsconfig.json index 6b6b2e70625dd..6a9466d494abb 100644 --- a/examples/browser/tsconfig.json +++ b/examples/browser/tsconfig.json @@ -33,7 +33,7 @@ "path": "../../packages/ai-hugging-face" }, { - "path": "../../packages/ai-ide-agents" + "path": "../../packages/ai-ide" }, { "path": "../../packages/ai-llamafile" diff --git a/examples/electron/package.json b/examples/electron/package.json index 2937fb54a2029..4957eb68946c2 100644 --- a/examples/electron/package.json +++ b/examples/electron/package.json @@ -39,7 +39,7 @@ "@theia/ai-openai": "1.58.0", "@theia/ai-scanoss": "1.58.0", "@theia/ai-terminal": "1.58.0", - "@theia/ai-ide-agents": "1.58.0", + "@theia/ai-ide": "1.58.0", "@theia/api-provider-sample": "1.58.0", "@theia/api-samples": "1.58.0", "@theia/bulk-edit": "1.58.0", diff --git a/examples/electron/tsconfig.json b/examples/electron/tsconfig.json index 320e215b7a813..f4dcfdea1b592 100644 --- a/examples/electron/tsconfig.json +++ b/examples/electron/tsconfig.json @@ -33,7 +33,7 @@ "path": "../../packages/ai-hugging-face" }, { - "path": "../../packages/ai-ide-agents" + "path": "../../packages/ai-ide" }, { "path": "../../packages/ai-llamafile" diff --git a/package-lock.json b/package-lock.json index 723f9ec259413..6841bc4494033 100644 --- a/package-lock.json +++ b/package-lock.json @@ -366,7 +366,7 @@ "@theia/ai-core": "1.58.0", "@theia/ai-history": "1.58.0", "@theia/ai-huggingface": "1.58.0", - "@theia/ai-ide-agents": "1.58.0", + "@theia/ai-ide": "1.58.0", "@theia/ai-llamafile": "1.58.0", "@theia/ai-mcp": "1.58.0", "@theia/ai-ollama": "1.58.0", @@ -504,7 +504,7 @@ "@theia/ai-core": "1.58.0", "@theia/ai-history": "1.58.0", "@theia/ai-huggingface": "1.58.0", - "@theia/ai-ide-agents": "1.58.0", + "@theia/ai-ide": "1.58.0", "@theia/ai-llamafile": "1.58.0", "@theia/ai-mcp": "1.58.0", "@theia/ai-ollama": "1.58.0", @@ -5814,8 +5814,8 @@ "resolved": "packages/ai-hugging-face", "link": true }, - "node_modules/@theia/ai-ide-agents": { - "resolved": "packages/ai-ide-agents", + "node_modules/@theia/ai-ide": { + "resolved": "packages/ai-ide", "link": true }, "node_modules/@theia/ai-llamafile": { @@ -29958,8 +29958,10 @@ "@theia/ai-history": "1.58.0", "@theia/core": "1.58.0", "@theia/editor": "1.58.0", + "@theia/file-search": "1.58.0", "@theia/filesystem": "1.58.0", "@theia/monaco": "1.58.0", + "@theia/monaco-editor-core": "1.96.302", "@theia/workspace": "1.58.0", "minimatch": "^5.1.0", "tslib": "^2.6.2" @@ -30060,9 +30062,31 @@ "@theia/ext-scripts": "1.58.0" } }, + "packages/ai-ide": { + "name": "@theia/ai-ide", + "version": "1.58.0", + "license": "EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0", + "dependencies": { + "@theia/ai-chat": "1.58.0", + "@theia/ai-core": "1.58.0", + "@theia/core": "1.58.0", + "@theia/filesystem": "1.58.0", + "@theia/monaco": "1.58.0", + "@theia/navigator": "1.58.0", + "@theia/terminal": "1.58.0", + "@theia/workspace": "1.58.0", + "ignore": "^6.0.0", + "minimatch": "^9.0.0" + }, + "devDependencies": { + "@theia/cli": "1.58.0", + "@theia/test": "1.58.0" + } + }, "packages/ai-ide-agents": { - "name": "@theia/ai-ide-agents", + "name": "@theia/ai-ide", "version": "1.58.0", + "extraneous": true, "license": "EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0", "dependencies": { "@theia/ai-chat": "1.58.0", @@ -30081,7 +30105,7 @@ "@theia/test": "1.58.0" } }, - "packages/ai-ide-agents/node_modules/minimatch": { + "packages/ai-ide/node_modules/minimatch": { "version": "9.0.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", diff --git a/packages/ai-core/src/browser/ai-core-frontend-module.ts b/packages/ai-core/src/browser/ai-core-frontend-module.ts index 0ef05e6d043ee..5f3624609cd1a 100644 --- a/packages/ai-core/src/browser/ai-core-frontend-module.ts +++ b/packages/ai-core/src/browser/ai-core-frontend-module.ts @@ -42,14 +42,10 @@ import { LanguageModelDelegateClientImpl, } from './frontend-language-model-registry'; -import { bindViewContribution, FrontendApplicationContribution, WidgetFactory } from '@theia/core/lib/browser'; +import { FrontendApplicationContribution } from '@theia/core/lib/browser'; import { TabBarToolbarContribution } from '@theia/core/lib/browser/shell/tab-bar-toolbar'; import { LanguageGrammarDefinitionContribution } from '@theia/monaco/lib/browser/textmate'; -import { AIAgentConfigurationWidget } from './ai-configuration/agent-configuration-widget'; -import { AIConfigurationSelectionService } from './ai-configuration/ai-configuration-service'; -import { AIAgentConfigurationViewContribution } from './ai-configuration/ai-configuration-view-contribution'; -import { AIConfigurationContainerWidget } from './ai-configuration/ai-configuration-widget'; -import { AIVariableConfigurationWidget } from './ai-configuration/variable-configuration-widget'; + import { AICoreFrontendApplicationContribution } from './ai-core-frontend-application-contribution'; import { bindAICorePreferences } from './ai-core-preferences'; import { AISettingsServiceImpl } from './ai-settings-service'; @@ -103,16 +99,6 @@ export default new ContainerModule(bind => { bind(CommandContribution).toService(PromptTemplateContribution); bind(TabBarToolbarContribution).toService(PromptTemplateContribution); - bind(AIConfigurationSelectionService).toSelf().inSingletonScope(); - bind(AIConfigurationContainerWidget).toSelf(); - bind(WidgetFactory) - .toDynamicValue(ctx => ({ - id: AIConfigurationContainerWidget.ID, - createWidget: () => ctx.container.get(AIConfigurationContainerWidget) - })) - .inSingletonScope(); - - bindViewContribution(bind, AIAgentConfigurationViewContribution); bind(AISettingsService).to(AISettingsServiceImpl).inRequestScope(); bindContributionProvider(bind, AIVariableContribution); bind(DefaultFrontendVariableService).toSelf().inSingletonScope(); @@ -129,22 +115,6 @@ export default new ContainerModule(bind => { bind(FrontendApplicationContribution).to(AICoreFrontendApplicationContribution).inSingletonScope(); - bind(AIVariableConfigurationWidget).toSelf(); - bind(WidgetFactory) - .toDynamicValue(ctx => ({ - id: AIVariableConfigurationWidget.ID, - createWidget: () => ctx.container.get(AIVariableConfigurationWidget) - })) - .inSingletonScope(); - - bind(AIAgentConfigurationWidget).toSelf(); - bind(WidgetFactory) - .toDynamicValue(ctx => ({ - id: AIAgentConfigurationWidget.ID, - createWidget: () => ctx.container.get(AIAgentConfigurationWidget) - })) - .inSingletonScope(); - bind(ToolInvocationRegistry).to(ToolInvocationRegistryImpl).inSingletonScope(); bindContributionProvider(bind, ToolProvider); diff --git a/packages/ai-ide-agents/.eslintrc.js b/packages/ai-ide/.eslintrc.js similarity index 100% rename from packages/ai-ide-agents/.eslintrc.js rename to packages/ai-ide/.eslintrc.js diff --git a/packages/ai-ide-agents/README.md b/packages/ai-ide/README.md similarity index 81% rename from packages/ai-ide-agents/README.md rename to packages/ai-ide/README.md index 6b696378542eb..cd8d537cc8aab 100644 --- a/packages/ai-ide-agents/README.md +++ b/packages/ai-ide/README.md @@ -12,7 +12,7 @@ ## Description -The `@theia/ai-ide-agents` package consolidates various AI agents for use within IDEs like the Theia IDE. +The `@theia/ai-ide` package consolidates various AI agents for use within IDEs like the Theia IDE. ## Agents @@ -28,6 +28,10 @@ The package includes the following agents: - **Architect Agent**: The agent is able to inspect the current files of the workspace, including their content, to answer questions. +## Configuration View + +The package provides a configuration view that enables you to adjust settings related to the behavior of AI agents. This view is implemented in the files located at packages/ai-ide/src/browser/ai-configuration and offers customization of default parameters, feature toggles, and additional preferences for the AI IDE. + ## Additional Information - [Theia - GitHub](https://github.com/eclipse-theia/theia) diff --git a/packages/ai-ide-agents/package.json b/packages/ai-ide/package.json similarity index 97% rename from packages/ai-ide-agents/package.json rename to packages/ai-ide/package.json index 2f0c0944884a3..5e6a5bb1d97ac 100644 --- a/packages/ai-ide-agents/package.json +++ b/packages/ai-ide/package.json @@ -1,5 +1,5 @@ { - "name": "@theia/ai-ide-agents", + "name": "@theia/ai-ide", "version": "1.58.0", "description": "AI IDE Agents Extension", "license": "EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0", diff --git a/packages/ai-core/src/browser/ai-configuration/agent-configuration-widget.tsx b/packages/ai-ide/src/browser/ai-configuration/agent-configuration-widget.tsx similarity index 99% rename from packages/ai-core/src/browser/ai-configuration/agent-configuration-widget.tsx rename to packages/ai-ide/src/browser/ai-configuration/agent-configuration-widget.tsx index 33cdda57ed077..2ff00ac333f11 100644 --- a/packages/ai-core/src/browser/ai-configuration/agent-configuration-widget.tsx +++ b/packages/ai-ide/src/browser/ai-configuration/agent-configuration-widget.tsx @@ -14,11 +14,9 @@ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0 // ***************************************************************************** -import { codicon, ReactWidget } from '@theia/core/lib/browser'; -import { inject, injectable, postConstruct } from '@theia/core/shared/inversify'; -import * as React from '@theia/core/shared/react'; import { Agent, + AgentService, AISettingsService, AIVariableService, LanguageModel, @@ -27,12 +25,14 @@ import { PROMPT_FUNCTION_REGEX, PromptCustomizationService, PromptService, -} from '../../common'; +} from '@theia/ai-core/lib/common'; +import { codicon, ReactWidget } from '@theia/core/lib/browser'; +import { inject, injectable, postConstruct } from '@theia/core/shared/inversify'; +import * as React from '@theia/core/shared/react'; +import { AIConfigurationSelectionService } from './ai-configuration-service'; import { LanguageModelRenderer } from './language-model-renderer'; import { TemplateRenderer } from './template-settings-renderer'; -import { AIConfigurationSelectionService } from './ai-configuration-service'; import { AIVariableConfigurationWidget } from './variable-configuration-widget'; -import { AgentService } from '../../common/agent-service'; import { nls } from '@theia/core'; interface ParsedPrompt { diff --git a/packages/ai-core/src/browser/ai-configuration/ai-configuration-service.ts b/packages/ai-ide/src/browser/ai-configuration/ai-configuration-service.ts similarity index 97% rename from packages/ai-core/src/browser/ai-configuration/ai-configuration-service.ts rename to packages/ai-ide/src/browser/ai-configuration/ai-configuration-service.ts index bd364a9a1d3cd..aa59621f71cd7 100644 --- a/packages/ai-core/src/browser/ai-configuration/ai-configuration-service.ts +++ b/packages/ai-ide/src/browser/ai-configuration/ai-configuration-service.ts @@ -14,9 +14,9 @@ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0 // ***************************************************************************** +import { Agent } from '@theia/ai-core/lib/common'; import { Emitter } from '@theia/core'; import { injectable } from '@theia/core/shared/inversify'; -import { Agent } from '../../common'; @injectable() export class AIConfigurationSelectionService { diff --git a/packages/ai-core/src/browser/ai-configuration/ai-configuration-view-contribution.ts b/packages/ai-ide/src/browser/ai-configuration/ai-configuration-view-contribution.ts similarity index 97% rename from packages/ai-core/src/browser/ai-configuration/ai-configuration-view-contribution.ts rename to packages/ai-ide/src/browser/ai-configuration/ai-configuration-view-contribution.ts index 4e6e371240f46..d71ee40c6ee51 100644 --- a/packages/ai-core/src/browser/ai-configuration/ai-configuration-view-contribution.ts +++ b/packages/ai-ide/src/browser/ai-configuration/ai-configuration-view-contribution.ts @@ -13,11 +13,11 @@ // // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0 // ***************************************************************************** +import { AIViewContribution } from '@theia/ai-core/lib/browser'; +import { Command, CommandRegistry } from '@theia/core'; import { FrontendApplication } from '@theia/core/lib/browser'; import { injectable } from '@theia/core/shared/inversify'; -import { AIViewContribution } from '../ai-view-contribution'; import { AIConfigurationContainerWidget } from './ai-configuration-widget'; -import { Command, CommandRegistry } from '@theia/core'; export const AI_CONFIGURATION_TOGGLE_COMMAND_ID = 'aiConfiguration:toggle'; export const OPEN_AI_CONFIG_VIEW = Command.toLocalizedCommand({ @@ -51,4 +51,3 @@ export class AIAgentConfigurationViewContribution extends AIViewContribution a.variables?.includes(variable.id)); } } - diff --git a/packages/ai-ide-agents/src/browser/architect-agent.ts b/packages/ai-ide/src/browser/architect-agent.ts similarity index 100% rename from packages/ai-ide-agents/src/browser/architect-agent.ts rename to packages/ai-ide/src/browser/architect-agent.ts diff --git a/packages/ai-ide-agents/src/browser/coder-agent.ts b/packages/ai-ide/src/browser/coder-agent.ts similarity index 100% rename from packages/ai-ide-agents/src/browser/coder-agent.ts rename to packages/ai-ide/src/browser/coder-agent.ts diff --git a/packages/ai-ide-agents/src/browser/content-replacer.spec.ts b/packages/ai-ide/src/browser/content-replacer.spec.ts similarity index 100% rename from packages/ai-ide-agents/src/browser/content-replacer.spec.ts rename to packages/ai-ide/src/browser/content-replacer.spec.ts diff --git a/packages/ai-ide-agents/src/browser/content-replacer.ts b/packages/ai-ide/src/browser/content-replacer.ts similarity index 100% rename from packages/ai-ide-agents/src/browser/content-replacer.ts rename to packages/ai-ide/src/browser/content-replacer.ts diff --git a/packages/ai-ide-agents/src/browser/context-functions.ts b/packages/ai-ide/src/browser/context-functions.ts similarity index 100% rename from packages/ai-ide-agents/src/browser/context-functions.ts rename to packages/ai-ide/src/browser/context-functions.ts diff --git a/packages/ai-ide-agents/src/browser/file-changeset-functions.ts b/packages/ai-ide/src/browser/file-changeset-functions.ts similarity index 100% rename from packages/ai-ide-agents/src/browser/file-changeset-functions.ts rename to packages/ai-ide/src/browser/file-changeset-functions.ts diff --git a/packages/ai-ide-agents/src/browser/frontend-module.ts b/packages/ai-ide/src/browser/frontend-module.ts similarity index 67% rename from packages/ai-ide-agents/src/browser/frontend-module.ts rename to packages/ai-ide/src/browser/frontend-module.ts index 99cbf2463c9e4..c1f51a9cb2956 100644 --- a/packages/ai-ide-agents/src/browser/frontend-module.ts +++ b/packages/ai-ide/src/browser/frontend-module.ts @@ -20,7 +20,7 @@ import { Agent, ToolProvider } from '@theia/ai-core/lib/common'; import { ArchitectAgent } from './architect-agent'; import { CoderAgent } from './coder-agent'; import { FileContentFunction, GetWorkspaceDirectoryStructure, GetWorkspaceFileList, WorkspaceFunctionScope } from './workspace-functions'; -import { PreferenceContribution } from '@theia/core/lib/browser'; +import { PreferenceContribution, WidgetFactory, bindViewContribution } from '@theia/core/lib/browser'; import { WorkspacePreferencesSchema } from './workspace-preferences'; import { ReplaceContentInFileProvider, @@ -30,6 +30,11 @@ import { OrchestratorChatAgent, OrchestratorChatAgentId } from '../common/orches import { UniversalChatAgent, UniversalChatAgentId } from '../common/universal-chat-agent'; import { CommandChatAgent } from '../common/command-chat-agents'; import { ListChatContext, ResolveChatContext } from './context-functions'; +import { AIAgentConfigurationWidget } from './ai-configuration/agent-configuration-widget'; +import { AIConfigurationSelectionService } from './ai-configuration/ai-configuration-service'; +import { AIAgentConfigurationViewContribution } from './ai-configuration/ai-configuration-view-contribution'; +import { AIConfigurationContainerWidget } from './ai-configuration/ai-configuration-widget'; +import { AIVariableConfigurationWidget } from './ai-configuration/variable-configuration-widget'; export default new ContainerModule(bind => { bind(PreferenceContribution).toConstantValue({ schema: WorkspacePreferencesSchema }); @@ -67,4 +72,31 @@ export default new ContainerModule(bind => { bind(ToolProvider).to(ListChatContext); bind(ToolProvider).to(ResolveChatContext); + bind(AIConfigurationSelectionService).toSelf().inSingletonScope(); + bind(AIConfigurationContainerWidget).toSelf(); + bind(WidgetFactory) + .toDynamicValue(ctx => ({ + id: AIConfigurationContainerWidget.ID, + createWidget: () => ctx.container.get(AIConfigurationContainerWidget) + })) + .inSingletonScope(); + + bindViewContribution(bind, AIAgentConfigurationViewContribution); + + bind(AIVariableConfigurationWidget).toSelf(); + bind(WidgetFactory) + .toDynamicValue(ctx => ({ + id: AIVariableConfigurationWidget.ID, + createWidget: () => ctx.container.get(AIVariableConfigurationWidget) + })) + .inSingletonScope(); + + bind(AIAgentConfigurationWidget).toSelf(); + bind(WidgetFactory) + .toDynamicValue(ctx => ({ + id: AIAgentConfigurationWidget.ID, + createWidget: () => ctx.container.get(AIAgentConfigurationWidget) + })) + .inSingletonScope(); + }); diff --git a/packages/ai-core/src/browser/style/index.css b/packages/ai-ide/src/browser/style/index.css similarity index 100% rename from packages/ai-core/src/browser/style/index.css rename to packages/ai-ide/src/browser/style/index.css diff --git a/packages/ai-ide-agents/src/browser/workspace-functions.ts b/packages/ai-ide/src/browser/workspace-functions.ts similarity index 100% rename from packages/ai-ide-agents/src/browser/workspace-functions.ts rename to packages/ai-ide/src/browser/workspace-functions.ts diff --git a/packages/ai-ide-agents/src/browser/workspace-preferences.ts b/packages/ai-ide/src/browser/workspace-preferences.ts similarity index 100% rename from packages/ai-ide-agents/src/browser/workspace-preferences.ts rename to packages/ai-ide/src/browser/workspace-preferences.ts diff --git a/packages/ai-ide-agents/src/common/architect-prompt-template.ts b/packages/ai-ide/src/common/architect-prompt-template.ts similarity index 100% rename from packages/ai-ide-agents/src/common/architect-prompt-template.ts rename to packages/ai-ide/src/common/architect-prompt-template.ts diff --git a/packages/ai-ide-agents/src/common/coder-replace-prompt-template.ts b/packages/ai-ide/src/common/coder-replace-prompt-template.ts similarity index 100% rename from packages/ai-ide-agents/src/common/coder-replace-prompt-template.ts rename to packages/ai-ide/src/common/coder-replace-prompt-template.ts diff --git a/packages/ai-ide-agents/src/common/command-chat-agents.ts b/packages/ai-ide/src/common/command-chat-agents.ts similarity index 100% rename from packages/ai-ide-agents/src/common/command-chat-agents.ts rename to packages/ai-ide/src/common/command-chat-agents.ts diff --git a/packages/ai-ide-agents/src/common/orchestrator-chat-agent.ts b/packages/ai-ide/src/common/orchestrator-chat-agent.ts similarity index 100% rename from packages/ai-ide-agents/src/common/orchestrator-chat-agent.ts rename to packages/ai-ide/src/common/orchestrator-chat-agent.ts diff --git a/packages/ai-ide-agents/src/common/universal-chat-agent.ts b/packages/ai-ide/src/common/universal-chat-agent.ts similarity index 100% rename from packages/ai-ide-agents/src/common/universal-chat-agent.ts rename to packages/ai-ide/src/common/universal-chat-agent.ts diff --git a/packages/ai-ide-agents/src/common/workspace-functions.ts b/packages/ai-ide/src/common/workspace-functions.ts similarity index 100% rename from packages/ai-ide-agents/src/common/workspace-functions.ts rename to packages/ai-ide/src/common/workspace-functions.ts diff --git a/packages/ai-ide-agents/src/package.spec.ts b/packages/ai-ide/src/package.spec.ts similarity index 100% rename from packages/ai-ide-agents/src/package.spec.ts rename to packages/ai-ide/src/package.spec.ts diff --git a/packages/ai-ide-agents/tsconfig.json b/packages/ai-ide/tsconfig.json similarity index 100% rename from packages/ai-ide-agents/tsconfig.json rename to packages/ai-ide/tsconfig.json