@theia/ai-vercel-ai 1.67.0-next.56 → 1.67.0-next.86

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 (41) hide show
  1. package/lib/browser/vercel-ai-frontend-application-contribution.d.ts +25 -0
  2. package/lib/browser/vercel-ai-frontend-application-contribution.d.ts.map +1 -0
  3. package/lib/browser/vercel-ai-frontend-application-contribution.js +191 -0
  4. package/lib/browser/vercel-ai-frontend-application-contribution.js.map +1 -0
  5. package/lib/browser/vercel-ai-frontend-module.d.ts +4 -0
  6. package/lib/browser/vercel-ai-frontend-module.d.ts.map +1 -0
  7. package/lib/browser/vercel-ai-frontend-module.js +33 -0
  8. package/lib/browser/vercel-ai-frontend-module.js.map +1 -0
  9. package/lib/common/index.d.ts +2 -0
  10. package/lib/common/index.d.ts.map +1 -0
  11. package/lib/common/index.js +20 -0
  12. package/lib/common/index.js.map +1 -0
  13. package/lib/common/vercel-ai-language-models-manager.d.ts +49 -0
  14. package/lib/common/vercel-ai-language-models-manager.d.ts.map +1 -0
  15. package/lib/common/vercel-ai-language-models-manager.js +21 -0
  16. package/lib/common/vercel-ai-language-models-manager.js.map +1 -0
  17. package/lib/common/vercel-ai-preferences.d.ts +8 -0
  18. package/lib/common/vercel-ai-preferences.d.ts.map +1 -0
  19. package/lib/common/vercel-ai-preferences.js +131 -0
  20. package/lib/common/vercel-ai-preferences.js.map +1 -0
  21. package/lib/node/vercel-ai-backend-module.d.ts +4 -0
  22. package/lib/node/vercel-ai-backend-module.d.ts.map +1 -0
  23. package/lib/node/vercel-ai-backend-module.js +35 -0
  24. package/lib/node/vercel-ai-backend-module.js.map +1 -0
  25. package/lib/node/vercel-ai-language-model-factory.d.ts +14 -0
  26. package/lib/node/vercel-ai-language-model-factory.d.ts.map +1 -0
  27. package/lib/node/vercel-ai-language-model-factory.js +73 -0
  28. package/lib/node/vercel-ai-language-model-factory.js.map +1 -0
  29. package/lib/node/vercel-ai-language-model.d.ts +53 -0
  30. package/lib/node/vercel-ai-language-model.d.ts.map +1 -0
  31. package/lib/node/vercel-ai-language-model.js +309 -0
  32. package/lib/node/vercel-ai-language-model.js.map +1 -0
  33. package/lib/node/vercel-ai-language-models-manager-impl.d.ts +19 -0
  34. package/lib/node/vercel-ai-language-models-manager-impl.d.ts.map +1 -0
  35. package/lib/node/vercel-ai-language-models-manager-impl.js +107 -0
  36. package/lib/node/vercel-ai-language-models-manager-impl.js.map +1 -0
  37. package/lib/package.spec.d.ts +1 -0
  38. package/lib/package.spec.d.ts.map +1 -0
  39. package/lib/package.spec.js +26 -0
  40. package/lib/package.spec.js.map +1 -0
  41. package/package.json +6 -6
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ // *****************************************************************************
3
+ // Copyright (C) 2025 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.VercelAiLanguageModelFactory = void 0;
19
+ const tslib_1 = require("tslib");
20
+ const anthropic_1 = require("@ai-sdk/anthropic");
21
+ const openai_1 = require("@ai-sdk/openai");
22
+ const inversify_1 = require("@theia/core/shared/inversify");
23
+ let VercelAiLanguageModelFactory = class VercelAiLanguageModelFactory {
24
+ createLanguageModel(modelDescription, providerConfig) {
25
+ const apiKey = this.resolveApiKey(modelDescription, providerConfig);
26
+ if (!apiKey) {
27
+ throw new Error(`Please provide an API key for ${providerConfig.provider} in preferences or via environment variable`);
28
+ }
29
+ const baseURL = modelDescription.url || providerConfig.baseURL;
30
+ switch (providerConfig.provider) {
31
+ case 'openai':
32
+ return (0, openai_1.createOpenAI)({
33
+ apiKey,
34
+ baseURL,
35
+ compatibility: 'strict'
36
+ }).languageModel(modelDescription.model);
37
+ case 'anthropic':
38
+ return (0, anthropic_1.createAnthropic)({
39
+ apiKey,
40
+ baseURL
41
+ }).languageModel(modelDescription.model);
42
+ default:
43
+ throw new Error(`Unsupported provider: ${providerConfig.provider}`);
44
+ }
45
+ }
46
+ resolveApiKey(modelDescription, providerConfig) {
47
+ if (modelDescription.apiKey === true) {
48
+ return this.getApiKeyBasedOnProvider(providerConfig);
49
+ }
50
+ if (modelDescription.apiKey) {
51
+ return modelDescription.apiKey;
52
+ }
53
+ return this.getApiKeyBasedOnProvider(providerConfig);
54
+ }
55
+ getApiKeyBasedOnProvider(providerConfig) {
56
+ if (providerConfig.apiKey) {
57
+ return providerConfig.apiKey;
58
+ }
59
+ switch (providerConfig.provider) {
60
+ case 'openai':
61
+ return process.env.OPENAI_API_KEY;
62
+ case 'anthropic':
63
+ return process.env.ANTHROPIC_API_KEY;
64
+ default:
65
+ return undefined;
66
+ }
67
+ }
68
+ };
69
+ exports.VercelAiLanguageModelFactory = VercelAiLanguageModelFactory;
70
+ exports.VercelAiLanguageModelFactory = VercelAiLanguageModelFactory = tslib_1.__decorate([
71
+ (0, inversify_1.injectable)()
72
+ ], VercelAiLanguageModelFactory);
73
+ //# sourceMappingURL=vercel-ai-language-model-factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vercel-ai-language-model-factory.js","sourceRoot":"","sources":["../../src/node/vercel-ai-language-model-factory.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,iDAAoD;AACpD,2CAA8C;AAE9C,4DAA0D;AAYnD,IAAM,4BAA4B,GAAlC,MAAM,4BAA4B;IAErC,mBAAmB,CAAC,gBAA0C,EAAE,cAAsC;QAClG,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC;QACpE,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,iCAAiC,cAAc,CAAC,QAAQ,6CAA6C,CAAC,CAAC;QAC3H,CAAC;QAED,MAAM,OAAO,GAAG,gBAAgB,CAAC,GAAG,IAAI,cAAc,CAAC,OAAO,CAAC;QAE/D,QAAQ,cAAc,CAAC,QAAQ,EAAE,CAAC;YAC9B,KAAK,QAAQ;gBACT,OAAO,IAAA,qBAAY,EAAC;oBAChB,MAAM;oBACN,OAAO;oBACP,aAAa,EAAE,QAAQ;iBAC1B,CAAC,CAAC,aAAa,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;YAC7C,KAAK,WAAW;gBACZ,OAAO,IAAA,2BAAe,EAAC;oBACnB,MAAM;oBACN,OAAO;iBACV,CAAC,CAAC,aAAa,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;YAC7C;gBACI,MAAM,IAAI,KAAK,CAAC,yBAAyB,cAAc,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC5E,CAAC;IACL,CAAC;IAEO,aAAa,CAAC,gBAA0C,EAAE,cAAsC;QACpG,IAAI,gBAAgB,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;YACnC,OAAO,IAAI,CAAC,wBAAwB,CAAC,cAAc,CAAC,CAAC;QACzD,CAAC;QACD,IAAI,gBAAgB,CAAC,MAAM,EAAE,CAAC;YAC1B,OAAO,gBAAgB,CAAC,MAAM,CAAC;QACnC,CAAC;QACD,OAAO,IAAI,CAAC,wBAAwB,CAAC,cAAc,CAAC,CAAC;IACzD,CAAC;IAEO,wBAAwB,CAAC,cAAsC;QACnE,IAAI,cAAc,CAAC,MAAM,EAAE,CAAC;YACxB,OAAO,cAAc,CAAC,MAAM,CAAC;QACjC,CAAC;QACD,QAAQ,cAAc,CAAC,QAAQ,EAAE,CAAC;YAC9B,KAAK,QAAQ;gBACT,OAAO,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;YACtC,KAAK,WAAW;gBACZ,OAAO,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;YACzC;gBACI,OAAO,SAAS,CAAC;QACzB,CAAC;IACL,CAAC;CACJ,CAAA;AAlDY,oEAA4B;uCAA5B,4BAA4B;IADxC,IAAA,sBAAU,GAAE;GACA,4BAA4B,CAkDxC"}
@@ -0,0 +1,53 @@
1
+ import { LanguageModelV1 } from '@ai-sdk/provider';
2
+ import { LanguageModel, LanguageModelMessage, LanguageModelParsedResponse, LanguageModelRequest, LanguageModelResponse, LanguageModelStatus, LanguageModelStreamResponse, LanguageModelStreamResponsePart, LanguageModelTextResponse, TokenUsageService, UserRequest } from '@theia/ai-core';
3
+ import { CancellationToken, Disposable, ILogger } from '@theia/core';
4
+ import { CoreMessage, TextStreamPart, ToolSet } from 'ai';
5
+ import { VercelAiLanguageModelFactory, VercelAiProviderConfig } from './vercel-ai-language-model-factory';
6
+ interface VercelCancellationToken extends Disposable {
7
+ signal: AbortSignal;
8
+ cancellationToken: CancellationToken;
9
+ isCancellationRequested: boolean;
10
+ }
11
+ interface VercelAiStream extends AsyncIterable<TextStreamPart<ToolSet>> {
12
+ cancel: () => void;
13
+ }
14
+ interface StreamContext {
15
+ logger: ILogger;
16
+ cancellationToken?: VercelCancellationToken;
17
+ }
18
+ export declare class VercelAiStreamTransformer {
19
+ protected readonly fullStream: VercelAiStream;
20
+ protected readonly context: StreamContext;
21
+ private toolCallsMap;
22
+ constructor(fullStream: VercelAiStream, context: StreamContext);
23
+ transform(): AsyncGenerator<LanguageModelStreamResponsePart>;
24
+ private isToolResultPart;
25
+ private updateToolCall;
26
+ private appendToToolCallArgs;
27
+ private processToolResult;
28
+ }
29
+ export declare class VercelAiModel implements LanguageModel {
30
+ readonly id: string;
31
+ model: string;
32
+ status: LanguageModelStatus;
33
+ enableStreaming: boolean;
34
+ supportsStructuredOutput: boolean;
35
+ url: string | undefined;
36
+ protected readonly logger: ILogger;
37
+ protected readonly languageModelFactory: VercelAiLanguageModelFactory;
38
+ protected providerConfig: () => VercelAiProviderConfig;
39
+ maxRetries: number;
40
+ protected readonly tokenUsageService?: TokenUsageService | undefined;
41
+ constructor(id: string, model: string, status: LanguageModelStatus, enableStreaming: boolean, supportsStructuredOutput: boolean, url: string | undefined, logger: ILogger, languageModelFactory: VercelAiLanguageModelFactory, providerConfig: () => VercelAiProviderConfig, maxRetries?: number, tokenUsageService?: TokenUsageService | undefined);
42
+ protected getSettings(request: LanguageModelRequest): Record<string, unknown>;
43
+ request(request: UserRequest, cancellationToken?: CancellationToken): Promise<LanguageModelResponse>;
44
+ protected createCancellationToken(cancellationToken?: CancellationToken): VercelCancellationToken;
45
+ protected handleNonStreamingRequest(model: LanguageModelV1, request: UserRequest, cancellationToken?: VercelCancellationToken): Promise<LanguageModelTextResponse>;
46
+ protected createTools(request: UserRequest): ToolSet | undefined;
47
+ protected handleStructuredOutputRequest(model: LanguageModelV1, request: UserRequest, cancellationToken?: VercelCancellationToken): Promise<LanguageModelParsedResponse | LanguageModelStreamResponse>;
48
+ private recordTokenUsage;
49
+ protected handleStreamingRequest(model: LanguageModelV1, request: UserRequest, cancellationToken?: VercelCancellationToken): Promise<LanguageModelStreamResponse>;
50
+ protected processMessages(messages: LanguageModelMessage[]): Array<CoreMessage>;
51
+ }
52
+ export {};
53
+ //# sourceMappingURL=vercel-ai-language-model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vercel-ai-language-model.d.ts","sourceRoot":"","sources":["../../src/node/vercel-ai-language-model.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,309 @@
1
+ "use strict";
2
+ // *****************************************************************************
3
+ // Copyright (C) 2025 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.VercelAiModel = exports.VercelAiStreamTransformer = void 0;
19
+ const ai_core_1 = require("@theia/ai-core");
20
+ const core_1 = require("@theia/core");
21
+ const ai_1 = require("ai");
22
+ class VercelAiStreamTransformer {
23
+ constructor(fullStream, context) {
24
+ this.fullStream = fullStream;
25
+ this.context = context;
26
+ this.toolCallsMap = new Map();
27
+ }
28
+ async *transform() {
29
+ var _a;
30
+ this.toolCallsMap.clear();
31
+ try {
32
+ for await (const part of this.fullStream) {
33
+ this.context.logger.trace('Received stream part:', part);
34
+ if ((_a = this.context.cancellationToken) === null || _a === void 0 ? void 0 : _a.isCancellationRequested) {
35
+ this.context.logger.debug('Cancellation requested, stopping stream');
36
+ this.fullStream.cancel();
37
+ break;
38
+ }
39
+ let toolCallUpdated = false;
40
+ switch (part.type) {
41
+ case 'text-delta':
42
+ if (part.textDelta) {
43
+ yield { content: part.textDelta };
44
+ }
45
+ break;
46
+ case 'tool-call':
47
+ if (part.toolCallId && part.toolName) {
48
+ const args = typeof part.args === 'object' ? JSON.stringify(part.args) : (part.args || '');
49
+ toolCallUpdated = this.updateToolCall(part.toolCallId, part.toolName, args);
50
+ }
51
+ break;
52
+ case 'tool-call-streaming-start':
53
+ if (part.toolCallId && part.toolName) {
54
+ toolCallUpdated = this.updateToolCall(part.toolCallId, part.toolName);
55
+ }
56
+ break;
57
+ case 'tool-call-delta':
58
+ if (part.toolCallId && part.argsTextDelta) {
59
+ toolCallUpdated = this.appendToToolCallArgs(part.toolCallId, part.argsTextDelta);
60
+ }
61
+ break;
62
+ default:
63
+ if (this.isToolResultPart(part)) {
64
+ toolCallUpdated = this.processToolResult(part);
65
+ }
66
+ break;
67
+ }
68
+ if (toolCallUpdated && this.toolCallsMap.size > 0) {
69
+ yield { tool_calls: Array.from(this.toolCallsMap.values()) };
70
+ }
71
+ }
72
+ }
73
+ catch (error) {
74
+ this.context.logger.error('Error in AI SDK stream:', error);
75
+ }
76
+ }
77
+ isToolResultPart(part) {
78
+ return part.type === 'tool-result';
79
+ }
80
+ updateToolCall(id, name, args) {
81
+ const toolCall = {
82
+ id,
83
+ function: { name, arguments: args ? args : '' },
84
+ finished: false
85
+ };
86
+ this.toolCallsMap.set(id, toolCall);
87
+ return true;
88
+ }
89
+ appendToToolCallArgs(id, argsTextDelta) {
90
+ const existingCall = this.toolCallsMap.get(id);
91
+ if (existingCall === null || existingCall === void 0 ? void 0 : existingCall.function) {
92
+ existingCall.function.arguments = (existingCall.function.arguments || '') + argsTextDelta;
93
+ return true;
94
+ }
95
+ return false;
96
+ }
97
+ processToolResult(part) {
98
+ if (!part.toolCallId) {
99
+ return false;
100
+ }
101
+ const completedCall = this.toolCallsMap.get(part.toolCallId);
102
+ if (!completedCall) {
103
+ return false;
104
+ }
105
+ completedCall.result = part.result;
106
+ completedCall.finished = true;
107
+ return true;
108
+ }
109
+ }
110
+ exports.VercelAiStreamTransformer = VercelAiStreamTransformer;
111
+ class VercelAiModel {
112
+ constructor(id, model, status, enableStreaming, supportsStructuredOutput, url, logger, languageModelFactory, providerConfig, maxRetries = 3, tokenUsageService) {
113
+ this.id = id;
114
+ this.model = model;
115
+ this.status = status;
116
+ this.enableStreaming = enableStreaming;
117
+ this.supportsStructuredOutput = supportsStructuredOutput;
118
+ this.url = url;
119
+ this.logger = logger;
120
+ this.languageModelFactory = languageModelFactory;
121
+ this.providerConfig = providerConfig;
122
+ this.maxRetries = maxRetries;
123
+ this.tokenUsageService = tokenUsageService;
124
+ }
125
+ getSettings(request) {
126
+ var _a;
127
+ return (_a = request.settings) !== null && _a !== void 0 ? _a : {};
128
+ }
129
+ async request(request, cancellationToken) {
130
+ var _a;
131
+ const settings = this.getSettings(request);
132
+ const model = this.languageModelFactory.createLanguageModel({
133
+ id: this.id,
134
+ model: this.model,
135
+ url: this.url,
136
+ apiKey: true, // We'll use the provider's API key
137
+ enableStreaming: this.enableStreaming,
138
+ supportsStructuredOutput: this.supportsStructuredOutput,
139
+ maxRetries: this.maxRetries
140
+ }, this.providerConfig());
141
+ const cancel = this.createCancellationToken(cancellationToken);
142
+ try {
143
+ if (((_a = request.response_format) === null || _a === void 0 ? void 0 : _a.type) === 'json_schema' && this.supportsStructuredOutput) {
144
+ return this.handleStructuredOutputRequest(model, request, cancel);
145
+ }
146
+ if (!this.enableStreaming || (typeof settings.stream === 'boolean' && !settings.stream)) {
147
+ return this.handleNonStreamingRequest(model, request, cancel);
148
+ }
149
+ return this.handleStreamingRequest(model, request, cancel);
150
+ }
151
+ catch (error) {
152
+ this.logger.error('Error in Vercel AI model request:', error);
153
+ throw error;
154
+ }
155
+ finally {
156
+ cancel.dispose();
157
+ }
158
+ }
159
+ createCancellationToken(cancellationToken) {
160
+ const abortController = new AbortController();
161
+ const abortSignal = abortController.signal;
162
+ if (cancellationToken === null || cancellationToken === void 0 ? void 0 : cancellationToken.isCancellationRequested) {
163
+ abortController.abort();
164
+ }
165
+ const cancellationListener = cancellationToken ?
166
+ cancellationToken.onCancellationRequested(() => {
167
+ abortController.abort();
168
+ }) : undefined;
169
+ return {
170
+ signal: abortSignal,
171
+ cancellationToken: cancellationToken !== null && cancellationToken !== void 0 ? cancellationToken : core_1.CancellationToken.None,
172
+ get isCancellationRequested() {
173
+ var _a;
174
+ return (_a = cancellationToken === null || cancellationToken === void 0 ? void 0 : cancellationToken.isCancellationRequested) !== null && _a !== void 0 ? _a : abortSignal.aborted;
175
+ },
176
+ dispose: () => cancellationListener === null || cancellationListener === void 0 ? void 0 : cancellationListener.dispose()
177
+ };
178
+ }
179
+ async handleNonStreamingRequest(model, request, cancellationToken) {
180
+ const settings = this.getSettings(request);
181
+ const messages = this.processMessages(request.messages);
182
+ const tools = this.createTools(request);
183
+ const abortSignal = cancellationToken === null || cancellationToken === void 0 ? void 0 : cancellationToken.signal;
184
+ const response = await (0, ai_1.generateText)({
185
+ model,
186
+ messages,
187
+ tools,
188
+ toolChoice: 'auto',
189
+ abortSignal,
190
+ ...settings
191
+ });
192
+ await this.recordTokenUsage(response, request);
193
+ return { text: response.text };
194
+ }
195
+ createTools(request) {
196
+ if (!request.tools) {
197
+ return undefined;
198
+ }
199
+ const toolSet = {};
200
+ for (const toolRequest of request.tools) {
201
+ toolSet[toolRequest.name] = (0, ai_1.tool)({
202
+ description: toolRequest.description,
203
+ parameters: (0, ai_1.jsonSchema)(toolRequest.parameters),
204
+ execute: async (args, options) => {
205
+ try {
206
+ const result = await toolRequest.handler(JSON.stringify(args), options);
207
+ return JSON.stringify(result);
208
+ }
209
+ catch (error) {
210
+ this.logger.error(`Error executing tool (${toolRequest.name}):`, error);
211
+ return { status: 'error', error: 'Tool execution failed', details: error };
212
+ }
213
+ }
214
+ });
215
+ }
216
+ return toolSet;
217
+ }
218
+ async handleStructuredOutputRequest(model, request, cancellationToken) {
219
+ var _a;
220
+ if (((_a = request.response_format) === null || _a === void 0 ? void 0 : _a.type) !== 'json_schema' || !request.response_format.json_schema.schema) {
221
+ throw Error('Invalid response format for structured output request');
222
+ }
223
+ const schema = (0, ai_1.jsonSchema)(request.response_format.json_schema.schema);
224
+ if (!schema) {
225
+ throw new Error('Schema extraction failed.');
226
+ }
227
+ const settings = this.getSettings(request);
228
+ const messages = this.processMessages(request.messages);
229
+ const abortSignal = cancellationToken === null || cancellationToken === void 0 ? void 0 : cancellationToken.signal;
230
+ const response = await (0, ai_1.generateObject)({
231
+ model,
232
+ output: 'object',
233
+ messages,
234
+ schema,
235
+ abortSignal,
236
+ ...settings
237
+ });
238
+ await this.recordTokenUsage(response, request);
239
+ return {
240
+ content: JSON.stringify(response.object),
241
+ parsed: response.object
242
+ };
243
+ }
244
+ async recordTokenUsage(result, request) {
245
+ if (this.tokenUsageService && !isNaN(result.usage.completionTokens) && !isNaN(result.usage.promptTokens)) {
246
+ await this.tokenUsageService.recordTokenUsage(this.id, {
247
+ inputTokens: result.usage.promptTokens,
248
+ outputTokens: result.usage.completionTokens,
249
+ requestId: request.requestId
250
+ });
251
+ }
252
+ }
253
+ async handleStreamingRequest(model, request, cancellationToken) {
254
+ const settings = this.getSettings(request);
255
+ const messages = this.processMessages(request.messages);
256
+ const tools = this.createTools(request);
257
+ const abortSignal = cancellationToken === null || cancellationToken === void 0 ? void 0 : cancellationToken.signal;
258
+ const { fullStream } = (0, ai_1.streamText)({
259
+ model,
260
+ messages,
261
+ tools,
262
+ toolChoice: 'auto',
263
+ maxSteps: 100,
264
+ maxRetries: this.maxRetries,
265
+ toolCallStreaming: true,
266
+ abortSignal,
267
+ onStepFinish: (stepResult) => {
268
+ var _a;
269
+ if (!isNaN(stepResult.usage.completionTokens) && !isNaN(stepResult.usage.promptTokens)) {
270
+ (_a = this.tokenUsageService) === null || _a === void 0 ? void 0 : _a.recordTokenUsage(this.id, {
271
+ inputTokens: stepResult.usage.promptTokens,
272
+ outputTokens: stepResult.usage.completionTokens,
273
+ requestId: request.requestId
274
+ });
275
+ }
276
+ },
277
+ ...settings
278
+ });
279
+ const transformer = new VercelAiStreamTransformer(fullStream, { cancellationToken, logger: this.logger });
280
+ return {
281
+ stream: transformer.transform()
282
+ };
283
+ }
284
+ processMessages(messages) {
285
+ return messages.map(message => {
286
+ const content = ai_core_1.LanguageModelMessage.isTextMessage(message) ? message.text : '';
287
+ let role;
288
+ switch (message.actor) {
289
+ case 'user':
290
+ role = 'user';
291
+ break;
292
+ case 'ai':
293
+ role = 'assistant';
294
+ break;
295
+ case 'system':
296
+ role = 'system';
297
+ break;
298
+ default:
299
+ role = 'user';
300
+ }
301
+ return {
302
+ role,
303
+ content,
304
+ };
305
+ });
306
+ }
307
+ }
308
+ exports.VercelAiModel = VercelAiModel;
309
+ //# sourceMappingURL=vercel-ai-language-model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vercel-ai-language-model.js","sourceRoot":"","sources":["../../src/node/vercel-ai-language-model.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { LanguageModelRegistry, LanguageModelStatus, TokenUsageService } from '@theia/ai-core';
2
+ import { VercelAiLanguageModelsManager, VercelAiModelDescription } from '../common';
3
+ import { ILogger } from '@theia/core';
4
+ import { VercelAiLanguageModelFactory, VercelAiProvider, VercelAiProviderConfig } from './vercel-ai-language-model-factory';
5
+ export declare class VercelAiLanguageModelsManagerImpl implements VercelAiLanguageModelsManager {
6
+ apiKey: string | undefined;
7
+ protected providerConfigs: Map<VercelAiProvider, VercelAiProviderConfig>;
8
+ protected readonly languageModelRegistry: LanguageModelRegistry;
9
+ protected readonly tokenUsageService: TokenUsageService;
10
+ protected readonly logger: ILogger;
11
+ protected readonly languageModelFactory: VercelAiLanguageModelFactory;
12
+ protected calculateStatus(effectiveApiKey: string | undefined): LanguageModelStatus;
13
+ createOrUpdateLanguageModels(...modelDescriptions: VercelAiModelDescription[]): Promise<void>;
14
+ removeLanguageModels(...modelIds: string[]): void;
15
+ setProviderConfig(provider: VercelAiProvider, config: Partial<VercelAiProviderConfig>): void;
16
+ private determineProvider;
17
+ private getProviderConfig;
18
+ }
19
+ //# sourceMappingURL=vercel-ai-language-models-manager-impl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vercel-ai-language-models-manager-impl.d.ts","sourceRoot":"","sources":["../../src/node/vercel-ai-language-models-manager-impl.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAG/F,OAAO,EAAE,6BAA6B,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC;AACpF,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,4BAA4B,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAE5H,qBACa,iCAAkC,YAAW,6BAA6B;IAEnF,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,SAAS,CAAC,eAAe,EAAE,GAAG,CAAC,gBAAgB,EAAE,sBAAsB,CAAC,CAAa;IAGrF,SAAS,CAAC,QAAQ,CAAC,qBAAqB,EAAE,qBAAqB,CAAC;IAGhE,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAGxD,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IAGnC,SAAS,CAAC,QAAQ,CAAC,oBAAoB,EAAE,4BAA4B,CAAC;IAItE,SAAS,CAAC,eAAe,CAAC,eAAe,EAAE,MAAM,GAAG,SAAS,GAAG,mBAAmB;IAM7E,4BAA4B,CAAC,GAAG,iBAAiB,EAAE,wBAAwB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA2CnG,oBAAoB,CAAC,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI;IAIjD,iBAAiB,CAAC,QAAQ,EAAE,gBAAgB,EAAE,MAAM,EAAE,OAAO,CAAC,sBAAsB,CAAC,GAAG,IAAI;IAK5F,OAAO,CAAC,iBAAiB;IAKzB,OAAO,CAAC,iBAAiB;CAQ5B"}
@@ -0,0 +1,107 @@
1
+ "use strict";
2
+ // *****************************************************************************
3
+ // Copyright (C) 2025 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.VercelAiLanguageModelsManagerImpl = void 0;
19
+ const tslib_1 = require("tslib");
20
+ const ai_core_1 = require("@theia/ai-core");
21
+ const inversify_1 = require("@theia/core/shared/inversify");
22
+ const vercel_ai_language_model_1 = require("./vercel-ai-language-model");
23
+ const core_1 = require("@theia/core");
24
+ const vercel_ai_language_model_factory_1 = require("./vercel-ai-language-model-factory");
25
+ let VercelAiLanguageModelsManagerImpl = class VercelAiLanguageModelsManagerImpl {
26
+ constructor() {
27
+ this.providerConfigs = new Map();
28
+ }
29
+ // Triggered from frontend. In case you want to use the models on the backend
30
+ // without a frontend then call this yourself
31
+ calculateStatus(effectiveApiKey) {
32
+ return effectiveApiKey
33
+ ? { status: 'ready' }
34
+ : { status: 'unavailable', message: 'No Vercel AI API key set' };
35
+ }
36
+ async createOrUpdateLanguageModels(...modelDescriptions) {
37
+ for (const modelDescription of modelDescriptions) {
38
+ this.logger.info(`Vercel AI: Creating or updating model ${modelDescription.id}`);
39
+ const model = await this.languageModelRegistry.getLanguageModel(modelDescription.id);
40
+ const provider = this.determineProvider(modelDescription);
41
+ const providerConfig = this.getProviderConfig(provider);
42
+ const effectiveApiKey = providerConfig.apiKey || this.apiKey;
43
+ const status = this.calculateStatus(effectiveApiKey);
44
+ if (model) {
45
+ if (!(model instanceof vercel_ai_language_model_1.VercelAiModel)) {
46
+ this.logger.warn(`Vercel AI: model ${modelDescription.id} is not a Vercel AI model`);
47
+ continue;
48
+ }
49
+ await this.languageModelRegistry.patchLanguageModel(modelDescription.id, {
50
+ model: modelDescription.model,
51
+ enableStreaming: modelDescription.enableStreaming,
52
+ url: modelDescription.url,
53
+ supportsStructuredOutput: modelDescription.supportsStructuredOutput,
54
+ status,
55
+ maxRetries: modelDescription.maxRetries
56
+ });
57
+ this.providerConfigs.set(provider, providerConfig);
58
+ }
59
+ else {
60
+ this.languageModelRegistry.addLanguageModels([
61
+ new vercel_ai_language_model_1.VercelAiModel(modelDescription.id, modelDescription.model, status, modelDescription.enableStreaming, modelDescription.supportsStructuredOutput, modelDescription.url, this.logger, this.languageModelFactory, () => this.getProviderConfig(provider), modelDescription.maxRetries, this.tokenUsageService)
62
+ ]);
63
+ }
64
+ }
65
+ }
66
+ removeLanguageModels(...modelIds) {
67
+ this.languageModelRegistry.removeLanguageModels(modelIds);
68
+ }
69
+ setProviderConfig(provider, config) {
70
+ const existingConfig = this.providerConfigs.get(provider) || { provider };
71
+ this.providerConfigs.set(provider, { ...existingConfig, ...config });
72
+ }
73
+ determineProvider(modelDescription) {
74
+ // Use the provider from the model description or default to OpenAI
75
+ return modelDescription.provider || 'openai';
76
+ }
77
+ getProviderConfig(provider) {
78
+ let config = this.providerConfigs.get(provider);
79
+ if (!config) {
80
+ config = { provider, apiKey: this.apiKey };
81
+ this.providerConfigs.set(provider, config);
82
+ }
83
+ return config;
84
+ }
85
+ };
86
+ exports.VercelAiLanguageModelsManagerImpl = VercelAiLanguageModelsManagerImpl;
87
+ tslib_1.__decorate([
88
+ (0, inversify_1.inject)(ai_core_1.LanguageModelRegistry),
89
+ tslib_1.__metadata("design:type", Object)
90
+ ], VercelAiLanguageModelsManagerImpl.prototype, "languageModelRegistry", void 0);
91
+ tslib_1.__decorate([
92
+ (0, inversify_1.inject)(ai_core_1.TokenUsageService),
93
+ tslib_1.__metadata("design:type", Object)
94
+ ], VercelAiLanguageModelsManagerImpl.prototype, "tokenUsageService", void 0);
95
+ tslib_1.__decorate([
96
+ (0, inversify_1.inject)(core_1.ILogger),
97
+ (0, inversify_1.named)('vercel-ai'),
98
+ tslib_1.__metadata("design:type", Object)
99
+ ], VercelAiLanguageModelsManagerImpl.prototype, "logger", void 0);
100
+ tslib_1.__decorate([
101
+ (0, inversify_1.inject)(vercel_ai_language_model_factory_1.VercelAiLanguageModelFactory),
102
+ tslib_1.__metadata("design:type", vercel_ai_language_model_factory_1.VercelAiLanguageModelFactory)
103
+ ], VercelAiLanguageModelsManagerImpl.prototype, "languageModelFactory", void 0);
104
+ exports.VercelAiLanguageModelsManagerImpl = VercelAiLanguageModelsManagerImpl = tslib_1.__decorate([
105
+ (0, inversify_1.injectable)()
106
+ ], VercelAiLanguageModelsManagerImpl);
107
+ //# sourceMappingURL=vercel-ai-language-models-manager-impl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vercel-ai-language-models-manager-impl.js","sourceRoot":"","sources":["../../src/node/vercel-ai-language-models-manager-impl.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=package.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package.spec.d.ts","sourceRoot":"","sources":["../src/package.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,26 @@
1
+ // *****************************************************************************
2
+ // Copyright (C) 2025 EclipseSource GmbH and others.
3
+ //
4
+ // This program and the accompanying materials are made available under the
5
+ // terms of the Eclipse Public License v. 2.0 which is available at
6
+ // http://www.eclipse.org/legal/epl-2.0.
7
+ //
8
+ // This Source Code may also be made available under the following Secondary
9
+ // Licenses when the conditions for such availability set forth in the Eclipse
10
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
11
+ // with the GNU Classpath Exception which is available at
12
+ // https://www.gnu.org/software/classpath/license.html.
13
+ //
14
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
15
+ // *****************************************************************************
16
+ /* note: this bogus test file is required so that
17
+ we are able to run mocha unit tests on this
18
+ package, without having any actual unit tests in it.
19
+ This way a coverage report will be generated,
20
+ showing 0% coverage, instead of no report.
21
+ This file can be removed once we have real unit
22
+ tests in place. */
23
+ describe('ai-vercel-ai package', () => {
24
+ it('support code coverage statistics', () => true);
25
+ });
26
+ //# sourceMappingURL=package.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package.spec.js","sourceRoot":"","sources":["../src/package.spec.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,oDAAoD;AACpD,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;;;;;;qBAMqB;AAErB,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IAClC,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;AACvD,CAAC,CAAC,CAAC"}