@moxt-ai/mobius 0.0.154 → 0.0.155
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 +34 -317
- package/dist/cli.js.map +4 -4
- package/dist/daemon-turn-registry.d.ts +13 -13
- package/dist/index.js +33 -316
- package/dist/index.js.map +4 -4
- package/dist/relay-connection/run-relay-connection.d.ts.map +1 -1
- package/dist/relay-connection/run-relay-connection.js +2 -15
- package/dist/relay-connection/run-relay-connection.js.map +1 -1
- package/dist/relay-connection/session-event-publisher.d.ts +4 -9
- package/dist/relay-connection/session-event-publisher.d.ts.map +1 -1
- package/dist/relay-connection/session-event-publisher.js +26 -140
- package/dist/relay-connection/session-event-publisher.js.map +1 -1
- package/dist/run-daemon.js +1 -1
- package/dist/run-daemon.js.map +1 -1
- package/dist/runtime.js +37 -320
- package/dist/runtime.js.map +4 -4
- package/package.json +1 -1
- package/dist/relay-connection/session-event-queue.d.ts +0 -14
- package/dist/relay-connection/session-event-queue.d.ts.map +0 -1
- package/dist/relay-connection/session-event-queue.js +0 -75
- package/dist/relay-connection/session-event-queue.js.map +0 -1
package/package.json
CHANGED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { type ReliableSessionEventEnvelope } from "@moxt-ai/mobius-protocol";
|
|
2
|
-
export declare class SessionEventQueueCapacityError extends Error {
|
|
3
|
-
readonly code = "session_event_queue_full";
|
|
4
|
-
constructor();
|
|
5
|
-
}
|
|
6
|
-
/** Pending delivery belongs to this daemon lifetime; a new daemon starts a new stream. */
|
|
7
|
-
export declare class SessionEventQueue {
|
|
8
|
-
#private;
|
|
9
|
-
readonly enqueueBatch: (sessionId: string, payloads: readonly string[], critical: boolean) => void;
|
|
10
|
-
readonly pending: (limit: number, excludedEventIds: ReadonlySet<string>) => readonly ReliableSessionEventEnvelope[];
|
|
11
|
-
readonly remove: (eventId: string, sessionId: string) => boolean;
|
|
12
|
-
readonly clear: () => void;
|
|
13
|
-
}
|
|
14
|
-
//# sourceMappingURL=session-event-queue.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"session-event-queue.d.ts","sourceRoot":"","sources":["../../src/relay-connection/session-event-queue.ts"],"names":[],"mappings":"AAEA,OAAO,EAEH,KAAK,4BAA4B,EAEpC,MAAM,0BAA0B,CAAC;AAKlC,qBAAa,8BAA+B,SAAQ,KAAK;IACrD,QAAQ,CAAC,IAAI,8BAA8B;IAE3C,cAGC;CACJ;AAED,0FAA0F;AAC1F,qBAAa,iBAAiB;;IAY1B,QAAQ,CAAC,YAAY,cAAe,MAAM,YAAY,SAAS,MAAM,EAAE,YAAY,OAAO,KAAG,IAAI,CA8B/F;IAEF,QAAQ,CAAC,OAAO,UACL,MAAM,oBACK,WAAW,CAAC,MAAM,CAAC,KACtC,SAAS,4BAA4B,EAAE,CAWxC;IAEF,QAAQ,CAAC,MAAM,YAAa,MAAM,aAAa,MAAM,KAAG,OAAO,CAQ7D;IAEF,QAAQ,CAAC,KAAK,QAAO,IAAI,CAGvB;CACL"}
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
import { randomUUID } from "node:crypto";
|
|
2
|
-
import { encodeSessionEventEnvelope, SESSION_EVENT_KIND, } from "@moxt-ai/mobius-protocol";
|
|
3
|
-
const STANDARD_EVENT_BYTES = 96 * 1024 * 1024;
|
|
4
|
-
const CRITICAL_EVENT_BYTES = 128 * 1024 * 1024;
|
|
5
|
-
export class SessionEventQueueCapacityError extends Error {
|
|
6
|
-
code = "session_event_queue_full";
|
|
7
|
-
constructor() {
|
|
8
|
-
super("The in-memory Session event queue is full");
|
|
9
|
-
this.name = "SessionEventQueueCapacityError";
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
/** Pending delivery belongs to this daemon lifetime; a new daemon starts a new stream. */
|
|
13
|
-
export class SessionEventQueue {
|
|
14
|
-
#streamId = randomUUID();
|
|
15
|
-
#events = new Map();
|
|
16
|
-
#nextSourceSeq = 1;
|
|
17
|
-
#totalBytes = 0;
|
|
18
|
-
enqueueBatch = (sessionId, payloads, critical) => {
|
|
19
|
-
if (payloads.length < 1 || payloads.length > 32) {
|
|
20
|
-
throw new Error("A Session event batch must contain between 1 and 32 events");
|
|
21
|
-
}
|
|
22
|
-
if (!Number.isSafeInteger(this.#nextSourceSeq + payloads.length)) {
|
|
23
|
-
throw new Error("The Session event source sequence is exhausted");
|
|
24
|
-
}
|
|
25
|
-
const entries = payloads.map((payload, index) => {
|
|
26
|
-
const envelope = {
|
|
27
|
-
delivery: {
|
|
28
|
-
eventId: randomUUID(),
|
|
29
|
-
kind: "reliable",
|
|
30
|
-
sourceSeq: (this.#nextSourceSeq + index).toString(),
|
|
31
|
-
streamId: this.#streamId,
|
|
32
|
-
},
|
|
33
|
-
kind: SESSION_EVENT_KIND,
|
|
34
|
-
payload,
|
|
35
|
-
sessionId,
|
|
36
|
-
};
|
|
37
|
-
return { envelope, byteLength: Buffer.byteLength(encodeSessionEventEnvelope(envelope), "utf8") };
|
|
38
|
-
});
|
|
39
|
-
const byteLength = entries.reduce((total, entry) => total + entry.byteLength, 0);
|
|
40
|
-
if (this.#totalBytes + byteLength > (critical ? CRITICAL_EVENT_BYTES : STANDARD_EVENT_BYTES)) {
|
|
41
|
-
throw new SessionEventQueueCapacityError();
|
|
42
|
-
}
|
|
43
|
-
for (const entry of entries) {
|
|
44
|
-
this.#events.set(entry.envelope.delivery.eventId, entry);
|
|
45
|
-
}
|
|
46
|
-
this.#nextSourceSeq += entries.length;
|
|
47
|
-
this.#totalBytes += byteLength;
|
|
48
|
-
};
|
|
49
|
-
pending = (limit, excludedEventIds) => {
|
|
50
|
-
const result = [];
|
|
51
|
-
for (const [eventId, entry] of this.#events) {
|
|
52
|
-
if (!excludedEventIds.has(eventId)) {
|
|
53
|
-
result.push(entry.envelope);
|
|
54
|
-
if (result.length === limit) {
|
|
55
|
-
break;
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
return result;
|
|
60
|
-
};
|
|
61
|
-
remove = (eventId, sessionId) => {
|
|
62
|
-
const entry = this.#events.get(eventId);
|
|
63
|
-
if (entry === undefined || entry.envelope.sessionId !== sessionId) {
|
|
64
|
-
return false;
|
|
65
|
-
}
|
|
66
|
-
this.#events.delete(eventId);
|
|
67
|
-
this.#totalBytes -= entry.byteLength;
|
|
68
|
-
return true;
|
|
69
|
-
};
|
|
70
|
-
clear = () => {
|
|
71
|
-
this.#events.clear();
|
|
72
|
-
this.#totalBytes = 0;
|
|
73
|
-
};
|
|
74
|
-
}
|
|
75
|
-
//# sourceMappingURL=session-event-queue.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"session-event-queue.js","sourceRoot":"","sources":["../../src/relay-connection/session-event-queue.ts"],"names":[],"mappings":"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"}
|