@moxt-ai/mobius 0.0.154 → 0.0.156
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/acp/agent-query-processes.d.ts +2 -1
- package/dist/acp/agent-query-processes.d.ts.map +1 -1
- package/dist/acp/agent-query-processes.js +7 -1
- package/dist/acp/agent-query-processes.js.map +1 -1
- package/dist/acp/agent-runtime-manager.d.ts +4 -2
- package/dist/acp/agent-runtime-manager.d.ts.map +1 -1
- package/dist/acp/agent-runtime-manager.js +19 -0
- package/dist/acp/agent-runtime-manager.js.map +1 -1
- package/dist/acp/agent-session.d.ts +2 -1
- package/dist/acp/agent-session.d.ts.map +1 -1
- package/dist/acp/agent-session.js +16 -2
- package/dist/acp/agent-session.js.map +1 -1
- package/dist/acp/session-contracts.d.ts +9 -1
- package/dist/acp/session-contracts.d.ts.map +1 -1
- package/dist/acp/session-contracts.js +1 -0
- package/dist/acp/session-contracts.js.map +1 -1
- package/dist/acp/session-history.d.ts +3 -2
- package/dist/acp/session-history.d.ts.map +1 -1
- package/dist/acp/session-history.js +17 -1
- package/dist/acp/session-history.js.map +1 -1
- package/dist/acp/session-store.d.ts +7 -0
- package/dist/acp/session-store.d.ts.map +1 -1
- package/dist/acp/session-store.js +34 -3
- package/dist/acp/session-store.js.map +1 -1
- package/dist/cli.js +1050 -402
- package/dist/cli.js.map +4 -4
- package/dist/daemon-command-handler.d.ts +3 -1
- package/dist/daemon-command-handler.d.ts.map +1 -1
- package/dist/daemon-command-handler.js +9 -3
- package/dist/daemon-command-handler.js.map +1 -1
- package/dist/daemon-history-commands.d.ts +2 -1
- package/dist/daemon-history-commands.d.ts.map +1 -1
- package/dist/daemon-history-commands.js +64 -1
- package/dist/daemon-history-commands.js.map +1 -1
- package/dist/daemon-observers.d.ts +3 -2
- package/dist/daemon-observers.d.ts.map +1 -1
- package/dist/daemon-observers.js +7 -1
- package/dist/daemon-observers.js.map +1 -1
- package/dist/daemon-prompt-executor.d.ts +3 -1
- package/dist/daemon-prompt-executor.d.ts.map +1 -1
- package/dist/daemon-prompt-executor.js +9 -3
- package/dist/daemon-prompt-executor.js.map +1 -1
- package/dist/generated/acp-session-store-migrations.d.ts +3 -0
- package/dist/generated/acp-session-store-migrations.d.ts.map +1 -1
- package/dist/generated/acp-session-store-migrations.js +5 -1
- package/dist/generated/acp-session-store-migrations.js.map +1 -1
- package/dist/index.js +1033 -385
- package/dist/index.js.map +4 -4
- package/dist/relay-connection/run-relay-connection.d.ts +3 -1
- package/dist/relay-connection/run-relay-connection.d.ts.map +1 -1
- package/dist/relay-connection/run-relay-connection.js +4 -16
- package/dist/relay-connection/run-relay-connection.js.map +1 -1
- package/dist/relay-connection/session-event-publisher.d.ts +5 -9
- package/dist/relay-connection/session-event-publisher.d.ts.map +1 -1
- package/dist/relay-connection/session-event-publisher.js +34 -131
- package/dist/relay-connection/session-event-publisher.js.map +1 -1
- package/dist/run-daemon.d.ts.map +1 -1
- package/dist/run-daemon.js +5 -2
- package/dist/run-daemon.js.map +1 -1
- package/dist/runtime.js +1032 -384
- package/dist/runtime.js.map +4 -4
- package/dist/schema/acp-session-store/index.d.ts +1 -0
- package/dist/schema/acp-session-store/index.d.ts.map +1 -1
- package/dist/schema/acp-session-store/index.js +1 -0
- package/dist/schema/acp-session-store/index.js.map +1 -1
- package/dist/schema/acp-session-store/session-event-v2.d.ts +82 -0
- package/dist/schema/acp-session-store/session-event-v2.d.ts.map +1 -0
- package/dist/schema/acp-session-store/session-event-v2.js +11 -0
- package/dist/schema/acp-session-store/session-event-v2.js.map +1 -0
- package/dist/session-event-log-v2.d.ts +15 -0
- package/dist/session-event-log-v2.d.ts.map +1 -0
- package/dist/session-event-log-v2.js +238 -0
- package/dist/session-event-log-v2.js.map +1 -0
- 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
|
@@ -6,6 +6,7 @@ import type { DaemonConfig } from "../config.ts";
|
|
|
6
6
|
import type { DaemonInstallationObserver } from "../daemon-observers.ts";
|
|
7
7
|
import type { DaemonTurnRegistry } from "../daemon-turn-registry.ts";
|
|
8
8
|
import type { NativeSessionService } from "../native-sessions/service.ts";
|
|
9
|
+
import type { DaemonSessionEventLogV2 } from "../session-event-log-v2.ts";
|
|
9
10
|
import type { DaemonOperationState } from "./daemon-operation-state.ts";
|
|
10
11
|
import type { RelayConnectionDiagnostics } from "./diagnostics.ts";
|
|
11
12
|
import type { DaemonSessionEventPublisher } from "./session-event-publisher.ts";
|
|
@@ -20,6 +21,7 @@ export interface RelayConnectionOptions {
|
|
|
20
21
|
readonly nativeSessions: NativeSessionService;
|
|
21
22
|
readonly operations: DaemonOperationState;
|
|
22
23
|
readonly publisher: DaemonSessionEventPublisher;
|
|
24
|
+
readonly eventLogV2: DaemonSessionEventLogV2;
|
|
23
25
|
readonly activeTurns: DaemonTurnRegistry;
|
|
24
26
|
readonly connectionEpoch: number;
|
|
25
27
|
readonly diagnostics: RelayConnectionDiagnostics;
|
|
@@ -28,5 +30,5 @@ export interface RelayConnectionOptions {
|
|
|
28
30
|
readonly timer: DaemonTimer;
|
|
29
31
|
readonly resolveAgentCatalogEnvironment: (signal: AbortSignal) => Promise<Readonly<NodeJS.ProcessEnv>>;
|
|
30
32
|
}
|
|
31
|
-
export declare function runRelayConnection({ config, directories, audit, sessions, installations, installationObserver, nativeSessions, operations, publisher, activeTurns, connectionEpoch, diagnostics, onConnected, signal, timer, resolveAgentCatalogEnvironment, }: RelayConnectionOptions): Promise<void>;
|
|
33
|
+
export declare function runRelayConnection({ config, directories, audit, sessions, installations, installationObserver, nativeSessions, operations, publisher, eventLogV2, activeTurns, connectionEpoch, diagnostics, onConnected, signal, timer, resolveAgentCatalogEnvironment, }: RelayConnectionOptions): Promise<void>;
|
|
32
34
|
//# sourceMappingURL=run-relay-connection.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-relay-connection.d.ts","sourceRoot":"","sources":["../../src/relay-connection/run-relay-connection.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"run-relay-connection.d.ts","sourceRoot":"","sources":["../../src/relay-connection/run-relay-connection.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,qDAAqD,CAAC;AACpG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,yCAAyC,CAAC;AACzF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAGjD,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAE1E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAGnE,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AAChF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAe9C,MAAM,WAAW,sBAAsB;IACnC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,WAAW,EAAE,yBAAyB,CAAC;IAChD,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,CAAC;IACvC,QAAQ,CAAC,aAAa,EAAE,wBAAwB,CAAC;IACjD,QAAQ,CAAC,oBAAoB,EAAE,0BAA0B,CAAC;IAC1D,QAAQ,CAAC,cAAc,EAAE,oBAAoB,CAAC;IAC9C,QAAQ,CAAC,UAAU,EAAE,oBAAoB,CAAC;IAC1C,QAAQ,CAAC,SAAS,EAAE,2BAA2B,CAAC;IAChD,QAAQ,CAAC,UAAU,EAAE,uBAAuB,CAAC;IAC7C,QAAQ,CAAC,WAAW,EAAE,kBAAkB,CAAC;IACzC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,WAAW,EAAE,0BAA0B,CAAC;IACjD,QAAQ,CAAC,WAAW,EAAE,MAAM,IAAI,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAC5B,QAAQ,CAAC,8BAA8B,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;CAC1G;AAED,wBAAsB,kBAAkB,CAAC,EACrC,MAAM,EACN,WAAW,EACX,KAAK,EACL,QAAQ,EACR,aAAa,EACb,oBAAoB,EACpB,cAAc,EACd,UAAU,EACV,SAAS,EACT,UAAU,EACV,WAAW,EACX,eAAe,EACf,WAAW,EACX,WAAW,EACX,MAAM,EACN,KAAK,EACL,8BAA8B,GACjC,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAmKxC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { decodeServiceToDaemonMessage, RUNTIME_HEARTBEAT_ACK_KIND, RUNTIME_LIVENESS_READY_KIND,
|
|
1
|
+
import { decodeServiceToDaemonMessage, RUNTIME_HEARTBEAT_ACK_KIND, RUNTIME_LIVENESS_READY_KIND, } from "@moxt-ai/mobius-protocol";
|
|
2
2
|
import { WebSocket } from "undici";
|
|
3
3
|
import { createDaemonCommandHandler } from "../daemon-command-handler.js";
|
|
4
4
|
import { send } from "../daemon-command-results.js";
|
|
@@ -19,10 +19,9 @@ function closeRelaySocket(socket, code, reason) {
|
|
|
19
19
|
}
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
|
-
export async function runRelayConnection({ config, directories, audit, sessions, installations, installationObserver, nativeSessions, operations, publisher, activeTurns, connectionEpoch, diagnostics, onConnected, signal, timer, resolveAgentCatalogEnvironment, }) {
|
|
22
|
+
export async function runRelayConnection({ config, directories, audit, sessions, installations, installationObserver, nativeSessions, operations, publisher, eventLogV2, activeTurns, connectionEpoch, diagnostics, onConnected, signal, timer, resolveAgentCatalogEnvironment, }) {
|
|
23
23
|
const relayUrl = new URL(config.relayUrl);
|
|
24
24
|
relayUrl.searchParams.set("liveness", "1");
|
|
25
|
-
relayUrl.searchParams.set("sessionEventDelivery", "reliable-v1");
|
|
26
25
|
const socket = await connectRelay(relayUrl, signal);
|
|
27
26
|
diagnostics.connectionOpened(connectionEpoch);
|
|
28
27
|
const connectionController = new AbortController();
|
|
@@ -35,6 +34,7 @@ export async function runRelayConnection({ config, directories, audit, sessions,
|
|
|
35
34
|
nativeSessions,
|
|
36
35
|
operations,
|
|
37
36
|
publisher,
|
|
37
|
+
eventLogV2,
|
|
38
38
|
activeTurns,
|
|
39
39
|
diagnostics,
|
|
40
40
|
socket,
|
|
@@ -138,7 +138,7 @@ export async function runRelayConnection({ config, directories, audit, sessions,
|
|
|
138
138
|
const message = decodeServiceToDaemonMessage(encoded);
|
|
139
139
|
const kind = message.kind;
|
|
140
140
|
if (kind === RUNTIME_LIVENESS_READY_KIND) {
|
|
141
|
-
publisher.connect(socket
|
|
141
|
+
publisher.connect(socket);
|
|
142
142
|
connectionLiveness.start();
|
|
143
143
|
return;
|
|
144
144
|
}
|
|
@@ -146,18 +146,6 @@ export async function runRelayConnection({ config, directories, audit, sessions,
|
|
|
146
146
|
connectionLiveness.acknowledge(message);
|
|
147
147
|
return;
|
|
148
148
|
}
|
|
149
|
-
if (kind === SESSION_EVENT_ACK_KIND) {
|
|
150
|
-
publisher.acknowledge(message);
|
|
151
|
-
return;
|
|
152
|
-
}
|
|
153
|
-
if (kind === SESSION_EVENT_DEFERRED_KIND) {
|
|
154
|
-
publisher.defer(message);
|
|
155
|
-
return;
|
|
156
|
-
}
|
|
157
|
-
if (kind === SESSION_EVENT_REJECTED_KIND) {
|
|
158
|
-
publisher.reject(message);
|
|
159
|
-
return;
|
|
160
|
-
}
|
|
161
149
|
commands.handle(message);
|
|
162
150
|
}
|
|
163
151
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-relay-connection.js","sourceRoot":"","sources":["../../src/relay-connection/run-relay-connection.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,4BAA4B,EAC5B,0BAA0B,EAC1B,2BAA2B,
|
|
1
|
+
{"version":3,"file":"run-relay-connection.js","sourceRoot":"","sources":["../../src/relay-connection/run-relay-connection.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,17 +1,13 @@
|
|
|
1
|
-
import { type RecordedSessionEvent, type
|
|
1
|
+
import { type RecordedSessionEvent, type SessionEventV2 } from "@moxt-ai/mobius-protocol";
|
|
2
2
|
import { WebSocket } from "undici";
|
|
3
|
-
|
|
4
|
-
/** Retries pending events while this daemon lives; shutdown discards unacknowledged delivery. */
|
|
3
|
+
/** Live broadcast only. Disconnected or overloaded transports drop events; nothing is replayed. */
|
|
5
4
|
export declare class DaemonSessionEventPublisher {
|
|
6
5
|
#private;
|
|
7
|
-
|
|
8
|
-
readonly acknowledge: (acknowledgement: SessionEventAcknowledgement) => void;
|
|
9
|
-
readonly close: () => void;
|
|
10
|
-
readonly connect: (socket: WebSocket, delivery: "ephemeral" | "reliable") => void;
|
|
11
|
-
readonly defer: (deferred: SessionEventDeferred) => void;
|
|
6
|
+
readonly connect: (socket: WebSocket) => void;
|
|
12
7
|
readonly disconnect: (socket: WebSocket) => void;
|
|
8
|
+
readonly close: () => void;
|
|
13
9
|
readonly publish: (sessionId: string, event: RecordedSessionEvent) => void;
|
|
14
10
|
readonly publishBatch: (sessionId: string, events: readonly RecordedSessionEvent[]) => void;
|
|
15
|
-
readonly
|
|
11
|
+
readonly publishV2: (event: SessionEventV2) => void;
|
|
16
12
|
}
|
|
17
13
|
//# sourceMappingURL=session-event-publisher.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-event-publisher.d.ts","sourceRoot":"","sources":["../../src/relay-connection/session-event-publisher.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"session-event-publisher.d.ts","sourceRoot":"","sources":["../../src/relay-connection/session-event-publisher.ts"],"names":[],"mappings":"AAAA,OAAO,EAGH,KAAK,oBAAoB,EAGzB,KAAK,cAAc,EACtB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAInC,mGAAmG;AACnG,qBAAa,2BAA2B;;IAGpC,QAAQ,CAAC,OAAO,WAAY,SAAS,KAAG,IAAI,CAE1C;IAEF,QAAQ,CAAC,UAAU,WAAY,SAAS,KAAG,IAAI,CAI7C;IAEF,QAAQ,CAAC,KAAK,QAAO,IAAI,CAEvB;IAEF,QAAQ,CAAC,OAAO,cAAe,MAAM,SAAS,oBAAoB,KAAG,IAAI,CAmBvE;IAEF,QAAQ,CAAC,YAAY,cAAe,MAAM,UAAU,SAAS,oBAAoB,EAAE,KAAG,IAAI,CAIxF;IAEF,QAAQ,CAAC,SAAS,UAAW,cAAc,KAAG,IAAI,CAehD;CACL"}
|
|
@@ -1,158 +1,61 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { encodeDaemonToServiceMessage, encodeRecordedSessionEvent, SESSION_EVENT_KIND, SESSION_EVENT_V2_KIND, } from "@moxt-ai/mobius-protocol";
|
|
2
2
|
import { WebSocket } from "undici";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
const SESSION_EVENT_REPLAY_BYTE_LIMIT = 32 * 1024 * 1024;
|
|
6
|
-
function reservesSessionEventCapacity(event) {
|
|
7
|
-
if (event.kind === SESSION_COMPLETED_KIND ||
|
|
8
|
-
event.kind === SESSION_FAILED_KIND ||
|
|
9
|
-
event.kind === SESSION_FORKED_KIND ||
|
|
10
|
-
event.kind === SESSION_READY_KIND) {
|
|
11
|
-
return true;
|
|
12
|
-
}
|
|
13
|
-
return (event.kind === AGENT_ACTIVITY_KIND &&
|
|
14
|
-
(event.activityType === "progress" || event.activityType === "reasoning") &&
|
|
15
|
-
(event.status === "completed" || event.status === "failed"));
|
|
16
|
-
}
|
|
17
|
-
/** Retries pending events while this daemon lives; shutdown discards unacknowledged delivery. */
|
|
3
|
+
const MAX_BUFFERED_BYTES = 32 * 1024 * 1024;
|
|
4
|
+
/** Live broadcast only. Disconnected or overloaded transports drop events; nothing is replayed. */
|
|
18
5
|
export class DaemonSessionEventPublisher {
|
|
19
|
-
#
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
constructor(timer) {
|
|
27
|
-
this.#timer = timer;
|
|
28
|
-
}
|
|
29
|
-
acknowledge = (acknowledgement) => {
|
|
30
|
-
if (!this.#queue.remove(acknowledgement.eventId, acknowledgement.sessionId)) {
|
|
31
|
-
return;
|
|
6
|
+
#socket = null;
|
|
7
|
+
connect = (socket) => {
|
|
8
|
+
this.#socket = socket;
|
|
9
|
+
};
|
|
10
|
+
disconnect = (socket) => {
|
|
11
|
+
if (this.#socket === socket) {
|
|
12
|
+
this.#socket = null;
|
|
32
13
|
}
|
|
33
|
-
this.#removeInFlight(acknowledgement.eventId);
|
|
34
|
-
this.#publishNextBatch();
|
|
35
14
|
};
|
|
36
15
|
close = () => {
|
|
37
|
-
this.#
|
|
38
|
-
this.#deferredReplay = null;
|
|
39
|
-
this.#connection = { kind: "disconnected" };
|
|
40
|
-
this.#clearInFlight();
|
|
41
|
-
this.#queue.clear();
|
|
42
|
-
};
|
|
43
|
-
connect = (socket, delivery) => {
|
|
44
|
-
this.#connection = { delivery, kind: "connected", socket };
|
|
45
|
-
this.#clearInFlight();
|
|
46
|
-
this.#publishNextBatch();
|
|
16
|
+
this.#socket = null;
|
|
47
17
|
};
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
}
|
|
52
|
-
this.#clearInFlight();
|
|
53
|
-
if (this.#deferredReplay !== null) {
|
|
18
|
+
publish = (sessionId, event) => {
|
|
19
|
+
const socket = this.#socket;
|
|
20
|
+
if (socket === null || socket.readyState !== WebSocket.OPEN) {
|
|
54
21
|
return;
|
|
55
22
|
}
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
23
|
+
const encoded = encodeDaemonToServiceMessage({
|
|
24
|
+
kind: SESSION_EVENT_KIND,
|
|
25
|
+
payload: encodeRecordedSessionEvent(event),
|
|
26
|
+
sessionId,
|
|
27
|
+
});
|
|
28
|
+
if (socket.bufferedAmount + Buffer.byteLength(encoded, "utf8") > MAX_BUFFERED_BYTES) {
|
|
29
|
+
socket.close(1013, "Live event transport overloaded");
|
|
63
30
|
return;
|
|
64
31
|
}
|
|
65
|
-
this.#connection = { kind: "disconnected" };
|
|
66
|
-
this.#clearInFlight();
|
|
67
|
-
};
|
|
68
|
-
publish = (sessionId, event) => {
|
|
69
32
|
try {
|
|
70
|
-
|
|
33
|
+
socket.send(encoded);
|
|
71
34
|
}
|
|
72
|
-
catch
|
|
73
|
-
|
|
74
|
-
throw error;
|
|
75
|
-
}
|
|
76
|
-
if (!this.#reportedCapacityKinds.has(event.kind)) {
|
|
77
|
-
this.#reportedCapacityKinds.add(event.kind);
|
|
78
|
-
console.warn(`Mobius daemon could not buffer "${event.kind}" because the Session event queue is full`);
|
|
79
|
-
}
|
|
80
|
-
return;
|
|
35
|
+
catch {
|
|
36
|
+
// Socket liveness owns reconnection. Missed events are not delivery work.
|
|
81
37
|
}
|
|
82
|
-
this.#publishNextBatch();
|
|
83
38
|
};
|
|
84
39
|
publishBatch = (sessionId, events) => {
|
|
85
|
-
const
|
|
86
|
-
|
|
87
|
-
this.#publishNextBatch();
|
|
88
|
-
};
|
|
89
|
-
reject = (rejection) => {
|
|
90
|
-
if (!this.#queue.remove(rejection.eventId, rejection.sessionId)) {
|
|
91
|
-
return;
|
|
40
|
+
for (const event of events) {
|
|
41
|
+
this.publish(sessionId, event);
|
|
92
42
|
}
|
|
93
|
-
this.#removeInFlight(rejection.eventId);
|
|
94
|
-
console.error(`Mobius Relay rejected Session event ${rejection.eventId} with code ${rejection.code}`);
|
|
95
|
-
this.#publishNextBatch();
|
|
96
43
|
};
|
|
97
|
-
|
|
98
|
-
this.#
|
|
99
|
-
|
|
100
|
-
};
|
|
101
|
-
#publishNextBatch = () => {
|
|
102
|
-
if (this.#deferredReplay !== null || this.#connection.kind !== "connected") {
|
|
44
|
+
publishV2 = (event) => {
|
|
45
|
+
const socket = this.#socket;
|
|
46
|
+
if (socket === null || socket.readyState !== WebSocket.OPEN) {
|
|
103
47
|
return;
|
|
104
48
|
}
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
for (const envelope of batch) {
|
|
109
|
-
const encoded = encodeDaemonToServiceMessage(this.#connection.delivery === "reliable"
|
|
110
|
-
? envelope
|
|
111
|
-
: {
|
|
112
|
-
kind: envelope.kind,
|
|
113
|
-
payload: envelope.payload,
|
|
114
|
-
sessionId: envelope.sessionId,
|
|
115
|
-
});
|
|
116
|
-
const byteLength = Buffer.byteLength(encoded, "utf8");
|
|
117
|
-
if (this.#inFlightBytes + byteLength > SESSION_EVENT_REPLAY_BYTE_LIMIT) {
|
|
118
|
-
return;
|
|
119
|
-
}
|
|
120
|
-
if (!this.#send(encoded)) {
|
|
121
|
-
this.#clearInFlight();
|
|
122
|
-
return;
|
|
123
|
-
}
|
|
124
|
-
if (this.#connection.delivery === "ephemeral") {
|
|
125
|
-
this.#queue.remove(envelope.delivery.eventId, envelope.sessionId);
|
|
126
|
-
sent += 1;
|
|
127
|
-
continue;
|
|
128
|
-
}
|
|
129
|
-
this.#inFlight.set(envelope.delivery.eventId, { byteLength });
|
|
130
|
-
this.#inFlightBytes += byteLength;
|
|
131
|
-
sent += 1;
|
|
132
|
-
}
|
|
133
|
-
if (sent === 0) {
|
|
134
|
-
return;
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
};
|
|
138
|
-
#removeInFlight = (eventId) => {
|
|
139
|
-
const inFlight = this.#inFlight.get(eventId);
|
|
140
|
-
if (inFlight === undefined) {
|
|
49
|
+
const encoded = encodeDaemonToServiceMessage({ event, kind: SESSION_EVENT_V2_KIND });
|
|
50
|
+
if (socket.bufferedAmount + Buffer.byteLength(encoded, "utf8") > MAX_BUFFERED_BYTES) {
|
|
51
|
+
socket.close(1013, "Live event transport overloaded");
|
|
141
52
|
return;
|
|
142
53
|
}
|
|
143
|
-
this.#inFlight.delete(eventId);
|
|
144
|
-
this.#inFlightBytes -= inFlight.byteLength;
|
|
145
|
-
};
|
|
146
|
-
#send = (encoded) => {
|
|
147
|
-
if (this.#connection.kind !== "connected" || this.#connection.socket.readyState !== WebSocket.OPEN) {
|
|
148
|
-
return false;
|
|
149
|
-
}
|
|
150
54
|
try {
|
|
151
|
-
|
|
152
|
-
return true;
|
|
55
|
+
socket.send(encoded);
|
|
153
56
|
}
|
|
154
57
|
catch {
|
|
155
|
-
|
|
58
|
+
// Socket liveness owns reconnection. Missed events are recovered from committed history.
|
|
156
59
|
}
|
|
157
60
|
};
|
|
158
61
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-event-publisher.js","sourceRoot":"","sources":["../../src/relay-connection/session-event-publisher.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,
|
|
1
|
+
{"version":3,"file":"session-event-publisher.js","sourceRoot":"","sources":["../../src/relay-connection/session-event-publisher.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,4BAA4B,EAC5B,0BAA0B,EAE1B,kBAAkB,EAClB,qBAAqB,GAExB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAEnC,MAAM,kBAAkB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AAE5C,mGAAmG;AACnG,MAAM,OAAO,2BAA2B;IACpC,OAAO,GAAqB,IAAI,CAAC;IAExB,OAAO,GAAG,CAAC,MAAiB,EAAQ,EAAE;QAC3C,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IAC1B,CAAC,CAAC;IAEO,UAAU,GAAG,CAAC,MAAiB,EAAQ,EAAE;QAC9C,IAAI,IAAI,CAAC,OAAO,KAAK,MAAM,EAAE,CAAC;YAC1B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACxB,CAAC;IACL,CAAC,CAAC;IAEO,KAAK,GAAG,GAAS,EAAE;QACxB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IACxB,CAAC,CAAC;IAEO,OAAO,GAAG,CAAC,SAAiB,EAAE,KAA2B,EAAQ,EAAE;QACxE,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;YAC1D,OAAO;QACX,CAAC;QACD,MAAM,OAAO,GAAG,4BAA4B,CAAC;YACzC,IAAI,EAAE,kBAAkB;YACxB,OAAO,EAAE,0BAA0B,CAAC,KAAK,CAAC;YAC1C,SAAS;SACZ,CAAC,CAAC;QACH,IAAI,MAAM,CAAC,cAAc,GAAG,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,kBAAkB,EAAE,CAAC;YAClF,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,iCAAiC,CAAC,CAAC;YACtD,OAAO;QACX,CAAC;QACD,IAAI,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACzB,CAAC;QAAC,MAAM,CAAC;YACL,0EAA0E;QAC9E,CAAC;IACL,CAAC,CAAC;IAEO,YAAY,GAAG,CAAC,SAAiB,EAAE,MAAuC,EAAQ,EAAE;QACzF,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YACzB,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QACnC,CAAC;IACL,CAAC,CAAC;IAEO,SAAS,GAAG,CAAC,KAAqB,EAAQ,EAAE;QACjD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;YAC1D,OAAO;QACX,CAAC;QACD,MAAM,OAAO,GAAG,4BAA4B,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,qBAAqB,EAAE,CAAC,CAAC;QACrF,IAAI,MAAM,CAAC,cAAc,GAAG,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,kBAAkB,EAAE,CAAC;YAClF,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,iCAAiC,CAAC,CAAC;YACtD,OAAO;QACX,CAAC;QACD,IAAI,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACzB,CAAC;QAAC,MAAM,CAAC;YACL,yFAAyF;QAC7F,CAAC;IACL,CAAC,CAAC;CACL"}
|
package/dist/run-daemon.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-daemon.d.ts","sourceRoot":"","sources":["../src/run-daemon.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAWhD,OAAO,EAAE,KAAK,WAAW,EAAqB,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"run-daemon.d.ts","sourceRoot":"","sources":["../src/run-daemon.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAWhD,OAAO,EAAE,KAAK,WAAW,EAAqB,MAAM,6BAA6B,CAAC;AAyElF,MAAM,WAAW,gBAAgB;IAC7B,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC,MAAM,EAAE,QAAQ,GAAG,cAAc,KAAK,IAAI,CAAC;IAC1E,QAAQ,CAAC,8BAA8B,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;CAC3G;AAED,wBAAsB,SAAS,CAC3B,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,WAAW,EACnB,KAAK,GAAE,WAA+B,EACtC,OAAO,GAAE,gBAAqB,GAC/B,OAAO,CAAC,IAAI,CAAC,CAmNf"}
|
package/dist/run-daemon.js
CHANGED
|
@@ -21,6 +21,7 @@ import { runRelayConnection } from "./relay-connection/run-relay-connection.js";
|
|
|
21
21
|
import { RuntimeRelayRevokedError } from "./relay-connection/runtime-revocation.js";
|
|
22
22
|
import { DaemonSessionEventPublisher } from "./relay-connection/session-event-publisher.js";
|
|
23
23
|
import { systemDaemonTimer } from "./relay-connection/timer.js";
|
|
24
|
+
import { DaemonSessionEventLogV2 } from "./session-event-log-v2.js";
|
|
24
25
|
const RELAY_RECONNECT_DELAY_MILLISECONDS = 500;
|
|
25
26
|
function waitForRelayRetry(signal, timer) {
|
|
26
27
|
if (signal.aborted) {
|
|
@@ -87,12 +88,13 @@ export async function runDaemon(config, audit, signal, timer = systemDaemonTimer
|
|
|
87
88
|
});
|
|
88
89
|
const sessionStore = new SqliteAcpSessionStore(join(stateDirectory, "sessions", `${createHash("sha256").update(config.channelId).digest("hex")}.sqlite`));
|
|
89
90
|
const operations = new DaemonOperationState();
|
|
90
|
-
const publisher = new DaemonSessionEventPublisher(
|
|
91
|
+
const publisher = new DaemonSessionEventPublisher();
|
|
92
|
+
const eventLogV2 = new DaemonSessionEventLogV2(publisher, sessionStore);
|
|
91
93
|
const activeTurns = new DaemonTurnRegistry(operations);
|
|
92
94
|
const recordSessionEvent = (sessionId, event) => {
|
|
93
95
|
publisher.publish(sessionId, activeTurns.recordEvent(event));
|
|
94
96
|
};
|
|
95
|
-
const agentRuntime = new AgentRuntimeManager(new DaemonAcpObserver(recordSessionEvent), sessionStore, {
|
|
97
|
+
const agentRuntime = new AgentRuntimeManager(new DaemonAcpObserver(recordSessionEvent, eventLogV2.acpUpdate), sessionStore, {
|
|
96
98
|
read: async (options, nativeSessionId, nativeTurn) => options.agent.id === "codex"
|
|
97
99
|
? (await readCodexFullHistory(options.agent, options.cwd, nativeSessionId, options.signal, nativeTurn)).history
|
|
98
100
|
: null,
|
|
@@ -182,6 +184,7 @@ export async function runDaemon(config, audit, signal, timer = systemDaemonTimer
|
|
|
182
184
|
nativeSessions,
|
|
183
185
|
operations,
|
|
184
186
|
publisher,
|
|
187
|
+
eventLogV2,
|
|
185
188
|
activeTurns,
|
|
186
189
|
connectionEpoch,
|
|
187
190
|
diagnostics,
|
package/dist/run-daemon.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-daemon.js","sourceRoot":"","sources":["../src/run-daemon.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,EAAE,0BAA0B,EAA6B,MAAM,0BAA0B,CAAC;AAEjG,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,iCAAiC,EAAE,MAAM,0CAA0C,CAAC;AAC7F,OAAO,EAAE,0BAA0B,EAAE,MAAM,gCAAgC,CAAC;AAC5E,OAAO,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AAC/E,OAAO,EAAE,wBAAwB,EAAE,MAAM,oDAAoD,CAAC;AAC9F,OAAO,EAAE,yBAAyB,EAAE,MAAM,qDAAqD,CAAC;AAEhG,OAAO,EAAE,yBAAyB,EAAE,MAAM,wCAAwC,CAAC;AAEnF,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAC/G,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,8CAA8C,CAAC;AACpF,OAAO,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;AAC/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,4CAA4C,CAAC;AAChF,OAAO,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAC;AACpF,OAAO,EAAE,2BAA2B,EAAE,MAAM,+CAA+C,CAAC;AAC5F,OAAO,EAAoB,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"run-daemon.js","sourceRoot":"","sources":["../src/run-daemon.ts"],"names":[],"mappings":"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"}
|