@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,
|
|
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
|
|
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
|
-
|
|
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":";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.60.
|
|
3
|
+
"version": "1.60.1",
|
|
4
4
|
"description": "Theia - AI Terminal Extension",
|
|
5
5
|
"dependencies": {
|
|
6
|
-
"@theia/ai-chat": "1.60.
|
|
7
|
-
"@theia/ai-core": "1.60.
|
|
8
|
-
"@theia/core": "1.60.
|
|
9
|
-
"@theia/terminal": "1.60.
|
|
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.
|
|
46
|
+
"@theia/ext-scripts": "1.60.1"
|
|
47
47
|
},
|
|
48
48
|
"nyc": {
|
|
49
49
|
"extends": "../../configs/nyc.json"
|
|
50
50
|
},
|
|
51
|
-
"gitHead": "
|
|
51
|
+
"gitHead": "23230a4ff18bb6b4c09e08c1a40ae1ebdb20ff69"
|
|
52
52
|
}
|
|
@@ -19,9 +19,12 @@ import {
|
|
|
19
19
|
CommunicationRecordingService,
|
|
20
20
|
getJsonOfResponse,
|
|
21
21
|
isLanguageModelParsedResponse,
|
|
22
|
-
LanguageModelRegistry,
|
|
23
|
-
|
|
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
|
|
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
|
-
|
|
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;
|