@miao-ai/node 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +40 -0
- package/dist/LICENSE-APACHE +201 -0
- package/dist/LICENSE-MIT +21 -0
- package/dist/async-queue.d.ts +10 -0
- package/dist/async-queue.d.ts.map +1 -0
- package/dist/async-queue.js +62 -0
- package/dist/async-queue.js.map +1 -0
- package/dist/auth.d.ts +34 -0
- package/dist/auth.d.ts.map +1 -0
- package/dist/auth.js +49 -0
- package/dist/auth.js.map +1 -0
- package/dist/binary.d.ts +14 -0
- package/dist/binary.d.ts.map +1 -0
- package/dist/binary.js +192 -0
- package/dist/binary.js.map +1 -0
- package/dist/errors.d.ts +17 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +23 -0
- package/dist/errors.js.map +1 -0
- package/dist/http-transport.d.ts +46 -0
- package/dist/http-transport.d.ts.map +1 -0
- package/dist/http-transport.js +286 -0
- package/dist/http-transport.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -0
- package/dist/miao.d.ts +39 -0
- package/dist/miao.d.ts.map +1 -0
- package/dist/miao.js +74 -0
- package/dist/miao.js.map +1 -0
- package/dist/ndjson.d.ts +9 -0
- package/dist/ndjson.d.ts.map +1 -0
- package/dist/ndjson.js +17 -0
- package/dist/ndjson.js.map +1 -0
- package/dist/process-transport.d.ts +36 -0
- package/dist/process-transport.d.ts.map +1 -0
- package/dist/process-transport.js +303 -0
- package/dist/process-transport.js.map +1 -0
- package/dist/socket-transport.d.ts +31 -0
- package/dist/socket-transport.d.ts.map +1 -0
- package/dist/socket-transport.js +130 -0
- package/dist/socket-transport.js.map +1 -0
- package/dist/websocket-transport.d.ts +49 -0
- package/dist/websocket-transport.d.ts.map +1 -0
- package/dist/websocket-transport.js +217 -0
- package/dist/websocket-transport.js.map +1 -0
- package/package.json +59 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"binary.js","sourceRoot":"","sources":["../src/binary.ts"],"names":[],"mappings":"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"}
|
package/dist/errors.d.ts
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { RuntimeSpawnError, TransportError } from "@miao-ai/client";
|
|
2
|
+
export declare class NodeTransportError extends TransportError {
|
|
3
|
+
readonly name: string;
|
|
4
|
+
constructor(message: string, options?: ErrorOptions);
|
|
5
|
+
}
|
|
6
|
+
export declare class RuntimeBinaryNotFoundError extends RuntimeSpawnError {
|
|
7
|
+
readonly name: string;
|
|
8
|
+
constructor(message: string, options?: ErrorOptions);
|
|
9
|
+
}
|
|
10
|
+
export declare class RuntimeDescriptorMismatchError extends RuntimeSpawnError {
|
|
11
|
+
readonly name: string;
|
|
12
|
+
constructor(message: string, options?: ErrorOptions);
|
|
13
|
+
}
|
|
14
|
+
export declare class RemoteAuthenticationError extends NodeTransportError {
|
|
15
|
+
readonly name: string;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEpE,qBAAa,kBAAmB,SAAQ,cAAc;IACpD,SAAkB,IAAI,EAAE,MAAM,CAAwB;gBAC1C,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY;CAGpD;AAED,qBAAa,0BAA2B,SAAQ,iBAAiB;IAC/D,SAAkB,IAAI,EAAE,MAAM,CAAgC;gBAClD,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY;CAGpD;AAED,qBAAa,8BAA+B,SAAQ,iBAAiB;IACnE,SAAkB,IAAI,EAAE,MAAM,CAAoC;gBACtD,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY;CAGpD;AAED,qBAAa,yBAA0B,SAAQ,kBAAkB;IAC/D,SAAkB,IAAI,EAAE,MAAM,CAA+B;CAC9D"}
|
package/dist/errors.js
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { RuntimeSpawnError, TransportError } from "@miao-ai/client";
|
|
2
|
+
export class NodeTransportError extends TransportError {
|
|
3
|
+
name = "NodeTransportError";
|
|
4
|
+
constructor(message, options) {
|
|
5
|
+
super(message, { code: "node_transport", retryable: true, cause: options?.cause });
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
export class RuntimeBinaryNotFoundError extends RuntimeSpawnError {
|
|
9
|
+
name = "RuntimeBinaryNotFoundError";
|
|
10
|
+
constructor(message, options) {
|
|
11
|
+
super(message, { code: "runtime_binary_not_found", cause: options?.cause });
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
export class RuntimeDescriptorMismatchError extends RuntimeSpawnError {
|
|
15
|
+
name = "RuntimeDescriptorMismatchError";
|
|
16
|
+
constructor(message, options) {
|
|
17
|
+
super(message, { code: "runtime_descriptor_mismatch", cause: options?.cause });
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
export class RemoteAuthenticationError extends NodeTransportError {
|
|
21
|
+
name = "RemoteAuthenticationError";
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEpE,MAAM,OAAO,kBAAmB,SAAQ,cAAc;IAClC,IAAI,GAAW,oBAAoB,CAAC;IACtD,YAAY,OAAe,EAAE,OAAsB;QACjD,KAAK,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;IACrF,CAAC;CACF;AAED,MAAM,OAAO,0BAA2B,SAAQ,iBAAiB;IAC7C,IAAI,GAAW,4BAA4B,CAAC;IAC9D,YAAY,OAAe,EAAE,OAAsB;QACjD,KAAK,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,0BAA0B,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;IAC9E,CAAC;CACF;AAED,MAAM,OAAO,8BAA+B,SAAQ,iBAAiB;IACjD,IAAI,GAAW,gCAAgC,CAAC;IAClE,YAAY,OAAe,EAAE,OAAsB;QACjD,KAAK,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,6BAA6B,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;IACjF,CAAC;CACF;AAED,MAAM,OAAO,yBAA0B,SAAQ,kBAAkB;IAC7C,IAAI,GAAW,2BAA2B,CAAC;CAC9D"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type { MiaoTransport } from "@miao-ai/client";
|
|
2
|
+
import { type RuntimeFrame } from "@miao-ai/protocol";
|
|
3
|
+
import { type AuthenticationOptions, type ReconnectOptions } from "./auth.js";
|
|
4
|
+
export interface SseMessage {
|
|
5
|
+
data: string;
|
|
6
|
+
event?: string;
|
|
7
|
+
id?: string;
|
|
8
|
+
retry?: number;
|
|
9
|
+
}
|
|
10
|
+
/** Incremental UTF-8 Server-Sent Events decoder. */
|
|
11
|
+
export declare class SseEventAdapter {
|
|
12
|
+
#private;
|
|
13
|
+
constructor(maxEventBytes?: number);
|
|
14
|
+
push(chunk: Uint8Array | string): SseMessage[];
|
|
15
|
+
finish(): SseMessage[];
|
|
16
|
+
}
|
|
17
|
+
export interface EventResumeOptions {
|
|
18
|
+
/** Cursor restored before the first SSE connection. */
|
|
19
|
+
initialEventId?: string;
|
|
20
|
+
/** Customize the SSE URL using the last event ID, e.g. an after query parameter. */
|
|
21
|
+
url?: (baseEventsUrl: string, lastEventId: string | undefined) => string;
|
|
22
|
+
onEventId?: (eventId: string) => void;
|
|
23
|
+
}
|
|
24
|
+
export interface HttpTransportOptions {
|
|
25
|
+
url: string;
|
|
26
|
+
sendPath?: string;
|
|
27
|
+
eventsPath?: string;
|
|
28
|
+
authentication?: AuthenticationOptions;
|
|
29
|
+
fetch?: typeof globalThis.fetch;
|
|
30
|
+
reconnect?: ReconnectOptions;
|
|
31
|
+
eventResume?: EventResumeOptions;
|
|
32
|
+
frameBufferSize?: number;
|
|
33
|
+
maxFrameBytes?: number;
|
|
34
|
+
signal?: AbortSignal;
|
|
35
|
+
}
|
|
36
|
+
/** POST request frames plus authenticated SSE response/event streaming. */
|
|
37
|
+
export declare class HttpTransport implements MiaoTransport {
|
|
38
|
+
#private;
|
|
39
|
+
constructor(options: HttpTransportOptions);
|
|
40
|
+
connect(): Promise<void>;
|
|
41
|
+
send(frame: RuntimeFrame): Promise<void>;
|
|
42
|
+
frames(): AsyncIterable<RuntimeFrame>;
|
|
43
|
+
close(): Promise<void>;
|
|
44
|
+
}
|
|
45
|
+
export { HttpTransport as HttpSseTransport };
|
|
46
|
+
//# sourceMappingURL=http-transport.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-transport.d.ts","sourceRoot":"","sources":["../src/http-transport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAIL,KAAK,YAAY,EAClB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAKL,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,EACtB,MAAM,WAAW,CAAC;AAGnB,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,oDAAoD;AACpD,qBAAa,eAAe;;gBAKd,aAAa,SAAc;IAOvC,IAAI,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,GAAG,UAAU,EAAE;IAK9C,MAAM,IAAI,UAAU,EAAE;CA4DvB;AAED,MAAM,WAAW,kBAAkB;IACjC,uDAAuD;IACvD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oFAAoF;IACpF,GAAG,CAAC,EAAE,CAAC,aAAa,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,SAAS,KAAK,MAAM,CAAC;IACzE,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACvC;AAED,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,qBAAqB,CAAC;IACvC,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;IAChC,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAMD,2EAA2E;AAC3E,qBAAa,aAAc,YAAW,aAAa;;gBAarC,OAAO,EAAE,oBAAoB;IAanC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAiBxB,IAAI,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IA4B9C,MAAM,IAAI,aAAa,CAAC,YAAY,CAAC;IAI/B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAgF7B;AAED,OAAO,EAAE,aAAa,IAAI,gBAAgB,EAAE,CAAC"}
|
|
@@ -0,0 +1,286 @@
|
|
|
1
|
+
import { decodeRuntimeFrame, encodeRuntimeFrame, parseRuntimeFrame, } from "@miao-ai/protocol";
|
|
2
|
+
import { AsyncQueue } from "./async-queue.js";
|
|
3
|
+
import { AuthenticationState, delay, normalizeReconnect, reconnectDelay, } from "./auth.js";
|
|
4
|
+
import { NodeTransportError, RemoteAuthenticationError } from "./errors.js";
|
|
5
|
+
/** Incremental UTF-8 Server-Sent Events decoder. */
|
|
6
|
+
export class SseEventAdapter {
|
|
7
|
+
#decoder = new TextDecoder();
|
|
8
|
+
#maxEventBytes;
|
|
9
|
+
#buffer = "";
|
|
10
|
+
constructor(maxEventBytes = 1024 * 1024) {
|
|
11
|
+
if (!Number.isSafeInteger(maxEventBytes) || maxEventBytes < 1) {
|
|
12
|
+
throw new RangeError("maxEventBytes must be a positive safe integer");
|
|
13
|
+
}
|
|
14
|
+
this.#maxEventBytes = maxEventBytes;
|
|
15
|
+
}
|
|
16
|
+
push(chunk) {
|
|
17
|
+
this.#buffer += typeof chunk === "string" ? chunk : this.#decoder.decode(chunk, { stream: true });
|
|
18
|
+
return this.#drain(false);
|
|
19
|
+
}
|
|
20
|
+
finish() {
|
|
21
|
+
this.#buffer += this.#decoder.decode();
|
|
22
|
+
return this.#drain(true);
|
|
23
|
+
}
|
|
24
|
+
#drain(final) {
|
|
25
|
+
this.#buffer = this.#buffer.replace(/\r\n/g, "\n").replace(/\r/g, "\n");
|
|
26
|
+
const messages = [];
|
|
27
|
+
let boundary = this.#buffer.indexOf("\n\n");
|
|
28
|
+
while (boundary >= 0) {
|
|
29
|
+
const block = this.#buffer.slice(0, boundary);
|
|
30
|
+
this.#buffer = this.#buffer.slice(boundary + 2);
|
|
31
|
+
this.#assertBounded(block);
|
|
32
|
+
const message = this.#parse(block);
|
|
33
|
+
if (message)
|
|
34
|
+
messages.push(message);
|
|
35
|
+
boundary = this.#buffer.indexOf("\n\n");
|
|
36
|
+
}
|
|
37
|
+
if (final && this.#buffer.trim()) {
|
|
38
|
+
this.#assertBounded(this.#buffer);
|
|
39
|
+
const message = this.#parse(this.#buffer);
|
|
40
|
+
this.#buffer = "";
|
|
41
|
+
if (message)
|
|
42
|
+
messages.push(message);
|
|
43
|
+
}
|
|
44
|
+
this.#assertBounded(this.#buffer);
|
|
45
|
+
return messages;
|
|
46
|
+
}
|
|
47
|
+
#parse(block) {
|
|
48
|
+
const data = [];
|
|
49
|
+
let event;
|
|
50
|
+
let id;
|
|
51
|
+
let retry;
|
|
52
|
+
for (const line of block.split("\n")) {
|
|
53
|
+
if (!line || line.startsWith(":"))
|
|
54
|
+
continue;
|
|
55
|
+
const colon = line.indexOf(":");
|
|
56
|
+
const field = colon < 0 ? line : line.slice(0, colon);
|
|
57
|
+
let value = colon < 0 ? "" : line.slice(colon + 1);
|
|
58
|
+
if (value.startsWith(" "))
|
|
59
|
+
value = value.slice(1);
|
|
60
|
+
if (field === "data")
|
|
61
|
+
data.push(value);
|
|
62
|
+
else if (field === "event")
|
|
63
|
+
event = value;
|
|
64
|
+
else if (field === "id" && !value.includes("\0"))
|
|
65
|
+
id = value;
|
|
66
|
+
else if (field === "retry" && /^\d+$/.test(value)) {
|
|
67
|
+
const parsed = Number(value);
|
|
68
|
+
if (Number.isSafeInteger(parsed))
|
|
69
|
+
retry = parsed;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
if (data.length === 0 && id === undefined && retry === undefined)
|
|
73
|
+
return undefined;
|
|
74
|
+
return {
|
|
75
|
+
data: data.join("\n"),
|
|
76
|
+
...(event === undefined ? {} : { event }),
|
|
77
|
+
...(id === undefined ? {} : { id }),
|
|
78
|
+
...(retry === undefined ? {} : { retry }),
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
#assertBounded(value) {
|
|
82
|
+
if (new TextEncoder().encode(value).byteLength > this.#maxEventBytes) {
|
|
83
|
+
throw new NodeTransportError(`Miao Runtime SSE event exceeds ${this.#maxEventBytes} bytes`);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
function endpoint(base, path) {
|
|
88
|
+
return new URL(path, base.endsWith("/") ? base : `${base}/`).toString();
|
|
89
|
+
}
|
|
90
|
+
/** POST request frames plus authenticated SSE response/event streaming. */
|
|
91
|
+
export class HttpTransport {
|
|
92
|
+
#options;
|
|
93
|
+
#auth;
|
|
94
|
+
#reconnect;
|
|
95
|
+
#frames;
|
|
96
|
+
#controller = new AbortController();
|
|
97
|
+
#maxFrameBytes;
|
|
98
|
+
#eventId;
|
|
99
|
+
#eventTask;
|
|
100
|
+
#connected = false;
|
|
101
|
+
#closing = false;
|
|
102
|
+
#serverRetryMs;
|
|
103
|
+
constructor(options) {
|
|
104
|
+
this.#options = options;
|
|
105
|
+
this.#auth = new AuthenticationState(options.authentication);
|
|
106
|
+
this.#reconnect = normalizeReconnect(options.reconnect);
|
|
107
|
+
this.#frames = new AsyncQueue(options.frameBufferSize ?? 256);
|
|
108
|
+
this.#maxFrameBytes = positive(options.maxFrameBytes ?? 1024 * 1024, "maxFrameBytes");
|
|
109
|
+
this.#eventId = options.eventResume?.initialEventId;
|
|
110
|
+
if (options.signal?.aborted === true)
|
|
111
|
+
this.#controller.abort(options.signal.reason);
|
|
112
|
+
else
|
|
113
|
+
options.signal?.addEventListener("abort", () => this.#controller.abort(options.signal?.reason), {
|
|
114
|
+
once: true,
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
async connect() {
|
|
118
|
+
if (this.#connected)
|
|
119
|
+
return;
|
|
120
|
+
if (this.#closing)
|
|
121
|
+
throw new NodeTransportError("cannot reconnect a closed HttpTransport");
|
|
122
|
+
if (this.#controller.signal.aborted) {
|
|
123
|
+
throw new NodeTransportError("cannot connect an aborted HttpTransport");
|
|
124
|
+
}
|
|
125
|
+
let resolveStarted;
|
|
126
|
+
let rejectStarted;
|
|
127
|
+
const started = new Promise((resolve, reject) => {
|
|
128
|
+
resolveStarted = resolve;
|
|
129
|
+
rejectStarted = reject;
|
|
130
|
+
});
|
|
131
|
+
this.#eventTask = this.#eventLoop(resolveStarted, rejectStarted);
|
|
132
|
+
await started;
|
|
133
|
+
this.#connected = true;
|
|
134
|
+
}
|
|
135
|
+
async send(frame) {
|
|
136
|
+
if (!this.#connected || this.#closing)
|
|
137
|
+
throw new NodeTransportError("Miao Runtime HTTP transport is not connected");
|
|
138
|
+
const response = await this.#request(endpoint(this.#options.url, this.#options.sendPath ?? "v1/runtime/frames"), {
|
|
139
|
+
method: "POST",
|
|
140
|
+
headers: { "content-type": "application/json", accept: "application/json, application/x-ndjson" },
|
|
141
|
+
body: encodeRuntimeFrame(frame),
|
|
142
|
+
});
|
|
143
|
+
if (!response.ok) {
|
|
144
|
+
throw new NodeTransportError(`Miao Runtime HTTP request failed with status ${response.status}`);
|
|
145
|
+
}
|
|
146
|
+
if (response.status === 202 || response.status === 204)
|
|
147
|
+
return;
|
|
148
|
+
const text = await readBoundedText(response, this.#maxFrameBytes);
|
|
149
|
+
if (!text.trim())
|
|
150
|
+
return;
|
|
151
|
+
const contentType = response.headers.get("content-type") ?? "";
|
|
152
|
+
if (contentType.includes("application/x-ndjson")) {
|
|
153
|
+
for (const line of text.split(/\r?\n/).filter((item) => item.trim()))
|
|
154
|
+
this.#frames.push(decodeRuntimeFrame(line));
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
157
|
+
const value = JSON.parse(text);
|
|
158
|
+
const frames = value && typeof value === "object" && "frames" in value && Array.isArray(value.frames)
|
|
159
|
+
? value.frames
|
|
160
|
+
: Array.isArray(value)
|
|
161
|
+
? value
|
|
162
|
+
: [value];
|
|
163
|
+
for (const candidate of frames)
|
|
164
|
+
this.#frames.push(parseRuntimeFrame(candidate));
|
|
165
|
+
}
|
|
166
|
+
frames() {
|
|
167
|
+
return this.#frames;
|
|
168
|
+
}
|
|
169
|
+
async close() {
|
|
170
|
+
if (this.#closing)
|
|
171
|
+
return;
|
|
172
|
+
this.#closing = true;
|
|
173
|
+
this.#connected = false;
|
|
174
|
+
this.#controller.abort(new NodeTransportError("HTTP transport closed"));
|
|
175
|
+
await this.#eventTask?.catch(() => undefined);
|
|
176
|
+
this.#frames.close();
|
|
177
|
+
}
|
|
178
|
+
async #request(url, init, refreshCause) {
|
|
179
|
+
const fetch = this.#options.fetch ?? globalThis.fetch;
|
|
180
|
+
if (!fetch)
|
|
181
|
+
throw new NodeTransportError("this Node.js version has no fetch implementation");
|
|
182
|
+
const authHeaders = await this.#auth.headers(refreshCause);
|
|
183
|
+
const headers = { ...authHeaders, ...init.headers };
|
|
184
|
+
const response = await fetch(url, { ...init, headers, signal: this.#controller.signal });
|
|
185
|
+
if ((response.status === 401 || response.status === 403) && refreshCause === undefined) {
|
|
186
|
+
if (!this.#options.authentication?.refreshToken) {
|
|
187
|
+
throw new RemoteAuthenticationError(`Miao Runtime authentication failed with status ${response.status}`);
|
|
188
|
+
}
|
|
189
|
+
return await this.#request(url, init, response);
|
|
190
|
+
}
|
|
191
|
+
return response;
|
|
192
|
+
}
|
|
193
|
+
async #eventLoop(started, failedToStart) {
|
|
194
|
+
let attempt = 0;
|
|
195
|
+
let didStart = false;
|
|
196
|
+
let lastError;
|
|
197
|
+
while (!this.#closing) {
|
|
198
|
+
try {
|
|
199
|
+
const baseUrl = endpoint(this.#options.url, this.#options.eventsPath ?? "v1/runtime/events");
|
|
200
|
+
const url = this.#options.eventResume?.url?.(baseUrl, this.#eventId) ?? baseUrl;
|
|
201
|
+
const headers = { accept: "text/event-stream", "cache-control": "no-cache" };
|
|
202
|
+
if (this.#eventId !== undefined)
|
|
203
|
+
headers["last-event-id"] = this.#eventId;
|
|
204
|
+
const response = await this.#request(url, { method: "GET", headers }, lastError);
|
|
205
|
+
if (!response.ok)
|
|
206
|
+
throw new NodeTransportError(`Miao Runtime SSE failed with status ${response.status}`);
|
|
207
|
+
if (!response.body)
|
|
208
|
+
throw new NodeTransportError("Miao Runtime SSE response has no body");
|
|
209
|
+
if (!didStart) {
|
|
210
|
+
didStart = true;
|
|
211
|
+
started();
|
|
212
|
+
}
|
|
213
|
+
attempt = 0;
|
|
214
|
+
lastError = undefined;
|
|
215
|
+
const adapter = new SseEventAdapter(this.#maxFrameBytes);
|
|
216
|
+
const reader = response.body.getReader();
|
|
217
|
+
while (!this.#closing) {
|
|
218
|
+
const item = await reader.read();
|
|
219
|
+
if (item.done)
|
|
220
|
+
break;
|
|
221
|
+
for (const message of adapter.push(item.value))
|
|
222
|
+
this.#receiveEvent(message);
|
|
223
|
+
}
|
|
224
|
+
for (const message of adapter.finish())
|
|
225
|
+
this.#receiveEvent(message);
|
|
226
|
+
if (this.#closing)
|
|
227
|
+
return;
|
|
228
|
+
throw new NodeTransportError("Miao Runtime SSE stream ended");
|
|
229
|
+
}
|
|
230
|
+
catch (error) {
|
|
231
|
+
if (this.#closing || this.#controller.signal.aborted) {
|
|
232
|
+
if (!didStart)
|
|
233
|
+
failedToStart(new NodeTransportError("Miao Runtime SSE connection was aborted", { cause: error }));
|
|
234
|
+
return;
|
|
235
|
+
}
|
|
236
|
+
lastError = error;
|
|
237
|
+
attempt += 1;
|
|
238
|
+
if (!this.#reconnect.enabled || attempt > this.#reconnect.maxAttempts) {
|
|
239
|
+
if (!didStart)
|
|
240
|
+
failedToStart(error);
|
|
241
|
+
else
|
|
242
|
+
this.#frames.fail(new NodeTransportError("Miao Runtime SSE reconnect attempts exhausted", { cause: error }));
|
|
243
|
+
return;
|
|
244
|
+
}
|
|
245
|
+
await delay(this.#serverRetryMs ?? reconnectDelay(attempt, this.#reconnect), this.#controller.signal).catch(() => undefined);
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
#receiveEvent(message) {
|
|
250
|
+
if (message.id !== undefined) {
|
|
251
|
+
this.#eventId = message.id;
|
|
252
|
+
this.#options.eventResume?.onEventId?.(message.id);
|
|
253
|
+
}
|
|
254
|
+
if (message.retry !== undefined)
|
|
255
|
+
this.#serverRetryMs = Math.min(message.retry, this.#reconnect.maxDelayMs);
|
|
256
|
+
if (message.data.trim())
|
|
257
|
+
this.#frames.push(decodeRuntimeFrame(message.data));
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
export { HttpTransport as HttpSseTransport };
|
|
261
|
+
async function readBoundedText(response, maxBytes) {
|
|
262
|
+
if (!response.body)
|
|
263
|
+
return "";
|
|
264
|
+
const reader = response.body.getReader();
|
|
265
|
+
const decoder = new TextDecoder();
|
|
266
|
+
let bytes = 0;
|
|
267
|
+
let text = "";
|
|
268
|
+
while (true) {
|
|
269
|
+
const item = await reader.read();
|
|
270
|
+
if (item.done)
|
|
271
|
+
break;
|
|
272
|
+
bytes += item.value.byteLength;
|
|
273
|
+
if (bytes > maxBytes) {
|
|
274
|
+
await reader.cancel("Runtime HTTP response exceeded frame limit").catch(() => undefined);
|
|
275
|
+
throw new NodeTransportError(`Miao Runtime HTTP response exceeds ${maxBytes} bytes`);
|
|
276
|
+
}
|
|
277
|
+
text += decoder.decode(item.value, { stream: true });
|
|
278
|
+
}
|
|
279
|
+
return text + decoder.decode();
|
|
280
|
+
}
|
|
281
|
+
function positive(value, name) {
|
|
282
|
+
if (!Number.isSafeInteger(value) || value < 1)
|
|
283
|
+
throw new RangeError(`${name} must be a positive safe integer`);
|
|
284
|
+
return value;
|
|
285
|
+
}
|
|
286
|
+
//# sourceMappingURL=http-transport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-transport.js","sourceRoot":"","sources":["../src/http-transport.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export * from "./auth.js";
|
|
2
|
+
export * from "./binary.js";
|
|
3
|
+
export * from "./errors.js";
|
|
4
|
+
export * from "./http-transport.js";
|
|
5
|
+
export * from "./miao.js";
|
|
6
|
+
export * from "./process-transport.js";
|
|
7
|
+
export * from "./socket-transport.js";
|
|
8
|
+
export * from "./websocket-transport.js";
|
|
9
|
+
export * from "@miao-ai/client";
|
|
10
|
+
export * from "@miao-ai/protocol";
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,WAAW,CAAC;AAC1B,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AAEzC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export * from "./auth.js";
|
|
2
|
+
export * from "./binary.js";
|
|
3
|
+
export * from "./errors.js";
|
|
4
|
+
export * from "./http-transport.js";
|
|
5
|
+
export * from "./miao.js";
|
|
6
|
+
export * from "./process-transport.js";
|
|
7
|
+
export * from "./socket-transport.js";
|
|
8
|
+
export * from "./websocket-transport.js";
|
|
9
|
+
export * from "@miao-ai/client";
|
|
10
|
+
export * from "@miao-ai/protocol";
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,WAAW,CAAC;AAC1B,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AAEzC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC"}
|
package/dist/miao.d.ts
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { MiaoClient, type MiaoClientOptions } from "@miao-ai/client";
|
|
2
|
+
import type { AuthenticationOptions } from "./auth.js";
|
|
3
|
+
import { type HttpTransportOptions } from "./http-transport.js";
|
|
4
|
+
import { type ProcessTransportOptions } from "./process-transport.js";
|
|
5
|
+
import { type SocketTransportOptions } from "./socket-transport.js";
|
|
6
|
+
import { type WebSocketTransportOptions } from "./websocket-transport.js";
|
|
7
|
+
export type NodeClientOptions = Omit<MiaoClientOptions, "transport">;
|
|
8
|
+
export interface MiaoSpawnOptions extends ProcessTransportOptions {
|
|
9
|
+
client?: NodeClientOptions;
|
|
10
|
+
reconnect?: {
|
|
11
|
+
enabled?: boolean;
|
|
12
|
+
restoreCapabilities?: boolean;
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
export interface MiaoSocketConnectOptions extends SocketTransportOptions {
|
|
16
|
+
client?: NodeClientOptions;
|
|
17
|
+
}
|
|
18
|
+
export interface MiaoRemoteConnectOptions {
|
|
19
|
+
url: string;
|
|
20
|
+
token?: string;
|
|
21
|
+
getToken?: AuthenticationOptions["getToken"];
|
|
22
|
+
refreshToken?: AuthenticationOptions["refreshToken"];
|
|
23
|
+
headers?: Readonly<Record<string, string>>;
|
|
24
|
+
remoteTransport?: "http" | "websocket";
|
|
25
|
+
client?: NodeClientOptions;
|
|
26
|
+
http?: Omit<HttpTransportOptions, "url" | "authentication">;
|
|
27
|
+
websocket?: Omit<WebSocketTransportOptions, "url" | "authentication">;
|
|
28
|
+
}
|
|
29
|
+
export type MiaoConnectOptions = MiaoSocketConnectOptions | MiaoRemoteConnectOptions;
|
|
30
|
+
/** The Node entry point: transport lifecycle plus the full transport-independent client API. */
|
|
31
|
+
export declare class Miao extends MiaoClient {
|
|
32
|
+
#private;
|
|
33
|
+
private constructor();
|
|
34
|
+
static spawn(options?: MiaoSpawnOptions): Promise<Miao>;
|
|
35
|
+
static connect(options: MiaoConnectOptions): Promise<Miao>;
|
|
36
|
+
/** Forcefully terminate a spawned Runtime; network clients fall back to close(). */
|
|
37
|
+
kill(): Promise<void>;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=miao.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"miao.d.ts","sourceRoot":"","sources":["../src/miao.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAiB,KAAK,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC/E,OAAO,EAAoB,KAAK,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACxF,OAAO,EAAmB,KAAK,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AACrF,OAAO,EAEL,KAAK,yBAAyB,EAC/B,MAAM,0BAA0B,CAAC;AAElC,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,EAAE,WAAW,CAAC,CAAC;AAErE,MAAM,WAAW,gBAAiB,SAAQ,uBAAuB;IAC/D,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,SAAS,CAAC,EAAE;QACV,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,mBAAmB,CAAC,EAAE,OAAO,CAAC;KAC/B,CAAC;CACH;AAED,MAAM,WAAW,wBAAyB,SAAQ,sBAAsB;IACtE,MAAM,CAAC,EAAE,iBAAiB,CAAC;CAC5B;AAED,MAAM,WAAW,wBAAwB;IACvC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,qBAAqB,CAAC,UAAU,CAAC,CAAC;IAC7C,YAAY,CAAC,EAAE,qBAAqB,CAAC,cAAc,CAAC,CAAC;IACrD,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC3C,eAAe,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC;IACvC,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,IAAI,CAAC,EAAE,IAAI,CAAC,oBAAoB,EAAE,KAAK,GAAG,gBAAgB,CAAC,CAAC;IAC5D,SAAS,CAAC,EAAE,IAAI,CAAC,yBAAyB,EAAE,KAAK,GAAG,gBAAgB,CAAC,CAAC;CACvE;AAED,MAAM,MAAM,kBAAkB,GAAG,wBAAwB,GAAG,wBAAwB,CAAC;AAkBrF,gGAAgG;AAChG,qBAAa,IAAK,SAAQ,UAAU;;IAGlC,OAAO;WAQM,KAAK,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;WAWpD,OAAO,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAyBhE,oFAAoF;IAC9E,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAK5B"}
|
package/dist/miao.js
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { MiaoClient } from "@miao-ai/client";
|
|
2
|
+
import { HttpTransport } from "./http-transport.js";
|
|
3
|
+
import { ProcessTransport } from "./process-transport.js";
|
|
4
|
+
import { SocketTransport } from "./socket-transport.js";
|
|
5
|
+
import { WebSocketTransport, } from "./websocket-transport.js";
|
|
6
|
+
function authentication(options) {
|
|
7
|
+
return {
|
|
8
|
+
...(options.token === undefined ? {} : { token: options.token }),
|
|
9
|
+
...(options.getToken === undefined ? {} : { getToken: options.getToken }),
|
|
10
|
+
...(options.refreshToken === undefined ? {} : { refreshToken: options.refreshToken }),
|
|
11
|
+
...(options.headers === undefined ? {} : { headers: options.headers }),
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
function websocketUrl(url) {
|
|
15
|
+
const parsed = new URL(url);
|
|
16
|
+
if (parsed.protocol === "http:")
|
|
17
|
+
parsed.protocol = "ws:";
|
|
18
|
+
else if (parsed.protocol === "https:")
|
|
19
|
+
parsed.protocol = "wss:";
|
|
20
|
+
return parsed.toString();
|
|
21
|
+
}
|
|
22
|
+
/** The Node entry point: transport lifecycle plus the full transport-independent client API. */
|
|
23
|
+
export class Miao extends MiaoClient {
|
|
24
|
+
#managedTransport;
|
|
25
|
+
constructor(transport, client = {}) {
|
|
26
|
+
super({ transport, ...client });
|
|
27
|
+
this.#managedTransport = transport;
|
|
28
|
+
}
|
|
29
|
+
static async spawn(options = {}) {
|
|
30
|
+
const { client = {}, reconnect, ...transportOptions } = options;
|
|
31
|
+
const transport = new ProcessTransport(transportOptions);
|
|
32
|
+
const miao = new Miao(transport, {
|
|
33
|
+
...client,
|
|
34
|
+
restoreCapabilities: client.restoreCapabilities ?? reconnect?.restoreCapabilities ?? false,
|
|
35
|
+
});
|
|
36
|
+
await miao.connect();
|
|
37
|
+
return miao;
|
|
38
|
+
}
|
|
39
|
+
static async connect(options) {
|
|
40
|
+
let transport;
|
|
41
|
+
let client;
|
|
42
|
+
if ("url" in options) {
|
|
43
|
+
const auth = authentication(options);
|
|
44
|
+
const kind = options.remoteTransport ?? (/^wss?:/i.test(options.url) ? "websocket" : "http");
|
|
45
|
+
if (kind === "websocket") {
|
|
46
|
+
transport = new WebSocketTransport({
|
|
47
|
+
...options.websocket,
|
|
48
|
+
url: websocketUrl(options.url),
|
|
49
|
+
authentication: auth,
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
transport = new HttpTransport({ ...options.http, url: options.url, authentication: auth });
|
|
54
|
+
}
|
|
55
|
+
client = options.client ?? {};
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
transport = new SocketTransport(options);
|
|
59
|
+
client = options.client ?? {};
|
|
60
|
+
}
|
|
61
|
+
const miao = new Miao(transport, client);
|
|
62
|
+
await miao.connect();
|
|
63
|
+
return miao;
|
|
64
|
+
}
|
|
65
|
+
/** Forcefully terminate a spawned Runtime; network clients fall back to close(). */
|
|
66
|
+
async kill() {
|
|
67
|
+
if (this.#managedTransport instanceof ProcessTransport)
|
|
68
|
+
await this.#managedTransport.kill();
|
|
69
|
+
else
|
|
70
|
+
await this.#managedTransport.close();
|
|
71
|
+
await super.close();
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=miao.js.map
|
package/dist/miao.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"miao.js","sourceRoot":"","sources":["../src/miao.ts"],"names":[],"mappings":"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"}
|
package/dist/ndjson.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type RuntimeFrame } from "@miao-ai/protocol";
|
|
2
|
+
export declare function encodeFrameLine(frame: RuntimeFrame): string;
|
|
3
|
+
export declare class StrictFrameDecoder {
|
|
4
|
+
#private;
|
|
5
|
+
constructor(maxLineBytes?: number);
|
|
6
|
+
push(chunk: string | Uint8Array): RuntimeFrame[];
|
|
7
|
+
finish(): RuntimeFrame[];
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=ndjson.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ndjson.d.ts","sourceRoot":"","sources":["../src/ndjson.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,YAAY,EAClB,MAAM,mBAAmB,CAAC;AAE3B,wBAAgB,eAAe,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAE3D;AAED,qBAAa,kBAAkB;;gBAGjB,YAAY,SAAc;IAItC,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,YAAY,EAAE;IAIhD,MAAM,IAAI,YAAY,EAAE;CAGzB"}
|
package/dist/ndjson.js
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { NdjsonFrameDecoder, encodeRuntimeFrameLine, } from "@miao-ai/protocol";
|
|
2
|
+
export function encodeFrameLine(frame) {
|
|
3
|
+
return encodeRuntimeFrameLine(frame);
|
|
4
|
+
}
|
|
5
|
+
export class StrictFrameDecoder {
|
|
6
|
+
#decoder;
|
|
7
|
+
constructor(maxLineBytes = 1024 * 1024) {
|
|
8
|
+
this.#decoder = new NdjsonFrameDecoder({ maxLineLength: maxLineBytes });
|
|
9
|
+
}
|
|
10
|
+
push(chunk) {
|
|
11
|
+
return this.#decoder.push(chunk);
|
|
12
|
+
}
|
|
13
|
+
finish() {
|
|
14
|
+
return this.#decoder.finish();
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=ndjson.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ndjson.js","sourceRoot":"","sources":["../src/ndjson.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,sBAAsB,GAEvB,MAAM,mBAAmB,CAAC;AAE3B,MAAM,UAAU,eAAe,CAAC,KAAmB;IACjD,OAAO,sBAAsB,CAAC,KAAK,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,OAAO,kBAAkB;IACpB,QAAQ,CAAqB;IAEtC,YAAY,YAAY,GAAG,IAAI,GAAG,IAAI;QACpC,IAAI,CAAC,QAAQ,GAAG,IAAI,kBAAkB,CAAC,EAAE,aAAa,EAAE,YAAY,EAAE,CAAC,CAAC;IAC1E,CAAC;IAED,IAAI,CAAC,KAA0B;QAC7B,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;IAChC,CAAC;CACF"}
|