@tenphi/akno-core 0.13.1 → 0.13.3

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 (80) hide show
  1. package/dist/bench/language.d.ts +16 -8
  2. package/dist/bench/language.d.ts.map +1 -1
  3. package/dist/context.d.ts +3 -0
  4. package/dist/context.d.ts.map +1 -1
  5. package/dist/context.js.map +1 -1
  6. package/dist/index/indexer.d.ts +10 -0
  7. package/dist/index/indexer.d.ts.map +1 -1
  8. package/dist/index/indexer.js +21 -1
  9. package/dist/index/indexer.js.map +1 -1
  10. package/dist/maintenance/brain-migration.d.ts +4 -1
  11. package/dist/maintenance/brain-migration.d.ts.map +1 -1
  12. package/dist/maintenance/brain-migration.js +29 -6
  13. package/dist/maintenance/brain-migration.js.map +1 -1
  14. package/dist/maintenance/dream.d.ts +2 -0
  15. package/dist/maintenance/dream.d.ts.map +1 -1
  16. package/dist/maintenance/dream.js +270 -64
  17. package/dist/maintenance/dream.js.map +1 -1
  18. package/dist/maintenance/observation-scope.d.ts +74 -0
  19. package/dist/maintenance/observation-scope.d.ts.map +1 -0
  20. package/dist/maintenance/observation-scope.js +259 -0
  21. package/dist/maintenance/observation-scope.js.map +1 -0
  22. package/dist/maintenance/observe.d.ts +2 -0
  23. package/dist/maintenance/observe.d.ts.map +1 -1
  24. package/dist/maintenance/observe.js +28 -24
  25. package/dist/maintenance/observe.js.map +1 -1
  26. package/dist/maintenance/plans.d.ts +20 -1
  27. package/dist/maintenance/plans.d.ts.map +1 -1
  28. package/dist/maintenance/plans.js +251 -35
  29. package/dist/maintenance/plans.js.map +1 -1
  30. package/dist/observations/marker.d.ts +2 -0
  31. package/dist/observations/marker.d.ts.map +1 -1
  32. package/dist/observations/marker.js +16 -4
  33. package/dist/observations/marker.js.map +1 -1
  34. package/dist/observations/projection.d.ts +1 -1
  35. package/dist/observations/projection.d.ts.map +1 -1
  36. package/dist/observations/projection.js +14 -5
  37. package/dist/observations/projection.js.map +1 -1
  38. package/dist/open.d.ts.map +1 -1
  39. package/dist/open.js +5 -0
  40. package/dist/open.js.map +1 -1
  41. package/dist/ops/folder.d.ts.map +1 -1
  42. package/dist/ops/folder.js +3 -0
  43. package/dist/ops/folder.js.map +1 -1
  44. package/dist/ops/forget.d.ts.map +1 -1
  45. package/dist/ops/forget.js +9 -0
  46. package/dist/ops/forget.js.map +1 -1
  47. package/dist/ops/graph.js +5 -1
  48. package/dist/ops/graph.js.map +1 -1
  49. package/dist/ops/move.d.ts.map +1 -1
  50. package/dist/ops/move.js +15 -7
  51. package/dist/ops/move.js.map +1 -1
  52. package/dist/ops/remember.d.ts.map +1 -1
  53. package/dist/ops/remember.js +34 -8
  54. package/dist/ops/remember.js.map +1 -1
  55. package/dist/ops/retain.d.ts.map +1 -1
  56. package/dist/ops/retain.js +119 -2
  57. package/dist/ops/retain.js.map +1 -1
  58. package/dist/ops/write.d.ts.map +1 -1
  59. package/dist/ops/write.js +17 -4
  60. package/dist/ops/write.js.map +1 -1
  61. package/dist/store/db.d.ts.map +1 -1
  62. package/dist/store/db.js +18 -1
  63. package/dist/store/db.js.map +1 -1
  64. package/dist/store/migrations.d.ts +4 -2
  65. package/dist/store/migrations.d.ts.map +1 -1
  66. package/dist/store/migrations.js +41 -2
  67. package/dist/store/migrations.js.map +1 -1
  68. package/dist/write/journal.d.ts +2 -0
  69. package/dist/write/journal.d.ts.map +1 -1
  70. package/dist/write/journal.js +11 -0
  71. package/dist/write/journal.js.map +1 -1
  72. package/dist/write/mutation-receipts.d.ts +32 -0
  73. package/dist/write/mutation-receipts.d.ts.map +1 -0
  74. package/dist/write/mutation-receipts.js +331 -0
  75. package/dist/write/mutation-receipts.js.map +1 -0
  76. package/dist/write/retain.d.ts +6 -2
  77. package/dist/write/retain.d.ts.map +1 -1
  78. package/dist/write/retain.js +86 -13
  79. package/dist/write/retain.js.map +1 -1
  80. package/package.json +2 -2
@@ -1,7 +1,8 @@
1
1
  /**
2
2
  * One SQLite file holds both reproducible projections and deliberately durable workflow state.
3
3
  * `akno index --rebuild` refreshes the former in place; deleting this file loses the journal,
4
- * live maintenance plans, replayable managed-item source quotes, retain receipts and recovery state.
4
+ * live maintenance plans, replayable managed-item source quotes, retain and mutation receipts,
5
+ * and recovery state.
5
6
  * The journal keeps prior bytes for undo; a sealed plan keeps exact proposed bytes so a decision
6
7
  * survives a restart and never has to regenerate a possibly different rewrite; one bounded exact
7
8
  * quote lets a generated sentence be checked later; the receipt explains the lifecycle around them.
@@ -12,7 +13,7 @@
12
13
  * Upgrade code capability-checks durable tables and columns so databases created before
13
14
  * or after the compaction converge on the same schema.
14
15
  */
15
- export const SCHEMA_VERSION = 41;
16
+ export const SCHEMA_VERSION = 43;
16
17
  export const MAINTENANCE_PLANS_MIGRATION_INDEX = 1;
17
18
  export const MAINTENANCE_EVIDENCE_MIGRATION_INDEX = 2;
18
19
  export const CONFLICT_VERDICTS_MIGRATION_INDEX = 3;
@@ -47,6 +48,7 @@ export const MANAGED_MEMORY_PROJECTION_MIGRATION_INDEX = 31;
47
48
  export const RETAIN_SOURCE_LIFETIME_MIGRATION_INDEX = 32;
48
49
  export const PAGE_SOURCE_INTEGRITY_MIGRATION_INDEX = 33;
