@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,217 @@
|
|
|
1
|
+
import { decodeRuntimeFrame, encodeRuntimeFrame } from "@miao-ai/protocol";
|
|
2
|
+
import { AsyncQueue } from "./async-queue.js";
|
|
3
|
+
import { AuthenticationState, delay, normalizeReconnect, reconnectDelay, } from "./auth.js";
|
|
4
|
+
import { NodeTransportError } from "./errors.js";
|
|
5
|
+
function defaultFactory(url, options) {
|
|
6
|
+
const Constructor = globalThis
|
|
7
|
+
.WebSocket;
|
|
8
|
+
if (!Constructor) {
|
|
9
|
+
throw new NodeTransportError("this Node.js version has no global WebSocket; configure webSocketFactory");
|
|
10
|
+
}
|
|
11
|
+
if (Object.keys(options.headers).length > 0) {
|
|
12
|
+
throw new NodeTransportError("the global WebSocket API cannot attach authentication headers; configure webSocketFactory");
|
|
13
|
+
}
|
|
14
|
+
const protocols = typeof options.protocols === "string"
|
|
15
|
+
? options.protocols
|
|
16
|
+
: options.protocols === undefined
|
|
17
|
+
? undefined
|
|
18
|
+
: [...options.protocols];
|
|
19
|
+
return new Constructor(url, protocols);
|
|
20
|
+
}
|
|
21
|
+
async function messageText(value, maxFrameBytes) {
|
|
22
|
+
if (typeof value === "string") {
|
|
23
|
+
assertFrameSize(new TextEncoder().encode(value).byteLength, maxFrameBytes);
|
|
24
|
+
return value;
|
|
25
|
+
}
|
|
26
|
+
if (value instanceof ArrayBuffer) {
|
|
27
|
+
assertFrameSize(value.byteLength, maxFrameBytes);
|
|
28
|
+
return new TextDecoder().decode(value);
|
|
29
|
+
}
|
|
30
|
+
if (ArrayBuffer.isView(value)) {
|
|
31
|
+
assertFrameSize(value.byteLength, maxFrameBytes);
|
|
32
|
+
return new TextDecoder().decode(new Uint8Array(value.buffer, value.byteOffset, value.byteLength));
|
|
33
|
+
}
|
|
34
|
+
if (value && typeof value === "object" && "text" in value && typeof value.text === "function") {
|
|
35
|
+
const text = await value.text();
|
|
36
|
+
assertFrameSize(new TextEncoder().encode(text).byteLength, maxFrameBytes);
|
|
37
|
+
return text;
|
|
38
|
+
}
|
|
39
|
+
throw new TypeError("unsupported WebSocket Runtime frame payload");
|
|
40
|
+
}
|
|
41
|
+
/** Runtime Protocol over WebSocket with bounded reconnect and explicit resume hooks. */
|
|
42
|
+
export class WebSocketTransport {
|
|
43
|
+
#options;
|
|
44
|
+
#auth;
|
|
45
|
+
#reconnect;
|
|
46
|
+
#frames;
|
|
47
|
+
#connectTimeoutMs;
|
|
48
|
+
#maxFrameBytes;
|
|
49
|
+
#sequences = new Map();
|
|
50
|
+
#socket;
|
|
51
|
+
#connected = false;
|
|
52
|
+
#closing = false;
|
|
53
|
+
#reconnectTask;
|
|
54
|
+
#messageChain = Promise.resolve();
|
|
55
|
+
constructor(options) {
|
|
56
|
+
this.#options = options;
|
|
57
|
+
this.#auth = new AuthenticationState(options.authentication);
|
|
58
|
+
this.#reconnect = normalizeReconnect(options.reconnect);
|
|
59
|
+
this.#frames = new AsyncQueue(options.frameBufferSize ?? 256);
|
|
60
|
+
this.#connectTimeoutMs = positive(options.connectTimeoutMs ?? 10_000, "connectTimeoutMs");
|
|
61
|
+
this.#maxFrameBytes = positive(options.maxFrameBytes ?? 1024 * 1024, "maxFrameBytes");
|
|
62
|
+
}
|
|
63
|
+
async connect() {
|
|
64
|
+
if (this.#connected)
|
|
65
|
+
return;
|
|
66
|
+
if (this.#closing)
|
|
67
|
+
throw new NodeTransportError("cannot reconnect a closed WebSocketTransport");
|
|
68
|
+
let lastError;
|
|
69
|
+
const attempts = this.#reconnect.enabled ? this.#reconnect.maxAttempts + 1 : 1;
|
|
70
|
+
for (let attempt = 0; attempt < attempts; attempt += 1) {
|
|
71
|
+
try {
|
|
72
|
+
await this.#open(attempt === 0 ? undefined : lastError);
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
catch (error) {
|
|
76
|
+
lastError = error;
|
|
77
|
+
if (attempt + 1 >= attempts)
|
|
78
|
+
break;
|
|
79
|
+
await delay(reconnectDelay(attempt + 1, this.#reconnect));
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
throw new NodeTransportError("failed to connect to the Miao Runtime WebSocket", { cause: lastError });
|
|
83
|
+
}
|
|
84
|
+
async send(frame) {
|
|
85
|
+
const socket = this.#socket;
|
|
86
|
+
if (!this.#connected || !socket || socket.readyState !== 1) {
|
|
87
|
+
throw new NodeTransportError("Miao Runtime WebSocket is not connected");
|
|
88
|
+
}
|
|
89
|
+
socket.send(encodeRuntimeFrame(frame));
|
|
90
|
+
}
|
|
91
|
+
frames() {
|
|
92
|
+
return this.#frames;
|
|
93
|
+
}
|
|
94
|
+
async close() {
|
|
95
|
+
if (this.#closing)
|
|
96
|
+
return;
|
|
97
|
+
this.#closing = true;
|
|
98
|
+
const socket = this.#socket;
|
|
99
|
+
this.#socket = undefined;
|
|
100
|
+
this.#connected = false;
|
|
101
|
+
if (socket && socket.readyState < 2)
|
|
102
|
+
socket.close(1000, "client closing");
|
|
103
|
+
await this.#reconnectTask?.catch(() => undefined);
|
|
104
|
+
this.#frames.close();
|
|
105
|
+
}
|
|
106
|
+
async #open(refreshCause) {
|
|
107
|
+
const headers = await this.#auth.headers(refreshCause);
|
|
108
|
+
const factory = this.#options.webSocketFactory ?? defaultFactory;
|
|
109
|
+
const socket = await factory(this.#options.url, {
|
|
110
|
+
headers,
|
|
111
|
+
...(this.#options.protocols === undefined ? {} : { protocols: this.#options.protocols }),
|
|
112
|
+
});
|
|
113
|
+
this.#socket = socket;
|
|
114
|
+
await new Promise((resolveOpen, rejectOpen) => {
|
|
115
|
+
let settled = false;
|
|
116
|
+
const timer = setTimeout(() => {
|
|
117
|
+
if (settled)
|
|
118
|
+
return;
|
|
119
|
+
settled = true;
|
|
120
|
+
socket.close(1000, "connection timeout");
|
|
121
|
+
rejectOpen(new NodeTransportError(`Miao Runtime WebSocket connection timed out after ${this.#connectTimeoutMs}ms`));
|
|
122
|
+
}, this.#connectTimeoutMs);
|
|
123
|
+
const onOpen = () => {
|
|
124
|
+
if (settled)
|
|
125
|
+
return;
|
|
126
|
+
settled = true;
|
|
127
|
+
clearTimeout(timer);
|
|
128
|
+
this.#connected = true;
|
|
129
|
+
resolveOpen();
|
|
130
|
+
};
|
|
131
|
+
const onError = (event) => {
|
|
132
|
+
if (settled)
|
|
133
|
+
return;
|
|
134
|
+
settled = true;
|
|
135
|
+
clearTimeout(timer);
|
|
136
|
+
rejectOpen(event.error ?? new NodeTransportError("WebSocket connection failed"));
|
|
137
|
+
};
|
|
138
|
+
const onClose = (event) => {
|
|
139
|
+
const wasConnected = this.#connected;
|
|
140
|
+
this.#connected = false;
|
|
141
|
+
if (!settled) {
|
|
142
|
+
settled = true;
|
|
143
|
+
clearTimeout(timer);
|
|
144
|
+
rejectOpen(new NodeTransportError(`WebSocket closed during connection (${event.code ?? "unknown"})`));
|
|
145
|
+
}
|
|
146
|
+
else if (wasConnected) {
|
|
147
|
+
this.#handleDisconnect(event);
|
|
148
|
+
}
|
|
149
|
+
};
|
|
150
|
+
socket.addEventListener("open", onOpen);
|
|
151
|
+
socket.addEventListener("error", onError);
|
|
152
|
+
socket.addEventListener("close", onClose);
|
|
153
|
+
socket.addEventListener("message", (event) => {
|
|
154
|
+
this.#messageChain = this.#messageChain
|
|
155
|
+
.then(async () => this.#receive(await messageText(event.data, this.#maxFrameBytes)))
|
|
156
|
+
.catch((error) => {
|
|
157
|
+
this.#frames.fail(new NodeTransportError("invalid Runtime WebSocket frame", { cause: error }));
|
|
158
|
+
socket.close(1002, "invalid Runtime frame");
|
|
159
|
+
});
|
|
160
|
+
});
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
#receive(text) {
|
|
164
|
+
const frame = decodeRuntimeFrame(text);
|
|
165
|
+
if (frame.type === "event") {
|
|
166
|
+
const previous = this.#sequences.get(frame.subscriptionId) ?? -1;
|
|
167
|
+
if (frame.sequence <= previous)
|
|
168
|
+
return;
|
|
169
|
+
this.#sequences.set(frame.subscriptionId, frame.sequence);
|
|
170
|
+
}
|
|
171
|
+
this.#frames.push(frame);
|
|
172
|
+
}
|
|
173
|
+
#handleDisconnect(event) {
|
|
174
|
+
this.#socket = undefined;
|
|
175
|
+
if (this.#closing)
|
|
176
|
+
return;
|
|
177
|
+
if (!this.#reconnect.enabled) {
|
|
178
|
+
this.#frames.fail(new NodeTransportError(`Miao Runtime WebSocket disconnected (${event.code ?? "unknown"})`));
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
if (this.#reconnectTask)
|
|
182
|
+
return;
|
|
183
|
+
this.#reconnectTask = this.#reconnectLoop(event).finally(() => {
|
|
184
|
+
this.#reconnectTask = undefined;
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
async #reconnectLoop(cause) {
|
|
188
|
+
let lastError = cause;
|
|
189
|
+
for (let attempt = 1; attempt <= this.#reconnect.maxAttempts && !this.#closing; attempt += 1) {
|
|
190
|
+
await delay(reconnectDelay(attempt, this.#reconnect));
|
|
191
|
+
try {
|
|
192
|
+
await this.#open(attempt === 1 ? lastError : undefined);
|
|
193
|
+
const context = { attempt, subscriptions: new Map(this.#sequences) };
|
|
194
|
+
for (const frame of (await this.#options.resumeFrames?.(context)) ?? [])
|
|
195
|
+
await this.send(frame);
|
|
196
|
+
await this.#options.onReconnect?.(context);
|
|
197
|
+
return;
|
|
198
|
+
}
|
|
199
|
+
catch (error) {
|
|
200
|
+
lastError = error;
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
if (!this.#closing) {
|
|
204
|
+
this.#frames.fail(new NodeTransportError("Miao Runtime WebSocket reconnect attempts exhausted", { cause: lastError }));
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
function assertFrameSize(actual, maximum) {
|
|
209
|
+
if (actual > maximum)
|
|
210
|
+
throw new NodeTransportError(`Miao Runtime WebSocket frame exceeds ${maximum} bytes`);
|
|
211
|
+
}
|
|
212
|
+
function positive(value, name) {
|
|
213
|
+
if (!Number.isSafeInteger(value) || value < 1)
|
|
214
|
+
throw new RangeError(`${name} must be a positive safe integer`);
|
|
215
|
+
return value;
|
|
216
|
+
}
|
|
217
|
+
//# sourceMappingURL=websocket-transport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"websocket-transport.js","sourceRoot":"","sources":["../src/websocket-transport.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@miao-ai/node",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Node.js process, socket, and remote transports for Miao Runtime",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"miao",
|
|
7
|
+
"agent-runtime",
|
|
8
|
+
"typescript",
|
|
9
|
+
"nodejs"
|
|
10
|
+
],
|
|
11
|
+
"author": "Miao Contributors",
|
|
12
|
+
"license": "MIT OR Apache-2.0",
|
|
13
|
+
"homepage": "https://github.com/KkSss999/Miao#readme",
|
|
14
|
+
"bugs": {
|
|
15
|
+
"url": "https://github.com/KkSss999/Miao/issues"
|
|
16
|
+
},
|
|
17
|
+
"type": "module",
|
|
18
|
+
"main": "./dist/index.js",
|
|
19
|
+
"types": "./dist/index.d.ts",
|
|
20
|
+
"exports": {
|
|
21
|
+
".": {
|
|
22
|
+
"types": "./dist/index.d.ts",
|
|
23
|
+
"import": "./dist/index.js"
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
"files": [
|
|
27
|
+
"dist"
|
|
28
|
+
],
|
|
29
|
+
"scripts": {
|
|
30
|
+
"build": "tsc -p tsconfig.json",
|
|
31
|
+
"check": "tsc -p tsconfig.json --noEmit",
|
|
32
|
+
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
33
|
+
"test": "npm run build && tsc -p tsconfig.test.json && node --test dist-test/test/*.test.js",
|
|
34
|
+
"prepack": "node ../../scripts/prepare-package.mjs"
|
|
35
|
+
},
|
|
36
|
+
"dependencies": {
|
|
37
|
+
"@miao-ai/client": "0.1.0",
|
|
38
|
+
"@miao-ai/protocol": "0.1.0"
|
|
39
|
+
},
|
|
40
|
+
"optionalDependencies": {
|
|
41
|
+
"@miao-ai/runtime-darwin-arm64": "0.22.0",
|
|
42
|
+
"@miao-ai/runtime-win32-x64": "0.22.0"
|
|
43
|
+
},
|
|
44
|
+
"devDependencies": {
|
|
45
|
+
"@types/node": "^22.0.0",
|
|
46
|
+
"typescript": "^5.9.3"
|
|
47
|
+
},
|
|
48
|
+
"engines": {
|
|
49
|
+
"node": ">=20"
|
|
50
|
+
},
|
|
51
|
+
"repository": {
|
|
52
|
+
"type": "git",
|
|
53
|
+
"url": "https://github.com/KkSss999/Miao.git",
|
|
54
|
+
"directory": "sdk/typescript/packages/node"
|
|
55
|
+
},
|
|
56
|
+
"publishConfig": {
|
|
57
|
+
"access": "public"
|
|
58
|
+
}
|
|
59
|
+
}
|