@moxt-ai/mobius 0.0.178 → 0.0.180
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/codex/app-server-protocol.d.ts +11 -0
- package/dist/acp/codex/app-server-protocol.d.ts.map +1 -1
- package/dist/acp/codex/app-server-protocol.js +16 -0
- package/dist/acp/codex/app-server-protocol.js.map +1 -1
- package/dist/acp/codex/items.d.ts.map +1 -1
- package/dist/acp/codex/items.js +23 -0
- package/dist/acp/codex/items.js.map +1 -1
- package/dist/acp/session-contracts.d.ts +4 -2
- package/dist/acp/session-contracts.d.ts.map +1 -1
- package/dist/acp/session-contracts.js.map +1 -1
- package/dist/acp/session-event-store-v2.d.ts +9 -8
- package/dist/acp/session-event-store-v2.d.ts.map +1 -1
- package/dist/acp/session-event-store-v2.js +59 -25
- package/dist/acp/session-event-store-v2.js.map +1 -1
- package/dist/acp/session-history.d.ts +3 -3
- package/dist/acp/session-history.d.ts.map +1 -1
- package/dist/acp/session-history.js +2 -1
- package/dist/acp/session-history.js.map +1 -1
- package/dist/acp/session-store.d.ts.map +1 -1
- package/dist/acp/session-store.js +2 -3
- package/dist/acp/session-store.js.map +1 -1
- package/dist/cli.js +135 -55
- package/dist/cli.js.map +4 -4
- package/dist/daemon-history-commands.d.ts.map +1 -1
- package/dist/daemon-history-commands.js +2 -2
- 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.map +1 -1
- package/dist/index.js +132 -52
- package/dist/index.js.map +4 -4
- package/dist/run-daemon.d.ts.map +1 -1
- package/dist/run-daemon.js +2 -3
- package/dist/run-daemon.js.map +1 -1
- package/dist/runtime.js +137 -57
- package/dist/runtime.js.map +4 -4
- package/dist/session-event-log-v2.d.ts +5 -5
- package/dist/session-event-log-v2.d.ts.map +1 -1
- package/dist/session-event-log-v2.js +6 -9
- package/dist/session-event-log-v2.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"daemon-history-commands.d.ts","sourceRoot":"","sources":["../src/daemon-history-commands.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kCAAkC,EAAE,MAAM,0BAA0B,CAAC;AACnF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAC1E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEzD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,wCAAwC,CAAC;AACxF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;AACpF,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACzE,wBAAsB,mCAAmC,CACrD,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,UAAU,CAAC,OAAO,kCAAkC,CAAC,EAC9D,MAAM,EAAE,YAAY,EACpB,WAAW,EAAE,yBAAyB,EACtC,KAAK,EAAE,UAAU,EACjB,WAAW,EAAE,0BAA0B,EACvC,QAAQ,EAAE,mBAAmB,EAC7B,UAAU,EAAE,uBAAuB,EACnC,MAAM,EAAE,WAAW,GACpB,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"daemon-history-commands.d.ts","sourceRoot":"","sources":["../src/daemon-history-commands.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kCAAkC,EAAE,MAAM,0BAA0B,CAAC;AACnF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAC1E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEzD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,wCAAwC,CAAC;AACxF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;AACpF,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACzE,wBAAsB,mCAAmC,CACrD,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,UAAU,CAAC,OAAO,kCAAkC,CAAC,EAC9D,MAAM,EAAE,YAAY,EACpB,WAAW,EAAE,yBAAyB,EACtC,KAAK,EAAE,UAAU,EACjB,WAAW,EAAE,0BAA0B,EACvC,QAAQ,EAAE,mBAAmB,EAC7B,UAAU,EAAE,uBAAuB,EACnC,MAAM,EAAE,WAAW,GACpB,OAAO,CAAC,IAAI,CAAC,CA0Ef"}
|
|
@@ -13,7 +13,7 @@ export async function executeSessionLiveHistoryV2PageLoad(socket, command, confi
|
|
|
13
13
|
const recovery = eventLogV2.promptRequestRecovery(command.sessionId);
|
|
14
14
|
const replay = await sessions.loadSessionEventsV2(loadOptions, command.eventLimit, command.cursor);
|
|
15
15
|
signal.throwIfAborted();
|
|
16
|
-
const events = replay.events.map((event, index) => eventLogV2.event(command.sessionId, replay.startPosition + index, event, "1970-01-01T00:00:00.000Z"));
|
|
16
|
+
const events = replay.events.map((event, index) => eventLogV2.event(command.sessionId, replay.sessionGenerationId, replay.startPosition + index, event, "1970-01-01T00:00:00.000Z"));
|
|
17
17
|
const tailCursor = events.at(-1)?.eventId ?? "";
|
|
18
18
|
audit.record({
|
|
19
19
|
commandId: command.requestId,
|
|
@@ -23,9 +23,9 @@ export async function executeSessionLiveHistoryV2PageLoad(socket, command, confi
|
|
|
23
23
|
send(socket, {
|
|
24
24
|
events: {
|
|
25
25
|
events: {
|
|
26
|
-
daemonGenerationId: eventLogV2.daemonGenerationId,
|
|
27
26
|
events,
|
|
28
27
|
nextCursor: replay.nextCursor,
|
|
28
|
+
sessionGenerationId: replay.sessionGenerationId,
|
|
29
29
|
tailCursor,
|
|
30
30
|
truncated: replay.truncated,
|
|
31
31
|
version: 2,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"daemon-history-commands.js","sourceRoot":"","sources":["../src/daemon-history-commands.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,yBAAyB,EAAE,MAAM,gDAAgD,CAAC;AAG3F,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAC;AAG/F,MAAM,CAAC,KAAK,UAAU,mCAAmC,CACrD,MAAiB,EACjB,OAA8D,EAC9D,MAAoB,EACpB,WAAsC,EACtC,KAAiB,EACjB,WAAuC,EACvC,QAA6B,EAC7B,UAAmC,EACnC,MAAmB;IAEnB,IAAI,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,yBAAyB,CAC5C,WAAW,EACX,MAAM,CAAC,SAAS,EAChB,OAAO,CAAC,WAAW,EACnB,OAAO,CAAC,sBAAsB,EAC9B,MAAM,CACT,CAAC;QACF,MAAM,WAAW,GAAG;YAChB,qBAAqB,EAAE,QAAQ,CAAC,qBAAqB;YACrD,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;YAC3C,GAAG,EAAE,QAAQ,CAAC,GAAG;YACjB,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,MAAM;SACT,CAAC;QACF,MAAM,QAAQ,GAAG,UAAU,CAAC,qBAAqB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACrE,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QACnG,MAAM,CAAC,cAAc,EAAE,CAAC;QACxB,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAC9C,UAAU,CAAC,KAAK,
|
|
1
|
+
{"version":3,"file":"daemon-history-commands.js","sourceRoot":"","sources":["../src/daemon-history-commands.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,yBAAyB,EAAE,MAAM,gDAAgD,CAAC;AAG3F,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAC;AAG/F,MAAM,CAAC,KAAK,UAAU,mCAAmC,CACrD,MAAiB,EACjB,OAA8D,EAC9D,MAAoB,EACpB,WAAsC,EACtC,KAAiB,EACjB,WAAuC,EACvC,QAA6B,EAC7B,UAAmC,EACnC,MAAmB;IAEnB,IAAI,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,yBAAyB,CAC5C,WAAW,EACX,MAAM,CAAC,SAAS,EAChB,OAAO,CAAC,WAAW,EACnB,OAAO,CAAC,sBAAsB,EAC9B,MAAM,CACT,CAAC;QACF,MAAM,WAAW,GAAG;YAChB,qBAAqB,EAAE,QAAQ,CAAC,qBAAqB;YACrD,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;YAC3C,GAAG,EAAE,QAAQ,CAAC,GAAG;YACjB,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,MAAM;SACT,CAAC;QACF,MAAM,QAAQ,GAAG,UAAU,CAAC,qBAAqB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACrE,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QACnG,MAAM,CAAC,cAAc,EAAE,CAAC;QACxB,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAC9C,UAAU,CAAC,KAAK,CACZ,OAAO,CAAC,SAAS,EACjB,MAAM,CAAC,mBAAmB,EAC1B,MAAM,CAAC,aAAa,GAAG,KAAK,EAC5B,KAAK,EACL,0BAA0B,CAC7B,CACJ,CAAC;QACF,MAAM,UAAU,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,IAAI,EAAE,CAAC;QAChD,KAAK,CAAC,MAAM,CAAC;YACT,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,KAAK,EAAE,6BAA6B;YACpC,SAAS,EAAE,OAAO,CAAC,SAAS;SAC/B,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,EAAE;YACT,MAAM,EAAE;gBACJ,MAAM,EAAE;oBACJ,MAAM;oBACN,UAAU,EAAE,MAAM,CAAC,UAAU;oBAC7B,mBAAmB,EAAE,MAAM,CAAC,mBAAmB;oBAC/C,UAAU;oBACV,SAAS,EAAE,MAAM,CAAC,SAAS;oBAC3B,OAAO,EAAE,CAAC;iBACb;gBACD,oBAAoB,EAAE,QAAQ,CAAC,oBAAoB;aACtD;YACD,IAAI,EAAE,qCAAqC;YAC3C,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,SAAS,EAAE,OAAO,CAAC,SAAS;SAC/B,CAAC,CAAC;IACP,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAClB,WAAW,CAAC,gBAAgB,CACxB,gCAAgC,EAChC,OAAO,CAAC,SAAS,EACjB;gBACI,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,IAAI,EAAE,kBAAkB,CAAC,KAAK,CAAC;gBAC/B,SAAS,EAAE,OAAO,CAAC,SAAS;aAC/B,EACD,KAAK,CACR,CAAC;YACF,KAAK,CAAC,MAAM,CAAC;gBACT,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,OAAO,EAAE;oBACL,OAAO,EAAE,OAAO,CAAC,OAAO;oBACxB,IAAI,EAAE,kBAAkB,CAAC,KAAK,CAAC;iBAClC;gBACD,KAAK,EAAE,gCAAgC;gBACvC,SAAS,EAAE,OAAO,CAAC,SAAS;aAC/B,CAAC,CAAC;YACH,sBAAsB,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAChF,CAAC;IACL,CAAC;AACL,CAAC"}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { type AgentContentEvent, type RecordedSessionEvent, type SessionCommandsUpdatedEvent, type SessionConfigUpdatedEvent, type SessionElicitationRequestedEvent, type SessionElicitationResolvedEvent, type SessionEventPayloadV2, type SessionInfoUpdatedEvent, type SessionPermissionRequestedEvent, type SessionPermissionResolvedEvent, type SessionUsageUpdatedEvent } from "@moxt-ai/mobius-protocol";
|
|
2
2
|
import { WebSocket } from "undici";
|
|
3
3
|
import type { AcpSessionObserver } from "./acp/agent-runtime-manager.ts";
|
|
4
|
+
import type { AcpSessionEventPositionV2 } from "./acp/session-event-store-v2.ts";
|
|
4
5
|
import { type AgentInstallation, type InstallationAudit, type InstallationObserver } from "./agent-installation/agent-installation-manager.ts";
|
|
5
6
|
import type { AuditStore } from "./audit/audit-store.ts";
|
|
6
7
|
export declare class DaemonAcpObserver implements AcpSessionObserver {
|
|
7
8
|
#private;
|
|
8
|
-
constructor(record: (sessionId: string, event: RecordedSessionEvent) => void, recordV2?: (sessionId: string, event: SessionEventPayloadV2, position:
|
|
9
|
-
readonly onSessionEventV2: (sessionId: string, event: SessionEventPayloadV2, position:
|
|
9
|
+
constructor(record: (sessionId: string, event: RecordedSessionEvent) => void, recordV2?: (sessionId: string, event: SessionEventPayloadV2, position: AcpSessionEventPositionV2) => void);
|
|
10
|
+
readonly onSessionEventV2: (sessionId: string, event: SessionEventPayloadV2, position: AcpSessionEventPositionV2) => Promise<void>;
|
|
10
11
|
readonly onCommands: (event: SessionCommandsUpdatedEvent) => Promise<void>;
|
|
11
12
|
readonly onConfig: (event: SessionConfigUpdatedEvent) => Promise<void>;
|
|
12
13
|
readonly onContent: (event: AgentContentEvent) => Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"daemon-observers.d.ts","sourceRoot":"","sources":["../src/daemon-observers.ts"],"names":[],"mappings":"AAAA,OAAO,EAMH,KAAK,iBAAiB,EAEtB,KAAK,oBAAoB,EACzB,KAAK,2BAA2B,EAChC,KAAK,yBAAyB,EAC9B,KAAK,gCAAgC,EACrC,KAAK,+BAA+B,EACpC,KAAK,qBAAqB,EAC1B,KAAK,uBAAuB,EAC5B,KAAK,+BAA+B,EACpC,KAAK,8BAA8B,EACnC,KAAK,wBAAwB,EAChC,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EACH,KAAK,iBAAiB,EAGtB,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EAI5B,MAAM,oDAAoD,CAAC;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGzD,qBAAa,iBAAkB,YAAW,kBAAkB;;IAIxD,YACI,MAAM,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,oBAAoB,KAAK,IAAI,EAChE,QAAQ,GAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,qBAAqB,EAAE,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"daemon-observers.d.ts","sourceRoot":"","sources":["../src/daemon-observers.ts"],"names":[],"mappings":"AAAA,OAAO,EAMH,KAAK,iBAAiB,EAEtB,KAAK,oBAAoB,EACzB,KAAK,2BAA2B,EAChC,KAAK,yBAAyB,EAC9B,KAAK,gCAAgC,EACrC,KAAK,+BAA+B,EACpC,KAAK,qBAAqB,EAC1B,KAAK,uBAAuB,EAC5B,KAAK,+BAA+B,EACpC,KAAK,8BAA8B,EACnC,KAAK,wBAAwB,EAChC,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AACjF,OAAO,EACH,KAAK,iBAAiB,EAGtB,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EAI5B,MAAM,oDAAoD,CAAC;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGzD,qBAAa,iBAAkB,YAAW,kBAAkB;;IAIxD,YACI,MAAM,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,oBAAoB,KAAK,IAAI,EAChE,QAAQ,GAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,qBAAqB,EAAE,QAAQ,EAAE,yBAAyB,KAAK,IACvF,EAIhB;IAED,QAAQ,CAAC,gBAAgB,cACV,MAAM,SACV,qBAAqB,YAClB,yBAAyB,KACpC,OAAO,CAAC,IAAI,CAAC,CAGd;IAEF,QAAQ,CAAC,UAAU,UAAW,2BAA2B,KAAG,OAAO,CAAC,IAAI,CAAC,CAGvE;IAEF,QAAQ,CAAC,QAAQ,UAAW,yBAAyB,KAAG,OAAO,CAAC,IAAI,CAAC,CAGnE;IAEF,QAAQ,CAAC,SAAS,UAAW,iBAAiB,KAAG,OAAO,CAAC,IAAI,CAAC,CAG5D;IAEF,QAAQ,CAAC,aAAa,UAAW,gCAAgC,KAAG,OAAO,CAAC,IAAI,CAAC,CAG/E;IAEF,QAAQ,CAAC,qBAAqB,UAAW,+BAA+B,KAAG,OAAO,CAAC,IAAI,CAAC,CAGtF;IAEF,QAAQ,CAAC,MAAM,UAAW,uBAAuB,KAAG,OAAO,CAAC,IAAI,CAAC,CAG/D;IAEF,QAAQ,CAAC,YAAY,UAAW,+BAA+B,KAAG,OAAO,CAAC,IAAI,CAAC,CAG7E;IAEF,QAAQ,CAAC,oBAAoB,UAAW,8BAA8B,KAAG,OAAO,CAAC,IAAI,CAAC,CAGpF;IAEF,QAAQ,CAAC,OAAO,UAAW,wBAAwB,KAAG,OAAO,CAAC,IAAI,CAAC,CAGjE;CACL;AAED,qBAAa,uBAAwB,YAAW,iBAAiB;;IAG7D,YAAY,KAAK,EAAE,UAAU,EAE5B;IAED,QAAQ,CAAC,MAAM,UACJ,MAAM,aACF,MAAM,WACR,MAAM,YACN,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,KAC1C,IAAI,CAOL;CACL;AAED,qBAAa,0BAA2B,YAAW,oBAAoB;;IAInE,QAAQ,CAAC,OAAO,WAAY,SAAS,KAAG,IAAI,CAE1C;IAEF,QAAQ,CAAC,UAAU,WAAY,SAAS,KAAG,IAAI,CAI7C;IAYF,QAAQ,CAAC,OAAO,UAAW,iBAAiB,KAAG,OAAO,CAAC,IAAI,CAAC,CAqD1D;CACL"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"daemon-observers.js","sourceRoot":"","sources":["../src/daemon-observers.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,4BAA4B,EAC5B,4BAA4B,EAC5B,yBAAyB,EACzB,2BAA2B,EAC3B,0BAA0B,GAa7B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"daemon-observers.js","sourceRoot":"","sources":["../src/daemon-observers.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,4BAA4B,EAC5B,4BAA4B,EAC5B,yBAAyB,EACzB,2BAA2B,EAC3B,0BAA0B,GAa7B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAGnC,OAAO,EAEH,qBAAqB,EACrB,kBAAkB,EAGlB,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,GACxB,MAAM,oDAAoD,CAAC;AAE5D,OAAO,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAC;AAEnD,MAAM,OAAO,iBAAiB;IACjB,OAAO,CAA2D;IAClE,SAAS,CAAiG;IAEnH,YACI,MAAgE,EAChE,QAAQ,GAAmG,GAAG,EAAE,CAC5G,SAAS;QAEb,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC9B,CAAC;IAEQ,gBAAgB,GAAG,CACxB,SAAiB,EACjB,KAA4B,EAC5B,QAAmC,EACtB,EAAE;QACf,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC3C,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC,CAAC;IAEO,UAAU,GAAG,CAAC,KAAkC,EAAiB,EAAE;QACxE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QACrC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC,CAAC;IAEO,QAAQ,GAAG,CAAC,KAAgC,EAAiB,EAAE;QACpE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QACrC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC,CAAC;IAEO,SAAS,GAAG,CAAC,KAAwB,EAAiB,EAAE;QAC7D,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QACrC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC,CAAC;IAEO,aAAa,GAAG,CAAC,KAAuC,EAAiB,EAAE;QAChF,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QACrC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC,CAAC;IAEO,qBAAqB,GAAG,CAAC,KAAsC,EAAiB,EAAE;QACvF,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QACrC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC,CAAC;IAEO,MAAM,GAAG,CAAC,KAA8B,EAAiB,EAAE;QAChE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QACrC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC,CAAC;IAEO,YAAY,GAAG,CAAC,KAAsC,EAAiB,EAAE;QAC9E,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QACrC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC,CAAC;IAEO,oBAAoB,GAAG,CAAC,KAAqC,EAAiB,EAAE;QACrF,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QACrC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC,CAAC;IAEO,OAAO,GAAG,CAAC,KAA+B,EAAiB,EAAE;QAClE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QACrC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC,CAAC;CACL;AAED,MAAM,OAAO,uBAAuB;IACvB,MAAM,CAAa;IAE5B,YAAY,KAAiB;QACzB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACxB,CAAC;IAEQ,MAAM,GAAG,CACd,KAAa,EACb,SAAiB,EACjB,OAAe,EACf,OAAO,GAAqC,EAAE,EAC1C,EAAE;QACN,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;YACf,SAAS,EAAE,SAAS;YACpB,OAAO;YACP,KAAK;YACL,SAAS,EAAE,sBAAsB,OAAO,EAAE;SAC7C,CAAC,CAAC;IACP,CAAC,CAAC;CACL;AAED,MAAM,OAAO,0BAA0B;IAC1B,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IACtC,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,CAAC,MAAiB,EAAE,OAA+B,EAAQ,EAAE;QAC1E,IAAI,CAAC;YACD,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC1B,CAAC;QAAC,MAAM,CAAC;YACL,IAAI,IAAI,CAAC,OAAO,KAAK,MAAM,EAAE,CAAC;gBAC1B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACxB,CAAC;QACL,CAAC;IACL,CAAC,CAAC;IAEO,OAAO,GAAG,CAAC,KAAwB,EAAiB,EAAE;QAC3D,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;YAC1D,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;QAC7B,CAAC;QACD,IAAI,KAAK,YAAY,qBAAqB,EAAE,CAAC;YACzC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;QAC7B,CAAC;QACD,IAAI,KAAK,YAAY,mBAAmB,EAAE,CAAC;YACvC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;gBACtC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;gBACnC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;oBACf,OAAO,EAAE,KAAK,CAAC,OAAO;oBACtB,IAAI,EAAE,0BAA0B;oBAChC,SAAS,EAAE,KAAK,CAAC,SAAS;iBAC7B,CAAC,CAAC;YACP,CAAC;YACD,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;gBACf,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,IAAI,EAAE,2BAA2B;gBACjC,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,KAAK,EAAE,KAAK,CAAC,KAAK;aACrB,CAAC,CAAC;YACH,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;QAC7B,CAAC;QACD,IAAI,KAAK,YAAY,qBAAqB,EAAE,CAAC;YACzC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;gBACf,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,2BAA2B,EAAE,KAAK,CAAC,2BAA2B;gBAC9D,IAAI,EAAE,4BAA4B;gBAClC,SAAS,EAAE,KAAK,CAAC,SAAS;aAC7B,CAAC,CAAC;YACH,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;QAC7B,CAAC;QACD,IAAI,KAAK,YAAY,kBAAkB,EAAE,CAAC;YACtC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;gBACf,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,IAAI,EAAE,yBAAyB;gBAC/B,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,SAAS,EAAE,KAAK,CAAC,SAAS;aAC7B,CAAC,CAAC;YACH,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;QAC7B,CAAC;QACD,IAAI,KAAK,YAAY,qBAAqB,EAAE,CAAC;YACzC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;gBACf,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,IAAI,EAAE,4BAA4B;gBAClC,SAAS,EAAE,KAAK,CAAC,SAAS;aAC7B,CAAC,CAAC;YACH,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;QAC7B,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACxE,CAAC,CAAC;CACL"}
|
package/dist/index.js
CHANGED
|
@@ -21316,6 +21316,7 @@ var sessionEventFieldsV2 = {
|
|
|
21316
21316
|
position: positionSchema,
|
|
21317
21317
|
provenance: provenanceSchema,
|
|
21318
21318
|
recordedAt: external_exports.iso.datetime({ offset: true }),
|
|
21319
|
+
sessionGenerationId: identifierStringSchema,
|
|
21319
21320
|
sessionId: identifierStringSchema
|
|
21320
21321
|
};
|
|
21321
21322
|
var sessionEventV2Schema = external_exports.discriminatedUnion("type", [
|
|
@@ -21371,9 +21372,9 @@ var mobiusSessionExportV2Schema = external_exports.object({
|
|
|
21371
21372
|
}).readonly();
|
|
21372
21373
|
var sessionEventEnvelopeV2Schema = external_exports.object({ events: sessionEventBatchV2Schema, kind: external_exports.literal(SESSION_EVENT_V2_KIND) }).readonly();
|
|
21373
21374
|
var sessionEventLogPageV2Schema = external_exports.object({
|
|
21374
|
-
daemonGenerationId: identifierStringSchema,
|
|
21375
21375
|
events: external_exports.array(sessionEventV2Schema).max(MAX_EVENT_COUNT).readonly(),
|
|
21376
21376
|
nextCursor: external_exports.string().min(1).max(512).nullable(),
|
|
21377
|
+
sessionGenerationId: identifierStringSchema,
|
|
21377
21378
|
tailCursor: external_exports.string().max(512),
|
|
21378
21379
|
truncated: external_exports.boolean(),
|
|
21379
21380
|
version: external_exports.literal(2)
|
|
@@ -24244,7 +24245,8 @@ var AcpHistoryReplay = class {
|
|
|
24244
24245
|
record = async (update, rawUpdate, onRecorded = () => Promise.resolve()) => {
|
|
24245
24246
|
const position = this.#events.append(this.#sessionId, { payload: rawUpdate, type: "acp" });
|
|
24246
24247
|
await onRecorded(position);
|
|
24247
|
-
|
|
24248
|
+
await this.#applyUpdate(update, position.position);
|
|
24249
|
+
return position.position;
|
|
24248
24250
|
};
|
|
24249
24251
|
#applyUpdate = async (update, position) => {
|
|
24250
24252
|
if (update.sessionUpdate === "agent_thought_chunk") {
|
|
@@ -24983,9 +24985,6 @@ var AcpSessionInteractions = class {
|
|
|
24983
24985
|
};
|
|
24984
24986
|
};
|
|
24985
24987
|
|
|
24986
|
-
// src/acp/session-store.ts
|
|
24987
|
-
import { randomUUID } from "node:crypto";
|
|
24988
|
-
|
|
24989
24988
|
// ../../node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@cloudflare+workers-types@5.20260918.1_@types+better-sqlite3@7.6_f872c171b7e1945bb1fa42180063dab2/node_modules/drizzle-orm/entity.js
|
|
24990
24989
|
var entityKind = /* @__PURE__ */ Symbol.for("drizzle:entityKind");
|
|
24991
24990
|
function is(value, type) {
|
|
@@ -29757,6 +29756,9 @@ var acpSession = sqliteTable("acp_session", {
|
|
|
29757
29756
|
updatedAt: text("updated_at").notNull()
|
|
29758
29757
|
});
|
|
29759
29758
|
|
|
29759
|
+
// src/acp/session-event-store-v2.ts
|
|
29760
|
+
import { randomUUID } from "node:crypto";
|
|
29761
|
+
|
|
29760
29762
|
// src/schema/session-event-cache/session-event-v2.ts
|
|
29761
29763
|
var sessionEventV2 = sqliteTable(
|
|
29762
29764
|
"session_event_v2",
|
|
@@ -29779,7 +29781,7 @@ var sessionEventV2 = sqliteTable(
|
|
|
29779
29781
|
// src/acp/session-event-store-v2.ts
|
|
29780
29782
|
var HOT_EVENT_HIGH_WATER_MARK = 256;
|
|
29781
29783
|
var HOT_EVENT_RETENTION = 128;
|
|
29782
|
-
function eventPage(eventCount, eventLimit, cursor, read) {
|
|
29784
|
+
function eventPage(sessionGenerationId, eventCount, eventLimit, cursor, read) {
|
|
29783
29785
|
const parsedCursor = cursor === null ? eventCount : Number(cursor);
|
|
29784
29786
|
if (!Number.isSafeInteger(parsedCursor) || parsedCursor < 0 || parsedCursor > eventCount) {
|
|
29785
29787
|
throw new Error("The native event cursor is invalid");
|
|
@@ -29789,36 +29791,46 @@ function eventPage(eventCount, eventLimit, cursor, read) {
|
|
|
29789
29791
|
return {
|
|
29790
29792
|
events: read(startPosition + 1, endPosition),
|
|
29791
29793
|
nextCursor: startPosition === 0 ? null : startPosition.toString(),
|
|
29794
|
+
sessionGenerationId,
|
|
29792
29795
|
startPosition: startPosition + 1,
|
|
29793
29796
|
truncated: startPosition > 0
|
|
29794
29797
|
};
|
|
29795
29798
|
}
|
|
29796
29799
|
var MemoryAcpSessionEventStoreV2 = class {
|
|
29797
|
-
generationId;
|
|
29798
29800
|
#events = /* @__PURE__ */ new Map();
|
|
29799
|
-
|
|
29800
|
-
this.
|
|
29801
|
-
|
|
29801
|
+
#session = (sessionId) => {
|
|
29802
|
+
const session = this.#events.get(sessionId) ?? {
|
|
29803
|
+
hot: [],
|
|
29804
|
+
nextPosition: 1,
|
|
29805
|
+
sessionGenerationId: randomUUID()
|
|
29806
|
+
};
|
|
29807
|
+
this.#events.set(sessionId, session);
|
|
29808
|
+
return session;
|
|
29809
|
+
};
|
|
29802
29810
|
append = (sessionId, event) => {
|
|
29803
|
-
const
|
|
29804
|
-
|
|
29805
|
-
|
|
29806
|
-
|
|
29811
|
+
const session = this.#session(sessionId);
|
|
29812
|
+
const position = session.nextPosition;
|
|
29813
|
+
session.hot.push({ event, position });
|
|
29814
|
+
session.nextPosition += 1;
|
|
29815
|
+
return { position, sessionGenerationId: session.sessionGenerationId };
|
|
29807
29816
|
};
|
|
29808
29817
|
close = () => this.#events.clear();
|
|
29809
29818
|
page = (sessionId, eventLimit, cursor) => {
|
|
29810
|
-
const
|
|
29819
|
+
const session = this.#session(sessionId);
|
|
29811
29820
|
return eventPage(
|
|
29812
|
-
|
|
29821
|
+
session.sessionGenerationId,
|
|
29822
|
+
session.nextPosition - 1,
|
|
29813
29823
|
eventLimit,
|
|
29814
29824
|
cursor,
|
|
29815
|
-
(
|
|
29825
|
+
(start, end) => session.hot.filter(({ position }) => position >= start && position <= end).map(({ event }) => event)
|
|
29816
29826
|
);
|
|
29817
29827
|
};
|
|
29818
29828
|
remove = (sessionId) => {
|
|
29819
29829
|
this.#events.delete(sessionId);
|
|
29820
29830
|
};
|
|
29821
|
-
reset =
|
|
29831
|
+
reset = (sessionId) => {
|
|
29832
|
+
this.#events.set(sessionId, { hot: [], nextPosition: 1, sessionGenerationId: randomUUID() });
|
|
29833
|
+
};
|
|
29822
29834
|
};
|
|
29823
29835
|
var cachedEventRowSchema = external_exports.object({ eventJson: external_exports.string(), position: external_exports.number().int().positive() });
|
|
29824
29836
|
function decodeCachedEvent(value) {
|
|
@@ -29829,20 +29841,19 @@ function decodeCachedEvent(value) {
|
|
|
29829
29841
|
position: "1",
|
|
29830
29842
|
provenance: { kind: "original" },
|
|
29831
29843
|
recordedAt: "1970-01-01T00:00:00.000Z",
|
|
29844
|
+
sessionGenerationId: "cached-generation",
|
|
29832
29845
|
sessionId: "cached-session"
|
|
29833
29846
|
});
|
|
29834
29847
|
return event.type === "acp" ? { payload: event.payload, type: event.type } : { payload: event.payload, type: event.type };
|
|
29835
29848
|
}
|
|
29836
29849
|
var CachedAcpSessionEventStoreV2 = class {
|
|
29837
|
-
generationId;
|
|
29838
29850
|
#database;
|
|
29839
29851
|
#ignoredPersistedSessions = /* @__PURE__ */ new Set();
|
|
29840
29852
|
#localDatabase;
|
|
29841
29853
|
#sessions = /* @__PURE__ */ new Map();
|
|
29842
29854
|
#flushSchedule = { kind: "idle" };
|
|
29843
29855
|
#isLocalDBAvailable = true;
|
|
29844
|
-
constructor(localDatabase
|
|
29845
|
-
this.generationId = generationId;
|
|
29856
|
+
constructor(localDatabase) {
|
|
29846
29857
|
this.#localDatabase = localDatabase;
|
|
29847
29858
|
this.#database = localDatabase.orm;
|
|
29848
29859
|
try {
|
|
@@ -29852,11 +29863,20 @@ var CachedAcpSessionEventStoreV2 = class {
|
|
|
29852
29863
|
throw error62;
|
|
29853
29864
|
}
|
|
29854
29865
|
}
|
|
29866
|
+
#session = (sessionId) => {
|
|
29867
|
+
const session = this.#sessions.get(sessionId) ?? {
|
|
29868
|
+
hot: [],
|
|
29869
|
+
nextPosition: 1,
|
|
29870
|
+
sessionGenerationId: randomUUID()
|
|
29871
|
+
};
|
|
29872
|
+
this.#sessions.set(sessionId, session);
|
|
29873
|
+
return session;
|
|
29874
|
+
};
|
|
29855
29875
|
append = (sessionId, event) => {
|
|
29856
29876
|
if (this.#flushSchedule.kind === "closed") {
|
|
29857
29877
|
throw new Error("The V2 Session event store is closed");
|
|
29858
29878
|
}
|
|
29859
|
-
const session = this.#
|
|
29879
|
+
const session = this.#session(sessionId);
|
|
29860
29880
|
const position = session.nextPosition;
|
|
29861
29881
|
session.hot.push({ event, position });
|
|
29862
29882
|
session.nextPosition += 1;
|
|
@@ -29864,7 +29884,7 @@ var CachedAcpSessionEventStoreV2 = class {
|
|
|
29864
29884
|
if (session.hot.length > HOT_EVENT_HIGH_WATER_MARK) {
|
|
29865
29885
|
this.#scheduleFlush();
|
|
29866
29886
|
}
|
|
29867
|
-
return position;
|
|
29887
|
+
return { position, sessionGenerationId: session.sessionGenerationId };
|
|
29868
29888
|
};
|
|
29869
29889
|
#scheduleFlush = () => {
|
|
29870
29890
|
if (!this.#isLocalDBAvailable || this.#flushSchedule.kind !== "idle") {
|
|
@@ -29885,12 +29905,19 @@ var CachedAcpSessionEventStoreV2 = class {
|
|
|
29885
29905
|
}
|
|
29886
29906
|
const batches = [...this.#sessions.entries()].flatMap(([sessionId, session]) => {
|
|
29887
29907
|
const count = includeHotTail ? session.hot.length : Math.max(0, session.hot.length - HOT_EVENT_RETENTION);
|
|
29888
|
-
return count === 0 ? [] : [
|
|
29908
|
+
return count === 0 ? [] : [
|
|
29909
|
+
{
|
|
29910
|
+
count,
|
|
29911
|
+
events: session.hot.slice(0, count),
|
|
29912
|
+
sessionGenerationId: session.sessionGenerationId,
|
|
29913
|
+
sessionId
|
|
29914
|
+
}
|
|
29915
|
+
];
|
|
29889
29916
|
});
|
|
29890
29917
|
const values = batches.flatMap(
|
|
29891
29918
|
(batch) => batch.events.map(({ event, position }) => ({
|
|
29892
29919
|
eventJson: JSON.stringify(event),
|
|
29893
|
-
generationId:
|
|
29920
|
+
generationId: batch.sessionGenerationId,
|
|
29894
29921
|
position,
|
|
29895
29922
|
sessionId: batch.sessionId
|
|
29896
29923
|
}))
|
|
@@ -29914,11 +29941,12 @@ var CachedAcpSessionEventStoreV2 = class {
|
|
|
29914
29941
|
};
|
|
29915
29942
|
page = (sessionId, eventLimit, cursor) => {
|
|
29916
29943
|
const session = this.#sessions.get(sessionId);
|
|
29917
|
-
const
|
|
29918
|
-
|
|
29944
|
+
const current = session ?? this.#session(sessionId);
|
|
29945
|
+
const eventCount = current.nextPosition - 1;
|
|
29946
|
+
return eventPage(current.sessionGenerationId, eventCount, eventLimit, cursor, (startPosition, endPosition) => {
|
|
29919
29947
|
const persisted = this.#ignoredPersistedSessions.has(sessionId) ? [] : this.#database.select({ eventJson: sessionEventV2.eventJson, position: sessionEventV2.position }).from(sessionEventV2).where(
|
|
29920
29948
|
and(
|
|
29921
|
-
eq(sessionEventV2.generationId,
|
|
29949
|
+
eq(sessionEventV2.generationId, current.sessionGenerationId),
|
|
29922
29950
|
eq(sessionEventV2.sessionId, sessionId),
|
|
29923
29951
|
gte(sessionEventV2.position, startPosition),
|
|
29924
29952
|
lte(sessionEventV2.position, endPosition)
|
|
@@ -29933,13 +29961,18 @@ var CachedAcpSessionEventStoreV2 = class {
|
|
|
29933
29961
|
return [...persisted, ...hot].toSorted((left, right) => left.position - right.position).map(({ event }) => event);
|
|
29934
29962
|
});
|
|
29935
29963
|
};
|
|
29936
|
-
#deletePersisted = (sessionId) => {
|
|
29964
|
+
#deletePersisted = (sessionId, sessionGenerationId) => {
|
|
29937
29965
|
if (!this.#isLocalDBAvailable) {
|
|
29938
29966
|
this.#ignoredPersistedSessions.add(sessionId);
|
|
29939
29967
|
return;
|
|
29940
29968
|
}
|
|
29941
29969
|
try {
|
|
29942
|
-
this.#database.delete(sessionEventV2).where(
|
|
29970
|
+
this.#database.delete(sessionEventV2).where(
|
|
29971
|
+
sessionGenerationId === void 0 ? eq(sessionEventV2.sessionId, sessionId) : and(
|
|
29972
|
+
eq(sessionEventV2.generationId, sessionGenerationId),
|
|
29973
|
+
eq(sessionEventV2.sessionId, sessionId)
|
|
29974
|
+
)
|
|
29975
|
+
).run();
|
|
29943
29976
|
this.#ignoredPersistedSessions.delete(sessionId);
|
|
29944
29977
|
} catch (cause) {
|
|
29945
29978
|
this.#isLocalDBAvailable = false;
|
|
@@ -29951,7 +29984,11 @@ var CachedAcpSessionEventStoreV2 = class {
|
|
|
29951
29984
|
this.#deletePersisted(sessionId);
|
|
29952
29985
|
this.#sessions.delete(sessionId);
|
|
29953
29986
|
};
|
|
29954
|
-
reset =
|
|
29987
|
+
reset = (sessionId) => {
|
|
29988
|
+
const previous = this.#sessions.get(sessionId);
|
|
29989
|
+
this.#deletePersisted(sessionId, previous?.sessionGenerationId);
|
|
29990
|
+
this.#sessions.set(sessionId, { hot: [], nextPosition: 1, sessionGenerationId: randomUUID() });
|
|
29991
|
+
};
|
|
29955
29992
|
close = () => {
|
|
29956
29993
|
if (this.#flushSchedule.kind === "closed") {
|
|
29957
29994
|
return;
|
|
@@ -30004,7 +30041,7 @@ var FoundAcpStoredSession = class extends AcpStoredSessionLookup {
|
|
|
30004
30041
|
var MemoryAcpSessionStore = class {
|
|
30005
30042
|
eventsV2;
|
|
30006
30043
|
#sessions = /* @__PURE__ */ new Map();
|
|
30007
|
-
constructor(eventsV2 = new MemoryAcpSessionEventStoreV2(
|
|
30044
|
+
constructor(eventsV2 = new MemoryAcpSessionEventStoreV2()) {
|
|
30008
30045
|
this.eventsV2 = eventsV2;
|
|
30009
30046
|
}
|
|
30010
30047
|
close = () => {
|
|
@@ -30056,7 +30093,7 @@ var SqliteAcpSessionStore = class {
|
|
|
30056
30093
|
eventsV2;
|
|
30057
30094
|
#database;
|
|
30058
30095
|
#localDatabase;
|
|
30059
|
-
constructor(localDatabase, eventsV2 = new MemoryAcpSessionEventStoreV2(
|
|
30096
|
+
constructor(localDatabase, eventsV2 = new MemoryAcpSessionEventStoreV2()) {
|
|
30060
30097
|
this.eventsV2 = eventsV2;
|
|
30061
30098
|
this.#localDatabase = localDatabase;
|
|
30062
30099
|
this.#database = localDatabase.orm;
|
|
@@ -33372,7 +33409,21 @@ var fileUpdateChangeSchema = external_exports.object({
|
|
|
33372
33409
|
kind: external_exports.unknown(),
|
|
33373
33410
|
path: boundedText(4096)
|
|
33374
33411
|
});
|
|
33412
|
+
var imageGenerationItemSchema = external_exports.object({
|
|
33413
|
+
id: boundedText(256),
|
|
33414
|
+
type: external_exports.literal("imageGeneration"),
|
|
33415
|
+
status: boundedText(80),
|
|
33416
|
+
revisedPrompt: boundedText(32768).nullish(),
|
|
33417
|
+
// The app-server frame is bounded; media validation belongs to the content externalizer.
|
|
33418
|
+
result: external_exports.string(),
|
|
33419
|
+
failure: external_exports.object({
|
|
33420
|
+
type: external_exports.literal("usageLimitExceeded"),
|
|
33421
|
+
limitId: boundedText(256),
|
|
33422
|
+
resetsAt: external_exports.number().nullish()
|
|
33423
|
+
}).nullish()
|
|
33424
|
+
});
|
|
33375
33425
|
var threadItemSchema = external_exports.discriminatedUnion("type", [
|
|
33426
|
+
imageGenerationItemSchema,
|
|
33376
33427
|
external_exports.object({
|
|
33377
33428
|
id: boundedText(256),
|
|
33378
33429
|
text: boundedText(1e6),
|
|
@@ -33838,6 +33889,29 @@ function mcpStatus(status) {
|
|
|
33838
33889
|
return status === "inProgress" ? "in_progress" : status === "completed" ? "completed" : "failed";
|
|
33839
33890
|
}
|
|
33840
33891
|
function presentToolItem(item) {
|
|
33892
|
+
if (item.type === "imageGeneration") {
|
|
33893
|
+
const failed = item.failure != null || item.status === "failed";
|
|
33894
|
+
const content = [];
|
|
33895
|
+
if (!failed && item.result.length > 0) {
|
|
33896
|
+
content.push({ type: "content", content: { type: "image", data: item.result, mimeType: "image/png" } });
|
|
33897
|
+
}
|
|
33898
|
+
if (failed) {
|
|
33899
|
+
content.push(
|
|
33900
|
+
textContent(
|
|
33901
|
+
item.failure?.type === "usageLimitExceeded" ? "Image generation usage limit reached." : "Image generation failed."
|
|
33902
|
+
)
|
|
33903
|
+
);
|
|
33904
|
+
}
|
|
33905
|
+
return {
|
|
33906
|
+
content,
|
|
33907
|
+
kind: "other",
|
|
33908
|
+
locations: [],
|
|
33909
|
+
rawInput: item.revisedPrompt == null ? null : { prompt: item.revisedPrompt },
|
|
33910
|
+
rawOutput: null,
|
|
33911
|
+
status: failed ? "failed" : item.status === "completed" ? "completed" : "in_progress",
|
|
33912
|
+
title: "Generate image"
|
|
33913
|
+
};
|
|
33914
|
+
}
|
|
33841
33915
|
if (item.type === "commandExecution") {
|
|
33842
33916
|
const output2 = item.aggregatedOutput ?? "";
|
|
33843
33917
|
const content = [];
|
|
@@ -37758,7 +37832,7 @@ function isRuntimeRelayRevocation(closeCode, closeReason) {
|
|
|
37758
37832
|
}
|
|
37759
37833
|
|
|
37760
37834
|
// src/run-daemon.ts
|
|
37761
|
-
import { createHash as
|
|
37835
|
+
import { createHash as createHash7, randomUUID as randomUUID9 } from "node:crypto";
|
|
37762
37836
|
import { join as join19 } from "node:path";
|
|
37763
37837
|
import { styleText } from "node:util";
|
|
37764
37838
|
|
|
@@ -41637,7 +41711,13 @@ async function executeSessionLiveHistoryV2PageLoad(socket, command, config2, dir
|
|
|
41637
41711
|
const replay = await sessions.loadSessionEventsV2(loadOptions, command.eventLimit, command.cursor);
|
|
41638
41712
|
signal.throwIfAborted();
|
|
41639
41713
|
const events = replay.events.map(
|
|
41640
|
-
(event, index2) => eventLogV2.event(
|
|
41714
|
+
(event, index2) => eventLogV2.event(
|
|
41715
|
+
command.sessionId,
|
|
41716
|
+
replay.sessionGenerationId,
|
|
41717
|
+
replay.startPosition + index2,
|
|
41718
|
+
event,
|
|
41719
|
+
"1970-01-01T00:00:00.000Z"
|
|
41720
|
+
)
|
|
41641
41721
|
);
|
|
41642
41722
|
const tailCursor = events.at(-1)?.eventId ?? "";
|
|
41643
41723
|
audit.record({
|
|
@@ -41648,9 +41728,9 @@ async function executeSessionLiveHistoryV2PageLoad(socket, command, config2, dir
|
|
|
41648
41728
|
send(socket, {
|
|
41649
41729
|
events: {
|
|
41650
41730
|
events: {
|
|
41651
|
-
daemonGenerationId: eventLogV2.daemonGenerationId,
|
|
41652
41731
|
events,
|
|
41653
41732
|
nextCursor: replay.nextCursor,
|
|
41733
|
+
sessionGenerationId: replay.sessionGenerationId,
|
|
41654
41734
|
tailCursor,
|
|
41655
41735
|
truncated: replay.truncated,
|
|
41656
41736
|
version: 2
|
|
@@ -43089,7 +43169,6 @@ var SystemDaemonTimer = class {
|
|
|
43089
43169
|
var systemDaemonTimer = new SystemDaemonTimer();
|
|
43090
43170
|
|
|
43091
43171
|
// src/session-event-log-v2.ts
|
|
43092
|
-
import { createHash as createHash7, randomUUID as randomUUID9 } from "node:crypto";
|
|
43093
43172
|
function promptContent(command) {
|
|
43094
43173
|
const content = [];
|
|
43095
43174
|
if (command.prompt.length > 0) {
|
|
@@ -43113,28 +43192,26 @@ function promptContent(command) {
|
|
|
43113
43192
|
}
|
|
43114
43193
|
return content;
|
|
43115
43194
|
}
|
|
43116
|
-
function sessionEventV22(
|
|
43117
|
-
const sessionPrefix = createHash7("sha256").update(sessionId).digest("hex").slice(0, 16);
|
|
43195
|
+
function sessionEventV22(sessionGenerationId, sessionId, position, event, recordedAt) {
|
|
43118
43196
|
return {
|
|
43119
|
-
eventId: `event-${
|
|
43197
|
+
eventId: `event-${sessionGenerationId}-${position.toString().padStart(16, "0")}`,
|
|
43120
43198
|
...event,
|
|
43121
43199
|
position: position.toString(),
|
|
43122
43200
|
provenance: { kind: "original" },
|
|
43123
43201
|
recordedAt,
|
|
43202
|
+
sessionGenerationId,
|
|
43124
43203
|
sessionId
|
|
43125
43204
|
};
|
|
43126
43205
|
}
|
|
43127
43206
|
var DaemonSessionEventLogV2 = class {
|
|
43128
|
-
daemonGenerationId;
|
|
43129
43207
|
#publisher;
|
|
43130
43208
|
#terminal = /* @__PURE__ */ new Map();
|
|
43131
43209
|
#publications = /* @__PURE__ */ new Map();
|
|
43132
43210
|
#queued = /* @__PURE__ */ new Map();
|
|
43133
43211
|
#recordLifecycle;
|
|
43134
|
-
constructor(publisher, recordLifecycle
|
|
43212
|
+
constructor(publisher, recordLifecycle) {
|
|
43135
43213
|
this.#recordLifecycle = recordLifecycle;
|
|
43136
43214
|
this.#publisher = publisher;
|
|
43137
|
-
this.daemonGenerationId = daemonGenerationId;
|
|
43138
43215
|
}
|
|
43139
43216
|
requested = (command) => {
|
|
43140
43217
|
this.#queued.set(command.commandId, {
|
|
@@ -43158,7 +43235,13 @@ var DaemonSessionEventLogV2 = class {
|
|
|
43158
43235
|
throw new Error("The executing prompt was not registered in the V2 queue");
|
|
43159
43236
|
};
|
|
43160
43237
|
record = (sessionId, event, position) => {
|
|
43161
|
-
const recorded = this.event(
|
|
43238
|
+
const recorded = this.event(
|
|
43239
|
+
sessionId,
|
|
43240
|
+
position.sessionGenerationId,
|
|
43241
|
+
position.position,
|
|
43242
|
+
event,
|
|
43243
|
+
(/* @__PURE__ */ new Date()).toISOString()
|
|
43244
|
+
);
|
|
43162
43245
|
if (event.type === "lifecycle-metadata" && (event.payload.kind === "prompt.completed" || event.payload.kind === "prompt.failed" || event.payload.kind === "prompt.failed-before-start")) {
|
|
43163
43246
|
this.#terminal.set(event.payload.commandId, recorded);
|
|
43164
43247
|
const pending2 = this.#publications.get(sessionId) ?? [];
|
|
@@ -43195,7 +43278,7 @@ var DaemonSessionEventLogV2 = class {
|
|
|
43195
43278
|
}
|
|
43196
43279
|
this.#queued.delete(commandId);
|
|
43197
43280
|
};
|
|
43198
|
-
event = (sessionId, position, event, recordedAt) => sessionEventV22(
|
|
43281
|
+
event = (sessionId, sessionGenerationId, position, event, recordedAt) => sessionEventV22(sessionGenerationId, sessionId, position, event, recordedAt);
|
|
43199
43282
|
queueChanged = async (sessionId) => {
|
|
43200
43283
|
await this.#recordLifecycle(sessionId, {
|
|
43201
43284
|
type: "lifecycle-metadata",
|
|
@@ -43286,7 +43369,7 @@ async function installDetectedAgentIntegrations(config2, installations, signal)
|
|
|
43286
43369
|
{
|
|
43287
43370
|
agentId: agent.id,
|
|
43288
43371
|
kind: AGENT_INSTALL_REQUEST_KIND,
|
|
43289
|
-
requestId: `automatic-integration-${
|
|
43372
|
+
requestId: `automatic-integration-${randomUUID9()}`
|
|
43290
43373
|
},
|
|
43291
43374
|
signal
|
|
43292
43375
|
);
|
|
@@ -43304,14 +43387,12 @@ async function runDaemon(config2, audit, signal, timer = systemDaemonTimer, opti
|
|
|
43304
43387
|
publishCatalog: async (installationSignal) => await publishAgentCatalog(config2, installationSignal),
|
|
43305
43388
|
stateDirectory
|
|
43306
43389
|
});
|
|
43307
|
-
const channelHash =
|
|
43308
|
-
const daemonGenerationId = randomUUID10();
|
|
43390
|
+
const channelHash = createHash7("sha256").update(config2.channelId).digest("hex");
|
|
43309
43391
|
const sessionDatabase = openAcpSessionDatabase(join19(stateDirectory, "sessions", `${channelHash}.sqlite`));
|
|
43310
43392
|
let eventsV2;
|
|
43311
43393
|
try {
|
|
43312
43394
|
eventsV2 = new CachedAcpSessionEventStoreV2(
|
|
43313
|
-
openSessionEventCacheV2Database(join19(stateDirectory, "sessions", `${channelHash}.events.sqlite`))
|
|
43314
|
-
daemonGenerationId
|
|
43395
|
+
openSessionEventCacheV2Database(join19(stateDirectory, "sessions", `${channelHash}.events.sqlite`))
|
|
43315
43396
|
);
|
|
43316
43397
|
} catch (error62) {
|
|
43317
43398
|
sessionDatabase.close();
|
|
@@ -43323,8 +43404,7 @@ async function runDaemon(config2, audit, signal, timer = systemDaemonTimer, opti
|
|
|
43323
43404
|
const publisher = new DaemonSessionEventPublisher(timer);
|
|
43324
43405
|
const eventLogV2 = new DaemonSessionEventLogV2(
|
|
43325
43406
|
publisher,
|
|
43326
|
-
(sessionId, event) => agentRuntime.recordLifecycleEventV2(sessionId, event)
|
|
43327
|
-
daemonGenerationId
|
|
43407
|
+
(sessionId, event) => agentRuntime.recordLifecycleEventV2(sessionId, event)
|
|
43328
43408
|
);
|
|
43329
43409
|
const activeTurns = new DaemonTurnRegistry(operations);
|
|
43330
43410
|
const agentRuntime = new AgentRuntimeManager(
|