@earendil-works/pi-agent-core 0.84.0 → 0.84.2

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.
Files changed (70) hide show
  1. package/README.md +4 -4
  2. package/dist/agent-loop.d.ts.map +1 -1
  3. package/dist/agent-loop.js +5 -1
  4. package/dist/agent-loop.js.map +1 -1
  5. package/dist/agent.d.ts.map +1 -1
  6. package/dist/agent.js +3 -0
  7. package/dist/agent.js.map +1 -1
  8. package/dist/harness/events.d.ts +43 -0
  9. package/dist/harness/events.d.ts.map +1 -0
  10. package/dist/harness/events.js +65 -0
  11. package/dist/harness/events.js.map +1 -0
  12. package/dist/harness/session/jsonl/codec.d.ts +4 -2
  13. package/dist/harness/session/jsonl/codec.d.ts.map +1 -1
  14. package/dist/harness/session/jsonl/codec.js +127 -88
  15. package/dist/harness/session/jsonl/codec.js.map +1 -1
  16. package/dist/harness/session/jsonl/errors.d.ts +5 -1
  17. package/dist/harness/session/jsonl/errors.d.ts.map +1 -1
  18. package/dist/harness/session/jsonl/errors.js +10 -2
  19. package/dist/harness/session/jsonl/errors.js.map +1 -1
  20. package/dist/harness/session/jsonl/repo.d.ts +7 -3
  21. package/dist/harness/session/jsonl/repo.d.ts.map +1 -1
  22. package/dist/harness/session/jsonl/repo.js +88 -45
  23. package/dist/harness/session/jsonl/repo.js.map +1 -1
  24. package/dist/harness/session/jsonl/storage.d.ts +1 -1
  25. package/dist/harness/session/jsonl/storage.d.ts.map +1 -1
  26. package/dist/harness/session/jsonl/storage.js +28 -19
  27. package/dist/harness/session/jsonl/storage.js.map +1 -1
  28. package/dist/harness/session/jsonl/types.d.ts +1 -1
  29. package/dist/harness/session/jsonl/types.d.ts.map +1 -1
  30. package/dist/harness/session/jsonl/types.js.map +1 -1
  31. package/dist/harness/session/memory.d.ts +1 -1
  32. package/dist/harness/session/memory.d.ts.map +1 -1
  33. package/dist/harness/session/memory.js.map +1 -1
  34. package/dist/harness/session/session.d.ts +1 -1
  35. package/dist/harness/session/session.d.ts.map +1 -1
  36. package/dist/harness/session/session.js +7 -2
  37. package/dist/harness/session/session.js.map +1 -1
  38. package/dist/harness/session/state.d.ts +1 -1
  39. package/dist/harness/session/state.d.ts.map +1 -1
  40. package/dist/harness/session/state.js.map +1 -1
  41. package/dist/harness/session/testing/conformance.d.ts.map +1 -1
  42. package/dist/harness/session/testing/conformance.js +19 -0
  43. package/dist/harness/session/testing/conformance.js.map +1 -1
  44. package/dist/harness/session/types.d.ts +18 -5
  45. package/dist/harness/session/types.d.ts.map +1 -1
  46. package/dist/harness/session/types.js.map +1 -1
  47. package/dist/index.d.ts +1 -1
  48. package/dist/index.d.ts.map +1 -1
  49. package/dist/index.js +1 -1
  50. package/dist/index.js.map +1 -1
  51. package/dist/proxy.d.ts +2 -1
  52. package/dist/proxy.d.ts.map +1 -1
  53. package/dist/proxy.js +1 -0
  54. package/dist/proxy.js.map +1 -1
  55. package/dist/search/index.d.ts +21 -0
  56. package/dist/search/index.d.ts.map +1 -0
  57. package/dist/search/index.js +2 -0
  58. package/dist/search/index.js.map +1 -0
  59. package/dist/search/scanning.d.ts +29 -0
  60. package/dist/search/scanning.d.ts.map +1 -0
  61. package/dist/search/scanning.js +103 -0
  62. package/dist/search/scanning.js.map +1 -0
  63. package/dist/types.d.ts +6 -0
  64. package/dist/types.d.ts.map +1 -1
  65. package/dist/types.js.map +1 -1
  66. package/package.json +3 -3
  67. package/dist/harness/session/search.d.ts +0 -19
  68. package/dist/harness/session/search.d.ts.map +0 -1
  69. package/dist/harness/session/search.js +0 -42
  70. package/dist/harness/session/search.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"conformance.js","sourceRoot":"","sources":["../../../../src/harness/session/testing/conformance.ts"],"names":[],"mappings":"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","sourcesContent":["import { deepStrictEqual, ok, rejects, strictEqual } from \"node:assert/strict\";\nimport type { AgentMessage } from \"../../../types.ts\";\nimport type {\n\tCustomEntry,\n\tEntry,\n\tMessageEntry,\n\tNewRecord,\n\tOperationStartedRecord,\n\tSessionErrorCode,\n\tSessionRepo,\n} from \"../types.ts\";\nimport type { SessionBackendConformanceCase, SessionBackendFixtureFactory } from \"./types.ts\";\n\nfunction createUserMessage(text: string): AgentMessage {\n\treturn {\n\t\trole: \"user\",\n\t\tcontent: [{ type: \"text\", text }],\n\t\ttimestamp: 1,\n\t};\n}\n\nfunction createAssistantMessage(text: string): AgentMessage {\n\treturn {\n\t\trole: \"assistant\",\n\t\tcontent: [{ type: \"text\", text }],\n\t\tapi: \"anthropic-messages\",\n\t\tprovider: \"anthropic\",\n\t\tmodel: \"claude-sonnet-4-5\",\n\t\tusage: {\n\t\t\tinput: 0,\n\t\t\toutput: 0,\n\t\t\tcacheRead: 0,\n\t\t\tcacheWrite: 0,\n\t\t\ttotalTokens: 0,\n\t\t\tcost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 },\n\t\t},\n\t\tstopReason: \"stop\",\n\t\ttimestamp: 1,\n\t};\n}\n\nfunction operationStarted(\n\tid: string,\n\t{ lane, kind }: { lane: string; kind: OperationStartedRecord[\"intent\"][\"kind\"] },\n): NewRecord<OperationStartedRecord> {\n\tlet intent: OperationStartedRecord[\"intent\"];\n\tswitch (kind) {\n\t\tcase \"run\":\n\t\t\tintent = { kind, originalPrompt: [], initialMessages: [] };\n\t\t\tbreak;\n\t\tcase \"compaction\":\n\t\t\tintent = { kind, resultEntryId: `${id}-result` };\n\t\t\tbreak;\n\t\tcase \"navigation\":\n\t\t\tintent = { kind, targetId: null, summarize: false };\n\t\t\tbreak;\n\t}\n\treturn { type: \"operation_started\", id, lane, sourceLeafId: null, intent };\n}\n\nasync function entryIds(entries: Promise<Entry[]>): Promise<string[]> {\n\treturn (await entries).map((entry) => entry.id);\n}\n\nasync function rejectsWithCode(operation: Promise<unknown>, code: SessionErrorCode): Promise<void> {\n\tawait rejects(\n\t\toperation,\n\t\t(error: unknown) => typeof error === \"object\" && error !== null && \"code\" in error && error.code === code,\n\t\t`Expected SessionError with code ${code}`,\n\t);\n}\n\ntype ConformanceTest = (repository: SessionRepo) => Promise<void>;\n\nfunction createCase(\n\tfactory: SessionBackendFixtureFactory,\n\tgroup: string,\n\tname: string,\n\ttest: ConformanceTest,\n): SessionBackendConformanceCase {\n\treturn {\n\t\tgroup,\n\t\tname,\n\t\tasync run() {\n\t\t\tawait using fixture = await factory();\n\t\t\tawait test(fixture.repository);\n\t\t},\n\t};\n}\n\n/** Creates the session backend conformance cases. Each case creates and disposes its own fixture. */\nexport function createSessionBackendConformance(\n\tfactory: SessionBackendFixtureFactory,\n): readonly SessionBackendConformanceCase[] {\n\treturn [\n\t\tcreateCase(\n\t\t\tfactory,\n\t\t\t\"entries and lanes\",\n\t\t\t\"assigns parents and one sequence across every mutation\",\n\t\t\tasync (repository) => {\n\t\t\t\tconst session = await repository.create({ id: \"session\" });\n\t\t\t\tconst root = await session.appendEntry<MessageEntry>(\n\t\t\t\t\t{ type: \"message\", id: \"root\", message: createUserMessage(\"root\") },\n\t\t\t\t\t\"main\",\n\t\t\t\t);\n\t\t\t\tawait session.createLane(\"thread\", root.id);\n\t\t\t\tconst child = await session.appendEntry<CustomEntry>(\n\t\t\t\t\t{ type: \"custom\", id: \"child\", customType: \"note\", data: { value: 1 } },\n\t\t\t\t\t\"thread\",\n\t\t\t\t);\n\t\t\t\tconst record = await session.appendRecord(operationStarted(\"run\", { lane: \"thread\", kind: \"run\" }));\n\t\t\t\tawait session.setName(\"Example\");\n\t\t\t\tawait session.setLabel(root.id, \"checkpoint\");\n\t\t\t\tawait session.moveLane(\"main\", child.id);\n\n\t\t\t\tdeepStrictEqual({ parentId: root.parentId, seq: root.seq }, { parentId: null, seq: 1 });\n\t\t\t\tdeepStrictEqual({ parentId: child.parentId, seq: child.seq }, { parentId: \"root\", seq: 3 });\n\t\t\t\tstrictEqual(record.seq, 4);\n\t\t\t\tfor (const timestamp of [root.timestamp, child.timestamp, record.timestamp]) {\n\t\t\t\t\tok(\n\t\t\t\t\t\tNumber.isSafeInteger(timestamp) && timestamp >= 0,\n\t\t\t\t\t\t\"storage-assigned timestamps must be Unix milliseconds\",\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tdeepStrictEqual(\n\t\t\t\t\t(await session.getLog()).map((item) => [item.kind, item.seq]),\n\t\t\t\t\t[\n\t\t\t\t\t\t[\"entry\", 1],\n\t\t\t\t\t\t[\"lane\", 2],\n\t\t\t\t\t\t[\"entry\", 3],\n\t\t\t\t\t\t[\"record\", 4],\n\t\t\t\t\t\t[\"fact\", 5],\n\t\t\t\t\t\t[\"fact\", 6],\n\t\t\t\t\t\t[\"lane\", 7],\n\t\t\t\t\t],\n\t\t\t\t);\n\t\t\t\tdeepStrictEqual(await session.getLanes(), [\n\t\t\t\t\t{ lane: \"main\", leafId: \"child\" },\n\t\t\t\t\t{ lane: \"thread\", leafId: \"child\" },\n\t\t\t\t]);\n\t\t\t},\n\t\t),\n\n\t\tcreateCase(\n\t\t\tfactory,\n\t\t\t\"records and log\",\n\t\t\t\"commits records and lane moves as separate mutations\",\n\t\t\tasync (repository) => {\n\t\t\t\tconst session = await repository.create({ id: \"session\" });\n\t\t\t\tconst root = await session.appendEntry<MessageEntry>(\n\t\t\t\t\t{ type: \"message\", id: \"root\", message: createUserMessage(\"root\") },\n\t\t\t\t\t\"main\",\n\t\t\t\t);\n\t\t\t\tconst finished = await session.appendRecord({\n\t\t\t\t\ttype: \"operation_finished\",\n\t\t\t\t\tid: \"finish\",\n\t\t\t\t\tlane: \"main\",\n\t\t\t\t\trunId: \"run\",\n\t\t\t\t\toutcome: \"completed\",\n\t\t\t\t});\n\n\t\t\t\tstrictEqual(finished.seq, 2);\n\t\t\t\tdeepStrictEqual(await session.getLanes(), [{ lane: \"main\", leafId: \"root\" }]);\n\t\t\t\tawait session.moveLane(\"main\", null);\n\t\t\t\tdeepStrictEqual(await session.getLanes(), [{ lane: \"main\", leafId: null }]);\n\t\t\t\tdeepStrictEqual(await session.getLog(), [\n\t\t\t\t\t{ kind: \"entry\", seq: 1, entry: root },\n\t\t\t\t\t{ kind: \"record\", seq: 2, record: finished },\n\t\t\t\t\t{ kind: \"lane\", seq: 3, lane: \"main\", leafId: null },\n\t\t\t\t]);\n\n\t\t\t\tawait rejectsWithCode(session.moveLane(\"main\", \"missing\"), \"not_found\");\n\t\t\t\tstrictEqual((await session.findRecords()).length, 1);\n\t\t\t\tdeepStrictEqual(\n\t\t\t\t\t(await session.getLog()).map((item) => item.seq),\n\t\t\t\t\t[1, 2, 3],\n\t\t\t\t);\n\t\t\t},\n\t\t),\n\n\t\tcreateCase(factory, \"entries and lanes\", \"rejects duplicate ids without changing state\", async (repository) => {\n\t\t\tconst session = await repository.create({ id: \"session\" });\n\t\t\tawait session.appendEntry<MessageEntry>(\n\t\t\t\t{ type: \"message\", id: \"shared\", message: createUserMessage(\"root\") },\n\t\t\t\t\"main\",\n\t\t\t);\n\t\t\tawait rejectsWithCode(\n\t\t\t\tsession.appendRecord(operationStarted(\"shared\", { lane: \"main\", kind: \"run\" })),\n\t\t\t\t\"already_exists\",\n\t\t\t);\n\t\t\tawait session.appendRecord(operationStarted(\"run\", { lane: \"main\", kind: \"run\" }));\n\t\t\tawait rejectsWithCode(\n\t\t\t\tsession.appendEntry<CustomEntry>({ type: \"custom\", id: \"run\", customType: \"note\" }, \"main\"),\n\t\t\t\t\"already_exists\",\n\t\t\t);\n\t\t\tdeepStrictEqual(\n\t\t\t\t(await session.getLog()).map((item) => item.seq),\n\t\t\t\t[1, 2],\n\t\t\t);\n\t\t}),\n\n\t\tcreateCase(factory, \"entries and lanes\", \"isolates lanes while sharing the tree\", async (repository) => {\n\t\t\tconst session = await repository.create({ id: \"session\" });\n\t\t\tawait session.appendEntry<MessageEntry>(\n\t\t\t\t{ type: \"message\", id: \"root\", message: createUserMessage(\"root\") },\n\t\t\t\t\"main\",\n\t\t\t);\n\t\t\tawait session.createLane(\"thread\", \"root\");\n\t\t\tawait session.appendEntry<MessageEntry>(\n\t\t\t\t{ type: \"message\", id: \"main-child\", message: createUserMessage(\"main\") },\n\t\t\t\t\"main\",\n\t\t\t);\n\t\t\tawait session.appendEntry<MessageEntry>(\n\t\t\t\t{ type: \"message\", id: \"thread-child\", message: createUserMessage(\"thread\") },\n\t\t\t\t\"thread\",\n\t\t\t);\n\n\t\t\tdeepStrictEqual(await session.getLanes(), [\n\t\t\t\t{ lane: \"main\", leafId: \"main-child\" },\n\t\t\t\t{ lane: \"thread\", leafId: \"thread-child\" },\n\t\t\t]);\n\t\t\tdeepStrictEqual(await entryIds(session.findEntriesOnBranch({ start: \"main-child\", order: \"oldestFirst\" })), [\n\t\t\t\t\"root\",\n\t\t\t\t\"main-child\",\n\t\t\t]);\n\t\t\tdeepStrictEqual(await entryIds(session.findEntriesOnBranch({ start: \"thread-child\", order: \"oldestFirst\" })), [\n\t\t\t\t\"root\",\n\t\t\t\t\"thread-child\",\n\t\t\t]);\n\t\t}),\n\n\t\tcreateCase(factory, \"queries and facts\", \"rejects invalid queries before empty reads\", async (repository) => {\n\t\t\tconst session = await repository.create({ id: \"invalid-queries\" });\n\t\t\tawait session.createLane(\"thread\", null);\n\t\t\tconst thread = session.view(\"thread\");\n\n\t\t\tawait rejectsWithCode(session.findEntries({ limit: 0 }), \"invalid_query\");\n\t\t\tawait rejectsWithCode(session.findEntry({ limit: 0 }), \"invalid_query\");\n\t\t\tawait rejectsWithCode(session.findEntriesOnBranch({ limit: 0 }), \"invalid_query\");\n\t\t\tawait rejectsWithCode(thread.findEntriesOnBranch({ cursor: { afterSeq: -1 } }), \"invalid_query\");\n\t\t\tawait rejectsWithCode(thread.findEntryOnBranch({ limit: 0 }), \"invalid_query\");\n\t\t\tawait rejectsWithCode(session.findRecords({ limit: 0 }), \"invalid_query\");\n\t\t\tawait rejectsWithCode(session.findRecords({ operationKind: \"run\" }), \"invalid_query\");\n\t\t\tawait rejectsWithCode(session.findRecords({ type: \"step_attempt\", operationKind: \"run\" }), \"invalid_query\");\n\t\t\tawait rejectsWithCode(session.findOpenOperations(\"main\", { limit: 0 }), \"invalid_query\");\n\t\t\tawait rejectsWithCode(session.findOpenOperations(\"main\", { limit: -1 }), \"invalid_query\");\n\t\t\tawait rejectsWithCode(session.getLog({ afterSeq: -1 }), \"invalid_query\");\n\t\t}),\n\n\t\tcreateCase(\n\t\t\tfactory,\n\t\t\t\"queries and facts\",\n\t\t\t\"supports bounded filtered and cursor-based queries\",\n\t\t\tasync (repository) => {\n\t\t\t\tconst session = await repository.create({ id: \"session\" });\n\t\t\t\tawait session.appendEntry<MessageEntry>(\n\t\t\t\t\t{ type: \"message\", id: \"root\", message: createUserMessage(\"root\") },\n\t\t\t\t\t\"main\",\n\t\t\t\t);\n\t\t\t\tawait session.appendEntry<CustomEntry>(\n\t\t\t\t\t{ type: \"custom\", id: \"old-note\", customType: \"note\", data: 1 },\n\t\t\t\t\t\"main\",\n\t\t\t\t);\n\t\t\t\tawait session.appendEntry(\n\t\t\t\t\t{ type: \"compaction\", id: \"compact\", summary: \"summary\", retainedTail: [], tokensBefore: 10 },\n\t\t\t\t\t\"main\",\n\t\t\t\t);\n\t\t\t\tawait session.appendEntry<CustomEntry>(\n\t\t\t\t\t{ type: \"custom\", id: \"new-note\", customType: \"note\", data: 2 },\n\t\t\t\t\t\"main\",\n\t\t\t\t);\n\t\t\t\tawait session.appendEntry<MessageEntry>(\n\t\t\t\t\t{ type: \"message\", id: \"tail\", message: createAssistantMessage(\"tail\") },\n\t\t\t\t\t\"main\",\n\t\t\t\t);\n\n\t\t\t\tdeepStrictEqual(await entryIds(session.findEntries()), [\"tail\", \"new-note\", \"compact\", \"old-note\", \"root\"]);\n\t\t\t\tdeepStrictEqual(\n\t\t\t\t\tawait entryIds(session.findEntries({ order: \"oldestFirst\", cursor: { afterSeq: 2 }, limit: 2 })),\n\t\t\t\t\t[\"compact\", \"new-note\"],\n\t\t\t\t);\n\t\t\t\tdeepStrictEqual(await entryIds(session.findEntries({ customType: \"note\" })), [\"new-note\", \"old-note\"]);\n\t\t\t\tdeepStrictEqual(\n\t\t\t\t\tawait entryIds(session.findEntriesOnBranch({ start: \"tail\", customType: \"note\", limit: 1 })),\n\t\t\t\t\t[\"new-note\"],\n\t\t\t\t);\n\t\t\t\tdeepStrictEqual(\n\t\t\t\t\tawait entryIds(\n\t\t\t\t\t\tsession.findEntriesOnBranch({ start: \"tail\", stopAtType: \"compaction\", type: \"message\" }),\n\t\t\t\t\t),\n\t\t\t\t\t[\"tail\"],\n\t\t\t\t);\n\t\t\t\tdeepStrictEqual(\n\t\t\t\t\tawait entryIds(session.findEntriesOnBranch({ start: \"tail\", stopAtId: \"tail\", type: \"custom\" })),\n\t\t\t\t\t[],\n\t\t\t\t);\n\t\t\t\tdeepStrictEqual(\n\t\t\t\t\tawait entryIds(\n\t\t\t\t\t\tsession.findEntriesOnBranch({ start: \"tail\", stopAtType: \"custom\", order: \"oldestFirst\" }),\n\t\t\t\t\t),\n\t\t\t\t\t[\"root\", \"old-note\"],\n\t\t\t\t);\n\t\t\t\tawait rejectsWithCode(session.findEntries({ limit: 0 }), \"invalid_query\");\n\t\t\t\tawait rejectsWithCode(session.findEntriesOnBranch({ start: \"missing\" }), \"not_found\");\n\t\t\t},\n\t\t),\n\n\t\tcreateCase(\n\t\t\tfactory,\n\t\t\t\"records and log\",\n\t\t\t\"keeps lane names permanent with their recovery records\",\n\t\t\tasync (repository) => {\n\t\t\t\tconst session = await repository.create({ id: \"session\" });\n\t\t\t\tawait session.createLane(\"thread\", null);\n\t\t\t\tawait session.appendRecord(operationStarted(\"old-run\", { lane: \"thread\", kind: \"run\" }));\n\t\t\t\tawait session.appendRecord({\n\t\t\t\t\ttype: \"queue_enqueued\",\n\t\t\t\t\tid: \"old-next-run\",\n\t\t\t\t\tlane: \"thread\",\n\t\t\t\t\tqueue: \"nextRun\",\n\t\t\t\t\ttarget: { type: \"message\", id: \"queued-message\", message: createUserMessage(\"queued\") },\n\t\t\t\t});\n\n\t\t\t\tdeepStrictEqual(\n\t\t\t\t\t(await session.findRecords({ lane: \"thread\" })).map((record) => record.id),\n\t\t\t\t\t[\"old-next-run\", \"old-run\"],\n\t\t\t\t);\n\t\t\t\tdeepStrictEqual(\n\t\t\t\t\t(await session.getLog()).flatMap((item) => (item.kind === \"record\" ? [item.record.id] : [])),\n\t\t\t\t\t[\"old-run\", \"old-next-run\"],\n\t\t\t\t);\n\t\t\t\tawait rejectsWithCode(session.createLane(\"thread\", null), \"already_exists\");\n\t\t\t},\n\t\t),\n\n\t\tcreateCase(\n\t\t\tfactory,\n\t\t\t\"records and log\",\n\t\t\t\"persists queue cancellation without consuming its target\",\n\t\t\tasync (repository) => {\n\t\t\t\tconst session = await repository.create({ id: \"session\" });\n\t\t\t\tconst enqueued = await session.appendRecord({\n\t\t\t\t\ttype: \"queue_enqueued\",\n\t\t\t\t\tid: \"enqueue\",\n\t\t\t\t\tlane: \"main\",\n\t\t\t\t\tqueue: \"nextRun\",\n\t\t\t\t\ttarget: { type: \"message\", id: \"queued-message\", message: createUserMessage(\"queued\") },\n\t\t\t\t});\n\t\t\t\tconst cancelled = await session.appendRecord({\n\t\t\t\t\ttype: \"queue_cancelled\",\n\t\t\t\t\tid: \"cancel\",\n\t\t\t\t\tlane: \"main\",\n\t\t\t\t\tentryId: \"queued-message\",\n\t\t\t\t});\n\t\t\t\tdeepStrictEqual({ seq: cancelled.seq, entryId: cancelled.entryId }, { seq: 2, entryId: \"queued-message\" });\n\t\t\t\tstrictEqual(\"runId\" in cancelled, false);\n\t\t\t\tstrictEqual(await session.getEntry(\"queued-message\"), undefined);\n\t\t\t\tconst cancellations = await session.findRecords({ type: \"queue_cancelled\" });\n\t\t\t\tstrictEqual(cancellations[0]?.entryId, \"queued-message\");\n\t\t\t\tdeepStrictEqual(cancellations, [cancelled]);\n\t\t\t\tdeepStrictEqual(await session.getLog(), [\n\t\t\t\t\t{ kind: \"record\", seq: enqueued.seq, record: enqueued },\n\t\t\t\t\t{ kind: \"record\", seq: cancelled.seq, record: cancelled },\n\t\t\t\t]);\n\t\t\t},\n\t\t),\n\n\t\tcreateCase(\n\t\t\tfactory,\n\t\t\t\"records and log\",\n\t\t\t\"filters records by lane type run sequence and order\",\n\t\t\tasync (repository) => {\n\t\t\t\tconst session = await repository.create({ id: \"session\" });\n\t\t\t\tawait session.appendRecord(operationStarted(\"run-1\", { lane: \"main\", kind: \"run\" }));\n\t\t\t\tawait session.appendRecord({\n\t\t\t\t\ttype: \"step_attempt\",\n\t\t\t\t\tid: \"attempt-1\",\n\t\t\t\t\tlane: \"main\",\n\t\t\t\t\trunId: \"run-1\",\n\t\t\t\t\tstep: \"assistant\",\n\t\t\t\t\tattempt: 1,\n\t\t\t\t\tresultEntryId: \"assistant-1\",\n\t\t\t\t});\n\t\t\t\tawait session.createLane(\"thread\", null);\n\t\t\t\tawait session.appendRecord(operationStarted(\"run-2\", { lane: \"thread\", kind: \"run\" }));\n\t\t\t\tawait session.appendRecord({\n\t\t\t\t\ttype: \"step_attempt\",\n\t\t\t\t\tid: \"attempt-2\",\n\t\t\t\t\tlane: \"thread\",\n\t\t\t\t\trunId: \"run-2\",\n\t\t\t\t\tstep: \"assistant\",\n\t\t\t\t\tattempt: 1,\n\t\t\t\t\tresultEntryId: \"assistant-2\",\n\t\t\t\t});\n\n\t\t\t\tdeepStrictEqual(\n\t\t\t\t\t(await session.findRecords({ lane: \"thread\" })).map((record) => record.id),\n\t\t\t\t\t[\"attempt-2\", \"run-2\"],\n\t\t\t\t);\n\t\t\t\tdeepStrictEqual(\n\t\t\t\t\t(await session.findRecords({ type: \"step_attempt\", order: \"oldestFirst\" })).map((record) => record.id),\n\t\t\t\t\t[\"attempt-1\", \"attempt-2\"],\n\t\t\t\t);\n\t\t\t\tdeepStrictEqual(\n\t\t\t\t\t(await session.findRecords({ runId: \"run-1\", afterSeq: 1 })).map((record) => record.id),\n\t\t\t\t\t[\"attempt-1\"],\n\t\t\t\t);\n\t\t\t\tdeepStrictEqual(\n\t\t\t\t\t(await session.findRecords({ limit: 1 })).map((record) => record.id),\n\t\t\t\t\t[\"attempt-2\"],\n\t\t\t\t);\n\t\t\t},\n\t\t),\n\n\t\tcreateCase(factory, \"records and log\", \"filters operation starts by operation kind\", async (repository) => {\n\t\t\tconst session = await repository.create({ id: \"session\" });\n\t\t\tawait session.appendRecord(operationStarted(\"run-old\", { lane: \"main\", kind: \"run\" }));\n\t\t\tawait session.appendRecord({\n\t\t\t\ttype: \"operation_finished\",\n\t\t\t\tid: \"run-old-finished\",\n\t\t\t\tlane: \"main\",\n\t\t\t\trunId: \"run-old\",\n\t\t\t\toutcome: \"completed\",\n\t\t\t});\n\t\t\tawait session.appendRecord(operationStarted(\"compaction\", { lane: \"main\", kind: \"compaction\" }));\n\t\t\tawait session.appendRecord({\n\t\t\t\ttype: \"operation_finished\",\n\t\t\t\tid: \"compaction-finished\",\n\t\t\t\tlane: \"main\",\n\t\t\t\trunId: \"compaction\",\n\t\t\t\toutcome: \"completed\",\n\t\t\t});\n\t\t\tawait session.appendRecord(operationStarted(\"navigation\", { lane: \"main\", kind: \"navigation\" }));\n\t\t\tawait session.appendRecord({\n\t\t\t\ttype: \"operation_finished\",\n\t\t\t\tid: \"navigation-finished\",\n\t\t\t\tlane: \"main\",\n\t\t\t\trunId: \"navigation\",\n\t\t\t\toutcome: \"completed\",\n\t\t\t});\n\t\t\tawait session.appendRecord(operationStarted(\"run-new\", { lane: \"main\", kind: \"run\" }));\n\n\t\t\tdeepStrictEqual(\n\t\t\t\t(\n\t\t\t\t\tawait session.findRecords({\n\t\t\t\t\t\ttype: \"operation_started\",\n\t\t\t\t\t\toperationKind: \"run\",\n\t\t\t\t\t\torder: \"oldestFirst\",\n\t\t\t\t\t})\n\t\t\t\t).map((record) => record.id),\n\t\t\t\t[\"run-old\", \"run-new\"],\n\t\t\t);\n\t\t\tdeepStrictEqual(\n\t\t\t\t(\n\t\t\t\t\tawait session.findRecords({\n\t\t\t\t\t\ttype: \"operation_started\",\n\t\t\t\t\t\toperationKind: \"compaction\",\n\t\t\t\t\t})\n\t\t\t\t).map((record) => record.id),\n\t\t\t\t[\"compaction\"],\n\t\t\t);\n\t\t\tdeepStrictEqual(\n\t\t\t\t(\n\t\t\t\t\tawait session.findRecords({\n\t\t\t\t\t\ttype: \"operation_started\",\n\t\t\t\t\t\toperationKind: \"navigation\",\n\t\t\t\t\t})\n\t\t\t\t).map((record) => record.id),\n\t\t\t\t[\"navigation\"],\n\t\t\t);\n\t\t\tdeepStrictEqual(\n\t\t\t\t(\n\t\t\t\t\tawait session.findRecords({\n\t\t\t\t\t\ttype: \"operation_started\",\n\t\t\t\t\t\toperationKind: \"run\",\n\t\t\t\t\t\tlimit: 1,\n\t\t\t\t\t})\n\t\t\t\t).map((record) => record.id),\n\t\t\t\t[\"run-new\"],\n\t\t\t);\n\t\t}),\n\n\t\tcreateCase(factory, \"records and log\", \"tracks and enforces one open operation per lane\", async (repository) => {\n\t\t\tconst session = await repository.create({ id: \"session\" });\n\t\t\tdeepStrictEqual(await session.findOpenOperations(\"main\", { limit: 2 }), []);\n\n\t\t\tconst first = await session.appendRecord(operationStarted(\"first\", { lane: \"main\", kind: \"run\" }));\n\t\t\tdeepStrictEqual(await session.findOpenOperations(\"main\", { limit: 2 }), [first]);\n\t\t\tawait rejectsWithCode(\n\t\t\t\tsession.appendRecord(operationStarted(\"second\", { lane: \"main\", kind: \"run\" })),\n\t\t\t\t\"storage\",\n\t\t\t);\n\t\t\tdeepStrictEqual(await session.findOpenOperations(\"main\", { limit: 2 }), [first]);\n\n\t\t\tawait session.appendRecord({\n\t\t\t\ttype: \"operation_finished\",\n\t\t\t\tid: \"finish-first\",\n\t\t\t\tlane: \"main\",\n\t\t\t\trunId: first.id,\n\t\t\t\toutcome: \"completed\",\n\t\t\t});\n\t\t\tdeepStrictEqual(await session.findOpenOperations(\"main\", { limit: 2 }), []);\n\t\t}),\n\n\t\tcreateCase(\n\t\t\tfactory,\n\t\t\t\"records and log\",\n\t\t\t\"does not let an earlier finish close a later start\",\n\t\t\tasync (repository) => {\n\t\t\t\tconst session = await repository.create({ id: \"session\" });\n\t\t\t\tawait session.appendRecord({\n\t\t\t\t\ttype: \"operation_finished\",\n\t\t\t\t\tid: \"finish-before-start\",\n\t\t\t\t\tlane: \"main\",\n\t\t\t\t\trunId: \"run\",\n\t\t\t\t\toutcome: \"completed\",\n\t\t\t\t});\n\t\t\t\tconst started = await session.appendRecord(operationStarted(\"run\", { lane: \"main\", kind: \"run\" }));\n\t\t\t\tdeepStrictEqual(await session.findOpenOperations(\"main\", { limit: 2 }), [started]);\n\t\t\t},\n\t\t),\n\n\t\tcreateCase(factory, \"records and log\", \"scopes open operations by lane and limit\", async (repository) => {\n\t\t\tconst session = await repository.create({ id: \"session\" });\n\t\t\tawait session.createLane(\"thread\", null);\n\t\t\tconst mainRun = await session.appendRecord(operationStarted(\"main-run\", { lane: \"main\", kind: \"run\" }));\n\t\t\tconst threadNavigation = await session.appendRecord(\n\t\t\t\toperationStarted(\"thread-navigation\", { lane: \"thread\", kind: \"navigation\" }),\n\t\t\t);\n\n\t\t\tdeepStrictEqual(await session.findOpenOperations(\"main\"), [mainRun]);\n\t\t\tdeepStrictEqual(await session.findOpenOperations(\"main\", { limit: 1 }), [mainRun]);\n\t\t\tdeepStrictEqual(await session.findOpenOperations(\"thread\", { limit: 2 }), [threadNavigation]);\n\t\t}),\n\n\t\tcreateCase(\n\t\t\tfactory,\n\t\t\t\"validation and immutability\",\n\t\t\t\"returns immutable open-operation records\",\n\t\t\tasync (repository) => {\n\t\t\t\tconst session = await repository.create({ id: \"session\" });\n\t\t\t\tconst committed = await session.appendRecord(operationStarted(\"run\", { lane: \"main\", kind: \"run\" }));\n\t\t\t\tconst [read] = await session.findOpenOperations(\"main\");\n\t\t\t\tif (read?.intent.kind !== \"run\") throw new Error(\"Expected an open run operation\");\n\t\t\t\tread.intent.originalPrompt.push(createUserMessage(\"mutated\"));\n\n\t\t\t\tdeepStrictEqual(await session.findOpenOperations(\"main\"), [committed]);\n\t\t\t},\n\t\t),\n\n\t\tcreateCase(\n\t\t\tfactory,\n\t\t\t\"queries and facts\",\n\t\t\t\"keeps latest-value facts and computes ledger statistics across lanes\",\n\t\t\tasync (repository) => {\n\t\t\t\tconst session = await repository.create({ id: \"session\" });\n\t\t\t\tconst assistant = createAssistantMessage(\"answer\");\n\t\t\t\tif (assistant.role !== \"assistant\") throw new Error(\"Expected assistant message\");\n\t\t\t\tassistant.usage = {\n\t\t\t\t\tinput: 10,\n\t\t\t\t\toutput: 5,\n\t\t\t\t\tcacheRead: 3,\n\t\t\t\t\tcacheWrite: 2,\n\t\t\t\t\ttotalTokens: 20,\n\t\t\t\t\tcost: { input: 1, output: 2, cacheRead: 3, cacheWrite: 4, total: 10 },\n\t\t\t\t};\n\t\t\t\tawait session.appendEntry<MessageEntry>(\n\t\t\t\t\t{ type: \"message\", id: \"user\", message: createUserMessage(\"question\") },\n\t\t\t\t\t\"main\",\n\t\t\t\t);\n\t\t\t\tawait session.appendEntry<MessageEntry>({ type: \"message\", id: \"assistant\", message: assistant }, \"main\");\n\t\t\t\tawait session.appendRecord({\n\t\t\t\t\ttype: \"usage\",\n\t\t\t\t\tid: \"assistant-usage\",\n\t\t\t\t\tlane: \"main\",\n\t\t\t\t\tcause: \"assistant\",\n\t\t\t\t\trunId: \"run\",\n\t\t\t\t\tentryId: \"assistant\",\n\t\t\t\t\tattempt: 1,\n\t\t\t\t\tstopReason: \"stop\",\n\t\t\t\t\tusage: assistant.usage,\n\t\t\t\t});\n\t\t\t\tawait session.appendRecord({\n\t\t\t\t\ttype: \"usage\",\n\t\t\t\t\tid: \"deferred-usage\",\n\t\t\t\t\tlane: \"main\",\n\t\t\t\t\tcause: \"deferred_fetch\",\n\t\t\t\t\trunId: \"run\",\n\t\t\t\t\tentryId: \"deferred-result\",\n\t\t\t\t\tattempt: 1,\n\t\t\t\t\tstopReason: \"deferred\",\n\t\t\t\t\tusage: {\n\t\t\t\t\t\tinput: 0,\n\t\t\t\t\t\toutput: 0,\n\t\t\t\t\t\tcacheRead: 0,\n\t\t\t\t\t\tcacheWrite: 0,\n\t\t\t\t\t\ttotalTokens: 0,\n\t\t\t\t\t\tcost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 },\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t\tawait session.createLane(\"thread\", \"assistant\");\n\t\t\t\tawait session.appendRecord({\n\t\t\t\t\ttype: \"usage\",\n\t\t\t\t\tid: \"correction\",\n\t\t\t\t\tlane: \"thread\",\n\t\t\t\t\tcause: \"adjustment\",\n\t\t\t\t\tdetails: { reason: \"provider correction\" },\n\t\t\t\t\tusage: {\n\t\t\t\t\t\tinput: -2,\n\t\t\t\t\t\toutput: 0,\n\t\t\t\t\t\tcacheRead: 0,\n\t\t\t\t\t\tcacheWrite: 0,\n\t\t\t\t\t\ttotalTokens: -2,\n\t\t\t\t\t\tcost: { input: -0.5, output: 0, cacheRead: 0, cacheWrite: 0, total: -0.5 },\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t\tawait session.setName(\"First\");\n\t\t\t\tawait session.setName(\"Second\");\n\t\t\t\tawait session.setLabel(\"user\", \"keep\");\n\t\t\t\tawait session.setLabel(\"user\", undefined);\n\t\t\t\tawait rejectsWithCode(session.setLabel(\"missing\", \"checkpoint\"), \"not_found\");\n\n\t\t\t\tstrictEqual(await session.getName(), \"Second\");\n\t\t\t\tstrictEqual(await session.getLabel(\"user\"), undefined);\n\t\t\t\tconst usageRecords = await session.findRecords({ type: \"usage\", order: \"oldestFirst\" });\n\t\t\t\tdeepStrictEqual(\n\t\t\t\t\tusageRecords.map((record) => record.cause),\n\t\t\t\t\t[\"assistant\", \"deferred_fetch\", \"adjustment\"],\n\t\t\t\t);\n\t\t\t\tconst deferredUsage = usageRecords.find((record) => record.cause === \"deferred_fetch\");\n\t\t\t\tif (deferredUsage?.cause !== \"deferred_fetch\") throw new Error(\"Expected deferred usage record\");\n\t\t\t\tstrictEqual(deferredUsage.stopReason, \"deferred\");\n\t\t\t\tdeepStrictEqual(await session.getStats(), {\n\t\t\t\t\tmessageCount: 2,\n\t\t\t\t\tcachedTokens: 3,\n\t\t\t\t\tuncachedTokens: 10,\n\t\t\t\t\ttotalTokens: 18,\n\t\t\t\t\tcostTotal: 9.5,\n\t\t\t\t});\n\t\t\t},\n\t\t),\n\n\t\tcreateCase(factory, \"validation and immutability\", \"returns immutable copies from reads\", async (repository) => {\n\t\t\tconst session = await repository.create({ id: \"immutable\" });\n\t\t\tconst metadata = await session.getMetadata();\n\t\t\tconst data = { nested: { value: 1 } };\n\t\t\tawait session.appendEntry<CustomEntry>({ type: \"custom\", id: \"custom\", customType: \"note\", data }, \"main\");\n\t\t\tdata.nested.value = 50;\n\t\t\tconst read = await session.getEntry(\"custom\");\n\t\t\tif (read?.type !== \"custom\") throw new Error(\"Expected custom entry\");\n\t\t\t(read.data as { nested: { value: number } }).nested.value = 99;\n\t\t\tconst readMetadata = await session.getMetadata();\n\t\t\treadMetadata.id = \"changed\";\n\t\t\tconst log = await session.getLog();\n\t\t\tif (log[0]?.kind !== \"entry\" || log[0].entry.type !== \"custom\") throw new Error(\"Expected entry log\");\n\t\t\t(log[0].entry.data as { nested: { value: number } }).nested.value = 100;\n\n\t\t\tdeepStrictEqual(await session.getMetadata(), metadata);\n\t\t\tdeepStrictEqual(await session.getEntry(\"custom\"), {\n\t\t\t\ttype: \"custom\",\n\t\t\t\tid: \"custom\",\n\t\t\t\tcustomType: \"note\",\n\t\t\t\tdata: { nested: { value: 1 } },\n\t\t\t\tparentId: null,\n\t\t\t\tseq: 1,\n\t\t\t\ttimestamp: read.timestamp,\n\t\t\t});\n\t\t}),\n\n\t\tcreateCase(factory, \"entries and lanes\", \"validates lane lifecycle and targets\", async (repository) => {\n\t\t\tconst session = await repository.create({ id: \"session\" });\n\t\t\tawait rejectsWithCode(session.createLane(\"main\", null), \"already_exists\");\n\t\t\tawait rejectsWithCode(session.createLane(\"thread\", \"missing\"), \"not_found\");\n\t\t\tawait rejectsWithCode(session.moveLane(\"missing\", null), \"invalid_lane\");\n\t\t}),\n\n\t\tcreateCase(factory, \"entries and lanes\", \"binds lane views without caching leaves\", async (repository) => {\n\t\t\tconst session = await repository.create({ id: \"session\" });\n\t\t\tconst root = await session.appendMessage(createUserMessage(\"root\"));\n\t\t\tawait session.createLane(\"thread\", root);\n\t\t\tconst thread = session.view(\"thread\");\n\t\t\tconst [mainChild, threadChild] = await Promise.all([\n\t\t\t\tsession.appendMessage(createUserMessage(\"main\")),\n\t\t\t\tthread.appendMessage(createUserMessage(\"thread\")),\n\t\t\t]);\n\n\t\t\tstrictEqual(await session.getLeafId(), mainChild);\n\t\t\tstrictEqual(await thread.getLeafId(), threadChild);\n\t\t\tdeepStrictEqual(await entryIds(session.findEntriesOnBranch({ order: \"oldestFirst\" })), [root, mainChild]);\n\t\t\tdeepStrictEqual(await entryIds(thread.findEntriesOnBranch({ order: \"oldestFirst\" })), [root, threadChild]);\n\t\t\tconst empty = await repository.create({ id: \"empty\" });\n\t\t\tdeepStrictEqual(await empty.findEntriesOnBranch(), []);\n\t\t}),\n\n\t\tcreateCase(\n\t\t\tfactory,\n\t\t\t\"entries and lanes\",\n\t\t\t\"appends provisioned entries with their existing ids\",\n\t\t\tasync (repository) => {\n\t\t\t\tconst session = await repository.create({ id: \"session\" });\n\t\t\t\tconst entry = await session.appendEntry<CustomEntry>(\n\t\t\t\t\t{ type: \"custom\", id: \"provisioned\", customType: \"note\", data: { value: 1 } },\n\t\t\t\t\t\"main\",\n\t\t\t\t);\n\n\t\t\t\tstrictEqual(entry.customType, \"note\");\n\t\t\t\tdeepStrictEqual(\n\t\t\t\t\t{ id: entry.id, parentId: entry.parentId, seq: entry.seq },\n\t\t\t\t\t{ id: \"provisioned\", parentId: null, seq: 1 },\n\t\t\t\t);\n\t\t\t\tstrictEqual(await session.getLeafId(), \"provisioned\");\n\t\t\t},\n\t\t),\n\n\t\tcreateCase(factory, \"entries and lanes\", \"persists tool-result termination decisions\", async (repository) => {\n\t\t\tconst session = await repository.create({ id: \"session\" });\n\t\t\tconst entry = await session.appendEntry<MessageEntry>(\n\t\t\t\t{\n\t\t\t\t\ttype: \"message\",\n\t\t\t\t\tid: \"tool-result\",\n\t\t\t\t\tmessage: {\n\t\t\t\t\t\trole: \"toolResult\",\n\t\t\t\t\t\ttoolCallId: \"call-1\",\n\t\t\t\t\t\ttoolName: \"example\",\n\t\t\t\t\t\tcontent: [{ type: \"text\", text: \"done\" }],\n\t\t\t\t\t\tisError: false,\n\t\t\t\t\t\ttimestamp: 1,\n\t\t\t\t\t},\n\t\t\t\t\tterminate: true,\n\t\t\t\t},\n\t\t\t\t\"main\",\n\t\t\t);\n\n\t\t\tstrictEqual(entry.terminate, true);\n\t\t\tconst stored = await session.getEntry(entry.id);\n\t\t\tif (stored?.type !== \"message\") throw new Error(\"Expected message entry\");\n\t\t\tstrictEqual(stored.terminate, true);\n\t\t\tdeepStrictEqual(await session.findEntries(), [entry]);\n\t\t\tdeepStrictEqual(await session.getLog(), [{ kind: \"entry\", seq: entry.seq, entry }]);\n\t\t}),\n\n\t\tcreateCase(\n\t\t\tfactory,\n\t\t\t\"validation and immutability\",\n\t\t\t\"rejects non-JSON entries before storage mutation\",\n\t\t\tasync (repository) => {\n\t\t\t\tconst session = await repository.create({ id: \"session\" });\n\t\t\t\tconst cyclic: { self?: unknown } = {};\n\t\t\t\tcyclic.self = cyclic;\n\n\t\t\t\tfor (const data of [\n\t\t\t\t\t{ value: undefined },\n\t\t\t\t\t[undefined],\n\t\t\t\t\t{ value: 1n },\n\t\t\t\t\t{ value: Number.NaN },\n\t\t\t\t\t{ value: new Map() },\n\t\t\t\t\tcyclic,\n\t\t\t\t]) {\n\t\t\t\t\tawait rejectsWithCode(session.appendCustomEntry(\"invalid\", data), \"invalid_payload\");\n\t\t\t\t}\n\n\t\t\t\tstrictEqual(await session.getLeafId(), null);\n\t\t\t\tdeepStrictEqual(await session.findEntries(), []);\n\t\t\t\tdeepStrictEqual(await session.getLog(), []);\n\t\t\t\tconst validId = await session.appendCustomEntry(\"valid\", { value: 1 });\n\t\t\t\tstrictEqual((await session.getEntry(validId))?.seq, 1);\n\t\t\t},\n\t\t),\n\n\t\tcreateCase(\n\t\t\tfactory,\n\t\t\t\"validation and immutability\",\n\t\t\t\"rejects non-JSON records before storage mutation\",\n\t\t\tasync (repository) => {\n\t\t\t\tconst session = await repository.create({ id: \"session\" });\n\t\t\t\tfor (const [id, value] of [\n\t\t\t\t\t[\"undefined-record\", undefined],\n\t\t\t\t\t[\"bigint-record\", 1n],\n\t\t\t\t] as const) {\n\t\t\t\t\tawait rejectsWithCode(\n\t\t\t\t\t\tsession.appendRecord({\n\t\t\t\t\t\t\ttype: \"tool_started\",\n\t\t\t\t\t\t\tid,\n\t\t\t\t\t\t\tlane: \"main\",\n\t\t\t\t\t\t\trunId: \"run\",\n\t\t\t\t\t\t\tassistantEntryId: \"assistant\",\n\t\t\t\t\t\t\ttoolIndex: 0,\n\t\t\t\t\t\t\ttoolCallId: \"call\",\n\t\t\t\t\t\t\ttoolName: \"example\",\n\t\t\t\t\t\t\teffectiveArgs: { value },\n\t\t\t\t\t\t\tresultEntryId: \"result\",\n\t\t\t\t\t\t\treplay: \"never\",\n\t\t\t\t\t\t}),\n\t\t\t\t\t\t\"invalid_payload\",\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tdeepStrictEqual(await session.findRecords(), []);\n\t\t\t\tdeepStrictEqual(await session.getLog(), []);\n\t\t\t\tstrictEqual(\n\t\t\t\t\t(await session.appendRecord(operationStarted(\"valid-record\", { lane: \"main\", kind: \"run\" }))).seq,\n\t\t\t\t\t1,\n\t\t\t\t);\n\t\t\t},\n\t\t),\n\n\t\tcreateCase(factory, \"entries and lanes\", \"linearizes concurrent writes across two lanes\", async (repository) => {\n\t\t\tconst session = await repository.create({ id: \"session\" });\n\t\t\tawait session.appendEntry<MessageEntry>(\n\t\t\t\t{ type: \"message\", id: \"root\", message: createUserMessage(\"root\") },\n\t\t\t\t\"main\",\n\t\t\t);\n\t\t\tawait session.createLane(\"thread\", \"root\");\n\t\t\tconst completionOrder: string[] = [];\n\t\t\tconst writes = [\n\t\t\t\tsession.appendEntry<CustomEntry>({ type: \"custom\", id: \"main-1\", customType: \"note\" }, \"main\"),\n\t\t\t\tsession.appendEntry<CustomEntry>({ type: \"custom\", id: \"thread-1\", customType: \"note\" }, \"thread\"),\n\t\t\t\tsession.appendEntry<CustomEntry>({ type: \"custom\", id: \"main-2\", customType: \"note\" }, \"main\"),\n\t\t\t\tsession.appendEntry<CustomEntry>({ type: \"custom\", id: \"thread-2\", customType: \"note\" }, \"thread\"),\n\t\t\t].map((write) =>\n\t\t\t\twrite.then((entry) => {\n\t\t\t\t\tcompletionOrder.push(entry.id);\n\t\t\t\t\treturn entry;\n\t\t\t\t}),\n\t\t\t);\n\t\t\tconst entries = await Promise.all(writes);\n\t\t\tconst commitOrder = [...entries].sort((left, right) => left.seq - right.seq).map((entry) => entry.id);\n\n\t\t\tstrictEqual(new Set(entries.map((entry) => entry.seq)).size, entries.length);\n\t\t\tdeepStrictEqual(completionOrder, commitOrder);\n\t\t\tconst concurrentIds = new Set(entries.map((entry) => entry.id));\n\t\t\tdeepStrictEqual(\n\t\t\t\t(await session.getLog()).flatMap((item) =>\n\t\t\t\t\titem.kind === \"entry\" && concurrentIds.has(item.entry.id) ? [item.entry.id] : [],\n\t\t\t\t),\n\t\t\t\tcommitOrder,\n\t\t\t);\n\t\t\tconst sequences = (await session.getLog()).map((item) => item.seq);\n\t\t\tdeepStrictEqual(\n\t\t\t\tsequences,\n\t\t\t\t[...sequences].sort((left, right) => left - right),\n\t\t\t);\n\t\t}),\n\n\t\tcreateCase(factory, \"repository and forks\", \"creates lists and opens sessions\", async (repository) => {\n\t\t\tconst session = await repository.create({ id: \"one\" });\n\t\t\tconst entryId = await session.appendMessage(createUserMessage(\"persisted\"));\n\t\t\tconst metadata = await session.getMetadata();\n\n\t\t\tconst listed = await repository.list();\n\t\t\tstrictEqual(listed.length, 1);\n\t\t\tstrictEqual(listed[0]?.id, metadata.id);\n\t\t\tstrictEqual(listed[0]?.createdAt, metadata.createdAt);\n\t\t\tstrictEqual(listed[0]?.parentSessionId, metadata.parentSessionId);\n\t\t\tdeepStrictEqual(await entryIds((await repository.open(metadata)).findEntries()), [entryId]);\n\t\t\tawait rejectsWithCode(repository.create({ id: \"one\" }), \"already_exists\");\n\t\t}),\n\n\t\tcreateCase(factory, \"repository and forks\", \"deletes sessions idempotently\", async (repository) => {\n\t\t\tconst session = await repository.create({ id: \"one\" });\n\t\t\tconst metadata = await session.getMetadata();\n\n\t\t\tawait repository.delete(metadata);\n\t\t\tawait rejectsWithCode(repository.open(metadata), \"not_found\");\n\t\t\tawait repository.delete(metadata);\n\t\t}),\n\n\t\tcreateCase(\n\t\t\tfactory,\n\t\t\t\"repository and forks\",\n\t\t\t\"forks one branch with selected facts and no records\",\n\t\t\tasync (repository) => {\n\t\t\t\tconst source = await repository.create({ id: \"source\" });\n\t\t\t\tconst root = await source.appendMessage(createUserMessage(\"root\"));\n\t\t\t\tconst shared = await source.appendMessage(createAssistantMessage(\"shared\"));\n\t\t\t\tawait source.createLane(\"thread\", shared);\n\t\t\t\tconst threadChild = await source.view(\"thread\").appendMessage(createUserMessage(\"thread\"));\n\t\t\t\tconst mainChild = await source.appendMessage(createUserMessage(\"main\"));\n\t\t\t\tawait source.setName(\"Source\");\n\t\t\t\tawait source.setLabel(shared, \"copied\");\n\t\t\t\tawait source.setLabel(threadChild, \"excluded\");\n\t\t\t\tawait source.appendRecord(operationStarted(\"run\", { lane: \"main\", kind: \"run\" }));\n\t\t\t\tawait source.appendRecord({\n\t\t\t\t\ttype: \"usage\",\n\t\t\t\t\tid: \"source-usage\",\n\t\t\t\t\tlane: \"main\",\n\t\t\t\t\tcause: \"adjustment\",\n\t\t\t\t\tusage: {\n\t\t\t\t\t\tinput: 10,\n\t\t\t\t\t\toutput: 5,\n\t\t\t\t\t\tcacheRead: 3,\n\t\t\t\t\t\tcacheWrite: 2,\n\t\t\t\t\t\ttotalTokens: 20,\n\t\t\t\t\t\tcost: { input: 1, output: 2, cacheRead: 3, cacheWrite: 4, total: 10 },\n\t\t\t\t\t},\n\t\t\t\t});\n\n\t\t\t\tconst fork = await repository.fork(await source.getMetadata(), {\n\t\t\t\t\tscope: \"branch\",\n\t\t\t\t\tentryId: mainChild,\n\t\t\t\t\tposition: \"at\",\n\t\t\t\t\tid: \"branch-fork\",\n\t\t\t\t});\n\n\t\t\t\tdeepStrictEqual(await entryIds(fork.findEntries({ order: \"oldestFirst\" })), [root, shared, mainChild]);\n\t\t\t\tdeepStrictEqual(await fork.getLanes(), [{ lane: \"main\", leafId: mainChild }]);\n\t\t\t\tstrictEqual(await fork.getName(), \"Source\");\n\t\t\t\tstrictEqual(await fork.getLabel(shared), \"copied\");\n\t\t\t\tstrictEqual(await fork.getLabel(threadChild), undefined);\n\t\t\t\tdeepStrictEqual(await fork.findRecords(), []);\n\t\t\t\tdeepStrictEqual(await fork.getStats(), {\n\t\t\t\t\tmessageCount: 3,\n\t\t\t\t\tcachedTokens: 0,\n\t\t\t\t\tuncachedTokens: 0,\n\t\t\t\t\ttotalTokens: 0,\n\t\t\t\t\tcostTotal: 0,\n\t\t\t\t});\n\t\t\t\tawait fork.appendMessage(createUserMessage(\"after fork\"));\n\t\t\t\tstrictEqual((await fork.getStats()).messageCount, 4);\n\t\t\t\tconst metadata = await fork.getMetadata();\n\t\t\t\tdeepStrictEqual(\n\t\t\t\t\t{ id: metadata.id, parentSessionId: metadata.parentSessionId },\n\t\t\t\t\t{ id: \"branch-fork\", parentSessionId: \"source\" },\n\t\t\t\t);\n\t\t\t},\n\t\t),\n\n\t\tcreateCase(factory, \"repository and forks\", \"forks a complete tree with lanes and facts\", async (repository) => {\n\t\t\tconst source = await repository.create({ id: \"source\" });\n\t\t\tconst root = await source.appendMessage(createUserMessage(\"root\"));\n\t\t\tawait source.createLane(\"thread\", root);\n\t\t\tconst mainChild = await source.appendMessage(createUserMessage(\"main\"));\n\t\t\tconst threadChild = await source.view(\"thread\").appendMessage(createUserMessage(\"thread\"));\n\t\t\tawait source.setLabel(threadChild, \"thread-tip\");\n\n\t\t\tconst fork = await repository.fork(await source.getMetadata(), { scope: \"tree\", id: \"tree-fork\" });\n\t\t\tdeepStrictEqual(await entryIds(fork.findEntries({ order: \"oldestFirst\" })), [root, mainChild, threadChild]);\n\t\t\tdeepStrictEqual(await fork.getLanes(), [\n\t\t\t\t{ lane: \"main\", leafId: mainChild },\n\t\t\t\t{ lane: \"thread\", leafId: threadChild },\n\t\t\t]);\n\t\t\tstrictEqual(await fork.getLabel(threadChild), \"thread-tip\");\n\t\t\tstrictEqual((await fork.getStats()).messageCount, 3);\n\t\t\tdeepStrictEqual(\n\t\t\t\t(await fork.getLog()).filter((item) => item.kind === \"lane\"),\n\t\t\t\t[\n\t\t\t\t\t{ kind: \"lane\", seq: 4, lane: \"main\", leafId: mainChild },\n\t\t\t\t\t{ kind: \"lane\", seq: 5, lane: \"thread\", leafId: threadChild },\n\t\t\t\t],\n\t\t\t);\n\t\t}),\n\n\t\tcreateCase(\n\t\t\tfactory,\n\t\t\t\"repository and forks\",\n\t\t\t\"forks before an entry without modifying the source\",\n\t\t\tasync (repository) => {\n\t\t\t\tconst source = await repository.create({ id: \"source\" });\n\t\t\t\tconst root = await source.appendMessage(createUserMessage(\"root\"));\n\t\t\t\tconst tail = await source.appendMessage(createUserMessage(\"tail\"));\n\t\t\t\tconst fork = await repository.fork(await source.getMetadata(), { entryId: tail, id: \"fork\" });\n\n\t\t\t\tdeepStrictEqual(await entryIds(fork.findEntries({ order: \"oldestFirst\" })), [root]);\n\t\t\t\tstrictEqual(await fork.getLeafId(), root);\n\t\t\t\tstrictEqual(await source.getLeafId(), tail);\n\t\t\t\tconst beforeDefaultTarget = await repository.fork(await source.getMetadata(), {\n\t\t\t\t\tposition: \"before\",\n\t\t\t\t\tid: \"before-default-target\",\n\t\t\t\t});\n\t\t\t\tdeepStrictEqual(await entryIds(beforeDefaultTarget.findEntries({ order: \"oldestFirst\" })), [root]);\n\t\t\t\tstrictEqual(await beforeDefaultTarget.getLeafId(), root);\n\n\t\t\t\tconst atDefaultTarget = await repository.fork(await source.getMetadata(), {\n\t\t\t\t\tposition: \"at\",\n\t\t\t\t\tid: \"at-default-target\",\n\t\t\t\t});\n\t\t\t\tdeepStrictEqual(await entryIds(atDefaultTarget.findEntries({ order: \"oldestFirst\" })), [root, tail]);\n\t\t\t\tstrictEqual(await atDefaultTarget.getLeafId(), tail);\n\t\t\t\tawait rejectsWithCode(\n\t\t\t\t\trepository.fork(await source.getMetadata(), { entryId: \"missing\" }),\n\t\t\t\t\t\"invalid_fork_target\",\n\t\t\t\t);\n\t\t\t},\n\t\t),\n\n\t\tcreateCase(factory, \"repository and forks\", \"validates the default fork target\", async (repository) => {\n\t\t\tconst source = await repository.create({ id: \"source-with-custom-leaf\" });\n\t\t\tawait source.appendCustomEntry(\"not-a-message\");\n\n\t\t\tawait rejectsWithCode(repository.fork(await source.getMetadata(), { id: \"fork\" }), \"invalid_fork_target\");\n\t\t}),\n\t];\n}\n"]}
