@moxt-ai/mobius 0.0.179 → 0.0.181
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/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 +99 -56
- 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 +96 -53
- package/dist/index.js.map +4 -4
- package/dist/relay-connection/session-event-publisher.d.ts +1 -1
- package/dist/relay-connection/session-event-publisher.js +1 -1
- 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 +101 -58
- 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,7 +1,7 @@
|
|
|
1
1
|
import { type SessionEventV2, type SessionStatusChangedEvent } from "@moxt-ai/mobius-protocol";
|
|
2
2
|
import { WebSocket } from "undici";
|
|
3
3
|
import type { DaemonTimer } from "./timer.ts";
|
|
4
|
-
export declare const SESSION_EVENT_V2_BATCH_WINDOW_MILLISECONDS =
|
|
4
|
+
export declare const SESSION_EVENT_V2_BATCH_WINDOW_MILLISECONDS = 100;
|
|
5
5
|
/** Live delivery is best-effort. Recovery snapshots are owned by the daemon's local Session cache. */
|
|
6
6
|
export declare class DaemonSessionEventPublisher {
|
|
7
7
|
#private;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { encodeDaemonToServiceMessage, SESSION_EVENT_V2_BATCH_MAX_SIZE, SESSION_EVENT_V2_KIND, } from "@moxt-ai/mobius-protocol";
|
|
2
2
|
import { WebSocket } from "undici";
|
|
3
3
|
const MAX_BUFFERED_BYTES = 32 * 1024 * 1024;
|
|
4
|
-
export const SESSION_EVENT_V2_BATCH_WINDOW_MILLISECONDS =
|
|
4
|
+
export const SESSION_EVENT_V2_BATCH_WINDOW_MILLISECONDS = 100;
|
|
5
5
|
/** Live delivery is best-effort. Recovery snapshots are owned by the daemon's local Session cache. */
|
|
6
6
|
export class DaemonSessionEventPublisher {
|
|
7
7
|
#pendingV2Events = [];
|
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":"AAcA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAchD,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;CAC7E;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,
|
|
1
|
+
{"version":3,"file":"run-daemon.d.ts","sourceRoot":"","sources":["../src/run-daemon.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAchD,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;CAC7E;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,CA0Nf"}
|
package/dist/run-daemon.js
CHANGED
|
@@ -145,11 +145,10 @@ export async function runDaemon(config, audit, signal, timer = systemDaemonTimer
|
|
|
145
145
|
stateDirectory,
|
|
146
146
|
});
|
|
147
147
|
const channelHash = createHash("sha256").update(config.channelId).digest("hex");
|
|
148
|
-
const daemonGenerationId = randomUUID();
|
|
149
148
|
const sessionDatabase = openAcpSessionDatabase(join(stateDirectory, "sessions", `${channelHash}.sqlite`));
|
|
150
149
|
let eventsV2;
|
|
151
150
|
try {
|
|
152
|
-
eventsV2 = new CachedAcpSessionEventStoreV2(openSessionEventCacheV2Database(join(stateDirectory, "sessions", `${channelHash}.events.sqlite`))
|
|
151
|
+
eventsV2 = new CachedAcpSessionEventStoreV2(openSessionEventCacheV2Database(join(stateDirectory, "sessions", `${channelHash}.events.sqlite`)));
|
|
153
152
|
}
|
|
154
153
|
catch (error) {
|
|
155
154
|
sessionDatabase.close();
|
|
@@ -159,7 +158,7 @@ export async function runDaemon(config, audit, signal, timer = systemDaemonTimer
|
|
|
159
158
|
const externalContent = __addDisposableResource(env_1, new LocalExternalContentStore(stateDirectory), true);
|
|
160
159
|
const operations = new DaemonOperationState();
|
|
161
160
|
const publisher = new DaemonSessionEventPublisher(timer);
|
|
162
|
-
const eventLogV2 = new DaemonSessionEventLogV2(publisher, (sessionId, event) => agentRuntime.recordLifecycleEventV2(sessionId, event)
|
|
161
|
+
const eventLogV2 = new DaemonSessionEventLogV2(publisher, (sessionId, event) => agentRuntime.recordLifecycleEventV2(sessionId, event));
|
|
163
162
|
const activeTurns = new DaemonTurnRegistry(operations);
|
|
164
163
|
const agentRuntime = new AgentRuntimeManager(new DaemonAcpObserver((_sessionId, event) => {
|
|
165
164
|
activeTurns.recordEvent(event);
|
package/dist/run-daemon.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-daemon.js","sourceRoot":"","sources":["../src/run-daemon.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"run-daemon.js","sourceRoot":"","sources":["../src/run-daemon.ts"],"names":[],"mappings":"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"}
|
package/dist/runtime.js
CHANGED
|
@@ -21290,6 +21290,7 @@ var sessionEventFieldsV2 = {
|
|
|
21290
21290
|
position: positionSchema,
|
|
21291
21291
|
provenance: provenanceSchema,
|
|
21292
21292
|
recordedAt: external_exports.iso.datetime({ offset: true }),
|
|
21293
|
+
sessionGenerationId: identifierStringSchema,
|
|
21293
21294
|
sessionId: identifierStringSchema
|
|
21294
21295
|
};
|
|
21295
21296
|
var sessionEventV2Schema = external_exports.discriminatedUnion("type", [
|
|
@@ -21345,9 +21346,9 @@ var mobiusSessionExportV2Schema = external_exports.object({
|
|
|
21345
21346
|
}).readonly();
|
|
21346
21347
|
var sessionEventEnvelopeV2Schema = external_exports.object({ events: sessionEventBatchV2Schema, kind: external_exports.literal(SESSION_EVENT_V2_KIND) }).readonly();
|
|
21347
21348
|
var sessionEventLogPageV2Schema = external_exports.object({
|
|
21348
|
-
daemonGenerationId: identifierStringSchema,
|
|
21349
21349
|
events: external_exports.array(sessionEventV2Schema).max(MAX_EVENT_COUNT).readonly(),
|
|
21350
21350
|
nextCursor: external_exports.string().min(1).max(512).nullable(),
|
|
21351
|
+
sessionGenerationId: identifierStringSchema,
|
|
21351
21352
|
tailCursor: external_exports.string().max(512),
|
|
21352
21353
|
truncated: external_exports.boolean(),
|
|
21353
21354
|
version: external_exports.literal(2)
|
|
@@ -26827,7 +26828,7 @@ function createDaemonConfig(connection, agents = [], installableAgents = [], loc
|
|
|
26827
26828
|
}
|
|
26828
26829
|
|
|
26829
26830
|
// src/run-daemon.ts
|
|
26830
|
-
import { createHash as
|
|
26831
|
+
import { createHash as createHash6, randomUUID as randomUUID8 } from "node:crypto";
|
|
26831
26832
|
import { join as join18 } from "node:path";
|
|
26832
26833
|
import { styleText } from "node:util";
|
|
26833
26834
|
|
|
@@ -28473,7 +28474,8 @@ var AcpHistoryReplay = class {
|
|
|
28473
28474
|
record = async (update, rawUpdate, onRecorded = () => Promise.resolve()) => {
|
|
28474
28475
|
const position = this.#events.append(this.#sessionId, { payload: rawUpdate, type: "acp" });
|
|
28475
28476
|
await onRecorded(position);
|
|
28476
|
-
|
|
28477
|
+
await this.#applyUpdate(update, position.position);
|
|
28478
|
+
return position.position;
|
|
28477
28479
|
};
|
|
28478
28480
|
#applyUpdate = async (update, position) => {
|
|
28479
28481
|
if (update.sessionUpdate === "agent_thought_chunk") {
|
|
@@ -29212,9 +29214,6 @@ var AcpSessionInteractions = class {
|
|
|
29212
29214
|
};
|
|
29213
29215
|
};
|
|
29214
29216
|
|
|
29215
|
-
// src/acp/session-store.ts
|
|
29216
|
-
import { randomUUID } from "node:crypto";
|
|
29217
|
-
|
|
29218
29217
|
// ../../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
|
|
29219
29218
|
var entityKind = /* @__PURE__ */ Symbol.for("drizzle:entityKind");
|
|
29220
29219
|
function is(value, type) {
|
|
@@ -33986,6 +33985,9 @@ var acpSession = sqliteTable("acp_session", {
|
|
|
33986
33985
|
updatedAt: text("updated_at").notNull()
|
|
33987
33986
|
});
|
|
33988
33987
|
|
|
33988
|
+
// src/acp/session-event-store-v2.ts
|
|
33989
|
+
import { randomUUID } from "node:crypto";
|
|
33990
|
+
|
|
33989
33991
|
// src/schema/session-event-cache/session-event-v2.ts
|
|
33990
33992
|
var sessionEventV2 = sqliteTable(
|
|
33991
33993
|
"session_event_v2",
|
|
@@ -34008,7 +34010,7 @@ var sessionEventV2 = sqliteTable(
|
|
|
34008
34010
|
// src/acp/session-event-store-v2.ts
|
|
34009
34011
|
var HOT_EVENT_HIGH_WATER_MARK = 256;
|
|
34010
34012
|
var HOT_EVENT_RETENTION = 128;
|
|
34011
|
-
function eventPage(eventCount, eventLimit, cursor, read) {
|
|
34013
|
+
function eventPage(sessionGenerationId, eventCount, eventLimit, cursor, read) {
|
|
34012
34014
|
const parsedCursor = cursor === null ? eventCount : Number(cursor);
|
|
34013
34015
|
if (!Number.isSafeInteger(parsedCursor) || parsedCursor < 0 || parsedCursor > eventCount) {
|
|
34014
34016
|
throw new Error("The native event cursor is invalid");
|
|
@@ -34018,36 +34020,46 @@ function eventPage(eventCount, eventLimit, cursor, read) {
|
|
|
34018
34020
|
return {
|
|
34019
34021
|
events: read(startPosition + 1, endPosition),
|
|
34020
34022
|
nextCursor: startPosition === 0 ? null : startPosition.toString(),
|
|
34023
|
+
sessionGenerationId,
|
|
34021
34024
|
startPosition: startPosition + 1,
|
|
34022
34025
|
truncated: startPosition > 0
|
|
34023
34026
|
};
|
|
34024
34027
|
}
|
|
34025
34028
|
var MemoryAcpSessionEventStoreV2 = class {
|
|
34026
|
-
generationId;
|
|
34027
34029
|
#events = /* @__PURE__ */ new Map();
|
|
34028
|
-
|
|
34029
|
-
this.
|
|
34030
|
-
|
|
34030
|
+
#session = (sessionId) => {
|
|
34031
|
+
const session = this.#events.get(sessionId) ?? {
|
|
34032
|
+
hot: [],
|
|
34033
|
+
nextPosition: 1,
|
|
34034
|
+
sessionGenerationId: randomUUID()
|
|
34035
|
+
};
|
|
34036
|
+
this.#events.set(sessionId, session);
|
|
34037
|
+
return session;
|
|
34038
|
+
};
|
|
34031
34039
|
append = (sessionId, event) => {
|
|
34032
|
-
const
|
|
34033
|
-
|
|
34034
|
-
|
|
34035
|
-
|
|
34040
|
+
const session = this.#session(sessionId);
|
|
34041
|
+
const position = session.nextPosition;
|
|
34042
|
+
session.hot.push({ event, position });
|
|
34043
|
+
session.nextPosition += 1;
|
|
34044
|
+
return { position, sessionGenerationId: session.sessionGenerationId };
|
|
34036
34045
|
};
|
|
34037
34046
|
close = () => this.#events.clear();
|
|
34038
34047
|
page = (sessionId, eventLimit, cursor) => {
|
|
34039
|
-
const
|
|
34048
|
+
const session = this.#session(sessionId);
|
|
34040
34049
|
return eventPage(
|
|
34041
|
-
|
|
34050
|
+
session.sessionGenerationId,
|
|
34051
|
+
session.nextPosition - 1,
|
|
34042
34052
|
eventLimit,
|
|
34043
34053
|
cursor,
|
|
34044
|
-
(
|
|
34054
|
+
(start, end) => session.hot.slice(start - 1, end).map(({ event }) => event)
|
|
34045
34055
|
);
|
|
34046
34056
|
};
|
|
34047
34057
|
remove = (sessionId) => {
|
|
34048
34058
|
this.#events.delete(sessionId);
|
|
34049
34059
|
};
|
|
34050
|
-
reset =
|
|
34060
|
+
reset = (sessionId) => {
|
|
34061
|
+
this.#events.set(sessionId, { hot: [], nextPosition: 1, sessionGenerationId: randomUUID() });
|
|
34062
|
+
};
|
|
34051
34063
|
};
|
|
34052
34064
|
var cachedEventRowSchema = external_exports.object({ eventJson: external_exports.string(), position: external_exports.number().int().positive() });
|
|
34053
34065
|
function decodeCachedEvent(value) {
|
|
@@ -34058,20 +34070,19 @@ function decodeCachedEvent(value) {
|
|
|
34058
34070
|
position: "1",
|
|
34059
34071
|
provenance: { kind: "original" },
|
|
34060
34072
|
recordedAt: "1970-01-01T00:00:00.000Z",
|
|
34073
|
+
sessionGenerationId: "cached-generation",
|
|
34061
34074
|
sessionId: "cached-session"
|
|
34062
34075
|
});
|
|
34063
34076
|
return event.type === "acp" ? { payload: event.payload, type: event.type } : { payload: event.payload, type: event.type };
|
|
34064
34077
|
}
|
|
34065
34078
|
var CachedAcpSessionEventStoreV2 = class {
|
|
34066
|
-
generationId;
|
|
34067
34079
|
#database;
|
|
34068
34080
|
#ignoredPersistedSessions = /* @__PURE__ */ new Set();
|
|
34069
34081
|
#localDatabase;
|
|
34070
34082
|
#sessions = /* @__PURE__ */ new Map();
|
|
34071
34083
|
#flushSchedule = { kind: "idle" };
|
|
34072
34084
|
#isLocalDBAvailable = true;
|
|
34073
|
-
constructor(localDatabase
|
|
34074
|
-
this.generationId = generationId;
|
|
34085
|
+
constructor(localDatabase) {
|
|
34075
34086
|
this.#localDatabase = localDatabase;
|
|
34076
34087
|
this.#database = localDatabase.orm;
|
|
34077
34088
|
try {
|
|
@@ -34081,11 +34092,20 @@ var CachedAcpSessionEventStoreV2 = class {
|
|
|
34081
34092
|
throw error62;
|
|
34082
34093
|
}
|
|
34083
34094
|
}
|
|
34095
|
+
#session = (sessionId) => {
|
|
34096
|
+
const session = this.#sessions.get(sessionId) ?? {
|
|
34097
|
+
hot: [],
|
|
34098
|
+
nextPosition: 1,
|
|
34099
|
+
sessionGenerationId: randomUUID()
|
|
34100
|
+
};
|
|
34101
|
+
this.#sessions.set(sessionId, session);
|
|
34102
|
+
return session;
|
|
34103
|
+
};
|
|
34084
34104
|
append = (sessionId, event) => {
|
|
34085
34105
|
if (this.#flushSchedule.kind === "closed") {
|
|
34086
34106
|
throw new Error("The V2 Session event store is closed");
|
|
34087
34107
|
}
|
|
34088
|
-
const session = this.#
|
|
34108
|
+
const session = this.#session(sessionId);
|
|
34089
34109
|
const position = session.nextPosition;
|
|
34090
34110
|
session.hot.push({ event, position });
|
|
34091
34111
|
session.nextPosition += 1;
|
|
@@ -34093,7 +34113,7 @@ var CachedAcpSessionEventStoreV2 = class {
|
|
|
34093
34113
|
if (session.hot.length > HOT_EVENT_HIGH_WATER_MARK) {
|
|
34094
34114
|
this.#scheduleFlush();
|
|
34095
34115
|
}
|
|
34096
|
-
return position;
|
|
34116
|
+
return { position, sessionGenerationId: session.sessionGenerationId };
|
|
34097
34117
|
};
|
|
34098
34118
|
#scheduleFlush = () => {
|
|
34099
34119
|
if (!this.#isLocalDBAvailable || this.#flushSchedule.kind !== "idle") {
|
|
@@ -34114,12 +34134,19 @@ var CachedAcpSessionEventStoreV2 = class {
|
|
|
34114
34134
|
}
|
|
34115
34135
|
const batches = [...this.#sessions.entries()].flatMap(([sessionId, session]) => {
|
|
34116
34136
|
const count = includeHotTail ? session.hot.length : Math.max(0, session.hot.length - HOT_EVENT_RETENTION);
|
|
34117
|
-
return count === 0 ? [] : [
|
|
34137
|
+
return count === 0 ? [] : [
|
|
34138
|
+
{
|
|
34139
|
+
count,
|
|
34140
|
+
events: session.hot.slice(0, count),
|
|
34141
|
+
sessionGenerationId: session.sessionGenerationId,
|
|
34142
|
+
sessionId
|
|
34143
|
+
}
|
|
34144
|
+
];
|
|
34118
34145
|
});
|
|
34119
34146
|
const values = batches.flatMap(
|
|
34120
34147
|
(batch) => batch.events.map(({ event, position }) => ({
|
|
34121
34148
|
eventJson: JSON.stringify(event),
|
|
34122
|
-
generationId:
|
|
34149
|
+
generationId: batch.sessionGenerationId,
|
|
34123
34150
|
position,
|
|
34124
34151
|
sessionId: batch.sessionId
|
|
34125
34152
|
}))
|
|
@@ -34143,11 +34170,12 @@ var CachedAcpSessionEventStoreV2 = class {
|
|
|
34143
34170
|
};
|
|
34144
34171
|
page = (sessionId, eventLimit, cursor) => {
|
|
34145
34172
|
const session = this.#sessions.get(sessionId);
|
|
34146
|
-
const
|
|
34147
|
-
|
|
34173
|
+
const current = session ?? this.#session(sessionId);
|
|
34174
|
+
const eventCount = current.nextPosition - 1;
|
|
34175
|
+
return eventPage(current.sessionGenerationId, eventCount, eventLimit, cursor, (startPosition, endPosition) => {
|
|
34148
34176
|
const persisted = this.#ignoredPersistedSessions.has(sessionId) ? [] : this.#database.select({ eventJson: sessionEventV2.eventJson, position: sessionEventV2.position }).from(sessionEventV2).where(
|
|
34149
34177
|
and(
|
|
34150
|
-
eq(sessionEventV2.generationId,
|
|
34178
|
+
eq(sessionEventV2.generationId, current.sessionGenerationId),
|
|
34151
34179
|
eq(sessionEventV2.sessionId, sessionId),
|
|
34152
34180
|
gte(sessionEventV2.position, startPosition),
|
|
34153
34181
|
lte(sessionEventV2.position, endPosition)
|
|
@@ -34162,13 +34190,18 @@ var CachedAcpSessionEventStoreV2 = class {
|
|
|
34162
34190
|
return [...persisted, ...hot].toSorted((left, right) => left.position - right.position).map(({ event }) => event);
|
|
34163
34191
|
});
|
|
34164
34192
|
};
|
|
34165
|
-
#deletePersisted = (sessionId) => {
|
|
34193
|
+
#deletePersisted = (sessionId, sessionGenerationId) => {
|
|
34166
34194
|
if (!this.#isLocalDBAvailable) {
|
|
34167
34195
|
this.#ignoredPersistedSessions.add(sessionId);
|
|
34168
34196
|
return;
|
|
34169
34197
|
}
|
|
34170
34198
|
try {
|
|
34171
|
-
this.#database.delete(sessionEventV2).where(
|
|
34199
|
+
this.#database.delete(sessionEventV2).where(
|
|
34200
|
+
sessionGenerationId === void 0 ? eq(sessionEventV2.sessionId, sessionId) : and(
|
|
34201
|
+
eq(sessionEventV2.generationId, sessionGenerationId),
|
|
34202
|
+
eq(sessionEventV2.sessionId, sessionId)
|
|
34203
|
+
)
|
|
34204
|
+
).run();
|
|
34172
34205
|
this.#ignoredPersistedSessions.delete(sessionId);
|
|
34173
34206
|
} catch (cause) {
|
|
34174
34207
|
this.#isLocalDBAvailable = false;
|
|
@@ -34180,7 +34213,11 @@ var CachedAcpSessionEventStoreV2 = class {
|
|
|
34180
34213
|
this.#deletePersisted(sessionId);
|
|
34181
34214
|
this.#sessions.delete(sessionId);
|
|
34182
34215
|
};
|
|
34183
|
-
reset =
|
|
34216
|
+
reset = (sessionId) => {
|
|
34217
|
+
const previous = this.#sessions.get(sessionId);
|
|
34218
|
+
this.#deletePersisted(sessionId, previous?.sessionGenerationId);
|
|
34219
|
+
this.#sessions.set(sessionId, { hot: [], nextPosition: 1, sessionGenerationId: randomUUID() });
|
|
34220
|
+
};
|
|
34184
34221
|
close = () => {
|
|
34185
34222
|
if (this.#flushSchedule.kind === "closed") {
|
|
34186
34223
|
return;
|
|
@@ -34233,7 +34270,7 @@ var FoundAcpStoredSession = class extends AcpStoredSessionLookup {
|
|
|
34233
34270
|
var MemoryAcpSessionStore = class {
|
|
34234
34271
|
eventsV2;
|
|
34235
34272
|
#sessions = /* @__PURE__ */ new Map();
|
|
34236
|
-
constructor(eventsV2 = new MemoryAcpSessionEventStoreV2(
|
|
34273
|
+
constructor(eventsV2 = new MemoryAcpSessionEventStoreV2()) {
|
|
34237
34274
|
this.eventsV2 = eventsV2;
|
|
34238
34275
|
}
|
|
34239
34276
|
close = () => {
|
|
@@ -34285,7 +34322,7 @@ var SqliteAcpSessionStore = class {
|
|
|
34285
34322
|
eventsV2;
|
|
34286
34323
|
#database;
|
|
34287
34324
|
#localDatabase;
|
|
34288
|
-
constructor(localDatabase, eventsV2 = new MemoryAcpSessionEventStoreV2(
|
|
34325
|
+
constructor(localDatabase, eventsV2 = new MemoryAcpSessionEventStoreV2()) {
|
|
34289
34326
|
this.eventsV2 = eventsV2;
|
|
34290
34327
|
this.#localDatabase = localDatabase;
|
|
34291
34328
|
this.#database = localDatabase.orm;
|
|
@@ -40790,7 +40827,13 @@ async function executeSessionLiveHistoryV2PageLoad(socket, command, config2, dir
|
|
|
40790
40827
|
const replay = await sessions.loadSessionEventsV2(loadOptions, command.eventLimit, command.cursor);
|
|
40791
40828
|
signal.throwIfAborted();
|
|
40792
40829
|
const events = replay.events.map(
|
|
40793
|
-
(event, index2) => eventLogV2.event(
|
|
40830
|
+
(event, index2) => eventLogV2.event(
|
|
40831
|
+
command.sessionId,
|
|
40832
|
+
replay.sessionGenerationId,
|
|
40833
|
+
replay.startPosition + index2,
|
|
40834
|
+
event,
|
|
40835
|
+
"1970-01-01T00:00:00.000Z"
|
|
40836
|
+
)
|
|
40794
40837
|
);
|
|
40795
40838
|
const tailCursor = events.at(-1)?.eventId ?? "";
|
|
40796
40839
|
audit.record({
|
|
@@ -40801,9 +40844,9 @@ async function executeSessionLiveHistoryV2PageLoad(socket, command, config2, dir
|
|
|
40801
40844
|
send(socket, {
|
|
40802
40845
|
events: {
|
|
40803
40846
|
events: {
|
|
40804
|
-
daemonGenerationId: eventLogV2.daemonGenerationId,
|
|
40805
40847
|
events,
|
|
40806
40848
|
nextCursor: replay.nextCursor,
|
|
40849
|
+
sessionGenerationId: replay.sessionGenerationId,
|
|
40807
40850
|
tailCursor,
|
|
40808
40851
|
truncated: replay.truncated,
|
|
40809
40852
|
version: 2
|
|
@@ -42170,7 +42213,7 @@ async function runRelayConnection({
|
|
|
42170
42213
|
// src/relay-connection/session-event-publisher.ts
|
|
42171
42214
|
import { WebSocket as WebSocket8 } from "undici";
|
|
42172
42215
|
var MAX_BUFFERED_BYTES = 32 * 1024 * 1024;
|
|
42173
|
-
var SESSION_EVENT_V2_BATCH_WINDOW_MILLISECONDS =
|
|
42216
|
+
var SESSION_EVENT_V2_BATCH_WINDOW_MILLISECONDS = 100;
|
|
42174
42217
|
var DaemonSessionEventPublisher = class {
|
|
42175
42218
|
#pendingV2Events = [];
|
|
42176
42219
|
#pendingV2Task = null;
|
|
@@ -42262,7 +42305,6 @@ var SystemDaemonTimer = class {
|
|
|
42262
42305
|
var systemDaemonTimer = new SystemDaemonTimer();
|
|
42263
42306
|
|
|
42264
42307
|
// src/session-event-log-v2.ts
|
|
42265
|
-
import { createHash as createHash6, randomUUID as randomUUID8 } from "node:crypto";
|
|
42266
42308
|
function promptContent(command) {
|
|
42267
42309
|
const content = [];
|
|
42268
42310
|
if (command.prompt.length > 0) {
|
|
@@ -42286,28 +42328,26 @@ function promptContent(command) {
|
|
|
42286
42328
|
}
|
|
42287
42329
|
return content;
|
|
42288
42330
|
}
|
|
42289
|
-
function sessionEventV22(
|
|
42290
|
-
const sessionPrefix = createHash6("sha256").update(sessionId).digest("hex").slice(0, 16);
|
|
42331
|
+
function sessionEventV22(sessionGenerationId, sessionId, position, event, recordedAt) {
|
|
42291
42332
|
return {
|
|
42292
|
-
eventId: `event-${
|
|
42333
|
+
eventId: `event-${sessionGenerationId}-${position.toString().padStart(16, "0")}`,
|
|
42293
42334
|
...event,
|
|
42294
42335
|
position: position.toString(),
|
|
42295
42336
|
provenance: { kind: "original" },
|
|
42296
42337
|
recordedAt,
|
|
42338
|
+
sessionGenerationId,
|
|
42297
42339
|
sessionId
|
|
42298
42340
|
};
|
|
42299
42341
|
}
|
|
42300
42342
|
var DaemonSessionEventLogV2 = class {
|
|
42301
|
-
daemonGenerationId;
|
|
42302
42343
|
#publisher;
|
|
42303
42344
|
#terminal = /* @__PURE__ */ new Map();
|
|
42304
42345
|
#publications = /* @__PURE__ */ new Map();
|
|
42305
42346
|
#queued = /* @__PURE__ */ new Map();
|
|
42306
42347
|
#recordLifecycle;
|
|
42307
|
-
constructor(publisher, recordLifecycle
|
|
42348
|
+
constructor(publisher, recordLifecycle) {
|
|
42308
42349
|
this.#recordLifecycle = recordLifecycle;
|
|
42309
42350
|
this.#publisher = publisher;
|
|
42310
|
-
this.daemonGenerationId = daemonGenerationId;
|
|
42311
42351
|
}
|
|
42312
42352
|
requested = (command) => {
|
|
42313
42353
|
this.#queued.set(command.commandId, {
|
|
@@ -42331,7 +42371,13 @@ var DaemonSessionEventLogV2 = class {
|
|
|
42331
42371
|
throw new Error("The executing prompt was not registered in the V2 queue");
|
|
42332
42372
|
};
|
|
42333
42373
|
record = (sessionId, event, position) => {
|
|
42334
|
-
const recorded = this.event(
|
|
42374
|
+
const recorded = this.event(
|
|
42375
|
+
sessionId,
|
|
42376
|
+
position.sessionGenerationId,
|
|
42377
|
+
position.position,
|
|
42378
|
+
event,
|
|
42379
|
+
(/* @__PURE__ */ new Date()).toISOString()
|
|
42380
|
+
);
|
|
42335
42381
|
if (event.type === "lifecycle-metadata" && (event.payload.kind === "prompt.completed" || event.payload.kind === "prompt.failed" || event.payload.kind === "prompt.failed-before-start")) {
|
|
42336
42382
|
this.#terminal.set(event.payload.commandId, recorded);
|
|
42337
42383
|
const pending2 = this.#publications.get(sessionId) ?? [];
|
|
@@ -42368,7 +42414,7 @@ var DaemonSessionEventLogV2 = class {
|
|
|
42368
42414
|
}
|
|
42369
42415
|
this.#queued.delete(commandId);
|
|
42370
42416
|
};
|
|
42371
|
-
event = (sessionId, position, event, recordedAt) => sessionEventV22(
|
|
42417
|
+
event = (sessionId, sessionGenerationId, position, event, recordedAt) => sessionEventV22(sessionGenerationId, sessionId, position, event, recordedAt);
|
|
42372
42418
|
queueChanged = async (sessionId) => {
|
|
42373
42419
|
await this.#recordLifecycle(sessionId, {
|
|
42374
42420
|
type: "lifecycle-metadata",
|
|
@@ -42459,7 +42505,7 @@ async function installDetectedAgentIntegrations(config2, installations, signal)
|
|
|
42459
42505
|
{
|
|
42460
42506
|
agentId: agent.id,
|
|
42461
42507
|
kind: AGENT_INSTALL_REQUEST_KIND,
|
|
42462
|
-
requestId: `automatic-integration-${
|
|
42508
|
+
requestId: `automatic-integration-${randomUUID8()}`
|
|
42463
42509
|
},
|
|
42464
42510
|
signal
|
|
42465
42511
|
);
|
|
@@ -42477,14 +42523,12 @@ async function runDaemon(config2, audit, signal, timer = systemDaemonTimer, opti
|
|
|
42477
42523
|
publishCatalog: async (installationSignal) => await publishAgentCatalog(config2, installationSignal),
|
|
42478
42524
|
stateDirectory
|
|
42479
42525
|
});
|
|
42480
|
-
const channelHash =
|
|
42481
|
-
const daemonGenerationId = randomUUID9();
|
|
42526
|
+
const channelHash = createHash6("sha256").update(config2.channelId).digest("hex");
|
|
42482
42527
|
const sessionDatabase = openAcpSessionDatabase(join18(stateDirectory, "sessions", `${channelHash}.sqlite`));
|
|
42483
42528
|
let eventsV2;
|
|
42484
42529
|
try {
|
|
42485
42530
|
eventsV2 = new CachedAcpSessionEventStoreV2(
|
|
42486
|
-
openSessionEventCacheV2Database(join18(stateDirectory, "sessions", `${channelHash}.events.sqlite`))
|
|
42487
|
-
daemonGenerationId
|
|
42531
|
+
openSessionEventCacheV2Database(join18(stateDirectory, "sessions", `${channelHash}.events.sqlite`))
|
|
42488
42532
|
);
|
|
42489
42533
|
} catch (error62) {
|
|
42490
42534
|
sessionDatabase.close();
|
|
@@ -42496,8 +42540,7 @@ async function runDaemon(config2, audit, signal, timer = systemDaemonTimer, opti
|
|
|
42496
42540
|
const publisher = new DaemonSessionEventPublisher(timer);
|
|
42497
42541
|
const eventLogV2 = new DaemonSessionEventLogV2(
|
|
42498
42542
|
publisher,
|
|
42499
|
-
(sessionId, event) => agentRuntime.recordLifecycleEventV2(sessionId, event)
|
|
42500
|
-
daemonGenerationId
|
|
42543
|
+
(sessionId, event) => agentRuntime.recordLifecycleEventV2(sessionId, event)
|
|
42501
42544
|
);
|
|
42502
42545
|
const activeTurns = new DaemonTurnRegistry(operations);
|
|
42503
42546
|
const agentRuntime = new AgentRuntimeManager(
|
|
@@ -42688,7 +42731,7 @@ import { basename as basename6, resolve as resolve7 } from "node:path";
|
|
|
42688
42731
|
import { fetch as fetch4 } from "undici";
|
|
42689
42732
|
|
|
42690
42733
|
// src/storage/runtime-installation-store.ts
|
|
42691
|
-
import { createHash as
|
|
42734
|
+
import { createHash as createHash7, randomUUID as randomUUID9 } from "node:crypto";
|
|
42692
42735
|
import { mkdir as mkdir5, open as open5, readdir as readdir4, rename as rename4, unlink, writeFile as writeFile4 } from "node:fs/promises";
|
|
42693
42736
|
import { dirname as dirname6, join as join19, resolve as resolve6 } from "node:path";
|
|
42694
42737
|
var APPLICATION_ID_PATTERN = /^[a-z][a-z0-9]*(?:[.-][a-z0-9]+){1,31}$/;
|
|
@@ -42818,13 +42861,13 @@ function parseRelayOrigin(value) {
|
|
|
42818
42861
|
return origin;
|
|
42819
42862
|
}
|
|
42820
42863
|
function connectionId() {
|
|
42821
|
-
return `mcn_${
|
|
42864
|
+
return `mcn_${randomUUID9().replaceAll("-", "")}`;
|
|
42822
42865
|
}
|
|
42823
42866
|
function installationId() {
|
|
42824
|
-
return `min_${
|
|
42867
|
+
return `min_${randomUUID9().replaceAll("-", "")}`;
|
|
42825
42868
|
}
|
|
42826
42869
|
function channelIndexFileName(channelId) {
|
|
42827
|
-
return `mci_${
|
|
42870
|
+
return `mci_${createHash7("sha256").update(channelId).digest("hex")}.json`;
|
|
42828
42871
|
}
|
|
42829
42872
|
function decodeInstallationPointer(value) {
|
|
42830
42873
|
if (!isRecord10(value) || !hasExactKeys(value, INSTALLATION_POINTER_KEYS) || value["version"] !== 1) {
|
|
@@ -42933,7 +42976,7 @@ async function readJsonFile(path2, signal, missingCode) {
|
|
|
42933
42976
|
async function writeJsonAtomically(path2, value, signal) {
|
|
42934
42977
|
signal.throwIfAborted();
|
|
42935
42978
|
const directory = dirname6(path2);
|
|
42936
|
-
const temporaryPath = join19(directory, `.${
|
|
42979
|
+
const temporaryPath = join19(directory, `.${randomUUID9()}.tmp`);
|
|
42937
42980
|
try {
|
|
42938
42981
|
await mkdir5(directory, { mode: 448, recursive: true });
|
|
42939
42982
|
signal.throwIfAborted();
|