omp-fabric 1.4.0 → 1.4.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.
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  MemoryProvider,
3
3
  normalizeMemoryArgs
4
- } from "../chunks/chunk-3H5LZWAG.js";
4
+ } from "../chunks/chunk-6JPXLXDS.js";
5
5
  import "../chunks/chunk-2KEWFW56.js";
6
6
  import "../chunks/chunk-U5FYOMG5.js";
7
7
  import "../chunks/chunk-FX3XLQYI.js";
8
8
  import "../chunks/chunk-6QBPSZJ5.js";
9
- import "../chunks/chunk-IY3IQPRQ.js";
9
+ import "../chunks/chunk-MBOXJKF6.js";
10
10
  import "../chunks/chunk-4HQDSTHN.js";
11
11
  import "../chunks/chunk-T5ZA5YRU.js";
12
12
  import "../chunks/chunk-6N4XGAZY.js";
@@ -1,16 +1,16 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  runResidentHostFromConfigPath
4
- } from "../chunks/chunk-IMSGR6OW.js";
5
- import "../chunks/chunk-S4I7RMR5.js";
4
+ } from "../chunks/chunk-SZWF6C4V.js";
5
+ import "../chunks/chunk-OW2LSF5R.js";
6
6
  import "../chunks/chunk-VPPIJRNZ.js";
7
7
  import "../chunks/chunk-JZWLICMS.js";
8
8
  import "../chunks/chunk-CT2AJ2UI.js";
9
- import "../chunks/chunk-WPU4PKXQ.js";
9
+ import "../chunks/chunk-LB2EC7FZ.js";
10
10
  import "../chunks/chunk-2J2GOB4A.js";
11
11
  import "../chunks/chunk-3LI7YO4M.js";
12
12
  import "../chunks/chunk-JSBTB3P6.js";
13
- import "../chunks/chunk-IY3IQPRQ.js";
13
+ import "../chunks/chunk-MBOXJKF6.js";
14
14
  import "../chunks/chunk-77FQHHZD.js";
15
15
  import "../chunks/chunk-7363CD5A.js";
16
16
  import "../chunks/chunk-ED3BRM6P.js";
@@ -1,15 +1,15 @@
1
1
  import {
2
2
  runResidentHostFromConfigPath
3
- } from "../chunks/chunk-IMSGR6OW.js";
4
- import "../chunks/chunk-S4I7RMR5.js";
3
+ } from "../chunks/chunk-SZWF6C4V.js";
4
+ import "../chunks/chunk-OW2LSF5R.js";
5
5
  import "../chunks/chunk-VPPIJRNZ.js";
6
6
  import "../chunks/chunk-JZWLICMS.js";
7
7
  import "../chunks/chunk-CT2AJ2UI.js";
8
- import "../chunks/chunk-WPU4PKXQ.js";
8
+ import "../chunks/chunk-LB2EC7FZ.js";
9
9
  import "../chunks/chunk-2J2GOB4A.js";
10
10
  import "../chunks/chunk-3LI7YO4M.js";
11
11
  import "../chunks/chunk-JSBTB3P6.js";
12
- import "../chunks/chunk-IY3IQPRQ.js";
12
+ import "../chunks/chunk-MBOXJKF6.js";
13
13
  import "../chunks/chunk-77FQHHZD.js";
14
14
  import "../chunks/chunk-7363CD5A.js";
15
15
  import "../chunks/chunk-ED3BRM6P.js";
