@rkat/sdk 0.6.4 → 0.6.6
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 +2 -1
- package/dist/client.d.ts +90 -15
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +157 -30
- package/dist/client.js.map +1 -1
- package/dist/generated/types.d.ts +436 -269
- package/dist/generated/types.d.ts.map +1 -1
- package/dist/generated/types.js +2 -2
- package/dist/index.d.ts +5 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/live.d.ts +134 -0
- package/dist/live.d.ts.map +1 -0
- package/dist/live.js +193 -0
- package/dist/live.js.map +1 -0
- package/dist/live_webrtc.d.ts +27 -0
- package/dist/live_webrtc.d.ts.map +1 -0
- package/dist/live_webrtc.js +35 -0
- package/dist/live_webrtc.js.map +1 -0
- package/dist/mob.d.ts +1 -0
- package/dist/mob.d.ts.map +1 -1
- package/dist/mob.js.map +1 -1
- package/dist/types.d.ts +17 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/realtime.d.ts +0 -45
- package/dist/realtime.d.ts.map +0 -1
- package/dist/realtime.js +0 -166
- package/dist/realtime.js.map +0 -1
package/dist/realtime.js
DELETED
|
@@ -1,166 +0,0 @@
|
|
|
1
|
-
import { MeerkatError } from "./generated/errors.js";
|
|
2
|
-
import { AsyncQueue } from "./streaming.js";
|
|
3
|
-
import WebSocket from "ws";
|
|
4
|
-
export class RealtimeConnection {
|
|
5
|
-
socket;
|
|
6
|
-
frames = new AsyncQueue();
|
|
7
|
-
constructor(socket) {
|
|
8
|
-
this.socket = socket;
|
|
9
|
-
this.socket.on("message", (data) => {
|
|
10
|
-
const payload = typeof data === "string"
|
|
11
|
-
? data
|
|
12
|
-
: (Buffer.isBuffer(data) ? data.toString("utf8") : String(data));
|
|
13
|
-
this.frames.put(JSON.parse(payload));
|
|
14
|
-
});
|
|
15
|
-
this.socket.on("close", () => {
|
|
16
|
-
this.frames.put(null);
|
|
17
|
-
});
|
|
18
|
-
}
|
|
19
|
-
static async open(openInfo, options) {
|
|
20
|
-
const role = options?.role ?? "primary";
|
|
21
|
-
const turningMode = options?.turningMode ?? "provider_managed";
|
|
22
|
-
const socket = await new Promise((resolve, reject) => {
|
|
23
|
-
const ws = new WebSocket(openInfo.ws_url);
|
|
24
|
-
ws.once("open", () => resolve(ws));
|
|
25
|
-
ws.once("error", (error) => reject(error));
|
|
26
|
-
});
|
|
27
|
-
const connection = new RealtimeConnection(socket);
|
|
28
|
-
await connection.sendFrame({
|
|
29
|
-
type: "channel.open",
|
|
30
|
-
protocol_version: openInfo.default_protocol_version,
|
|
31
|
-
open_token: openInfo.open_token,
|
|
32
|
-
role,
|
|
33
|
-
turning_mode: turningMode,
|
|
34
|
-
});
|
|
35
|
-
const opened = await connection.nextFrame();
|
|
36
|
-
if (opened === null) {
|
|
37
|
-
throw new MeerkatError("REALTIME_OPEN_FAILED", "realtime websocket closed before channel.open completed");
|
|
38
|
-
}
|
|
39
|
-
const openedRecord = opened;
|
|
40
|
-
if (openedRecord.type === "channel.error") {
|
|
41
|
-
throw new MeerkatError("REALTIME_OPEN_FAILED", String(openedRecord.message ?? "realtime websocket rejected channel.open"));
|
|
42
|
-
}
|
|
43
|
-
if (openedRecord.type !== "channel.opened") {
|
|
44
|
-
throw new MeerkatError("INVALID_RESPONSE", `Expected channel.opened after channel.open, got ${String(openedRecord.type)}`);
|
|
45
|
-
}
|
|
46
|
-
return connection;
|
|
47
|
-
}
|
|
48
|
-
async sendFrame(frame) {
|
|
49
|
-
await new Promise((resolve, reject) => {
|
|
50
|
-
this.socket.send(JSON.stringify(frame), (error) => {
|
|
51
|
-
if (error) {
|
|
52
|
-
reject(error);
|
|
53
|
-
return;
|
|
54
|
-
}
|
|
55
|
-
resolve();
|
|
56
|
-
});
|
|
57
|
-
});
|
|
58
|
-
}
|
|
59
|
-
async sendInput(chunk) {
|
|
60
|
-
await this.sendFrame({
|
|
61
|
-
type: "channel.input",
|
|
62
|
-
chunk,
|
|
63
|
-
});
|
|
64
|
-
}
|
|
65
|
-
async commitTurn() {
|
|
66
|
-
await this.sendFrame({ type: "channel.commit_turn" });
|
|
67
|
-
}
|
|
68
|
-
async interrupt() {
|
|
69
|
-
await this.sendFrame({ type: "channel.interrupt" });
|
|
70
|
-
}
|
|
71
|
-
async close() {
|
|
72
|
-
await this.sendFrame({ type: "channel.close" });
|
|
73
|
-
}
|
|
74
|
-
async nextFrame() {
|
|
75
|
-
return this.frames.get();
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
export class RealtimeChannel {
|
|
79
|
-
client;
|
|
80
|
-
// The wire target that crosses the RPC boundary. Carries identity
|
|
81
|
-
// directly for `mob_member` channels (W3-H); the server resolves the
|
|
82
|
-
// current bridge session on every tick from the MobMachine's
|
|
83
|
-
// canonical member-session map, so the SDK never pins a session id.
|
|
84
|
-
target;
|
|
85
|
-
role;
|
|
86
|
-
turningMode;
|
|
87
|
-
reconnectPolicy;
|
|
88
|
-
constructor(client, target, options) {
|
|
89
|
-
this.client = client;
|
|
90
|
-
this.target = target;
|
|
91
|
-
this.role = options?.role ?? "primary";
|
|
92
|
-
this.turningMode = options?.turningMode ?? "provider_managed";
|
|
93
|
-
this.reconnectPolicy = options?.reconnectPolicy;
|
|
94
|
-
}
|
|
95
|
-
static session(client, sessionId, options) {
|
|
96
|
-
return new RealtimeChannel(client, { type: "session_target", session_id: sessionId }, options);
|
|
97
|
-
}
|
|
98
|
-
static mobMember(client, mobId, agentIdentity, options) {
|
|
99
|
-
// W3-H: identity is a first-class wire fact. The channel target is
|
|
100
|
-
// `mob_member { mob_id, agent_identity }`; the server resolves the
|
|
101
|
-
// current bridge session from the MobMachine's canonical member-session
|
|
102
|
-
// map on every tick, so respawn rotates the bridge session without
|
|
103
|
-
// any SDK round-trip or session-id pin.
|
|
104
|
-
return new RealtimeChannel(client, { type: "mob_member", mob_id: mobId, agent_identity: agentIdentity }, options);
|
|
105
|
-
}
|
|
106
|
-
wireReconnectPolicy() {
|
|
107
|
-
if (!this.reconnectPolicy) {
|
|
108
|
-
return undefined;
|
|
109
|
-
}
|
|
110
|
-
return { ...this.reconnectPolicy };
|
|
111
|
-
}
|
|
112
|
-
openRequest() {
|
|
113
|
-
return {
|
|
114
|
-
target: { ...this.target },
|
|
115
|
-
role: this.role,
|
|
116
|
-
turning_mode: this.turningMode,
|
|
117
|
-
reconnect_policy: this.wireReconnectPolicy(),
|
|
118
|
-
};
|
|
119
|
-
}
|
|
120
|
-
async openInfo() {
|
|
121
|
-
return this.client.realtimeOpenInfo(this.openRequest());
|
|
122
|
-
}
|
|
123
|
-
async status() {
|
|
124
|
-
return this.client.realtimeStatus({ target: { ...this.target } });
|
|
125
|
-
}
|
|
126
|
-
async capabilities() {
|
|
127
|
-
return this.client.realtimeCapabilities({ target: { ...this.target } });
|
|
128
|
-
}
|
|
129
|
-
async connectWithOpenInfo(openInfo) {
|
|
130
|
-
if (JSON.stringify(openInfo.target) !== JSON.stringify(this.target)) {
|
|
131
|
-
throw new MeerkatError("INVALID_RESPONSE", "realtime/open_info returned a target that does not match the requested channel target");
|
|
132
|
-
}
|
|
133
|
-
return RealtimeConnection.open(openInfo, {
|
|
134
|
-
role: this.role,
|
|
135
|
-
turningMode: this.turningMode,
|
|
136
|
-
});
|
|
137
|
-
}
|
|
138
|
-
async connect(options) {
|
|
139
|
-
const conn = await this.connectWithOpenInfo(await this.openInfo());
|
|
140
|
-
const wait = options?.waitForAttachment ?? true;
|
|
141
|
-
if (wait) {
|
|
142
|
-
const timeoutMs = options?.attachmentTimeoutMs ?? 30_000;
|
|
143
|
-
const deadline = Date.now() + timeoutMs;
|
|
144
|
-
let attached = false;
|
|
145
|
-
while (Date.now() < deadline) {
|
|
146
|
-
try {
|
|
147
|
-
const st = await this.status();
|
|
148
|
-
if (st.status.state === "ready") {
|
|
149
|
-
attached = true;
|
|
150
|
-
break;
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
catch {
|
|
154
|
-
// status may fail transiently during attachment
|
|
155
|
-
}
|
|
156
|
-
await new Promise((r) => setTimeout(r, 250));
|
|
157
|
-
}
|
|
158
|
-
if (!attached) {
|
|
159
|
-
conn.close();
|
|
160
|
-
throw new MeerkatError("REALTIME_ATTACHMENT_TIMEOUT", `realtime transport did not reach ready state within ${timeoutMs}ms`);
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
return conn;
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
//# sourceMappingURL=realtime.js.map
|
package/dist/realtime.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"realtime.js","sourceRoot":"","sources":["../src/realtime.ts"],"names":[],"mappings":"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"}
|