@theia/ai-external-api 1.76.0-next.33

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.
Files changed (72) hide show
  1. package/README.md +83 -0
  2. package/lib/browser/ai-external-api-frontend-contribution.d.ts +28 -0
  3. package/lib/browser/ai-external-api-frontend-contribution.d.ts.map +1 -0
  4. package/lib/browser/ai-external-api-frontend-contribution.js +88 -0
  5. package/lib/browser/ai-external-api-frontend-contribution.js.map +1 -0
  6. package/lib/browser/ai-external-api-frontend-contribution.spec.d.ts +2 -0
  7. package/lib/browser/ai-external-api-frontend-contribution.spec.d.ts.map +1 -0
  8. package/lib/browser/ai-external-api-frontend-contribution.spec.js +102 -0
  9. package/lib/browser/ai-external-api-frontend-contribution.spec.js.map +1 -0
  10. package/lib/browser/ai-external-api-frontend-module.d.ts +4 -0
  11. package/lib/browser/ai-external-api-frontend-module.d.ts.map +1 -0
  12. package/lib/browser/ai-external-api-frontend-module.js +47 -0
  13. package/lib/browser/ai-external-api-frontend-module.js.map +1 -0
  14. package/lib/browser/frontend-external-chat-session-provider.d.ts +63 -0
  15. package/lib/browser/frontend-external-chat-session-provider.d.ts.map +1 -0
  16. package/lib/browser/frontend-external-chat-session-provider.js +271 -0
  17. package/lib/browser/frontend-external-chat-session-provider.js.map +1 -0
  18. package/lib/browser/frontend-external-chat-session-provider.spec.d.ts +2 -0
  19. package/lib/browser/frontend-external-chat-session-provider.spec.d.ts.map +1 -0
  20. package/lib/browser/frontend-external-chat-session-provider.spec.js +421 -0
  21. package/lib/browser/frontend-external-chat-session-provider.spec.js.map +1 -0
  22. package/lib/browser/index.d.ts +3 -0
  23. package/lib/browser/index.d.ts.map +1 -0
  24. package/lib/browser/index.js +21 -0
  25. package/lib/browser/index.js.map +1 -0
  26. package/lib/common/external-chat-session-provider.d.ts +213 -0
  27. package/lib/common/external-chat-session-provider.d.ts.map +1 -0
  28. package/lib/common/external-chat-session-provider.js +147 -0
  29. package/lib/common/external-chat-session-provider.js.map +1 -0
  30. package/lib/common/index.d.ts +2 -0
  31. package/lib/common/index.d.ts.map +1 -0
  32. package/lib/common/index.js +20 -0
  33. package/lib/common/index.js.map +1 -0
  34. package/lib/node/ai-external-api-backend-module.d.ts +4 -0
  35. package/lib/node/ai-external-api-backend-module.d.ts.map +1 -0
  36. package/lib/node/ai-external-api-backend-module.js +38 -0
  37. package/lib/node/ai-external-api-backend-module.js.map +1 -0
  38. package/lib/node/ai-external-api-endpoint.d.ts +31 -0
  39. package/lib/node/ai-external-api-endpoint.d.ts.map +1 -0
  40. package/lib/node/ai-external-api-endpoint.js +189 -0
  41. package/lib/node/ai-external-api-endpoint.js.map +1 -0
  42. package/lib/node/ai-external-api-endpoint.spec.d.ts +2 -0
  43. package/lib/node/ai-external-api-endpoint.spec.d.ts.map +1 -0
  44. package/lib/node/ai-external-api-endpoint.spec.js +233 -0
  45. package/lib/node/ai-external-api-endpoint.spec.js.map +1 -0
  46. package/lib/node/external-chat-session-registry.d.ts +83 -0
  47. package/lib/node/external-chat-session-registry.d.ts.map +1 -0
  48. package/lib/node/external-chat-session-registry.js +266 -0
  49. package/lib/node/external-chat-session-registry.js.map +1 -0
  50. package/lib/node/external-chat-session-registry.spec.d.ts +2 -0
  51. package/lib/node/external-chat-session-registry.spec.d.ts.map +1 -0
  52. package/lib/node/external-chat-session-registry.spec.js +366 -0
  53. package/lib/node/external-chat-session-registry.spec.js.map +1 -0
  54. package/lib/node/index.d.ts +3 -0
  55. package/lib/node/index.d.ts.map +1 -0
  56. package/lib/node/index.js +21 -0
  57. package/lib/node/index.js.map +1 -0
  58. package/package.json +52 -0
  59. package/src/browser/ai-external-api-frontend-contribution.spec.ts +128 -0
  60. package/src/browser/ai-external-api-frontend-contribution.ts +90 -0
  61. package/src/browser/ai-external-api-frontend-module.ts +48 -0
  62. package/src/browser/frontend-external-chat-session-provider.spec.ts +491 -0
  63. package/src/browser/frontend-external-chat-session-provider.ts +277 -0
  64. package/src/browser/index.ts +18 -0
  65. package/src/common/external-chat-session-provider.ts +330 -0
  66. package/src/common/index.ts +17 -0
  67. package/src/node/ai-external-api-backend-module.ts +41 -0
  68. package/src/node/ai-external-api-endpoint.spec.ts +272 -0
  69. package/src/node/ai-external-api-endpoint.ts +195 -0
  70. package/src/node/external-chat-session-registry.spec.ts +413 -0
  71. package/src/node/external-chat-session-registry.ts +270 -0
  72. package/src/node/index.ts +18 -0
