@remnic/core 9.3.762 → 9.3.763

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 (99) hide show
  1. package/dist/access-admin-ops-surface.js +5 -5
  2. package/dist/access-boundary.js +6 -6
  3. package/dist/access-cli.js +26 -26
  4. package/dist/access-http.js +10 -10
  5. package/dist/access-identity-continuity-surface.js +5 -5
  6. package/dist/access-lcm-surface.js +5 -5
  7. package/dist/access-mcp.js +9 -9
  8. package/dist/access-observe-write-surface.js +5 -5
  9. package/dist/access-operations-batch.js +7 -7
  10. package/dist/access-operations.js +8 -8
  11. package/dist/access-recall-surface.js +5 -5
  12. package/dist/access-service.js +5 -5
  13. package/dist/briefing.js +3 -3
  14. package/dist/causal-consolidation.js +4 -4
  15. package/dist/{chunk-OQ6F3WBX.js → chunk-2RLECZ6J.js} +2 -2
  16. package/dist/{chunk-TIWRP5NW.js → chunk-6YEENRE3.js} +4 -4
  17. package/dist/{chunk-WAIMHMO3.js → chunk-6ZFE2TPO.js} +3 -3
  18. package/dist/{chunk-DPZ5GJMD.js → chunk-A4FMQIST.js} +2 -2
  19. package/dist/{chunk-ZTBH2OHD.js → chunk-AS2NRB45.js} +2 -2
  20. package/dist/{chunk-EDC7RZCW.js → chunk-BAF7MBEH.js} +13 -13
  21. package/dist/{chunk-HDFS6RWQ.js → chunk-CVINPTKG.js} +2 -2
  22. package/dist/{chunk-DB647OZ4.js → chunk-D6YTILJO.js} +13 -13
  23. package/dist/{chunk-P7W4CDX6.js → chunk-DTTVX6EO.js} +11 -3
  24. package/dist/chunk-DTTVX6EO.js.map +1 -0
  25. package/dist/{chunk-HDYFNXVO.js → chunk-IVFIYAIP.js} +2 -2
  26. package/dist/{chunk-JU6BKZHX.js → chunk-K4EDULCP.js} +3 -3
  27. package/dist/{chunk-QPFO54VC.js → chunk-KXG7HHIQ.js} +2 -2
  28. package/dist/{chunk-2KYXXMTE.js → chunk-LDCFFJ67.js} +4 -4
  29. package/dist/{chunk-ESDBHQY6.js → chunk-N3QDLE2N.js} +5 -5
  30. package/dist/{chunk-4HYJETVO.js → chunk-N4ZA2I7M.js} +2 -2
  31. package/dist/{chunk-TEKTCF2V.js → chunk-NDXJJKT2.js} +2 -2
  32. package/dist/{chunk-2PGB63VU.js → chunk-NFWTMM2M.js} +2 -2
  33. package/dist/{chunk-PNFN7SIN.js → chunk-OX272PBW.js} +2 -2
  34. package/dist/{chunk-HMUEAKSD.js → chunk-QPTP6SKC.js} +2 -2
  35. package/dist/{chunk-VHYFY3JI.js → chunk-R3K4CXPR.js} +2 -2
  36. package/dist/{chunk-IIURIWJG.js → chunk-SFNQDXXL.js} +9 -5
  37. package/dist/chunk-SFNQDXXL.js.map +1 -0
  38. package/dist/{chunk-MB5RSUW6.js → chunk-SXN3LCUT.js} +114 -28
  39. package/dist/chunk-SXN3LCUT.js.map +1 -0
  40. package/dist/{chunk-LAJIXABF.js → chunk-TIOXQPD7.js} +5 -5
  41. package/dist/{chunk-ES3GAMSQ.js → chunk-VKHZFF5P.js} +2 -2
  42. package/dist/{chunk-KZWUJC7Y.js → chunk-X7HTU4HO.js} +2 -2
  43. package/dist/{chunk-QWIE43BS.js → chunk-YDYC6PIS.js} +2 -2
  44. package/dist/cli.js +20 -20
  45. package/dist/compounding/engine.js +3 -3
  46. package/dist/connectors/codex-materialize-runner.js +3 -3
  47. package/dist/connectors/index.js +3 -3
  48. package/dist/entity-retrieval.js +3 -3
  49. package/dist/index.js +26 -26
  50. package/dist/maintenance/memory-governance.js +3 -3
  51. package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +3 -3
  52. package/dist/maintenance/rebuild-memory-projection.js +4 -4
  53. package/dist/memory-projection-store.d.ts +6 -2
  54. package/dist/memory-projection-store.js +9 -3
  55. package/dist/namespaces/migrate.js +4 -4
  56. package/dist/namespaces/storage.js +3 -3
  57. package/dist/operator-toolkit.js +7 -7
  58. package/dist/orchestration/maintenance.js +5 -5
  59. package/dist/orchestrator.js +26 -26
  60. package/dist/{purge-6ATBGT77.js → purge-IHRX4Z7X.js} +7 -1
  61. package/dist/purge-IHRX4Z7X.js.map +1 -0
  62. package/dist/semantic-consolidation.js +4 -4
  63. package/dist/semantic-rule-promotion.js +3 -3
  64. package/dist/semantic-rule-verifier.js +3 -3
  65. package/dist/storage.js +2 -2
  66. package/dist/verified-recall.js +3 -3
  67. package/package.json +2 -2
  68. package/src/maintenance/purge.test.ts +76 -0
  69. package/src/maintenance/purge.ts +3 -0
  70. package/src/maintenance/rebuild-memory-projection.ts +5 -1
  71. package/src/memory-projection-store.ts +143 -35
  72. package/src/storage.ts +8 -8
  73. package/dist/chunk-IIURIWJG.js.map +0 -1
  74. package/dist/chunk-MB5RSUW6.js.map +0 -1
  75. package/dist/chunk-P7W4CDX6.js.map +0 -1
  76. package/dist/purge-6ATBGT77.js.map +0 -1
  77. /package/dist/{chunk-OQ6F3WBX.js.map → chunk-2RLECZ6J.js.map} +0 -0
  78. /package/dist/{chunk-TIWRP5NW.js.map → chunk-6YEENRE3.js.map} +0 -0
  79. /package/dist/{chunk-WAIMHMO3.js.map → chunk-6ZFE2TPO.js.map} +0 -0
  80. /package/dist/{chunk-DPZ5GJMD.js.map → chunk-A4FMQIST.js.map} +0 -0
  81. /package/dist/{chunk-ZTBH2OHD.js.map → chunk-AS2NRB45.js.map} +0 -0
  82. /package/dist/{chunk-EDC7RZCW.js.map → chunk-BAF7MBEH.js.map} +0 -0
  83. /package/dist/{chunk-HDFS6RWQ.js.map → chunk-CVINPTKG.js.map} +0 -0
  84. /package/dist/{chunk-DB647OZ4.js.map → chunk-D6YTILJO.js.map} +0 -0
  85. /package/dist/{chunk-HDYFNXVO.js.map → chunk-IVFIYAIP.js.map} +0 -0
  86. /package/dist/{chunk-JU6BKZHX.js.map → chunk-K4EDULCP.js.map} +0 -0
  87. /package/dist/{chunk-QPFO54VC.js.map → chunk-KXG7HHIQ.js.map} +0 -0
  88. /package/dist/{chunk-2KYXXMTE.js.map → chunk-LDCFFJ67.js.map} +0 -0
  89. /package/dist/{chunk-ESDBHQY6.js.map → chunk-N3QDLE2N.js.map} +0 -0
  90. /package/dist/{chunk-4HYJETVO.js.map → chunk-N4ZA2I7M.js.map} +0 -0
  91. /package/dist/{chunk-TEKTCF2V.js.map → chunk-NDXJJKT2.js.map} +0 -0
  92. /package/dist/{chunk-2PGB63VU.js.map → chunk-NFWTMM2M.js.map} +0 -0
  93. /package/dist/{chunk-PNFN7SIN.js.map → chunk-OX272PBW.js.map} +0 -0
  94. /package/dist/{chunk-HMUEAKSD.js.map → chunk-QPTP6SKC.js.map} +0 -0
  95. /package/dist/{chunk-VHYFY3JI.js.map → chunk-R3K4CXPR.js.map} +0 -0
  96. /package/dist/{chunk-LAJIXABF.js.map → chunk-TIOXQPD7.js.map} +0 -0
  97. /package/dist/{chunk-ES3GAMSQ.js.map → chunk-VKHZFF5P.js.map} +0 -0
  98. /package/dist/{chunk-KZWUJC7Y.js.map → chunk-X7HTU4HO.js.map} +0 -0
  99. /package/dist/{chunk-QWIE43BS.js.map → chunk-YDYC6PIS.js.map} +0 -0
