@a3s-lab/code 0.5.0 → 0.7.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.
- package/index.d.ts +87 -0
- package/index.darwin-arm64.node +0 -0
- package/index.darwin-x64.node +0 -0
- package/index.js +128 -0
- package/index.linux-arm64-gnu.node +0 -0
- package/index.linux-arm64-musl.node +0 -0
- package/index.linux-x64-gnu.node +0 -0
- package/index.linux-x64-musl.node +0 -0
- package/package.json +27 -34
- package/LICENSE +0 -21
- package/README.md +0 -764
- package/dist/chat.d.ts +0 -97
- package/dist/chat.d.ts.map +0 -1
- package/dist/chat.js +0 -179
- package/dist/chat.js.map +0 -1
- package/dist/client.d.ts +0 -1356
- package/dist/client.d.ts.map +0 -1
- package/dist/client.js +0 -1014
- package/dist/client.js.map +0 -1
- package/dist/config.d.ts +0 -106
- package/dist/config.d.ts.map +0 -1
- package/dist/config.js +0 -142
- package/dist/config.js.map +0 -1
- package/dist/generate.d.ts +0 -130
- package/dist/generate.d.ts.map +0 -1
- package/dist/generate.js +0 -283
- package/dist/generate.js.map +0 -1
- package/dist/index.d.ts +0 -54
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -60
- package/dist/index.js.map +0 -1
- package/dist/message.d.ts +0 -157
- package/dist/message.d.ts.map +0 -1
- package/dist/message.js +0 -279
- package/dist/message.js.map +0 -1
- package/dist/openai-compat.d.ts +0 -186
- package/dist/openai-compat.d.ts.map +0 -1
- package/dist/openai-compat.js +0 -263
- package/dist/openai-compat.js.map +0 -1
- package/dist/provider.d.ts +0 -64
- package/dist/provider.d.ts.map +0 -1
- package/dist/provider.js +0 -60
- package/dist/provider.js.map +0 -1
- package/dist/session.d.ts +0 -573
- package/dist/session.d.ts.map +0 -1
- package/dist/session.js +0 -1153
- package/dist/session.js.map +0 -1
- package/dist/tool.d.ts +0 -106
- package/dist/tool.d.ts.map +0 -1
- package/dist/tool.js +0 -71
- package/dist/tool.js.map +0 -1
- package/proto/code_agent.proto +0 -1754
package/dist/message.js
DELETED
|
@@ -1,279 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* UIMessage / ModelMessage Conversion Layer
|
|
3
|
-
*
|
|
4
|
-
* Vercel AI SDK-style message types for frontend ↔ backend conversion.
|
|
5
|
-
*
|
|
6
|
-
* - UIMessage: Frontend format with id, createdAt, parts (for rendering)
|
|
7
|
-
* - ModelMessage: Backend format with role, content (for LLM)
|
|
8
|
-
*
|
|
9
|
-
* @example
|
|
10
|
-
* ```typescript
|
|
11
|
-
* import { convertToModelMessages, convertToUIMessages } from '@a3s-lab/code';
|
|
12
|
-
*
|
|
13
|
-
* // Frontend → Backend (before calling generateText/streamText)
|
|
14
|
-
* const modelMessages = convertToModelMessages(uiMessages);
|
|
15
|
-
* const { text } = await generateText({ model, messages: modelMessages });
|
|
16
|
-
*
|
|
17
|
-
* // Backend → Frontend (after receiving response)
|
|
18
|
-
* const uiMessages = convertToUIMessages(modelMessages);
|
|
19
|
-
* ```
|
|
20
|
-
*/
|
|
21
|
-
// ============================================================================
|
|
22
|
-
// Conversion: UIMessage → ModelMessage
|
|
23
|
-
// ============================================================================
|
|
24
|
-
/**
|
|
25
|
-
* Convert a single UIMessage to one or more ModelMessages.
|
|
26
|
-
*
|
|
27
|
-
* A single UIMessage may produce multiple ModelMessages when it contains
|
|
28
|
-
* tool invocations (assistant message + tool result messages).
|
|
29
|
-
*/
|
|
30
|
-
function uiMessageToModelMessages(uiMessage) {
|
|
31
|
-
const messages = [];
|
|
32
|
-
if (uiMessage.role === 'system') {
|
|
33
|
-
messages.push({ role: 'system', content: uiMessage.content });
|
|
34
|
-
return messages;
|
|
35
|
-
}
|
|
36
|
-
if (uiMessage.role === 'user') {
|
|
37
|
-
// Extract text from parts, fall back to content
|
|
38
|
-
const text = uiMessage.parts
|
|
39
|
-
.filter((p) => p.type === 'text')
|
|
40
|
-
.map(p => p.text)
|
|
41
|
-
.join('\n') || uiMessage.content;
|
|
42
|
-
messages.push({ role: 'user', content: text });
|
|
43
|
-
return messages;
|
|
44
|
-
}
|
|
45
|
-
// Assistant message — may contain text + tool invocations
|
|
46
|
-
if (uiMessage.role === 'assistant') {
|
|
47
|
-
const textParts = uiMessage.parts.filter((p) => p.type === 'text');
|
|
48
|
-
const toolParts = uiMessage.parts.filter((p) => p.type === 'tool-invocation');
|
|
49
|
-
const text = textParts.map(p => p.text).join('\n') || uiMessage.content;
|
|
50
|
-
// Build tool calls from tool invocation parts
|
|
51
|
-
const toolCalls = toolParts
|
|
52
|
-
.filter(p => p.toolInvocation.state === 'call' || p.toolInvocation.state === 'result')
|
|
53
|
-
.map(p => ({
|
|
54
|
-
id: p.toolInvocation.toolCallId,
|
|
55
|
-
name: p.toolInvocation.toolName,
|
|
56
|
-
arguments: JSON.stringify(p.toolInvocation.args),
|
|
57
|
-
result: p.toolInvocation.state === 'result' && p.toolInvocation.result
|
|
58
|
-
? {
|
|
59
|
-
success: true,
|
|
60
|
-
output: typeof p.toolInvocation.result === 'string'
|
|
61
|
-
? p.toolInvocation.result
|
|
62
|
-
: JSON.stringify(p.toolInvocation.result),
|
|
63
|
-
error: '',
|
|
64
|
-
metadata: {},
|
|
65
|
-
}
|
|
66
|
-
: undefined,
|
|
67
|
-
}));
|
|
68
|
-
const assistantMsg = {
|
|
69
|
-
role: 'assistant',
|
|
70
|
-
content: text,
|
|
71
|
-
};
|
|
72
|
-
if (toolCalls.length > 0) {
|
|
73
|
-
assistantMsg.toolCalls = toolCalls;
|
|
74
|
-
}
|
|
75
|
-
messages.push(assistantMsg);
|
|
76
|
-
// Add tool result messages for completed invocations
|
|
77
|
-
for (const tp of toolParts) {
|
|
78
|
-
if (tp.toolInvocation.state === 'result' && tp.toolInvocation.result !== undefined) {
|
|
79
|
-
messages.push({
|
|
80
|
-
role: 'tool',
|
|
81
|
-
content: typeof tp.toolInvocation.result === 'string'
|
|
82
|
-
? tp.toolInvocation.result
|
|
83
|
-
: JSON.stringify(tp.toolInvocation.result),
|
|
84
|
-
toolCallId: tp.toolInvocation.toolCallId,
|
|
85
|
-
toolName: tp.toolInvocation.toolName,
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
return messages;
|
|
91
|
-
}
|
|
92
|
-
/**
|
|
93
|
-
* Convert UIMessage[] to ModelMessage[] for use with generateText/streamText.
|
|
94
|
-
*
|
|
95
|
-
* This is the primary conversion function for frontend → backend message flow.
|
|
96
|
-
*
|
|
97
|
-
* @example
|
|
98
|
-
* ```typescript
|
|
99
|
-
* import { convertToModelMessages, generateText } from '@a3s-lab/code';
|
|
100
|
-
*
|
|
101
|
-
* // In your API route handler:
|
|
102
|
-
* const modelMessages = convertToModelMessages(uiMessages);
|
|
103
|
-
* const { text } = await generateText({
|
|
104
|
-
* model: openai('gpt-4o'),
|
|
105
|
-
* messages: modelMessages,
|
|
106
|
-
* });
|
|
107
|
-
* ```
|
|
108
|
-
*/
|
|
109
|
-
export function convertToModelMessages(uiMessages) {
|
|
110
|
-
return uiMessages.flatMap(uiMessageToModelMessages);
|
|
111
|
-
}
|
|
112
|
-
// ============================================================================
|
|
113
|
-
// Conversion: ModelMessage → UIMessage
|
|
114
|
-
// ============================================================================
|
|
115
|
-
let _idCounter = 0;
|
|
116
|
-
function generateId() {
|
|
117
|
-
return `msg-${Date.now()}-${++_idCounter}`;
|
|
118
|
-
}
|
|
119
|
-
/**
|
|
120
|
-
* Convert ModelMessage[] to UIMessage[] for frontend rendering.
|
|
121
|
-
*
|
|
122
|
-
* Groups assistant messages with their tool results into single UIMessages
|
|
123
|
-
* with structured parts.
|
|
124
|
-
*
|
|
125
|
-
* @example
|
|
126
|
-
* ```typescript
|
|
127
|
-
* import { convertToUIMessages } from '@a3s-lab/code';
|
|
128
|
-
*
|
|
129
|
-
* const uiMessages = convertToUIMessages(response.messages);
|
|
130
|
-
* // Render uiMessages in your chat UI
|
|
131
|
-
* ```
|
|
132
|
-
*/
|
|
133
|
-
export function convertToUIMessages(modelMessages) {
|
|
134
|
-
const uiMessages = [];
|
|
135
|
-
let i = 0;
|
|
136
|
-
while (i < modelMessages.length) {
|
|
137
|
-
const msg = modelMessages[i];
|
|
138
|
-
if (msg.role === 'system') {
|
|
139
|
-
uiMessages.push({
|
|
140
|
-
id: generateId(),
|
|
141
|
-
role: 'system',
|
|
142
|
-
content: msg.content,
|
|
143
|
-
parts: [{ type: 'text', text: msg.content }],
|
|
144
|
-
createdAt: new Date(),
|
|
145
|
-
});
|
|
146
|
-
i++;
|
|
147
|
-
continue;
|
|
148
|
-
}
|
|
149
|
-
if (msg.role === 'user') {
|
|
150
|
-
uiMessages.push({
|
|
151
|
-
id: generateId(),
|
|
152
|
-
role: 'user',
|
|
153
|
-
content: msg.content,
|
|
154
|
-
parts: [{ type: 'text', text: msg.content }],
|
|
155
|
-
createdAt: new Date(),
|
|
156
|
-
});
|
|
157
|
-
i++;
|
|
158
|
-
continue;
|
|
159
|
-
}
|
|
160
|
-
if (msg.role === 'assistant') {
|
|
161
|
-
const parts = [];
|
|
162
|
-
// Add text part
|
|
163
|
-
if (msg.content) {
|
|
164
|
-
parts.push({ type: 'text', text: msg.content });
|
|
165
|
-
}
|
|
166
|
-
// Add tool invocation parts
|
|
167
|
-
if (msg.toolCalls) {
|
|
168
|
-
for (const tc of msg.toolCalls) {
|
|
169
|
-
const args = tc.arguments ? JSON.parse(tc.arguments) : {};
|
|
170
|
-
// Look ahead for matching tool result
|
|
171
|
-
let result = undefined;
|
|
172
|
-
let state = 'call';
|
|
173
|
-
for (let j = i + 1; j < modelMessages.length; j++) {
|
|
174
|
-
const next = modelMessages[j];
|
|
175
|
-
if (next.role === 'tool' && next.toolCallId === tc.id) {
|
|
176
|
-
try {
|
|
177
|
-
result = JSON.parse(next.content);
|
|
178
|
-
}
|
|
179
|
-
catch {
|
|
180
|
-
result = next.content;
|
|
181
|
-
}
|
|
182
|
-
state = 'result';
|
|
183
|
-
break;
|
|
184
|
-
}
|
|
185
|
-
if (next.role !== 'tool')
|
|
186
|
-
break;
|
|
187
|
-
}
|
|
188
|
-
parts.push({
|
|
189
|
-
type: 'tool-invocation',
|
|
190
|
-
toolInvocation: {
|
|
191
|
-
toolCallId: tc.id,
|
|
192
|
-
toolName: tc.name,
|
|
193
|
-
args,
|
|
194
|
-
state,
|
|
195
|
-
result,
|
|
196
|
-
},
|
|
197
|
-
});
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
uiMessages.push({
|
|
201
|
-
id: generateId(),
|
|
202
|
-
role: 'assistant',
|
|
203
|
-
content: msg.content,
|
|
204
|
-
parts,
|
|
205
|
-
createdAt: new Date(),
|
|
206
|
-
});
|
|
207
|
-
i++;
|
|
208
|
-
// Skip consumed tool result messages
|
|
209
|
-
while (i < modelMessages.length && modelMessages[i].role === 'tool') {
|
|
210
|
-
i++;
|
|
211
|
-
}
|
|
212
|
-
continue;
|
|
213
|
-
}
|
|
214
|
-
// Standalone tool message (shouldn't happen normally, but handle gracefully)
|
|
215
|
-
if (msg.role === 'tool') {
|
|
216
|
-
i++;
|
|
217
|
-
continue;
|
|
218
|
-
}
|
|
219
|
-
i++;
|
|
220
|
-
}
|
|
221
|
-
return uiMessages;
|
|
222
|
-
}
|
|
223
|
-
// ============================================================================
|
|
224
|
-
// Conversion: A3S Message ↔ ModelMessage
|
|
225
|
-
// ============================================================================
|
|
226
|
-
/**
|
|
227
|
-
* Convert A3S Message to ModelMessage.
|
|
228
|
-
*/
|
|
229
|
-
export function a3sMessageToModel(msg) {
|
|
230
|
-
switch (msg.role) {
|
|
231
|
-
case 'system':
|
|
232
|
-
return { role: 'system', content: msg.content };
|
|
233
|
-
case 'user':
|
|
234
|
-
return { role: 'user', content: msg.content };
|
|
235
|
-
case 'assistant':
|
|
236
|
-
return { role: 'assistant', content: msg.content };
|
|
237
|
-
case 'tool':
|
|
238
|
-
return { role: 'tool', content: msg.content };
|
|
239
|
-
default:
|
|
240
|
-
return { role: 'user', content: msg.content };
|
|
241
|
-
}
|
|
242
|
-
}
|
|
243
|
-
/**
|
|
244
|
-
* Convert ModelMessage to A3S Message.
|
|
245
|
-
*/
|
|
246
|
-
export function modelMessageToA3s(msg) {
|
|
247
|
-
return {
|
|
248
|
-
role: msg.role,
|
|
249
|
-
content: msg.content,
|
|
250
|
-
};
|
|
251
|
-
}
|
|
252
|
-
/**
|
|
253
|
-
* Convert A3S Message[] to ModelMessage[].
|
|
254
|
-
*/
|
|
255
|
-
export function a3sMessagesToModel(messages) {
|
|
256
|
-
return messages.map(a3sMessageToModel);
|
|
257
|
-
}
|
|
258
|
-
/**
|
|
259
|
-
* Convert ModelMessage[] to A3S Message[].
|
|
260
|
-
*/
|
|
261
|
-
export function modelMessagesToA3s(messages) {
|
|
262
|
-
return messages.map(modelMessageToA3s);
|
|
263
|
-
}
|
|
264
|
-
// ============================================================================
|
|
265
|
-
// Conversion: A3S Message ↔ UIMessage (shorthand)
|
|
266
|
-
// ============================================================================
|
|
267
|
-
/**
|
|
268
|
-
* Convert A3S Message[] to UIMessage[] (shorthand for a3sMessagesToModel + convertToUIMessages).
|
|
269
|
-
*/
|
|
270
|
-
export function a3sMessagesToUI(messages) {
|
|
271
|
-
return convertToUIMessages(a3sMessagesToModel(messages));
|
|
272
|
-
}
|
|
273
|
-
/**
|
|
274
|
-
* Convert UIMessage[] to A3S Message[] (shorthand for convertToModelMessages + modelMessagesToA3s).
|
|
275
|
-
*/
|
|
276
|
-
export function uiMessagesToA3s(uiMessages) {
|
|
277
|
-
return modelMessagesToA3s(convertToModelMessages(uiMessages));
|
|
278
|
-
}
|
|
279
|
-
//# sourceMappingURL=message.js.map
|
package/dist/message.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"message.js","sourceRoot":"","sources":["../ts/message.ts"],"names":[],"mappings":"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"}
|
package/dist/openai-compat.d.ts
DELETED
|
@@ -1,186 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* OpenAI-Compatible Types and Conversion Layer
|
|
3
|
-
*
|
|
4
|
-
* This module provides OpenAI-compatible type definitions and conversion
|
|
5
|
-
* functions to allow seamless integration with OpenAI-style APIs.
|
|
6
|
-
*
|
|
7
|
-
* OpenAI Message Format:
|
|
8
|
-
* {
|
|
9
|
-
* role: "user" | "assistant" | "system" | "tool",
|
|
10
|
-
* content: string | ContentPart[],
|
|
11
|
-
* name?: string,
|
|
12
|
-
* tool_calls?: ToolCall[],
|
|
13
|
-
* tool_call_id?: string,
|
|
14
|
-
* }
|
|
15
|
-
*/
|
|
16
|
-
import type { Message, MessageRole, ToolCall, GenerateResponse, GenerateChunk, FinishReason, Usage } from './client.js';
|
|
17
|
-
/**
|
|
18
|
-
* OpenAI-compatible message role
|
|
19
|
-
*/
|
|
20
|
-
export type OpenAIRole = 'user' | 'assistant' | 'system' | 'tool' | 'function';
|
|
21
|
-
/**
|
|
22
|
-
* OpenAI-compatible text content part
|
|
23
|
-
*/
|
|
24
|
-
export interface OpenAITextContent {
|
|
25
|
-
type: 'text';
|
|
26
|
-
text: string;
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* OpenAI-compatible image content part
|
|
30
|
-
*/
|
|
31
|
-
export interface OpenAIImageContent {
|
|
32
|
-
type: 'image_url';
|
|
33
|
-
image_url: {
|
|
34
|
-
url: string;
|
|
35
|
-
detail?: 'auto' | 'low' | 'high';
|
|
36
|
-
};
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* OpenAI-compatible content part (union type)
|
|
40
|
-
*/
|
|
41
|
-
export type OpenAIContentPart = OpenAITextContent | OpenAIImageContent;
|
|
42
|
-
/**
|
|
43
|
-
* OpenAI-compatible tool call
|
|
44
|
-
*/
|
|
45
|
-
export interface OpenAIToolCall {
|
|
46
|
-
id: string;
|
|
47
|
-
type: 'function';
|
|
48
|
-
function: {
|
|
49
|
-
name: string;
|
|
50
|
-
arguments: string;
|
|
51
|
-
};
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* OpenAI-compatible message
|
|
55
|
-
*/
|
|
56
|
-
export interface OpenAIMessage {
|
|
57
|
-
role: OpenAIRole;
|
|
58
|
-
content: string | OpenAIContentPart[] | null;
|
|
59
|
-
name?: string;
|
|
60
|
-
tool_calls?: OpenAIToolCall[];
|
|
61
|
-
tool_call_id?: string;
|
|
62
|
-
}
|
|
63
|
-
/**
|
|
64
|
-
* OpenAI-compatible chat completion choice
|
|
65
|
-
*/
|
|
66
|
-
export interface OpenAIChoice {
|
|
67
|
-
index: number;
|
|
68
|
-
message: OpenAIMessage;
|
|
69
|
-
finish_reason: 'stop' | 'length' | 'tool_calls' | 'content_filter' | null;
|
|
70
|
-
}
|
|
71
|
-
/**
|
|
72
|
-
* OpenAI-compatible usage statistics
|
|
73
|
-
*/
|
|
74
|
-
export interface OpenAIUsage {
|
|
75
|
-
prompt_tokens: number;
|
|
76
|
-
completion_tokens: number;
|
|
77
|
-
total_tokens: number;
|
|
78
|
-
}
|
|
79
|
-
/**
|
|
80
|
-
* OpenAI-compatible chat completion response
|
|
81
|
-
*/
|
|
82
|
-
export interface OpenAIChatCompletion {
|
|
83
|
-
id: string;
|
|
84
|
-
object: 'chat.completion';
|
|
85
|
-
created: number;
|
|
86
|
-
model: string;
|
|
87
|
-
choices: OpenAIChoice[];
|
|
88
|
-
usage?: OpenAIUsage;
|
|
89
|
-
}
|
|
90
|
-
/**
|
|
91
|
-
* OpenAI-compatible streaming chunk delta
|
|
92
|
-
*/
|
|
93
|
-
export interface OpenAIDelta {
|
|
94
|
-
role?: OpenAIRole;
|
|
95
|
-
content?: string | null;
|
|
96
|
-
tool_calls?: Partial<OpenAIToolCall>[];
|
|
97
|
-
}
|
|
98
|
-
/**
|
|
99
|
-
* OpenAI-compatible streaming choice
|
|
100
|
-
*/
|
|
101
|
-
export interface OpenAIStreamChoice {
|
|
102
|
-
index: number;
|
|
103
|
-
delta: OpenAIDelta;
|
|
104
|
-
finish_reason: 'stop' | 'length' | 'tool_calls' | 'content_filter' | null;
|
|
105
|
-
}
|
|
106
|
-
/**
|
|
107
|
-
* OpenAI-compatible streaming chunk
|
|
108
|
-
*/
|
|
109
|
-
export interface OpenAIChatCompletionChunk {
|
|
110
|
-
id: string;
|
|
111
|
-
object: 'chat.completion.chunk';
|
|
112
|
-
created: number;
|
|
113
|
-
model: string;
|
|
114
|
-
choices: OpenAIStreamChoice[];
|
|
115
|
-
}
|
|
116
|
-
/**
|
|
117
|
-
* Convert OpenAI role to A3S MessageRole
|
|
118
|
-
* Since proto now uses OpenAI-compatible string roles, this is a simple passthrough
|
|
119
|
-
*/
|
|
120
|
-
export declare function openAIRoleToA3S(role: OpenAIRole): MessageRole;
|
|
121
|
-
/**
|
|
122
|
-
* Convert OpenAI message to A3S Message
|
|
123
|
-
*/
|
|
124
|
-
export declare function openAIMessageToA3S(msg: OpenAIMessage): Message;
|
|
125
|
-
/**
|
|
126
|
-
* Convert array of OpenAI messages to A3S Messages
|
|
127
|
-
*/
|
|
128
|
-
export declare function openAIMessagesToA3S(messages: OpenAIMessage[]): Message[];
|
|
129
|
-
/**
|
|
130
|
-
* Convert OpenAI tool call to A3S ToolCall
|
|
131
|
-
*/
|
|
132
|
-
export declare function openAIToolCallToA3S(toolCall: OpenAIToolCall): ToolCall;
|
|
133
|
-
/**
|
|
134
|
-
* Convert A3S MessageRole to OpenAI role
|
|
135
|
-
* Since proto now uses OpenAI-compatible string roles, this is a simple passthrough
|
|
136
|
-
*/
|
|
137
|
-
export declare function a3sRoleToOpenAI(role: MessageRole): OpenAIRole;
|
|
138
|
-
/**
|
|
139
|
-
* Convert A3S Message to OpenAI message
|
|
140
|
-
*/
|
|
141
|
-
export declare function a3sMessageToOpenAI(msg: Message): OpenAIMessage;
|
|
142
|
-
/**
|
|
143
|
-
* Convert A3S ToolCall to OpenAI tool call
|
|
144
|
-
*/
|
|
145
|
-
export declare function a3sToolCallToOpenAI(toolCall: ToolCall): OpenAIToolCall;
|
|
146
|
-
/**
|
|
147
|
-
* Convert A3S FinishReason to OpenAI finish_reason
|
|
148
|
-
* Since proto now uses OpenAI-compatible string values, this is a simple passthrough
|
|
149
|
-
*/
|
|
150
|
-
export declare function a3sFinishReasonToOpenAI(reason: FinishReason): 'stop' | 'length' | 'tool_calls' | 'content_filter' | null;
|
|
151
|
-
/**
|
|
152
|
-
* Convert A3S Usage to OpenAI usage
|
|
153
|
-
*/
|
|
154
|
-
export declare function a3sUsageToOpenAI(usage?: Usage): OpenAIUsage | undefined;
|
|
155
|
-
/**
|
|
156
|
-
* Convert A3S GenerateResponse to OpenAI ChatCompletion
|
|
157
|
-
*/
|
|
158
|
-
export declare function a3sResponseToOpenAI(response: GenerateResponse, model?: string): OpenAIChatCompletion;
|
|
159
|
-
/**
|
|
160
|
-
* Convert A3S GenerateChunk to OpenAI ChatCompletionChunk
|
|
161
|
-
* Since proto now uses OpenAI-compatible string values, conversion is simplified
|
|
162
|
-
*/
|
|
163
|
-
export declare function a3sChunkToOpenAI(chunk: GenerateChunk, model?: string): OpenAIChatCompletionChunk;
|
|
164
|
-
/**
|
|
165
|
-
* Check if a message uses OpenAI format (lowercase role)
|
|
166
|
-
* Since proto now uses OpenAI-compatible string roles, all messages are in OpenAI format
|
|
167
|
-
*/
|
|
168
|
-
export declare function isOpenAIFormat(msg: Message | OpenAIMessage): msg is OpenAIMessage;
|
|
169
|
-
/**
|
|
170
|
-
* Normalize message to A3S format (accepts both OpenAI and A3S formats)
|
|
171
|
-
* Since proto now uses OpenAI-compatible string roles, this is mostly a passthrough
|
|
172
|
-
*/
|
|
173
|
-
export declare function normalizeMessage(msg: Message | OpenAIMessage): Message;
|
|
174
|
-
/**
|
|
175
|
-
* Normalize array of messages to A3S format
|
|
176
|
-
*/
|
|
177
|
-
export declare function normalizeMessages(messages: (Message | OpenAIMessage)[]): Message[];
|
|
178
|
-
/**
|
|
179
|
-
* Type guard for OpenAI text content
|
|
180
|
-
*/
|
|
181
|
-
export declare function isTextContent(content: OpenAIContentPart): content is OpenAITextContent;
|
|
182
|
-
/**
|
|
183
|
-
* Type guard for OpenAI image content
|
|
184
|
-
*/
|
|
185
|
-
export declare function isImageContent(content: OpenAIContentPart): content is OpenAIImageContent;
|
|
186
|
-
//# sourceMappingURL=openai-compat.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"openai-compat.d.ts","sourceRoot":"","sources":["../ts/openai-compat.ts"],"names":[],"mappings":"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"}
|