@@ -82,6 +82,7 @@ export declare class LcmLedger {
82
82
  private readonly maintenanceBytes;
83
83
  private writeChain;
84
84
  private transactionDepth;
85
+ private closed;
85
86
  constructor(options?: LedgerOptions);
86
87
  get isDegraded(): boolean;
87
88
  get operationalState(): OperationalState;
@@ -1 +1 @@
1
- {"version":3,"file":"lcm-ledger.d.ts","sourceRoot":"","sources":["../../src/storage/lcm-ledger.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lcm-ledger.d.ts","sourceRoot":"","sources":["../../src/storage/lcm-ledger.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"lcm-migration.d.ts","sourceRoot":"","sources":["../../src/storage/lcm-migration.ts"],"names":[],"mappings":"AAKA,OAAO,EAAoF,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE9H,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,iBAAiB,KAAK,IAAI,CAAC;CACpD;AACD,UAAU,iBAAiB;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB;AACD,UAAU,eAAe;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;CAChB;AACD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,OAAO,GAAG,SAAS,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,eAAe,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,KAAK,CAAC;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAChE,QAAQ,EAAE,MAAM,CAAC;CAClB;AAYD,wBAAgB,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE,OAAO,GAAG,OAAO,GAAG,KAAK,CAAC,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAM5H;AAMD,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,gBAAgB,GAAG;IAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAkD5G;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE,OAAO,CAAC,GAAG;IAAE,KAAK,EAAE,CAAC,MAAM,CAAC,CAAA;CAAE,GAAG,eAAe,CAEhH;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,gBAAgB,GAAG,eAAe,CAwH1E"}
1
+ {"version":3,"file":"lcm-migration.d.ts","sourceRoot":"","sources":["../../src/storage/lcm-migration.ts"],"names":[],"mappings":"AAKA,OAAO,EAAoF,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE9H,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,iBAAiB,KAAK,IAAI,CAAC;CACpD;AACD,UAAU,iBAAiB;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB;AACD,UAAU,eAAe;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;CAChB;AACD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,OAAO,GAAG,SAAS,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,eAAe,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,KAAK,CAAC;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAChE,QAAQ,EAAE,MAAM,CAAC;CAClB;AAYD,wBAAgB,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE,OAAO,GAAG,OAAO,GAAG,KAAK,CAAC,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAM5H;AAMD,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,gBAAgB,GAAG;IAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAkD5G;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE,OAAO,CAAC,GAAG;IAAE,KAAK,EAAE,CAAC,MAAM,CAAC,CAAA;CAAE,GAAG,eAAe,CAEhH;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,gBAAgB,GAAG,eAAe,CAyH1E"}
@@ -96,3 +96,11 @@ bun run check
96
96
  ```
97
97
 
98
98
  This command includes typecheck, a fresh `dist/` build, the lazy-graph assertion, the full test suite, and dead-code lint.
99
+
100
+ ## Performance gate
101
+
102
+ `bun run benchmark:lcm` drives the fixed fixture from the LCM operational contract: 10 sessions of 1,000 raw entries at 1 KiB each, 20 compaction cycles through the built `session_before_compact` hook, a repeat pass that must reuse the ready frontier, and a second process appending to the same ledger. It fails when a row is lost or duplicated, when a node references an uncommitted source or child, when the hook issues any model call, when hook p95 exceeds 250 ms, when recall precision or exact expansion regresses, or when a restart loses rows or nodes. The run prints and writes a JSON report covering ingest throughput, hook latency percentiles for both the emergency and ready-frontier paths, maintenance backlog, recall and expansion latency, migration counts, database and WAL bytes, checkpoint outcomes, and lock errors observed by the competing process:
103
+
104
+ ```sh
105
+ bun run benchmark:lcm -- --out lcm-report.json
106
+ ```
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "omp-fabric",
3
- "version": "1.4.0",
3
+ "version": "1.4.2",
4
4
  "description": "A programmable tool and agent runtime for Oh My Pi (OMP)",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -36,6 +36,7 @@
36
36
  "benchmark:real-resume": "bun run build && node scripts/benchmark-real-resume.mjs",
37
37
  "benchmark:memory-heads": "bun run build && node scripts/benchmark-memory-heads.mjs",
38
38
  "benchmark:codemap": "bun scripts/benchmark-codemap.mjs",
39
+ "benchmark:lcm": "bun run build && bun scripts/benchmark-lcm.mjs",
39
40
  "lint:dead": "knip --no-gitignore",
40
41
  "check": "bun run typecheck && bun run build && bun run assert:lazy-graph && bun run test && bun run lint:dead",
41
42
  "assert:lazy-graph": "node scripts/assert-lazy-graph-host-free.mjs",
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/storage/lcm-ledger.ts"],
4
- "sourcesContent": ["import { DatabaseSync } from \"node:sqlite\";\nimport fs from \"node:fs\";\nimport path from \"node:path\";\nimport crypto from \"node:crypto\";\n\nexport interface ProjectIdentityInput { recordedCwd?: string; liveCwd?: string }\nexport interface ProjectIdentity { version: 1; key: string; canonicalPath?: string; device?: number; inode?: number; aliases: string[] }\nconst LCM_LEDGER_WARNING_BYTES = 8 * 1024 ** 3;\nconst LCM_LEDGER_MAINTENANCE_BYTES = 10 * 1024 ** 3;\nexport interface LedgerOptions { dbPath?: string; rootDir?: string; project?: ProjectIdentityInput; now?: () => number; warningBytes?: number; maintenanceBytes?: number }\nexport type OperationalState = \"healthy\" | \"warning\" | \"maintenance\" | \"degraded\";\nexport interface CheckpointMetrics { mode: \"passive\" | \"truncate\"; busy: number; logPages: number; checkpointedPages: number; truncated: boolean }\nexport interface BackupManifest { format: \"lcm-ledger-backup\"; version: 1; source: string; destination: string; sourceSha256: string; backupSha256: string; sourceStateSha256: string; rowCounts: Record<string, number>; integrity: \"ok\" | string; createdAt: number }\nexport interface DeleteConfirmationToken { readonly projectKey: string; readonly value: string; readonly __brand: \"DeleteConfirmationToken\" }\nexport function createDeleteConfirmationToken(projectKey: string): DeleteConfirmationToken { return { projectKey, value: hash(`delete:${projectKey}`), __brand: \"DeleteConfirmationToken\" }; }\nexport interface SessionEntry { projectKey: string; sessionId: string; entryId: string; revision?: number; role: string; content: string; payloadJson: string; parentEntryId?: string | null; branch?: string | null; recordedCwd?: string; createdAt?: number }\nexport interface RawEntry extends SessionEntry { revision: number; contentHash: string; payloadHash: string; createdAt: number }\n\nexport function canonicalLcmPayload(value: unknown): string {\n const normalized: unknown = JSON.parse(JSON.stringify(value));\n const encode = (item: unknown): string => {\n if (Array.isArray(item)) return `[${item.map(encode).join(\",\")}]`;\n if (item !== null && typeof item === \"object\") return `{${Object.keys(item).sort().map(key => `${JSON.stringify(key)}:${encode((item as Record<string, unknown>)[key])}`).join(\",\")}}`;\n return JSON.stringify(item);\n };\n return encode(normalized);\n}\nexport function hashLcmPayload(value: unknown): string { return crypto.createHash(\"sha256\").update(canonicalLcmPayload(value), \"utf8\").digest(\"hex\"); }\n\nconst SCHEMA = `\nCREATE TABLE IF NOT EXISTS schema_metadata (key TEXT PRIMARY KEY, value TEXT NOT NULL);\nCREATE TABLE IF NOT EXISTS projects (project_key TEXT PRIMARY KEY, identity_json TEXT NOT NULL, created_at INTEGER NOT NULL, updated_at INTEGER NOT NULL);\nCREATE TABLE IF NOT EXISTS project_aliases (alias TEXT PRIMARY KEY, project_key TEXT NOT NULL REFERENCES projects(project_key));\nCREATE TABLE IF NOT EXISTS sessions (project_key TEXT NOT NULL, session_id TEXT NOT NULL, created_at INTEGER NOT NULL, PRIMARY KEY(project_key, session_id));\nCREATE TABLE IF NOT EXISTS raw_entries (project_key TEXT NOT NULL, session_id TEXT NOT NULL, entry_id TEXT NOT NULL, revision INTEGER NOT NULL, role TEXT NOT NULL, content TEXT NOT NULL, content_hash TEXT NOT NULL, payload_json TEXT NOT NULL, parent_entry_id TEXT, branch TEXT, created_at INTEGER NOT NULL, PRIMARY KEY(project_key, session_id, entry_id, revision), UNIQUE(project_key, session_id, entry_id, content_hash));\nCREATE TABLE IF NOT EXISTS summary_nodes (node_id TEXT PRIMARY KEY, project_key TEXT NOT NULL, payload TEXT NOT NULL, created_at INTEGER NOT NULL);\nCREATE TABLE IF NOT EXISTS summary_edges (parent_id TEXT NOT NULL, child_id TEXT NOT NULL, PRIMARY KEY(parent_id, child_id));\nCREATE TABLE IF NOT EXISTS frontiers (project_key TEXT NOT NULL, frontier_id TEXT NOT NULL, node_id TEXT NOT NULL, created_at INTEGER NOT NULL, PRIMARY KEY(project_key, frontier_id, node_id));\nCREATE TABLE IF NOT EXISTS maintenance_jobs (job_id TEXT PRIMARY KEY, project_key TEXT NOT NULL, status TEXT NOT NULL, payload TEXT NOT NULL, created_at INTEGER NOT NULL, updated_at INTEGER NOT NULL);\nCREATE TABLE IF NOT EXISTS maintenance_usage (project_key TEXT NOT NULL, day TEXT NOT NULL, session_id TEXT NOT NULL, calls INTEGER NOT NULL, input_tokens INTEGER NOT NULL, output_tokens INTEGER NOT NULL, cost REAL NOT NULL, wall_ms INTEGER NOT NULL, PRIMARY KEY(project_key,day,session_id));\nCREATE INDEX IF NOT EXISTS raw_entries_lookup ON raw_entries(project_key, session_id, entry_id, revision);\n`;\n\nconst hash = (s: string) => crypto.createHash(\"sha256\").update(s).digest(\"hex\");\nconst fileHash = (file: string) => crypto.createHash(\"sha256\").update(fs.readFileSync(file)).digest(\"hex\");\nconst snapshotHash = (db: DatabaseSync): string => {\n const digest = crypto.createHash(\"sha256\");\n for (const [table, order] of [[\"schema_metadata\", \"key\"], [\"projects\", \"project_key\"], [\"project_aliases\", \"alias\"], [\"sessions\", \"project_key,session_id\"], [\"raw_entries\", \"project_key,session_id,entry_id,revision\"], [\"summary_nodes\", \"node_id\"], [\"summary_edges\", \"parent_id,child_id\"], [\"frontiers\", \"project_key,frontier_id,node_id\"], [\"maintenance_jobs\", \"job_id\"], [\"maintenance_usage\", \"project_key,day,session_id\"]] as const) {\n digest.update(`${table}\\0`);\n for (const row of db.prepare(`SELECT * FROM ${table} ORDER BY ${order}`).all()) digest.update(`${JSON.stringify(row)}\\0`);\n }\n return digest.digest(\"hex\");\n};\nconst normalize = (p: string) => path.normalize(path.resolve(p));\nconst statIdentity = (p: string) => { try { const s = fs.statSync(p); return { device: Number(s.dev), inode: Number(s.ino) }; } catch { return {}; } };\n\nexport function canonicalProjectIdentity(input: ProjectIdentityInput): ProjectIdentity {\n const source = input.recordedCwd?.trim() || input.liveCwd?.trim();\n if (!source) throw new Error(\"project cwd is required\");\n const normalized = normalize(source);\n let canonicalPath = normalized;\n try { canonicalPath = fs.realpathSync.native(normalized); } catch {}\n const ids = statIdentity(canonicalPath);\n const key = ids.device !== undefined && ids.inode !== undefined ? `v1:devino:${ids.device}:${ids.inode}` : `v1:path:${canonicalPath}`;\n return { version: 1, key, canonicalPath, ...ids, aliases: [normalized, canonicalPath] };\n}\n\nexport function defaultLedgerPath(rootDir = path.join(process.env.XDG_STATE_HOME || path.join(process.env.HOME || \".\", \".local\", \"state\"), \"omp-fabric\", \"lcm\"), projectKey = \"default\"): string {\n return path.join(rootDir, `${hash(projectKey).slice(0, 24)}.sqlite`);\n}\n\nclass LedgerDegradedError extends Error { constructor(message: string, public readonly cause?: unknown) { super(message); this.name = \"LedgerDegradedError\"; } }\n\nexport class LcmLedger {\n readonly db: DatabaseSync;\n readonly project: ProjectIdentity;\n private degraded = false;\n private readonly dbPath: string;\n private readonly now: () => number;\n private readonly warningBytes: number;\n private readonly maintenanceBytes: number;\n private writeChain: Promise<void> = Promise.resolve();\n private transactionDepth = 0;\n constructor(options: LedgerOptions = {}) {\n this.now = options.now ?? Date.now;\n this.warningBytes = options.warningBytes ?? LCM_LEDGER_WARNING_BYTES;\n this.maintenanceBytes = options.maintenanceBytes ?? LCM_LEDGER_MAINTENANCE_BYTES;\n if (!Number.isSafeInteger(this.warningBytes) || !Number.isSafeInteger(this.maintenanceBytes) || this.warningBytes < 0 || this.maintenanceBytes < this.warningBytes) {\n throw new Error(\"invalid ledger size thresholds\");\n }\n this.project = canonicalProjectIdentity(options.project ?? { liveCwd: process.cwd() });\n const dbPath = options.dbPath ?? defaultLedgerPath(options.rootDir, this.project.key);\n fs.mkdirSync(path.dirname(dbPath), { recursive: true });\n this.dbPath = dbPath;\n this.db = new DatabaseSync(dbPath);\n try {\n this.db.exec(\"PRAGMA journal_mode=WAL; PRAGMA synchronous=FULL; PRAGMA busy_timeout=5000; PRAGMA wal_autocheckpoint=1000;\");\n this.db.exec(\"BEGIN IMMEDIATE;\" + SCHEMA + \"INSERT INTO schema_metadata(key,value) VALUES ('version','1') ON CONFLICT(key) DO UPDATE SET value='1'; COMMIT;\");\n const columns = this.db.prepare(\"PRAGMA table_info(raw_entries)\").all() as Array<{ name: string }>;\n if (!columns.some(column => column.name === \"payload_json\")) {\n if (Number((this.db.prepare(\"SELECT count(*) n FROM raw_entries\").get() as { n: number }).n)) throw new Error(\"raw payloads missing; reimport authoritative session entries\");\n this.db.exec(\"ALTER TABLE raw_entries ADD COLUMN payload_json TEXT NOT NULL DEFAULT ''\");\n }\n const result = this.db.prepare(\"PRAGMA integrity_check\").get() as { integrity_check?: string };\n if (result.integrity_check !== \"ok\") throw new Error(String(result.integrity_check));\n this.registerProject(this.project);\n } catch (error) { this.degraded = true; throw new LedgerDegradedError(\"ledger startup failed\", error); }\n }\n get isDegraded() { return this.degraded; }\n get operationalState(): OperationalState {\n if (this.degraded) return \"degraded\";\n try { const size = fs.statSync(this.dbPath).size; if (size >= this.maintenanceBytes) return \"maintenance\"; if (size >= this.warningBytes) return \"warning\"; } catch {}\n return \"healthy\";\n }\n markDegraded(error?: unknown) { this.degraded = true; return new LedgerDegradedError(\"ledger is degraded\", error); }\n private registerProject(identity: ProjectIdentity) {\n const now = this.now();\n this.db.prepare(\"INSERT INTO projects(project_key,identity_json,created_at,updated_at) VALUES(?,?,?,?) ON CONFLICT(project_key) DO UPDATE SET identity_json=excluded.identity_json,updated_at=excluded.updated_at\").run(identity.key, JSON.stringify(identity), now, now);\n for (const alias of identity.aliases) {\n const existing = this.db.prepare(\"SELECT project_key FROM project_aliases WHERE alias=?\").get(alias) as { project_key?: string } | undefined;\n if (existing && existing.project_key !== identity.key) throw new LedgerDegradedError(`ambiguous project alias: ${alias}`);\n this.db.prepare(\"INSERT OR IGNORE INTO project_aliases(alias,project_key) VALUES(?,?)\").run(alias, identity.key);\n }\n }\n private guard() { if (this.degraded) throw new LedgerDegradedError(\"ledger is degraded\"); }\n private assertProjectKey(projectKey: string) { if (projectKey !== this.project.key) throw new Error(\"project key does not match ledger project\"); }\n async serialize<T>(operation: () => T): Promise<T> { const previous = this.writeChain; let release!: () => void; this.writeChain = new Promise<void>(resolve => { release = resolve }); await previous; try { this.guard(); return operation(); } finally { release(); } }\n appendRaw(entry: SessionEntry): RawEntry {\n this.guard();\n if (entry.projectKey !== this.project.key) throw new Error(\"entry project does not match ledger project\");\n if (entry.entryId.trim().length === 0) throw new Error(\"entry ID is required\");\n if (typeof entry.payloadJson !== \"string\" || !entry.payloadJson.trim()) throw new Error(\"full payload JSON is required\");\n let payload: Record<string, unknown>;\n try { payload = JSON.parse(entry.payloadJson) as Record<string, unknown>; } catch { throw new Error(\"invalid payload JSON\"); }\n if (!payload || typeof payload !== \"object\" || typeof payload.type !== \"string\" || typeof payload.id !== \"string\" || payload.id !== entry.entryId) throw new Error(\"payload must be a full SessionEntry\");\n const payloadJson = canonicalLcmPayload(payload);\n const contentHash = hashLcmPayload(payload);\n const ownsTransaction = this.transactionDepth === 0;\n if (ownsTransaction) this.db.exec(\"BEGIN IMMEDIATE\");\n try {\n const existing = this.db.prepare(\"SELECT revision,created_at FROM raw_entries WHERE project_key=? AND session_id=? AND entry_id=? AND content_hash=?\").get(entry.projectKey, entry.sessionId, entry.entryId, contentHash) as { revision: number; created_at: number } | undefined;\n if (existing) { if (ownsTransaction) this.db.exec(\"COMMIT\"); return { ...entry, payloadJson, payloadHash: contentHash, revision: existing.revision, contentHash, createdAt: existing.created_at }; }\n const latest = this.db.prepare(\"SELECT COALESCE(MAX(revision),0) revision FROM raw_entries WHERE project_key=? AND session_id=? AND entry_id=?\").get(entry.projectKey, entry.sessionId, entry.entryId) as { revision: number };\n const revision = latest.revision + 1; const createdAt = entry.createdAt ?? this.now();\n this.db.prepare(\"INSERT OR IGNORE INTO sessions(project_key,session_id,created_at) VALUES(?,?,?)\").run(entry.projectKey, entry.sessionId, createdAt);\n this.db.prepare(\"INSERT INTO raw_entries(project_key,session_id,entry_id,revision,role,content,content_hash,payload_json,parent_entry_id,branch,created_at) VALUES(?,?,?,?,?,?,?,?,?,?,?)\").run(entry.projectKey,entry.sessionId,entry.entryId,revision,entry.role,entry.content,contentHash,payloadJson,entry.parentEntryId ?? null,entry.branch ?? null,createdAt);\n if (ownsTransaction) this.db.exec(\"COMMIT\");\n return { ...entry, payloadJson, payloadHash: contentHash, revision, contentHash, createdAt };\n } catch (error) {\n if (ownsTransaction) this.db.exec(\"ROLLBACK\");\n const code = (error as NodeJS.ErrnoException).code; if (code === \"ENOSPC\" || code === \"SQLITE_FULL\" || String(error).includes(\"database or disk is full\")) this.degraded = true; throw new LedgerDegradedError(\"ledger write failed\", error);\n }\n }\n readRaw(projectKey = this.project.key, sessionId?: string): RawEntry[] { this.guard(); this.assertProjectKey(projectKey); const rows = sessionId ? this.db.prepare(\"SELECT * FROM raw_entries WHERE project_key=? AND session_id=? ORDER BY created_at,revision\").all(projectKey,sessionId) : this.db.prepare(\"SELECT * FROM raw_entries WHERE project_key=? ORDER BY created_at,session_id,entry_id,revision\").all(projectKey); return (rows as Array<Record<string, unknown>>).map(row => ({ projectKey: row.project_key as string, sessionId: row.session_id as string, entryId: row.entry_id as string, revision: row.revision as number, role: row.role as string, content: row.content as string, contentHash: row.content_hash as string, payloadHash: row.content_hash as string, payloadJson: row.payload_json as string, parentEntryId: row.parent_entry_id as string | null, branch: row.branch as string | null, createdAt: row.created_at as number })); }\n readRawPage(projectKey = this.project.key, sessionId?: string, offset = 0, limit = 100): RawEntry[] { if (!Number.isSafeInteger(offset) || offset < 0 || !Number.isSafeInteger(limit) || limit < 1) throw new Error(\"invalid raw page\"); this.guard(); this.assertProjectKey(projectKey); const rows = sessionId ? this.db.prepare(\"SELECT * FROM raw_entries WHERE project_key=? AND session_id=? ORDER BY created_at,revision LIMIT ? OFFSET ?\").all(projectKey,sessionId,limit,offset) : this.db.prepare(\"SELECT * FROM raw_entries WHERE project_key=? ORDER BY created_at,session_id,entry_id,revision LIMIT ? OFFSET ?\").all(projectKey,limit,offset); return (rows as Array<Record<string, unknown>>).map(row => ({ projectKey: row.project_key as string, sessionId: row.session_id as string, entryId: row.entry_id as string, revision: row.revision as number, role: row.role as string, content: row.content as string, contentHash: row.content_hash as string, payloadHash: row.content_hash as string, payloadJson: row.payload_json as string, parentEntryId: row.parent_entry_id as string | null, branch: row.branch as string | null, createdAt: row.created_at as number })); }\n readRawEntry(projectKey: string, sessionId: string, entryId: string, revision: number): RawEntry | undefined { this.guard(); this.assertProjectKey(projectKey); const row = this.db.prepare(\"SELECT * FROM raw_entries WHERE project_key=? AND session_id=? AND entry_id=? AND revision=?\").get(projectKey,sessionId,entryId,revision) as Record<string, unknown> | undefined; return row ? { projectKey: row.project_key as string, sessionId: row.session_id as string, entryId: row.entry_id as string, revision: row.revision as number, role: row.role as string, content: row.content as string, contentHash: row.content_hash as string, payloadHash: row.content_hash as string, payloadJson: row.payload_json as string, parentEntryId: row.parent_entry_id as string | null, branch: row.branch as string | null, createdAt: row.created_at as number } : undefined; }\n readOnly<T>(fn: (db: DatabaseSync) => T): T { this.guard(); return fn(this.db); }\n transaction<T>(fn: (db: DatabaseSync) => T): T { this.guard(); if (this.transactionDepth > 0) return fn(this.db); this.db.exec(\"BEGIN IMMEDIATE\"); this.transactionDepth = 1; try { const result = fn(this.db); this.db.exec(\"COMMIT\"); return result; } catch (error) { this.db.exec(\"ROLLBACK\"); throw error; } finally { this.transactionDepth = 0; } }\n checkpoint(mode: \"passive\" | \"truncate\" = \"passive\"): CheckpointMetrics {\n const row = this.db.prepare(`PRAGMA wal_checkpoint(${mode.toUpperCase()})`).get() as { busy?: number; log?: number; checkpointed?: number };\n const busy = row.busy ?? 0;\n const logPages = row.log ?? 0;\n return { mode, busy, logPages, checkpointedPages: row.checkpointed ?? 0, truncated: mode === \"truncate\" && busy === 0 && logPages === 0 };\n }\n backup(destination: string): BackupManifest {\n this.guard();\n return this.serializeSync(() => {\n const target = path.resolve(destination);\n fs.mkdirSync(path.dirname(target), { recursive: true });\n if (fs.existsSync(target)) throw new Error(\"backup destination exists\");\n this.db.exec(`VACUUM INTO '${target.replace(/'/g, \"''\")}'`);\n fs.chmodSync(target, 0o600);\n const copy = new DatabaseSync(target);\n let integrity = \"unknown\";\n let backupStateSha256 = \"\";\n const rowCounts: Record<string, number> = {};\n try {\n integrity = (copy.prepare(\"PRAGMA integrity_check\").get() as { integrity_check?: string }).integrity_check ?? \"unknown\";\n for (const table of [\"projects\", \"sessions\", \"raw_entries\", \"summary_nodes\", \"summary_edges\", \"frontiers\", \"maintenance_jobs\", \"maintenance_usage\"]) {\n rowCounts[table] = Number((copy.prepare(`SELECT count(*) n FROM ${table}`).get() as { n: number }).n);\n }\n backupStateSha256 = snapshotHash(copy);\n } finally {\n copy.close();\n }\n const manifest: BackupManifest = { format: \"lcm-ledger-backup\", version: 1, source: this.dbPath, destination: target, sourceSha256: fileHash(this.dbPath), backupSha256: fileHash(target), sourceStateSha256: backupStateSha256, rowCounts, integrity, createdAt: this.now() };\n fs.writeFileSync(`${target}.manifest.json`, JSON.stringify(manifest), { mode: 0o600 });\n fs.chmodSync(`${target}.manifest.json`, 0o600);\n return manifest;\n });\n }\n exportBackup(destination: string): BackupManifest { return this.backup(destination); }\n deleteProject(token: DeleteConfirmationToken, backupManifest: BackupManifest): void {\n this.guard();\n if (token.__brand !== \"DeleteConfirmationToken\" || token.projectKey !== this.project.key || token.value !== hash(`delete:${this.project.key}`)) throw new Error(\"invalid delete confirmation token\");\n const backupDb = fs.existsSync(backupManifest.destination) ? new DatabaseSync(backupManifest.destination) : undefined;\n let backupStateSha256: string | undefined;\n try {\n if (backupDb) backupStateSha256 = snapshotHash(backupDb);\n } finally {\n backupDb?.close();\n }\n if (backupManifest.integrity !== \"ok\" || backupManifest.source !== this.dbPath || !backupManifest.backupSha256 || backupManifest.backupSha256 !== fileHash(backupManifest.destination) || !backupManifest.sourceStateSha256 || backupManifest.sourceStateSha256 !== backupStateSha256 || backupManifest.sourceSha256 !== fileHash(this.dbPath) || backupManifest.sourceStateSha256 !== snapshotHash(this.db)) throw new Error(\"backup verification failed\");\n this.transaction(db => {\n db.prepare(\"DELETE FROM summary_edges WHERE parent_id IN (SELECT node_id FROM summary_nodes WHERE project_key=?) OR child_id IN (SELECT node_id FROM summary_nodes WHERE project_key=?)\").run(this.project.key, this.project.key);\n for (const table of [\"raw_entries\", \"sessions\", \"frontiers\", \"summary_nodes\", \"maintenance_jobs\", \"maintenance_usage\"]) db.prepare(`DELETE FROM ${table} WHERE project_key=?`).run(this.project.key);\n db.prepare(\"DELETE FROM project_aliases WHERE project_key=?\").run(this.project.key);\n db.prepare(\"DELETE FROM projects WHERE project_key=?\").run(this.project.key);\n });\n const integrity = (this.db.prepare(\"PRAGMA integrity_check\").get() as { integrity_check?: string }).integrity_check;\n if (integrity !== \"ok\") throw new Error(`post-delete integrity failed: ${integrity}`);\n const audit = { format: \"lcm-ledger-delete\", version: 1, projectKey: this.project.key, deletedAt: this.now(), integrity, remaining: Number((this.db.prepare(\"SELECT count(*) n FROM projects WHERE project_key=?\").get(this.project.key) as { n: number }).n) };\n fs.writeFileSync(`${backupManifest.destination}.delete-manifest.json`, JSON.stringify(audit), { mode: 0o600 });\n }\n private serializeSync<T>(operation: () => T): T { this.guard(); return operation(); }\n close() { this.db.close(); }\n}\n"],
5
- "mappings": "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",
6
- "names": []
7
- }