@@ -5,7 +5,7 @@ import {
5
5
  // src/memory-projection-store.ts
6
6
  import path from "path";
7
7
  import fs from "fs";
8
- var MEMORY_PROJECTION_SCHEMA_VERSION = 2;
8
+ var MEMORY_PROJECTION_SCHEMA_VERSION = 3;
9
9
  function getMemoryProjectionPath(memoryDir) {
10
10
  return path.join(memoryDir, "state", "memory-projection.sqlite");
11
11
  }
@@ -48,7 +48,8 @@ function memoryCurrentSelectExpressions(db) {
48
48
  const columns = listTableColumns(db, "memory_current");
49
49
  return {
50
50
  tagsJson: columns.has("tags_json") ? "tags_json" : `'[]' AS tags_json`,
51
- previewText: columns.has("preview_text") ? "preview_text" : `'' AS preview_text`
51
+ previewText: columns.has("preview_text") ? "preview_text" : `'' AS preview_text`,
52
+ hasPathValid: columns.has("path_valid")
52
53
  };
53
54
  }
54
55
  function initializeMemoryProjectionDb(db) {
@@ -64,6 +65,7 @@ function initializeMemoryProjectionDb(db) {
64
65
  status TEXT NOT NULL,
65
66
  lifecycle_state TEXT,
66
67
  path_rel TEXT NOT NULL,
68
+ path_valid INTEGER NOT NULL DEFAULT 0 CHECK (path_valid IN (0, 1)),
67
69
  created_at TEXT NOT NULL,
68
70
  updated_at TEXT NOT NULL,
69
71
  archived_at TEXT,
@@ -85,8 +87,6 @@ function initializeMemoryProjectionDb(db) {
85
87
  CREATE INDEX IF NOT EXISTS idx_memory_current_category
86
88
  ON memory_current(category);
87
89
 
88
- CREATE INDEX IF NOT EXISTS idx_memory_current_updated
89
- ON memory_current(updated_at DESC);
90
90
 
91
91
  CREATE TABLE IF NOT EXISTS memory_timeline (
92
92
  event_id TEXT PRIMARY KEY,
@@ -186,6 +186,18 @@ function initializeMemoryProjectionDb(db) {
186
186
  ON memory_review_actions(run_id, memory_id);
187
187
  `);
188
188
  migrateMemoryCurrentTable(db);
189
+ if (listTableColumns(db, "memory_current").has("path_valid")) {
190
+ db.exec(`
191
+ CREATE INDEX IF NOT EXISTS idx_memory_current_browse_updated_desc
192
+ ON memory_current(path_valid, updated_at DESC, created_at DESC, memory_id ASC);
193
+ CREATE INDEX IF NOT EXISTS idx_memory_current_browse_updated_asc
194
+ ON memory_current(path_valid, updated_at ASC, created_at ASC, memory_id ASC);
195
+ CREATE INDEX IF NOT EXISTS idx_memory_current_browse_created_desc
196
+ ON memory_current(path_valid, created_at DESC, updated_at DESC, memory_id ASC);
197
+ CREATE INDEX IF NOT EXISTS idx_memory_current_browse_created_asc
198
+ ON memory_current(path_valid, created_at ASC, updated_at ASC, memory_id ASC);
199
+ `);
200
+ }
189
201
  db.prepare("INSERT OR REPLACE INTO meta(key, value) VALUES (?, ?)").run("schemaVersion", String(MEMORY_PROJECTION_SCHEMA_VERSION));
190
202
  }
191
203
  function openProjectionReadonly(memoryDir) {
@@ -196,6 +208,31 @@ function openProjectionReadonly(memoryDir) {
196
208
  return null;
197
209
  }
198
210
  }
211
+ function updateProjectionBestEffort(memoryDir, sql, params) {
212
+ let db = null;
213
+ try {
214
+ db = openBetterSqlite3(getMemoryProjectionPath(memoryDir), { fileMustExist: true });
215
+ db.prepare(sql).run(...params);
216
+ } catch {
217
+ } finally {
218
+ db?.close();
219
+ }
220
+ }
221
+ function markProjectedMemoryPathInvalid(memoryDir, memoryId) {
222
+ updateProjectionBestEffort(
223
+ memoryDir,
224
+ "UPDATE memory_current SET path_valid = 0 WHERE memory_id = ?",
225
+ [memoryId]
226
+ );
227
+ }
228
+ function updateProjectedMemoryPath(memoryDir, memoryId, pathRel) {
229
+ const pathValid = isProjectedMemoryPathValid(memoryDir, pathRel) ? 1 : 0;
230
+ updateProjectionBestEffort(
231
+ memoryDir,
232
+ "UPDATE memory_current SET path_rel = ?, path_valid = ? WHERE memory_id = ?",
233
+ [pathRel, pathValid, memoryId]
234
+ );
235
+ }
199
236
  function withProjectionReadonly(memoryDir, reader) {
200
237
  const db = openProjectionReadonly(memoryDir);
201
238
  if (!db) return null;
@@ -240,7 +277,7 @@ function isPathInsideRoot(candidatePath, rootPath) {
240
277
  const relative = path.relative(rootPath, candidatePath);
241
278
  return relative === "" || !relative.startsWith("..") && !path.isAbsolute(relative);
242
279
  }
243
- function resolveProjectedMemoryPath(memoryDir, pathRel) {
280
+ function resolveProjectedMemoryPath(memoryDir, pathRel, requireExisting = false) {
244
281
  if (path.isAbsolute(pathRel)) return null;
245
282
  const root = resolveMemoryDirRoot(memoryDir);
246
283
  const candidate = path.resolve(root, pathRel);
@@ -249,14 +286,18 @@ function resolveProjectedMemoryPath(memoryDir, pathRel) {
249
286
  const realCandidate = fs.realpathSync(candidate);
250
287
  if (!isPathInsideRoot(realCandidate, root)) return null;
251
288
  } catch {
289
+ if (requireExisting) return null;
252
290
  }
253
291
  return candidate;
254
292
  }
255
- function projectedBrowseRowFromCurrentRow(memoryDir, row) {
293
+ function isProjectedMemoryPathValid(memoryDir, pathRel) {
294
+ return resolveProjectedMemoryPath(memoryDir, pathRel) !== null;
295
+ }
296
+ function projectedBrowseRowFromCurrentRow(memoryDir, row, resolvedFilePath, requireExisting = false) {
256
297
  if (typeof row.memory_id !== "string" || typeof row.path_rel !== "string" || typeof row.category !== "string" || typeof row.status !== "string") {
257
298
  return null;
258
299
  }
259
- const filePath = resolveProjectedMemoryPath(memoryDir, row.path_rel);
300
+ const filePath = resolvedFilePath ?? resolveProjectedMemoryPath(memoryDir, row.path_rel, requireExisting);
260
301
  if (!filePath) return null;
261
302
  return {
262
303
  id: row.memory_id,
@@ -427,7 +468,9 @@ function readProjectedMemoryBrowse(memoryDir, options) {
427
468
  })();
428
469
  const whereSql = whereClauses.length > 0 ? `WHERE ${whereClauses.join(" AND ")}` : "";
429
470
  if (normalizedQuery) {
430
- const allRows = db.prepare(`
471
+ const queryWhereClauses = currentSelect.hasPathValid ? [...whereClauses, ...projectedBrowsePathSqlClauses(), "path_valid = 1"] : whereClauses;
472
+ const queryWhereSql = queryWhereClauses.length > 0 ? `WHERE ${queryWhereClauses.join(" AND ")}` : "";
473
+ const rows = db.prepare(`
431
474
  SELECT
432
475
  memory_id,
433
476
  path_rel,
@@ -439,35 +482,75 @@ function readProjectedMemoryBrowse(memoryDir, options) {
439
482
  ${currentSelect.tagsJson},
440
483
  ${currentSelect.previewText}
441
484
  FROM memory_current
442
- ${whereSql}
485
+ ${queryWhereSql}
443
486
  ORDER BY ${orderBySql}
444
- `).all(...params);
445
- const filtered = allRows.filter((row) => {
446
- if (typeof row.memory_id !== "string" || typeof row.path_rel !== "string") return false;
447
- const filePath = resolveProjectedMemoryPath(memoryDir, row.path_rel);
448
- if (!filePath) return false;
487
+ `).iterate(...params);
488
+ const pageRows2 = [];
489
+ let total = 0;
490
+ for (const row of rows) {
491
+ if (typeof row.memory_id !== "string" || typeof row.path_rel !== "string") continue;
492
+ const filePath = resolveProjectedMemoryPath(
493
+ memoryDir,
494
+ row.path_rel,
495
+ currentSelect.hasPathValid
496
+ );
497
+ if (!filePath) continue;
449
498
  const preview = typeof row.preview_text === "string" ? row.preview_text.toLowerCase() : "";
450
499
  const category = typeof row.category === "string" ? row.category.toLowerCase() : "";
451
500
  const entityRef = typeof row.entity_ref === "string" ? row.entity_ref.toLowerCase() : "";
452
501
  const tags = typeof row.tags_json === "string" ? row.tags_json.toLowerCase() : "";
453
- if (preview.includes(normalizedQuery) || category.includes(normalizedQuery) || entityRef.includes(normalizedQuery) || tags.includes(normalizedQuery)) {
454
- return true;
502
+ let matches = preview.includes(normalizedQuery) || category.includes(normalizedQuery) || entityRef.includes(normalizedQuery) || tags.includes(normalizedQuery);
503
+ if (!matches) {
504
+ try {
505
+ matches = fs.readFileSync(filePath, "utf-8").toLowerCase().includes(normalizedQuery);
506
+ } catch {
507
+ matches = false;
508
+ }
455
509
  }
456
- try {
457
- const content = fs.readFileSync(filePath, "utf-8").toLowerCase();
458
- return content.includes(normalizedQuery);
459
- } catch {
460
- return false;
510
+ if (!matches) continue;
511
+ if (total >= options.offset && pageRows2.length < options.limit) {
512
+ const browseRow = projectedBrowseRowFromCurrentRow(memoryDir, row, filePath);
513
+ if (browseRow) pageRows2.push(browseRow);
461
514
  }
462
- });
463
- const pageRows2 = filtered.slice(options.offset, options.offset + options.limit);
464
- return {
465
- total: filtered.length,
466
- memories: pageRows2.map((row) => projectedBrowseRowFromCurrentRow(memoryDir, row)).filter((row) => row !== null)
467
- };
515
+ total += 1;
516
+ }
517
+ return { total, memories: pageRows2 };
468
518
  }
469
519
  const browseWhereClauses = [...whereClauses, ...projectedBrowsePathSqlClauses()];
520
+ if (currentSelect.hasPathValid) {
521
+ browseWhereClauses.push("path_valid = 1");
522
+ }
470
523
  const browseWhereSql = `WHERE ${browseWhereClauses.join(" AND ")}`;
524
+ if (currentSelect.hasPathValid) {
525
+ const rows = db.prepare(`
526
+ SELECT
527
+ memory_id,
528
+ path_rel,
529
+ category,
530
+ status,
531
+ created_at,
532
+ updated_at,
533
+ entity_ref,
534
+ ${currentSelect.tagsJson},
535
+ ${currentSelect.previewText}
536
+ FROM memory_current
537
+ ${browseWhereSql}
538
+ ORDER BY ${orderBySql}
539
+ `).iterate(...params);
540
+ const pageRows2 = [];
541
+ let validRowsSeen2 = 0;
542
+ for (const row of rows) {
543
+ const browseRow = projectedBrowseRowFromCurrentRow(memoryDir, row, void 0, true);
544
+ if (!browseRow) continue;
545
+ if (validRowsSeen2 >= options.offset) {
546
+ pageRows2.push(browseRow);
547
+ if (pageRows2.length >= options.limit) break;
548
+ }
549
+ validRowsSeen2 += 1;
550
+ }
551
+ const totalRow = db.prepare(`SELECT COUNT(*) AS total FROM memory_current ${browseWhereSql}`).get(...params);
552
+ return { total: totalRow.total, memories: pageRows2 };
553
+ }
471
554
  const pageRows = [];
472
555
  const fetchSize = Math.max(options.limit * 2, 50);
473
556
  let validRowsSeen = 0;
@@ -715,6 +798,9 @@ export {
715
798
  getMemoryProjectionPath,
716
799
  memoryCurrentSelectExpressions,
717
800
  initializeMemoryProjectionDb,
801
+ markProjectedMemoryPathInvalid,
802
+ updateProjectedMemoryPath,
803
+ isProjectedMemoryPathValid,
718
804
  parseCurrentRow,
719
805
  parseTimelineRows,
720
806
  readProjectedMemoryState,
@@ -725,4 +811,4 @@ export {
725
811
  readProjectedLatestReviewQueue,
726
812
  readProjectedGovernanceRecord
727
813
  };
728
- //# sourceMappingURL=chunk-MB5RSUW6.js.map
814
+ //# sourceMappingURL=chunk-SXN3LCUT.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/memory-projection-store.ts"],"sourcesContent":["import path from \"node:path\";\nimport fs from \"node:fs\";\nimport type {\n MemoryGovernanceAppliedAction,\n MemoryGovernanceMetrics,\n MemoryGovernanceReviewQueueEntry,\n MemoryGovernanceSummary,\n} from \"./maintenance/memory-governance.js\";\nimport type {\n MemoryCategory,\n MemoryLifecycleEvent,\n MemoryProjectionCurrentState,\n MemoryStatus,\n} from \"./types.js\";\nimport {\n openBetterSqlite3,\n type BetterSqlite3Database,\n} from \"./runtime/better-sqlite.js\";\n\nexport const MEMORY_PROJECTION_SCHEMA_VERSION = 3;\n\nexport interface ProjectedMemoryBrowseOptions {\n query?: string;\n status?: string;\n category?: string;\n sort?: \"updated_desc\" | \"updated_asc\" | \"created_desc\" | \"created_asc\";\n limit: number;\n offset: number;\n}\n\nexport interface ProjectedMemoryBrowseRow {\n id: string;\n path: string;\n category: MemoryCategory;\n status: MemoryStatus;\n created?: string;\n updated?: string;\n tags: string[];\n entityRef?: string;\n preview: string;\n}\n\nexport interface ProjectedMemoryBrowsePage {\n total: number;\n memories: ProjectedMemoryBrowseRow[];\n}\n\nexport interface ProjectedEntityMentionRow {\n memoryId: string;\n entityRef: string;\n mentionSource: string;\n created: string;\n updated: string;\n}\n\nexport interface ProjectedNativeKnowledgeChunkRow {\n chunkId: string;\n sourcePath: string;\n title: string;\n sourceKind: string;\n startLine: number;\n endLine: number;\n derivedDate?: string;\n sessionKey?: string;\n workflowKey?: string;\n author?: string;\n agent?: string;\n namespace?: string;\n privacyClass?: string;\n sourceHash?: string;\n preview: string;\n}\n\nexport interface MemoryProjectionGovernanceReviewQueueRow {\n runId: string;\n entryId: string;\n memoryId: string;\n path: string;\n reasonCode: MemoryGovernanceReviewQueueEntry[\"reasonCode\"];\n severity: MemoryGovernanceReviewQueueEntry[\"severity\"];\n suggestedAction: MemoryGovernanceReviewQueueEntry[\"suggestedAction\"];\n suggestedStatus?: MemoryGovernanceReviewQueueEntry[\"suggestedStatus\"];\n relatedMemoryIds: string[];\n}\n\nexport interface MemoryProjectionGovernanceAppliedActionRow {\n runId: string;\n rowKey: string;\n action: MemoryGovernanceAppliedAction[\"action\"];\n memoryId: string;\n reasonCode: MemoryGovernanceAppliedAction[\"reasonCode\"];\n beforeStatus: MemoryGovernanceAppliedAction[\"beforeStatus\"];\n afterStatus?: MemoryGovernanceAppliedAction[\"afterStatus\"];\n originalPath: string;\n currentPath: string;\n}\n\nexport interface ProjectedReviewQueueSnapshot {\n found: boolean;\n runId?: string;\n summary?: MemoryGovernanceSummary;\n metrics?: MemoryGovernanceMetrics;\n reviewQueue?: MemoryGovernanceReviewQueueEntry[];\n appliedActions?: MemoryGovernanceAppliedAction[];\n report?: string;\n}\n\nexport function getMemoryProjectionPath(memoryDir: string): string {\n return path.join(memoryDir, \"state\", \"memory-projection.sqlite\");\n}\n\nfunction listTableColumns(db: BetterSqlite3Database, tableName: string): Set<string> {\n try {\n const rows = db.prepare(`PRAGMA table_info(${tableName})`).all() as Array<{ name?: unknown }>;\n return new Set(rows.map((row) => row.name).filter((name): name is string => typeof name === \"string\"));\n } catch {\n return new Set<string>();\n }\n}\n\nfunction migrateMemoryCurrentTable(db: BetterSqlite3Database): void {\n const columns = listTableColumns(db, \"memory_current\");\n if (columns.size === 0) return;\n\n if (!columns.has(\"tags_json\")) {\n db.exec(`ALTER TABLE memory_current ADD COLUMN tags_json TEXT NOT NULL DEFAULT '[]'`);\n }\n if (!columns.has(\"preview_text\")) {\n db.exec(`ALTER TABLE memory_current ADD COLUMN preview_text TEXT NOT NULL DEFAULT ''`);\n }\n}\n\nfunction memoryCurrentRequiresMigration(db: BetterSqlite3Database): boolean {\n const columns = listTableColumns(db, \"memory_current\");\n return columns.size > 0 && (!columns.has(\"tags_json\") || !columns.has(\"preview_text\"));\n}\n\nfunction migrateProjectionSchemaIfNeeded(memoryDir: string): void {\n const dbPath = getMemoryProjectionPath(memoryDir);\n try {\n const db = openBetterSqlite3(dbPath, { fileMustExist: true });\n try {\n if (!memoryCurrentRequiresMigration(db)) return;\n initializeMemoryProjectionDb(db);\n } finally {\n db.close();\n }\n } catch {\n // Fail open on migration attempts so readonly consumers can still use legacy rows.\n }\n}\n\nexport function memoryCurrentSelectExpressions(db: BetterSqlite3Database): {\n tagsJson: string;\n previewText: string;\n hasPathValid: boolean;\n} {\n const columns = listTableColumns(db, \"memory_current\");\n return {\n tagsJson: columns.has(\"tags_json\") ? \"tags_json\" : `'[]' AS tags_json`,\n previewText: columns.has(\"preview_text\") ? \"preview_text\" : `'' AS preview_text`,\n hasPathValid: columns.has(\"path_valid\"),\n };\n}\n\nexport function initializeMemoryProjectionDb(db: BetterSqlite3Database): void {\n db.exec(`\n CREATE TABLE IF NOT EXISTS meta (\n key TEXT PRIMARY KEY,\n value TEXT NOT NULL\n );\n\n CREATE TABLE IF NOT EXISTS memory_current (\n memory_id TEXT PRIMARY KEY,\n category TEXT NOT NULL,\n status TEXT NOT NULL,\n lifecycle_state TEXT,\n path_rel TEXT NOT NULL,\n path_valid INTEGER NOT NULL DEFAULT 0 CHECK (path_valid IN (0, 1)),\n created_at TEXT NOT NULL,\n updated_at TEXT NOT NULL,\n archived_at TEXT,\n superseded_at TEXT,\n entity_ref TEXT,\n source TEXT NOT NULL,\n confidence REAL NOT NULL,\n confidence_tier TEXT NOT NULL,\n memory_kind TEXT,\n access_count INTEGER,\n last_accessed TEXT,\n tags_json TEXT NOT NULL DEFAULT '[]',\n preview_text TEXT NOT NULL DEFAULT ''\n );\n\n CREATE INDEX IF NOT EXISTS idx_memory_current_status\n ON memory_current(status);\n\n CREATE INDEX IF NOT EXISTS idx_memory_current_category\n ON memory_current(category);\n\n\n CREATE TABLE IF NOT EXISTS memory_timeline (\n event_id TEXT PRIMARY KEY,\n memory_id TEXT NOT NULL,\n event_type TEXT NOT NULL,\n timestamp TEXT NOT NULL,\n event_order INTEGER NOT NULL,\n actor TEXT NOT NULL,\n reason_code TEXT,\n rule_version TEXT NOT NULL,\n related_memory_ids_json TEXT,\n before_json TEXT,\n after_json TEXT,\n correlation_id TEXT\n );\n\n CREATE INDEX IF NOT EXISTS idx_memory_timeline_memory_ts\n ON memory_timeline(memory_id, timestamp, event_order);\n\n CREATE TABLE IF NOT EXISTS memory_entity_mentions (\n memory_id TEXT NOT NULL,\n entity_ref TEXT NOT NULL,\n mention_source TEXT NOT NULL,\n created_at TEXT NOT NULL,\n updated_at TEXT NOT NULL,\n PRIMARY KEY (memory_id, entity_ref, mention_source)\n );\n\n CREATE INDEX IF NOT EXISTS idx_memory_entity_mentions_entity\n ON memory_entity_mentions(entity_ref, updated_at DESC);\n\n CREATE TABLE IF NOT EXISTS native_knowledge_chunks (\n chunk_id TEXT PRIMARY KEY,\n source_path TEXT NOT NULL,\n title TEXT NOT NULL,\n source_kind TEXT NOT NULL,\n start_line INTEGER NOT NULL,\n end_line INTEGER NOT NULL,\n derived_date TEXT,\n session_key TEXT,\n workflow_key TEXT,\n author TEXT,\n agent TEXT,\n namespace TEXT,\n privacy_class TEXT,\n source_hash TEXT,\n preview_text TEXT NOT NULL\n );\n\n CREATE INDEX IF NOT EXISTS idx_native_knowledge_source_kind\n ON native_knowledge_chunks(source_kind);\n\n CREATE INDEX IF NOT EXISTS idx_native_knowledge_namespace\n ON native_knowledge_chunks(namespace);\n\n CREATE TABLE IF NOT EXISTS memory_review_runs (\n run_id TEXT PRIMARY KEY,\n created_at TEXT NOT NULL,\n mode TEXT NOT NULL,\n summary_json TEXT NOT NULL,\n metrics_json TEXT NOT NULL,\n applied_actions_json TEXT NOT NULL,\n report_markdown TEXT NOT NULL\n );\n\n CREATE INDEX IF NOT EXISTS idx_memory_review_runs_created\n ON memory_review_runs(created_at DESC);\n\n CREATE TABLE IF NOT EXISTS memory_review_queue (\n entry_id TEXT PRIMARY KEY,\n run_id TEXT NOT NULL,\n memory_id TEXT NOT NULL,\n path TEXT NOT NULL,\n reason_code TEXT NOT NULL,\n severity TEXT NOT NULL,\n suggested_action TEXT NOT NULL,\n suggested_status TEXT,\n related_memory_ids_json TEXT NOT NULL\n );\n\n CREATE INDEX IF NOT EXISTS idx_memory_review_queue_run\n ON memory_review_queue(run_id, reason_code, memory_id);\n\n CREATE TABLE IF NOT EXISTS memory_review_actions (\n row_key TEXT PRIMARY KEY,\n run_id TEXT NOT NULL,\n action TEXT NOT NULL,\n memory_id TEXT NOT NULL,\n reason_code TEXT NOT NULL,\n before_status TEXT NOT NULL,\n after_status TEXT,\n original_path TEXT NOT NULL,\n current_path TEXT NOT NULL\n );\n\n CREATE INDEX IF NOT EXISTS idx_memory_review_actions_run\n ON memory_review_actions(run_id, memory_id);\n `);\n\n migrateMemoryCurrentTable(db);\n if (listTableColumns(db, \"memory_current\").has(\"path_valid\")) {\n db.exec(`\n CREATE INDEX IF NOT EXISTS idx_memory_current_browse_updated_desc\n ON memory_current(path_valid, updated_at DESC, created_at DESC, memory_id ASC);\n CREATE INDEX IF NOT EXISTS idx_memory_current_browse_updated_asc\n ON memory_current(path_valid, updated_at ASC, created_at ASC, memory_id ASC);\n CREATE INDEX IF NOT EXISTS idx_memory_current_browse_created_desc\n ON memory_current(path_valid, created_at DESC, updated_at DESC, memory_id ASC);\n CREATE INDEX IF NOT EXISTS idx_memory_current_browse_created_asc\n ON memory_current(path_valid, created_at ASC, updated_at ASC, memory_id ASC);\n `);\n }\n db.prepare(\"INSERT OR REPLACE INTO meta(key, value) VALUES (?, ?)\")\n .run(\"schemaVersion\", String(MEMORY_PROJECTION_SCHEMA_VERSION));\n}\n\nfunction openProjectionReadonly(memoryDir: string): BetterSqlite3Database | null {\n const dbPath = getMemoryProjectionPath(memoryDir);\n try {\n return openBetterSqlite3(dbPath, { readonly: true, fileMustExist: true });\n } catch {\n return null;\n }\n}\nfunction updateProjectionBestEffort(\n memoryDir: string,\n sql: string,\n params: unknown[],\n): void {\n let db: BetterSqlite3Database | null = null;\n try {\n db = openBetterSqlite3(getMemoryProjectionPath(memoryDir), { fileMustExist: true });\n db.prepare(sql).run(...params);\n } catch {\n // Projection updates must never block the canonical filesystem mutation.\n } finally {\n db?.close();\n }\n}\n\nexport function markProjectedMemoryPathInvalid(memoryDir: string, memoryId: string): void {\n updateProjectionBestEffort(\n memoryDir,\n \"UPDATE memory_current SET path_valid = 0 WHERE memory_id = ?\",\n [memoryId],\n );\n}\n\nexport function updateProjectedMemoryPath(\n memoryDir: string,\n memoryId: string,\n pathRel: string,\n): void {\n const pathValid = isProjectedMemoryPathValid(memoryDir, pathRel) ? 1 : 0;\n updateProjectionBestEffort(\n memoryDir,\n \"UPDATE memory_current SET path_rel = ?, path_valid = ? WHERE memory_id = ?\",\n [pathRel, pathValid, memoryId],\n );\n}\n\nfunction withProjectionReadonly<T>(\n memoryDir: string,\n reader: (db: BetterSqlite3Database) => T,\n): T | null {\n const db = openProjectionReadonly(memoryDir);\n if (!db) return null;\n\n let needsMigration = false;\n try {\n needsMigration = memoryCurrentRequiresMigration(db);\n return reader(db);\n } catch {\n return null;\n } finally {\n db.close();\n if (needsMigration) {\n migrateProjectionSchemaIfNeeded(memoryDir);\n }\n }\n}\n\nfunction parseStringArray(value: unknown): string[] {\n if (typeof value !== \"string\" || value.length === 0) return [];\n try {\n const parsed = JSON.parse(value);\n return Array.isArray(parsed) ? parsed.filter((entry): entry is string => typeof entry === \"string\") : [];\n } catch {\n return [];\n }\n}\n\nfunction parseJsonObject<T>(value: unknown): T | undefined {\n if (typeof value !== \"string\" || value.length === 0) return undefined;\n try {\n return JSON.parse(value) as T;\n } catch {\n return undefined;\n }\n}\n\nfunction resolveMemoryDirRoot(memoryDir: string): string {\n try {\n return fs.realpathSync(memoryDir);\n } catch {\n return path.resolve(memoryDir);\n }\n}\n\nfunction isPathInsideRoot(candidatePath: string, rootPath: string): boolean {\n const relative = path.relative(rootPath, candidatePath);\n return relative === \"\" || (!relative.startsWith(\"..\") && !path.isAbsolute(relative));\n}\n\nfunction resolveProjectedMemoryPath(\n memoryDir: string,\n pathRel: string,\n requireExisting = false,\n): string | null {\n if (path.isAbsolute(pathRel)) return null;\n const root = resolveMemoryDirRoot(memoryDir);\n const candidate = path.resolve(root, pathRel);\n if (!isPathInsideRoot(candidate, root)) return null;\n try {\n const realCandidate = fs.realpathSync(candidate);\n if (!isPathInsideRoot(realCandidate, root)) return null;\n } catch {\n if (requireExisting) return null;\n // Missing files are handled by callers. Still keep the lexical guard above.\n }\n return candidate;\n}\n\nexport function isProjectedMemoryPathValid(memoryDir: string, pathRel: string): boolean {\n return resolveProjectedMemoryPath(memoryDir, pathRel) !== null;\n}\n\nfunction projectedBrowseRowFromCurrentRow(\n memoryDir: string,\n row: Record<string, unknown>,\n resolvedFilePath?: string,\n requireExisting = false,\n): ProjectedMemoryBrowseRow | null {\n if (\n typeof row.memory_id !== \"string\" ||\n typeof row.path_rel !== \"string\" ||\n typeof row.category !== \"string\" ||\n typeof row.status !== \"string\"\n ) {\n return null;\n }\n const filePath = resolvedFilePath ?? resolveProjectedMemoryPath(memoryDir, row.path_rel, requireExisting);\n if (!filePath) return null;\n return {\n id: row.memory_id,\n path: filePath,\n category: row.category as MemoryCategory,\n status: row.status as MemoryStatus,\n created: typeof row.created_at === \"string\" ? row.created_at : undefined,\n updated: typeof row.updated_at === \"string\" ? row.updated_at : undefined,\n tags: parseStringArray(row.tags_json),\n entityRef: typeof row.entity_ref === \"string\" ? row.entity_ref : undefined,\n preview: typeof row.preview_text === \"string\" ? row.preview_text : \"\",\n };\n}\n\nfunction projectedBrowsePathSqlClauses(): string[] {\n return [\n \"path_rel <> ''\",\n \"path_rel NOT LIKE '/%'\",\n \"path_rel <> '..'\",\n \"path_rel NOT LIKE '../%'\",\n \"path_rel NOT LIKE '%/../%'\",\n ];\n}\n\nexport function parseCurrentRow(\n memoryDir: string,\n row: Record<string, unknown> | undefined,\n): MemoryProjectionCurrentState | null {\n if (!row) return null;\n if (\n typeof row.memory_id !== \"string\" ||\n typeof row.category !== \"string\" ||\n typeof row.status !== \"string\" ||\n typeof row.path_rel !== \"string\" ||\n typeof row.created_at !== \"string\" ||\n typeof row.updated_at !== \"string\" ||\n typeof row.source !== \"string\" ||\n typeof row.confidence !== \"number\" ||\n typeof row.confidence_tier !== \"string\"\n ) {\n return null;\n }\n const filePath = resolveProjectedMemoryPath(memoryDir, row.path_rel);\n if (!filePath) return null;\n\n return {\n memoryId: row.memory_id,\n category: row.category as MemoryProjectionCurrentState[\"category\"],\n status: row.status as MemoryStatus,\n lifecycleState:\n typeof row.lifecycle_state === \"string\"\n ? (row.lifecycle_state as MemoryProjectionCurrentState[\"lifecycleState\"])\n : undefined,\n path: filePath,\n pathRel: row.path_rel,\n created: row.created_at,\n updated: row.updated_at,\n archivedAt: typeof row.archived_at === \"string\" ? row.archived_at : undefined,\n supersededAt: typeof row.superseded_at === \"string\" ? row.superseded_at : undefined,\n entityRef: typeof row.entity_ref === \"string\" ? row.entity_ref : undefined,\n source: row.source,\n confidence: row.confidence,\n confidenceTier: row.confidence_tier as MemoryProjectionCurrentState[\"confidenceTier\"],\n memoryKind:\n typeof row.memory_kind === \"string\"\n ? (row.memory_kind as MemoryProjectionCurrentState[\"memoryKind\"])\n : undefined,\n accessCount: typeof row.access_count === \"number\" ? row.access_count : undefined,\n lastAccessed: typeof row.last_accessed === \"string\" ? row.last_accessed : undefined,\n tags: parseStringArray(row.tags_json),\n preview: typeof row.preview_text === \"string\" ? row.preview_text : \"\",\n };\n}\n\nexport function parseTimelineRows(rows: Array<Record<string, unknown>>): MemoryLifecycleEvent[] {\n const out: MemoryLifecycleEvent[] = [];\n for (const row of rows) {\n if (\n typeof row.event_id !== \"string\" ||\n typeof row.memory_id !== \"string\" ||\n typeof row.event_type !== \"string\" ||\n typeof row.timestamp !== \"string\" ||\n typeof row.actor !== \"string\" ||\n typeof row.rule_version !== \"string\"\n ) {\n continue;\n }\n\n out.push({\n eventId: row.event_id,\n memoryId: row.memory_id,\n eventType: row.event_type as MemoryLifecycleEvent[\"eventType\"],\n timestamp: row.timestamp,\n actor: row.actor,\n reasonCode: typeof row.reason_code === \"string\" ? row.reason_code : undefined,\n ruleVersion: row.rule_version,\n relatedMemoryIds: parseStringArray(row.related_memory_ids_json),\n before: parseJsonObject<MemoryLifecycleEvent[\"before\"]>(row.before_json),\n after: parseJsonObject<MemoryLifecycleEvent[\"after\"]>(row.after_json),\n correlationId: typeof row.correlation_id === \"string\" ? row.correlation_id : undefined,\n });\n }\n\n return out;\n}\n\nexport function readProjectedMemoryState(\n memoryDir: string,\n memoryId: string,\n): MemoryProjectionCurrentState | null {\n return withProjectionReadonly(memoryDir, (db) => {\n const currentSelect = memoryCurrentSelectExpressions(db);\n const row = db\n .prepare(\n `\n SELECT\n memory_id,\n category,\n status,\n lifecycle_state,\n path_rel,\n created_at,\n updated_at,\n archived_at,\n superseded_at,\n entity_ref,\n source,\n confidence,\n confidence_tier,\n memory_kind,\n access_count,\n last_accessed,\n ${currentSelect.tagsJson},\n ${currentSelect.previewText}\n FROM memory_current\n WHERE memory_id = ?\n `,\n )\n .get(memoryId) as Record<string, unknown> | undefined;\n return parseCurrentRow(memoryDir, row);\n });\n}\n\nexport function readProjectedMemoryTimeline(\n memoryDir: string,\n memoryId: string,\n limit: number,\n): MemoryLifecycleEvent[] | null {\n const db = openProjectionReadonly(memoryDir);\n if (!db) return null;\n\n try {\n const rows = db\n .prepare(\n `\n SELECT * FROM (\n SELECT\n event_id,\n memory_id,\n event_type,\n timestamp,\n event_order,\n actor,\n reason_code,\n rule_version,\n related_memory_ids_json,\n before_json,\n after_json,\n correlation_id\n FROM memory_timeline\n WHERE memory_id = ?\n ORDER BY timestamp DESC, event_order DESC\n LIMIT ?\n )\n ORDER BY timestamp ASC, event_order ASC\n `,\n )\n .all(memoryId, limit) as Array<Record<string, unknown>>;\n if (rows.length === 0) return null;\n return parseTimelineRows(rows);\n } catch {\n return null;\n } finally {\n db.close();\n }\n}\n\nexport function readProjectedMemoryBrowse(\n memoryDir: string,\n options: ProjectedMemoryBrowseOptions,\n): ProjectedMemoryBrowsePage | null {\n return withProjectionReadonly(memoryDir, (db) => {\n const normalizedQuery = options.query?.trim().toLowerCase() ?? \"\";\n\n const currentSelect = memoryCurrentSelectExpressions(db);\n const whereClauses: string[] = [];\n const params: unknown[] = [];\n\n if (options.status) {\n whereClauses.push(\"status = ?\");\n params.push(options.status);\n }\n if (options.category) {\n whereClauses.push(\"category = ?\");\n params.push(options.category);\n }\n const sort = options.sort ?? \"updated_desc\";\n const orderBySql = (() => {\n switch (sort) {\n case \"updated_asc\":\n return \"updated_at ASC, created_at ASC, memory_id ASC\";\n case \"created_desc\":\n return \"created_at DESC, updated_at DESC, memory_id ASC\";\n case \"created_asc\":\n return \"created_at ASC, updated_at ASC, memory_id ASC\";\n case \"updated_desc\":\n default:\n return \"updated_at DESC, created_at DESC, memory_id ASC\";\n }\n })();\n const whereSql = whereClauses.length > 0 ? `WHERE ${whereClauses.join(\" AND \")}` : \"\";\n\n if (normalizedQuery) {\n // Full-content search still examines every eligible row so totals and\n // matches stay exact, but iteration keeps memory use proportional to the page.\n const queryWhereClauses = currentSelect.hasPathValid\n ? [...whereClauses, ...projectedBrowsePathSqlClauses(), \"path_valid = 1\"]\n : whereClauses;\n const queryWhereSql = queryWhereClauses.length > 0\n ? `WHERE ${queryWhereClauses.join(\" AND \")}`\n : \"\";\n const rows = db\n .prepare(`\n SELECT\n memory_id,\n path_rel,\n category,\n status,\n created_at,\n updated_at,\n entity_ref,\n ${currentSelect.tagsJson},\n ${currentSelect.previewText}\n FROM memory_current\n ${queryWhereSql}\n ORDER BY ${orderBySql}\n `)\n .iterate(...params) as Iterable<Record<string, unknown>>;\n const pageRows: ProjectedMemoryBrowseRow[] = [];\n let total = 0;\n\n for (const row of rows) {\n if (typeof row.memory_id !== \"string\" || typeof row.path_rel !== \"string\") continue;\n const filePath = resolveProjectedMemoryPath(\n memoryDir,\n row.path_rel,\n currentSelect.hasPathValid,\n );\n if (!filePath) continue;\n const preview = typeof row.preview_text === \"string\" ? row.preview_text.toLowerCase() : \"\";\n const category = typeof row.category === \"string\" ? row.category.toLowerCase() : \"\";\n const entityRef = typeof row.entity_ref === \"string\" ? row.entity_ref.toLowerCase() : \"\";\n const tags = typeof row.tags_json === \"string\" ? row.tags_json.toLowerCase() : \"\";\n let matches = preview.includes(normalizedQuery) || category.includes(normalizedQuery) ||\n entityRef.includes(normalizedQuery) || tags.includes(normalizedQuery);\n if (!matches) {\n try {\n matches = fs.readFileSync(filePath, \"utf-8\").toLowerCase().includes(normalizedQuery);\n } catch {\n matches = false;\n }\n }\n if (!matches) continue;\n if (total >= options.offset && pageRows.length < options.limit) {\n const browseRow = projectedBrowseRowFromCurrentRow(memoryDir, row, filePath);\n if (browseRow) pageRows.push(browseRow);\n }\n total += 1;\n }\n\n return { total, memories: pageRows };\n }\n\n const browseWhereClauses = [...whereClauses, ...projectedBrowsePathSqlClauses()];\n if (currentSelect.hasPathValid) {\n browseWhereClauses.push(\"path_valid = 1\");\n }\n const browseWhereSql = `WHERE ${browseWhereClauses.join(\" AND \")}`;\n\n if (currentSelect.hasPathValid) {\n const rows = db\n .prepare(`\n SELECT\n memory_id,\n path_rel,\n category,\n status,\n created_at,\n updated_at,\n entity_ref,\n ${currentSelect.tagsJson},\n ${currentSelect.previewText}\n FROM memory_current\n ${browseWhereSql}\n ORDER BY ${orderBySql}\n `)\n .iterate(...params) as Iterable<Record<string, unknown>>;\n const pageRows: ProjectedMemoryBrowseRow[] = [];\n let validRowsSeen = 0;\n for (const row of rows) {\n const browseRow = projectedBrowseRowFromCurrentRow(memoryDir, row, undefined, true);\n if (!browseRow) continue;\n if (validRowsSeen >= options.offset) {\n pageRows.push(browseRow);\n if (pageRows.length >= options.limit) break;\n }\n validRowsSeen += 1;\n }\n const totalRow = db\n .prepare(`SELECT COUNT(*) AS total FROM memory_current ${browseWhereSql}`)\n .get(...params) as { total: number };\n return { total: totalRow.total, memories: pageRows };\n }\n\n // Legacy projections have no materialized path validity. Preserve the\n // realpath-aware full scan rather than trusting rows from an older writer.\n const pageRows: ProjectedMemoryBrowseRow[] = [];\n const fetchSize = Math.max(options.limit * 2, 50);\n let validRowsSeen = 0;\n let scanOffset = 0;\n\n while (true) {\n const rows = db\n .prepare(`\n SELECT\n memory_id,\n path_rel,\n category,\n status,\n created_at,\n updated_at,\n entity_ref,\n ${currentSelect.tagsJson},\n ${currentSelect.previewText}\n FROM memory_current\n ${browseWhereSql}\n ORDER BY ${orderBySql}\n LIMIT ? OFFSET ?\n `)\n .all(...params, fetchSize, scanOffset) as Array<Record<string, unknown>>;\n if (rows.length === 0) break;\n scanOffset += rows.length;\n for (const row of rows) {\n const browseRow = projectedBrowseRowFromCurrentRow(memoryDir, row);\n if (!browseRow) continue;\n if (validRowsSeen >= options.offset && pageRows.length < options.limit) {\n pageRows.push(browseRow);\n }\n validRowsSeen += 1;\n }\n if (rows.length < fetchSize) break;\n }\n\n return {\n total: validRowsSeen,\n memories: pageRows,\n };\n });\n}\n\nexport function readProjectedEntityMentions(\n memoryDir: string,\n memoryIds?: Set<string>,\n): ProjectedEntityMentionRow[] | null {\n const db = openProjectionReadonly(memoryDir);\n if (!db) return null;\n\n try {\n const rows = db\n .prepare(`\n SELECT\n memory_id,\n entity_ref,\n mention_source,\n created_at,\n updated_at\n FROM memory_entity_mentions\n ORDER BY entity_ref ASC, updated_at DESC, memory_id ASC\n `)\n .all() as Array<Record<string, unknown>>;\n\n return rows\n .filter(\n (row) =>\n typeof row.memory_id === \"string\" &&\n typeof row.entity_ref === \"string\" &&\n typeof row.mention_source === \"string\" &&\n typeof row.created_at === \"string\" &&\n typeof row.updated_at === \"string\" &&\n (!memoryIds || memoryIds.has(row.memory_id)),\n )\n .map((row) => ({\n memoryId: row.memory_id as string,\n entityRef: row.entity_ref as string,\n mentionSource: row.mention_source as string,\n created: row.created_at as string,\n updated: row.updated_at as string,\n }));\n } catch {\n return null;\n } finally {\n db.close();\n }\n}\n\nexport function readProjectedNativeKnowledgeChunks(\n memoryDir: string,\n): ProjectedNativeKnowledgeChunkRow[] | null {\n const db = openProjectionReadonly(memoryDir);\n if (!db) return null;\n\n try {\n const rows = db\n .prepare(`\n SELECT\n chunk_id,\n source_path,\n title,\n source_kind,\n start_line,\n end_line,\n derived_date,\n session_key,\n workflow_key,\n author,\n agent,\n namespace,\n privacy_class,\n source_hash,\n preview_text\n FROM native_knowledge_chunks\n ORDER BY source_kind ASC, source_path ASC, start_line ASC\n `)\n .all() as Array<Record<string, unknown>>;\n\n return rows\n .filter(\n (row) =>\n typeof row.chunk_id === \"string\" &&\n typeof row.source_path === \"string\" &&\n typeof row.title === \"string\" &&\n typeof row.source_kind === \"string\" &&\n typeof row.start_line === \"number\" &&\n typeof row.end_line === \"number\" &&\n typeof row.preview_text === \"string\",\n )\n .map((row) => ({\n chunkId: row.chunk_id as string,\n sourcePath: row.source_path as string,\n title: row.title as string,\n sourceKind: row.source_kind as string,\n startLine: row.start_line as number,\n endLine: row.end_line as number,\n derivedDate: typeof row.derived_date === \"string\" ? row.derived_date : undefined,\n sessionKey: typeof row.session_key === \"string\" ? row.session_key : undefined,\n workflowKey: typeof row.workflow_key === \"string\" ? row.workflow_key : undefined,\n author: typeof row.author === \"string\" ? row.author : undefined,\n agent: typeof row.agent === \"string\" ? row.agent : undefined,\n namespace: typeof row.namespace === \"string\" ? row.namespace : undefined,\n privacyClass: typeof row.privacy_class === \"string\" ? row.privacy_class : undefined,\n sourceHash: typeof row.source_hash === \"string\" ? row.source_hash : undefined,\n preview: row.preview_text as string,\n }));\n } catch {\n return null;\n } finally {\n db.close();\n }\n}\n\nexport function readProjectedLatestReviewQueue(\n memoryDir: string,\n): ProjectedReviewQueueSnapshot | null {\n const db = openProjectionReadonly(memoryDir);\n if (!db) return null;\n\n try {\n const latestRunId =\n (db.prepare(`SELECT value FROM meta WHERE key = 'latestGovernanceRunId'`).get() as { value?: string } | undefined)\n ?.value\n ?? (db.prepare(`SELECT run_id AS value FROM memory_review_runs ORDER BY created_at DESC LIMIT 1`).get() as {\n value?: string;\n } | undefined)?.value;\n if (!latestRunId) {\n return { found: false };\n }\n\n const runRow = db\n .prepare(`\n SELECT\n run_id,\n summary_json,\n metrics_json,\n applied_actions_json,\n report_markdown\n FROM memory_review_runs\n WHERE run_id = ?\n `)\n .get(latestRunId) as Record<string, unknown> | undefined;\n if (!runRow || typeof runRow.run_id !== \"string\") {\n return { found: false };\n }\n\n const queueRows = db\n .prepare(`\n SELECT\n entry_id,\n memory_id,\n path,\n reason_code,\n severity,\n suggested_action,\n suggested_status,\n related_memory_ids_json\n FROM memory_review_queue\n WHERE run_id = ?\n ORDER BY reason_code ASC, memory_id ASC\n `)\n .all(latestRunId) as Array<Record<string, unknown>>;\n\n const actionRows = db\n .prepare(`\n SELECT\n row_key,\n action,\n memory_id,\n reason_code,\n before_status,\n after_status,\n original_path,\n current_path\n FROM memory_review_actions\n WHERE run_id = ?\n ORDER BY memory_id ASC, action ASC\n `)\n .all(latestRunId) as Array<Record<string, unknown>>;\n\n const reviewQueue: MemoryGovernanceReviewQueueEntry[] = queueRows\n .filter(\n (row) =>\n typeof row.entry_id === \"string\" &&\n typeof row.memory_id === \"string\" &&\n typeof row.path === \"string\" &&\n typeof row.reason_code === \"string\" &&\n typeof row.severity === \"string\" &&\n typeof row.suggested_action === \"string\",\n )\n .map((row) => ({\n entryId: row.entry_id as string,\n memoryId: row.memory_id as string,\n path: row.path as string,\n reasonCode: row.reason_code as MemoryGovernanceReviewQueueEntry[\"reasonCode\"],\n severity: row.severity as MemoryGovernanceReviewQueueEntry[\"severity\"],\n suggestedAction: row.suggested_action as MemoryGovernanceReviewQueueEntry[\"suggestedAction\"],\n suggestedStatus:\n typeof row.suggested_status === \"string\"\n ? (row.suggested_status as MemoryGovernanceReviewQueueEntry[\"suggestedStatus\"])\n : undefined,\n relatedMemoryIds: parseStringArray(row.related_memory_ids_json),\n }));\n\n return {\n found: true,\n runId: latestRunId,\n summary: parseJsonObject<MemoryGovernanceSummary>(runRow.summary_json),\n metrics: parseJsonObject<MemoryGovernanceMetrics>(runRow.metrics_json),\n reviewQueue,\n appliedActions:\n actionRows.length > 0\n ? actionRows\n .filter(\n (row) =>\n typeof row.action === \"string\" &&\n typeof row.memory_id === \"string\" &&\n typeof row.reason_code === \"string\" &&\n typeof row.before_status === \"string\" &&\n typeof row.original_path === \"string\" &&\n typeof row.current_path === \"string\",\n )\n .map((row) => ({\n action: row.action as MemoryGovernanceAppliedAction[\"action\"],\n memoryId: row.memory_id as string,\n reasonCode: row.reason_code as MemoryGovernanceAppliedAction[\"reasonCode\"],\n beforeStatus: row.before_status as MemoryGovernanceAppliedAction[\"beforeStatus\"],\n afterStatus:\n typeof row.after_status === \"string\"\n ? (row.after_status as MemoryGovernanceAppliedAction[\"afterStatus\"])\n : undefined,\n originalPath: row.original_path as string,\n currentPath: row.current_path as string,\n }))\n : (parseJsonObject<MemoryGovernanceAppliedAction[]>(runRow.applied_actions_json) ?? []),\n report: typeof runRow.report_markdown === \"string\" ? runRow.report_markdown : undefined,\n };\n } catch {\n return null;\n } finally {\n db.close();\n }\n}\n\nexport function readProjectedGovernanceRecord(\n memoryDir: string,\n): {\n runId: string;\n summary: unknown;\n metrics: unknown;\n reviewQueueRows: MemoryProjectionGovernanceReviewQueueRow[];\n appliedActionRows: MemoryProjectionGovernanceAppliedActionRow[];\n report: string;\n} | null {\n const snapshot = readProjectedLatestReviewQueue(memoryDir);\n if (!snapshot?.found || !snapshot.runId) return null;\n\n return {\n runId: snapshot.runId,\n summary: snapshot.summary ?? {},\n metrics: snapshot.metrics ?? {},\n reviewQueueRows: (snapshot.reviewQueue ?? []).map((entry) => ({\n runId: snapshot.runId as string,\n entryId: entry.entryId,\n memoryId: entry.memoryId,\n path: entry.path,\n reasonCode: entry.reasonCode,\n severity: entry.severity,\n suggestedAction: entry.suggestedAction,\n suggestedStatus: entry.suggestedStatus,\n relatedMemoryIds: [...entry.relatedMemoryIds],\n })),\n appliedActionRows: (snapshot.appliedActions ?? []).map((action) => ({\n runId: snapshot.runId as string,\n rowKey: [\n action.action,\n action.memoryId,\n action.reasonCode,\n action.originalPath,\n action.currentPath,\n ].join(\"::\"),\n action: action.action,\n memoryId: action.memoryId,\n reasonCode: action.reasonCode,\n beforeStatus: action.beforeStatus,\n afterStatus: action.afterStatus,\n originalPath: action.originalPath,\n currentPath: action.currentPath,\n })),\n report: snapshot.report ?? \"\",\n };\n}\n"],"mappings":"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","names":["pageRows","validRowsSeen"]}
@@ -64,7 +64,7 @@ import {
64
64
  listMemoryGovernanceRuns,
65
65
  readMemoryGovernanceRunArtifact,
66
66
  runMemoryGovernance
67
- } from "./chunk-HDYFNXVO.js";
67
+ } from "./chunk-IVFIYAIP.js";
68
68
  import {
69
69
  recordMemoryOutcome
70
70
  } from "./chunk-EIR5VLIH.js";
@@ -105,11 +105,11 @@ import {
105
105
  enqueuePassiveCorrectionNotification,
106
106
  parseBriefingFocus,
107
107
  parseBriefingWindow
108
- } from "./chunk-VHYFY3JI.js";
108
+ } from "./chunk-R3K4CXPR.js";
109
109
  import {
110
110
  parseEntityFile,
111
111
  selfDeps
112
- } from "./chunk-P7W4CDX6.js";
112
+ } from "./chunk-DTTVX6EO.js";
113
113
  import {
114
114
  serializeMutations
115
115
  } from "./chunk-LTJAMRGI.js";
@@ -133,7 +133,7 @@ import {
133
133
  } from "./chunk-SCU65EZI.js";
134
134
  import {
135
135
  getMemoryProjectionPath
136
- } from "./chunk-MB5RSUW6.js";
136
+ } from "./chunk-SXN3LCUT.js";
137
137
  import {
138
138
  displayErrorDetail
139
139
  } from "./chunk-6KYMPV2O.js";
@@ -10918,4 +10918,4 @@ export {
10918
10918
  EngramAccessService,
10919
10919
  AccessAdminOpsSurface
10920
10920
  };
10921
- //# sourceMappingURL=chunk-LAJIXABF.js.map
10921
+ //# sourceMappingURL=chunk-TIOXQPD7.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  StorageManager
3
- } from "./chunk-P7W4CDX6.js";
3
+ } from "./chunk-DTTVX6EO.js";
4
4
  import {
5
5
  getCachedRuleMemories,
6
6
  setCachedRuleMemories
@@ -117,4 +117,4 @@ export {
117
117
  compareVerifiedSemanticRuleResults,
118
118
  searchVerifiedSemanticRules
119
119
  };
120
- //# sourceMappingURL=chunk-ES3GAMSQ.js.map
120
+ //# sourceMappingURL=chunk-VKHZFF5P.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  StorageManager
3
- } from "./chunk-P7W4CDX6.js";
3
+ } from "./chunk-DTTVX6EO.js";
4
4
 
5
5
  // src/semantic-rule-promotion.ts
6
6
  import { createHash, randomUUID } from "crypto";
@@ -529,4 +529,4 @@ export {
529
529
  setSemanticRulePromotionTestHooks,
530
530
  promoteSemanticRuleFromMemory
531
531
  };
532
- //# sourceMappingURL=chunk-KZWUJC7Y.js.map
532
+ //# sourceMappingURL=chunk-X7HTU4HO.js.map
@@ -10,7 +10,7 @@ import {
10
10
  import {
11
11
  planNamespaceMaintenance,
12
12
  runNamespaceMaintenanceBatchPlan
13
- } from "./chunk-2PGB63VU.js";
13
+ } from "./chunk-NFWTMM2M.js";
14
14
  import {
15
15
  resolveConsolidationCapabilities,
16
16
  resolveNamespaceCapabilities,
@@ -447,4 +447,4 @@ var MaintenanceScheduler = class {
447
447
  export {
448
448
  MaintenanceScheduler
449
449
  };
450
- //# sourceMappingURL=chunk-QWIE43BS.js.map
450
+ //# sourceMappingURL=chunk-YDYC6PIS.js.map
package/dist/cli.js CHANGED
@@ -90,7 +90,7 @@ import {
90
90
  runWorkProductStatusCliCommand,
91
91
  runWorkProjectCliCommand,
92
92
  runWorkTaskCliCommand
93
- } from "./chunk-DB647OZ4.js";
93
+ } from "./chunk-D6YTILJO.js";
94
94
  import "./chunk-MC4FJXPA.js";
95
95
  import "./chunk-LQHDIS7L.js";
96
96
  import "./chunk-7F7Z6MOS.js";
@@ -114,18 +114,18 @@ import "./chunk-EEC4PCG5.js";
114
114
  import "./chunk-WMWVO45V.js";
115
115
  import "./chunk-D6RIFG4O.js";
116
116
  import "./chunk-JCK7V6SN.js";
117
- import "./chunk-TEKTCF2V.js";
118
- import "./chunk-IIURIWJG.js";
117
+ import "./chunk-NDXJJKT2.js";
118
+ import "./chunk-SFNQDXXL.js";
119
119
  import "./chunk-KJTKLXTH.js";
120
120
  import "./chunk-CKITWVWJ.js";
121
121
  import "./chunk-OUELRE5E.js";
122
122
  import "./chunk-GQL52GQ5.js";
123
123
  import "./chunk-2F6NP3NT.js";
124
124
  import "./chunk-TERNBNJB.js";
125
- import "./chunk-4HYJETVO.js";
125
+ import "./chunk-N4ZA2I7M.js";
126
126
  import "./chunk-QRDOSYOR.js";
127
- import "./chunk-KZWUJC7Y.js";
128
- import "./chunk-ES3GAMSQ.js";
127
+ import "./chunk-X7HTU4HO.js";
128
+ import "./chunk-VKHZFF5P.js";
129
129
  import "./chunk-TGQ2NTWH.js";
130
130
  import "./chunk-4XL3CVII.js";
131
131
  import "./chunk-ZRWB5D4H.js";
@@ -133,10 +133,10 @@ import "./chunk-GY3SKOS4.js";
133
133
  import "./chunk-SFQ6QNL7.js";
134
134
  import "./chunk-DANV2HTH.js";
135
135
  import "./chunk-33JBK2XP.js";
136
- import "./chunk-ESDBHQY6.js";
137
- import "./chunk-2PGB63VU.js";
138
- import "./chunk-QPFO54VC.js";
139
- import "./chunk-PNFN7SIN.js";
136
+ import "./chunk-N3QDLE2N.js";
137
+ import "./chunk-NFWTMM2M.js";
138
+ import "./chunk-KXG7HHIQ.js";
139
+ import "./chunk-OX272PBW.js";
140
140
  import "./chunk-KFY3SGN7.js";
141
141
  import "./chunk-3T74IZB3.js";
142
142
  import "./chunk-CMTINOFS.js";
@@ -168,7 +168,7 @@ import "./chunk-OO42R444.js";
168
168
  import "./chunk-K6MV3TRQ.js";
169
169
  import "./chunk-LBJBNWS2.js";
170
170
  import "./chunk-OADWQ5CR.js";
171
- import "./chunk-2KYXXMTE.js";
171
+ import "./chunk-LDCFFJ67.js";
172
172
  import "./chunk-7WV3F5DQ.js";
173
173
  import "./chunk-SEDEKFYQ.js";
174
174
  import "./chunk-JBPKEARU.js";
@@ -177,10 +177,10 @@ import "./chunk-J64TK33U.js";
177
177
  import "./chunk-RSUYKGGZ.js";
178
178
  import "./chunk-42NQ7AVG.js";
179
179
  import "./chunk-7RXCMVFQ.js";
180
- import "./chunk-WAIMHMO3.js";
180
+ import "./chunk-6ZFE2TPO.js";
181
181
  import "./chunk-D24OXEPB.js";
182
- import "./chunk-JU6BKZHX.js";
183
- import "./chunk-TIWRP5NW.js";
182
+ import "./chunk-K4EDULCP.js";
183
+ import "./chunk-6YEENRE3.js";
184
184
  import "./chunk-ZQNCHPTZ.js";
185
185
  import "./chunk-YF6FMLBT.js";
186
186
  import "./chunk-EEKDRAWX.js";
@@ -188,8 +188,8 @@ import "./chunk-DJECGBBM.js";
188
188
  import "./chunk-35NN3ZFA.js";
189
189
  import "./chunk-T4WDJPEZ.js";
190
190
  import "./chunk-2MR3MFQB.js";
191
- import "./chunk-DPZ5GJMD.js";
192
- import "./chunk-LAJIXABF.js";
191
+ import "./chunk-A4FMQIST.js";
192
+ import "./chunk-TIOXQPD7.js";
193
193
  import "./chunk-GDASG7NC.js";
194
194
  import "./chunk-GDB4J2H3.js";
195
195
  import "./chunk-M5QKGHCR.js";
@@ -217,7 +217,7 @@ import "./chunk-5CEJH5ZN.js";
217
217
  import "./chunk-AER6MT24.js";
218
218
  import "./chunk-CINZGPSJ.js";
219
219
  import "./chunk-EGGE52UU.js";
220
- import "./chunk-HDYFNXVO.js";
220
+ import "./chunk-IVFIYAIP.js";
221
221
  import "./chunk-DCWIQFNA.js";
222
222
  import "./chunk-XBZQRZ6G.js";
223
223
  import "./chunk-KCQA46NR.js";
@@ -240,8 +240,8 @@ import "./chunk-EHQ5HO5T.js";
240
240
  import "./chunk-2LSZVONP.js";
241
241
  import "./chunk-DEUNUKTD.js";
242
242
  import "./chunk-SQNED75R.js";
243
- import "./chunk-VHYFY3JI.js";
244
- import "./chunk-P7W4CDX6.js";
243
+ import "./chunk-R3K4CXPR.js";
244
+ import "./chunk-DTTVX6EO.js";
245
245
  import "./chunk-M7XQSUBB.js";
246
246
  import "./chunk-L2B3EE7B.js";
247
247
  import "./chunk-5UZXUTVO.js";
@@ -257,7 +257,7 @@ import "./chunk-AWJ2FHCF.js";
257
257
  import "./chunk-42JKGUFJ.js";
258
258
  import "./chunk-RULE4VG5.js";
259
259
  import "./chunk-SCU65EZI.js";
260
- import "./chunk-MB5RSUW6.js";
260
+ import "./chunk-SXN3LCUT.js";
261
261
  import "./chunk-6KYMPV2O.js";
262
262
  import "./chunk-DM2T26WE.js";
263
263
  import "./chunk-LDXUBPMO.js";
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  CompoundingEngine,
3
3
  defaultTierMigrationCycleBudget
4
- } from "../chunk-HMUEAKSD.js";
4
+ } from "../chunk-QPTP6SKC.js";
5
5
  import "../chunk-JRZV3767.js";