49
50
  export const PROSE_PROJECTION_MIGRATION_INDEX = 34;
51
+ export const MUTATION_RECEIPTS_MIGRATION_INDEX = 35;
50
52
  export const MIGRATIONS = [
51
53
  // ── 1. The schema as of 0.1.0 ─────────────────────────────────────────────
52
54
  `
@@ -1233,6 +1235,43 @@ export const MIGRATIONS = [
1233
1235
  source_hash TEXT NOT NULL,
1234
1236
  PRIMARY KEY(source_page, line)
1235
1237
  );`,
1238
+ // A caller may lose the reply after a filesystem mutation has committed. Keep only the
1239
+ // content-free request fingerprint and a bounded result locator: the Markdown and journal
1240
+ // remain the source of truth, while retries can prove whether they are the same request.
1241
+ // Receipts intentionally have no expiry or prune path. Caller keys are opaque, so deleting an
1242
+ // old receipt could never prove that its next appearance names a genuinely new mutation.
1243
+ `CREATE TABLE mutation_receipts (
1244
+ actor TEXT NOT NULL,
1245
+ operation TEXT NOT NULL,
1246
+ idempotency_key TEXT NOT NULL,
1247
+ request_hash TEXT NOT NULL,
1248
+ state TEXT NOT NULL,
1249
+ change_id TEXT REFERENCES changes(id) ON DELETE SET NULL,
1250
+ result TEXT,
1251
+ started_at TEXT NOT NULL,
1252
+ completed_at TEXT,
1253
+ PRIMARY KEY(actor, operation, idempotency_key),
1254
+ CHECK (operation IN ('write', 'move', 'forget', 'folder')),
1255
+ CHECK (state IN ('reserved', 'running', 'committed', 'completed', 'interrupted')),
1256
+ CHECK ((state = 'completed' AND result IS NOT NULL AND completed_at IS NOT NULL)
1257
+ OR (state != 'completed' AND result IS NULL AND completed_at IS NULL))
1258
+ );
1259
+ CREATE INDEX mutation_receipts_change ON mutation_receipts(change_id);`,
1260
+ // A scope-assessed observation keeps the opaque assessment fingerprint in its authoritative
1261
+ // Markdown marker. The projection exposes it without relabeling legacy observations as assessed.
1262
+ // Cached verdicts are content-addressed derived state: exact evidence remains in Markdown/facts,
1263
+ // while only a bounded proposed narrowing may be retained beside the typed verdict.
1264
+ `ALTER TABLE observation_entries ADD COLUMN scope_assessment TEXT;
1265
+
1266
+ CREATE TABLE observation_scope_verdicts (
1267
+ fingerprint TEXT PRIMARY KEY,
1268
+ classifier_endpoint TEXT NOT NULL,
1269
+ prompt_version TEXT NOT NULL,
1270
+ verdict TEXT NOT NULL,
1271
+ created_at TEXT NOT NULL
1272
+ );
1273
+ CREATE INDEX observation_scope_verdicts_model
1274
+ ON observation_scope_verdicts(classifier_endpoint, prompt_version, created_at);`,
1236
1275
  ];
