@octavus/core 0.0.2 → 0.0.3
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/index.d.ts +138 -92
- package/dist/index.js +86 -58
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -34,7 +34,7 @@ type ToolHandler = (args: Record<string, unknown>) => Promise<unknown>;
|
|
|
34
34
|
type ToolHandlers = Record<string, ToolHandler>;
|
|
35
35
|
type ResourceUpdateHandler = (name: string, value: unknown) => Promise<void> | void;
|
|
36
36
|
type MessageRole = 'user' | 'assistant' | 'system';
|
|
37
|
-
type ToolCallStatus = 'pending' | '
|
|
37
|
+
type ToolCallStatus = 'pending' | 'streaming' | 'available' | 'error';
|
|
38
38
|
interface ToolCallInfo {
|
|
39
39
|
id: string;
|
|
40
40
|
name: string;
|
|
@@ -44,54 +44,93 @@ interface ToolCallInfo {
|
|
|
44
44
|
result?: unknown;
|
|
45
45
|
error?: string;
|
|
46
46
|
}
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
47
|
+
/** Signals the start of a response message */
|
|
48
|
+
interface StartEvent {
|
|
49
|
+
type: 'start';
|
|
50
|
+
messageId?: string;
|
|
51
|
+
}
|
|
52
|
+
/** Signals completion of streaming */
|
|
53
|
+
interface FinishEvent {
|
|
54
|
+
type: 'finish';
|
|
55
|
+
finishReason: FinishReason;
|
|
56
|
+
}
|
|
57
|
+
/** Error during streaming */
|
|
58
|
+
interface ErrorEvent {
|
|
59
|
+
type: 'error';
|
|
60
|
+
errorText: string;
|
|
50
61
|
}
|
|
62
|
+
type FinishReason = 'stop' | 'tool-calls' | 'length' | 'content-filter' | 'error' | 'other';
|
|
63
|
+
/** Start of text generation for a specific text part */
|
|
51
64
|
interface TextStartEvent {
|
|
52
65
|
type: 'text-start';
|
|
53
66
|
id: string;
|
|
54
67
|
}
|
|
68
|
+
/** Incremental text content */
|
|
69
|
+
interface TextDeltaEvent {
|
|
70
|
+
type: 'text-delta';
|
|
71
|
+
id: string;
|
|
72
|
+
delta: string;
|
|
73
|
+
}
|
|
74
|
+
/** End of text generation for a specific text part */
|
|
55
75
|
interface TextEndEvent {
|
|
56
76
|
type: 'text-end';
|
|
57
77
|
id: string;
|
|
58
78
|
}
|
|
59
|
-
|
|
60
|
-
|
|
79
|
+
/** Start of reasoning/thinking generation */
|
|
80
|
+
interface ReasoningStartEvent {
|
|
81
|
+
type: 'reasoning-start';
|
|
82
|
+
id: string;
|
|
83
|
+
}
|
|
84
|
+
/** Incremental reasoning content */
|
|
85
|
+
interface ReasoningDeltaEvent {
|
|
86
|
+
type: 'reasoning-delta';
|
|
87
|
+
id: string;
|
|
88
|
+
delta: string;
|
|
89
|
+
}
|
|
90
|
+
/** End of reasoning generation */
|
|
91
|
+
interface ReasoningEndEvent {
|
|
92
|
+
type: 'reasoning-end';
|
|
93
|
+
id: string;
|
|
94
|
+
}
|
|
95
|
+
/** Tool call initiated - input streaming will follow */
|
|
96
|
+
interface ToolInputStartEvent {
|
|
97
|
+
type: 'tool-input-start';
|
|
61
98
|
toolCallId: string;
|
|
62
99
|
toolName: string;
|
|
63
|
-
|
|
64
|
-
|
|
100
|
+
/** Human-readable title/description for the tool call */
|
|
101
|
+
title?: string;
|
|
65
102
|
}
|
|
66
|
-
|
|
67
|
-
|
|
103
|
+
/** Incremental tool input/arguments */
|
|
104
|
+
interface ToolInputDeltaEvent {
|
|
105
|
+
type: 'tool-input-delta';
|
|
68
106
|
toolCallId: string;
|
|
69
|
-
|
|
107
|
+
inputTextDelta: string;
|
|
70
108
|
}
|
|
71
|
-
|
|
72
|
-
|
|
109
|
+
/** Tool input streaming has ended */
|
|
110
|
+
interface ToolInputEndEvent {
|
|
111
|
+
type: 'tool-input-end';
|
|
73
112
|
toolCallId: string;
|
|
74
|
-
result: unknown;
|
|
75
113
|
}
|
|
76
|
-
|
|
77
|
-
|
|
114
|
+
/** Tool input is complete and available */
|
|
115
|
+
interface ToolInputAvailableEvent {
|
|
116
|
+
type: 'tool-input-available';
|
|
78
117
|
toolCallId: string;
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
interface ResourceUpdateEvent {
|
|
82
|
-
type: 'resource-update';
|
|
83
|
-
name: string;
|
|
84
|
-
value: unknown;
|
|
118
|
+
toolName: string;
|
|
119
|
+
input: unknown;
|
|
85
120
|
}
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
121
|
+
/** Tool output/result is available */
|
|
122
|
+
interface ToolOutputAvailableEvent {
|
|
123
|
+
type: 'tool-output-available';
|
|
124
|
+
toolCallId: string;
|
|
125
|
+
output: unknown;
|
|
89
126
|
}
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
127
|
+
/** Tool execution resulted in error */
|
|
128
|
+
interface ToolOutputErrorEvent {
|
|
129
|
+
type: 'tool-output-error';
|
|
130
|
+
toolCallId: string;
|
|
131
|
+
errorText: string;
|
|
94
132
|
}
|
|
133
|
+
/** Protocol block execution started */
|
|
95
134
|
interface BlockStartEvent {
|
|
96
135
|
type: 'block-start';
|
|
97
136
|
blockId: string;
|
|
@@ -101,26 +140,22 @@ interface BlockStartEvent {
|
|
|
101
140
|
description?: string;
|
|
102
141
|
/** Whether output goes to main chat (false for independent blocks) */
|
|
103
142
|
outputToChat?: boolean;
|
|
143
|
+
/** Thread name (undefined or 'main' for main thread) */
|
|
144
|
+
thread?: string;
|
|
104
145
|
}
|
|
146
|
+
/** Protocol block execution completed */
|
|
105
147
|
interface BlockEndEvent {
|
|
106
148
|
type: 'block-end';
|
|
107
149
|
blockId: string;
|
|
108
150
|
summary?: string;
|
|
109
151
|
}
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
interface ThinkingDeltaEvent {
|
|
116
|
-
type: 'thinking-delta';
|
|
117
|
-
content: string;
|
|
118
|
-
thread?: string;
|
|
119
|
-
}
|
|
120
|
-
interface ThinkingEndEvent {
|
|
121
|
-
type: 'thinking-end';
|
|
122
|
-
id: string;
|
|
152
|
+
/** Resource value updated */
|
|
153
|
+
interface ResourceUpdateEvent {
|
|
154
|
+
type: 'resource-update';
|
|
155
|
+
name: string;
|
|
156
|
+
value: unknown;
|
|
123
157
|
}
|
|
158
|
+
/** Pending tool call that needs external execution (continuation pattern) */
|
|
124
159
|
interface PendingToolCall {
|
|
125
160
|
toolCallId: string;
|
|
126
161
|
toolName: string;
|
|
@@ -140,6 +175,7 @@ interface ToolRequestEvent {
|
|
|
140
175
|
type: 'tool-request';
|
|
141
176
|
toolCalls: PendingToolCall[];
|
|
142
177
|
}
|
|
178
|
+
/** Result from tool execution (consumer's response to tool-request) */
|
|
143
179
|
interface ToolResult {
|
|
144
180
|
toolCallId: string;
|
|
145
181
|
toolName?: string;
|
|
@@ -148,11 +184,11 @@ interface ToolResult {
|
|
|
148
184
|
outputVariable?: string;
|
|
149
185
|
blockIndex?: number;
|
|
150
186
|
}
|
|
151
|
-
type StreamEvent =
|
|
187
|
+
type StreamEvent = StartEvent | FinishEvent | ErrorEvent | TextStartEvent | TextDeltaEvent | TextEndEvent | ReasoningStartEvent | ReasoningDeltaEvent | ReasoningEndEvent | ToolInputStartEvent | ToolInputDeltaEvent | ToolInputEndEvent | ToolInputAvailableEvent | ToolOutputAvailableEvent | ToolOutputErrorEvent | BlockStartEvent | BlockEndEvent | ResourceUpdateEvent | ToolRequestEvent;
|
|
152
188
|
/**
|
|
153
189
|
* Type of content in a message part
|
|
154
190
|
*/
|
|
155
|
-
type MessagePartType = 'text' | '
|
|
191
|
+
type MessagePartType = 'text' | 'reasoning' | 'tool-call';
|
|
156
192
|
/**
|
|
157
193
|
* A single part of a message, stored in order for proper display
|
|
158
194
|
*/
|
|
@@ -160,7 +196,7 @@ interface MessagePart {
|
|
|
160
196
|
type: MessagePartType;
|
|
161
197
|
/** Whether shown in chat UI (false = LLM sees it, user doesn't) */
|
|
162
198
|
visible: boolean;
|
|
163
|
-
/** Content for text/
|
|
199
|
+
/** Content for text/reasoning parts */
|
|
164
200
|
content?: string;
|
|
165
201
|
/** Tool call info for tool-call parts */
|
|
166
202
|
toolCall?: ToolCallInfo;
|
|
@@ -170,7 +206,7 @@ interface MessagePart {
|
|
|
170
206
|
interface ChatMessage {
|
|
171
207
|
id: string;
|
|
172
208
|
role: MessageRole;
|
|
173
|
-
/** Ordered parts for display - preserves
|
|
209
|
+
/** Ordered parts for display - preserves reasoning/tool/text order */
|
|
174
210
|
parts: MessagePart[];
|
|
175
211
|
createdAt: string;
|
|
176
212
|
/**
|
|
@@ -182,7 +218,7 @@ interface ChatMessage {
|
|
|
182
218
|
content: string;
|
|
183
219
|
toolCalls?: ToolCallInfo[];
|
|
184
220
|
reasoning?: string;
|
|
185
|
-
/** Required by Anthropic to verify
|
|
221
|
+
/** Required by Anthropic to verify reasoning blocks */
|
|
186
222
|
reasoningSignature?: string;
|
|
187
223
|
}
|
|
188
224
|
|
|
@@ -207,7 +243,7 @@ declare const chatMessageSchema: z.ZodObject<{
|
|
|
207
243
|
parts: z.ZodArray<z.ZodObject<{
|
|
208
244
|
type: z.ZodEnum<{
|
|
209
245
|
text: "text";
|
|
210
|
-
|
|
246
|
+
reasoning: "reasoning";
|
|
211
247
|
"tool-call": "tool-call";
|
|
212
248
|
}>;
|
|
213
249
|
visible: z.ZodBoolean;
|
|
@@ -219,8 +255,8 @@ declare const chatMessageSchema: z.ZodObject<{
|
|
|
219
255
|
arguments: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
220
256
|
status: z.ZodEnum<{
|
|
221
257
|
pending: "pending";
|
|
222
|
-
|
|
223
|
-
|
|
258
|
+
streaming: "streaming";
|
|
259
|
+
available: "available";
|
|
224
260
|
error: "error";
|
|
225
261
|
}>;
|
|
226
262
|
result: z.ZodOptional<z.ZodUnknown>;
|
|
@@ -238,8 +274,8 @@ declare const chatMessageSchema: z.ZodObject<{
|
|
|
238
274
|
arguments: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
239
275
|
status: z.ZodEnum<{
|
|
240
276
|
pending: "pending";
|
|
241
|
-
|
|
242
|
-
|
|
277
|
+
streaming: "streaming";
|
|
278
|
+
available: "available";
|
|
243
279
|
error: "error";
|
|
244
280
|
}>;
|
|
245
281
|
result: z.ZodOptional<z.ZodUnknown>;
|
|
@@ -249,46 +285,59 @@ declare const chatMessageSchema: z.ZodObject<{
|
|
|
249
285
|
reasoningSignature: z.ZodOptional<z.ZodString>;
|
|
250
286
|
}, z.core.$strip>;
|
|
251
287
|
declare function safeParseStreamEvent(data: unknown): z.ZodSafeParseResult<{
|
|
252
|
-
type: "
|
|
253
|
-
|
|
288
|
+
type: "start";
|
|
289
|
+
messageId?: string | undefined;
|
|
290
|
+
} | {
|
|
291
|
+
type: "finish";
|
|
292
|
+
finishReason: "error" | "stop" | "tool-calls" | "length" | "content-filter" | "other";
|
|
293
|
+
} | {
|
|
294
|
+
type: "error";
|
|
295
|
+
errorText: string;
|
|
254
296
|
} | {
|
|
255
297
|
type: "text-start";
|
|
256
298
|
id: string;
|
|
299
|
+
} | {
|
|
300
|
+
type: "text-delta";
|
|
301
|
+
id: string;
|
|
302
|
+
delta: string;
|
|
257
303
|
} | {
|
|
258
304
|
type: "text-end";
|
|
259
305
|
id: string;
|
|
260
306
|
} | {
|
|
261
|
-
type: "
|
|
307
|
+
type: "reasoning-start";
|
|
308
|
+
id: string;
|
|
309
|
+
} | {
|
|
310
|
+
type: "reasoning-delta";
|
|
311
|
+
id: string;
|
|
312
|
+
delta: string;
|
|
313
|
+
} | {
|
|
314
|
+
type: "reasoning-end";
|
|
315
|
+
id: string;
|
|
316
|
+
} | {
|
|
317
|
+
type: "tool-input-start";
|
|
262
318
|
toolCallId: string;
|
|
263
319
|
toolName: string;
|
|
264
|
-
|
|
265
|
-
toolDisplay?: "hidden" | "name" | "description" | "stream" | undefined;
|
|
320
|
+
title?: string | undefined;
|
|
266
321
|
} | {
|
|
267
|
-
type: "tool-
|
|
322
|
+
type: "tool-input-delta";
|
|
268
323
|
toolCallId: string;
|
|
269
|
-
|
|
324
|
+
inputTextDelta: string;
|
|
270
325
|
} | {
|
|
271
|
-
type: "tool-
|
|
326
|
+
type: "tool-input-end";
|
|
272
327
|
toolCallId: string;
|
|
273
|
-
result: unknown;
|
|
274
328
|
} | {
|
|
275
|
-
type: "tool-
|
|
329
|
+
type: "tool-input-available";
|
|
276
330
|
toolCallId: string;
|
|
277
|
-
|
|
331
|
+
toolName: string;
|
|
332
|
+
input: unknown;
|
|
278
333
|
} | {
|
|
279
|
-
type: "tool-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
toolName: string;
|
|
283
|
-
args: Record<string, unknown>;
|
|
284
|
-
source?: "llm" | "block" | undefined;
|
|
285
|
-
outputVariable?: string | undefined;
|
|
286
|
-
blockIndex?: number | undefined;
|
|
287
|
-
}[];
|
|
334
|
+
type: "tool-output-available";
|
|
335
|
+
toolCallId: string;
|
|
336
|
+
output: unknown;
|
|
288
337
|
} | {
|
|
289
|
-
type: "
|
|
290
|
-
|
|
291
|
-
|
|
338
|
+
type: "tool-output-error";
|
|
339
|
+
toolCallId: string;
|
|
340
|
+
errorText: string;
|
|
292
341
|
} | {
|
|
293
342
|
type: "block-start";
|
|
294
343
|
blockId: string;
|
|
@@ -297,28 +346,25 @@ declare function safeParseStreamEvent(data: unknown): z.ZodSafeParseResult<{
|
|
|
297
346
|
display: "hidden" | "name" | "description" | "stream";
|
|
298
347
|
description?: string | undefined;
|
|
299
348
|
outputToChat?: boolean | undefined;
|
|
349
|
+
thread?: string | undefined;
|
|
300
350
|
} | {
|
|
301
351
|
type: "block-end";
|
|
302
352
|
blockId: string;
|
|
303
353
|
summary?: string | undefined;
|
|
304
354
|
} | {
|
|
305
|
-
type: "
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
} | {
|
|
309
|
-
type: "thinking-delta";
|
|
310
|
-
content: string;
|
|
311
|
-
thread?: string | undefined;
|
|
312
|
-
} | {
|
|
313
|
-
type: "thinking-end";
|
|
314
|
-
id: string;
|
|
315
|
-
} | {
|
|
316
|
-
type: "done";
|
|
317
|
-
finishReason: "error" | "stop" | "tool-calls" | "length" | "unknown";
|
|
355
|
+
type: "resource-update";
|
|
356
|
+
name: string;
|
|
357
|
+
value: unknown;
|
|
318
358
|
} | {
|
|
319
|
-
type: "
|
|
320
|
-
|
|
321
|
-
|
|
359
|
+
type: "tool-request";
|
|
360
|
+
toolCalls: {
|
|
361
|
+
toolCallId: string;
|
|
362
|
+
toolName: string;
|
|
363
|
+
args: Record<string, unknown>;
|
|
364
|
+
source?: "llm" | "block" | undefined;
|
|
365
|
+
outputVariable?: string | undefined;
|
|
366
|
+
blockIndex?: number | undefined;
|
|
367
|
+
}[];
|
|
322
368
|
}>;
|
|
323
369
|
|
|
324
|
-
export { AppError, type BlockEndEvent, type BlockStartEvent, type ChatMessage, ConflictError, type DisplayMode, type
|
|
370
|
+
export { AppError, type BlockEndEvent, type BlockStartEvent, type ChatMessage, ConflictError, type DisplayMode, type ErrorEvent, type FinishEvent, type FinishReason, type MessagePart, type MessagePartType, type MessageRole, NotFoundError, type PendingToolCall, type ReasoningDeltaEvent, type ReasoningEndEvent, type ReasoningStartEvent, type ResourceUpdateEvent, type ResourceUpdateHandler, type StartEvent, type StreamEvent, type TextDeltaEvent, type TextEndEvent, type TextStartEvent, type ToolCallInfo, type ToolCallStatus, type ToolHandler, type ToolHandlers, type ToolInputAvailableEvent, type ToolInputDeltaEvent, type ToolInputEndEvent, type ToolInputStartEvent, type ToolOutputAvailableEvent, type ToolOutputErrorEvent, type ToolRequestEvent, type ToolResult, ValidationError, chatMessageSchema, generateId, safeParseStreamEvent, toolResultSchema };
|
package/dist/index.js
CHANGED
|
@@ -36,8 +36,15 @@ function generateId() {
|
|
|
36
36
|
import { z } from "zod";
|
|
37
37
|
var displayModeSchema = z.enum(["hidden", "name", "description", "stream"]);
|
|
38
38
|
var messageRoleSchema = z.enum(["user", "assistant", "system"]);
|
|
39
|
-
var toolCallStatusSchema = z.enum(["pending", "
|
|
40
|
-
var finishReasonSchema = z.enum([
|
|
39
|
+
var toolCallStatusSchema = z.enum(["pending", "streaming", "available", "error"]);
|
|
40
|
+
var finishReasonSchema = z.enum([
|
|
41
|
+
"stop",
|
|
42
|
+
"tool-calls",
|
|
43
|
+
"length",
|
|
44
|
+
"content-filter",
|
|
45
|
+
"error",
|
|
46
|
+
"other"
|
|
47
|
+
]);
|
|
41
48
|
var toolCallInfoSchema = z.object({
|
|
42
49
|
id: z.string(),
|
|
43
50
|
name: z.string(),
|
|
@@ -47,53 +54,74 @@ var toolCallInfoSchema = z.object({
|
|
|
47
54
|
result: z.unknown().optional(),
|
|
48
55
|
error: z.string().optional()
|
|
49
56
|
});
|
|
50
|
-
var
|
|
51
|
-
type: z.literal("
|
|
52
|
-
|
|
57
|
+
var startEventSchema = z.object({
|
|
58
|
+
type: z.literal("start"),
|
|
59
|
+
messageId: z.string().optional()
|
|
60
|
+
});
|
|
61
|
+
var finishEventSchema = z.object({
|
|
62
|
+
type: z.literal("finish"),
|
|
63
|
+
finishReason: finishReasonSchema
|
|
64
|
+
});
|
|
65
|
+
var errorEventSchema = z.object({
|
|
66
|
+
type: z.literal("error"),
|
|
67
|
+
errorText: z.string()
|
|
53
68
|
});
|
|
54
69
|
var textStartEventSchema = z.object({
|
|
55
70
|
type: z.literal("text-start"),
|
|
56
71
|
id: z.string()
|
|
57
72
|
});
|
|
73
|
+
var textDeltaEventSchema = z.object({
|
|
74
|
+
type: z.literal("text-delta"),
|
|
75
|
+
id: z.string(),
|
|
76
|
+
delta: z.string()
|
|
77
|
+
});
|
|
58
78
|
var textEndEventSchema = z.object({
|
|
59
79
|
type: z.literal("text-end"),
|
|
60
80
|
id: z.string()
|
|
61
81
|
});
|
|
62
|
-
var
|
|
63
|
-
type: z.literal("
|
|
82
|
+
var reasoningStartEventSchema = z.object({
|
|
83
|
+
type: z.literal("reasoning-start"),
|
|
84
|
+
id: z.string()
|
|
85
|
+
});
|
|
86
|
+
var reasoningDeltaEventSchema = z.object({
|
|
87
|
+
type: z.literal("reasoning-delta"),
|
|
88
|
+
id: z.string(),
|
|
89
|
+
delta: z.string()
|
|
90
|
+
});
|
|
91
|
+
var reasoningEndEventSchema = z.object({
|
|
92
|
+
type: z.literal("reasoning-end"),
|
|
93
|
+
id: z.string()
|
|
94
|
+
});
|
|
95
|
+
var toolInputStartEventSchema = z.object({
|
|
96
|
+
type: z.literal("tool-input-start"),
|
|
64
97
|
toolCallId: z.string(),
|
|
65
98
|
toolName: z.string(),
|
|
66
|
-
|
|
67
|
-
toolDisplay: displayModeSchema.optional()
|
|
99
|
+
title: z.string().optional()
|
|
68
100
|
});
|
|
69
|
-
var
|
|
70
|
-
type: z.literal("tool-
|
|
101
|
+
var toolInputDeltaEventSchema = z.object({
|
|
102
|
+
type: z.literal("tool-input-delta"),
|
|
71
103
|
toolCallId: z.string(),
|
|
72
|
-
|
|
104
|
+
inputTextDelta: z.string()
|
|
73
105
|
});
|
|
74
|
-
var
|
|
75
|
-
type: z.literal("tool-
|
|
76
|
-
toolCallId: z.string()
|
|
77
|
-
result: z.unknown()
|
|
106
|
+
var toolInputEndEventSchema = z.object({
|
|
107
|
+
type: z.literal("tool-input-end"),
|
|
108
|
+
toolCallId: z.string()
|
|
78
109
|
});
|
|
79
|
-
var
|
|
80
|
-
type: z.literal("tool-
|
|
110
|
+
var toolInputAvailableEventSchema = z.object({
|
|
111
|
+
type: z.literal("tool-input-available"),
|
|
81
112
|
toolCallId: z.string(),
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
var resourceUpdateEventSchema = z.object({
|
|
85
|
-
type: z.literal("resource-update"),
|
|
86
|
-
name: z.string(),
|
|
87
|
-
value: z.unknown()
|
|
113
|
+
toolName: z.string(),
|
|
114
|
+
input: z.unknown()
|
|
88
115
|
});
|
|
89
|
-
var
|
|
90
|
-
type: z.literal("
|
|
91
|
-
|
|
116
|
+
var toolOutputAvailableEventSchema = z.object({
|
|
117
|
+
type: z.literal("tool-output-available"),
|
|
118
|
+
toolCallId: z.string(),
|
|
119
|
+
output: z.unknown()
|
|
92
120
|
});
|
|
93
|
-
var
|
|
94
|
-
type: z.literal("error"),
|
|
95
|
-
|
|
96
|
-
|
|
121
|
+
var toolOutputErrorEventSchema = z.object({
|
|
122
|
+
type: z.literal("tool-output-error"),
|
|
123
|
+
toolCallId: z.string(),
|
|
124
|
+
errorText: z.string()
|
|
97
125
|
});
|
|
98
126
|
var blockStartEventSchema = z.object({
|
|
99
127
|
type: z.literal("block-start"),
|
|
@@ -102,26 +130,18 @@ var blockStartEventSchema = z.object({
|
|
|
102
130
|
blockType: z.string(),
|
|
103
131
|
display: displayModeSchema,
|
|
104
132
|
description: z.string().optional(),
|
|
105
|
-
outputToChat: z.boolean().optional()
|
|
133
|
+
outputToChat: z.boolean().optional(),
|
|
134
|
+
thread: z.string().optional()
|
|
106
135
|
});
|
|
107
136
|
var blockEndEventSchema = z.object({
|
|
108
137
|
type: z.literal("block-end"),
|
|
109
138
|
blockId: z.string(),
|
|
110
139
|
summary: z.string().optional()
|
|
111
140
|
});
|
|
112
|
-
var
|
|
113
|
-
type: z.literal("
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
});
|
|
117
|
-
var thinkingDeltaEventSchema = z.object({
|
|
118
|
-
type: z.literal("thinking-delta"),
|
|
119
|
-
content: z.string(),
|
|
120
|
-
thread: z.string().optional()
|
|
121
|
-
});
|
|
122
|
-
var thinkingEndEventSchema = z.object({
|
|
123
|
-
type: z.literal("thinking-end"),
|
|
124
|
-
id: z.string()
|
|
141
|
+
var resourceUpdateEventSchema = z.object({
|
|
142
|
+
type: z.literal("resource-update"),
|
|
143
|
+
name: z.string(),
|
|
144
|
+
value: z.unknown()
|
|
125
145
|
});
|
|
126
146
|
var pendingToolCallSchema = z.object({
|
|
127
147
|
toolCallId: z.string(),
|
|
@@ -144,24 +164,32 @@ var toolResultSchema = z.object({
|
|
|
144
164
|
blockIndex: z.number().optional()
|
|
145
165
|
});
|
|
146
166
|
var streamEventSchema = z.discriminatedUnion("type", [
|
|
147
|
-
|
|
167
|
+
// Lifecycle
|
|
168
|
+
startEventSchema,
|
|
169
|
+
finishEventSchema,
|
|
170
|
+
errorEventSchema,
|
|
171
|
+
// Text
|
|
148
172
|
textStartEventSchema,
|
|
173
|
+
textDeltaEventSchema,
|
|
149
174
|
textEndEventSchema,
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
175
|
+
// Reasoning
|
|
176
|
+
reasoningStartEventSchema,
|
|
177
|
+
reasoningDeltaEventSchema,
|
|
178
|
+
reasoningEndEventSchema,
|
|
179
|
+
// Tool Input/Output
|
|
180
|
+
toolInputStartEventSchema,
|
|
181
|
+
toolInputDeltaEventSchema,
|
|
182
|
+
toolInputEndEventSchema,
|
|
183
|
+
toolInputAvailableEventSchema,
|
|
184
|
+
toolOutputAvailableEventSchema,
|
|
185
|
+
toolOutputErrorEventSchema,
|
|
186
|
+
// Block Events
|
|
156
187
|
blockStartEventSchema,
|
|
157
188
|
blockEndEventSchema,
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
thinkingEndEventSchema,
|
|
161
|
-
doneEventSchema,
|
|
162
|
-
errorEventSchema
|
|
189
|
+
resourceUpdateEventSchema,
|
|
190
|
+
toolRequestEventSchema
|
|
163
191
|
]);
|
|
164
|
-
var messagePartTypeSchema = z.enum(["text", "
|
|
192
|
+
var messagePartTypeSchema = z.enum(["text", "reasoning", "tool-call"]);
|
|
165
193
|
var messagePartSchema = z.object({
|
|
166
194
|
type: messagePartTypeSchema,
|
|
167
195
|
visible: z.boolean(),
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/errors.ts","../src/utils.ts","../src/stream/schemas.ts"],"sourcesContent":["export class AppError extends Error {\n constructor(\n message: string,\n public code: string,\n public statusCode = 500,\n ) {\n super(message);\n this.name = 'AppError';\n }\n}\n\nexport class NotFoundError extends AppError {\n constructor(resource: string, id: string) {\n super(`${resource} not found: ${id}`, 'NOT_FOUND', 404);\n this.name = 'NotFoundError';\n }\n}\n\nexport class ValidationError extends AppError {\n constructor(\n message: string,\n public issues?: unknown[],\n ) {\n super(message, 'VALIDATION_ERROR', 400);\n this.name = 'ValidationError';\n }\n}\n\nexport class ConflictError extends AppError {\n constructor(resource: string, identifier: string) {\n super(`${resource} already exists: ${identifier}`, 'CONFLICT', 409);\n this.name = 'ConflictError';\n }\n}\n","/**\n * Generate a unique ID for messages, tool calls, etc.\n * Format: timestamp-random (e.g., \"1702345678901-abc123def\")\n */\nexport function generateId(): string {\n return `${Date.now()}-${Math.random().toString(36).substring(2, 9)}`;\n}\n","import { z } from 'zod';\n\nexport const displayModeSchema = z.enum(['hidden', 'name', 'description', 'stream']);\nexport const messageRoleSchema = z.enum(['user', 'assistant', 'system']);\nexport const toolCallStatusSchema = z.enum(['pending', 'in_progress', 'completed', 'error']);\nexport const finishReasonSchema = z.enum(['stop', 'tool-calls', 'length', 'error', 'unknown']);\n\n// ToolCallInfo\nexport const toolCallInfoSchema = z.object({\n id: z.string(),\n name: z.string(),\n description: z.string().optional(),\n arguments: z.record(z.string(), z.unknown()),\n status: toolCallStatusSchema,\n result: z.unknown().optional(),\n error: z.string().optional(),\n});\n\n// Stream Events\nexport const textDeltaEventSchema = z.object({\n type: z.literal('text-delta'),\n content: z.string(),\n});\n\nexport const textStartEventSchema = z.object({\n type: z.literal('text-start'),\n id: z.string(),\n});\n\nexport const textEndEventSchema = z.object({\n type: z.literal('text-end'),\n id: z.string(),\n});\n\nexport const toolCallStartEventSchema = z.object({\n type: z.literal('tool-call-start'),\n toolCallId: z.string(),\n toolName: z.string(),\n toolDescription: z.string().optional(),\n toolDisplay: displayModeSchema.optional(),\n});\n\nexport const toolCallArgsEventSchema = z.object({\n type: z.literal('tool-call-args'),\n toolCallId: z.string(),\n argsJson: z.string(),\n});\n\nexport const toolCallResultEventSchema = z.object({\n type: z.literal('tool-call-result'),\n toolCallId: z.string(),\n result: z.unknown(),\n});\n\nexport const toolCallErrorEventSchema = z.object({\n type: z.literal('tool-call-error'),\n toolCallId: z.string(),\n error: z.string(),\n});\n\nexport const resourceUpdateEventSchema = z.object({\n type: z.literal('resource-update'),\n name: z.string(),\n value: z.unknown(),\n});\n\nexport const doneEventSchema = z.object({\n type: z.literal('done'),\n finishReason: finishReasonSchema,\n});\n\nexport const errorEventSchema = z.object({\n type: z.literal('error'),\n message: z.string(),\n code: z.string().optional(),\n});\n\nexport const blockStartEventSchema = z.object({\n type: z.literal('block-start'),\n blockId: z.string(),\n blockName: z.string(),\n blockType: z.string(),\n display: displayModeSchema,\n description: z.string().optional(),\n outputToChat: z.boolean().optional(),\n});\n\nexport const blockEndEventSchema = z.object({\n type: z.literal('block-end'),\n blockId: z.string(),\n summary: z.string().optional(),\n});\n\nexport const thinkingStartEventSchema = z.object({\n type: z.literal('thinking-start'),\n id: z.string(),\n thread: z.string().optional(),\n});\n\nexport const thinkingDeltaEventSchema = z.object({\n type: z.literal('thinking-delta'),\n content: z.string(),\n thread: z.string().optional(),\n});\n\nexport const thinkingEndEventSchema = z.object({\n type: z.literal('thinking-end'),\n id: z.string(),\n});\n\nexport const pendingToolCallSchema = z.object({\n toolCallId: z.string(),\n toolName: z.string(),\n args: z.record(z.string(), z.unknown()),\n source: z.enum(['llm', 'block']).optional(),\n outputVariable: z.string().optional(),\n blockIndex: z.number().optional(),\n});\n\nexport const toolRequestEventSchema = z.object({\n type: z.literal('tool-request'),\n toolCalls: z.array(pendingToolCallSchema),\n});\n\n/**\n * Schema for tool result (consumer's response to tool-request)\n */\nexport const toolResultSchema = z.object({\n toolCallId: z.string(),\n toolName: z.string().optional(),\n result: z.unknown().optional(),\n error: z.string().optional(),\n outputVariable: z.string().optional(),\n blockIndex: z.number().optional(),\n});\n\n// Union of all stream events\nexport const streamEventSchema = z.discriminatedUnion('type', [\n textDeltaEventSchema,\n textStartEventSchema,\n textEndEventSchema,\n toolCallStartEventSchema,\n toolCallArgsEventSchema,\n toolCallResultEventSchema,\n toolCallErrorEventSchema,\n toolRequestEventSchema,\n resourceUpdateEventSchema,\n blockStartEventSchema,\n blockEndEventSchema,\n thinkingStartEventSchema,\n thinkingDeltaEventSchema,\n thinkingEndEventSchema,\n doneEventSchema,\n errorEventSchema,\n]);\n\n// Message types\nexport const messagePartTypeSchema = z.enum(['text', 'thinking', 'tool-call']);\n\nexport const messagePartSchema = z.object({\n type: messagePartTypeSchema,\n visible: z.boolean(),\n content: z.string().optional(),\n toolCall: toolCallInfoSchema.optional(),\n thread: z.string().optional(),\n});\n\nexport const chatMessageSchema = z.object({\n id: z.string(),\n role: messageRoleSchema,\n parts: z.array(messagePartSchema),\n createdAt: z.string(),\n visible: z.boolean().optional(),\n content: z.string(),\n toolCalls: z.array(toolCallInfoSchema).optional(),\n reasoning: z.string().optional(),\n reasoningSignature: z.string().optional(),\n});\n\nexport function safeParseStreamEvent(data: unknown) {\n return streamEventSchema.safeParse(data);\n}\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/errors.ts","../src/utils.ts","../src/stream/schemas.ts"],"sourcesContent":["export class AppError extends Error {\n constructor(\n message: string,\n public code: string,\n public statusCode = 500,\n ) {\n super(message);\n this.name = 'AppError';\n }\n}\n\nexport class NotFoundError extends AppError {\n constructor(resource: string, id: string) {\n super(`${resource} not found: ${id}`, 'NOT_FOUND', 404);\n this.name = 'NotFoundError';\n }\n}\n\nexport class ValidationError extends AppError {\n constructor(\n message: string,\n public issues?: unknown[],\n ) {\n super(message, 'VALIDATION_ERROR', 400);\n this.name = 'ValidationError';\n }\n}\n\nexport class ConflictError extends AppError {\n constructor(resource: string, identifier: string) {\n super(`${resource} already exists: ${identifier}`, 'CONFLICT', 409);\n this.name = 'ConflictError';\n }\n}\n","/**\n * Generate a unique ID for messages, tool calls, etc.\n * Format: timestamp-random (e.g., \"1702345678901-abc123def\")\n */\nexport function generateId(): string {\n return `${Date.now()}-${Math.random().toString(36).substring(2, 9)}`;\n}\n","import { z } from 'zod';\n\nexport const displayModeSchema = z.enum(['hidden', 'name', 'description', 'stream']);\nexport const messageRoleSchema = z.enum(['user', 'assistant', 'system']);\nexport const toolCallStatusSchema = z.enum(['pending', 'streaming', 'available', 'error']);\nexport const finishReasonSchema = z.enum([\n 'stop',\n 'tool-calls',\n 'length',\n 'content-filter',\n 'error',\n 'other',\n]);\n\nexport const toolCallInfoSchema = z.object({\n id: z.string(),\n name: z.string(),\n description: z.string().optional(),\n arguments: z.record(z.string(), z.unknown()),\n status: toolCallStatusSchema,\n result: z.unknown().optional(),\n error: z.string().optional(),\n});\n\n// =============================================================================\n// Lifecycle Events\n// =============================================================================\n\nexport const startEventSchema = z.object({\n type: z.literal('start'),\n messageId: z.string().optional(),\n});\n\nexport const finishEventSchema = z.object({\n type: z.literal('finish'),\n finishReason: finishReasonSchema,\n});\n\nexport const errorEventSchema = z.object({\n type: z.literal('error'),\n errorText: z.string(),\n});\n\n// =============================================================================\n// Text Events\n// =============================================================================\n\nexport const textStartEventSchema = z.object({\n type: z.literal('text-start'),\n id: z.string(),\n});\n\nexport const textDeltaEventSchema = z.object({\n type: z.literal('text-delta'),\n id: z.string(),\n delta: z.string(),\n});\n\nexport const textEndEventSchema = z.object({\n type: z.literal('text-end'),\n id: z.string(),\n});\n\n// =============================================================================\n// Reasoning Events\n// =============================================================================\n\nexport const reasoningStartEventSchema = z.object({\n type: z.literal('reasoning-start'),\n id: z.string(),\n});\n\nexport const reasoningDeltaEventSchema = z.object({\n type: z.literal('reasoning-delta'),\n id: z.string(),\n delta: z.string(),\n});\n\nexport const reasoningEndEventSchema = z.object({\n type: z.literal('reasoning-end'),\n id: z.string(),\n});\n\n// =============================================================================\n// Tool Events\n// =============================================================================\n\nexport const toolInputStartEventSchema = z.object({\n type: z.literal('tool-input-start'),\n toolCallId: z.string(),\n toolName: z.string(),\n title: z.string().optional(),\n});\n\nexport const toolInputDeltaEventSchema = z.object({\n type: z.literal('tool-input-delta'),\n toolCallId: z.string(),\n inputTextDelta: z.string(),\n});\n\nexport const toolInputEndEventSchema = z.object({\n type: z.literal('tool-input-end'),\n toolCallId: z.string(),\n});\n\nexport const toolInputAvailableEventSchema = z.object({\n type: z.literal('tool-input-available'),\n toolCallId: z.string(),\n toolName: z.string(),\n input: z.unknown(),\n});\n\nexport const toolOutputAvailableEventSchema = z.object({\n type: z.literal('tool-output-available'),\n toolCallId: z.string(),\n output: z.unknown(),\n});\n\nexport const toolOutputErrorEventSchema = z.object({\n type: z.literal('tool-output-error'),\n toolCallId: z.string(),\n errorText: z.string(),\n});\n\n// =============================================================================\n// Block Events\n// =============================================================================\n\nexport const blockStartEventSchema = z.object({\n type: z.literal('block-start'),\n blockId: z.string(),\n blockName: z.string(),\n blockType: z.string(),\n display: displayModeSchema,\n description: z.string().optional(),\n outputToChat: z.boolean().optional(),\n thread: z.string().optional(),\n});\n\nexport const blockEndEventSchema = z.object({\n type: z.literal('block-end'),\n blockId: z.string(),\n summary: z.string().optional(),\n});\n\nexport const resourceUpdateEventSchema = z.object({\n type: z.literal('resource-update'),\n name: z.string(),\n value: z.unknown(),\n});\n\nexport const pendingToolCallSchema = z.object({\n toolCallId: z.string(),\n toolName: z.string(),\n args: z.record(z.string(), z.unknown()),\n source: z.enum(['llm', 'block']).optional(),\n outputVariable: z.string().optional(),\n blockIndex: z.number().optional(),\n});\n\nexport const toolRequestEventSchema = z.object({\n type: z.literal('tool-request'),\n toolCalls: z.array(pendingToolCallSchema),\n});\n\n/**\n * Schema for tool result (consumer's response to tool-request)\n */\nexport const toolResultSchema = z.object({\n toolCallId: z.string(),\n toolName: z.string().optional(),\n result: z.unknown().optional(),\n error: z.string().optional(),\n outputVariable: z.string().optional(),\n blockIndex: z.number().optional(),\n});\n\n// =============================================================================\n// Union of all stream events\n// =============================================================================\n\nexport const streamEventSchema = z.discriminatedUnion('type', [\n // Lifecycle\n startEventSchema,\n finishEventSchema,\n errorEventSchema,\n // Text\n textStartEventSchema,\n textDeltaEventSchema,\n textEndEventSchema,\n // Reasoning\n reasoningStartEventSchema,\n reasoningDeltaEventSchema,\n reasoningEndEventSchema,\n // Tool Input/Output\n toolInputStartEventSchema,\n toolInputDeltaEventSchema,\n toolInputEndEventSchema,\n toolInputAvailableEventSchema,\n toolOutputAvailableEventSchema,\n toolOutputErrorEventSchema,\n // Block Events\n blockStartEventSchema,\n blockEndEventSchema,\n resourceUpdateEventSchema,\n toolRequestEventSchema,\n]);\n\n// =============================================================================\n// Message Types\n// =============================================================================\n\nexport const messagePartTypeSchema = z.enum(['text', 'reasoning', 'tool-call']);\n\nexport const messagePartSchema = z.object({\n type: messagePartTypeSchema,\n visible: z.boolean(),\n content: z.string().optional(),\n toolCall: toolCallInfoSchema.optional(),\n thread: z.string().optional(),\n});\n\nexport const chatMessageSchema = z.object({\n id: z.string(),\n role: messageRoleSchema,\n parts: z.array(messagePartSchema),\n createdAt: z.string(),\n visible: z.boolean().optional(),\n content: z.string(),\n toolCalls: z.array(toolCallInfoSchema).optional(),\n reasoning: z.string().optional(),\n reasoningSignature: z.string().optional(),\n});\n\nexport function safeParseStreamEvent(data: unknown) {\n return streamEventSchema.safeParse(data);\n}\n"],"mappings":";AAAO,IAAM,WAAN,cAAuB,MAAM;AAAA,EAClC,YACE,SACO,MACA,aAAa,KACpB;AACA,UAAM,OAAO;AAHN;AACA;AAGP,SAAK,OAAO;AAAA,EACd;AACF;AAEO,IAAM,gBAAN,cAA4B,SAAS;AAAA,EAC1C,YAAY,UAAkB,IAAY;AACxC,UAAM,GAAG,QAAQ,eAAe,EAAE,IAAI,aAAa,GAAG;AACtD,SAAK,OAAO;AAAA,EACd;AACF;AAEO,IAAM,kBAAN,cAA8B,SAAS;AAAA,EAC5C,YACE,SACO,QACP;AACA,UAAM,SAAS,oBAAoB,GAAG;AAF/B;AAGP,SAAK,OAAO;AAAA,EACd;AACF;AAEO,IAAM,gBAAN,cAA4B,SAAS;AAAA,EAC1C,YAAY,UAAkB,YAAoB;AAChD,UAAM,GAAG,QAAQ,oBAAoB,UAAU,IAAI,YAAY,GAAG;AAClE,SAAK,OAAO;AAAA,EACd;AACF;;;AC7BO,SAAS,aAAqB;AACnC,SAAO,GAAG,KAAK,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,SAAS,EAAE,EAAE,UAAU,GAAG,CAAC,CAAC;AACpE;;;ACNA,SAAS,SAAS;AAEX,IAAM,oBAAoB,EAAE,KAAK,CAAC,UAAU,QAAQ,eAAe,QAAQ,CAAC;AAC5E,IAAM,oBAAoB,EAAE,KAAK,CAAC,QAAQ,aAAa,QAAQ,CAAC;AAChE,IAAM,uBAAuB,EAAE,KAAK,CAAC,WAAW,aAAa,aAAa,OAAO,CAAC;AAClF,IAAM,qBAAqB,EAAE,KAAK;AAAA,EACvC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAEM,IAAM,qBAAqB,EAAE,OAAO;AAAA,EACzC,IAAI,EAAE,OAAO;AAAA,EACb,MAAM,EAAE,OAAO;AAAA,EACf,aAAa,EAAE,OAAO,EAAE,SAAS;AAAA,EACjC,WAAW,EAAE,OAAO,EAAE,OAAO,GAAG,EAAE,QAAQ,CAAC;AAAA,EAC3C,QAAQ;AAAA,EACR,QAAQ,EAAE,QAAQ,EAAE,SAAS;AAAA,EAC7B,OAAO,EAAE,OAAO,EAAE,SAAS;AAC7B,CAAC;AAMM,IAAM,mBAAmB,EAAE,OAAO;AAAA,EACvC,MAAM,EAAE,QAAQ,OAAO;AAAA,EACvB,WAAW,EAAE,OAAO,EAAE,SAAS;AACjC,CAAC;AAEM,IAAM,oBAAoB,EAAE,OAAO;AAAA,EACxC,MAAM,EAAE,QAAQ,QAAQ;AAAA,EACxB,cAAc;AAChB,CAAC;AAEM,IAAM,mBAAmB,EAAE,OAAO;AAAA,EACvC,MAAM,EAAE,QAAQ,OAAO;AAAA,EACvB,WAAW,EAAE,OAAO;AACtB,CAAC;AAMM,IAAM,uBAAuB,EAAE,OAAO;AAAA,EAC3C,MAAM,EAAE,QAAQ,YAAY;AAAA,EAC5B,IAAI,EAAE,OAAO;AACf,CAAC;AAEM,IAAM,uBAAuB,EAAE,OAAO;AAAA,EAC3C,MAAM,EAAE,QAAQ,YAAY;AAAA,EAC5B,IAAI,EAAE,OAAO;AAAA,EACb,OAAO,EAAE,OAAO;AAClB,CAAC;AAEM,IAAM,qBAAqB,EAAE,OAAO;AAAA,EACzC,MAAM,EAAE,QAAQ,UAAU;AAAA,EAC1B,IAAI,EAAE,OAAO;AACf,CAAC;AAMM,IAAM,4BAA4B,EAAE,OAAO;AAAA,EAChD,MAAM,EAAE,QAAQ,iBAAiB;AAAA,EACjC,IAAI,EAAE,OAAO;AACf,CAAC;AAEM,IAAM,4BAA4B,EAAE,OAAO;AAAA,EAChD,MAAM,EAAE,QAAQ,iBAAiB;AAAA,EACjC,IAAI,EAAE,OAAO;AAAA,EACb,OAAO,EAAE,OAAO;AAClB,CAAC;AAEM,IAAM,0BAA0B,EAAE,OAAO;AAAA,EAC9C,MAAM,EAAE,QAAQ,eAAe;AAAA,EAC/B,IAAI,EAAE,OAAO;AACf,CAAC;AAMM,IAAM,4BAA4B,EAAE,OAAO;AAAA,EAChD,MAAM,EAAE,QAAQ,kBAAkB;AAAA,EAClC,YAAY,EAAE,OAAO;AAAA,EACrB,UAAU,EAAE,OAAO;AAAA,EACnB,OAAO,EAAE,OAAO,EAAE,SAAS;AAC7B,CAAC;AAEM,IAAM,4BAA4B,EAAE,OAAO;AAAA,EAChD,MAAM,EAAE,QAAQ,kBAAkB;AAAA,EAClC,YAAY,EAAE,OAAO;AAAA,EACrB,gBAAgB,EAAE,OAAO;AAC3B,CAAC;AAEM,IAAM,0BAA0B,EAAE,OAAO;AAAA,EAC9C,MAAM,EAAE,QAAQ,gBAAgB;AAAA,EAChC,YAAY,EAAE,OAAO;AACvB,CAAC;AAEM,IAAM,gCAAgC,EAAE,OAAO;AAAA,EACpD,MAAM,EAAE,QAAQ,sBAAsB;AAAA,EACtC,YAAY,EAAE,OAAO;AAAA,EACrB,UAAU,EAAE,OAAO;AAAA,EACnB,OAAO,EAAE,QAAQ;AACnB,CAAC;AAEM,IAAM,iCAAiC,EAAE,OAAO;AAAA,EACrD,MAAM,EAAE,QAAQ,uBAAuB;AAAA,EACvC,YAAY,EAAE,OAAO;AAAA,EACrB,QAAQ,EAAE,QAAQ;AACpB,CAAC;AAEM,IAAM,6BAA6B,EAAE,OAAO;AAAA,EACjD,MAAM,EAAE,QAAQ,mBAAmB;AAAA,EACnC,YAAY,EAAE,OAAO;AAAA,EACrB,WAAW,EAAE,OAAO;AACtB,CAAC;AAMM,IAAM,wBAAwB,EAAE,OAAO;AAAA,EAC5C,MAAM,EAAE,QAAQ,aAAa;AAAA,EAC7B,SAAS,EAAE,OAAO;AAAA,EAClB,WAAW,EAAE,OAAO;AAAA,EACpB,WAAW,EAAE,OAAO;AAAA,EACpB,SAAS;AAAA,EACT,aAAa,EAAE,OAAO,EAAE,SAAS;AAAA,EACjC,cAAc,EAAE,QAAQ,EAAE,SAAS;AAAA,EACnC,QAAQ,EAAE,OAAO,EAAE,SAAS;AAC9B,CAAC;AAEM,IAAM,sBAAsB,EAAE,OAAO;AAAA,EAC1C,MAAM,EAAE,QAAQ,WAAW;AAAA,EAC3B,SAAS,EAAE,OAAO;AAAA,EAClB,SAAS,EAAE,OAAO,EAAE,SAAS;AAC/B,CAAC;AAEM,IAAM,4BAA4B,EAAE,OAAO;AAAA,EAChD,MAAM,EAAE,QAAQ,iBAAiB;AAAA,EACjC,MAAM,EAAE,OAAO;AAAA,EACf,OAAO,EAAE,QAAQ;AACnB,CAAC;AAEM,IAAM,wBAAwB,EAAE,OAAO;AAAA,EAC5C,YAAY,EAAE,OAAO;AAAA,EACrB,UAAU,EAAE,OAAO;AAAA,EACnB,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,EAAE,QAAQ,CAAC;AAAA,EACtC,QAAQ,EAAE,KAAK,CAAC,OAAO,OAAO,CAAC,EAAE,SAAS;AAAA,EAC1C,gBAAgB,EAAE,OAAO,EAAE,SAAS;AAAA,EACpC,YAAY,EAAE,OAAO,EAAE,SAAS;AAClC,CAAC;AAEM,IAAM,yBAAyB,EAAE,OAAO;AAAA,EAC7C,MAAM,EAAE,QAAQ,cAAc;AAAA,EAC9B,WAAW,EAAE,MAAM,qBAAqB;AAC1C,CAAC;AAKM,IAAM,mBAAmB,EAAE,OAAO;AAAA,EACvC,YAAY,EAAE,OAAO;AAAA,EACrB,UAAU,EAAE,OAAO,EAAE,SAAS;AAAA,EAC9B,QAAQ,EAAE,QAAQ,EAAE,SAAS;AAAA,EAC7B,OAAO,EAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,gBAAgB,EAAE,OAAO,EAAE,SAAS;AAAA,EACpC,YAAY,EAAE,OAAO,EAAE,SAAS;AAClC,CAAC;AAMM,IAAM,oBAAoB,EAAE,mBAAmB,QAAQ;AAAA;AAAA,EAE5D;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAMM,IAAM,wBAAwB,EAAE,KAAK,CAAC,QAAQ,aAAa,WAAW,CAAC;AAEvE,IAAM,oBAAoB,EAAE,OAAO;AAAA,EACxC,MAAM;AAAA,EACN,SAAS,EAAE,QAAQ;AAAA,EACnB,SAAS,EAAE,OAAO,EAAE,SAAS;AAAA,EAC7B,UAAU,mBAAmB,SAAS;AAAA,EACtC,QAAQ,EAAE,OAAO,EAAE,SAAS;AAC9B,CAAC;AAEM,IAAM,oBAAoB,EAAE,OAAO;AAAA,EACxC,IAAI,EAAE,OAAO;AAAA,EACb,MAAM;AAAA,EACN,OAAO,EAAE,MAAM,iBAAiB;AAAA,EAChC,WAAW,EAAE,OAAO;AAAA,EACpB,SAAS,EAAE,QAAQ,EAAE,SAAS;AAAA,EAC9B,SAAS,EAAE,OAAO;AAAA,EAClB,WAAW,EAAE,MAAM,kBAAkB,EAAE,SAAS;AAAA,EAChD,WAAW,EAAE,OAAO,EAAE,SAAS;AAAA,EAC/B,oBAAoB,EAAE,OAAO,EAAE,SAAS;AAC1C,CAAC;AAEM,SAAS,qBAAqB,MAAe;AAClD,SAAO,kBAAkB,UAAU,IAAI;AACzC;","names":[]}
|