6
- import "../chunk-P7W4CDX6.js";
6
+ import "../chunk-DTTVX6EO.js";
7
7
  import "../chunk-M7XQSUBB.js";
8
8
  import "../chunk-L2B3EE7B.js";
9
9
  import "../chunk-5UZXUTVO.js";
@@ -19,7 +19,7 @@ import "../chunk-AWJ2FHCF.js";
19
19
  import "../chunk-42JKGUFJ.js";
20
20
  import "../chunk-RULE4VG5.js";
21
21
  import "../chunk-SCU65EZI.js";
22
- import "../chunk-MB5RSUW6.js";
22
+ import "../chunk-SXN3LCUT.js";
23
23
  import "../chunk-6KYMPV2O.js";
24
24
  import "../chunk-DM2T26WE.js";
25
25
  import "../chunk-LDXUBPMO.js";
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  runCodexMaterialize,
3
3
  runPostConsolidationMaterialize
4
- } from "../chunk-OQ6F3WBX.js";
4
+ } from "../chunk-2RLECZ6J.js";
5
5
  import "../chunk-UUH4YQOF.js";
6
6
  import "../chunk-3UXOZBHV.js";
7
- import "../chunk-P7W4CDX6.js";
7
+ import "../chunk-DTTVX6EO.js";
8
8
  import "../chunk-M7XQSUBB.js";