1237
1276
  /**
1238
1277
  * The vector table is created separately: its dimension is fixed at creation
@@ -1 +1 @@
1
- {"version":3,"file":"migrations.js","sourceRoot":"","sources":["../../src/store/migrations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,CAAC;AACjC,MAAM,CAAC,MAAM,iCAAiC,GAAG,CAAC,CAAC;AACnD,MAAM,CAAC,MAAM,oCAAoC,GAAG,CAAC,CAAC;AACtD,MAAM,CAAC,MAAM,iCAAiC,GAAG,CAAC,CAAC;AACnD,MAAM,CAAC,MAAM,sCAAsC,GAAG,CAAC,CAAC;AACxD,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAAC,CAAC;AAClD,MAAM,CAAC,MAAM,sCAAsC,GAAG,CAAC,CAAC;AACxD,MAAM,CAAC,MAAM,qCAAqC,GAAG,CAAC,CAAC;AACvD,MAAM,CAAC,MAAM,mCAAmC,GAAG,CAAC,CAAC;AACrD,MAAM,CAAC,MAAM,uCAAuC,GAAG,CAAC,CAAC;AACzD,MAAM,CAAC,MAAM,4CAA4C,GAAG,EAAE,CAAC;AAC/D,MAAM,CAAC,MAAM,gCAAgC,GAAG,EAAE,CAAC;AACnD,MAAM,CAAC,MAAM,4BAA4B,GAAG,EAAE,CAAC;AAC/C,MAAM,CAAC,MAAM,0BAA0B,GAAG,EAAE,CAAC;AAC7C,MAAM,CAAC,MAAM,iCAAiC,GAAG,EAAE,CAAC;AACpD,MAAM,CAAC,MAAM,kDAAkD,GAAG,EAAE,CAAC;AACrE,MAAM,CAAC,MAAM,gDAAgD,GAAG,EAAE,CAAC;AACnE,MAAM,CAAC,MAAM,uCAAuC,GAAG,EAAE,CAAC;AAC1D,MAAM,CAAC,MAAM,yCAAyC,GAAG,EAAE,CAAC;AAC5D,MAAM,CAAC,MAAM,+CAA+C,GAAG,EAAE,CAAC;AAClE,MAAM,CAAC,MAAM,oCAAoC,GAAG,EAAE,CAAC;AACvD,MAAM,CAAC,MAAM,6CAA6C,GAAG,EAAE,CAAC;AAChE,MAAM,CAAC,MAAM,0CAA0C,GAAG,EAAE,CAAC;AAC7D,MAAM,CAAC,MAAM,0CAA0C,GAAG,EAAE,CAAC;AAC7D,MAAM,CAAC,MAAM,2CAA2C,GAAG,EAAE,CAAC;AAC9D,MAAM,CAAC,MAAM,0CAA0C,GAAG,EAAE,CAAC;AAC7D,MAAM,CAAC,MAAM,+BAA+B,GAAG,EAAE,CAAC;AAClD,MAAM,CAAC,MAAM,kCAAkC,GAAG,EAAE,CAAC;AACrD,MAAM,CAAC,MAAM,sCAAsC,GAAG,EAAE,CAAC;AACzD,MAAM,CAAC,MAAM,gCAAgC,GAAG,EAAE,CAAC;AACnD,MAAM,CAAC,MAAM,sCAAsC,GAAG,EAAE,CAAC;AACzD,MAAM,CAAC,MAAM,yCAAyC,GAAG,EAAE,CAAC;AAC5D,MAAM,CAAC,MAAM,sCAAsC,GAAG,EAAE,CAAC;AACzD,MAAM,CAAC,MAAM,qCAAqC,GAAG,EAAE,CAAC;AAExD,MAAM,CAAC,MAAM,gCAAgC,GAAG,EAAE,CAAC;AAEnD,MAAM,CAAC,MAAM,UAAU,GAAa;IAClC,6EAA6E;IAC7E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6QC;IACD,6EAA6E;IAC7E,4FAA4F;IAC5F,8FAA8F;IAC9F,6CAA6C;IAC7C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCC;IACD,4EAA4E;IAC5E,wFAAwF;IACxF,wFAAwF;IACxF;;GAEC;IACD,6EAA6E;IAC7E,+FAA+F;IAC/F,qEAAqE;IACrE;;;;;;;;;;;GAWC;IACD,6EAA6E;IAC7E,8FAA8F;IAC9F,+FAA+F;IAC/F;;GAEC;IACD,4EAA4E;IAC5E,4FAA4F;IAC5F,8FAA8F;IAC9F;;;;;;;;;;GAUC;IACD,4EAA4E;IAC5E,iGAAiG;IACjG,gGAAgG;IAChG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCC;IACD,4EAA4E;IAC5E,8EAA8E;IAC9E,6EAA6E;IAC7E,+EAA+E;IAC/E;;;;GAIC;IACD,4EAA4E;IAC5E,2EAA2E;IAC3E,2EAA2E;IAC3E,kEAAkE;IAClE;;;;;;;;;GASC;IACD,2EAA2E;IAC3E,2FAA2F;IAC3F,4EAA4E;IAC5E;;;;;;;GAOC;IACD,2EAA2E;IAC3E,uGAAuG;IACvG;;GAEC;IACD,2EAA2E;IAC3E,uFAAuF;IACvF,uFAAuF;IACvF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCC;IACD,yEAAyE;IACzE,yFAAyF;IACzF,0FAA0F;IAC1F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CC;IACD,0EAA0E;IAC1E,0FAA0F;IAC1F,2FAA2F;IAC3F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCC;IACD,yEAAyE;IACzE,2FAA2F;IAC3F,sEAAsE;IACtE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkGC;IACD,4EAA4E;IAC5E,sFAAsF;IACtF,wFAAwF;IACxF;;GAEC;IACD,6FAA6F;IAC7F,iFAAiF;IACjF;;;;;;;;;GASC;IACD,uFAAuF;IACvF,yFAAyF;IACzF,6FAA6F;IAC7F;;;;;;;;;;;;;;;;;GAiBC;IACD,uFAAuF;IACvF,8FAA8F;IAC9F,iEAAiE;IACjE;;;;;;;;;;;;;;GAcC;IACD,wFAAwF;IACxF,6FAA6F;IAC7F,6EAA6E;IAC7E;;;;;;;;;;;;;GAaC;IACD,2FAA2F;IAC3F,+FAA+F;IAC/F,+FAA+F;IAC/F;;;;;;;;;;;;;;;;;;;;;;;;GAwBC;IACD,8FAA8F;IAC9F,mGAAmG;IACnG;;;;;;;;;;;;;;;;;;;;GAoBC;IACD,wFAAwF;IACxF,4FAA4F;IAC5F,0FAA0F;IAC1F;;;;;;;;;;;;;;;;;;;GAmBC;IACD,0FAA0F;IAC1F,gGAAgG;IAChG;;;GAGC;IACD,gGAAgG;IAChG,gGAAgG;IAChG,kGAAkG;IAClG,8BAA8B;IAC9B;;;;;;;;;;;;;;GAcC;IACD,2FAA2F;IAC3F,2FAA2F;IAC3F,iCAAiC;IACjC;;;;;;;;;;;;;;;;;;;GAmBC;IACD,gGAAgG;IAChG,8FAA8F;IAC9F,6DAA6D;IAC7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCC;IACD,6FAA6F;IAC7F,4FAA4F;IAC5F,wFAAwF;IACxF;;;GAGC;IACD,6FAA6F;IAC7F,gGAAgG;IAChG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDC;IACD,0FAA0F;IAC1F,0FAA0F;IAC1F,0EAA0E;IAC1E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CC;IACD,yFAAyF;IACzF,4EAA4E;IAC5E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CC;IACD,8FAA8F;IAC9F,8FAA8F;IAC9F,yEAAyE;IACzE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuEC;IACD,8FAA8F;IAC9F,6FAA6F;IAC7F,6FAA6F;IAC7F;;;;;;;;;;;;;;;;;;;;;GAqBC;IACD,8FAA8F;IAC9F,gGAAgG;IAChG,wFAAwF;IACxF;;;;;;;;;;;;;;;;;GAiBC;IACD,uFAAuF;IACvF;;;;;;;KAOG;CACJ,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,UAAkB;IAC/C,OAAO;;sBAEa,UAAU;IAC5B,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG;;;;;;CAMlC,CAAC"}
1
+ {"version":3,"file":"migrations.js","sourceRoot":"","sources":["../../src/store/migrations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,CAAC;AACjC,MAAM,CAAC,MAAM,iCAAiC,GAAG,CAAC,CAAC;AACnD,MAAM,CAAC,MAAM,oCAAoC,GAAG,CAAC,CAAC;AACtD,MAAM,CAAC,MAAM,iCAAiC,GAAG,CAAC,CAAC;AACnD,MAAM,CAAC,MAAM,sCAAsC,GAAG,CAAC,CAAC;AACxD,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAAC,CAAC;AAClD,MAAM,CAAC,MAAM,sCAAsC,GAAG,CAAC,CAAC;AACxD,MAAM,CAAC,MAAM,qCAAqC,GAAG,CAAC,CAAC;AACvD,MAAM,CAAC,MAAM,mCAAmC,GAAG,CAAC,CAAC;AACrD,MAAM,CAAC,MAAM,uCAAuC,GAAG,CAAC,CAAC;AACzD,MAAM,CAAC,MAAM,4CAA4C,GAAG,EAAE,CAAC;AAC/D,MAAM,CAAC,MAAM,gCAAgC,GAAG,EAAE,CAAC;AACnD,MAAM,CAAC,MAAM,4BAA4B,GAAG,EAAE,CAAC;AAC/C,MAAM,CAAC,MAAM,0BAA0B,GAAG,EAAE,CAAC;AAC7C,MAAM,CAAC,MAAM,iCAAiC,GAAG,EAAE,CAAC;AACpD,MAAM,CAAC,MAAM,kDAAkD,GAAG,EAAE,CAAC;AACrE,MAAM,CAAC,MAAM,gDAAgD,GAAG,EAAE,CAAC;AACnE,MAAM,CAAC,MAAM,uCAAuC,GAAG,EAAE,CAAC;AAC1D,MAAM,CAAC,MAAM,yCAAyC,GAAG,EAAE,CAAC;AAC5D,MAAM,CAAC,MAAM,+CAA+C,GAAG,EAAE,CAAC;AAClE,MAAM,CAAC,MAAM,oCAAoC,GAAG,EAAE,CAAC;AACvD,MAAM,CAAC,MAAM,6CAA6C,GAAG,EAAE,CAAC;AAChE,MAAM,CAAC,MAAM,0CAA0C,GAAG,EAAE,CAAC;AAC7D,MAAM,CAAC,MAAM,0CAA0C,GAAG,EAAE,CAAC;AAC7D,MAAM,CAAC,MAAM,2CAA2C,GAAG,EAAE,CAAC;AAC9D,MAAM,CAAC,MAAM,0CAA0C,GAAG,EAAE,CAAC;AAC7D,MAAM,CAAC,MAAM,+BAA+B,GAAG,EAAE,CAAC;AAClD,MAAM,CAAC,MAAM,kCAAkC,GAAG,EAAE,CAAC;AACrD,MAAM,CAAC,MAAM,sCAAsC,GAAG,EAAE,CAAC;AACzD,MAAM,CAAC,MAAM,gCAAgC,GAAG,EAAE,CAAC;AACnD,MAAM,CAAC,MAAM,sCAAsC,GAAG,EAAE,CAAC;AACzD,MAAM,CAAC,MAAM,yCAAyC,GAAG,EAAE,CAAC;AAC5D,MAAM,CAAC,MAAM,sCAAsC,GAAG,EAAE,CAAC;AACzD,MAAM,CAAC,MAAM,qCAAqC,GAAG,EAAE,CAAC;AAExD,MAAM,CAAC,MAAM,gCAAgC,GAAG,EAAE,CAAC;AACnD,MAAM,CAAC,MAAM,iCAAiC,GAAG,EAAE,CAAC;AAEpD,MAAM,CAAC,MAAM,UAAU,GAAa;IAClC,6EAA6E;IAC7E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6QC;IACD,6EAA6E;IAC7E,4FAA4F;IAC5F,8FAA8F;IAC9F,6CAA6C;IAC7C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCC;IACD,4EAA4E;IAC5E,wFAAwF;IACxF,wFAAwF;IACxF;;GAEC;IACD,6EAA6E;IAC7E,+FAA+F;IAC/F,qEAAqE;IACrE;;;;;;;;;;;GAWC;IACD,6EAA6E;IAC7E,8FAA8F;IAC9F,+FAA+F;IAC/F;;GAEC;IACD,4EAA4E;IAC5E,4FAA4F;IAC5F,8FAA8F;IAC9F;;;;;;;;;;GAUC;IACD,4EAA4E;IAC5E,iGAAiG;IACjG,gGAAgG;IAChG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCC;IACD,4EAA4E;IAC5E,8EAA8E;IAC9E,6EAA6E;IAC7E,+EAA+E;IAC/E;;;;GAIC;IACD,4EAA4E;IAC5E,2EAA2E;IAC3E,2EAA2E;IAC3E,kEAAkE;IAClE;;;;;;;;;GASC;IACD,2EAA2E;IAC3E,2FAA2F;IAC3F,4EAA4E;IAC5E;;;;;;;GAOC;IACD,2EAA2E;IAC3E,uGAAuG;IACvG;;GAEC;IACD,2EAA2E;IAC3E,uFAAuF;IACvF,uFAAuF;IACvF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCC;IACD,yEAAyE;IACzE,yFAAyF;IACzF,0FAA0F;IAC1F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CC;IACD,0EAA0E;IAC1E,0FAA0F;IAC1F,2FAA2F;IAC3F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCC;IACD,yEAAyE;IACzE,2FAA2F;IAC3F,sEAAsE;IACtE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkGC;IACD,4EAA4E;IAC5E,sFAAsF;IACtF,wFAAwF;IACxF;;GAEC;IACD,6FAA6F;IAC7F,iFAAiF;IACjF;;;;;;;;;GASC;IACD,uFAAuF;IACvF,yFAAyF;IACzF,6FAA6F;IAC7F;;;;;;;;;;;;;;;;;GAiBC;IACD,uFAAuF;IACvF,8FAA8F;IAC9F,iEAAiE;IACjE;;;;;;;;;;;;;;GAcC;IACD,wFAAwF;IACxF,6FAA6F;IAC7F,6EAA6E;IAC7E;;;;;;;;;;;;;GAaC;IACD,2FAA2F;IAC3F,+FAA+F;IAC/F,+FAA+F;IAC/F;;;;;;;;;;;;;;;;;;;;;;;;GAwBC;IACD,8FAA8F;IAC9F,mGAAmG;IACnG;;;;;;;;;;;;;;;;;;;;GAoBC;IACD,wFAAwF;IACxF,4FAA4F;IAC5F,0FAA0F;IAC1F;;;;;;;;;;;;;;;;;;;GAmBC;IACD,0FAA0F;IAC1F,gGAAgG;IAChG;;;GAGC;IACD,gGAAgG;IAChG,gGAAgG;IAChG,kGAAkG;IAClG,8BAA8B;IAC9B;;;;;;;;;;;;;;GAcC;IACD,2FAA2F;IAC3F,2FAA2F;IAC3F,iCAAiC;IACjC;;;;;;;;;;;;;;;;;;;GAmBC;IACD,gGAAgG;IAChG,8FAA8F;IAC9F,6DAA6D;IAC7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCC;IACD,6FAA6F;IAC7F,4FAA4F;IAC5F,wFAAwF;IACxF;;;GAGC;IACD,6FAA6F;IAC7F,gGAAgG;IAChG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDC;IACD,0FAA0F;IAC1F,0FAA0F;IAC1F,0EAA0E;IAC1E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CC;IACD,yFAAyF;IACzF,4EAA4E;IAC5E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CC;IACD,8FAA8F;IAC9F,8FAA8F;IAC9F,yEAAyE;IACzE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuEC;IACD,8FAA8F;IAC9F,6FAA6F;IAC7F,6FAA6F;IAC7F;;;;;;;;;;;;;;;;;;;;;GAqBC;IACD,8FAA8F;IAC9F,gGAAgG;IAChG,wFAAwF;IACxF;;;;;;;;;;;;;;;;;GAiBC;IACD,uFAAuF;IACvF;;;;;;;KAOG;IACH,uFAAuF;IACvF,0FAA0F;IAC1F,yFAAyF;IACzF,8FAA8F;IAC9F,yFAAyF;IACzF;;;;;;;;;;;;;;;;yEAgBuE;IACvE,4FAA4F;IAC5F,iGAAiG;IACjG,iGAAiG;IACjG,oFAAoF;IACpF;;;;;;;;;;oFAUkF;CACnF,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,UAAkB;IAC/C,OAAO;;sBAEa,UAAU;IAC5B,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG;;;;;;CAMlC,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import type { Store } from '../store/db.ts';
2
2
  import { type WriteResult } from './atomic.ts';
3
+ import type { ActiveMutationReceipt } from './mutation-receipts.ts';
3
4
  /**
4
5
  * The journal is durable state: it holds previous bytes, and there is nowhere else
5
6
  * to get them. `akno index --rebuild` deliberately preserves it while refreshing
@@ -53,6 +54,7 @@ export declare class Journal {
53
54
  op: string;
54
55
  summary: string;
55
56
  files: ChangeFile[];
57
+ receipt?: ActiveMutationReceipt;
56
58
  }): string;
57
59
  /**
58
60
  * Reverses a change only when every file still has the exact post-change state.
@@ -1 +1 @@
1
- {"version":3,"file":"journal.d.ts","sourceRoot":"","sources":["../../src/write/journal.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAE5C,OAAO,EAAe,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAE5D;;;;;;;;GAQG;AAEH,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,OAAO,CAAC;AAEtE,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,UAAU,CAAC;IACnB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC7B,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,UAAU,CAAA;KAAE,EAAE,CAAC;CAClD;AAoCD,qBAAa,OAAO;;gBAKN,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IAM5D;;;;;;OAMG;IACH,MAAM,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,UAAU,EAAE,CAAA;KAAE,GAAG,MAAM;IAgD1F;;;;;;;OAOG;IACG,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IA2KjG,IAAI,CAAC,KAAK,SAAK,GAAG,aAAa,EAAE;IAyBjC;;;;OAIG;IACG,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAalE;;;;OAIG;IACG,WAAW,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAmB1D;AAED,yEAAyE;AACzE,wBAAgB,SAAS,CAAC,MAAM,EAAE,WAAW,GAAG,UAAU,CAOzD"}
1
+ {"version":3,"file":"journal.d.ts","sourceRoot":"","sources":["../../src/write/journal.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAE5C,OAAO,EAAe,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAEpE;;;;;;;;GAQG;AAEH,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,OAAO,CAAC;AAEtE,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,UAAU,CAAC;IACnB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC7B,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,UAAU,CAAA;KAAE,EAAE,CAAC;CAClD;AAoCD,qBAAa,OAAO;;gBAKN,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IAM5D;;;;;;OAMG;IACH,MAAM,CAAC,KAAK,EAAE;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,EAAE,EAAE,MAAM,CAAC;QACX,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,EAAE,UAAU,EAAE,CAAC;QACpB,OAAO,CAAC,EAAE,qBAAqB,CAAC;KACjC,GAAG,MAAM;IA8DV;;;;;;;OAOG;IACG,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IA2KjG,IAAI,CAAC,KAAK,SAAK,GAAG,aAAa,EAAE;IAyBjC;;;;OAIG;IACG,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAalE;;;;OAIG;IACG,WAAW,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAmB1D;AAED,yEAAyE;AACzE,wBAAgB,SAAS,CAAC,MAAM,EAAE,WAAW,GAAG,UAAU,CAOzD"}
@@ -46,6 +46,17 @@ export class Journal {
46
46
  : null;
47
47
  insert.run(changeId, index, file.relPath, file.action, file.before, file.after, file.snapshot ?? null, file.movedTo ?? null, beforeHash, afterHash);
48
48
  });
49
+ if (input.receipt) {
50
+ const receipt = input.receipt;
51
+ const updated = this.#store.db
52
+ .prepare(`UPDATE mutation_receipts SET state = 'committed', change_id = ?
53
+ WHERE actor = ? AND operation = ? AND idempotency_key = ? AND request_hash = ?
54
+ AND state = 'running'`)
55
+ .run(changeId, receipt.actor, receipt.operation, receipt.idempotencyKey, receipt.requestHash);
56
+ if (updated.changes !== 1) {
57
+ throw new AknoError('internal', `could not commit the ${receipt.operation} mutation receipt`);
58
+ }
59
+ }
49
60
  });
50
61
  return changeId;
51
62
  }
@@ -1 +1 @@
1
- {"version":3,"file":"journal.js","sourceRoot":"","sources":["../../src/write/journal.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"journal.js","sourceRoot":"","sources":["../../src/write/journal.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import type { AknoContext } from '../context.ts';
2
+ declare const REPLAY_SAFE_OPERATIONS: readonly ["write", "move", "forget", "folder"];
3
+ export type ReplaySafeOperation = (typeof REPLAY_SAFE_OPERATIONS)[number];
4
+ export interface ActiveMutationReceipt {
5
+ actor: AknoContext['actor'];
6
+ operation: ReplaySafeOperation;
7
+ idempotencyKey: string;
8
+ requestHash: string;
9
+ started: boolean;
10
+ }
11
+ type MutationInput = Record<string, unknown> & {
12
+ idempotency_key?: string;
13
+ };
14
+ type MutationResult = Record<string, unknown> & {
15
+ outcome?: unknown;
16
+ };
17
+ export declare function isReplaySafeOperation(operation: string): operation is ReplaySafeOperation;
18
+ /**
19
+ * Bind a caller-owned key before the first effect and return a completed request without
20
+ * reapplying it. Incomplete rows fail closed: only a process that knows it never crossed the
21
+ * mutation boundary may discard its reservation and let the caller try again.
22
+ */
23
+ export declare function executeReplaySafeMutation<T extends MutationResult>(ctx: AknoContext, operation: ReplaySafeOperation, parsedInput: MutationInput, work: (ctx: AknoContext, input: MutationInput) => Promise<T>): Promise<T>;
24
+ /** Mark the durable boundary immediately before the first filesystem effect. */
25
+ export declare function beginMutation(ctx: AknoContext): void;
26
+ /**
27
+ * A new writer proves the old process is gone. Reservations never reached the mutation boundary;
28
+ * every later state might have changed Markdown and therefore remains as an explicit interruption.
29
+ */
30
+ export declare function recoverInterruptedMutationReceipts(ctx: AknoContext): void;
31
+ export {};
32
+ //# sourceMappingURL=mutation-receipts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mutation-receipts.d.ts","sourceRoot":"","sources":["../../src/write/mutation-receipts.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAKjD,QAAA,MAAM,sBAAsB,gDAAiD,CAAC;AAC9E,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1E,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IAC5B,SAAS,EAAE,mBAAmB,CAAC;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;CAClB;AAcD,KAAK,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IAAE,eAAe,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAC5E,KAAK,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAOtE,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,IAAI,mBAAmB,CAEzF;AAED;;;;GAIG;AACH,wBAAsB,yBAAyB,CAAC,CAAC,SAAS,cAAc,EACtE,GAAG,EAAE,WAAW,EAChB,SAAS,EAAE,mBAAmB,EAC9B,WAAW,EAAE,aAAa,EAC1B,IAAI,EAAE,CAAC,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,aAAa,KAAK,OAAO,CAAC,CAAC,CAAC,GAC3D,OAAO,CAAC,CAAC,CAAC,CA8EZ;AAED,gFAAgF;AAChF,wBAAgB,aAAa,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,CAcpD;AAED;;;GAGG;AACH,wBAAgB,kCAAkC,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,CA2BzE"}
@@ -0,0 +1,331 @@
1
+ import path from 'node:path';
2
+ import { AknoError } from '@tenphi/akno-protocol';
3
+ import { sha256 } from "../store/ids.js";
4
+ import { normalizeSlug } from "../ops/write.js";
5
+ const REPLAY_SAFE_OPERATIONS = ['write', 'move', 'forget', 'folder'];
6
+ // A process can open the same knowledge base twice because its pid already owns the write lock.
7
+ // Key by database path as well as receipt identity so those handles still agree which call is live.
8
+ const activeReceipts = new Set();
9
+ const MAX_RESULT_BYTES = 64 * 1024;
10
+ export function isReplaySafeOperation(operation) {
11
+ return REPLAY_SAFE_OPERATIONS.includes(operation);
12
+ }
13
+ /**
14
+ * Bind a caller-owned key before the first effect and return a completed request without
15
+ * reapplying it. Incomplete rows fail closed: only a process that knows it never crossed the
16
+ * mutation boundary may discard its reservation and let the caller try again.
17
+ */
18
+ export async function executeReplaySafeMutation(ctx, operation, parsedInput, work) {
19
+ const { idempotency_key: key, ...operationInput } = parsedInput;
20
+ if (!key)
21
+ return work(ctx, operationInput);
22
+ const requestHash = mutationRequestHash(operation, operationInput);
23
+ const identity = receiptIdentity(ctx.config.dbPath, ctx.actor, operation, key);
24
+ const existing = readReceipt(ctx.store, ctx.actor, operation, key);
25
+ if (existing) {
26
+ assertSameRequest(existing, requestHash);
27
+ if (existing.state === 'completed') {
28
+ return replayResult(ctx, operation, operationInput, existing);
29
+ }
30
+ if (activeReceipts.has(identity)) {
31
+ throw new AknoError('busy', `${operation} with this idempotency key is still running`, {
32
+ operation,
33
+ idempotency_key: key,
34
+ state: existing.state,
35
+ });
36
+ }
37
+ throw interruptedError(existing);
38
+ }
39
+ const now = new Date().toISOString();
40
+ ctx.store.db
41
+ .prepare(`INSERT INTO mutation_receipts(
42
+ actor, operation, idempotency_key, request_hash, state, started_at
43
+ ) VALUES(?, ?, ?, ?, 'reserved', ?)`)
44
+ .run(ctx.actor, operation, key, requestHash, now);
45
+ const receipt = {
46
+ actor: ctx.actor,
47
+ operation,
48
+ idempotencyKey: key,
49
+ requestHash,
50
+ started: false,
51
+ };
52
+ activeReceipts.add(identity);
53
+ try {
54
+ const result = await work({ ...ctx, mutationReceipt: receipt }, operationInput);
55
+ if (!receipt.started && isRetryablePrecondition(result)) {
56
+ deleteReceipt(ctx.store, receipt);
57
+ return result;
58
+ }
59
+ if (receipt.started)
60
+ assertJournalCommit(ctx.store, receipt, result);
61
+ const stored = compactResult(operation, result);
62
+ const updated = ctx.store.db
63
+ .prepare(`UPDATE mutation_receipts
64
+ SET state = 'completed', result = ?, completed_at = ?
65
+ WHERE actor = ? AND operation = ? AND idempotency_key = ? AND request_hash = ?
66
+ AND state IN ('reserved', 'running', 'committed')`)
67
+ .run(stored, new Date().toISOString(), ctx.actor, operation, key, requestHash);
68
+ if (updated.changes !== 1) {
69
+ throw new AknoError('internal', `could not complete the ${operation} mutation receipt`);
70
+ }
71
+ return result;
72
+ }
73
+ catch (error) {
74
+ if (receipt.started) {
75
+ ctx.store.db
76
+ .prepare(`UPDATE mutation_receipts
77
+ SET state = 'interrupted', result = NULL, completed_at = NULL
78
+ WHERE actor = ? AND operation = ? AND idempotency_key = ? AND request_hash = ?
79
+ AND state IN ('running', 'committed')`)
80
+ .run(ctx.actor, operation, key, requestHash);
81
+ }
82
+ else {
83
+ deleteReceipt(ctx.store, receipt);
84
+ }
85
+ throw error;
86
+ }
87
+ finally {
88
+ activeReceipts.delete(identity);
89
+ }
90
+ }
91
+ /** Mark the durable boundary immediately before the first filesystem effect. */
92
+ export function beginMutation(ctx) {
93
+ const receipt = ctx.mutationReceipt;
94
+ if (!receipt || receipt.started)
95
+ return;
96
+ const updated = ctx.store.db
97
+ .prepare(`UPDATE mutation_receipts SET state = 'running'
98
+ WHERE actor = ? AND operation = ? AND idempotency_key = ? AND request_hash = ?
99
+ AND state = 'reserved'`)
100
+ .run(receipt.actor, receipt.operation, receipt.idempotencyKey, receipt.requestHash);
101
+ if (updated.changes !== 1) {
102
+ throw new AknoError('internal', `could not start the ${receipt.operation} mutation receipt`);
103
+ }
104
+ receipt.started = true;
105
+ }
106
+ /**
107
+ * A new writer proves the old process is gone. Reservations never reached the mutation boundary;
108
+ * every later state might have changed Markdown and therefore remains as an explicit interruption.
109
+ */
110
+ export function recoverInterruptedMutationReceipts(ctx) {
111
+ if (!ctx.writable)
112
+ return;
113
+ ctx.store.transaction(() => {
114
+ const rows = ctx.store.db
115
+ .prepare("SELECT actor, operation, idempotency_key, state FROM mutation_receipts WHERE state != 'completed'")
116
+ .all();
117
+ const remove = ctx.store.db.prepare(`DELETE FROM mutation_receipts
118
+ WHERE actor = ? AND operation = ? AND idempotency_key = ? AND state = 'reserved'`);
119
+ const interrupt = ctx.store.db.prepare(`UPDATE mutation_receipts SET state = 'interrupted', result = NULL, completed_at = NULL
120
+ WHERE actor = ? AND operation = ? AND idempotency_key = ?
121
+ AND state IN ('running', 'committed')`);
122
+ for (const row of rows) {
123
+ if (activeReceipts.has(receiptIdentity(ctx.config.dbPath, row.actor, row.operation, row.idempotency_key))) {
124
+ continue;
125
+ }
126
+ if (row.state === 'reserved')
127
+ remove.run(row.actor, row.operation, row.idempotency_key);
128
+ else
129
+ interrupt.run(row.actor, row.operation, row.idempotency_key);
130
+ }
131
+ });
132
+ }
133
+ function mutationRequestHash(operation, input) {
134
+ return sha256(stableJson({ operation, request: canonicalRequest(operation, input) }));
135
+ }
136
+ function canonicalRequest(operation, input) {
137
+ const request = withoutUndefined(input);
138
+ if (operation === 'write') {
139
+ if (typeof request.slug === 'string')
140
+ request.slug = normalizeSlug(request.slug);
141
+ if (typeof request.propose_slug === 'string')
142
+ request.propose_slug = normalizeSlug(request.propose_slug);
143
+ if (Array.isArray(request.documents)) {
144
+ request.documents = request.documents.map((document) => isRecord(document) && typeof document.path === 'string'
145
+ ? { ...document, path: path.resolve(document.path) }
146
+ : document);
147
+ }
148
+ request.dry_run = request.dry_run ?? false;
149
+ }
150
+ else if (operation === 'move') {
151
+ if (typeof request.from === 'string')
152
+ request.from = normalizeSlug(request.from);
153
+ if (typeof request.to === 'string')
154
+ request.to = normalizeSlug(request.to);
155
+ }
156
+ else if (operation === 'forget') {
157
+ if (typeof request.slug === 'string')
158
+ request.slug = request.slug.replace(/\.(md|markdown)$/i, '');
159
+ }
160
+ else {
161
+ if (typeof request.path === 'string')
162
+ request.path = normalizeSlug(request.path).replace(/\/\*+$/, '');
163
+ const role = typeof request.role === 'string' ? request.role : 'knowledge';
164
+ request.role = role;
165
+ request.remember = request.remember ?? (role === 'knowledge' ? 'integrate' : 'deny');
166
+ request.dry_run = request.dry_run ?? false;
167
+ }
168
+ return request;
169
+ }
170
+ function compactResult(operation, result) {
171
+ const safe = withoutUndefined({ ...result });
172
+ delete safe.removed;
173
+ delete safe.rule;
174
+ if (operation === 'folder' && result.rule !== undefined) {
175
+ if (result.outcome === 'noop') {
176
+ safe.rebuild_existing_rule = true;
177
+ safe.rule_hash = sha256(stableJson(result.rule));
178
+ }
179
+ else {
180
+ safe.rebuild_rule = true;
181
+ }
182
+ }
183
+ let encoded = stableJson(safe);
184
+ if (Buffer.byteLength(encoded) <= MAX_RESULT_BYTES)
185
+ return encoded;
186
+ const bounded = withoutUndefined({
187
+ status: result.status,
188
+ outcome: result.outcome,
189
+ change_id: result.change_id,
190
+ removed_from: result.removed_from,
191
+ trashed: result.trashed,
192
+ path: result.path,
193
+ glob: result.glob,
194
+ rules_file: result.rules_file,
195
+ result_truncated: true,
196
+ });
197
+ encoded = stableJson(bounded);
198
+ if (Buffer.byteLength(encoded) > MAX_RESULT_BYTES) {
199
+ throw new AknoError('internal', 'mutation result locator exceeded its storage bound');
200
+ }
201
+ return encoded;
202
+ }
203
+ function replayResult(ctx, operation, input, receipt) {
204
+ if (!receipt.result)
205
+ throw new AknoError('internal', 'completed mutation receipt has no result locator');
206
+ const result = JSON.parse(receipt.result);
207
+ if (result.rebuild_rule && operation === 'folder') {
208
+ result.rule = folderRuleFromRequest(input);
209
+ delete result.rebuild_rule;
210
+ }
211
+ if (result.rebuild_existing_rule && operation === 'folder' && typeof result.glob === 'string') {
212
+ const rule = currentFolderRule(ctx, result.glob);
213
+ if (rule && sha256(stableJson(rule)) === result.rule_hash)
214
+ result.rule = rule;
215
+ delete result.rebuild_existing_rule;
216
+ delete result.rule_hash;
217
+ }
218
+ if (operation === 'forget' && receipt.change_id && (input.fact || input.memory)) {
219
+ const removed = removedTextFromJournal(ctx.store, receipt.change_id);
220
+ if (removed !== null)
221
+ result.removed = removed;
222
+ }
223
+ delete result.result_truncated;
224
+ return { ...result, replayed: true };
225
+ }
226
+ function folderRuleFromRequest(input) {
227
+ const role = typeof input.role === 'string' ? input.role : 'knowledge';
228
+ return withoutUndefined({
229
+ description: input.description,
230
+ role,
231
+ remember: input.remember ?? (role === 'knowledge' ? 'integrate' : 'deny'),
232
+ about: input.about,
233
+ type: input.type,
234
+ ingest: input.ingest,
235
+ rank: input.rank,
236
+ route: input.route,
237
+ });
238
+ }
239
+ function currentFolderRule(ctx, glob) {
240
+ const compiled = ctx.config.rules.find((rule) => rule.glob === glob);
241
+ if (!compiled)
242
+ return null;
243
+ const { glob: _glob, source: _source, specificity: _specificity, ...rule } = compiled;
244
+ return withoutUndefined(rule);
245
+ }
246
+ function removedTextFromJournal(store, changeId) {
247
+ const row = store.db
248
+ .prepare(`SELECT before, after FROM change_files
249
+ WHERE change_id = ? AND before IS NOT NULL AND after IS NOT NULL ORDER BY ord LIMIT 1`)
250
+ .get(changeId);
251
+ if (!row)
252
+ return null;
253
+ const before = row.before.split('\n');
254
+ const after = row.after.split('\n');
255
+ let prefix = 0;
256
+ while (prefix < before.length && prefix < after.length && before[prefix] === after[prefix])
257
+ prefix++;
258
+ let suffix = 0;
259
+ while (suffix < before.length - prefix &&
260
+ suffix < after.length - prefix &&
261
+ before[before.length - 1 - suffix] === after[after.length - 1 - suffix]) {
262
+ suffix++;
263
+ }
264
+ const removed = before.slice(prefix, before.length - suffix);
265
+ return removed.length > 0 ? removed.join('\n') : null;
266
+ }
267
+ function readReceipt(store, actor, operation, key) {
268
+ return store.db
269
+ .prepare(`SELECT * FROM mutation_receipts
270
+ WHERE actor = ? AND operation = ? AND idempotency_key = ?`)
271
+ .get(actor, operation, key);
272
+ }
273
+ function assertSameRequest(receipt, requestHash) {
274
+ if (receipt.request_hash === requestHash)
275
+ return;
276
+ throw new AknoError('conflict', 'this idempotency key is already bound to a different request', {
277
+ operation: receipt.operation,
278
+ idempotency_key: receipt.idempotency_key,
279
+ });
280
+ }
281
+ function assertJournalCommit(store, receipt, result) {
282
+ const row = readReceipt(store, receipt.actor, receipt.operation, receipt.idempotencyKey);
283
+ if (row?.state !== 'committed' ||
284
+ typeof result.change_id !== 'string' ||
285
+ row.change_id !== result.change_id) {
286
+ throw new AknoError('internal', `${receipt.operation} crossed its mutation boundary without an atomic journal commit`);
287
+ }
288
+ }
289
+ function interruptedError(receipt) {
290
+ return new AknoError('interrupted', `${receipt.operation} with this idempotency key may already have changed the knowledge base`, {
291
+ operation: receipt.operation,
292
+ idempotency_key: receipt.idempotency_key,
293
+ state: receipt.state,
294
+ ...(receipt.change_id ? { change_id: receipt.change_id } : {}),
295
+ recovery: receipt.change_id
296
+ ? 'Inspect the recorded change before deciding whether to undo or continue with a new idempotency key.'
297
+ : 'Inspect the requested destination before continuing with a new idempotency key.',
298
+ });
299
+ }
300
+ function isRetryablePrecondition(result) {
301
+ return ['requires_folder', 'requires_approval', 'conflict'].includes(String(result.outcome));
302
+ }
303
+ function deleteReceipt(store, receipt) {
304
+ store.db
305
+ .prepare(`DELETE FROM mutation_receipts
306
+ WHERE actor = ? AND operation = ? AND idempotency_key = ? AND request_hash = ?`)
307
+ .run(receipt.actor, receipt.operation, receipt.idempotencyKey, receipt.requestHash);
308
+ }
309
+ function receiptIdentity(dbPath, actor, operation, key) {
310
+ return `${dbPath}\0${actor}\0${operation}\0${key}`;
311
+ }
312
+ function withoutUndefined(value) {
313
+ return Object.fromEntries(Object.entries(value).filter(([, entry]) => entry !== undefined));
314
+ }
315
+ function stableJson(value) {
316
+ return JSON.stringify(sortValue(value));
317
+ }
318
+ function sortValue(value) {
319
+ if (Array.isArray(value))
320
+ return value.map(sortValue);
321
+ if (!isRecord(value))
322
+ return value;
323
+ return Object.fromEntries(Object.keys(value)
324
+ .filter((key) => value[key] !== undefined)
325
+ .sort()
326
+ .map((key) => [key, sortValue(value[key])]));
327
+ }
328
+ function isRecord(value) {
329
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
330
+ }
331
+ //# sourceMappingURL=mutation-receipts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mutation-receipts.js","sourceRoot":"","sources":["../../src/write/mutation-receipts.ts"],"names":[],"mappings":"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"}
@@ -7,8 +7,8 @@ import type { FolderCatalogEntry } from '../kb/folders.ts';
7
7
  * consumed by keyed `retain` and unkeyed `remember`; keeping the interpretation here prevents