1
+ {"version":3,"file":"conformance.js","sourceRoot":"","sources":["../../../../src/harness/session/testing/conformance.ts"],"names":[],"mappings":"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","sourcesContent":["import { deepStrictEqual, ok, rejects, strictEqual } from \"node:assert/strict\";\nimport type { AgentMessage } from \"../../../types.ts\";\nimport type {\n\tCustomEntry,\n\tEntry,\n\tMessageEntry,\n\tNewRecord,\n\tOperationStartedRecord,\n\tSessionErrorCode,\n\tSessionRepo,\n} from \"../types.ts\";\nimport type { SessionBackendConformanceCase, SessionBackendFixtureFactory } from \"./types.ts\";\n\nfunction createUserMessage(text: string): AgentMessage {\n\treturn {\n\t\trole: \"user\",\n\t\tcontent: [{ type: \"text\", text }],\n\t\ttimestamp: 1,\n\t};\n}\n\nfunction createAssistantMessage(text: string): AgentMessage {\n\treturn {\n\t\trole: \"assistant\",\n\t\tcontent: [{ type: \"text\", text }],\n\t\tapi: \"anthropic-messages\",\n\t\tprovider: \"anthropic\",\n\t\tmodel: \"claude-sonnet-4-5\",\n\t\tusage: {\n\t\t\tinput: 0,\n\t\t\toutput: 0,\n\t\t\tcacheRead: 0,\n\t\t\tcacheWrite: 0,\n\t\t\ttotalTokens: 0,\n\t\t\tcost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 },\n\t\t},\n\t\tstopReason: \"stop\",\n\t\ttimestamp: 1,\n\t};\n}\n\nfunction operationStarted(\n\tid: string,\n\t{ lane, kind }: { lane: string; kind: OperationStartedRecord[\"intent\"][\"kind\"] },\n): NewRecord<OperationStartedRecord> {\n\tlet intent: OperationStartedRecord[\"intent\"];\n\tswitch (kind) {\n\t\tcase \"run\":\n\t\t\tintent = { kind, originalPrompt: [], initialMessages: [] };\n\t\t\tbreak;\n\t\tcase \"compaction\":\n\t\t\tintent = { kind, resultEntryId: `${id}-result` };\n\t\t\tbreak;\n\t\tcase \"navigation\":\n\t\t\tintent = { kind, targetId: null, summarize: false };\n\t\t\tbreak;\n\t}\n\treturn { type: \"operation_started\", id, lane, sourceLeafId: null, intent };\n}\n\nasync function entryIds(entries: Promise<Entry[]>): Promise<string[]> {\n\treturn (await entries).map((entry) => entry.id);\n}\n\nasync function rejectsWithCode(operation: Promise<unknown>, code: SessionErrorCode): Promise<void> {\n\tawait rejects(\n\t\toperation,\n\t\t(error: unknown) => typeof error === \"object\" && error !== null && \"code\" in error && error.code === code,\n\t\t`Expected SessionError with code ${code}`,\n\t);\n}\n\ntype ConformanceTest = (repository: SessionRepo) => Promise<void>;\n\nfunction createCase(\n\tfactory: SessionBackendFixtureFactory,\n\tgroup: string,\n\tname: string,\n\ttest: ConformanceTest,\n): SessionBackendConformanceCase {\n\treturn {\n\t\tgroup,\n\t\tname,\n\t\tasync run() {\n\t\t\tawait using fixture = await factory();\n\t\t\tawait test(fixture.repository);\n\t\t},\n\t};\n}\n\n/** Creates the session backend conformance cases. Each case creates and disposes its own fixture. */\nexport function createSessionBackendConformance(\n\tfactory: SessionBackendFixtureFactory,\n): readonly SessionBackendConformanceCase[] {\n\treturn [\n\t\tcreateCase(\n\t\t\tfactory,\n\t\t\t\"entries and lanes\",\n\t\t\t\"assigns parents and one sequence across every mutation\",\n\t\t\tasync (repository) => {\n\t\t\t\tconst session = await repository.create({ id: \"session\" });\n\t\t\t\tconst root = await session.appendEntry<MessageEntry>(\n\t\t\t\t\t{ type: \"message\", id: \"root\", message: createUserMessage(\"root\") },\n\t\t\t\t\t\"main\",\n\t\t\t\t);\n\t\t\t\tawait session.createLane(\"thread\", root.id);\n\t\t\t\tconst child = await session.appendEntry<CustomEntry>(\n\t\t\t\t\t{ type: \"custom\", id: \"child\", customType: \"note\", data: { value: 1 } },\n\t\t\t\t\t\"thread\",\n\t\t\t\t);\n\t\t\t\tconst record = await session.appendRecord(operationStarted(\"run\", { lane: \"thread\", kind: \"run\" }));\n\t\t\t\tawait session.setName(\"Example\");\n\t\t\t\tawait session.setLabel(root.id, \"checkpoint\");\n\t\t\t\tawait session.moveLane(\"main\", child.id);\n\n\t\t\t\tdeepStrictEqual({ parentId: root.parentId, seq: root.seq }, { parentId: null, seq: 1 });\n\t\t\t\tdeepStrictEqual({ parentId: child.parentId, seq: child.seq }, { parentId: \"root\", seq: 3 });\n\t\t\t\tstrictEqual(record.seq, 4);\n\t\t\t\tfor (const timestamp of [root.timestamp, child.timestamp, record.timestamp]) {\n\t\t\t\t\tok(\n\t\t\t\t\t\tNumber.isSafeInteger(timestamp) && timestamp >= 0,\n\t\t\t\t\t\t\"storage-assigned timestamps must be Unix milliseconds\",\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tdeepStrictEqual(\n\t\t\t\t\t(await session.getLog()).map((item) => [item.kind, item.seq]),\n\t\t\t\t\t[\n\t\t\t\t\t\t[\"entry\", 1],\n\t\t\t\t\t\t[\"lane\", 2],\n\t\t\t\t\t\t[\"entry\", 3],\n\t\t\t\t\t\t[\"record\", 4],\n\t\t\t\t\t\t[\"fact\", 5],\n\t\t\t\t\t\t[\"fact\", 6],\n\t\t\t\t\t\t[\"lane\", 7],\n\t\t\t\t\t],\n\t\t\t\t);\n\t\t\t\tdeepStrictEqual(await session.getLanes(), [\n\t\t\t\t\t{ lane: \"main\", leafId: \"child\" },\n\t\t\t\t\t{ lane: \"thread\", leafId: \"child\" },\n\t\t\t\t]);\n\t\t\t},\n\t\t),\n\n\t\tcreateCase(\n\t\t\tfactory,\n\t\t\t\"records and log\",\n\t\t\t\"commits records and lane moves as separate mutations\",\n\t\t\tasync (repository) => {\n\t\t\t\tconst session = await repository.create({ id: \"session\" });\n\t\t\t\tconst root = await session.appendEntry<MessageEntry>(\n\t\t\t\t\t{ type: \"message\", id: \"root\", message: createUserMessage(\"root\") },\n\t\t\t\t\t\"main\",\n\t\t\t\t);\n\t\t\t\tconst finished = await session.appendRecord({\n\t\t\t\t\ttype: \"operation_finished\",\n\t\t\t\t\tid: \"finish\",\n\t\t\t\t\tlane: \"main\",\n\t\t\t\t\trunId: \"run\",\n\t\t\t\t\toutcome: \"completed\",\n\t\t\t\t});\n\n\t\t\t\tstrictEqual(finished.seq, 2);\n\t\t\t\tdeepStrictEqual(await session.getLanes(), [{ lane: \"main\", leafId: \"root\" }]);\n\t\t\t\tawait session.moveLane(\"main\", null);\n\t\t\t\tdeepStrictEqual(await session.getLanes(), [{ lane: \"main\", leafId: null }]);\n\t\t\t\tdeepStrictEqual(await session.getLog(), [\n\t\t\t\t\t{ kind: \"entry\", seq: 1, entry: root },\n\t\t\t\t\t{ kind: \"record\", seq: 2, record: finished },\n\t\t\t\t\t{ kind: \"lane\", seq: 3, lane: \"main\", leafId: null },\n\t\t\t\t]);\n\n\t\t\t\tawait rejectsWithCode(session.moveLane(\"main\", \"missing\"), \"not_found\");\n\t\t\t\tstrictEqual((await session.findRecords()).length, 1);\n\t\t\t\tdeepStrictEqual(\n\t\t\t\t\t(await session.getLog()).map((item) => item.seq),\n\t\t\t\t\t[1, 2, 3],\n\t\t\t\t);\n\t\t\t},\n\t\t),\n\n\t\tcreateCase(factory, \"entries and lanes\", \"rejects duplicate ids without changing state\", async (repository) => {\n\t\t\tconst session = await repository.create({ id: \"session\" });\n\t\t\tawait session.appendEntry<MessageEntry>(\n\t\t\t\t{ type: \"message\", id: \"shared\", message: createUserMessage(\"root\") },\n\t\t\t\t\"main\",\n\t\t\t);\n\t\t\tawait rejectsWithCode(\n\t\t\t\tsession.appendRecord(operationStarted(\"shared\", { lane: \"main\", kind: \"run\" })),\n\t\t\t\t\"already_exists\",\n\t\t\t);\n\t\t\tawait session.appendRecord(operationStarted(\"run\", { lane: \"main\", kind: \"run\" }));\n\t\t\tawait rejectsWithCode(\n\t\t\t\tsession.appendEntry<CustomEntry>({ type: \"custom\", id: \"run\", customType: \"note\" }, \"main\"),\n\t\t\t\t\"already_exists\",\n\t\t\t);\n\t\t\tdeepStrictEqual(\n\t\t\t\t(await session.getLog()).map((item) => item.seq),\n\t\t\t\t[1, 2],\n\t\t\t);\n\t\t}),\n\n\t\tcreateCase(factory, \"entries and lanes\", \"isolates lanes while sharing the tree\", async (repository) => {\n\t\t\tconst session = await repository.create({ id: \"session\" });\n\t\t\tawait session.appendEntry<MessageEntry>(\n\t\t\t\t{ type: \"message\", id: \"root\", message: createUserMessage(\"root\") },\n\t\t\t\t\"main\",\n\t\t\t);\n\t\t\tawait session.createLane(\"thread\", \"root\");\n\t\t\tawait session.appendEntry<MessageEntry>(\n\t\t\t\t{ type: \"message\", id: \"main-child\", message: createUserMessage(\"main\") },\n\t\t\t\t\"main\",\n\t\t\t);\n\t\t\tawait session.appendEntry<MessageEntry>(\n\t\t\t\t{ type: \"message\", id: \"thread-child\", message: createUserMessage(\"thread\") },\n\t\t\t\t\"thread\",\n\t\t\t);\n\n\t\t\tdeepStrictEqual(await session.getLanes(), [\n\t\t\t\t{ lane: \"main\", leafId: \"main-child\" },\n\t\t\t\t{ lane: \"thread\", leafId: \"thread-child\" },\n\t\t\t]);\n\t\t\tdeepStrictEqual(await entryIds(session.findEntriesOnBranch({ start: \"main-child\", order: \"oldestFirst\" })), [\n\t\t\t\t\"root\",\n\t\t\t\t\"main-child\",\n\t\t\t]);\n\t\t\tdeepStrictEqual(await entryIds(session.findEntriesOnBranch({ start: \"thread-child\", order: \"oldestFirst\" })), [\n\t\t\t\t\"root\",\n\t\t\t\t\"thread-child\",\n\t\t\t]);\n\t\t}),\n\n\t\tcreateCase(factory, \"queries and facts\", \"rejects invalid queries before empty reads\", async (repository) => {\n\t\t\tconst session = await repository.create({ id: \"invalid-queries\" });\n\t\t\tawait session.createLane(\"thread\", null);\n\t\t\tconst thread = session.view(\"thread\");\n\n\t\t\tawait rejectsWithCode(session.findEntries({ limit: 0 }), \"invalid_query\");\n\t\t\tawait rejectsWithCode(session.findEntry({ limit: 0 }), \"invalid_query\");\n\t\t\tawait rejectsWithCode(session.findEntriesOnBranch({ limit: 0 }), \"invalid_query\");\n\t\t\tawait rejectsWithCode(thread.findEntriesOnBranch({ cursor: { afterSeq: -1 } }), \"invalid_query\");\n\t\t\tawait rejectsWithCode(thread.findEntryOnBranch({ limit: 0 }), \"invalid_query\");\n\t\t\tawait rejectsWithCode(session.findRecords({ limit: 0 }), \"invalid_query\");\n\t\t\tawait rejectsWithCode(session.findRecords({ operationKind: \"run\" }), \"invalid_query\");\n\t\t\tawait rejectsWithCode(session.findRecords({ type: \"step_attempt\", operationKind: \"run\" }), \"invalid_query\");\n\t\t\tawait rejectsWithCode(session.findOpenOperations(\"main\", { limit: 0 }), \"invalid_query\");\n\t\t\tawait rejectsWithCode(session.findOpenOperations(\"main\", { limit: -1 }), \"invalid_query\");\n\t\t\tawait rejectsWithCode(session.getLog({ afterSeq: -1 }), \"invalid_query\");\n\t\t}),\n\n\t\tcreateCase(\n\t\t\tfactory,\n\t\t\t\"queries and facts\",\n\t\t\t\"supports bounded filtered and cursor-based queries\",\n\t\t\tasync (repository) => {\n\t\t\t\tconst session = await repository.create({ id: \"session\" });\n\t\t\t\tawait session.appendEntry<MessageEntry>(\n\t\t\t\t\t{ type: \"message\", id: \"root\", message: createUserMessage(\"root\") },\n\t\t\t\t\t\"main\",\n\t\t\t\t);\n\t\t\t\tawait session.appendEntry<CustomEntry>(\n\t\t\t\t\t{ type: \"custom\", id: \"old-note\", customType: \"note\", data: 1 },\n\t\t\t\t\t\"main\",\n\t\t\t\t);\n\t\t\t\tawait session.appendEntry(\n\t\t\t\t\t{ type: \"compaction\", id: \"compact\", summary: \"summary\", retainedTail: [], tokensBefore: 10 },\n\t\t\t\t\t\"main\",\n\t\t\t\t);\n\t\t\t\tawait session.appendEntry<CustomEntry>(\n\t\t\t\t\t{ type: \"custom\", id: \"new-note\", customType: \"note\", data: 2 },\n\t\t\t\t\t\"main\",\n\t\t\t\t);\n\t\t\t\tawait session.appendEntry<MessageEntry>(\n\t\t\t\t\t{ type: \"message\", id: \"tail\", message: createAssistantMessage(\"tail\") },\n\t\t\t\t\t\"main\",\n\t\t\t\t);\n\n\t\t\t\tdeepStrictEqual(await entryIds(session.findEntries()), [\"tail\", \"new-note\", \"compact\", \"old-note\", \"root\"]);\n\t\t\t\tdeepStrictEqual(\n\t\t\t\t\tawait entryIds(session.findEntries({ order: \"oldestFirst\", cursor: { afterSeq: 2 }, limit: 2 })),\n\t\t\t\t\t[\"compact\", \"new-note\"],\n\t\t\t\t);\n\t\t\t\tdeepStrictEqual(await entryIds(session.findEntries({ customType: \"note\" })), [\"new-note\", \"old-note\"]);\n\t\t\t\tdeepStrictEqual(\n\t\t\t\t\tawait entryIds(session.findEntriesOnBranch({ start: \"tail\", customType: \"note\", limit: 1 })),\n\t\t\t\t\t[\"new-note\"],\n\t\t\t\t);\n\t\t\t\tdeepStrictEqual(\n\t\t\t\t\tawait entryIds(\n\t\t\t\t\t\tsession.findEntriesOnBranch({ start: \"tail\", stopAtType: \"compaction\", type: \"message\" }),\n\t\t\t\t\t),\n\t\t\t\t\t[\"tail\"],\n\t\t\t\t);\n\t\t\t\tdeepStrictEqual(\n\t\t\t\t\tawait entryIds(session.findEntriesOnBranch({ start: \"tail\", stopAtId: \"tail\", type: \"custom\" })),\n\t\t\t\t\t[],\n\t\t\t\t);\n\t\t\t\tdeepStrictEqual(\n\t\t\t\t\tawait entryIds(\n\t\t\t\t\t\tsession.findEntriesOnBranch({ start: \"tail\", stopAtType: \"custom\", order: \"oldestFirst\" }),\n\t\t\t\t\t),\n\t\t\t\t\t[\"root\", \"old-note\"],\n\t\t\t\t);\n\t\t\t\tawait rejectsWithCode(session.findEntries({ limit: 0 }), \"invalid_query\");\n\t\t\t\tawait rejectsWithCode(session.findEntriesOnBranch({ start: \"missing\" }), \"not_found\");\n\t\t\t},\n\t\t),\n\n\t\tcreateCase(\n\t\t\tfactory,\n\t\t\t\"records and log\",\n\t\t\t\"keeps lane names permanent with their recovery records\",\n\t\t\tasync (repository) => {\n\t\t\t\tconst session = await repository.create({ id: \"session\" });\n\t\t\t\tawait session.createLane(\"thread\", null);\n\t\t\t\tawait session.appendRecord(operationStarted(\"old-run\", { lane: \"thread\", kind: \"run\" }));\n\t\t\t\tawait session.appendRecord({\n\t\t\t\t\ttype: \"queue_enqueued\",\n\t\t\t\t\tid: \"old-next-run\",\n\t\t\t\t\tlane: \"thread\",\n\t\t\t\t\tqueue: \"nextRun\",\n\t\t\t\t\ttarget: { type: \"message\", id: \"queued-message\", message: createUserMessage(\"queued\") },\n\t\t\t\t});\n\n\t\t\t\tdeepStrictEqual(\n\t\t\t\t\t(await session.findRecords({ lane: \"thread\" })).map((record) => record.id),\n\t\t\t\t\t[\"old-next-run\", \"old-run\"],\n\t\t\t\t);\n\t\t\t\tdeepStrictEqual(\n\t\t\t\t\t(await session.getLog()).flatMap((item) => (item.kind === \"record\" ? [item.record.id] : [])),\n\t\t\t\t\t[\"old-run\", \"old-next-run\"],\n\t\t\t\t);\n\t\t\t\tawait rejectsWithCode(session.createLane(\"thread\", null), \"already_exists\");\n\t\t\t},\n\t\t),\n\n\t\tcreateCase(\n\t\t\tfactory,\n\t\t\t\"records and log\",\n\t\t\t\"persists queue cancellation without consuming its target\",\n\t\t\tasync (repository) => {\n\t\t\t\tconst session = await repository.create({ id: \"session\" });\n\t\t\t\tconst enqueued = await session.appendRecord({\n\t\t\t\t\ttype: \"queue_enqueued\",\n\t\t\t\t\tid: \"enqueue\",\n\t\t\t\t\tlane: \"main\",\n\t\t\t\t\tqueue: \"nextRun\",\n\t\t\t\t\ttarget: { type: \"message\", id: \"queued-message\", message: createUserMessage(\"queued\") },\n\t\t\t\t});\n\t\t\t\tconst cancelled = await session.appendRecord({\n\t\t\t\t\ttype: \"queue_cancelled\",\n\t\t\t\t\tid: \"cancel\",\n\t\t\t\t\tlane: \"main\",\n\t\t\t\t\tentryId: \"queued-message\",\n\t\t\t\t});\n\t\t\t\tdeepStrictEqual({ seq: cancelled.seq, entryId: cancelled.entryId }, { seq: 2, entryId: \"queued-message\" });\n\t\t\t\tstrictEqual(\"runId\" in cancelled, false);\n\t\t\t\tstrictEqual(await session.getEntry(\"queued-message\"), undefined);\n\t\t\t\tconst cancellations = await session.findRecords({ type: \"queue_cancelled\" });\n\t\t\t\tstrictEqual(cancellations[0]?.entryId, \"queued-message\");\n\t\t\t\tdeepStrictEqual(cancellations, [cancelled]);\n\t\t\t\tdeepStrictEqual(await session.getLog(), [\n\t\t\t\t\t{ kind: \"record\", seq: enqueued.seq, record: enqueued },\n\t\t\t\t\t{ kind: \"record\", seq: cancelled.seq, record: cancelled },\n\t\t\t\t]);\n\t\t\t},\n\t\t),\n\n\t\tcreateCase(\n\t\t\tfactory,\n\t\t\t\"records and log\",\n\t\t\t\"filters records by lane type run sequence and order\",\n\t\t\tasync (repository) => {\n\t\t\t\tconst session = await repository.create({ id: \"session\" });\n\t\t\t\tawait session.appendRecord(operationStarted(\"run-1\", { lane: \"main\", kind: \"run\" }));\n\t\t\t\tawait session.appendRecord({\n\t\t\t\t\ttype: \"step_attempt\",\n\t\t\t\t\tid: \"attempt-1\",\n\t\t\t\t\tlane: \"main\",\n\t\t\t\t\trunId: \"run-1\",\n\t\t\t\t\tstep: \"assistant\",\n\t\t\t\t\tattempt: 1,\n\t\t\t\t\tresultEntryId: \"assistant-1\",\n\t\t\t\t});\n\t\t\t\tawait session.createLane(\"thread\", null);\n\t\t\t\tawait session.appendRecord(operationStarted(\"run-2\", { lane: \"thread\", kind: \"run\" }));\n\t\t\t\tawait session.appendRecord({\n\t\t\t\t\ttype: \"step_attempt\",\n\t\t\t\t\tid: \"attempt-2\",\n\t\t\t\t\tlane: \"thread\",\n\t\t\t\t\trunId: \"run-2\",\n\t\t\t\t\tstep: \"assistant\",\n\t\t\t\t\tattempt: 1,\n\t\t\t\t\tresultEntryId: \"assistant-2\",\n\t\t\t\t});\n\n\t\t\t\tdeepStrictEqual(\n\t\t\t\t\t(await session.findRecords({ lane: \"thread\" })).map((record) => record.id),\n\t\t\t\t\t[\"attempt-2\", \"run-2\"],\n\t\t\t\t);\n\t\t\t\tdeepStrictEqual(\n\t\t\t\t\t(await session.findRecords({ type: \"step_attempt\", order: \"oldestFirst\" })).map((record) => record.id),\n\t\t\t\t\t[\"attempt-1\", \"attempt-2\"],\n\t\t\t\t);\n\t\t\t\tdeepStrictEqual(\n\t\t\t\t\t(await session.findRecords({ runId: \"run-1\", afterSeq: 1 })).map((record) => record.id),\n\t\t\t\t\t[\"attempt-1\"],\n\t\t\t\t);\n\t\t\t\tdeepStrictEqual(\n\t\t\t\t\t(await session.findRecords({ limit: 1 })).map((record) => record.id),\n\t\t\t\t\t[\"attempt-2\"],\n\t\t\t\t);\n\t\t\t},\n\t\t),\n\n\t\tcreateCase(factory, \"records and log\", \"filters operation starts by operation kind\", async (repository) => {\n\t\t\tconst session = await repository.create({ id: \"session\" });\n\t\t\tawait session.appendRecord(operationStarted(\"run-old\", { lane: \"main\", kind: \"run\" }));\n\t\t\tawait session.appendRecord({\n\t\t\t\ttype: \"operation_finished\",\n\t\t\t\tid: \"run-old-finished\",\n\t\t\t\tlane: \"main\",\n\t\t\t\trunId: \"run-old\",\n\t\t\t\toutcome: \"completed\",\n\t\t\t});\n\t\t\tawait session.appendRecord(operationStarted(\"compaction\", { lane: \"main\", kind: \"compaction\" }));\n\t\t\tawait session.appendRecord({\n\t\t\t\ttype: \"operation_finished\",\n\t\t\t\tid: \"compaction-finished\",\n\t\t\t\tlane: \"main\",\n\t\t\t\trunId: \"compaction\",\n\t\t\t\toutcome: \"completed\",\n\t\t\t});\n\t\t\tawait session.appendRecord(operationStarted(\"navigation\", { lane: \"main\", kind: \"navigation\" }));\n\t\t\tawait session.appendRecord({\n\t\t\t\ttype: \"operation_finished\",\n\t\t\t\tid: \"navigation-finished\",\n\t\t\t\tlane: \"main\",\n\t\t\t\trunId: \"navigation\",\n\t\t\t\toutcome: \"completed\",\n\t\t\t});\n\t\t\tawait session.appendRecord(operationStarted(\"run-new\", { lane: \"main\", kind: \"run\" }));\n\n\t\t\tdeepStrictEqual(\n\t\t\t\t(\n\t\t\t\t\tawait session.findRecords({\n\t\t\t\t\t\ttype: \"operation_started\",\n\t\t\t\t\t\toperationKind: \"run\",\n\t\t\t\t\t\torder: \"oldestFirst\",\n\t\t\t\t\t})\n\t\t\t\t).map((record) => record.id),\n\t\t\t\t[\"run-old\", \"run-new\"],\n\t\t\t);\n\t\t\tdeepStrictEqual(\n\t\t\t\t(\n\t\t\t\t\tawait session.findRecords({\n\t\t\t\t\t\ttype: \"operation_started\",\n\t\t\t\t\t\toperationKind: \"compaction\",\n\t\t\t\t\t})\n\t\t\t\t).map((record) => record.id),\n\t\t\t\t[\"compaction\"],\n\t\t\t);\n\t\t\tdeepStrictEqual(\n\t\t\t\t(\n\t\t\t\t\tawait session.findRecords({\n\t\t\t\t\t\ttype: \"operation_started\",\n\t\t\t\t\t\toperationKind: \"navigation\",\n\t\t\t\t\t})\n\t\t\t\t).map((record) => record.id),\n\t\t\t\t[\"navigation\"],\n\t\t\t);\n\t\t\tdeepStrictEqual(\n\t\t\t\t(\n\t\t\t\t\tawait session.findRecords({\n\t\t\t\t\t\ttype: \"operation_started\",\n\t\t\t\t\t\toperationKind: \"run\",\n\t\t\t\t\t\tlimit: 1,\n\t\t\t\t\t})\n\t\t\t\t).map((record) => record.id),\n\t\t\t\t[\"run-new\"],\n\t\t\t);\n\t\t}),\n\n\t\tcreateCase(factory, \"records and log\", \"tracks and enforces one open operation per lane\", async (repository) => {\n\t\t\tconst session = await repository.create({ id: \"session\" });\n\t\t\tdeepStrictEqual(await session.findOpenOperations(\"main\", { limit: 2 }), []);\n\n\t\t\tconst first = await session.appendRecord(operationStarted(\"first\", { lane: \"main\", kind: \"run\" }));\n\t\t\tdeepStrictEqual(await session.findOpenOperations(\"main\", { limit: 2 }), [first]);\n\t\t\tawait rejectsWithCode(\n\t\t\t\tsession.appendRecord(operationStarted(\"second\", { lane: \"main\", kind: \"run\" })),\n\t\t\t\t\"storage\",\n\t\t\t);\n\t\t\tdeepStrictEqual(await session.findOpenOperations(\"main\", { limit: 2 }), [first]);\n\n\t\t\tawait session.appendRecord({\n\t\t\t\ttype: \"operation_finished\",\n\t\t\t\tid: \"finish-first\",\n\t\t\t\tlane: \"main\",\n\t\t\t\trunId: first.id,\n\t\t\t\toutcome: \"completed\",\n\t\t\t});\n\t\t\tdeepStrictEqual(await session.findOpenOperations(\"main\", { limit: 2 }), []);\n\t\t}),\n\n\t\tcreateCase(\n\t\t\tfactory,\n\t\t\t\"records and log\",\n\t\t\t\"does not let an earlier finish close a later start\",\n\t\t\tasync (repository) => {\n\t\t\t\tconst session = await repository.create({ id: \"session\" });\n\t\t\t\tawait session.appendRecord({\n\t\t\t\t\ttype: \"operation_finished\",\n\t\t\t\t\tid: \"finish-before-start\",\n\t\t\t\t\tlane: \"main\",\n\t\t\t\t\trunId: \"run\",\n\t\t\t\t\toutcome: \"completed\",\n\t\t\t\t});\n\t\t\t\tconst started = await session.appendRecord(operationStarted(\"run\", { lane: \"main\", kind: \"run\" }));\n\t\t\t\tdeepStrictEqual(await session.findOpenOperations(\"main\", { limit: 2 }), [started]);\n\t\t\t},\n\t\t),\n\n\t\tcreateCase(factory, \"records and log\", \"scopes open operations by lane and limit\", async (repository) => {\n\t\t\tconst session = await repository.create({ id: \"session\" });\n\t\t\tawait session.createLane(\"thread\", null);\n\t\t\tconst mainRun = await session.appendRecord(operationStarted(\"main-run\", { lane: \"main\", kind: \"run\" }));\n\t\t\tconst threadNavigation = await session.appendRecord(\n\t\t\t\toperationStarted(\"thread-navigation\", { lane: \"thread\", kind: \"navigation\" }),\n\t\t\t);\n\n\t\t\tdeepStrictEqual(await session.findOpenOperations(\"main\"), [mainRun]);\n\t\t\tdeepStrictEqual(await session.findOpenOperations(\"main\", { limit: 1 }), [mainRun]);\n\t\t\tdeepStrictEqual(await session.findOpenOperations(\"thread\", { limit: 2 }), [threadNavigation]);\n\t\t}),\n\n\t\tcreateCase(\n\t\t\tfactory,\n\t\t\t\"validation and immutability\",\n\t\t\t\"returns immutable open-operation records\",\n\t\t\tasync (repository) => {\n\t\t\t\tconst session = await repository.create({ id: \"session\" });\n\t\t\t\tconst committed = await session.appendRecord(operationStarted(\"run\", { lane: \"main\", kind: \"run\" }));\n\t\t\t\tconst [read] = await session.findOpenOperations(\"main\");\n\t\t\t\tif (read?.intent.kind !== \"run\") throw new Error(\"Expected an open run operation\");\n\t\t\t\tread.intent.originalPrompt.push(createUserMessage(\"mutated\"));\n\n\t\t\t\tdeepStrictEqual(await session.findOpenOperations(\"main\"), [committed]);\n\t\t\t},\n\t\t),\n\n\t\tcreateCase(\n\t\t\tfactory,\n\t\t\t\"queries and facts\",\n\t\t\t\"keeps latest-value facts and computes ledger statistics across lanes\",\n\t\t\tasync (repository) => {\n\t\t\t\tconst session = await repository.create({ id: \"session\" });\n\t\t\t\tconst assistant = createAssistantMessage(\"answer\");\n\t\t\t\tif (assistant.role !== \"assistant\") throw new Error(\"Expected assistant message\");\n\t\t\t\tassistant.usage = {\n\t\t\t\t\tinput: 10,\n\t\t\t\t\toutput: 5,\n\t\t\t\t\tcacheRead: 3,\n\t\t\t\t\tcacheWrite: 2,\n\t\t\t\t\ttotalTokens: 20,\n\t\t\t\t\tcost: { input: 1, output: 2, cacheRead: 3, cacheWrite: 4, total: 10 },\n\t\t\t\t};\n\t\t\t\tawait session.appendEntry<MessageEntry>(\n\t\t\t\t\t{ type: \"message\", id: \"user\", message: createUserMessage(\"question\") },\n\t\t\t\t\t\"main\",\n\t\t\t\t);\n\t\t\t\tawait session.appendEntry<MessageEntry>({ type: \"message\", id: \"assistant\", message: assistant }, \"main\");\n\t\t\t\tawait session.appendRecord({\n\t\t\t\t\ttype: \"usage\",\n\t\t\t\t\tid: \"assistant-usage\",\n\t\t\t\t\tlane: \"main\",\n\t\t\t\t\tcause: \"assistant\",\n\t\t\t\t\trunId: \"run\",\n\t\t\t\t\tentryId: \"assistant\",\n\t\t\t\t\tattempt: 1,\n\t\t\t\t\tstopReason: \"stop\",\n\t\t\t\t\tusage: assistant.usage,\n\t\t\t\t});\n\t\t\t\tawait session.appendRecord({\n\t\t\t\t\ttype: \"usage\",\n\t\t\t\t\tid: \"deferred-usage\",\n\t\t\t\t\tlane: \"main\",\n\t\t\t\t\tcause: \"deferred_fetch\",\n\t\t\t\t\trunId: \"run\",\n\t\t\t\t\tentryId: \"deferred-result\",\n\t\t\t\t\tattempt: 1,\n\t\t\t\t\tstopReason: \"deferred\",\n\t\t\t\t\tusage: {\n\t\t\t\t\t\tinput: 0,\n\t\t\t\t\t\toutput: 0,\n\t\t\t\t\t\tcacheRead: 0,\n\t\t\t\t\t\tcacheWrite: 0,\n\t\t\t\t\t\ttotalTokens: 0,\n\t\t\t\t\t\tcost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 },\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t\tawait session.createLane(\"thread\", \"assistant\");\n\t\t\t\tawait session.appendRecord({\n\t\t\t\t\ttype: \"usage\",\n\t\t\t\t\tid: \"correction\",\n\t\t\t\t\tlane: \"thread\",\n\t\t\t\t\tcause: \"adjustment\",\n\t\t\t\t\tdetails: { reason: \"provider correction\" },\n\t\t\t\t\tusage: {\n\t\t\t\t\t\tinput: -2,\n\t\t\t\t\t\toutput: 0,\n\t\t\t\t\t\tcacheRead: 0,\n\t\t\t\t\t\tcacheWrite: 0,\n\t\t\t\t\t\ttotalTokens: -2,\n\t\t\t\t\t\tcost: { input: -0.5, output: 0, cacheRead: 0, cacheWrite: 0, total: -0.5 },\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t\tawait session.setName(\"First\");\n\t\t\t\tawait session.setName(\"Second\");\n\t\t\t\tawait session.setLabel(\"user\", \"keep\");\n\t\t\t\tawait session.setLabel(\"user\", undefined);\n\t\t\t\tawait rejectsWithCode(session.setLabel(\"missing\", \"checkpoint\"), \"not_found\");\n\n\t\t\t\tstrictEqual(await session.getName(), \"Second\");\n\t\t\t\tstrictEqual(await session.getLabel(\"user\"), undefined);\n\t\t\t\tconst usageRecords = await session.findRecords({ type: \"usage\", order: \"oldestFirst\" });\n\t\t\t\tdeepStrictEqual(\n\t\t\t\t\tusageRecords.map((record) => record.cause),\n\t\t\t\t\t[\"assistant\", \"deferred_fetch\", \"adjustment\"],\n\t\t\t\t);\n\t\t\t\tconst deferredUsage = usageRecords.find((record) => record.cause === \"deferred_fetch\");\n\t\t\t\tif (deferredUsage?.cause !== \"deferred_fetch\") throw new Error(\"Expected deferred usage record\");\n\t\t\t\tstrictEqual(deferredUsage.stopReason, \"deferred\");\n\t\t\t\tdeepStrictEqual(await session.getStats(), {\n\t\t\t\t\tmessageCount: 2,\n\t\t\t\t\tcachedTokens: 3,\n\t\t\t\t\tuncachedTokens: 10,\n\t\t\t\t\ttotalTokens: 18,\n\t\t\t\t\tcostTotal: 9.5,\n\t\t\t\t});\n\t\t\t},\n\t\t),\n\n\t\tcreateCase(factory, \"queries and facts\", \"clears session names durably\", async (repository) => {\n\t\t\tconst session = await repository.create({ id: \"session\" });\n\t\t\tawait session.setName(\"Temporary\");\n\t\t\tawait session.setName(undefined);\n\n\t\t\tstrictEqual(await session.getName(), undefined);\n\t\t\tdeepStrictEqual(await session.getLog(), [\n\t\t\t\t{ kind: \"fact\", seq: 1, fact: \"name\", name: \"Temporary\" },\n\t\t\t\t{ kind: \"fact\", seq: 2, fact: \"name\", name: undefined },\n\t\t\t]);\n\n\t\t\tconst metadata = await session.getMetadata();\n\t\t\tconst reopened = await repository.open(metadata);\n\t\t\tstrictEqual(await reopened.getName(), undefined);\n\t\t\tdeepStrictEqual(await reopened.getLog(), [\n\t\t\t\t{ kind: \"fact\", seq: 1, fact: \"name\", name: \"Temporary\" },\n\t\t\t\t{ kind: \"fact\", seq: 2, fact: \"name\", name: undefined },\n\t\t\t]);\n\n\t\t\tconst fork = await repository.fork(metadata, { id: \"fork\" });\n\t\t\tstrictEqual(await fork.getName(), undefined);\n\t\t}),\n\n\t\tcreateCase(factory, \"validation and immutability\", \"returns immutable copies from reads\", async (repository) => {\n\t\t\tconst session = await repository.create({ id: \"immutable\" });\n\t\t\tconst metadata = await session.getMetadata();\n\t\t\tconst data = { nested: { value: 1 } };\n\t\t\tawait session.appendEntry<CustomEntry>({ type: \"custom\", id: \"custom\", customType: \"note\", data }, \"main\");\n\t\t\tdata.nested.value = 50;\n\t\t\tconst read = await session.getEntry(\"custom\");\n\t\t\tif (read?.type !== \"custom\") throw new Error(\"Expected custom entry\");\n\t\t\t(read.data as { nested: { value: number } }).nested.value = 99;\n\t\t\tconst readMetadata = await session.getMetadata();\n\t\t\treadMetadata.id = \"changed\";\n\t\t\tconst log = await session.getLog();\n\t\t\tif (log[0]?.kind !== \"entry\" || log[0].entry.type !== \"custom\") throw new Error(\"Expected entry log\");\n\t\t\t(log[0].entry.data as { nested: { value: number } }).nested.value = 100;\n\n\t\t\tdeepStrictEqual(await session.getMetadata(), metadata);\n\t\t\tdeepStrictEqual(await session.getEntry(\"custom\"), {\n\t\t\t\ttype: \"custom\",\n\t\t\t\tid: \"custom\",\n\t\t\t\tcustomType: \"note\",\n\t\t\t\tdata: { nested: { value: 1 } },\n\t\t\t\tparentId: null,\n\t\t\t\tseq: 1,\n\t\t\t\ttimestamp: read.timestamp,\n\t\t\t});\n\t\t}),\n\n\t\tcreateCase(factory, \"entries and lanes\", \"validates lane lifecycle and targets\", async (repository) => {\n\t\t\tconst session = await repository.create({ id: \"session\" });\n\t\t\tawait rejectsWithCode(session.createLane(\"main\", null), \"already_exists\");\n\t\t\tawait rejectsWithCode(session.createLane(\"thread\", \"missing\"), \"not_found\");\n\t\t\tawait rejectsWithCode(session.moveLane(\"missing\", null), \"invalid_lane\");\n\t\t}),\n\n\t\tcreateCase(factory, \"entries and lanes\", \"binds lane views without caching leaves\", async (repository) => {\n\t\t\tconst session = await repository.create({ id: \"session\" });\n\t\t\tconst root = await session.appendMessage(createUserMessage(\"root\"));\n\t\t\tawait session.createLane(\"thread\", root);\n\t\t\tconst thread = session.view(\"thread\");\n\t\t\tconst [mainChild, threadChild] = await Promise.all([\n\t\t\t\tsession.appendMessage(createUserMessage(\"main\")),\n\t\t\t\tthread.appendMessage(createUserMessage(\"thread\")),\n\t\t\t]);\n\n\t\t\tstrictEqual(await session.getLeafId(), mainChild);\n\t\t\tstrictEqual(await thread.getLeafId(), threadChild);\n\t\t\tdeepStrictEqual(await entryIds(session.findEntriesOnBranch({ order: \"oldestFirst\" })), [root, mainChild]);\n\t\t\tdeepStrictEqual(await entryIds(thread.findEntriesOnBranch({ order: \"oldestFirst\" })), [root, threadChild]);\n\t\t\tconst empty = await repository.create({ id: \"empty\" });\n\t\t\tdeepStrictEqual(await empty.findEntriesOnBranch(), []);\n\t\t}),\n\n\t\tcreateCase(\n\t\t\tfactory,\n\t\t\t\"entries and lanes\",\n\t\t\t\"appends provisioned entries with their existing ids\",\n\t\t\tasync (repository) => {\n\t\t\t\tconst session = await repository.create({ id: \"session\" });\n\t\t\t\tconst entry = await session.appendEntry<CustomEntry>(\n\t\t\t\t\t{ type: \"custom\", id: \"provisioned\", customType: \"note\", data: { value: 1 } },\n\t\t\t\t\t\"main\",\n\t\t\t\t);\n\n\t\t\t\tstrictEqual(entry.customType, \"note\");\n\t\t\t\tdeepStrictEqual(\n\t\t\t\t\t{ id: entry.id, parentId: entry.parentId, seq: entry.seq },\n\t\t\t\t\t{ id: \"provisioned\", parentId: null, seq: 1 },\n\t\t\t\t);\n\t\t\t\tstrictEqual(await session.getLeafId(), \"provisioned\");\n\t\t\t},\n\t\t),\n\n\t\tcreateCase(factory, \"entries and lanes\", \"persists tool-result termination decisions\", async (repository) => {\n\t\t\tconst session = await repository.create({ id: \"session\" });\n\t\t\tconst entry = await session.appendEntry<MessageEntry>(\n\t\t\t\t{\n\t\t\t\t\ttype: \"message\",\n\t\t\t\t\tid: \"tool-result\",\n\t\t\t\t\tmessage: {\n\t\t\t\t\t\trole: \"toolResult\",\n\t\t\t\t\t\ttoolCallId: \"call-1\",\n\t\t\t\t\t\ttoolName: \"example\",\n\t\t\t\t\t\tcontent: [{ type: \"text\", text: \"done\" }],\n\t\t\t\t\t\tisError: false,\n\t\t\t\t\t\ttimestamp: 1,\n\t\t\t\t\t},\n\t\t\t\t\tterminate: true,\n\t\t\t\t},\n\t\t\t\t\"main\",\n\t\t\t);\n\n\t\t\tstrictEqual(entry.terminate, true);\n\t\t\tconst stored = await session.getEntry(entry.id);\n\t\t\tif (stored?.type !== \"message\") throw new Error(\"Expected message entry\");\n\t\t\tstrictEqual(stored.terminate, true);\n\t\t\tdeepStrictEqual(await session.findEntries(), [entry]);\n\t\t\tdeepStrictEqual(await session.getLog(), [{ kind: \"entry\", seq: entry.seq, entry }]);\n\t\t}),\n\n\t\tcreateCase(\n\t\t\tfactory,\n\t\t\t\"validation and immutability\",\n\t\t\t\"rejects non-JSON entries before storage mutation\",\n\t\t\tasync (repository) => {\n\t\t\t\tconst session = await repository.create({ id: \"session\" });\n\t\t\t\tconst cyclic: { self?: unknown } = {};\n\t\t\t\tcyclic.self = cyclic;\n\n\t\t\t\tfor (const data of [\n\t\t\t\t\t{ value: undefined },\n\t\t\t\t\t[undefined],\n\t\t\t\t\t{ value: 1n },\n\t\t\t\t\t{ value: Number.NaN },\n\t\t\t\t\t{ value: new Map() },\n\t\t\t\t\tcyclic,\n\t\t\t\t]) {\n\t\t\t\t\tawait rejectsWithCode(session.appendCustomEntry(\"invalid\", data), \"invalid_payload\");\n\t\t\t\t}\n\n\t\t\t\tstrictEqual(await session.getLeafId(), null);\n\t\t\t\tdeepStrictEqual(await session.findEntries(), []);\n\t\t\t\tdeepStrictEqual(await session.getLog(), []);\n\t\t\t\tconst validId = await session.appendCustomEntry(\"valid\", { value: 1 });\n\t\t\t\tstrictEqual((await session.getEntry(validId))?.seq, 1);\n\t\t\t},\n\t\t),\n\n\t\tcreateCase(\n\t\t\tfactory,\n\t\t\t\"validation and immutability\",\n\t\t\t\"rejects non-JSON records before storage mutation\",\n\t\t\tasync (repository) => {\n\t\t\t\tconst session = await repository.create({ id: \"session\" });\n\t\t\t\tfor (const [id, value] of [\n\t\t\t\t\t[\"undefined-record\", undefined],\n\t\t\t\t\t[\"bigint-record\", 1n],\n\t\t\t\t] as const) {\n\t\t\t\t\tawait rejectsWithCode(\n\t\t\t\t\t\tsession.appendRecord({\n\t\t\t\t\t\t\ttype: \"tool_started\",\n\t\t\t\t\t\t\tid,\n\t\t\t\t\t\t\tlane: \"main\",\n\t\t\t\t\t\t\trunId: \"run\",\n\t\t\t\t\t\t\tassistantEntryId: \"assistant\",\n\t\t\t\t\t\t\ttoolIndex: 0,\n\t\t\t\t\t\t\ttoolCallId: \"call\",\n\t\t\t\t\t\t\ttoolName: \"example\",\n\t\t\t\t\t\t\teffectiveArgs: { value },\n\t\t\t\t\t\t\tresultEntryId: \"result\",\n\t\t\t\t\t\t\treplay: \"never\",\n\t\t\t\t\t\t}),\n\t\t\t\t\t\t\"invalid_payload\",\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tdeepStrictEqual(await session.findRecords(), []);\n\t\t\t\tdeepStrictEqual(await session.getLog(), []);\n\t\t\t\tstrictEqual(\n\t\t\t\t\t(await session.appendRecord(operationStarted(\"valid-record\", { lane: \"main\", kind: \"run\" }))).seq,\n\t\t\t\t\t1,\n\t\t\t\t);\n\t\t\t},\n\t\t),\n\n\t\tcreateCase(factory, \"entries and lanes\", \"linearizes concurrent writes across two lanes\", async (repository) => {\n\t\t\tconst session = await repository.create({ id: \"session\" });\n\t\t\tawait session.appendEntry<MessageEntry>(\n\t\t\t\t{ type: \"message\", id: \"root\", message: createUserMessage(\"root\") },\n\t\t\t\t\"main\",\n\t\t\t);\n\t\t\tawait session.createLane(\"thread\", \"root\");\n\t\t\tconst completionOrder: string[] = [];\n\t\t\tconst writes = [\n\t\t\t\tsession.appendEntry<CustomEntry>({ type: \"custom\", id: \"main-1\", customType: \"note\" }, \"main\"),\n\t\t\t\tsession.appendEntry<CustomEntry>({ type: \"custom\", id: \"thread-1\", customType: \"note\" }, \"thread\"),\n\t\t\t\tsession.appendEntry<CustomEntry>({ type: \"custom\", id: \"main-2\", customType: \"note\" }, \"main\"),\n\t\t\t\tsession.appendEntry<CustomEntry>({ type: \"custom\", id: \"thread-2\", customType: \"note\" }, \"thread\"),\n\t\t\t].map((write) =>\n\t\t\t\twrite.then((entry) => {\n\t\t\t\t\tcompletionOrder.push(entry.id);\n\t\t\t\t\treturn entry;\n\t\t\t\t}),\n\t\t\t);\n\t\t\tconst entries = await Promise.all(writes);\n\t\t\tconst commitOrder = [...entries].sort((left, right) => left.seq - right.seq).map((entry) => entry.id);\n\n\t\t\tstrictEqual(new Set(entries.map((entry) => entry.seq)).size, entries.length);\n\t\t\tdeepStrictEqual(completionOrder, commitOrder);\n\t\t\tconst concurrentIds = new Set(entries.map((entry) => entry.id));\n\t\t\tdeepStrictEqual(\n\t\t\t\t(await session.getLog()).flatMap((item) =>\n\t\t\t\t\titem.kind === \"entry\" && concurrentIds.has(item.entry.id) ? [item.entry.id] : [],\n\t\t\t\t),\n\t\t\t\tcommitOrder,\n\t\t\t);\n\t\t\tconst sequences = (await session.getLog()).map((item) => item.seq);\n\t\t\tdeepStrictEqual(\n\t\t\t\tsequences,\n\t\t\t\t[...sequences].sort((left, right) => left - right),\n\t\t\t);\n\t\t}),\n\n\t\tcreateCase(factory, \"repository and forks\", \"creates lists and opens sessions\", async (repository) => {\n\t\t\tconst session = await repository.create({ id: \"one\" });\n\t\t\tconst entryId = await session.appendMessage(createUserMessage(\"persisted\"));\n\t\t\tconst metadata = await session.getMetadata();\n\n\t\t\tconst listed = await repository.list();\n\t\t\tstrictEqual(listed.length, 1);\n\t\t\tstrictEqual(listed[0]?.id, metadata.id);\n\t\t\tstrictEqual(listed[0]?.createdAt, metadata.createdAt);\n\t\t\tstrictEqual(listed[0]?.parentSessionId, metadata.parentSessionId);\n\t\t\tdeepStrictEqual(await entryIds((await repository.open(metadata)).findEntries()), [entryId]);\n\t\t\tawait rejectsWithCode(repository.create({ id: \"one\" }), \"already_exists\");\n\t\t}),\n\n\t\tcreateCase(factory, \"repository and forks\", \"deletes sessions idempotently\", async (repository) => {\n\t\t\tconst session = await repository.create({ id: \"one\" });\n\t\t\tconst metadata = await session.getMetadata();\n\n\t\t\tawait repository.delete(metadata);\n\t\t\tawait rejectsWithCode(repository.open(metadata), \"not_found\");\n\t\t\tawait repository.delete(metadata);\n\t\t}),\n\n\t\tcreateCase(\n\t\t\tfactory,\n\t\t\t\"repository and forks\",\n\t\t\t\"forks one branch with selected facts and no records\",\n\t\t\tasync (repository) => {\n\t\t\t\tconst source = await repository.create({ id: \"source\" });\n\t\t\t\tconst root = await source.appendMessage(createUserMessage(\"root\"));\n\t\t\t\tconst shared = await source.appendMessage(createAssistantMessage(\"shared\"));\n\t\t\t\tawait source.createLane(\"thread\", shared);\n\t\t\t\tconst threadChild = await source.view(\"thread\").appendMessage(createUserMessage(\"thread\"));\n\t\t\t\tconst mainChild = await source.appendMessage(createUserMessage(\"main\"));\n\t\t\t\tawait source.setName(\"Source\");\n\t\t\t\tawait source.setLabel(shared, \"copied\");\n\t\t\t\tawait source.setLabel(threadChild, \"excluded\");\n\t\t\t\tawait source.appendRecord(operationStarted(\"run\", { lane: \"main\", kind: \"run\" }));\n\t\t\t\tawait source.appendRecord({\n\t\t\t\t\ttype: \"usage\",\n\t\t\t\t\tid: \"source-usage\",\n\t\t\t\t\tlane: \"main\",\n\t\t\t\t\tcause: \"adjustment\",\n\t\t\t\t\tusage: {\n\t\t\t\t\t\tinput: 10,\n\t\t\t\t\t\toutput: 5,\n\t\t\t\t\t\tcacheRead: 3,\n\t\t\t\t\t\tcacheWrite: 2,\n\t\t\t\t\t\ttotalTokens: 20,\n\t\t\t\t\t\tcost: { input: 1, output: 2, cacheRead: 3, cacheWrite: 4, total: 10 },\n\t\t\t\t\t},\n\t\t\t\t});\n\n\t\t\t\tconst fork = await repository.fork(await source.getMetadata(), {\n\t\t\t\t\tscope: \"branch\",\n\t\t\t\t\tentryId: mainChild,\n\t\t\t\t\tposition: \"at\",\n\t\t\t\t\tid: \"branch-fork\",\n\t\t\t\t});\n\n\t\t\t\tdeepStrictEqual(await entryIds(fork.findEntries({ order: \"oldestFirst\" })), [root, shared, mainChild]);\n\t\t\t\tdeepStrictEqual(await fork.getLanes(), [{ lane: \"main\", leafId: mainChild }]);\n\t\t\t\tstrictEqual(await fork.getName(), \"Source\");\n\t\t\t\tstrictEqual(await fork.getLabel(shared), \"copied\");\n\t\t\t\tstrictEqual(await fork.getLabel(threadChild), undefined);\n\t\t\t\tdeepStrictEqual(await fork.findRecords(), []);\n\t\t\t\tdeepStrictEqual(await fork.getStats(), {\n\t\t\t\t\tmessageCount: 3,\n\t\t\t\t\tcachedTokens: 0,\n\t\t\t\t\tuncachedTokens: 0,\n\t\t\t\t\ttotalTokens: 0,\n\t\t\t\t\tcostTotal: 0,\n\t\t\t\t});\n\t\t\t\tawait fork.appendMessage(createUserMessage(\"after fork\"));\n\t\t\t\tstrictEqual((await fork.getStats()).messageCount, 4);\n\t\t\t\tconst metadata = await fork.getMetadata();\n\t\t\t\tdeepStrictEqual(\n\t\t\t\t\t{ id: metadata.id, parentSessionId: metadata.parentSessionId },\n\t\t\t\t\t{ id: \"branch-fork\", parentSessionId: \"source\" },\n\t\t\t\t);\n\t\t\t},\n\t\t),\n\n\t\tcreateCase(factory, \"repository and forks\", \"forks a complete tree with lanes and facts\", async (repository) => {\n\t\t\tconst source = await repository.create({ id: \"source\" });\n\t\t\tconst root = await source.appendMessage(createUserMessage(\"root\"));\n\t\t\tawait source.createLane(\"thread\", root);\n\t\t\tconst mainChild = await source.appendMessage(createUserMessage(\"main\"));\n\t\t\tconst threadChild = await source.view(\"thread\").appendMessage(createUserMessage(\"thread\"));\n\t\t\tawait source.setLabel(threadChild, \"thread-tip\");\n\n\t\t\tconst fork = await repository.fork(await source.getMetadata(), { scope: \"tree\", id: \"tree-fork\" });\n\t\t\tdeepStrictEqual(await entryIds(fork.findEntries({ order: \"oldestFirst\" })), [root, mainChild, threadChild]);\n\t\t\tdeepStrictEqual(await fork.getLanes(), [\n\t\t\t\t{ lane: \"main\", leafId: mainChild },\n\t\t\t\t{ lane: \"thread\", leafId: threadChild },\n\t\t\t]);\n\t\t\tstrictEqual(await fork.getLabel(threadChild), \"thread-tip\");\n\t\t\tstrictEqual((await fork.getStats()).messageCount, 3);\n\t\t\tdeepStrictEqual(\n\t\t\t\t(await fork.getLog()).filter((item) => item.kind === \"lane\"),\n\t\t\t\t[\n\t\t\t\t\t{ kind: \"lane\", seq: 4, lane: \"main\", leafId: mainChild },\n\t\t\t\t\t{ kind: \"lane\", seq: 5, lane: \"thread\", leafId: threadChild },\n\t\t\t\t],\n\t\t\t);\n\t\t}),\n\n\t\tcreateCase(\n\t\t\tfactory,\n\t\t\t\"repository and forks\",\n\t\t\t\"forks before an entry without modifying the source\",\n\t\t\tasync (repository) => {\n\t\t\t\tconst source = await repository.create({ id: \"source\" });\n\t\t\t\tconst root = await source.appendMessage(createUserMessage(\"root\"));\n\t\t\t\tconst tail = await source.appendMessage(createUserMessage(\"tail\"));\n\t\t\t\tconst fork = await repository.fork(await source.getMetadata(), { entryId: tail, id: \"fork\" });\n\n\t\t\t\tdeepStrictEqual(await entryIds(fork.findEntries({ order: \"oldestFirst\" })), [root]);\n\t\t\t\tstrictEqual(await fork.getLeafId(), root);\n\t\t\t\tstrictEqual(await source.getLeafId(), tail);\n\t\t\t\tconst beforeDefaultTarget = await repository.fork(await source.getMetadata(), {\n\t\t\t\t\tposition: \"before\",\n\t\t\t\t\tid: \"before-default-target\",\n\t\t\t\t});\n\t\t\t\tdeepStrictEqual(await entryIds(beforeDefaultTarget.findEntries({ order: \"oldestFirst\" })), [root]);\n\t\t\t\tstrictEqual(await beforeDefaultTarget.getLeafId(), root);\n\n\t\t\t\tconst atDefaultTarget = await repository.fork(await source.getMetadata(), {\n\t\t\t\t\tposition: \"at\",\n\t\t\t\t\tid: \"at-default-target\",\n\t\t\t\t});\n\t\t\t\tdeepStrictEqual(await entryIds(atDefaultTarget.findEntries({ order: \"oldestFirst\" })), [root, tail]);\n\t\t\t\tstrictEqual(await atDefaultTarget.getLeafId(), tail);\n\t\t\t\tawait rejectsWithCode(\n\t\t\t\t\trepository.fork(await source.getMetadata(), { entryId: \"missing\" }),\n\t\t\t\t\t\"invalid_fork_target\",\n\t\t\t\t);\n\t\t\t},\n\t\t),\n\n\t\tcreateCase(factory, \"repository and forks\", \"validates the default fork target\", async (repository) => {\n\t\t\tconst source = await repository.create({ id: \"source-with-custom-leaf\" });\n\t\t\tawait source.appendCustomEntry(\"not-a-message\");\n\n\t\t\tawait rejectsWithCode(repository.fork(await source.getMetadata(), { id: \"fork\" }), \"invalid_fork_target\");\n\t\t}),\n\t];\n}\n"]}
@@ -189,19 +189,30 @@ export interface EntryQuery {
189
189
  limit?: number;
190
190
  cursor?: EntryCursor;
191
191
  }
