@theia/ai-terminal 1.60.0-next.47 → 1.60.1

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.
@@ -1,4 +1,5 @@
1
1
  import { Agent, CommunicationRecordingService, LanguageModelRegistry, LanguageModelRequirement, PromptService } from '@theia/ai-core/lib/common';
2
+ import { LanguageModelService } from '@theia/ai-core/lib/browser';
2
3
  import { ILogger } from '@theia/core';
3
4
  export declare class AiTerminalAgent implements Agent {
4
5
  protected recordingService: CommunicationRecordingService;
@@ -22,6 +23,7 @@ export declare class AiTerminalAgent implements Agent {
22
23
  protected languageModelRegistry: LanguageModelRegistry;
23
24
  protected promptService: PromptService;
24
25
  protected logger: ILogger;
26
+ protected languageModelService: LanguageModelService;
25
27
  getCommands(userRequest: string, cwd: string, shell: string, recentTerminalContents: string[]): Promise<string[]>;
26
28
  }
27
29
  //# sourceMappingURL=ai-terminal-agent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ai-terminal-agent.d.ts","sourceRoot":"","sources":["../../src/browser/ai-terminal-agent.ts"],"names":[],"mappings":"AAgBA,OAAO,EACH,KAAK,EACL,6BAA6B,EAG7B,qBAAqB,EAAE,wBAAwB,EAC/C,aAAa,EAChB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAgB,OAAO,EAAO,MAAM,aAAa,CAAC;AAWzD,qBACa,eAAgB,YAAW,KAAK;IAEzC,SAAS,CAAC,gBAAgB,EAAE,6BAA6B,CAAC;IAE1D,EAAE,SAAwB;IAC1B,IAAI,SAAwB;IAC5B,WAAW,SAEqI;IAChJ,SAAS,UAAM;IACf,SAAS,UAAM;IACf,sBAAsB;;;;QAKpB;IACF,eAAe;;;;;QAA2B;IAC1C,yBAAyB,EAAE,wBAAwB,EAAE,CAKnD;IAGF,SAAS,CAAC,qBAAqB,EAAE,qBAAqB,CAAC;IAGvD,SAAS,CAAC,aAAa,EAAE,aAAa,CAAC;IAGvC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC;IAEpB,WAAW,CACb,WAAW,EAAE,MAAM,EACnB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,sBAAsB,EAAE,MAAM,EAAE,GACjC,OAAO,CAAC,MAAM,EAAE,CAAC;CAsFvB"}
1
+ {"version":3,"file":"ai-terminal-agent.d.ts","sourceRoot":"","sources":["../../src/browser/ai-terminal-agent.ts"],"names":[],"mappings":"AAgBA,OAAO,EACH,KAAK,EACL,6BAA6B,EAG7B,qBAAqB,EACrB,wBAAwB,EACxB,aAAa,EAEhB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAgB,OAAO,EAAO,MAAM,aAAa,CAAC;AAWzD,qBACa,eAAgB,YAAW,KAAK;IAEzC,SAAS,CAAC,gBAAgB,EAAE,6BAA6B,CAAC;IAE1D,EAAE,SAAwB;IAC1B,IAAI,SAAwB;IAC5B,WAAW,SAEqI;IAChJ,SAAS,UAAM;IACf,SAAS,UAAM;IACf,sBAAsB;;;;QAKpB;IACF,eAAe;;;;;QAA2B;IAC1C,yBAAyB,EAAE,wBAAwB,EAAE,CAKnD;IAGF,SAAS,CAAC,qBAAqB,EAAE,qBAAqB,CAAC;IAGvD,SAAS,CAAC,aAAa,EAAE,aAAa,CAAC;IAGvC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC;IAG1B,SAAS,CAAC,oBAAoB,EAAE,oBAAoB,CAAC;IAE/C,WAAW,CACb,WAAW,EAAE,MAAM,EACnB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,sBAAsB,EAAE,MAAM,EAAE,GACjC,OAAO,CAAC,MAAM,EAAE,CAAC;CAyFvB"}
@@ -18,6 +18,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
18
18
  exports.AiTerminalAgent = void 0;
19
19
  const tslib_1 = require("tslib");
20
20
  const common_1 = require("@theia/ai-core/lib/common");
21
+ const browser_1 = require("@theia/ai-core/lib/browser");
21
22
  const core_1 = require("@theia/core");
22
23
  const ai_terminal_prompt_template_1 = require("./ai-terminal-prompt-template");
23
24
  const inversify_1 = require("@theia/core/shared/inversify");
@@ -73,49 +74,51 @@ let AiTerminalAgent = class AiTerminalAgent {
73
74
  // since we do not actually hold complete conversions, the request/response pair is considered a session
74
75
  const sessionId = (0, core_1.generateUuid)();
75
76
  const requestId = (0, core_1.generateUuid)();
77
+ const llmRequest = {
78
+ messages: [
79
+ {
80
+ actor: 'ai',
81
+ type: 'text',
82
+ text: systemMessage
83
+ },
84
+ {
85
+ actor: 'user',
86
+ type: 'text',
87
+ text: request
88
+ }
89
+ ],
90
+ response_format: {
91
+ type: 'json_schema',
92
+ json_schema: {
93
+ name: 'terminal-commands',
94
+ description: 'Suggested terminal commands based on the user request',
95
+ schema: (0, zod_to_json_schema_1.default)(Commands)
96
+ }
97
+ },
98
+ agentId: this.id,
99
+ requestId,
100
+ sessionId
101
+ };
76
102
  this.recordingService.recordRequest({
77
103
  agentId: this.id,
78
104
  sessionId,
79
105
  requestId,
80
- request,
81
- systemMessage
106
+ request: llmRequest.messages
82
107
  });
83
108
  try {
84
- const result = await lm.request({
85
- messages: [
86
- {
87
- actor: 'ai',
88
- type: 'text',
89
- query: systemMessage
90
- },
91
- {
92
- actor: 'user',
93
- type: 'text',
94
- query: request
95
- }
96
- ],
97
- response_format: {
98
- type: 'json_schema',
99
- json_schema: {
100
- name: 'terminal-commands',
101
- description: 'Suggested terminal commands based on the user request',
102
- schema: (0, zod_to_json_schema_1.default)(Commands)
103
- }
104
- }
105
- });
109
+ const result = await this.languageModelService.sendRequest(lm, llmRequest);
106
110
  if ((0, common_1.isLanguageModelParsedResponse)(result)) {
107
111
  // model returned structured output
108
112
  const parsedResult = Commands.safeParse(result.parsed);
109
113
  if (parsedResult.success) {
110
- const response = JSON.stringify(parsedResult.data.commands);
111
- this.recordingService.recordResponse({ agentId: this.id, sessionId, requestId, response, systemMessage });
114
+ this.recordingService.recordResponse({ agentId: this.id, sessionId, requestId, response: [{ actor: 'ai', text: result.content, type: 'text' }] });
112
115
  return parsedResult.data.commands;
113
116
  }
114
117
  }
115
118
  // fall back to agent-based parsing of result
116
119
  const jsonResult = await (0, common_1.getJsonOfResponse)(result);
117
120
  const responseTextFromJSON = JSON.stringify(jsonResult);
118
- this.recordingService.recordResponse({ agentId: this.id, sessionId, requestId, response: responseTextFromJSON });
121
+ this.recordingService.recordResponse({ agentId: this.id, sessionId, requestId, response: [{ actor: 'ai', text: responseTextFromJSON, type: 'text' }] });
119
122
  const parsedJsonResult = Commands.safeParse(jsonResult);
120
123
  if (parsedJsonResult.success) {
121
124
  return parsedJsonResult.data.commands;
@@ -145,6 +148,10 @@ tslib_1.__decorate([
145
148
  (0, inversify_1.inject)(core_1.ILogger),
146
149
  tslib_1.__metadata("design:type", Object)
147
150
  ], AiTerminalAgent.prototype, "logger", void 0);
151
+ tslib_1.__decorate([
152
+ (0, inversify_1.inject)(browser_1.LanguageModelService),
153
+ tslib_1.__metadata("design:type", Object)
154
+ ], AiTerminalAgent.prototype, "languageModelService", void 0);
148
155
  exports.AiTerminalAgent = AiTerminalAgent = tslib_1.__decorate([
149
156
  (0, inversify_1.injectable)()
150
157
  ], AiTerminalAgent);
@@ -1 +1 @@
1
- {"version":3,"file":"ai-terminal-agent.js","sourceRoot":"","sources":["../../src/browser/ai-terminal-agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ai-terminal-agent.js","sourceRoot":"","sources":["../../src/browser/ai-terminal-agent.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@theia/ai-terminal",
3
- "version": "1.60.0-next.47+9332521b9",
3
+ "version": "1.60.1",
4
4
  "description": "Theia - AI Terminal Extension",
5
5
  "dependencies": {
6
- "@theia/ai-chat": "1.60.0-next.47+9332521b9",
7
- "@theia/ai-core": "1.60.0-next.47+9332521b9",
8
- "@theia/core": "1.60.0-next.47+9332521b9",
9
- "@theia/terminal": "1.60.0-next.47+9332521b9",
6
+ "@theia/ai-chat": "1.60.1",
7
+ "@theia/ai-core": "1.60.1",
8
+ "@theia/core": "1.60.1",
9
+ "@theia/terminal": "1.60.1",
10
10
  "zod": "^3.23.8",
11
11
  "zod-to-json-schema": "^3.23.2"
12
12
  },
@@ -43,10 +43,10 @@
43
43
  "watch": "theiaext watch"
44
44
  },
45
45
  "devDependencies": {
46
- "@theia/ext-scripts": "1.59.0"
46
+ "@theia/ext-scripts": "1.60.1"
47
47
  },
48
48
  "nyc": {
49
49
  "extends": "../../configs/nyc.json"
50
50
  },
51
- "gitHead": "9332521b9aa74bf534d45968905d37e30a13c3b5"
51
+ "gitHead": "23230a4ff18bb6b4c09e08c1a40ae1ebdb20ff69"
52
52
  }
@@ -19,9 +19,12 @@ import {
19
19
  CommunicationRecordingService,
20
20
  getJsonOfResponse,
21
21
  isLanguageModelParsedResponse,
22
- LanguageModelRegistry, LanguageModelRequirement,
23
- PromptService
22
+ LanguageModelRegistry,
23
+ LanguageModelRequirement,
24
+ PromptService,
25
+ UserRequest
24
26
  } from '@theia/ai-core/lib/common';
27
+ import { LanguageModelService } from '@theia/ai-core/lib/browser';
25
28
  import { generateUuid, ILogger, nls } from '@theia/core';
26
29
  import { terminalPromptTemplates } from './ai-terminal-prompt-template';
27
30
  import { inject, injectable } from '@theia/core/shared/inversify';
@@ -68,6 +71,9 @@ export class AiTerminalAgent implements Agent {
68
71
  @inject(ILogger)
69
72
  protected logger: ILogger;
70
73
 
74
+ @inject(LanguageModelService)
75
+ protected languageModelService: LanguageModelService;
76
+
71
77
  async getCommands(
72
78
  userRequest: string,
73
79
  cwd: string,
@@ -100,44 +106,47 @@ export class AiTerminalAgent implements Agent {
100
106
  // since we do not actually hold complete conversions, the request/response pair is considered a session
101
107
  const sessionId = generateUuid();
102
108
  const requestId = generateUuid();
109
+ const llmRequest: UserRequest = {
110
+ messages: [
111
+ {
112
+ actor: 'ai',
113
+ type: 'text',
114
+ text: systemMessage
115
+ },
116
+ {
117
+ actor: 'user',
118
+ type: 'text',
119
+ text: request
120
+ }
121
+ ],
122
+ response_format: {
123
+ type: 'json_schema',
124
+ json_schema: {
125
+ name: 'terminal-commands',
126
+ description: 'Suggested terminal commands based on the user request',
127
+ schema: zodToJsonSchema(Commands)
128
+ }
129
+ },
130
+ agentId: this.id,
131
+ requestId,
132
+ sessionId
133
+ };
134
+
103
135
  this.recordingService.recordRequest({
104
136
  agentId: this.id,
105
137
  sessionId,
106
138
  requestId,
107
- request,
108
- systemMessage
139
+ request: llmRequest.messages
109
140
  });
110
141
 
111
142
  try {
112
- const result = await lm.request({
113
- messages: [
114
- {
115
- actor: 'ai',
116
- type: 'text',
117
- query: systemMessage
118
- },
119
- {
120
- actor: 'user',
121
- type: 'text',
122
- query: request
123
- }
124
- ],
125
- response_format: {
126
- type: 'json_schema',
127
- json_schema: {
128
- name: 'terminal-commands',
129
- description: 'Suggested terminal commands based on the user request',
130
- schema: zodToJsonSchema(Commands)
131
- }
132
- }
133
- });
143
+ const result = await this.languageModelService.sendRequest(lm, llmRequest);
134
144
 
135
145
  if (isLanguageModelParsedResponse(result)) {
136
146
  // model returned structured output
137
147
  const parsedResult = Commands.safeParse(result.parsed);
138
148
  if (parsedResult.success) {
139
- const response = JSON.stringify(parsedResult.data.commands);
140
- this.recordingService.recordResponse({ agentId: this.id, sessionId, requestId, response, systemMessage });
149
+ this.recordingService.recordResponse({ agentId: this.id, sessionId, requestId, response: [{ actor: 'ai', text: result.content, type: 'text' }] });
141
150
  return parsedResult.data.commands;
142
151
  }
143
152
  }
@@ -145,7 +154,7 @@ export class AiTerminalAgent implements Agent {
145
154
  // fall back to agent-based parsing of result
146
155
  const jsonResult = await getJsonOfResponse(result);
147
156
  const responseTextFromJSON = JSON.stringify(jsonResult);
148
- this.recordingService.recordResponse({ agentId: this.id, sessionId, requestId, response: responseTextFromJSON });
157
+ this.recordingService.recordResponse({ agentId: this.id, sessionId, requestId, response: [{ actor: 'ai', text: responseTextFromJSON, type: 'text' }] });
149
158
  const parsedJsonResult = Commands.safeParse(jsonResult);
150
159
  if (parsedJsonResult.success) {
151
160
  return parsedJsonResult.data.commands;