9
9
  import "../chunk-L2B3EE7B.js";
10
10
  import "../chunk-5UZXUTVO.js";
@@ -20,7 +20,7 @@ import "../chunk-AWJ2FHCF.js";
20
20
  import "../chunk-42JKGUFJ.js";
21
21
  import "../chunk-RULE4VG5.js";
22
22
  import "../chunk-SCU65EZI.js";
23
- import "../chunk-MB5RSUW6.js";
23
+ import "../chunk-SXN3LCUT.js";
24
24
  import "../chunk-6KYMPV2O.js";
25
25
  import "../chunk-DM2T26WE.js";
26
26
  import "../chunk-LDXUBPMO.js";
@@ -26,7 +26,7 @@ import {
26
26
  import "../chunk-UG274TNV.js";
27
27
  import {
28
28
  runCodexMaterialize
29
- } from "../chunk-OQ6F3WBX.js";
29
+ } from "../chunk-2RLECZ6J.js";
30
30
  import {
31
31
  MATERIALIZE_VERSION,
32
32
  SENTINEL_FILE,
@@ -48,7 +48,7 @@ import {
48
48
  getRegistryPath
49
49
  } from "../chunk-K6MV3TRQ.js";
50
50
  import "../chunk-O75CRYGF.js";
51
- import "../chunk-P7W4CDX6.js";
51
+ import "../chunk-DTTVX6EO.js";
52
52
  import "../chunk-M7XQSUBB.js";
53
53
  import "../chunk-L2B3EE7B.js";
54
54
  import "../chunk-5UZXUTVO.js";
@@ -64,7 +64,7 @@ import "../chunk-AWJ2FHCF.js";
64
64
  import "../chunk-42JKGUFJ.js";
65
65
  import "../chunk-RULE4VG5.js";
66
66
  import "../chunk-SCU65EZI.js";
67
- import "../chunk-MB5RSUW6.js";
67
+ import "../chunk-SXN3LCUT.js";
68
68
  import "../chunk-6KYMPV2O.js";
69
69
  import "../chunk-DM2T26WE.js";
70
70
  import "../chunk-LDXUBPMO.js";
@@ -3,9 +3,9 @@ import {
3
3
  entityIndexVersion,
4
4
  entityRecentTranscriptLookbackHours,
5
5
  readRecentEntityTranscriptEntries
6
- } from "./chunk-ZTBH2OHD.js";
6
+ } from "./chunk-AS2NRB45.js";
7
7
  import "./chunk-ZCWIH4LH.js";
8
- import "./chunk-P7W4CDX6.js";
8
+ import "./chunk-DTTVX6EO.js";
9
9
  import "./chunk-M7XQSUBB.js";
10
10
  import "./chunk-L2B3EE7B.js";
11
11
  import "./chunk-5UZXUTVO.js";
@@ -21,7 +21,7 @@ import "./chunk-AWJ2FHCF.js";
21
21
  import "./chunk-42JKGUFJ.js";
22
22
  import "./chunk-RULE4VG5.js";
23
23
  import "./chunk-SCU65EZI.js";
24
- import "./chunk-MB5RSUW6.js";
24
+ import "./chunk-SXN3LCUT.js";
25
25
  import "./chunk-6KYMPV2O.js";
26
26
  import "./chunk-DM2T26WE.js";
27
27
  import "./chunk-LDXUBPMO.js";