@alexkroman1/aai 0.6.1 → 0.7.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/cli.js +422 -707
- package/dist/sdk/_internal_types.d.ts +4 -18
- package/dist/sdk/_internal_types.d.ts.map +1 -1
- package/dist/sdk/_internal_types.js +2 -1
- package/dist/sdk/_internal_types.js.map +1 -1
- package/dist/sdk/_mock_ws.js +1 -1
- package/dist/sdk/_mock_ws.js.map +1 -1
- package/dist/sdk/builtin_tools.d.ts +6 -2
- package/dist/sdk/builtin_tools.d.ts.map +1 -1
- package/dist/sdk/builtin_tools.js +1 -8
- package/dist/sdk/builtin_tools.js.map +1 -1
- package/dist/sdk/capnweb.d.ts +1 -1
- package/dist/sdk/capnweb.d.ts.map +1 -1
- package/dist/sdk/capnweb.js +43 -10
- package/dist/sdk/capnweb.js.map +1 -1
- package/dist/sdk/define_agent.d.ts +1 -1
- package/dist/sdk/define_agent.d.ts.map +1 -1
- package/dist/sdk/define_agent.js +26 -17
- package/dist/sdk/define_agent.js.map +1 -1
- package/dist/sdk/direct_executor.d.ts +2 -0
- package/dist/sdk/direct_executor.d.ts.map +1 -1
- package/dist/sdk/direct_executor.js +6 -1
- package/dist/sdk/direct_executor.js.map +1 -1
- package/dist/sdk/mod.d.ts +2 -1
- package/dist/sdk/mod.d.ts.map +1 -1
- package/dist/sdk/protocol.d.ts +88 -7
- package/dist/sdk/protocol.d.ts.map +1 -1
- package/dist/sdk/protocol.js.map +1 -1
- package/dist/sdk/runtime.d.ts +6 -4
- package/dist/sdk/runtime.d.ts.map +1 -1
- package/dist/sdk/runtime.js.map +1 -1
- package/dist/sdk/s2s.d.ts +2 -1
- package/dist/sdk/s2s.d.ts.map +1 -1
- package/dist/sdk/s2s.js +112 -73
- package/dist/sdk/s2s.js.map +1 -1
- package/dist/sdk/server.d.ts.map +1 -1
- package/dist/sdk/server.js +47 -43
- package/dist/sdk/server.js.map +1 -1
- package/dist/sdk/session.d.ts.map +1 -1
- package/dist/sdk/session.js +47 -44
- package/dist/sdk/session.js.map +1 -1
- package/dist/sdk/system_prompt.d.ts.map +1 -1
- package/dist/sdk/system_prompt.js +1 -1
- package/dist/sdk/system_prompt.js.map +1 -1
- package/dist/sdk/types.d.ts +8 -50
- package/dist/sdk/types.d.ts.map +1 -1
- package/dist/sdk/types.js +0 -8
- package/dist/sdk/types.js.map +1 -1
- package/dist/sdk/winterc_server.d.ts +4 -1
- package/dist/sdk/winterc_server.d.ts.map +1 -1
- package/dist/sdk/winterc_server.js +3 -2
- package/dist/sdk/winterc_server.js.map +1 -1
- package/dist/sdk/worker_entry.d.ts +3 -1
- package/dist/sdk/worker_entry.d.ts.map +1 -1
- package/dist/sdk/worker_entry.js +24 -17
- package/dist/sdk/worker_entry.js.map +1 -1
- package/dist/sdk/worker_shim.d.ts.map +1 -1
- package/dist/sdk/worker_shim.js +62 -9
- package/dist/sdk/worker_shim.js.map +1 -1
- package/dist/sdk/ws_handler.d.ts.map +1 -1
- package/dist/sdk/ws_handler.js +65 -58
- package/dist/sdk/ws_handler.js.map +1 -1
- package/dist/ui/_components/message_list.d.ts.map +1 -1
- package/dist/ui/_components/message_list.js +10 -6
- package/dist/ui/_components/message_list.js.map +1 -1
- package/dist/ui/audio.js +1 -1
- package/dist/ui/audio.js.map +1 -1
- package/dist/ui/mod.d.ts +10 -2
- package/dist/ui/mod.d.ts.map +1 -1
- package/dist/ui/mod.js +5 -2
- package/dist/ui/mod.js.map +1 -1
- package/dist/ui/session.d.ts.map +1 -1
- package/dist/ui/session.js +3 -1
- package/dist/ui/session.js.map +1 -1
- package/package.json +4 -9
- package/dist/sdk/_timeout.d.ts +0 -14
- package/dist/sdk/_timeout.d.ts.map +0 -1
- package/dist/sdk/_timeout.js +0 -24
- package/dist/sdk/_timeout.js.map +0 -1
package/dist/sdk/protocol.d.ts
CHANGED
|
@@ -6,7 +6,6 @@
|
|
|
6
6
|
* @module
|
|
7
7
|
*/
|
|
8
8
|
import { z } from "zod";
|
|
9
|
-
import type { WorkerConfig } from "./_internal_types.ts";
|
|
10
9
|
import type { Message, StepInfo } from "./types.ts";
|
|
11
10
|
/**
|
|
12
11
|
* Current protocol version for client-server compatibility checks.
|
|
@@ -69,7 +68,23 @@ export type KvRequest = {
|
|
|
69
68
|
reverse?: boolean | undefined;
|
|
70
69
|
};
|
|
71
70
|
/** Zod schema for {@linkcode KvRequest}. */
|
|
72
|
-
export declare const KvRequestBaseSchema: z.
|
|
71
|
+
export declare const KvRequestBaseSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
72
|
+
op: z.ZodLiteral<"get">;
|
|
73
|
+
key: z.ZodString;
|
|
74
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
75
|
+
op: z.ZodLiteral<"set">;
|
|
76
|
+
key: z.ZodString;
|
|
77
|
+
value: z.ZodString;
|
|
78
|
+
ttl: z.ZodOptional<z.ZodNumber>;
|
|
79
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
80
|
+
op: z.ZodLiteral<"del">;
|
|
81
|
+
key: z.ZodString;
|
|
82
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
83
|
+
op: z.ZodLiteral<"list">;
|
|
84
|
+
prefix: z.ZodString;
|
|
85
|
+
limit: z.ZodOptional<z.ZodNumber>;
|
|
86
|
+
reverse: z.ZodOptional<z.ZodBoolean>;
|
|
87
|
+
}, z.core.$strip>], "op">;
|
|
73
88
|
/** Default timeout for agent lifecycle hooks (onConnect, onTurn, etc). */
|
|
74
89
|
export declare const HOOK_TIMEOUT_MS = 5000;
|
|
75
90
|
/** Default timeout for tool execution in the worker. */
|
|
@@ -77,7 +92,16 @@ export declare const TOOL_EXECUTION_TIMEOUT_MS = 30000;
|
|
|
77
92
|
/** Error codes for categorizing session errors on the wire. */
|
|
78
93
|
export type SessionErrorCode = "stt" | "llm" | "tts" | "tool" | "protocol" | "connection" | "audio" | "internal";
|
|
79
94
|
/** Zod schema for {@linkcode SessionErrorCode}. */
|
|
80
|
-
export declare const SessionErrorCodeSchema: z.
|
|
95
|
+
export declare const SessionErrorCodeSchema: z.ZodEnum<{
|
|
96
|
+
tool: "tool";
|
|
97
|
+
stt: "stt";
|
|
98
|
+
llm: "llm";
|
|
99
|
+
tts: "tts";
|
|
100
|
+
protocol: "protocol";
|
|
101
|
+
connection: "connection";
|
|
102
|
+
audio: "audio";
|
|
103
|
+
internal: "internal";
|
|
104
|
+
}>;
|
|
81
105
|
/**
|
|
82
106
|
* Discriminated union of all server→client session events.
|
|
83
107
|
*
|
|
@@ -124,7 +148,51 @@ export type ClientEvent = {
|
|
|
124
148
|
message: string;
|
|
125
149
|
};
|
|
126
150
|
/** Zod schema for {@linkcode ClientEvent}. */
|
|
127
|
-
export declare const ClientEventSchema: z.
|
|
151
|
+
export declare const ClientEventSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
152
|
+
type: z.ZodLiteral<"speech_started">;
|
|
153
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
154
|
+
type: z.ZodLiteral<"speech_stopped">;
|
|
155
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
156
|
+
type: z.ZodLiteral<"transcript">;
|
|
157
|
+
text: z.ZodString;
|
|
158
|
+
isFinal: z.ZodBoolean;
|
|
159
|
+
turnOrder: z.ZodOptional<z.ZodNumber>;
|
|
160
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
161
|
+
type: z.ZodLiteral<"turn">;
|
|
162
|
+
text: z.ZodString;
|
|
163
|
+
turnOrder: z.ZodOptional<z.ZodNumber>;
|
|
164
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
165
|
+
type: z.ZodLiteral<"chat">;
|
|
166
|
+
text: z.ZodString;
|
|
167
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
168
|
+
type: z.ZodLiteral<"tool_call_start">;
|
|
169
|
+
toolCallId: z.ZodString;
|
|
170
|
+
toolName: z.ZodString;
|
|
171
|
+
args: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
172
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
173
|
+
type: z.ZodLiteral<"tool_call_done">;
|
|
174
|
+
toolCallId: z.ZodString;
|
|
175
|
+
result: z.ZodString;
|
|
176
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
177
|
+
type: z.ZodLiteral<"tts_done">;
|
|
178
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
179
|
+
type: z.ZodLiteral<"cancelled">;
|
|
180
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
181
|
+
type: z.ZodLiteral<"reset">;
|
|
182
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
183
|
+
type: z.ZodLiteral<"error">;
|
|
184
|
+
code: z.ZodEnum<{
|
|
185
|
+
tool: "tool";
|
|
186
|
+
stt: "stt";
|
|
187
|
+
llm: "llm";
|
|
188
|
+
tts: "tts";
|
|
189
|
+
protocol: "protocol";
|
|
190
|
+
connection: "connection";
|
|
191
|
+
audio: "audio";
|
|
192
|
+
internal: "internal";
|
|
193
|
+
}>;
|
|
194
|
+
message: z.ZodString;
|
|
195
|
+
}, z.core.$strip>], "type">;
|
|
128
196
|
/**
|
|
129
197
|
* Typed interface for pushing session events to a connected client.
|
|
130
198
|
*
|
|
@@ -148,7 +216,6 @@ export type ReadyConfig = {
|
|
|
148
216
|
audioFormat: AudioFormatId;
|
|
149
217
|
sampleRate: number;
|
|
150
218
|
ttsSampleRate: number;
|
|
151
|
-
mode?: "s2s";
|
|
152
219
|
};
|
|
153
220
|
/** Client→server text messages (binary frames carry raw PCM16 audio). */
|
|
154
221
|
export type ClientMessage = {
|
|
@@ -171,7 +238,22 @@ export type ServerMessage = ({
|
|
|
171
238
|
type: "audio_done";
|
|
172
239
|
} | ClientEvent;
|
|
173
240
|
/** Zod schema for {@linkcode ClientMessage}. */
|
|
174
|
-
export declare const ClientMessageSchema: z.
|
|
241
|
+
export declare const ClientMessageSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
242
|
+
type: z.ZodLiteral<"audio_ready">;
|
|
243
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
244
|
+
type: z.ZodLiteral<"cancel">;
|
|
245
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
246
|
+
type: z.ZodLiteral<"reset">;
|
|
247
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
248
|
+
type: z.ZodLiteral<"history">;
|
|
249
|
+
messages: z.ZodArray<z.ZodObject<{
|
|
250
|
+
role: z.ZodEnum<{
|
|
251
|
+
user: "user";
|
|
252
|
+
assistant: "assistant";
|
|
253
|
+
}>;
|
|
254
|
+
text: z.ZodString;
|
|
255
|
+
}, z.core.$strip>>;
|
|
256
|
+
}, z.core.$strip>], "type">;
|
|
175
257
|
/**
|
|
176
258
|
* API shape the host process exposes to the sandboxed worker.
|
|
177
259
|
*
|
|
@@ -206,7 +288,6 @@ export type TurnConfig = {
|
|
|
206
288
|
/** Worker-side RPC target interface (host calls these methods). */
|
|
207
289
|
export interface WorkerRpcApi {
|
|
208
290
|
withEnv(env: Record<string, string>): WorkerRpcApi;
|
|
209
|
-
getConfig(): Promise<WorkerConfig>;
|
|
210
291
|
executeTool(name: string, args: Readonly<Record<string, unknown>>, sessionId: string | undefined, messages: readonly Message[] | undefined): Promise<string>;
|
|
211
292
|
onConnect(sessionId: string): Promise<void>;
|
|
212
293
|
onDisconnect(sessionId: string): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../sdk/protocol.ts"],"names":[],"mappings":"AACA;;;;;;GAMG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../sdk/protocol.ts"],"names":[],"mappings":"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"}
|
package/dist/sdk/protocol.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../sdk/protocol.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C;;;;;;GAMG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../sdk/protocol.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C;;;;;;GAMG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAElC;;;;GAIG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,MAAM,CAAC;AAE9C;;;;GAIG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,MAAM,CAAC;AAE9C;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,OAAgB,CAAC;AAE7C;;;;GAIG;AACH,MAAM,cAAc,GAAG,EAAW,CAAC;AACnC,MAAM,SAAS,GAAG,CAAU,CAAC;AAE7B,sEAAsE;AACtE,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,0DAA0D;IAC1D,MAAM,EAAE,YAAY;IACpB,qCAAqC;IACrC,aAAa,EAAE,cAAc;IAC7B,gCAAgC;IAChC,UAAU,EAAE,QAAiB;IAC7B,kBAAkB;IAClB,QAAQ,EAAE,SAAS;IACnB,kEAAkE;IAClE,cAAc,EAAE,CAAC,cAAc,GAAG,CAAC,CAAC,GAAG,SAAS;CACxC,CAAC;AAmBX,4CAA4C;AAC5C,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,kBAAkB,CAAC,IAAI,EAAE;IAC5D,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1D,CAAC,CAAC,MAAM,CAAC;QACP,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;QACpB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACtB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;QACjB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;KAC5C,CAAC;IACF,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1D,CAAC,CAAC,MAAM,CAAC;QACP,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;QACrB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;QAClB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;QAC7C,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;KAChC,CAAC;CACH,CAAC,CAAC;AAEH,8EAA8E;AAE9E,0EAA0E;AAC1E,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,CAAC;AAErC,wDAAwD;AACxD,MAAM,CAAC,MAAM,yBAAyB,GAAG,MAAM,CAAC;AAehD,mDAAmD;AACnD,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,IAAI,CAAC;IAC3C,KAAK;IACL,KAAK;IACL,KAAK;IACL,MAAM;IACN,UAAU;IACV,YAAY;IACZ,OAAO;IACP,UAAU;CACX,CAAC,CAAC;AAiCH,4DAA4D;AAC5D,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC;IAC7B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;IACpB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;CACrD,CAAC,CAAC;AAEH,8CAA8C;AAC9C,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE;IAC5D,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC;IAC/C,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC;IAC/C,qBAAqB;IACrB,CAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;QACvB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;QAChB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;KACrD,CAAC;IACF,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;IACvD,CAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC;QAClC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;QACtB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;QACpB,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;KACxC,CAAC;IACF,CAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC;QACjC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;QACtB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC;KAC7B,CAAC;IACF,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;IACzC,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;IAC1C,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;IACtC,CAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;QACxB,IAAI,EAAE,sBAAsB;QAC5B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;KACpB,CAAC;CACH,CAAC,CAAC;AA+CH,gDAAgD;AAChD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE;IAC9D,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;IAC5C,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;IACvC,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;IACtC,CAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;QAC1B,QAAQ,EAAE,CAAC;aACR,KAAK,CACJ,CAAC,CAAC,MAAM,CAAC;YACP,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;YACnC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC;SAC9B,CAAC,CACH;aACA,GAAG,CAAC,GAAG,CAAC;KACZ,CAAC;CACH,CAAC,CAAC"}
|
package/dist/sdk/runtime.d.ts
CHANGED
|
@@ -3,12 +3,14 @@
|
|
|
3
3
|
*
|
|
4
4
|
* @module
|
|
5
5
|
*/
|
|
6
|
+
/** Structured context attached to log messages. */
|
|
7
|
+
export type LogContext = Record<string, unknown>;
|
|
6
8
|
/** Runtime-agnostic structured logger. */
|
|
7
9
|
export type Logger = {
|
|
8
|
-
info(msg: string, ctx?:
|
|
9
|
-
warn(msg: string, ctx?:
|
|
10
|
-
error(msg: string, ctx?:
|
|
11
|
-
debug(msg: string, ctx?:
|
|
10
|
+
info(msg: string, ctx?: LogContext): void;
|
|
11
|
+
warn(msg: string, ctx?: LogContext): void;
|
|
12
|
+
error(msg: string, ctx?: LogContext): void;
|
|
13
|
+
debug(msg: string, ctx?: LogContext): void;
|
|
12
14
|
};
|
|
13
15
|
/** Runtime-agnostic session metrics. */
|
|
14
16
|
export type Metrics = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../sdk/runtime.ts"],"names":[],"mappings":"AACA;;;;GAIG;AAIH,0CAA0C;AAC1C,MAAM,MAAM,MAAM,GAAG;IACnB,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../sdk/runtime.ts"],"names":[],"mappings":"AACA;;;;GAIG;AAIH,mDAAmD;AACnD,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEjD,0CAA0C;AAC1C,MAAM,MAAM,MAAM,GAAG;IACnB,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IAC1C,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IAC1C,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IAC3C,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;CAC5C,CAAC;AAEF,wCAAwC;AACxC,MAAM,MAAM,OAAO,GAAG;IACpB,aAAa,EAAE;QAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAA;KAAE,CAAC;IAC7D,cAAc,EAAE;QACd,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;QAC1C,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;KAC3C,CAAC;CACH,CAAC;AAEF,uDAAuD;AACvD,eAAO,MAAM,aAAa,EAAE,MAiB3B,CAAC;AAEF,wEAAwE;AACxE,eAAO,MAAM,WAAW,EAAE,OAGzB,CAAC;AAEF,oEAAoE;AACpE,MAAM,MAAM,SAAS,GAAG;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,8EAA8E;AAC9E,eAAO,MAAM,kBAAkB,EAAE,SAIhC,CAAC"}
|
package/dist/sdk/runtime.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../sdk/runtime.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C;;;;GAIG;AAEH,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../sdk/runtime.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C;;;;GAIG;AAEH,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAsBxD,uDAAuD;AACvD,MAAM,CAAC,MAAM,aAAa,GAAW;IACnC,IAAI,CAAC,GAAG,EAAE,GAAG;QACX,IAAI,GAAG;YAAE,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;;YAC1B,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACxB,CAAC;IACD,IAAI,CAAC,GAAG,EAAE,GAAG;QACX,IAAI,GAAG;YAAE,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;;YAC3B,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;IACD,KAAK,CAAC,GAAG,EAAE,GAAG;QACZ,IAAI,GAAG;YAAE,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;;YAC5B,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IACD,KAAK,CAAC,GAAG,EAAE,GAAG;QACZ,IAAI,GAAG;YAAE,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;;YAC5B,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;CACF,CAAC;AAEF,wEAAwE;AACxE,MAAM,CAAC,MAAM,WAAW,GAAY;IAClC,aAAa,EAAE,EAAE,GAAG,KAAI,CAAC,EAAE;IAC3B,cAAc,EAAE,EAAE,GAAG,KAAI,CAAC,EAAE,GAAG,KAAI,CAAC,EAAE;CACvC,CAAC;AASF,8EAA8E;AAC9E,MAAM,CAAC,MAAM,kBAAkB,GAAc;IAC3C,MAAM,EAAE,sDAAsD;IAC9D,eAAe,EAAE,uBAAuB;IACxC,gBAAgB,EAAE,uBAAuB;CAC1C,CAAC"}
|
package/dist/sdk/s2s.d.ts
CHANGED
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
*
|
|
7
7
|
* @module
|
|
8
8
|
*/
|
|
9
|
+
import type { JSONSchema7 } from "json-schema";
|
|
9
10
|
import type { Logger, S2SConfig } from "./runtime.ts";
|
|
10
11
|
/** Minimal WebSocket interface for the S2S client. */
|
|
11
12
|
export type S2sWebSocket = {
|
|
@@ -27,7 +28,7 @@ export type S2sToolSchema = {
|
|
|
27
28
|
type: "function";
|
|
28
29
|
name: string;
|
|
29
30
|
description: string;
|
|
30
|
-
parameters:
|
|
31
|
+
parameters: JSONSchema7;
|
|
31
32
|
};
|
|
32
33
|
export type S2sToolCall = {
|
|
33
34
|
call_id: string;
|
package/dist/sdk/s2s.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"s2s.d.ts","sourceRoot":"","sources":["../../sdk/s2s.ts"],"names":[],"mappings":"AACA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAyBtD,sDAAsD;AACtD,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,IAAI,IAAI,CAAC;IACd,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,GAAG,IAAI,CAAC;CAChE,CAAC;AAKF,0EAA0E;AAC1E,MAAM,MAAM,kBAAkB,GAAG,CAC/B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,KACtC,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"s2s.d.ts","sourceRoot":"","sources":["../../sdk/s2s.ts"],"names":[],"mappings":"AACA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAyBtD,sDAAsD;AACtD,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,IAAI,IAAI,CAAC;IACd,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,GAAG,IAAI,CAAC;CAChE,CAAC;AAKF,0EAA0E;AAC1E,MAAM,MAAM,kBAAkB,GAAG,CAC/B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,KACtC,YAAY,CAAC;AA4HlB,MAAM,MAAM,gBAAgB,GAAG;IAC7B,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,WAAW,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,WAAW,GAAG;IACpC,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,CAAC;IACnC,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACrD,aAAa,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAC9C,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,KAAK,IAAI,IAAI,CAAC;CACf,CAAC;AAIF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,SAAS,CAAC;IAClB,eAAe,EAAE,kBAAkB,CAAC;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,SAAS,CAAC,CA+FtE"}
|
package/dist/sdk/s2s.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
1
2
|
import { consoleLogger } from "./runtime.js";
|
|
2
3
|
// ─── Cross-runtime base64 helpers ───────────────────────────────────────────
|
|
3
4
|
function uint8ToBase64(bytes) {
|
|
@@ -18,6 +19,105 @@ function base64ToUint8(base64) {
|
|
|
18
19
|
}
|
|
19
20
|
/** WebSocket readyState constant for OPEN. */
|
|
20
21
|
const WS_OPEN = 1;
|
|
22
|
+
// ─── Incoming S2S message schema ─────────────────────────────────────────────
|
|
23
|
+
const S2sServerMessageSchema = z.discriminatedUnion("type", [
|
|
24
|
+
z.object({ type: z.literal("session.ready"), session_id: z.string() }),
|
|
25
|
+
z.object({ type: z.literal("session.updated") }).passthrough(),
|
|
26
|
+
z.object({ type: z.literal("input.speech.started") }),
|
|
27
|
+
z.object({ type: z.literal("input.speech.stopped") }),
|
|
28
|
+
z.object({ type: z.literal("transcript.user.delta"), text: z.string() }),
|
|
29
|
+
z.object({
|
|
30
|
+
type: z.literal("transcript.user"),
|
|
31
|
+
item_id: z.string(),
|
|
32
|
+
text: z.string(),
|
|
33
|
+
}),
|
|
34
|
+
z.object({ type: z.literal("reply.started"), reply_id: z.string() }),
|
|
35
|
+
z.object({ type: z.literal("reply.audio"), data: z.string() }),
|
|
36
|
+
z.object({ type: z.literal("transcript.agent"), text: z.string() }),
|
|
37
|
+
z.object({
|
|
38
|
+
type: z.literal("tool.call"),
|
|
39
|
+
call_id: z.string(),
|
|
40
|
+
name: z.string(),
|
|
41
|
+
args: z.record(z.string(), z.unknown()).optional().default({}),
|
|
42
|
+
}),
|
|
43
|
+
z.object({
|
|
44
|
+
type: z.literal("reply.done"),
|
|
45
|
+
status: z.string().optional(),
|
|
46
|
+
}),
|
|
47
|
+
z.object({
|
|
48
|
+
type: z.literal("session.error"),
|
|
49
|
+
code: z.string(),
|
|
50
|
+
message: z.string(),
|
|
51
|
+
}),
|
|
52
|
+
]);
|
|
53
|
+
/** Dispatch a parsed S2S server message to the EventTarget. */
|
|
54
|
+
function dispatchS2sMessage(target, msg) {
|
|
55
|
+
switch (msg.type) {
|
|
56
|
+
case "session.ready":
|
|
57
|
+
target.dispatchEvent(new CustomEvent("ready", {
|
|
58
|
+
detail: { session_id: msg.session_id },
|
|
59
|
+
}));
|
|
60
|
+
break;
|
|
61
|
+
case "session.updated":
|
|
62
|
+
target.dispatchEvent(new CustomEvent("session_updated", { detail: msg }));
|
|
63
|
+
break;
|
|
64
|
+
case "input.speech.started":
|
|
65
|
+
target.dispatchEvent(new CustomEvent("speech_started"));
|
|
66
|
+
break;
|
|
67
|
+
case "input.speech.stopped":
|
|
68
|
+
target.dispatchEvent(new CustomEvent("speech_stopped"));
|
|
69
|
+
break;
|
|
70
|
+
case "transcript.user.delta":
|
|
71
|
+
target.dispatchEvent(new CustomEvent("user_transcript_delta", {
|
|
72
|
+
detail: { text: msg.text },
|
|
73
|
+
}));
|
|
74
|
+
break;
|
|
75
|
+
case "transcript.user":
|
|
76
|
+
target.dispatchEvent(new CustomEvent("user_transcript", {
|
|
77
|
+
detail: {
|
|
78
|
+
item_id: msg.item_id,
|
|
79
|
+
text: msg.text,
|
|
80
|
+
},
|
|
81
|
+
}));
|
|
82
|
+
break;
|
|
83
|
+
case "reply.started":
|
|
84
|
+
target.dispatchEvent(new CustomEvent("reply_started", {
|
|
85
|
+
detail: { reply_id: msg.reply_id },
|
|
86
|
+
}));
|
|
87
|
+
break;
|
|
88
|
+
case "reply.audio": {
|
|
89
|
+
const audioBytes = base64ToUint8(msg.data);
|
|
90
|
+
target.dispatchEvent(new CustomEvent("audio", { detail: { audio: audioBytes } }));
|
|
91
|
+
break;
|
|
92
|
+
}
|
|
93
|
+
case "transcript.agent":
|
|
94
|
+
target.dispatchEvent(new CustomEvent("agent_transcript", {
|
|
95
|
+
detail: { text: msg.text },
|
|
96
|
+
}));
|
|
97
|
+
break;
|
|
98
|
+
case "tool.call":
|
|
99
|
+
target.dispatchEvent(new CustomEvent("tool_call", {
|
|
100
|
+
detail: {
|
|
101
|
+
call_id: msg.call_id,
|
|
102
|
+
name: msg.name,
|
|
103
|
+
args: msg.args,
|
|
104
|
+
},
|
|
105
|
+
}));
|
|
106
|
+
break;
|
|
107
|
+
case "reply.done":
|
|
108
|
+
target.dispatchEvent(new CustomEvent("reply_done", {
|
|
109
|
+
detail: { status: msg.status },
|
|
110
|
+
}));
|
|
111
|
+
break;
|
|
112
|
+
case "session.error": {
|
|
113
|
+
const isExpired = msg.code === "session_not_found" || msg.code === "session_forbidden";
|
|
114
|
+
target.dispatchEvent(new CustomEvent(isExpired ? "session_expired" : "error", {
|
|
115
|
+
detail: { code: msg.code, message: msg.message },
|
|
116
|
+
}));
|
|
117
|
+
break;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
21
121
|
/**
|
|
22
122
|
* Connect to AssemblyAI's Speech-to-Speech WebSocket API.
|
|
23
123
|
*
|
|
@@ -39,8 +139,7 @@ export function connectS2s(opts) {
|
|
|
39
139
|
function send(msg) {
|
|
40
140
|
if (ws.readyState !== WS_OPEN)
|
|
41
141
|
return;
|
|
42
|
-
|
|
43
|
-
if (type !== "input.audio") {
|
|
142
|
+
if (msg.type !== "input.audio") {
|
|
44
143
|
log.info(`S2S >> ${JSON.stringify(msg)}`);
|
|
45
144
|
}
|
|
46
145
|
ws.send(JSON.stringify(msg));
|
|
@@ -69,87 +168,27 @@ export function connectS2s(opts) {
|
|
|
69
168
|
resolve(handle);
|
|
70
169
|
});
|
|
71
170
|
ws.on("message", (data) => {
|
|
72
|
-
let
|
|
171
|
+
let raw;
|
|
73
172
|
try {
|
|
74
|
-
|
|
173
|
+
raw = JSON.parse(String(data));
|
|
75
174
|
}
|
|
76
175
|
catch {
|
|
77
176
|
return;
|
|
78
177
|
}
|
|
79
|
-
const
|
|
80
|
-
if (
|
|
81
|
-
log.info(`S2S << ${JSON.stringify(
|
|
178
|
+
const parsed = S2sServerMessageSchema.safeParse(raw);
|
|
179
|
+
if (!parsed.success) {
|
|
180
|
+
log.info(`S2S << unrecognised message: ${JSON.stringify(raw)}`);
|
|
181
|
+
return;
|
|
82
182
|
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
detail: { session_id: msg.session_id },
|
|
87
|
-
}));
|
|
88
|
-
break;
|
|
89
|
-
case "session.updated":
|
|
90
|
-
target.dispatchEvent(new CustomEvent("session_updated", { detail: msg }));
|
|
91
|
-
break;
|
|
92
|
-
case "input.speech.started":
|
|
93
|
-
target.dispatchEvent(new CustomEvent("speech_started"));
|
|
94
|
-
break;
|
|
95
|
-
case "input.speech.stopped":
|
|
96
|
-
target.dispatchEvent(new CustomEvent("speech_stopped"));
|
|
97
|
-
break;
|
|
98
|
-
case "transcript.user.delta":
|
|
99
|
-
target.dispatchEvent(new CustomEvent("user_transcript_delta", {
|
|
100
|
-
detail: { text: msg.text },
|
|
101
|
-
}));
|
|
102
|
-
break;
|
|
103
|
-
case "transcript.user":
|
|
104
|
-
target.dispatchEvent(new CustomEvent("user_transcript", {
|
|
105
|
-
detail: {
|
|
106
|
-
item_id: msg.item_id,
|
|
107
|
-
text: msg.text,
|
|
108
|
-
},
|
|
109
|
-
}));
|
|
110
|
-
break;
|
|
111
|
-
case "reply.started":
|
|
112
|
-
target.dispatchEvent(new CustomEvent("reply_started", {
|
|
113
|
-
detail: { reply_id: msg.reply_id },
|
|
114
|
-
}));
|
|
115
|
-
break;
|
|
116
|
-
case "reply.audio": {
|
|
117
|
-
const audioBytes = base64ToUint8(msg.data);
|
|
118
|
-
target.dispatchEvent(new CustomEvent("audio", { detail: { audio: audioBytes } }));
|
|
119
|
-
break;
|
|
120
|
-
}
|
|
121
|
-
case "transcript.agent":
|
|
122
|
-
target.dispatchEvent(new CustomEvent("agent_transcript", {
|
|
123
|
-
detail: { text: msg.text },
|
|
124
|
-
}));
|
|
125
|
-
break;
|
|
126
|
-
case "tool.call":
|
|
127
|
-
target.dispatchEvent(new CustomEvent("tool_call", {
|
|
128
|
-
detail: {
|
|
129
|
-
call_id: msg.call_id,
|
|
130
|
-
name: msg.name,
|
|
131
|
-
args: (msg.args ?? {}),
|
|
132
|
-
},
|
|
133
|
-
}));
|
|
134
|
-
break;
|
|
135
|
-
case "reply.done":
|
|
136
|
-
target.dispatchEvent(new CustomEvent("reply_done", {
|
|
137
|
-
detail: { status: msg.status ?? undefined },
|
|
138
|
-
}));
|
|
139
|
-
break;
|
|
140
|
-
case "session.error": {
|
|
141
|
-
const code = msg.code;
|
|
142
|
-
const isExpired = code === "session_not_found" || code === "session_forbidden";
|
|
143
|
-
target.dispatchEvent(new CustomEvent(isExpired ? "session_expired" : "error", {
|
|
144
|
-
detail: { code, message: msg.message },
|
|
145
|
-
}));
|
|
146
|
-
break;
|
|
147
|
-
}
|
|
183
|
+
const msg = parsed.data;
|
|
184
|
+
if (msg.type !== "reply.audio") {
|
|
185
|
+
log.info(`S2S << ${JSON.stringify(msg)}`);
|
|
148
186
|
}
|
|
187
|
+
dispatchS2sMessage(target, msg);
|
|
149
188
|
});
|
|
150
189
|
ws.on("close", (code, reason) => {
|
|
151
190
|
log.info("S2S WebSocket closed", {
|
|
152
|
-
code: code,
|
|
191
|
+
code: typeof code === "number" ? code : 0,
|
|
153
192
|
reason: reason instanceof Uint8Array ? new TextDecoder().decode(reason) : String(reason ?? ""),
|
|
154
193
|
});
|
|
155
194
|
target.dispatchEvent(new CustomEvent("close"));
|
package/dist/sdk/s2s.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"s2s.js","sourceRoot":"","sources":["../../sdk/s2s.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,+EAA+E;AAE/E,SAAS,aAAa,CAAC,KAAiB;IACtC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,yCAAyC;IAC/D,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC;QAC7C,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACnE,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9B,CAAC;AAED,SAAS,aAAa,CAAC,MAAc;IACnC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5B,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAClC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAYD,8CAA8C;AAC9C,MAAM,OAAO,GAAG,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"s2s.js","sourceRoot":"","sources":["../../sdk/s2s.ts"],"names":[],"mappings":"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"}
|
package/dist/sdk/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../sdk/server.ts"],"names":[],"mappings":"AACA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEtD,OAAO,KAAK,EAAE,kBAAkB,EAAgB,MAAM,UAAU,CAAC;AACjE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAI3C,MAAM,MAAM,aAAa,GAAG;IAC1B,wDAAwD;IACxD,KAAK,EAAE,QAAQ,CAAC;IAChB,wDAAwD;IACxD,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,uCAAuC;IACvC,EAAE,CAAC,EAAE,EAAE,CAAC;IACR,gCAAgC;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mCAAmC;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4DAA4D;IAC5D,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,4EAA4E;IAC5E,eAAe,CAAC,EAAE,kBAAkB,CAAC;CACtC,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,mEAAmE;IACnE,KAAK,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3C,yCAAyC;IACzC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,uBAAuB;IACvB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB,CAAC;AA0BF;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,aAAa,GAAG,WAAW,
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../sdk/server.ts"],"names":[],"mappings":"AACA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEtD,OAAO,KAAK,EAAE,kBAAkB,EAAgB,MAAM,UAAU,CAAC;AACjE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAI3C,MAAM,MAAM,aAAa,GAAG;IAC1B,wDAAwD;IACxD,KAAK,EAAE,QAAQ,CAAC;IAChB,wDAAwD;IACxD,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,uCAAuC;IACvC,EAAE,CAAC,EAAE,EAAE,CAAC;IACR,gCAAgC;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mCAAmC;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4DAA4D;IAC5D,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,4EAA4E;IAC5E,eAAe,CAAC,EAAE,kBAAkB,CAAC;CACtC,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,mEAAmE;IACnE,KAAK,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3C,yCAAyC;IACzC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,uBAAuB;IACvB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB,CAAC;AA0BF;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,aAAa,GAAG,WAAW,CA8EhE"}
|
package/dist/sdk/server.js
CHANGED
|
@@ -61,7 +61,10 @@ export function createServer(options) {
|
|
|
61
61
|
agent,
|
|
62
62
|
env,
|
|
63
63
|
...(kv ? { kv } : {}),
|
|
64
|
-
createWebSocket: wsFactory
|
|
64
|
+
createWebSocket: wsFactory ??
|
|
65
|
+
(() => {
|
|
66
|
+
throw new Error("WebSocket factory not loaded");
|
|
67
|
+
}),
|
|
65
68
|
...(clientHtml !== undefined ? { clientHtml } : {}),
|
|
66
69
|
logger,
|
|
67
70
|
s2sConfig,
|
|
@@ -79,49 +82,9 @@ export function createServer(options) {
|
|
|
79
82
|
await getWsFactory();
|
|
80
83
|
const http = await import("node:http");
|
|
81
84
|
const nodeServer = http.createServer(async (req, res) => {
|
|
82
|
-
|
|
83
|
-
const protocol = req.socket.encrypted ? "https" : "http";
|
|
84
|
-
const host = req.headers.host ?? `localhost:${port}`;
|
|
85
|
-
const url = new URL(req.url ?? "/", `${protocol}://${host}`);
|
|
86
|
-
const headers = new Headers();
|
|
87
|
-
for (const [key, val] of Object.entries(req.headers)) {
|
|
88
|
-
if (val)
|
|
89
|
-
headers.set(key, Array.isArray(val) ? val[0] : val);
|
|
90
|
-
}
|
|
91
|
-
const request = new Request(url, {
|
|
92
|
-
method: req.method ?? "GET",
|
|
93
|
-
headers,
|
|
94
|
-
});
|
|
95
|
-
const response = await getWinterc().fetch(request);
|
|
96
|
-
res.writeHead(response.status, Object.fromEntries(response.headers));
|
|
97
|
-
const body = await response.text();
|
|
98
|
-
res.end(body);
|
|
99
|
-
}
|
|
100
|
-
catch (err) {
|
|
101
|
-
res.writeHead(500);
|
|
102
|
-
res.end(err instanceof Error ? err.message : "Internal Server Error");
|
|
103
|
-
}
|
|
85
|
+
await nodeHttpHandler(req, res, port, getWinterc);
|
|
104
86
|
});
|
|
105
|
-
|
|
106
|
-
try {
|
|
107
|
-
const wsMod = await import("ws");
|
|
108
|
-
const WSServer = wsMod.WebSocketServer;
|
|
109
|
-
if (WSServer) {
|
|
110
|
-
const wss = new WSServer({ noServer: true });
|
|
111
|
-
nodeServer.on("upgrade", (req, socket, head) => {
|
|
112
|
-
wss.handleUpgrade(req, socket, head, (ws) => {
|
|
113
|
-
const reqUrl = new URL(req.url ?? "/", `http://localhost:${port}`);
|
|
114
|
-
const resume = reqUrl.searchParams.has("resume");
|
|
115
|
-
getWinterc().handleWebSocket(ws, {
|
|
116
|
-
skipGreeting: resume,
|
|
117
|
-
});
|
|
118
|
-
});
|
|
119
|
-
});
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
catch {
|
|
123
|
-
logger.warn("ws package not available for Node.js WebSocket upgrade");
|
|
124
|
-
}
|
|
87
|
+
attachWsUpgrade(nodeServer, port, getWinterc, logger);
|
|
125
88
|
await new Promise((resolve) => {
|
|
126
89
|
nodeServer.listen(port, () => {
|
|
127
90
|
logger.info(`Agent "${agent.name}" listening on http://localhost:${port}`);
|
|
@@ -142,4 +105,45 @@ export function createServer(options) {
|
|
|
142
105
|
},
|
|
143
106
|
};
|
|
144
107
|
}
|
|
108
|
+
// ─── Node.js HTTP/WS helpers ─────────────────────────────────────────────────
|
|
109
|
+
async function nodeHttpHandler(req, res, port, getWinterc) {
|
|
110
|
+
try {
|
|
111
|
+
const protocol = req.socket.encrypted ? "https" : "http";
|
|
112
|
+
const host = req.headers.host ?? `localhost:${port}`;
|
|
113
|
+
const url = new URL(req.url ?? "/", `${protocol}://${host}`);
|
|
114
|
+
const headers = new Headers();
|
|
115
|
+
for (const [key, val] of Object.entries(req.headers)) {
|
|
116
|
+
if (val)
|
|
117
|
+
headers.set(key, Array.isArray(val) ? (val[0] ?? "") : val);
|
|
118
|
+
}
|
|
119
|
+
const request = new Request(url, { method: req.method ?? "GET", headers });
|
|
120
|
+
const response = await getWinterc().fetch(request);
|
|
121
|
+
res.writeHead(response.status, Object.fromEntries(response.headers));
|
|
122
|
+
res.end(await response.text());
|
|
123
|
+
}
|
|
124
|
+
catch (err) {
|
|
125
|
+
res.writeHead(500);
|
|
126
|
+
res.end(err instanceof Error ? err.message : "Internal Server Error");
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
function attachWsUpgrade(nodeServer, port, getWinterc, logger) {
|
|
130
|
+
import("ws")
|
|
131
|
+
.then((wsMod) => {
|
|
132
|
+
const WSServer = wsMod.WebSocketServer;
|
|
133
|
+
if (!WSServer)
|
|
134
|
+
return;
|
|
135
|
+
const wss = new WSServer({ noServer: true });
|
|
136
|
+
nodeServer.on("upgrade", (req, socket, head) => {
|
|
137
|
+
wss.handleUpgrade(req, socket, head, (ws) => {
|
|
138
|
+
const reqUrl = new URL(req.url ?? "/", `http://localhost:${port}`);
|
|
139
|
+
getWinterc().handleWebSocket(ws, {
|
|
140
|
+
skipGreeting: reqUrl.searchParams.has("resume"),
|
|
141
|
+
});
|
|
142
|
+
});
|
|
143
|
+
});
|
|
144
|
+
})
|
|
145
|
+
.catch(() => {
|
|
146
|
+
logger.warn("ws package not available for Node.js WebSocket upgrade");
|
|
147
|
+
});
|
|
148
|
+
}
|
|
145
149
|
//# sourceMappingURL=server.js.map
|