Skip to content

Commit

Permalink
chore: introduce ai-ide package and move ai configuration view (#14948)
Browse files Browse the repository at this point in the history
- Renames package ai-ide-agents to ai-ide
- Moves AI configuration view to the new ai-ide package

fixes #14921
  • Loading branch information
eneufeld authored Feb 19, 2025
1 parent 3435376 commit 4ffb744
Show file tree
Hide file tree
Showing 34 changed files with 87 additions and 63 deletions.
2 changes: 1 addition & 1 deletion examples/browser/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down
2 changes: 1 addition & 1 deletion examples/browser/tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
"path": "../../packages/ai-hugging-face"
},
{
"path": "../../packages/ai-ide-agents"
"path": "../../packages/ai-ide"
},
{
"path": "../../packages/ai-llamafile"
Expand Down
2 changes: 1 addition & 1 deletion examples/electron/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down
2 changes: 1 addition & 1 deletion examples/electron/tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
"path": "../../packages/ai-hugging-face"
},
{
"path": "../../packages/ai-ide-agents"
"path": "../../packages/ai-ide"
},
{
"path": "../../packages/ai-llamafile"
Expand Down
36 changes: 30 additions & 6 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

34 changes: 2 additions & 32 deletions packages/ai-core/src/browser/ai-core-frontend-module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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';
Expand Down Expand Up @@ -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();
Expand All @@ -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);

Expand Down
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand All @@ -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)
Expand Down
Original file line number Diff line number Diff line change
@@ -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",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand All @@ -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 {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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({
Expand Down Expand Up @@ -51,4 +51,3 @@ export class AIAgentConfigurationViewContribution extends AIViewContribution<AIC
});
}
}

Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,7 @@
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
// *****************************************************************************
import * as React from '@theia/core/shared/react';
import { Agent, LanguageModelRequirement } from '../../common';
import { LanguageModel, LanguageModelRegistry } from '../../common/language-model';
import { AISettingsService } from '../../common/settings-service';
import { Agent, AISettingsService, LanguageModel, LanguageModelRegistry, LanguageModelRequirement } from '@theia/ai-core/lib/common';
import { Mutable } from '@theia/core';
import { nls } from '@theia/core/lib/common/nls';

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,8 @@
//
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
// *****************************************************************************
import { AISettingsService, PromptCustomizationService, PromptService, PromptTemplate } from '@theia/ai-core/lib/common';
import * as React from '@theia/core/shared/react';
import { PromptCustomizationService, PromptService } from '../../common/prompt-service';
import { AISettingsService, PromptTemplate } from '../../common';
import { nls } from '@theia/core/lib/common/nls';

const DEFAULT_VARIANT = 'default';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,12 @@
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
// *****************************************************************************

import { Agent, AgentService, AIVariable, AIVariableService } 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 { Agent, AIVariable, AIVariableService } from '../../common';
import { AIAgentConfigurationWidget } from './agent-configuration-widget';
import { AIConfigurationSelectionService } from './ai-configuration-service';
import { AgentService } from '../../common/agent-service';

@injectable()
export class AIVariableConfigurationWidget extends ReactWidget {
Expand Down Expand Up @@ -107,4 +106,3 @@ export class AIVariableConfigurationWidget extends ReactWidget {
return this.agentService.getAgents().filter(a => a.variables?.includes(variable.id));
}
}

File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand All @@ -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 });
Expand Down Expand Up @@ -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();

});
File renamed without changes.
File renamed without changes.
File renamed without changes.

0 comments on commit 4ffb744

Please sign in to comment.