@machina.ai/cell-cli-core 1.49.0-rc6 → 1.50.0-rc1
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.
- package/dist/docs/CHANGES.md +23 -0
- package/dist/docs/adr/001-openai-xai-compatible-adapters.md +75 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/package.json +1 -1
- package/dist/src/agents/agentLoader.d.ts +4 -4
- package/dist/src/code_assist/types.d.ts +20 -20
- package/dist/src/config/config.d.ts +9 -0
- package/dist/src/config/config.js +33 -0
- package/dist/src/config/config.js.map +1 -1
- package/dist/src/config/config.test.js +11 -1
- package/dist/src/config/config.test.js.map +1 -1
- package/dist/src/config/defaultModelConfigs.js +60 -0
- package/dist/src/config/defaultModelConfigs.js.map +1 -1
- package/dist/src/config/extensions/integrityTypes.d.ts +2 -2
- package/dist/src/config/localModel.test.d.ts +6 -0
- package/dist/src/config/localModel.test.js +114 -0
- package/dist/src/config/localModel.test.js.map +1 -0
- package/dist/src/config/models.d.ts +17 -1
- package/dist/src/config/models.js +75 -2
- package/dist/src/config/models.js.map +1 -1
- package/dist/src/config/models.test.js +48 -1
- package/dist/src/config/models.test.js.map +1 -1
- package/dist/src/core/baseLlmClient.js +26 -1
- package/dist/src/core/baseLlmClient.js.map +1 -1
- package/dist/src/core/contentGenerator.js +74 -1
- package/dist/src/core/contentGenerator.js.map +1 -1
- package/dist/src/core/contentGenerator.test.js +44 -0
- package/dist/src/core/contentGenerator.test.js.map +1 -1
- package/dist/src/core/openAiCompatibleContentGenerator.d.ts +156 -0
- package/dist/src/core/openAiCompatibleContentGenerator.js +1161 -0
- package/dist/src/core/openAiCompatibleContentGenerator.js.map +1 -0
- package/dist/src/core/openAiCompatibleContentGenerator.test.d.ts +6 -0
- package/dist/src/core/openAiCompatibleContentGenerator.test.js +850 -0
- package/dist/src/core/openAiCompatibleContentGenerator.test.js.map +1 -0
- package/dist/src/generated/git-commit.d.ts +2 -2
- package/dist/src/generated/git-commit.js +2 -2
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.js +1 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/utils/modelUtils.d.ts +8 -0
- package/dist/src/utils/modelUtils.js +59 -0
- package/dist/src/utils/modelUtils.js.map +1 -1
- package/dist/src/utils/modelUtils.test.js +46 -2
- package/dist/src/utils/modelUtils.test.js.map +1 -1
- package/dist/src/voice/whisperModelManager.js +2 -0
- package/dist/src/voice/whisperModelManager.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import type { CountTokensResponse, EmbedContentResponse, GenerateContentResponse, GenerateContentParameters, CountTokensParameters, EmbedContentParameters } from '@google/genai';
|
|
7
|
+
import type { ContentGenerator } from './contentGenerator.js';
|
|
8
|
+
import type { Config } from '../config/config.js';
|
|
9
|
+
import type { LlmRole } from '../telemetry/llmRole.js';
|
|
10
|
+
/** Wire transport used by OpenAI-compatible providers. */
|
|
11
|
+
export type OpenAiTransportMode = 'responses' | 'chat_completions';
|
|
12
|
+
interface OpenAiToolCall {
|
|
13
|
+
id: string;
|
|
14
|
+
type: 'function';
|
|
15
|
+
function: {
|
|
16
|
+
name: string;
|
|
17
|
+
arguments: string;
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
interface OpenAiMessage {
|
|
21
|
+
role: 'system' | 'user' | 'assistant' | 'tool';
|
|
22
|
+
content?: string;
|
|
23
|
+
tool_calls?: OpenAiToolCall[];
|
|
24
|
+
tool_call_id?: string;
|
|
25
|
+
}
|
|
26
|
+
/** Internally-tagged tools used by /v1/responses. */
|
|
27
|
+
interface OpenAiResponsesTool {
|
|
28
|
+
type: 'function';
|
|
29
|
+
name: string;
|
|
30
|
+
description?: string;
|
|
31
|
+
parameters: JsonSchema;
|
|
32
|
+
strict: false;
|
|
33
|
+
}
|
|
34
|
+
type OpenAiInputItem = {
|
|
35
|
+
role: 'system' | 'user' | 'assistant';
|
|
36
|
+
content: string;
|
|
37
|
+
} | {
|
|
38
|
+
type: 'function_call';
|
|
39
|
+
call_id: string;
|
|
40
|
+
name: string;
|
|
41
|
+
arguments: string;
|
|
42
|
+
} | {
|
|
43
|
+
type: 'function_call_output';
|
|
44
|
+
call_id: string;
|
|
45
|
+
output: string;
|
|
46
|
+
};
|
|
47
|
+
interface OpenAiUsage {
|
|
48
|
+
prompt_tokens?: number;
|
|
49
|
+
completion_tokens?: number;
|
|
50
|
+
total_tokens?: number;
|
|
51
|
+
input_tokens?: number;
|
|
52
|
+
output_tokens?: number;
|
|
53
|
+
output_tokens_details?: {
|
|
54
|
+
reasoning_tokens?: number;
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
interface OpenAiResponsesOutputItem {
|
|
58
|
+
type?: string;
|
|
59
|
+
id?: string;
|
|
60
|
+
call_id?: string;
|
|
61
|
+
name?: string;
|
|
62
|
+
arguments?: string;
|
|
63
|
+
content?: Array<{
|
|
64
|
+
type?: string;
|
|
65
|
+
text?: string;
|
|
66
|
+
}>;
|
|
67
|
+
role?: string;
|
|
68
|
+
}
|
|
69
|
+
interface OpenAiResponsesResponse {
|
|
70
|
+
output?: OpenAiResponsesOutputItem[];
|
|
71
|
+
usage?: OpenAiUsage;
|
|
72
|
+
error?: {
|
|
73
|
+
message?: string;
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
interface JsonSchema {
|
|
77
|
+
type?: string;
|
|
78
|
+
properties?: Record<string, JsonSchema>;
|
|
79
|
+
items?: JsonSchema;
|
|
80
|
+
[key: string]: unknown;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Stateless compatibility adapter for OpenAI-compatible APIs hosted via the
|
|
84
|
+
* unified Keycloak proxy. Uses Responses API for openai/xai by default and
|
|
85
|
+
* chat/completions for other OpenAI-compatible backends.
|
|
86
|
+
*/
|
|
87
|
+
export declare class OpenAiCompatibleContentGenerator implements ContentGenerator {
|
|
88
|
+
private readonly config;
|
|
89
|
+
private readonly token?;
|
|
90
|
+
private readonly sessionId?;
|
|
91
|
+
readonly provider: string;
|
|
92
|
+
readonly modelName: string;
|
|
93
|
+
readonly endpointUrl: string;
|
|
94
|
+
readonly transportMode: OpenAiTransportMode;
|
|
95
|
+
private readonly localModelApiKey?;
|
|
96
|
+
constructor(config: Config, model: string, token?: string | undefined, sessionId?: string | undefined, transportMode?: OpenAiTransportMode);
|
|
97
|
+
/**
|
|
98
|
+
* Resolve transport mode from provider defaults and optional config override.
|
|
99
|
+
* Config may expose getOpenAiTransportMode(): 'responses' | 'chat_completions'.
|
|
100
|
+
*/
|
|
101
|
+
private resolveTransportMode;
|
|
102
|
+
private buildEndpointUrl;
|
|
103
|
+
private mapMessages;
|
|
104
|
+
/**
|
|
105
|
+
* Map chat-style messages to Responses API input items.
|
|
106
|
+
* Assistant tool_calls become function_call items; tool results become
|
|
107
|
+
* function_call_output items. Roles are preserved as input messages.
|
|
108
|
+
*/
|
|
109
|
+
mapMessagesToResponsesInput(messages: OpenAiMessage[]): OpenAiInputItem[];
|
|
110
|
+
private mapSchema;
|
|
111
|
+
private mapChatTools;
|
|
112
|
+
/**
|
|
113
|
+
* Transform Gemini tools into Responses API internally-tagged function tools.
|
|
114
|
+
* strict is always false to preserve non-strict tool calling behavior.
|
|
115
|
+
*/
|
|
116
|
+
mapResponsesTools(request: GenerateContentParameters): OpenAiResponsesTool[] | undefined;
|
|
117
|
+
private buildHeaders;
|
|
118
|
+
private resolveEndpoint;
|
|
119
|
+
/**
|
|
120
|
+
* Build a Responses API request body from an allowlist of fields.
|
|
121
|
+
* Always sets store:false and never includes previous_response_id.
|
|
122
|
+
*/
|
|
123
|
+
buildResponsesRequestBody(params: {
|
|
124
|
+
modelName: string;
|
|
125
|
+
provider: string;
|
|
126
|
+
messages: OpenAiMessage[];
|
|
127
|
+
request: GenerateContentParameters;
|
|
128
|
+
stream?: boolean;
|
|
129
|
+
}): Record<string, unknown>;
|
|
130
|
+
private buildChatCompletionsRequestBody;
|
|
131
|
+
parseResponsesPayload(data: OpenAiResponsesResponse): GenerateContentResponse;
|
|
132
|
+
private parseChatCompletionsPayload;
|
|
133
|
+
/**
|
|
134
|
+
* Generates content.
|
|
135
|
+
*/
|
|
136
|
+
generateContent(request: GenerateContentParameters, _userPromptId: string, _role: LlmRole): Promise<GenerateContentResponse>;
|
|
137
|
+
/**
|
|
138
|
+
* Generates content stream.
|
|
139
|
+
*/
|
|
140
|
+
generateContentStream(request: GenerateContentParameters, _userPromptId: string, _role: LlmRole): Promise<AsyncGenerator<GenerateContentResponse>>;
|
|
141
|
+
private makeStream;
|
|
142
|
+
/**
|
|
143
|
+
* Parse Responses API SSE semantic events into Gemini-compatible chunks.
|
|
144
|
+
*/
|
|
145
|
+
parseResponsesStream(bodyStream: ReadableStream<Uint8Array>): AsyncGenerator<GenerateContentResponse>;
|
|
146
|
+
private parseChatCompletionsStream;
|
|
147
|
+
/**
|
|
148
|
+
* Counts tokens.
|
|
149
|
+
*/
|
|
150
|
+
countTokens(_request: CountTokensParameters): Promise<CountTokensResponse>;
|
|
151
|
+
/**
|
|
152
|
+
* Embeds content.
|
|
153
|
+
*/
|
|
154
|
+
embedContent(_request: EmbedContentParameters): Promise<EmbedContentResponse>;
|
|
155
|
+
}
|
|
156
|
+
export {};
|