8
8
  * the two public operations from gradually learning different meanings for the same source.
9
9
  */
10
- export declare const RETAIN_PROMPT_VERSION = "retain-extraction-language-v57";
11
- export declare const RETAIN_VERIFIER_VERSION = "retain-verifier-language-v41";
10
+ export declare const RETAIN_PROMPT_VERSION = "retain-extraction-language-v59";
11
+ export declare const RETAIN_VERIFIER_VERSION = "retain-verifier-language-v42";
12
12
  /** All fields are required or nullable so constrained-decoding endpoints can keep strict mode. */
13
13
  export declare const RETAIN_SCHEMA: z.ZodObject<{
14
14
  candidates: z.ZodArray<z.ZodObject<{
@@ -149,7 +149,10 @@ export type RetainCandidate = ProvidedRetainCandidate & {
149
149
  /** Compatibility fields consumed by the existing remember result and evidence archive. */
150
150
  origin?: 'user' | 'assistant';
151
151
  evidence?: string;
152
+ /** Verifier-derived boundary for automatic placement; never supplied by the extraction model. */
153
+ retention_scope?: RetentionScope;
152
154
  };
155
+ type RetentionScope = 'global' | 'entity' | 'document' | 'event' | 'task' | 'unknown';
153
156
  export interface RetainHeldCandidate {
154
157
  hold_stage?: 'validation' | 'verification';
155
158
  candidate_id: string;
@@ -203,4 +206,5 @@ export declare function cleanCandidateBatch(value: unknown, options: CandidateCl
203
206
  held: RetainHeldCandidate[];
204
207
  };
205
208
  export declare function modelCallReceipt(model: ModelClient, outcome: ModelOutcome<unknown>): RetainModelCallReceipt;
209
+ export {};
206
210
  //# sourceMappingURL=retain.d.ts.map