@a3s-lab/code 0.6.0 → 0.7.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.
Files changed (52) hide show
  1. package/index.d.ts +87 -0
  2. package/index.darwin-arm64.node +0 -0
  3. package/index.darwin-x64.node +0 -0
  4. package/index.js +128 -0
  5. package/index.linux-arm64-gnu.node +0 -0
  6. package/index.linux-arm64-musl.node +0 -0
  7. package/index.linux-x64-gnu.node +0 -0
  8. package/index.linux-x64-musl.node +0 -0
  9. package/package.json +27 -34
  10. package/LICENSE +0 -21
  11. package/README.md +0 -764
  12. package/dist/chat.d.ts +0 -97
  13. package/dist/chat.d.ts.map +0 -1
  14. package/dist/chat.js +0 -179
  15. package/dist/chat.js.map +0 -1
  16. package/dist/client.d.ts +0 -1356
  17. package/dist/client.d.ts.map +0 -1
  18. package/dist/client.js +0 -1014
  19. package/dist/client.js.map +0 -1
  20. package/dist/config.d.ts +0 -106
  21. package/dist/config.d.ts.map +0 -1
  22. package/dist/config.js +0 -142
  23. package/dist/config.js.map +0 -1
  24. package/dist/generate.d.ts +0 -130
  25. package/dist/generate.d.ts.map +0 -1
  26. package/dist/generate.js +0 -283
  27. package/dist/generate.js.map +0 -1
  28. package/dist/index.d.ts +0 -54
  29. package/dist/index.d.ts.map +0 -1
  30. package/dist/index.js +0 -60
  31. package/dist/index.js.map +0 -1
  32. package/dist/message.d.ts +0 -157
  33. package/dist/message.d.ts.map +0 -1
  34. package/dist/message.js +0 -279
  35. package/dist/message.js.map +0 -1
  36. package/dist/openai-compat.d.ts +0 -186
  37. package/dist/openai-compat.d.ts.map +0 -1
  38. package/dist/openai-compat.js +0 -263
  39. package/dist/openai-compat.js.map +0 -1
  40. package/dist/provider.d.ts +0 -64
  41. package/dist/provider.d.ts.map +0 -1
  42. package/dist/provider.js +0 -60
  43. package/dist/provider.js.map +0 -1
  44. package/dist/session.d.ts +0 -573
  45. package/dist/session.d.ts.map +0 -1
  46. package/dist/session.js +0 -1153
  47. package/dist/session.js.map +0 -1
  48. package/dist/tool.d.ts +0 -106
  49. package/dist/tool.d.ts.map +0 -1
  50. package/dist/tool.js +0 -71
  51. package/dist/tool.js.map +0 -1
  52. package/proto/code_agent.proto +0 -1851
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"message.js","sourceRoot":"","sources":["../ts/message.ts"],"names":[],"mappings":"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"}
@@ -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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"}