@theia/ai-terminal 1.55.0-next.4 → 1.55.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.
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { Agent, LanguageModelRegistry, LanguageModelRequirement, PromptService } from '@theia/ai-core/lib/common';
|
|
1
|
+
import { Agent, CommunicationRecordingService, LanguageModelRegistry, LanguageModelRequirement, PromptService } from '@theia/ai-core/lib/common';
|
|
2
2
|
import { ILogger } from '@theia/core';
|
|
3
3
|
export declare class AiTerminalAgent implements Agent {
|
|
4
|
+
protected recordingService: CommunicationRecordingService;
|
|
4
5
|
id: string;
|
|
5
6
|
name: string;
|
|
6
7
|
description: string;
|
|
@@ -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,
|
|
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,EAAE,MAAM,aAAa,CAAC;AAUpD,qBACa,eAAgB,YAAW,KAAK;IAEzC,SAAS,CAAC,gBAAgB,EAAE,6BAA6B,CAAC;IAE1D,EAAE,SAAwB;IAC1B,IAAI,SAAwB;IAC5B,WAAW,SAEoI;IAC/I,SAAS,UAAM;IACf,SAAS,UAAM;IACf,sBAAsB;;;;QAKpB;IACF,eAAe;;;;;QA4Db;IACF,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;CAmGvB"}
|
|
@@ -129,6 +129,17 @@ recent-terminal-contents:
|
|
|
129
129
|
this.logger.error('The prompt service didn\'t return prompts for the AI Terminal Agent.');
|
|
130
130
|
return [];
|
|
131
131
|
}
|
|
132
|
+
// since we do not actually hold complete conversions, the request/response pair is considered a session
|
|
133
|
+
const sessionId = (0, core_1.generateUuid)();
|
|
134
|
+
const requestId = (0, core_1.generateUuid)();
|
|
135
|
+
this.recordingService.recordRequest({
|
|
136
|
+
agentId: this.id,
|
|
137
|
+
sessionId,
|
|
138
|
+
timestamp: Date.now(),
|
|
139
|
+
requestId,
|
|
140
|
+
request: systemPrompt,
|
|
141
|
+
messages: [userPrompt],
|
|
142
|
+
});
|
|
132
143
|
try {
|
|
133
144
|
const result = await lm.request({
|
|
134
145
|
messages: [
|
|
@@ -156,11 +167,27 @@ recent-terminal-contents:
|
|
|
156
167
|
// model returned structured output
|
|
157
168
|
const parsedResult = Commands.safeParse(result.parsed);
|
|
158
169
|
if (parsedResult.success) {
|
|
170
|
+
const responseTextfromParsed = JSON.stringify(parsedResult.data.commands);
|
|
171
|
+
this.recordingService.recordResponse({
|
|
172
|
+
agentId: this.id,
|
|
173
|
+
sessionId,
|
|
174
|
+
timestamp: Date.now(),
|
|
175
|
+
requestId,
|
|
176
|
+
response: responseTextfromParsed,
|
|
177
|
+
});
|
|
159
178
|
return parsedResult.data.commands;
|
|
160
179
|
}
|
|
161
180
|
}
|
|
162
181
|
// fall back to agent-based parsing of result
|
|
163
182
|
const jsonResult = await (0, common_1.getJsonOfResponse)(result);
|
|
183
|
+
const responseTextFromJSON = JSON.stringify(jsonResult);
|
|
184
|
+
this.recordingService.recordResponse({
|
|
185
|
+
agentId: this.id,
|
|
186
|
+
sessionId,
|
|
187
|
+
timestamp: Date.now(),
|
|
188
|
+
requestId,
|
|
189
|
+
response: responseTextFromJSON
|
|
190
|
+
});
|
|
164
191
|
const parsedJsonResult = Commands.safeParse(jsonResult);
|
|
165
192
|
if (parsedJsonResult.success) {
|
|
166
193
|
return parsedJsonResult.data.commands;
|
|
@@ -174,6 +201,10 @@ recent-terminal-contents:
|
|
|
174
201
|
}
|
|
175
202
|
};
|
|
176
203
|
exports.AiTerminalAgent = AiTerminalAgent;
|
|
204
|
+
tslib_1.__decorate([
|
|
205
|
+
(0, inversify_1.inject)(common_1.CommunicationRecordingService),
|
|
206
|
+
tslib_1.__metadata("design:type", Object)
|
|
207
|
+
], AiTerminalAgent.prototype, "recordingService", void 0);
|
|
177
208
|
tslib_1.__decorate([
|
|
178
209
|
(0, inversify_1.inject)(common_1.LanguageModelRegistry),
|
|
179
210
|
tslib_1.__metadata("design:type", Object)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-terminal-agent.js","sourceRoot":"","sources":["../../src/browser/ai-terminal-agent.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;;AAEhF,
|
|
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.55.0
|
|
3
|
+
"version": "1.55.0",
|
|
4
4
|
"description": "Theia - AI Terminal Extension",
|
|
5
5
|
"dependencies": {
|
|
6
|
-
"@theia/ai-chat": "1.55.0
|
|
7
|
-
"@theia/ai-core": "1.55.0
|
|
8
|
-
"@theia/core": "1.55.0
|
|
9
|
-
"@theia/terminal": "1.55.0
|
|
6
|
+
"@theia/ai-chat": "1.55.0",
|
|
7
|
+
"@theia/ai-core": "1.55.0",
|
|
8
|
+
"@theia/core": "1.55.0",
|
|
9
|
+
"@theia/terminal": "1.55.0",
|
|
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.
|
|
46
|
+
"@theia/ext-scripts": "1.55.0"
|
|
47
47
|
},
|
|
48
48
|
"nyc": {
|
|
49
49
|
"extends": "../../configs/nyc.json"
|
|
50
50
|
},
|
|
51
|
-
"gitHead": "
|
|
51
|
+
"gitHead": "0e7a523b8e798679d2e098709c63bd7060e54c8a"
|
|
52
52
|
}
|
|
@@ -16,12 +16,13 @@
|
|
|
16
16
|
|
|
17
17
|
import {
|
|
18
18
|
Agent,
|
|
19
|
+
CommunicationRecordingService,
|
|
19
20
|
getJsonOfResponse,
|
|
20
21
|
isLanguageModelParsedResponse,
|
|
21
22
|
LanguageModelRegistry, LanguageModelRequirement,
|
|
22
23
|
PromptService
|
|
23
24
|
} from '@theia/ai-core/lib/common';
|
|
24
|
-
import { ILogger } from '@theia/core';
|
|
25
|
+
import { generateUuid, ILogger } from '@theia/core';
|
|
25
26
|
import { inject, injectable } from '@theia/core/shared/inversify';
|
|
26
27
|
import { z } from 'zod';
|
|
27
28
|
import zodToJsonSchema from 'zod-to-json-schema';
|
|
@@ -33,6 +34,8 @@ type Commands = z.infer<typeof Commands>;
|
|
|
33
34
|
|
|
34
35
|
@injectable()
|
|
35
36
|
export class AiTerminalAgent implements Agent {
|
|
37
|
+
@inject(CommunicationRecordingService)
|
|
38
|
+
protected recordingService: CommunicationRecordingService;
|
|
36
39
|
|
|
37
40
|
id = 'Terminal Assistant';
|
|
38
41
|
name = 'Terminal Assistant';
|
|
@@ -153,6 +156,18 @@ recent-terminal-contents:
|
|
|
153
156
|
return [];
|
|
154
157
|
}
|
|
155
158
|
|
|
159
|
+
// since we do not actually hold complete conversions, the request/response pair is considered a session
|
|
160
|
+
const sessionId = generateUuid();
|
|
161
|
+
const requestId = generateUuid();
|
|
162
|
+
this.recordingService.recordRequest({
|
|
163
|
+
agentId: this.id,
|
|
164
|
+
sessionId,
|
|
165
|
+
timestamp: Date.now(),
|
|
166
|
+
requestId,
|
|
167
|
+
request: systemPrompt,
|
|
168
|
+
messages: [userPrompt],
|
|
169
|
+
});
|
|
170
|
+
|
|
156
171
|
try {
|
|
157
172
|
const result = await lm.request({
|
|
158
173
|
messages: [
|
|
@@ -181,12 +196,28 @@ recent-terminal-contents:
|
|
|
181
196
|
// model returned structured output
|
|
182
197
|
const parsedResult = Commands.safeParse(result.parsed);
|
|
183
198
|
if (parsedResult.success) {
|
|
199
|
+
const responseTextfromParsed = JSON.stringify(parsedResult.data.commands);
|
|
200
|
+
this.recordingService.recordResponse({
|
|
201
|
+
agentId: this.id,
|
|
202
|
+
sessionId,
|
|
203
|
+
timestamp: Date.now(),
|
|
204
|
+
requestId,
|
|
205
|
+
response: responseTextfromParsed,
|
|
206
|
+
});
|
|
184
207
|
return parsedResult.data.commands;
|
|
185
208
|
}
|
|
186
209
|
}
|
|
187
210
|
|
|
188
211
|
// fall back to agent-based parsing of result
|
|
189
212
|
const jsonResult = await getJsonOfResponse(result);
|
|
213
|
+
const responseTextFromJSON = JSON.stringify(jsonResult);
|
|
214
|
+
this.recordingService.recordResponse({
|
|
215
|
+
agentId: this.id,
|
|
216
|
+
sessionId,
|
|
217
|
+
timestamp: Date.now(),
|
|
218
|
+
requestId,
|
|
219
|
+
response: responseTextFromJSON
|
|
220
|
+
});
|
|
190
221
|
const parsedJsonResult = Commands.safeParse(jsonResult);
|
|
191
222
|
if (parsedJsonResult.success) {
|
|
192
223
|
return parsedJsonResult.data.commands;
|