192
+ /** Bounds of a branch scan. Default: the whole path, leaf to root. */
192
193
  export interface BranchBounds {
193
194
  start?: string;
194
195
  stopAtType?: Entry["type"];
195
196
  stopAtId?: string;
196
197
  }
197
198
  export interface RecordQuery {
199
+ /** Exact lane match. Omit to query every lane. */
198
200
  lane?: string;
201
+ /** Exact record discriminant match. Omit to query every record type. */
199
202
  type?: LaneRecord["type"];
203
+ /**
204
+ * Operation identity. Matches OperationStartedRecord.id and the runId
205
+ * property of operation-owned records. Records without an operation
206
+ * identity do not match.
207
+ */
200
208
  runId?: string;
201
- /** Valid only with type "operation_started". */
209
+ /** Exact operation intent kind. Valid only with type "operation_started". */
202
210
  operationKind?: OperationStartedRecord["intent"]["kind"];
211
+ /** Exclusive chronological lower bound: seq > afterSeq, regardless of order. */
203
212
  afterSeq?: number;
213
+ /** Sequence order. Default: "newestFirst". */
204
214
  order?: EntryOrder;
215
+ /** Positive maximum number of matching records. */
205
216
  limit?: number;
206
217
  }
207
218
  export interface SessionMetadata {
@@ -237,7 +248,7 @@ export type LogItem = {
237
248
  kind: "fact";
238
249
  seq: number;
239
250
  fact: "name";
240
- name: string;
251
+ name: string | undefined;
241
252
  } | {
242
253
  kind: "fact";
243
254
  seq: number;
@@ -261,7 +272,7 @@ export interface SessionStorage<TMetadata extends SessionMetadata = SessionMetad
261
272
  appendRecord<TRecord extends LaneRecord>(record: NewRecord<TRecord>): Promise<TRecord>;
262
273
  getEntry(id: string): Promise<Entry | undefined>;
263
274
  findEntries(query?: EntryQuery): Promise<Entry[]>;
264
- /** start is mandatory here; defaulting to a lane's leaf is view sugar. */
275
+ /** start is mandatory here (as opposed to SessionTree's findEntriesOnBranch); defaulting to a lane's leaf is view sugar. */
265
276
  findEntriesOnBranch(query: EntryQuery & BranchBounds & {
266
277
  start: string;
267
278
  }): Promise<Entry[]>;
@@ -285,7 +296,7 @@ export interface SessionStorage<TMetadata extends SessionMetadata = SessionMetad
285
296
  limit?: number;
286
297
  }): Promise<LogItem[]>;