@@ -0,0 +1,271 @@
1
+ "use strict";
2
+ // *****************************************************************************
3
+ // Copyright (C) 2026 EclipseSource GmbH.
4
+ //
5
+ // This program and the accompanying materials are made available under the
6
+ // terms of the Eclipse Public License v. 2.0 which is available at
7
+ // http://www.eclipse.org/legal/epl-2.0.
8
+ //
9
+ // This Source Code may also be made available under the following Secondary
10
+ // Licenses when the conditions for such availability set forth in the Eclipse
11
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
12
+ // with the GNU Classpath Exception which is available at
13
+ // https://www.gnu.org/software/classpath/license.html.
14
+ //
15
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
16
+ // *****************************************************************************
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.FrontendExternalChatSessionProvider = void 0;
19
+ const tslib_1 = require("tslib");
20
+ const ai_chat_preferences_1 = require("@theia/ai-chat/lib/common/ai-chat-preferences");
21
+ const chat_agent_service_1 = require("@theia/ai-chat/lib/common/chat-agent-service");
22
+ const chat_agents_1 = require("@theia/ai-chat/lib/common/chat-agents");
23
+ const chat_model_1 = require("@theia/ai-chat/lib/common/chat-model");
24
+ const chat_service_1 = require("@theia/ai-chat/lib/common/chat-service");
25
+ const core_1 = require("@theia/core");
26
+ const logger_1 = require("@theia/core/lib/common/logger");
27
+ const inversify_1 = require("@theia/core/shared/inversify");
28
+ const browser_1 = require("@theia/workspace/lib/browser");
29
+ /**
30
+ * Answers the backend's external session queries from this frontend's {@link ChatService}.
31
+ *
32
+ * Reports sessions that are restored (live) in this frontend with their full state, and
33
+ * persisted sessions that have not been restored with their persisted metadata. Live sessions
34
+ * are attributed to the workspace this frontend has opened; persisted sessions only when
35
+ * sessions are persisted per workspace, as the global session store holds sessions saved
36
+ * from any workspace.
37
+ */
38
+ let FrontendExternalChatSessionProvider = class FrontendExternalChatSessionProvider {
39
+ constructor() {
40
+ /** Number of trailing conversation lines included in a summary's preview. */
41
+ this.previewLineCount = 5;
42
+ /** Maximum length of a single preview line; longer lines are truncated. */
43
+ this.previewLineLength = 200;
44
+ }
45
+ async getSessions() {
46
+ const workspace = await this.getWorkspaceUri();
47
+ const persistedWorkspace = await this.getPersistedSessionsWorkspace(workspace);
48
+ const restored = this.chatService.getSessions().map(session => this.toSummary(session, workspace));
49
+ const restoredIds = new Set(restored.map(summary => summary.id));
50
+ const persisted = (await this.getPersistedMetadata())
51
+ .filter(metadata => !restoredIds.has(metadata.sessionId))
52
+ .map(metadata => this.toPersistedSummary(metadata, persistedWorkspace));
53
+ return [...restored, ...persisted];
54
+ }
55
+ async getSessionSummary(sessionId) {
56
+ const workspace = await this.getWorkspaceUri();
57
+ const live = this.chatService.getSession(sessionId);
58
+ if (live) {
59
+ return this.toSummary(live, workspace);
60
+ }
61
+ const metadata = (await this.getPersistedMetadata()).find(candidate => candidate.sessionId === sessionId);
62
+ return metadata && this.toPersistedSummary(metadata, await this.getPersistedSessionsWorkspace(workspace));
63
+ }
64
+ async getSession(sessionId) {
65
+ const workspace = await this.getWorkspaceUri();
66
+ const live = this.chatService.getSession(sessionId);
67
+ if (live) {
68
+ return this.toDetail(live, workspace);
69
+ }
70
+ const metadata = (await this.getPersistedMetadata()).find(candidate => candidate.sessionId === sessionId);
71
+ return metadata && this.toPersistedSummary(metadata, await this.getPersistedSessionsWorkspace(workspace));
72
+ }
73
+ async openSession(sessionId) {
74
+ const session = await this.chatService.getOrRestoreSession(sessionId);
75
+ if (!session) {
76
+ return false;
77
+ }
78
+ this.chatService.setActiveSession(sessionId, { focus: true });
79
+ return true;
80
+ }
81
+ async restoreSession(sessionId) {
82
+ const session = await this.chatService.getOrRestoreSession(sessionId);
83
+ if (!session) {
84
+ return undefined;
85
+ }
86
+ return this.toDetail(session, await this.getWorkspaceUri());
87
+ }
88
+ async sendPrompt(sessionId, prompt) {
89
+ const session = await this.chatService.getOrRestoreSession(sessionId);
90
+ if (!session) {
91
+ return undefined;
92
+ }
93
+ if (!prompt.interrupt && chat_model_1.ChatSessionStatus.isInProgress(session.model.status)) {
94
+ return { failure: 'busy' };
95
+ }
96
+ // an in-progress request is canceled by sendRequest itself when interrupting
97
+ const invocation = await this.chatService.sendRequest(sessionId, { text: prompt.text });
98
+ if (!invocation) {
99
+ return undefined;
100
+ }
101
+ try {
102
+ return { sent: { sessionId, requestId: (await invocation.requestCompleted).id } };
103
+ }
104
+ catch (error) {
105
+ if (chat_service_1.NoChatAgentError.is(error)) {
106
+ return { failure: 'noAgent' };
107
+ }
108
+ // unexpected failure: propagate to the backend, which logs it and falls back to another frontend
109
+ throw error;
110
+ }
111
+ }
112
+ async createSession(request) {
113
+ let agent;
114
+ if (request.agentId) {
115
+ agent = this.agentService.getAgent(request.agentId, true);
116
+ if (!agent) {
117
+ return { failure: 'unknownAgent' };
118
+ }
119
+ }
120
+ const session = this.chatService.createSession(chat_agents_1.ChatAgentLocation.Panel, { focus: request.focus }, agent);
121
+ let requestId;
122
+ if (request.prompt) {
123
+ const invocation = await this.chatService.sendRequest(session.id, { text: request.prompt });
124
+ try {
125
+ requestId = invocation && (await invocation.requestCompleted).id;
126
+ }
127
+ catch (error) {
128
+ // do not keep the unusable session when its initial prompt failed
129
+ await this.chatService.deleteSession(session.id);
130
+ if (chat_service_1.NoChatAgentError.is(error)) {
131
+ return { failure: 'noAgent' };
132
+ }
133
+ // unexpected failure: propagate to the backend, which logs it and falls back to another frontend
134
+ throw error;
135
+ }
136
+ }
137
+ const created = this.chatService.getSession(session.id) ?? session;
138
+ return { created: { session: this.toSummary(created, await this.getWorkspaceUri()), requestId } };
139
+ }
140
+ async getWorkspace() {
141
+ return this.getWorkspaceUri();
142
+ }
143
+ async getWorkspaceUri() {
144
+ await this.workspaceService.ready;
145
+ return this.workspaceService.workspace?.resource.toString();
146
+ }
147
+ /**
148
+ * Returns the workspace to attribute persisted sessions to: this frontend's workspace when
149
+ * sessions are persisted per workspace, and `undefined` when they are persisted globally,
150
+ * as the global session store holds sessions saved from any workspace.
151
+ */
152
+ async getPersistedSessionsWorkspace(workspace) {
153
+ await this.preferenceService.ready;
154
+ const scope = this.preferenceService.get(ai_chat_preferences_1.SESSION_STORAGE_PREF, 'workspace');
155
+ return scope === 'workspace' ? workspace : undefined;
156
+ }
157
+ /** Returns the metadata of all persisted sessions, or an empty list if reading the persisted index fails. */
158
+ async getPersistedMetadata() {
159
+ try {
160
+ return Object.values(await this.chatService.getPersistedSessions());
161
+ }
162
+ catch (error) {
163
+ this.logger.warn('Failed to read the persisted chat sessions, reporting only restored sessions.', error);
164
+ return [];
165
+ }
166
+ }
167
+ toDetail(session, workspace) {
168
+ return {
169
+ ...this.toSummary(session, workspace),
170
+ messages: this.toMessages(session)
171
+ };
172
+ }
173
+ toSummary(session, workspace) {
174
+ return {
175
+ id: session.id,
176
+ title: session.title,
177
+ status: session.model.status,
178
+ lastInteraction: session.lastInteraction?.getTime(),
179
+ workspace,
180
+ preview: this.toPreview(session),
181
+ agentId: session.pinnedAgent?.id,
182
+ agentName: session.pinnedAgent?.name,
183
+ parentSessionId: session.parentSessionId,
184
+ rootSessionId: session.rootSessionId,
185
+ restored: true
186
+ };
187
+ }
188
+ /** Reduces the metadata of a persisted session that is not restored to a summary. */
189
+ toPersistedSummary(metadata, workspace) {
190
+ return {
191
+ id: metadata.sessionId,
192
+ title: metadata.title || undefined,
193
+ status: metadata.hasError ? 'failed' : 'idle',
194
+ lastInteraction: metadata.saveDate,
195
+ workspace,
196
+ agentId: metadata.pinnedAgentId,
197
+ agentName: metadata.pinnedAgentId ? this.agentService.getAgent(metadata.pinnedAgentId, true)?.name : undefined,
198
+ parentSessionId: metadata.parentSessionId,
199
+ rootSessionId: metadata.rootSessionId,
200
+ restored: false
201
+ };
202
+ }
203
+ /**
204
+ * Reduces the session's conversation to plain-text messages, similar to the message history
205
+ * sent to the language model for the next request. In-progress responses are included with
206
+ * their content so far.
207
+ */
208
+ toMessages(session) {
209
+ const messages = [];
210
+ for (const request of session.model.getRequests()) {
211
+ if (request.request.text) {
212
+ messages.push({ actor: 'user', text: request.request.text });
213
+ }
214
+ const response = request.response.response.asDisplayString();
215
+ if (response) {
216
+ messages.push({ actor: 'ai', text: response });
217
+ }
218
+ }
219
+ return messages;
220
+ }
221
+ /**
222
+ * Returns the last few non-empty lines of the conversation, or `undefined` for an empty
223
+ * conversation. Walks the conversation from the end so that only as many entries as the
224
+ * preview needs are rendered, however long the conversation is.
225
+ */
226
+ toPreview(session) {
227
+ const lines = [];
228
+ const requests = session.model.getRequests();
229
+ for (let index = requests.length - 1; index >= 0 && lines.length < this.previewLineCount; index--) {
230
+ const request = requests[index];
231
+ const entries = [request.request.text, request.response.response.asDisplayString()];
232
+ for (let entry = entries.length - 1; entry >= 0 && lines.length < this.previewLineCount; entry--) {
233
+ lines.push(...this.toPreviewLines(entries[entry]).slice(-(this.previewLineCount - lines.length)).reverse());
234
+ }
235
+ }
236
+ return lines.length > 0 ? lines.reverse().join('\n') : undefined;
237
+ }
238
+ /** Splits an entry into its non-empty, truncated preview lines. */
239
+ toPreviewLines(text) {
240
+ return (text ?? '').split('\n')
241
+ .map(line => line.trim())
242
+ .filter(line => line.length > 0)
243
+ .map(line => line.length > this.previewLineLength ? `${line.substring(0, this.previewLineLength)}…` : line);
244
+ }
245
+ };
246
+ exports.FrontendExternalChatSessionProvider = FrontendExternalChatSessionProvider;
247
+ tslib_1.__decorate([
248
+ (0, inversify_1.inject)(logger_1.ILogger),
249
+ (0, inversify_1.named)('ai-external-api:FrontendExternalChatSessionProvider'),
250
+ tslib_1.__metadata("design:type", Object)
251
+ ], FrontendExternalChatSessionProvider.prototype, "logger", void 0);
252
+ tslib_1.__decorate([
253
+ (0, inversify_1.inject)(chat_service_1.ChatService),
254
+ tslib_1.__metadata("design:type", Object)
255
+ ], FrontendExternalChatSessionProvider.prototype, "chatService", void 0);
256
+ tslib_1.__decorate([
257
+ (0, inversify_1.inject)(chat_agent_service_1.ChatAgentService),
258
+ tslib_1.__metadata("design:type", Object)
259
+ ], FrontendExternalChatSessionProvider.prototype, "agentService", void 0);
260
+ tslib_1.__decorate([
261
+ (0, inversify_1.inject)(browser_1.WorkspaceService),
262
+ tslib_1.__metadata("design:type", browser_1.WorkspaceService)
263
+ ], FrontendExternalChatSessionProvider.prototype, "workspaceService", void 0);
264
+ tslib_1.__decorate([
265
+ (0, inversify_1.inject)(core_1.PreferenceService),
266
+ tslib_1.__metadata("design:type", Object)
267
+ ], FrontendExternalChatSessionProvider.prototype, "preferenceService", void 0);
268
+ exports.FrontendExternalChatSessionProvider = FrontendExternalChatSessionProvider = tslib_1.__decorate([
269
+ (0, inversify_1.injectable)()
270
+ ], FrontendExternalChatSessionProvider);
271
+ //# sourceMappingURL=frontend-external-chat-session-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frontend-external-chat-session-provider.js","sourceRoot":"","sources":["../../src/browser/frontend-external-chat-session-provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=frontend-external-chat-session-provider.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frontend-external-chat-session-provider.spec.d.ts","sourceRoot":"","sources":["../../src/browser/frontend-external-chat-session-provider.spec.ts"],"names":[],"mappings":""}