287
298
  getName(): Promise<string | undefined>;
288
- setName(name: string): Promise<void>;
299
+ setName(name: string | undefined): Promise<void>;
289
300
  getLabel(id: string): Promise<string | undefined>;
290
301
  setLabel(id: string, label: string | undefined): Promise<void>;
291
302
  getStats(): Promise<SessionStats>;
@@ -295,11 +306,13 @@ export interface SessionTree {
295
306
  getEntry(id: string): Promise<Entry | undefined>;
296
307
  getStats(): Promise<SessionStats>;
297
308
  getName(): Promise<string | undefined>;
298
- setName(name: string): Promise<void>;
309
+ setName(name: string | undefined): Promise<void>;
299
310
  getLabel(targetId: string): Promise<string | undefined>;
300
311
  setLabel(targetId: string, label: string | undefined): Promise<void>;
312
+ /** Session-wide, all branches, sequence order. */
301
313
  findEntries(query?: EntryQuery): Promise<Entry[]>;
302
314
  findEntry(query?: EntryQuery): Promise<Entry | undefined>;
315
+ /** Branch-scoped: the path from start toward root. */
303
316
  findEntriesOnBranch(query?: EntryQuery & BranchBounds): Promise<Entry[]>;
304
317
  findEntryOnBranch(query?: EntryQuery & BranchBounds): Promise<Entry | undefined>;
305
318
  appendMessage(message: AgentMessage): Promise<string>;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/harness/session/types.ts"],"names":[],"mappings":"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","sourcesContent":["import type { StopReason, Usage } from \"@earendil-works/pi-ai\";\nimport \"../messages.ts\";\nimport type { AgentMessage } from \"../../types.ts\";\nimport type { Session } from \"./session.ts\";\n\nexport type JsonValue = null | boolean | number | string | JsonValue[] | { [key: string]: JsonValue };\n\nexport type SessionStopReason = Exclude<StopReason, \"pending\"> | \"deferred\";\n\nexport interface IdGenerator {\n\tnext(): string;\n}\n\nexport interface EntryBase {\n\ttype: string;\n\tid: string;\n\tseq: number;\n\tparentId: string | null;\n\ttimestamp: number;\n}\n\nexport interface MessageEntry extends EntryBase {\n\ttype: \"message\";\n\tmessage: AgentMessage;\n\tterminate?: true;\n}\n\nexport interface ModelChangeEntry extends EntryBase {\n\ttype: \"model_change\";\n\tprovider: string;\n\tmodelId: string;\n}\n\nexport interface ThinkingLevelEntry extends EntryBase {\n\ttype: \"thinking_level_change\";\n\tthinkingLevel: string;\n}\n\nexport interface ActiveToolsEntry extends EntryBase {\n\ttype: \"active_tools_change\";\n\tactiveToolNames: string[];\n}\n\nexport interface CompactionEntry extends EntryBase {\n\ttype: \"compaction\";\n\tsummary: string;\n\tretainedTail: AgentMessage[];\n\ttokensBefore: number;\n\tdetails?: unknown;\n\tusage?: Usage;\n}\n\nexport interface BranchSummaryEntry extends EntryBase {\n\ttype: \"branch_summary\";\n\tfromId: string;\n\tsummary: string;\n\tdetails?: unknown;\n\tusage?: Usage;\n}\n\nexport interface CustomEntry extends EntryBase {\n\ttype: \"custom\";\n\tcustomType: string;\n\tdata?: unknown;\n}\n\nexport type Entry =\n\t| MessageEntry\n\t| ModelChangeEntry\n\t| ThinkingLevelEntry\n\t| ActiveToolsEntry\n\t| CompactionEntry\n\t| BranchSummaryEntry\n\t| CustomEntry;\n\nexport type ProvisionedEntry<TEntry extends Entry = Entry> = TEntry extends Entry\n\t? Omit<TEntry, \"parentId\" | \"seq\" | \"timestamp\">\n\t: never;\n\nexport interface RecordBase {\n\tid: string;\n\tseq: number;\n\tlane: string;\n\ttimestamp: number;\n}\n\nexport interface OperationStartedRecord extends RecordBase {\n\ttype: \"operation_started\";\n\tsourceLeafId: string | null;\n\tintent:\n\t\t| {\n\t\t\t\tkind: \"run\";\n\t\t\t\t/** Normalized caller input before before_run; kept for suspended operations and before_resume. */\n\t\t\t\toriginalPrompt: AgentMessage[];\n\t\t\t\t/** Captured nextRun items, then the prompt, then before_run injections. */\n\t\t\t\tinitialMessages: ProvisionedEntry[];\n\t\t\t\tsystemPromptOverride?: string;\n\t\t\t\tresumeData?: { [extensionId: string]: JsonValue };\n\t\t }\n\t\t| {\n\t\t\t\tkind: \"compaction\";\n\t\t\t\tcustomInstructions?: string;\n\t\t\t\tresultEntryId: string;\n\t\t }\n\t\t| {\n\t\t\t\tkind: \"navigation\";\n\t\t\t\ttargetId: string | null;\n\t\t\t\tsummarize: boolean;\n\t\t\t\tcustomInstructions?: string;\n\t\t\t\tlabel?: string;\n\t\t\t\tsummaryEntryId?: string;\n\t\t };\n}\n\nexport interface AbortRequestedRecord extends RecordBase {\n\ttype: \"abort_requested\";\n\trunId: string;\n}\n\nexport interface OperationFinishedRecord extends RecordBase {\n\ttype: \"operation_finished\";\n\trunId: string;\n\toutcome: \"completed\" | \"aborted\" | \"failed\" | \"declined\";\n\terror?: { code: string; message: string };\n}\n\nexport type CompactionReason = \"manual\" | \"threshold\" | \"overflow\";\n\nexport type StepAttemptRecord = RecordBase &\n\t(\n\t\t| {\n\t\t\t\ttype: \"step_attempt\";\n\t\t\t\trunId: string;\n\t\t\t\tstep: \"assistant\" | \"branch_summary\";\n\t\t\t\tattempt: number;\n\t\t\t\tresultEntryId: string;\n\t\t\t\tcompactionReason?: never;\n\t\t }\n\t\t| {\n\t\t\t\ttype: \"step_attempt\";\n\t\t\t\trunId: string;\n\t\t\t\tstep: \"compaction\";\n\t\t\t\tattempt: number;\n\t\t\t\tresultEntryId: string;\n\t\t\t\t/** Persists why compaction summary generation started so recovery resumes the same work. */\n\t\t\t\tcompactionReason: CompactionReason;\n\t\t }\n\t);\n\nexport interface ToolStartedRecord extends RecordBase {\n\ttype: \"tool_started\";\n\trunId: string;\n\tassistantEntryId: string;\n\ttoolIndex: number;\n\ttoolCallId: string;\n\ttoolName: string;\n\teffectiveArgs: { [key: string]: unknown };\n\tresultEntryId: string;\n\treplay: \"never\" | \"safe\";\n}\n\nexport type QueueEnqueuedRecord = RecordBase &\n\t(\n\t\t| {\n\t\t\t\ttype: \"queue_enqueued\";\n\t\t\t\tqueue: \"steer\" | \"followUp\";\n\t\t\t\trunId: string;\n\t\t\t\ttarget: ProvisionedEntry;\n\t\t }\n\t\t| {\n\t\t\t\ttype: \"queue_enqueued\";\n\t\t\t\tqueue: \"nextRun\";\n\t\t\t\trunId?: never;\n\t\t\t\ttarget: ProvisionedEntry;\n\t\t }\n\t);\n\nexport interface QueueCancelledRecord extends RecordBase {\n\ttype: \"queue_cancelled\";\n\trunId?: string;\n\tentryId: string;\n}\n\nexport interface WriteDeferredRecord extends RecordBase {\n\ttype: \"write_deferred\";\n\trunId: string;\n\ttarget: ProvisionedEntry;\n}\n\nexport type UsageRecord = RecordBase & { type: \"usage\"; usage: Usage } & (\n\t\t| {\n\t\t\t\tcause: \"assistant\" | \"compaction\" | \"branch_summary\" | \"deferred_fetch\";\n\t\t\t\trunId: string;\n\t\t\t\tentryId: string;\n\t\t\t\tattempt: number;\n\t\t\t\tstopReason: SessionStopReason;\n\t\t }\n\t\t| { cause: \"tool\"; runId: string; entryId: string; toolCallId: string }\n\t\t| { cause: \"hook\"; runId: string; entryId: string }\n\t\t| { cause: \"adjustment\"; runId?: string; entryId?: string; details?: JsonValue }\n\t);\n\nexport type LaneRecord =\n\t| OperationStartedRecord\n\t| AbortRequestedRecord\n\t| OperationFinishedRecord\n\t| StepAttemptRecord\n\t| ToolStartedRecord\n\t| QueueEnqueuedRecord\n\t| QueueCancelledRecord\n\t| WriteDeferredRecord\n\t| UsageRecord;\nexport type NewRecord<TRecord extends LaneRecord = LaneRecord> = TRecord extends LaneRecord\n\t? Omit<TRecord, \"seq\" | \"timestamp\">\n\t: never;\n\nexport type EntryOrder = \"newestFirst\" | \"oldestFirst\";\n\nexport interface EntryCursor {\n\tafterSeq: number;\n}\n\nexport interface EntryQuery {\n\ttype?: Entry[\"type\"];\n\tcustomType?: string;\n\torder?: EntryOrder;\n\tlimit?: number;\n\tcursor?: EntryCursor;\n}\n\nexport interface BranchBounds {\n\tstart?: string;\n\tstopAtType?: Entry[\"type\"];\n\tstopAtId?: string;\n}\n\nexport interface RecordQuery {\n\tlane?: string;\n\ttype?: LaneRecord[\"type\"];\n\trunId?: string;\n\t/** Valid only with type \"operation_started\". */\n\toperationKind?: OperationStartedRecord[\"intent\"][\"kind\"];\n\tafterSeq?: number;\n\torder?: EntryOrder;\n\tlimit?: number;\n}\n\nexport interface SessionMetadata {\n\tid: string;\n\tcreatedAt: number;\n\tparentSessionId?: string;\n}\n\nexport interface SessionStats {\n\tmessageCount: number;\n\tcachedTokens: number;\n\tuncachedTokens: number;\n\ttotalTokens: number;\n\tcostTotal: number;\n}\n\nexport interface LanePointer {\n\tlane: string;\n\tleafId: string | null;\n}\n\nexport type LogItem =\n\t| { kind: \"entry\"; seq: number; entry: Entry }\n\t| { kind: \"record\"; seq: number; record: LaneRecord }\n\t| { kind: \"lane\"; seq: number; lane: string; leafId: string | null }\n\t| { kind: \"fact\"; seq: number; fact: \"name\"; name: string }\n\t| { kind: \"fact\"; seq: number; fact: \"label\"; targetId: string; label: string | undefined };\n\nexport interface LogOptions {\n\tafterSeq?: number;\n\tlimit?: number;\n}\n\nexport interface SessionStorage<TMetadata extends SessionMetadata = SessionMetadata> {\n\tgetMetadata(): Promise<TMetadata>;\n\n\t// Lanes\n\tgetLanes(): Promise<{ lane: string; leafId: string | null }[]>;\n\tcreateLane(lane: string, at: string | null): Promise<void>;\n\tmoveLane(lane: string, to: string | null): Promise<void>;\n\n\t// Entries and Records\n\tappendEntry<TEntry extends Entry>(entry: ProvisionedEntry<TEntry>, lane: string): Promise<TEntry>;\n\tappendRecord<TRecord extends LaneRecord>(record: NewRecord<TRecord>): Promise<TRecord>;\n\n\t// Reads\n\tgetEntry(id: string): Promise<Entry | undefined>;\n\tfindEntries(query?: EntryQuery): Promise<Entry[]>;\n\t/** start is mandatory here; defaulting to a lane's leaf is view sugar. */\n\tfindEntriesOnBranch(query: EntryQuery & BranchBounds & { start: string }): Promise<Entry[]>;\n\tfindRecords<K extends LaneRecord[\"type\"]>(\n\t\tquery: RecordQuery & { type: K },\n\t): Promise<Extract<LaneRecord, { type: K }>[]>;\n\tfindRecords(query?: RecordQuery): Promise<LaneRecord[]>;\n\t/**\n\t * Returns unfinished operation starts newest first. Recovery uses `limit: 2`:\n\t * zero results mean the lane is idle, one means it is suspended, and two\n\t * mean at least two operations are open, which is corruption. Further\n\t * results provide no additional recovery state.\n\t */\n\tfindOpenOperations(lane: string, options?: { limit?: number }): Promise<OperationStartedRecord[]>;\n\tgetLog(options?: { afterSeq?: number; limit?: number }): Promise<LogItem[]>;\n\n\t// Global facts\n\tgetName(): Promise<string | undefined>;\n\tsetName(name: string): Promise<void>;\n\tgetLabel(id: string): Promise<string | undefined>;\n\tsetLabel(id: string, label: string | undefined): Promise<void>;\n\tgetStats(): Promise<SessionStats>;\n}\n\nexport interface SessionTree {\n\tgetLeafId(): Promise<string | null>;\n\tgetEntry(id: string): Promise<Entry | undefined>;\n\tgetStats(): Promise<SessionStats>;\n\tgetName(): Promise<string | undefined>;\n\tsetName(name: string): Promise<void>;\n\tgetLabel(targetId: string): Promise<string | undefined>;\n\tsetLabel(targetId: string, label: string | undefined): Promise<void>;\n\tfindEntries(query?: EntryQuery): Promise<Entry[]>;\n\tfindEntry(query?: EntryQuery): Promise<Entry | undefined>;\n\tfindEntriesOnBranch(query?: EntryQuery & BranchBounds): Promise<Entry[]>;\n\tfindEntryOnBranch(query?: EntryQuery & BranchBounds): Promise<Entry | undefined>;\n\tappendMessage(message: AgentMessage): Promise<string>;\n\tappendCustomEntry(customType: string, data?: unknown): Promise<string>;\n}\n\nexport interface SessionCreateOptions {\n\tid?: string;\n\tparentSessionId?: string;\n}\n\nexport type ForkOptions = { scope?: \"branch\"; entryId?: string; position?: \"before\" | \"at\" } | { scope: \"tree\" };\n\nexport interface SessionRepo<\n\tTMetadata extends SessionMetadata = SessionMetadata,\n\tTCreateOptions extends SessionCreateOptions = SessionCreateOptions,\n\tTListOptions = void,\n> {\n\tcreate(options: TCreateOptions): Promise<Session<TMetadata>>;\n\t/** Opens the session for writing and acquires any backend writer claim. */\n\topen(metadata: TMetadata): Promise<Session<TMetadata>>;\n\t/** Lists session metadata without opening sessions or acquiring writer claims. */\n\tlist(options?: TListOptions): Promise<TMetadata[]>;\n\tdelete(metadata: TMetadata): Promise<void>;\n\tfork(source: TMetadata, options: ForkOptions & TCreateOptions): Promise<Session<TMetadata>>;\n}\n\nexport type SessionErrorCode =\n\t| \"not_found\"\n\t| \"already_exists\"\n\t| \"invalid_entry\"\n\t| \"invalid_payload\"\n\t| \"invalid_lane\"\n\t| \"invalid_query\"\n\t| \"invalid_fork_target\"\n\t| \"storage\";\n\nexport class SessionError extends Error {\n\treadonly code: SessionErrorCode;\n\n\tconstructor(code: SessionErrorCode, message: string, cause?: Error) {\n\t\tsuper(message, cause === undefined ? undefined : { cause });\n\t\tthis.name = \"SessionError\";\n\t\tthis.code = code;\n\t}\n}\n"]}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/harness/session/types.ts"],"names":[],"mappings":"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","sourcesContent":["import type { StopReason, Usage } from \"@earendil-works/pi-ai\";\nimport \"../messages.ts\";\nimport type { AgentMessage } from \"../../types.ts\";\nimport type { Session } from \"./session.ts\";\n\nexport type JsonValue = null | boolean | number | string | JsonValue[] | { [key: string]: JsonValue };\n\nexport type SessionStopReason = Exclude<StopReason, \"pending\"> | \"deferred\";\n\nexport interface IdGenerator {\n\tnext(): string;\n}\n\nexport interface EntryBase {\n\ttype: string;\n\tid: string;\n\tseq: number; // shared sequence; read-side, storage-assigned\n\tparentId: string | null; // storage-assigned: the appending lane's leaf\n\ttimestamp: number; // Unix ms, storage-assigned\n}\n\nexport interface MessageEntry extends EntryBase {\n\ttype: \"message\";\n\tmessage: AgentMessage;\n\tterminate?: true;\n}\n\nexport interface ModelChangeEntry extends EntryBase {\n\ttype: \"model_change\";\n\tprovider: string;\n\tmodelId: string;\n}\n\nexport interface ThinkingLevelEntry extends EntryBase {\n\ttype: \"thinking_level_change\";\n\tthinkingLevel: string;\n}\n\nexport interface ActiveToolsEntry extends EntryBase {\n\ttype: \"active_tools_change\";\n\tactiveToolNames: string[];\n}\n\nexport interface CompactionEntry extends EntryBase {\n\ttype: \"compaction\";\n\tsummary: string;\n\tretainedTail: AgentMessage[];\n\ttokensBefore: number;\n\tdetails?: unknown;\n\tusage?: Usage;\n}\n\nexport interface BranchSummaryEntry extends EntryBase {\n\ttype: \"branch_summary\";\n\tfromId: string;\n\tsummary: string;\n\tdetails?: unknown;\n\tusage?: Usage;\n}\n\nexport interface CustomEntry extends EntryBase {\n\ttype: \"custom\";\n\tcustomType: string;\n\tdata?: unknown;\n}\n\nexport type Entry =\n\t| MessageEntry\n\t| ModelChangeEntry\n\t| ThinkingLevelEntry\n\t| ActiveToolsEntry\n\t| CompactionEntry\n\t| BranchSummaryEntry\n\t| CustomEntry;\n\nexport type ProvisionedEntry<TEntry extends Entry = Entry> = TEntry extends Entry\n\t? Omit<TEntry, \"parentId\" | \"seq\" | \"timestamp\">\n\t: never;\n\nexport interface RecordBase {\n\tid: string;\n\tseq: number;\n\tlane: string;\n\ttimestamp: number;\n}\n\nexport interface OperationStartedRecord extends RecordBase {\n\ttype: \"operation_started\";\n\tsourceLeafId: string | null;\n\tintent:\n\t\t| {\n\t\t\t\tkind: \"run\";\n\t\t\t\t/** Normalized caller input before before_run; kept for suspended operations and before_resume. */\n\t\t\t\toriginalPrompt: AgentMessage[];\n\t\t\t\t/** Captured nextRun items, then the prompt, then before_run injections. */\n\t\t\t\tinitialMessages: ProvisionedEntry[];\n\t\t\t\tsystemPromptOverride?: string;\n\t\t\t\tresumeData?: { [extensionId: string]: JsonValue };\n\t\t }\n\t\t| {\n\t\t\t\tkind: \"compaction\";\n\t\t\t\tcustomInstructions?: string;\n\t\t\t\tresultEntryId: string;\n\t\t }\n\t\t| {\n\t\t\t\tkind: \"navigation\";\n\t\t\t\ttargetId: string | null;\n\t\t\t\tsummarize: boolean;\n\t\t\t\tcustomInstructions?: string;\n\t\t\t\tlabel?: string;\n\t\t\t\tsummaryEntryId?: string;\n\t\t };\n}\n\nexport interface AbortRequestedRecord extends RecordBase {\n\ttype: \"abort_requested\";\n\trunId: string;\n}\n\nexport interface OperationFinishedRecord extends RecordBase {\n\ttype: \"operation_finished\";\n\trunId: string;\n\toutcome: \"completed\" | \"aborted\" | \"failed\" | \"declined\";\n\terror?: { code: string; message: string };\n}\n\nexport type CompactionReason = \"manual\" | \"threshold\" | \"overflow\";\n\nexport type StepAttemptRecord = RecordBase &\n\t(\n\t\t| {\n\t\t\t\ttype: \"step_attempt\";\n\t\t\t\trunId: string;\n\t\t\t\tstep: \"assistant\" | \"branch_summary\";\n\t\t\t\tattempt: number;\n\t\t\t\tresultEntryId: string;\n\t\t\t\tcompactionReason?: never;\n\t\t }\n\t\t| {\n\t\t\t\ttype: \"step_attempt\";\n\t\t\t\trunId: string;\n\t\t\t\tstep: \"compaction\";\n\t\t\t\tattempt: number;\n\t\t\t\tresultEntryId: string;\n\t\t\t\t/** Persists why compaction summary generation started so recovery resumes the same work. */\n\t\t\t\tcompactionReason: CompactionReason;\n\t\t }\n\t);\n\nexport interface ToolStartedRecord extends RecordBase {\n\ttype: \"tool_started\";\n\trunId: string;\n\tassistantEntryId: string;\n\ttoolIndex: number;\n\ttoolCallId: string;\n\ttoolName: string;\n\teffectiveArgs: { [key: string]: unknown };\n\tresultEntryId: string;\n\treplay: \"never\" | \"safe\";\n}\n\nexport type QueueEnqueuedRecord = RecordBase &\n\t(\n\t\t| {\n\t\t\t\ttype: \"queue_enqueued\";\n\t\t\t\tqueue: \"steer\" | \"followUp\";\n\t\t\t\trunId: string;\n\t\t\t\ttarget: ProvisionedEntry;\n\t\t }\n\t\t| {\n\t\t\t\ttype: \"queue_enqueued\";\n\t\t\t\tqueue: \"nextRun\";\n\t\t\t\trunId?: never;\n\t\t\t\ttarget: ProvisionedEntry;\n\t\t }\n\t);\n\nexport interface QueueCancelledRecord extends RecordBase {\n\ttype: \"queue_cancelled\";\n\trunId?: string;\n\tentryId: string;\n}\n\nexport interface WriteDeferredRecord extends RecordBase {\n\ttype: \"write_deferred\";\n\trunId: string;\n\ttarget: ProvisionedEntry;\n}\n\nexport type UsageRecord = RecordBase & { type: \"usage\"; usage: Usage } & (\n\t\t| {\n\t\t\t\tcause: \"assistant\" | \"compaction\" | \"branch_summary\" | \"deferred_fetch\";\n\t\t\t\trunId: string;\n\t\t\t\tentryId: string;\n\t\t\t\tattempt: number;\n\t\t\t\tstopReason: SessionStopReason;\n\t\t }\n\t\t| { cause: \"tool\"; runId: string; entryId: string; toolCallId: string }\n\t\t| { cause: \"hook\"; runId: string; entryId: string }\n\t\t| { cause: \"adjustment\"; runId?: string; entryId?: string; details?: JsonValue }\n\t);\n\nexport type LaneRecord =\n\t| OperationStartedRecord\n\t| AbortRequestedRecord\n\t| OperationFinishedRecord\n\t| StepAttemptRecord\n\t| ToolStartedRecord\n\t| QueueEnqueuedRecord\n\t| QueueCancelledRecord\n\t| WriteDeferredRecord\n\t| UsageRecord;\nexport type NewRecord<TRecord extends LaneRecord = LaneRecord> = TRecord extends LaneRecord\n\t? Omit<TRecord, \"seq\" | \"timestamp\">\n\t: never;\n\nexport type EntryOrder = \"newestFirst\" | \"oldestFirst\";\n\nexport interface EntryCursor {\n\tafterSeq: number;\n}\n\nexport interface EntryQuery {\n\ttype?: Entry[\"type\"];\n\tcustomType?: string; // for type \"custom\"\n\torder?: EntryOrder; // default newestFirst\n\tlimit?: number;\n\tcursor?: EntryCursor;\n}\n\n/** Bounds of a branch scan. Default: the whole path, leaf to root. */\nexport interface BranchBounds {\n\tstart?: string; // default: the view's lane leaf\n\tstopAtType?: Entry[\"type\"]; // scan ends after the first match, inclusive\n\tstopAtId?: string;\n}\n\nexport interface RecordQuery {\n\t/** Exact lane match. Omit to query every lane. */\n\tlane?: string;\n\t/** Exact record discriminant match. Omit to query every record type. */\n\ttype?: LaneRecord[\"type\"];\n\t/**\n\t * Operation identity. Matches OperationStartedRecord.id and the runId\n\t * property of operation-owned records. Records without an operation\n\t * identity do not match.\n\t */\n\trunId?: string;\n\t/** Exact operation intent kind. Valid only with type \"operation_started\". */\n\toperationKind?: OperationStartedRecord[\"intent\"][\"kind\"];\n\t/** Exclusive chronological lower bound: seq > afterSeq, regardless of order. */\n\tafterSeq?: number;\n\t/** Sequence order. Default: \"newestFirst\". */\n\torder?: EntryOrder;\n\t/** Positive maximum number of matching records. */\n\tlimit?: number;\n}\n\nexport interface SessionMetadata {\n\tid: string;\n\tcreatedAt: number;\n\tparentSessionId?: string;\n}\n\nexport interface SessionStats {\n\tmessageCount: number;\n\tcachedTokens: number;\n\tuncachedTokens: number;\n\ttotalTokens: number;\n\tcostTotal: number;\n}\n\nexport interface LanePointer {\n\tlane: string;\n\tleafId: string | null;\n}\n\nexport type LogItem =\n\t| { kind: \"entry\"; seq: number; entry: Entry }\n\t| { kind: \"record\"; seq: number; record: LaneRecord }\n\t| { kind: \"lane\"; seq: number; lane: string; leafId: string | null }\n\t| { kind: \"fact\"; seq: number; fact: \"name\"; name: string | undefined }\n\t| { kind: \"fact\"; seq: number; fact: \"label\"; targetId: string; label: string | undefined };\n\nexport interface LogOptions {\n\tafterSeq?: number;\n\tlimit?: number;\n}\n\nexport interface SessionStorage<TMetadata extends SessionMetadata = SessionMetadata> {\n\tgetMetadata(): Promise<TMetadata>;\n\n\t// Lanes\n\tgetLanes(): Promise<{ lane: string; leafId: string | null }[]>;\n\tcreateLane(lane: string, at: string | null): Promise<void>;\n\tmoveLane(lane: string, to: string | null): Promise<void>;\n\n\t// Entries and Records\n\tappendEntry<TEntry extends Entry>(entry: ProvisionedEntry<TEntry>, lane: string): Promise<TEntry>;\n\tappendRecord<TRecord extends LaneRecord>(record: NewRecord<TRecord>): Promise<TRecord>;\n\n\t// Reads\n\tgetEntry(id: string): Promise<Entry | undefined>;\n\tfindEntries(query?: EntryQuery): Promise<Entry[]>;\n\t/** start is mandatory here (as opposed to SessionTree's findEntriesOnBranch); defaulting to a lane's leaf is view sugar. */\n\tfindEntriesOnBranch(query: EntryQuery & BranchBounds & { start: string }): Promise<Entry[]>;\n\tfindRecords<K extends LaneRecord[\"type\"]>(\n\t\tquery: RecordQuery & { type: K },\n\t): Promise<Extract<LaneRecord, { type: K }>[]>;\n\tfindRecords(query?: RecordQuery): Promise<LaneRecord[]>;\n\t/**\n\t * Returns unfinished operation starts newest first. Recovery uses `limit: 2`:\n\t * zero results mean the lane is idle, one means it is suspended, and two\n\t * mean at least two operations are open, which is corruption. Further\n\t * results provide no additional recovery state.\n\t */\n\tfindOpenOperations(lane: string, options?: { limit?: number }): Promise<OperationStartedRecord[]>;\n\tgetLog(options?: { afterSeq?: number; limit?: number }): Promise<LogItem[]>;\n\n\t// Global facts\n\tgetName(): Promise<string | undefined>;\n\tsetName(name: string | undefined): Promise<void>;\n\tgetLabel(id: string): Promise<string | undefined>;\n\tsetLabel(id: string, label: string | undefined): Promise<void>;\n\tgetStats(): Promise<SessionStats>;\n}\n\nexport interface SessionTree {\n\tgetLeafId(): Promise<string | null>;\n\tgetEntry(id: string): Promise<Entry | undefined>;\n\tgetStats(): Promise<SessionStats>;\n\n\t// Global facts. Latest wins; not branch-scoped. \"set\", not \"append\":\n\t// append vocabulary is reserved for tree writes.\n\tgetName(): Promise<string | undefined>;\n\tsetName(name: string | undefined): Promise<void>;\n\tgetLabel(targetId: string): Promise<string | undefined>;\n\tsetLabel(targetId: string, label: string | undefined): Promise<void>;\n\n\t/** Session-wide, all branches, sequence order. */\n\tfindEntries(query?: EntryQuery): Promise<Entry[]>;\n\tfindEntry(query?: EntryQuery): Promise<Entry | undefined>;\n\n\t/** Branch-scoped: the path from start toward root. */\n\tfindEntriesOnBranch(query?: EntryQuery & BranchBounds): Promise<Entry[]>;\n\tfindEntryOnBranch(query?: EntryQuery & BranchBounds): Promise<Entry | undefined>;\n\n\t// Writes. Resolve on durable acceptance; the returned id is the entry's\n\t// id (provisioned when the write defers).\n\tappendMessage(message: AgentMessage): Promise<string>;\n\tappendCustomEntry(customType: string, data?: unknown): Promise<string>;\n}\n\nexport interface SessionCreateOptions {\n\tid?: string;\n\tparentSessionId?: string;\n}\n\nexport type ForkOptions = { scope?: \"branch\"; entryId?: string; position?: \"before\" | \"at\" } | { scope: \"tree\" };\n\nexport interface SessionRepo<\n\tTMetadata extends SessionMetadata = SessionMetadata,\n\tTCreateOptions extends SessionCreateOptions = SessionCreateOptions,\n\tTListOptions = void,\n> {\n\tcreate(options: TCreateOptions): Promise<Session<TMetadata>>;\n\t/** Opens the session for writing and acquires any backend writer claim. */\n\topen(metadata: TMetadata): Promise<Session<TMetadata>>;\n\t/** Lists session metadata without opening sessions or acquiring writer claims. */\n\tlist(options?: TListOptions): Promise<TMetadata[]>;\n\tdelete(metadata: TMetadata): Promise<void>;\n\tfork(source: TMetadata, options: ForkOptions & TCreateOptions): Promise<Session<TMetadata>>;\n}\n\nexport type SessionErrorCode =\n\t| \"not_found\"\n\t| \"already_exists\"\n\t| \"invalid_entry\"\n\t| \"invalid_payload\"\n\t| \"invalid_lane\"\n\t| \"invalid_query\"\n\t| \"invalid_fork_target\"\n\t| \"storage\";\n\nexport class SessionError extends Error {\n\treadonly code: SessionErrorCode;\n\n\tconstructor(code: SessionErrorCode, message: string, cause?: Error) {\n\t\tsuper(message, cause === undefined ? undefined : { cause });\n\t\tthis.name = \"SessionError\";\n\t\tthis.code = code;\n\t}\n}\n"]}