@remnic/core 1.1.4 → 1.1.6

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 (204) hide show
  1. package/dist/access-cli.js +32 -30
  2. package/dist/access-cli.js.map +1 -1
  3. package/dist/access-http.d.ts +7 -7
  4. package/dist/access-http.js +13 -13
  5. package/dist/access-mcp.d.ts +7 -7
  6. package/dist/access-mcp.js +12 -12
  7. package/dist/access-schema.d.ts +89 -4
  8. package/dist/access-schema.js +3 -3
  9. package/dist/{access-service-CtXFnprR.d.ts → access-service-CcKu1Yc0.d.ts} +22 -18
  10. package/dist/access-service.d.ts +7 -7
  11. package/dist/access-service.js +10 -10
  12. package/dist/active-memory-bridge.d.ts +1 -1
  13. package/dist/active-recall.d.ts +1 -1
  14. package/dist/behavior-learner.d.ts +1 -1
  15. package/dist/behavior-signals.d.ts +1 -1
  16. package/dist/bootstrap.d.ts +6 -6
  17. package/dist/briefing.d.ts +2 -2
  18. package/dist/briefing.js +3 -3
  19. package/dist/buffer-surprise-report.d.ts +1 -1
  20. package/dist/buffer.d.ts +2 -2
  21. package/dist/calibration.d.ts +1 -1
  22. package/dist/calibration.js +1 -1
  23. package/dist/{capsule-crypto-5CYAGVC5.js → capsule-crypto-SJS5VVAP.js} +2 -2
  24. package/dist/{capsule-export-NZQPOTQ4.js → capsule-export-LLEVB2RG.js} +3 -3
  25. package/dist/{capsule-import-SDCUXLEV.js → capsule-import-UW45R2MZ.js} +3 -3
  26. package/dist/causal-behavior.d.ts +1 -1
  27. package/dist/causal-consolidation.d.ts +2 -2
  28. package/dist/causal-consolidation.js +4 -4
  29. package/dist/{chunk-CRU27Q4J.js → chunk-3P6TPZM4.js} +64 -5
  30. package/dist/chunk-3P6TPZM4.js.map +1 -0
  31. package/dist/{chunk-LW2NMHDW.js → chunk-5NS6NN5A.js} +2 -2
  32. package/dist/{chunk-KNKUID7G.js → chunk-767ODGE6.js} +1 -1
  33. package/dist/{chunk-V7TEH5I2.js → chunk-7RAW2T4P.js} +2 -2
  34. package/dist/{chunk-RILIVK4O.js → chunk-A4ACKWIW.js} +29 -3
  35. package/dist/chunk-A4ACKWIW.js.map +1 -0
  36. package/dist/{chunk-F5VQOQ2E.js → chunk-AIT53NLG.js} +2 -2
  37. package/dist/chunk-AKV3HOGZ.js +757 -0
  38. package/dist/chunk-AKV3HOGZ.js.map +1 -0
  39. package/dist/{chunk-NZS2BLTP.js → chunk-AOABCJVL.js} +772 -59
  40. package/dist/chunk-AOABCJVL.js.map +1 -0
  41. package/dist/{chunk-B2TL6GA2.js → chunk-BFVBG5XY.js} +2 -2
  42. package/dist/{chunk-43EKP2UK.js → chunk-COAGZQT7.js} +1 -1
  43. package/dist/{chunk-43EKP2UK.js.map → chunk-COAGZQT7.js.map} +1 -1
  44. package/dist/{chunk-USFPPRAF.js → chunk-D7WYTVUQ.js} +5 -3
  45. package/dist/chunk-D7WYTVUQ.js.map +1 -0
  46. package/dist/{chunk-Y4A6M3B6.js → chunk-DLYTYJ43.js} +2 -2
  47. package/dist/{chunk-ZIBOQULP.js → chunk-EONJ7GK3.js} +2 -2
  48. package/dist/{chunk-JWSENLQI.js → chunk-FSWYMUWI.js} +15 -1
  49. package/dist/chunk-FSWYMUWI.js.map +1 -0
  50. package/dist/{chunk-SMA4IMHV.js → chunk-KUIEFH2S.js} +3 -3
  51. package/dist/{chunk-EGEPUGN4.js → chunk-LKJA5MR2.js} +2 -2
  52. package/dist/{chunk-XRCYKJ3V.js → chunk-M3QQ5DRA.js} +61 -18
  53. package/dist/chunk-M3QQ5DRA.js.map +1 -0
  54. package/dist/{chunk-CUI2STX6.js → chunk-MYMOXFMR.js} +12 -6
  55. package/dist/chunk-MYMOXFMR.js.map +1 -0
  56. package/dist/{chunk-AEMBDV7M.js → chunk-OZAFME7S.js} +22 -17
  57. package/dist/chunk-OZAFME7S.js.map +1 -0
  58. package/dist/{chunk-IYY4MCPG.js → chunk-P73JTV34.js} +2 -2
  59. package/dist/{chunk-52PDY6GD.js → chunk-PT2EZWOH.js} +2 -2
  60. package/dist/{chunk-3KIS4VGT.js → chunk-QIGOEM65.js} +2 -2
  61. package/dist/{chunk-47WOM4YW.js → chunk-RXGR3YLU.js} +2 -2
  62. package/dist/{chunk-VTJVUHRK.js → chunk-SRBJUAMP.js} +1 -1
  63. package/dist/chunk-SRBJUAMP.js.map +1 -0
  64. package/dist/{chunk-XQ4EJLUD.js → chunk-TMSHGSIG.js} +2 -2
  65. package/dist/{chunk-X6VBWOVZ.js → chunk-UE2OQNQQ.js} +2 -2
  66. package/dist/{chunk-HIRKCQGF.js → chunk-XOG2FHYW.js} +44 -44
  67. package/dist/{chunk-HIRKCQGF.js.map → chunk-XOG2FHYW.js.map} +1 -1
  68. package/dist/{chunk-MUELDH4F.js → chunk-YELFQNQH.js} +2 -2
  69. package/dist/{chunk-TIFRGAKO.js → chunk-YKGRACQP.js} +5 -5
  70. package/dist/{chunk-AGZHRWPT.js → chunk-ZBZVNWQO.js} +2 -2
  71. package/dist/{chunk-W7WWT4FJ.js → chunk-ZOMA7J3J.js} +2 -2
  72. package/dist/{cli-lMql2FCr.d.ts → cli-WahR0rs-.d.ts} +4 -4
  73. package/dist/cli.d.ts +8 -8
  74. package/dist/cli.js +25 -25
  75. package/dist/{codex-materialize-CQlLTzke.d.ts → codex-materialize-D5d5vvyS.d.ts} +1 -1
  76. package/dist/compression-optimizer.d.ts +1 -1
  77. package/dist/config.d.ts +1 -1
  78. package/dist/config.js +1 -1
  79. package/dist/consolidation-provenance-check.d.ts +2 -2
  80. package/dist/consolidation-undo.d.ts +2 -2
  81. package/dist/day-summary.d.ts +1 -1
  82. package/dist/delinearize.d.ts +1 -1
  83. package/dist/direct-answer-wiring.d.ts +1 -1
  84. package/dist/direct-answer.d.ts +1 -1
  85. package/dist/embedding-fallback.d.ts +1 -1
  86. package/dist/{engine-O6YWKQM3.js → engine-5OTS6GY3.js} +4 -4
  87. package/dist/entity-retrieval.d.ts +2 -2
  88. package/dist/entity-retrieval.js +3 -3
  89. package/dist/entity-schema.d.ts +1 -1
  90. package/dist/explicit-capture.d.ts +6 -6
  91. package/dist/explicit-cue-recall.d.ts +40 -0
  92. package/dist/explicit-cue-recall.js +21 -0
  93. package/dist/extraction-judge-telemetry.d.ts +1 -1
  94. package/dist/extraction-judge-training.d.ts +1 -1
  95. package/dist/extraction-judge.d.ts +1 -1
  96. package/dist/extraction.d.ts +1 -1
  97. package/dist/extraction.js +2 -2
  98. package/dist/fallback-llm.d.ts +3 -1
  99. package/dist/fallback-llm.js +1 -1
  100. package/dist/identity-continuity.d.ts +1 -1
  101. package/dist/importance.d.ts +1 -1
  102. package/dist/index.d.ts +14 -13
  103. package/dist/index.js +191 -52
  104. package/dist/index.js.map +1 -1
  105. package/dist/intent.d.ts +1 -1
  106. package/dist/lifecycle.d.ts +1 -1
  107. package/dist/live-connectors-runner.d.ts +1 -1
  108. package/dist/local-llm.d.ts +1 -1
  109. package/dist/memory-action-policy.d.ts +1 -1
  110. package/dist/memory-cache.d.ts +1 -1
  111. package/dist/{memory-governance-JZHZDOLN.js → memory-governance-7MI7KE35.js} +4 -4
  112. package/dist/memory-governance-7MI7KE35.js.map +1 -0
  113. package/dist/memory-lifecycle-ledger-utils.d.ts +1 -1
  114. package/dist/{memory-projection-store-CY8TU40w.d.ts → memory-projection-store-BQt5VUQ8.d.ts} +1 -1
  115. package/dist/memory-projection-store.d.ts +2 -2
  116. package/dist/memory-worth-outcomes.d.ts +2 -2
  117. package/dist/models-json.d.ts +1 -1
  118. package/dist/native-knowledge.d.ts +1 -1
  119. package/dist/operator-toolkit.d.ts +2 -2
  120. package/dist/operator-toolkit.js +6 -6
  121. package/dist/{orchestrator-ChkesB8U.d.ts → orchestrator-D2lHhFWI.d.ts} +36 -11
  122. package/dist/orchestrator.d.ts +6 -6
  123. package/dist/orchestrator.js +24 -22
  124. package/dist/patterns-cli.d.ts +1 -1
  125. package/dist/policy-runtime.d.ts +1 -1
  126. package/dist/{port-hqGnoStS.d.ts → port-5W-r5SKc.d.ts} +1 -1
  127. package/dist/qmd-recall-cache.d.ts +2 -2
  128. package/dist/qmd.d.ts +2 -2
  129. package/dist/recall-disclosure-escalation.d.ts +1 -1
  130. package/dist/recall-explain-renderer.d.ts +1 -1
  131. package/dist/recall-explain-renderer.js +3 -3
  132. package/dist/recall-state.d.ts +1 -1
  133. package/dist/recall-tag-filter.d.ts +1 -1
  134. package/dist/recall-xray-cli.d.ts +1 -1
  135. package/dist/recall-xray-cli.js +4 -4
  136. package/dist/recall-xray-renderer.d.ts +1 -1
  137. package/dist/recall-xray-renderer.js +3 -3
  138. package/dist/recall-xray.d.ts +2 -2
  139. package/dist/recall-xray.js +2 -2
  140. package/dist/resolve-auth-token.d.ts +1 -1
  141. package/dist/resume-bundles.js +3 -3
  142. package/dist/retrieval-agents.d.ts +2 -2
  143. package/dist/retrieval-tiers.d.ts +1 -1
  144. package/dist/schemas.d.ts +54 -54
  145. package/dist/{semantic-consolidation-ByBXb-sf.d.ts → semantic-consolidation-tDODR2je.d.ts} +2 -2
  146. package/dist/semantic-consolidation.d.ts +3 -3
  147. package/dist/semantic-consolidation.js +3 -3
  148. package/dist/semantic-rule-promotion.js +3 -3
  149. package/dist/semantic-rule-verifier.d.ts +1 -1
  150. package/dist/semantic-rule-verifier.js +3 -3
  151. package/dist/session-observer-bands.d.ts +1 -1
  152. package/dist/session-observer-state.d.ts +1 -1
  153. package/dist/signal.d.ts +1 -1
  154. package/dist/storage.d.ts +2 -2
  155. package/dist/storage.js +2 -2
  156. package/dist/summarizer.d.ts +1 -1
  157. package/dist/summarizer.js +2 -2
  158. package/dist/summary-snapshot.d.ts +1 -1
  159. package/dist/temporal-supersession.d.ts +2 -2
  160. package/dist/temporal-validity.d.ts +1 -1
  161. package/dist/threading.d.ts +1 -1
  162. package/dist/tier-migration.d.ts +3 -3
  163. package/dist/tier-routing.d.ts +1 -1
  164. package/dist/topics.d.ts +1 -1
  165. package/dist/transcript.d.ts +1 -1
  166. package/dist/types-C-USTTAx.d.ts +2713 -0
  167. package/dist/types.d.ts +1 -2668
  168. package/dist/types.js +1 -1
  169. package/dist/utility-runtime.d.ts +1 -1
  170. package/dist/verified-recall.js +3 -3
  171. package/package.json +1 -1
  172. package/dist/chunk-AEMBDV7M.js.map +0 -1
  173. package/dist/chunk-CRU27Q4J.js.map +0 -1
  174. package/dist/chunk-CUI2STX6.js.map +0 -1
  175. package/dist/chunk-JWSENLQI.js.map +0 -1
  176. package/dist/chunk-NZS2BLTP.js.map +0 -1
  177. package/dist/chunk-RILIVK4O.js.map +0 -1
  178. package/dist/chunk-USFPPRAF.js.map +0 -1
  179. package/dist/chunk-VTJVUHRK.js.map +0 -1
  180. package/dist/chunk-XRCYKJ3V.js.map +0 -1
  181. /package/dist/{capsule-crypto-5CYAGVC5.js.map → capsule-crypto-SJS5VVAP.js.map} +0 -0
  182. /package/dist/{capsule-export-NZQPOTQ4.js.map → capsule-export-LLEVB2RG.js.map} +0 -0
  183. /package/dist/{capsule-import-SDCUXLEV.js.map → capsule-import-UW45R2MZ.js.map} +0 -0
  184. /package/dist/{chunk-LW2NMHDW.js.map → chunk-5NS6NN5A.js.map} +0 -0
  185. /package/dist/{chunk-KNKUID7G.js.map → chunk-767ODGE6.js.map} +0 -0
  186. /package/dist/{chunk-V7TEH5I2.js.map → chunk-7RAW2T4P.js.map} +0 -0
  187. /package/dist/{chunk-F5VQOQ2E.js.map → chunk-AIT53NLG.js.map} +0 -0
  188. /package/dist/{chunk-B2TL6GA2.js.map → chunk-BFVBG5XY.js.map} +0 -0
  189. /package/dist/{chunk-Y4A6M3B6.js.map → chunk-DLYTYJ43.js.map} +0 -0
  190. /package/dist/{chunk-ZIBOQULP.js.map → chunk-EONJ7GK3.js.map} +0 -0
  191. /package/dist/{chunk-SMA4IMHV.js.map → chunk-KUIEFH2S.js.map} +0 -0
  192. /package/dist/{chunk-EGEPUGN4.js.map → chunk-LKJA5MR2.js.map} +0 -0
  193. /package/dist/{chunk-IYY4MCPG.js.map → chunk-P73JTV34.js.map} +0 -0
  194. /package/dist/{chunk-52PDY6GD.js.map → chunk-PT2EZWOH.js.map} +0 -0
  195. /package/dist/{chunk-3KIS4VGT.js.map → chunk-QIGOEM65.js.map} +0 -0
  196. /package/dist/{chunk-47WOM4YW.js.map → chunk-RXGR3YLU.js.map} +0 -0
  197. /package/dist/{chunk-XQ4EJLUD.js.map → chunk-TMSHGSIG.js.map} +0 -0
  198. /package/dist/{chunk-X6VBWOVZ.js.map → chunk-UE2OQNQQ.js.map} +0 -0
  199. /package/dist/{chunk-MUELDH4F.js.map → chunk-YELFQNQH.js.map} +0 -0
  200. /package/dist/{chunk-TIFRGAKO.js.map → chunk-YKGRACQP.js.map} +0 -0
  201. /package/dist/{chunk-AGZHRWPT.js.map → chunk-ZBZVNWQO.js.map} +0 -0
  202. /package/dist/{chunk-W7WWT4FJ.js.map → chunk-ZOMA7J3J.js.map} +0 -0
  203. /package/dist/{engine-O6YWKQM3.js.map → engine-5OTS6GY3.js.map} +0 -0
  204. /package/dist/{memory-governance-JZHZDOLN.js.map → explicit-cue-recall.js.map} +0 -0
@@ -12,7 +12,7 @@ import {
12
12
  } from "./chunk-OA3L7BFR.js";
13
13
  import {
14
14
  encryptCapsuleFile
15
- } from "./chunk-KNKUID7G.js";
15
+ } from "./chunk-767ODGE6.js";
16
16
 
17
17
  // src/transfer/capsule-export.ts
18
18
  import { mkdir, readFile, stat, writeFile } from "fs/promises";
@@ -272,4 +272,4 @@ export {
272
272
  exportCapsule,
273
273
  isValidCapsuleSince
274
274
  };
275
- //# sourceMappingURL=chunk-IYY4MCPG.js.map
275
+ //# sourceMappingURL=chunk-P73JTV34.js.map
@@ -4,7 +4,7 @@ import {
4
4
  import {
5
5
  compareEntityTimestamps,
6
6
  normalizeEntityName
7
- } from "./chunk-Y4A6M3B6.js";
7
+ } from "./chunk-DLYTYJ43.js";
8
8
  import {
9
9
  sanitizeMemoryContent
10
10
  } from "./chunk-M62O4P4T.js";
@@ -593,4 +593,4 @@ export {
593
593
  entityIndexVersion,
594
594
  entityRecentTranscriptLookbackHours
595
595
  };
596
- //# sourceMappingURL=chunk-52PDY6GD.js.map
596
+ //# sourceMappingURL=chunk-PT2EZWOH.js.map
@@ -14,7 +14,7 @@ import {
14
14
  import {
15
15
  decryptCapsuleFileInMemory,
16
16
  isEncryptedCapsuleFile
17
- } from "./chunk-KNKUID7G.js";
17
+ } from "./chunk-767ODGE6.js";
18
18
 
19
19
  // src/transfer/capsule-import.ts
20
20
  import { lstat, mkdir, readFile, realpath, stat, writeFile } from "fs/promises";
@@ -225,4 +225,4 @@ function mintForkId(capsuleId, originalId, now) {
225
225
  export {
226
226
  importCapsule
227
227
  };
228
- //# sourceMappingURL=chunk-3KIS4VGT.js.map
228
+ //# sourceMappingURL=chunk-QIGOEM65.js.map
@@ -11,7 +11,7 @@ import {
11
11
  } from "./chunk-LOBRX7VD.js";
12
12
  import {
13
13
  parseConfig
14
- } from "./chunk-JWSENLQI.js";
14
+ } from "./chunk-FSWYMUWI.js";
15
15
  import {
16
16
  resolveCommitmentLedgerDir,
17
17
  validateCommitmentLedgerEntry
@@ -268,4 +268,4 @@ export {
268
268
  recordResumeBundle,
269
269
  getResumeBundleStatus
270
270
  };
271
- //# sourceMappingURL=chunk-47WOM4YW.js.map
271
+ //# sourceMappingURL=chunk-RXGR3YLU.js.map
@@ -400,4 +400,4 @@ export {
400
400
  validateReplayTurn,
401
401
  RoutingRulesStore
402
402
  };
403
- //# sourceMappingURL=chunk-VTJVUHRK.js.map
403
+ //# sourceMappingURL=chunk-SRBJUAMP.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils/iso-timestamp.ts","../src/replay/types.ts","../src/routing/store.ts"],"sourcesContent":["// ---------------------------------------------------------------------------\n// Shared ISO-8601 / RFC 3339 timestamp validation helpers.\n//\n// Two public entry points — a strict UTC-only parser used by the replay\n// pipeline, and a more permissive parser used by bulk-import adapters that\n// need to preserve source timezone offsets. Both share date-component,\n// offset-range, and round-trip validation so they cannot silently diverge.\n// ---------------------------------------------------------------------------\n\n// UTC-only: `...Z`, 0 or 3 fractional digits (replay canonical form).\nconst ISO_UTC_TIMESTAMP_RE =\n /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d{3})?Z$/;\n\n// Lenient: variable-precision fractional seconds and `Z` or `[+-]HH:MM` offset.\nconst ISO_OFFSET_TIMESTAMP_RE =\n /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:Z|[+-]\\d{2}:\\d{2})$/;\n\n/**\n * Validate the date/time components of an ISO timestamp string.\n * Catches overflowed dates like Feb 31 that `Date.parse` silently normalizes.\n */\nfunction validateDateComponents(isoString: string): boolean {\n const match = isoString.match(\n /^(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2})/,\n );\n if (!match) return false;\n const [, yStr, mStr, dStr, hStr, minStr, sStr] = match;\n const y = Number(yStr);\n const m = Number(mStr);\n const d = Number(dStr);\n const h = Number(hStr);\n const min = Number(minStr);\n const s = Number(sStr);\n if (m < 1 || m > 12) return false;\n if (d < 1 || d > 31) return false;\n if (h > 23 || min > 59 || s > 59) return false;\n // Validate day for the specific month (using Date(y, m, 0) to get days).\n const daysInMonth = new Date(y, m, 0).getDate();\n if (d > daysInMonth) return false;\n return true;\n}\n\n/**\n * Validate the timezone offset range if present.\n * Max offset is +/-14:00 per ISO 8601; minute part must be 0-59.\n */\nfunction validateOffset(isoString: string): boolean {\n const offsetMatch = isoString.match(/([+-])(\\d{2}):(\\d{2})$/);\n if (!offsetMatch) return true; // `Z` form, no offset to validate.\n const oh = Number(offsetMatch[2]);\n const om = Number(offsetMatch[3]);\n if (oh > 14 || om > 59) return false;\n // +14:00 is max; offsets like +14:30 are invalid.\n if (oh === 14 && om > 0) return false;\n return true;\n}\n\n/**\n * Normalize a `Z`-suffixed ISO timestamp to exactly three fractional digits so\n * the round-trip comparison against `Date.prototype.toISOString()` succeeds\n * regardless of input precision (or absence of a fractional part).\n */\nfunction normalizeUtcForComparison(value: string): string {\n const fracMatch = value.match(/\\.(\\d+)Z$/);\n if (fracMatch) {\n const ms = (fracMatch[1] + \"000\").slice(0, 3);\n return value.replace(/\\.\\d+Z$/, `.${ms}Z`);\n }\n return value.replace(/Z$/, \".000Z\");\n}\n\n/**\n * Strict UTC-only parser — accepts `YYYY-MM-DDTHH:MM:SS[.sss]Z`.\n * Returns milliseconds since epoch, or `null` if invalid.\n */\nexport function parseIsoUtcTimestamp(value: string): number | null {\n if (typeof value !== \"string\" || !ISO_UTC_TIMESTAMP_RE.test(value)) {\n return null;\n }\n const ts = Date.parse(value);\n if (!Number.isFinite(ts)) return null;\n if (!validateDateComponents(value)) return null;\n const roundTrip = new Date(ts).toISOString();\n if (roundTrip !== normalizeUtcForComparison(value)) return null;\n return ts;\n}\n\n/**\n * Lenient parser — accepts variable-precision fractional seconds and either\n * a `Z` suffix or a `[+-]HH:MM` offset. Returns milliseconds since epoch, or\n * `null` if the string is not a well-formed RFC 3339 timestamp.\n */\nexport function parseIsoOffsetTimestamp(value: string): number | null {\n if (typeof value !== \"string\" || !ISO_OFFSET_TIMESTAMP_RE.test(value)) {\n return null;\n }\n const ts = Date.parse(value);\n if (!Number.isFinite(ts)) return null;\n if (!validateDateComponents(value)) return null;\n if (!validateOffset(value)) return null;\n // For UTC timestamps (ending in `Z`), verify with a round-trip so that\n // overflowed UTC calendar dates cannot slip through.\n if (value.endsWith(\"Z\")) {\n const roundTrip = new Date(ts).toISOString();\n if (roundTrip !== normalizeUtcForComparison(value)) return null;\n }\n return ts;\n}\n","import { parseIsoUtcTimestamp } from \"../utils/iso-timestamp.js\";\n\nexport type ReplaySource = \"openclaw\" | \"claude\" | \"chatgpt\";\nexport type ReplayRole = \"user\" | \"assistant\";\n\nexport interface ReplayTurn {\n source: ReplaySource;\n sessionKey: string;\n role: ReplayRole;\n content: string;\n timestamp: string;\n externalId?: string;\n metadata?: Record<string, unknown>;\n parts?: import(\"../message-parts/index.js\").LcmMessagePartInput[];\n rawContent?: unknown;\n sourceFormat?: import(\"../message-parts/index.js\").MessagePartSourceFormat;\n}\n\nexport interface ReplayWarning {\n code: string;\n message: string;\n index?: number;\n}\n\nexport interface ReplayValidationIssue {\n code: string;\n message: string;\n index?: number;\n}\n\nexport interface ReplayParseOptions {\n from?: string;\n to?: string;\n defaultSessionKey?: string;\n strict?: boolean;\n}\n\nexport interface ReplayParseResult {\n turns: ReplayTurn[];\n warnings: ReplayWarning[];\n}\n\nexport interface ReplayNormalizer {\n source: ReplaySource;\n parse(input: unknown, options?: ReplayParseOptions): Promise<ReplayParseResult> | ReplayParseResult;\n}\n\nconst VALID_SOURCES: ReadonlySet<string> = new Set([\"openclaw\", \"claude\", \"chatgpt\"]);\nconst VALID_ROLES: ReadonlySet<string> = new Set([\"user\", \"assistant\"]);\nexport const REPLAY_UNKNOWN_SESSION_KEY = \"replay:unknown\";\n\nexport function isReplaySource(value: unknown): value is ReplaySource {\n return typeof value === \"string\" && VALID_SOURCES.has(value);\n}\n\nexport function isReplayRole(value: unknown): value is ReplayRole {\n return typeof value === \"string\" && VALID_ROLES.has(value);\n}\n\nexport function normalizeReplaySessionKey(value: unknown): string {\n if (typeof value !== \"string\") return REPLAY_UNKNOWN_SESSION_KEY;\n const trimmed = value.trim();\n return trimmed.length > 0 ? trimmed : REPLAY_UNKNOWN_SESSION_KEY;\n}\n\n/**\n * Strict UTC-only ISO-8601 parser used by the replay pipeline.\n *\n * Delegates to the shared parser in `utils/iso-timestamp.ts` — do not\n * reimplement locally; extend that helper instead. Replay intentionally\n * rejects timezone-offset timestamps to keep canonical form consistent\n * across recorded transcripts.\n */\nexport function parseIsoTimestamp(value: string): number | null {\n return parseIsoUtcTimestamp(value);\n}\n\nexport function validateReplayTurn(turn: ReplayTurn, index?: number): ReplayValidationIssue[] {\n const issues: ReplayValidationIssue[] = [];\n if (!turn || typeof turn !== \"object\") {\n issues.push({\n code: \"turn.invalid\",\n message: \"Replay turn must be an object.\",\n index,\n });\n return issues;\n }\n\n if (!isReplayRole(turn.role)) {\n issues.push({\n code: \"turn.role.invalid\",\n message: `Replay role must be 'user' or 'assistant', received '${String(turn.role)}'.`,\n index,\n });\n }\n\n if (!isReplaySource(turn.source)) {\n issues.push({\n code: \"turn.source.invalid\",\n message: `Replay source must be 'openclaw', 'claude', or 'chatgpt', received '${String(turn.source)}'.`,\n index,\n });\n }\n\n if (!turn.sessionKey || typeof turn.sessionKey !== \"string\" || turn.sessionKey.trim().length === 0) {\n issues.push({\n code: \"turn.sessionKey.invalid\",\n message: \"Replay sessionKey is required.\",\n index,\n });\n }\n\n if (!turn.content || typeof turn.content !== \"string\" || turn.content.trim().length === 0) {\n issues.push({\n code: \"turn.content.invalid\",\n message: \"Replay content must be a non-empty string.\",\n index,\n });\n }\n\n if (!turn.timestamp || typeof turn.timestamp !== \"string\" || parseIsoTimestamp(turn.timestamp) === null) {\n issues.push({\n code: \"turn.timestamp.invalid\",\n message: `Replay timestamp must be a valid ISO timestamp, received '${String(turn.timestamp)}'.`,\n index,\n });\n }\n\n return issues;\n}\n","import { lstat, mkdir, readFile, realpath, rename, rm, stat, writeFile } from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { createHash } from \"node:crypto\";\nimport { log } from \"../logger.js\";\nimport { validateRouteTarget, type RouteRule, type RoutingEngineOptions } from \"./engine.js\";\n\ntype RoutingRulesState = {\n version: 1;\n updatedAt: string;\n rules: RouteRule[];\n};\n\nfunction defaultState(): RoutingRulesState {\n return {\n version: 1,\n updatedAt: new Date(0).toISOString(),\n rules: [],\n };\n}\n\nfunction stableRuleId(rule: Pick<RouteRule, \"patternType\" | \"pattern\" | \"priority\" | \"target\">): string {\n const seed = JSON.stringify({\n patternType: rule.patternType,\n pattern: rule.pattern.trim(),\n priority: rule.priority,\n target: rule.target,\n });\n return `route-${createHash(\"sha256\").update(seed).digest(\"hex\").slice(0, 12)}`;\n}\n\nfunction resolveStatePath(memoryDir: string, stateFile: string): string {\n const root = path.resolve(memoryDir);\n const defaultPath = path.join(root, \"state\", \"routing-rules.json\");\n if (path.isAbsolute(stateFile)) {\n const absolute = path.resolve(stateFile);\n return absolute.startsWith(root + path.sep) ? absolute : defaultPath;\n }\n const resolved = path.resolve(root, stateFile);\n return resolved.startsWith(root + path.sep) ? resolved : defaultPath;\n}\n\nfunction normalizeRule(rule: RouteRule, options?: RoutingEngineOptions): RouteRule | null {\n if (!rule || typeof rule !== \"object\") return null;\n if (rule.enabled === false) return null;\n if (rule.patternType !== \"keyword\" && rule.patternType !== \"regex\") return null;\n if (typeof rule.pattern !== \"string\" || rule.pattern.trim().length === 0) return null;\n if (typeof rule.priority !== \"number\" || !Number.isFinite(rule.priority)) return null;\n\n const targetValidation = validateRouteTarget(rule.target, options);\n if (!targetValidation.ok || !targetValidation.target) return null;\n\n const normalizedPriority = Math.trunc(rule.priority);\n const normalizedTarget = targetValidation.target;\n const id = typeof rule.id === \"string\" && rule.id.trim().length > 0\n ? rule.id.trim()\n : stableRuleId({\n patternType: rule.patternType,\n pattern: rule.pattern.trim(),\n priority: normalizedPriority,\n target: normalizedTarget,\n });\n return {\n id,\n patternType: rule.patternType,\n pattern: rule.pattern.trim(),\n priority: normalizedPriority,\n target: normalizedTarget,\n enabled: true,\n };\n}\n\nexport class RoutingRulesStore {\n private readonly memoryRoot: string;\n private readonly statePath: string;\n private readonly lockPath: string;\n private writeQueue: Promise<void> = Promise.resolve();\n\n constructor(memoryDir: string, stateFile = \"state/routing-rules.json\") {\n this.memoryRoot = path.resolve(memoryDir);\n this.statePath = resolveStatePath(memoryDir, stateFile);\n this.lockPath = `${this.statePath}.lock`;\n }\n\n async read(options?: RoutingEngineOptions): Promise<RouteRule[]> {\n try {\n const persisted = await this.readPersistedRules();\n return persisted\n .map((rule) => normalizeRule(rule, options))\n .filter((rule): rule is RouteRule => rule !== null);\n } catch {\n return [];\n }\n }\n\n async write(rules: RouteRule[], options?: RoutingEngineOptions): Promise<RouteRule[]> {\n return this.withWriteLock(async () => this.writeNormalized(rules, options));\n }\n\n async upsert(rule: RouteRule, options?: RoutingEngineOptions): Promise<RouteRule[]> {\n return this.withWriteLock(async () => {\n const existing = await this.readPersistedRules();\n const normalized = normalizeRule(rule, options);\n if (!normalized) return existing;\n\n const next = existing.filter((entry) => entry.id !== normalized.id);\n next.push(normalized);\n return this.writeNormalized(next);\n });\n }\n\n async removeByPattern(pattern: string): Promise<RouteRule[]> {\n return this.withWriteLock(async () => {\n const trimmed = pattern.trim();\n const existing = await this.readPersistedRules();\n const next = existing.filter((entry) => entry.pattern !== trimmed);\n if (next.length === existing.length) return existing;\n return this.writeNormalized(next);\n });\n }\n\n async reset(): Promise<void> {\n await this.withWriteLock(async () => {\n const payload = defaultState();\n await this.assertStatePathScoped();\n await writeFile(this.statePath, JSON.stringify(payload, null, 2), \"utf-8\");\n });\n }\n\n private dedupeById(rules: RouteRule[]): RouteRule[] {\n const byId = new Map<string, RouteRule>();\n for (const rule of rules) {\n byId.set(rule.id, rule);\n }\n return Array.from(byId.values());\n }\n\n private async readPersistedRules(): Promise<RouteRule[]> {\n try {\n await this.assertStatePathScoped();\n const raw = await readFile(this.statePath, \"utf-8\");\n const parsed = JSON.parse(raw) as Partial<RoutingRulesState>;\n if (!parsed || typeof parsed !== \"object\" || !Array.isArray(parsed.rules)) return [];\n const normalized = parsed.rules\n .map((rule) => normalizeRule(rule))\n .filter((rule): rule is RouteRule => rule !== null);\n return this.dedupeById(normalized);\n } catch {\n return [];\n }\n }\n\n private async writeNormalized(rules: RouteRule[], options?: RoutingEngineOptions): Promise<RouteRule[]> {\n const normalized = this.dedupeById(\n rules\n .map((rule) => normalizeRule(rule, options))\n .filter((rule): rule is RouteRule => rule !== null),\n );\n\n const payload: RoutingRulesState = {\n version: 1,\n updatedAt: new Date().toISOString(),\n rules: normalized,\n };\n\n const tmpPath = `${this.statePath}.tmp-${process.pid}-${Date.now()}`;\n try {\n await this.assertStatePathScoped();\n await writeFile(tmpPath, JSON.stringify(payload, null, 2), \"utf-8\");\n await rename(tmpPath, this.statePath);\n } catch (err) {\n log.debug(`routing rules write failed: ${err}`);\n throw err;\n } finally {\n await rm(tmpPath, { force: true }).catch(() => {});\n }\n\n return normalized;\n }\n\n private async withWriteLock<T>(op: () => Promise<T>): Promise<T> {\n const previous = this.writeQueue;\n let release: () => void = () => {};\n this.writeQueue = new Promise<void>((resolve) => {\n release = resolve;\n });\n await previous;\n let unlock: (() => Promise<void>) | null = null;\n try {\n unlock = await this.acquireFileLock();\n return await op();\n } finally {\n if (unlock) await unlock();\n release();\n }\n }\n\n private async acquireFileLock(): Promise<() => Promise<void>> {\n const start = Date.now();\n const staleMs = 30_000;\n const timeoutMs = 5_000;\n let unexpectedLockError: unknown = null;\n await this.assertStatePathScoped();\n await mkdir(path.dirname(this.lockPath), { recursive: true });\n\n while (Date.now() - start < timeoutMs) {\n try {\n await mkdir(this.lockPath);\n return async () => {\n try {\n await rm(this.lockPath, { recursive: true, force: true });\n } catch {\n // Fail-open: lock cleanup should not fail writes.\n }\n };\n } catch (err) {\n const code = (err as NodeJS.ErrnoException).code;\n if (code !== \"EEXIST\") {\n unexpectedLockError = err;\n break;\n }\n try {\n const lockStat = await stat(this.lockPath);\n if (Date.now() - lockStat.mtimeMs > staleMs) {\n await rm(this.lockPath, { recursive: true, force: true });\n continue;\n }\n } catch {\n // Lock may have been released between stat/rm attempts.\n }\n await new Promise((resolve) => setTimeout(resolve, 25));\n }\n }\n\n if (unexpectedLockError) {\n throw unexpectedLockError;\n }\n throw new Error(`routing rules lock acquisition timed out after ${timeoutMs}ms`);\n }\n\n private async assertStatePathScoped(): Promise<void> {\n await mkdir(this.memoryRoot, { recursive: true });\n const canonicalRoot = await realpath(this.memoryRoot);\n const canonicalParent = await this.canonicalizePathWithoutCreating(path.dirname(this.statePath));\n const canonicalStatePath = path.join(canonicalParent, path.basename(this.statePath));\n if (!this.isPathInside(canonicalRoot, canonicalStatePath)) {\n throw new Error(`routing rules state path escaped memoryDir: ${canonicalStatePath}`);\n }\n await mkdir(path.dirname(this.statePath), { recursive: true });\n try {\n const stateStats = await lstat(this.statePath);\n if (stateStats.isSymbolicLink()) {\n const canonicalFile = await realpath(this.statePath);\n if (!this.isPathInside(canonicalRoot, canonicalFile)) {\n throw new Error(`routing rules state symlink escaped memoryDir: ${canonicalFile}`);\n }\n }\n } catch (err) {\n const code = (err as NodeJS.ErrnoException).code;\n if (code !== \"ENOENT\") {\n throw err;\n }\n }\n }\n\n private isPathInside(root: string, candidate: string): boolean {\n const normalizedRoot = path.resolve(root);\n const normalizedCandidate = path.resolve(candidate);\n if (normalizedCandidate === normalizedRoot) return true;\n if (normalizedRoot === path.parse(normalizedRoot).root) {\n return normalizedCandidate.startsWith(normalizedRoot);\n }\n return normalizedCandidate.startsWith(`${normalizedRoot}${path.sep}`);\n }\n\n private async canonicalizePathWithoutCreating(targetPath: string): Promise<string> {\n const absoluteTarget = path.resolve(targetPath);\n let probe = absoluteTarget;\n while (true) {\n try {\n const canonicalProbe = await realpath(probe);\n const remainder = path.relative(probe, absoluteTarget);\n return path.resolve(canonicalProbe, remainder);\n } catch (err) {\n const code = (err as NodeJS.ErrnoException).code;\n if (code !== \"ENOENT\") {\n throw err;\n }\n const parent = path.dirname(probe);\n if (parent === probe) {\n return absoluteTarget;\n }\n probe = parent;\n }\n }\n }\n}\n"],"mappings":";;;;;;;;AAUA,IAAM,uBACJ;AAGF,IAAM,0BACJ;AAMF,SAAS,uBAAuB,WAA4B;AAC1D,QAAM,QAAQ,UAAU;AAAA,IACtB;AAAA,EACF;AACA,MAAI,CAAC,MAAO,QAAO;AACnB,QAAM,CAAC,EAAE,MAAM,MAAM,MAAM,MAAM,QAAQ,IAAI,IAAI;AACjD,QAAM,IAAI,OAAO,IAAI;AACrB,QAAM,IAAI,OAAO,IAAI;AACrB,QAAM,IAAI,OAAO,IAAI;AACrB,QAAM,IAAI,OAAO,IAAI;AACrB,QAAM,MAAM,OAAO,MAAM;AACzB,QAAM,IAAI,OAAO,IAAI;AACrB,MAAI,IAAI,KAAK,IAAI,GAAI,QAAO;AAC5B,MAAI,IAAI,KAAK,IAAI,GAAI,QAAO;AAC5B,MAAI,IAAI,MAAM,MAAM,MAAM,IAAI,GAAI,QAAO;AAEzC,QAAM,cAAc,IAAI,KAAK,GAAG,GAAG,CAAC,EAAE,QAAQ;AAC9C,MAAI,IAAI,YAAa,QAAO;AAC5B,SAAO;AACT;AAMA,SAAS,eAAe,WAA4B;AAClD,QAAM,cAAc,UAAU,MAAM,wBAAwB;AAC5D,MAAI,CAAC,YAAa,QAAO;AACzB,QAAM,KAAK,OAAO,YAAY,CAAC,CAAC;AAChC,QAAM,KAAK,OAAO,YAAY,CAAC,CAAC;AAChC,MAAI,KAAK,MAAM,KAAK,GAAI,QAAO;AAE/B,MAAI,OAAO,MAAM,KAAK,EAAG,QAAO;AAChC,SAAO;AACT;AAOA,SAAS,0BAA0B,OAAuB;AACxD,QAAM,YAAY,MAAM,MAAM,WAAW;AACzC,MAAI,WAAW;AACb,UAAM,MAAM,UAAU,CAAC,IAAI,OAAO,MAAM,GAAG,CAAC;AAC5C,WAAO,MAAM,QAAQ,WAAW,IAAI,EAAE,GAAG;AAAA,EAC3C;AACA,SAAO,MAAM,QAAQ,MAAM,OAAO;AACpC;AAMO,SAAS,qBAAqB,OAA8B;AACjE,MAAI,OAAO,UAAU,YAAY,CAAC,qBAAqB,KAAK,KAAK,GAAG;AAClE,WAAO;AAAA,EACT;AACA,QAAM,KAAK,KAAK,MAAM,KAAK;AAC3B,MAAI,CAAC,OAAO,SAAS,EAAE,EAAG,QAAO;AACjC,MAAI,CAAC,uBAAuB,KAAK,EAAG,QAAO;AAC3C,QAAM,YAAY,IAAI,KAAK,EAAE,EAAE,YAAY;AAC3C,MAAI,cAAc,0BAA0B,KAAK,EAAG,QAAO;AAC3D,SAAO;AACT;AAOO,SAAS,wBAAwB,OAA8B;AACpE,MAAI,OAAO,UAAU,YAAY,CAAC,wBAAwB,KAAK,KAAK,GAAG;AACrE,WAAO;AAAA,EACT;AACA,QAAM,KAAK,KAAK,MAAM,KAAK;AAC3B,MAAI,CAAC,OAAO,SAAS,EAAE,EAAG,QAAO;AACjC,MAAI,CAAC,uBAAuB,KAAK,EAAG,QAAO;AAC3C,MAAI,CAAC,eAAe,KAAK,EAAG,QAAO;AAGnC,MAAI,MAAM,SAAS,GAAG,GAAG;AACvB,UAAM,YAAY,IAAI,KAAK,EAAE,EAAE,YAAY;AAC3C,QAAI,cAAc,0BAA0B,KAAK,EAAG,QAAO;AAAA,EAC7D;AACA,SAAO;AACT;;;AC5DA,IAAM,gBAAqC,oBAAI,IAAI,CAAC,YAAY,UAAU,SAAS,CAAC;AACpF,IAAM,cAAmC,oBAAI,IAAI,CAAC,QAAQ,WAAW,CAAC;AAC/D,IAAM,6BAA6B;AAEnC,SAAS,eAAe,OAAuC;AACpE,SAAO,OAAO,UAAU,YAAY,cAAc,IAAI,KAAK;AAC7D;AAEO,SAAS,aAAa,OAAqC;AAChE,SAAO,OAAO,UAAU,YAAY,YAAY,IAAI,KAAK;AAC3D;AAEO,SAAS,0BAA0B,OAAwB;AAChE,MAAI,OAAO,UAAU,SAAU,QAAO;AACtC,QAAM,UAAU,MAAM,KAAK;AAC3B,SAAO,QAAQ,SAAS,IAAI,UAAU;AACxC;AAUO,SAAS,kBAAkB,OAA8B;AAC9D,SAAO,qBAAqB,KAAK;AACnC;AAEO,SAAS,mBAAmB,MAAkB,OAAyC;AAC5F,QAAM,SAAkC,CAAC;AACzC,MAAI,CAAC,QAAQ,OAAO,SAAS,UAAU;AACrC,WAAO,KAAK;AAAA,MACV,MAAM;AAAA,MACN,SAAS;AAAA,MACT;AAAA,IACF,CAAC;AACD,WAAO;AAAA,EACT;AAEA,MAAI,CAAC,aAAa,KAAK,IAAI,GAAG;AAC5B,WAAO,KAAK;AAAA,MACV,MAAM;AAAA,MACN,SAAS,wDAAwD,OAAO,KAAK,IAAI,CAAC;AAAA,MAClF;AAAA,IACF,CAAC;AAAA,EACH;AAEA,MAAI,CAAC,eAAe,KAAK,MAAM,GAAG;AAChC,WAAO,KAAK;AAAA,MACV,MAAM;AAAA,MACN,SAAS,uEAAuE,OAAO,KAAK,MAAM,CAAC;AAAA,MACnG;AAAA,IACF,CAAC;AAAA,EACH;AAEA,MAAI,CAAC,KAAK,cAAc,OAAO,KAAK,eAAe,YAAY,KAAK,WAAW,KAAK,EAAE,WAAW,GAAG;AAClG,WAAO,KAAK;AAAA,MACV,MAAM;AAAA,MACN,SAAS;AAAA,MACT;AAAA,IACF,CAAC;AAAA,EACH;AAEA,MAAI,CAAC,KAAK,WAAW,OAAO,KAAK,YAAY,YAAY,KAAK,QAAQ,KAAK,EAAE,WAAW,GAAG;AACzF,WAAO,KAAK;AAAA,MACV,MAAM;AAAA,MACN,SAAS;AAAA,MACT;AAAA,IACF,CAAC;AAAA,EACH;AAEA,MAAI,CAAC,KAAK,aAAa,OAAO,KAAK,cAAc,YAAY,kBAAkB,KAAK,SAAS,MAAM,MAAM;AACvG,WAAO,KAAK;AAAA,MACV,MAAM;AAAA,MACN,SAAS,6DAA6D,OAAO,KAAK,SAAS,CAAC;AAAA,MAC5F;AAAA,IACF,CAAC;AAAA,EACH;AAEA,SAAO;AACT;;;ACjIA,SAAS,OAAO,OAAO,UAAU,UAAU,QAAQ,IAAI,MAAM,iBAAiB;AAC9E,OAAO,UAAU;AACjB,SAAS,kBAAkB;AAU3B,SAAS,eAAkC;AACzC,SAAO;AAAA,IACL,SAAS;AAAA,IACT,YAAW,oBAAI,KAAK,CAAC,GAAE,YAAY;AAAA,IACnC,OAAO,CAAC;AAAA,EACV;AACF;AAEA,SAAS,aAAa,MAAkF;AACtG,QAAM,OAAO,KAAK,UAAU;AAAA,IAC1B,aAAa,KAAK;AAAA,IAClB,SAAS,KAAK,QAAQ,KAAK;AAAA,IAC3B,UAAU,KAAK;AAAA,IACf,QAAQ,KAAK;AAAA,EACf,CAAC;AACD,SAAO,SAAS,WAAW,QAAQ,EAAE,OAAO,IAAI,EAAE,OAAO,KAAK,EAAE,MAAM,GAAG,EAAE,CAAC;AAC9E;AAEA,SAAS,iBAAiB,WAAmB,WAA2B;AACtE,QAAM,OAAO,KAAK,QAAQ,SAAS;AACnC,QAAM,cAAc,KAAK,KAAK,MAAM,SAAS,oBAAoB;AACjE,MAAI,KAAK,WAAW,SAAS,GAAG;AAC9B,UAAM,WAAW,KAAK,QAAQ,SAAS;AACvC,WAAO,SAAS,WAAW,OAAO,KAAK,GAAG,IAAI,WAAW;AAAA,EAC3D;AACA,QAAM,WAAW,KAAK,QAAQ,MAAM,SAAS;AAC7C,SAAO,SAAS,WAAW,OAAO,KAAK,GAAG,IAAI,WAAW;AAC3D;AAEA,SAAS,cAAc,MAAiB,SAAkD;AACxF,MAAI,CAAC,QAAQ,OAAO,SAAS,SAAU,QAAO;AAC9C,MAAI,KAAK,YAAY,MAAO,QAAO;AACnC,MAAI,KAAK,gBAAgB,aAAa,KAAK,gBAAgB,QAAS,QAAO;AAC3E,MAAI,OAAO,KAAK,YAAY,YAAY,KAAK,QAAQ,KAAK,EAAE,WAAW,EAAG,QAAO;AACjF,MAAI,OAAO,KAAK,aAAa,YAAY,CAAC,OAAO,SAAS,KAAK,QAAQ,EAAG,QAAO;AAEjF,QAAM,mBAAmB,oBAAoB,KAAK,QAAQ,OAAO;AACjE,MAAI,CAAC,iBAAiB,MAAM,CAAC,iBAAiB,OAAQ,QAAO;AAE7D,QAAM,qBAAqB,KAAK,MAAM,KAAK,QAAQ;AACnD,QAAM,mBAAmB,iBAAiB;AAC1C,QAAM,KAAK,OAAO,KAAK,OAAO,YAAY,KAAK,GAAG,KAAK,EAAE,SAAS,IAC9D,KAAK,GAAG,KAAK,IACb,aAAa;AAAA,IACb,aAAa,KAAK;AAAA,IAClB,SAAS,KAAK,QAAQ,KAAK;AAAA,IAC3B,UAAU;AAAA,IACV,QAAQ;AAAA,EACV,CAAC;AACH,SAAO;AAAA,IACL;AAAA,IACA,aAAa,KAAK;AAAA,IAClB,SAAS,KAAK,QAAQ,KAAK;AAAA,IAC3B,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,SAAS;AAAA,EACX;AACF;AAEO,IAAM,oBAAN,MAAwB;AAAA,EACZ;AAAA,EACA;AAAA,EACA;AAAA,EACT,aAA4B,QAAQ,QAAQ;AAAA,EAEpD,YAAY,WAAmB,YAAY,4BAA4B;AACrE,SAAK,aAAa,KAAK,QAAQ,SAAS;AACxC,SAAK,YAAY,iBAAiB,WAAW,SAAS;AACtD,SAAK,WAAW,GAAG,KAAK,SAAS;AAAA,EACnC;AAAA,EAEA,MAAM,KAAK,SAAsD;AAC/D,QAAI;AACF,YAAM,YAAY,MAAM,KAAK,mBAAmB;AAChD,aAAO,UACJ,IAAI,CAAC,SAAS,cAAc,MAAM,OAAO,CAAC,EAC1C,OAAO,CAAC,SAA4B,SAAS,IAAI;AAAA,IACtD,QAAQ;AACN,aAAO,CAAC;AAAA,IACV;AAAA,EACF;AAAA,EAEA,MAAM,MAAM,OAAoB,SAAsD;AACpF,WAAO,KAAK,cAAc,YAAY,KAAK,gBAAgB,OAAO,OAAO,CAAC;AAAA,EAC5E;AAAA,EAEA,MAAM,OAAO,MAAiB,SAAsD;AAClF,WAAO,KAAK,cAAc,YAAY;AACpC,YAAM,WAAW,MAAM,KAAK,mBAAmB;AAC/C,YAAM,aAAa,cAAc,MAAM,OAAO;AAC9C,UAAI,CAAC,WAAY,QAAO;AAExB,YAAM,OAAO,SAAS,OAAO,CAAC,UAAU,MAAM,OAAO,WAAW,EAAE;AAClE,WAAK,KAAK,UAAU;AACpB,aAAO,KAAK,gBAAgB,IAAI;AAAA,IAClC,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,gBAAgB,SAAuC;AAC3D,WAAO,KAAK,cAAc,YAAY;AACpC,YAAM,UAAU,QAAQ,KAAK;AAC7B,YAAM,WAAW,MAAM,KAAK,mBAAmB;AAC/C,YAAM,OAAO,SAAS,OAAO,CAAC,UAAU,MAAM,YAAY,OAAO;AACjE,UAAI,KAAK,WAAW,SAAS,OAAQ,QAAO;AAC5C,aAAO,KAAK,gBAAgB,IAAI;AAAA,IAClC,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,QAAuB;AAC3B,UAAM,KAAK,cAAc,YAAY;AACnC,YAAM,UAAU,aAAa;AAC7B,YAAM,KAAK,sBAAsB;AACjC,YAAM,UAAU,KAAK,WAAW,KAAK,UAAU,SAAS,MAAM,CAAC,GAAG,OAAO;AAAA,IAC3E,CAAC;AAAA,EACH;AAAA,EAEQ,WAAW,OAAiC;AAClD,UAAM,OAAO,oBAAI,IAAuB;AACxC,eAAW,QAAQ,OAAO;AACxB,WAAK,IAAI,KAAK,IAAI,IAAI;AAAA,IACxB;AACA,WAAO,MAAM,KAAK,KAAK,OAAO,CAAC;AAAA,EACjC;AAAA,EAEA,MAAc,qBAA2C;AACvD,QAAI;AACF,YAAM,KAAK,sBAAsB;AACjC,YAAM,MAAM,MAAM,SAAS,KAAK,WAAW,OAAO;AAClD,YAAM,SAAS,KAAK,MAAM,GAAG;AAC7B,UAAI,CAAC,UAAU,OAAO,WAAW,YAAY,CAAC,MAAM,QAAQ,OAAO,KAAK,EAAG,QAAO,CAAC;AACnF,YAAM,aAAa,OAAO,MACvB,IAAI,CAAC,SAAS,cAAc,IAAI,CAAC,EACjC,OAAO,CAAC,SAA4B,SAAS,IAAI;AACpD,aAAO,KAAK,WAAW,UAAU;AAAA,IACnC,QAAQ;AACN,aAAO,CAAC;AAAA,IACV;AAAA,EACF;AAAA,EAEA,MAAc,gBAAgB,OAAoB,SAAsD;AACtG,UAAM,aAAa,KAAK;AAAA,MACtB,MACG,IAAI,CAAC,SAAS,cAAc,MAAM,OAAO,CAAC,EAC1C,OAAO,CAAC,SAA4B,SAAS,IAAI;AAAA,IACtD;AAEA,UAAM,UAA6B;AAAA,MACjC,SAAS;AAAA,MACT,YAAW,oBAAI,KAAK,GAAE,YAAY;AAAA,MAClC,OAAO;AAAA,IACT;AAEA,UAAM,UAAU,GAAG,KAAK,SAAS,QAAQ,QAAQ,GAAG,IAAI,KAAK,IAAI,CAAC;AAClE,QAAI;AACF,YAAM,KAAK,sBAAsB;AACjC,YAAM,UAAU,SAAS,KAAK,UAAU,SAAS,MAAM,CAAC,GAAG,OAAO;AAClE,YAAM,OAAO,SAAS,KAAK,SAAS;AAAA,IACtC,SAAS,KAAK;AACZ,UAAI,MAAM,+BAA+B,GAAG,EAAE;AAC9C,YAAM;AAAA,IACR,UAAE;AACA,YAAM,GAAG,SAAS,EAAE,OAAO,KAAK,CAAC,EAAE,MAAM,MAAM;AAAA,MAAC,CAAC;AAAA,IACnD;AAEA,WAAO;AAAA,EACT;AAAA,EAEA,MAAc,cAAiB,IAAkC;AAC/D,UAAM,WAAW,KAAK;AACtB,QAAI,UAAsB,MAAM;AAAA,IAAC;AACjC,SAAK,aAAa,IAAI,QAAc,CAAC,YAAY;AAC/C,gBAAU;AAAA,IACZ,CAAC;AACD,UAAM;AACN,QAAI,SAAuC;AAC3C,QAAI;AACF,eAAS,MAAM,KAAK,gBAAgB;AACpC,aAAO,MAAM,GAAG;AAAA,IAClB,UAAE;AACA,UAAI,OAAQ,OAAM,OAAO;AACzB,cAAQ;AAAA,IACV;AAAA,EACF;AAAA,EAEA,MAAc,kBAAgD;AAC5D,UAAM,QAAQ,KAAK,IAAI;AACvB,UAAM,UAAU;AAChB,UAAM,YAAY;AAClB,QAAI,sBAA+B;AACnC,UAAM,KAAK,sBAAsB;AACjC,UAAM,MAAM,KAAK,QAAQ,KAAK,QAAQ,GAAG,EAAE,WAAW,KAAK,CAAC;AAE5D,WAAO,KAAK,IAAI,IAAI,QAAQ,WAAW;AACrC,UAAI;AACF,cAAM,MAAM,KAAK,QAAQ;AACzB,eAAO,YAAY;AACjB,cAAI;AACF,kBAAM,GAAG,KAAK,UAAU,EAAE,WAAW,MAAM,OAAO,KAAK,CAAC;AAAA,UAC1D,QAAQ;AAAA,UAER;AAAA,QACF;AAAA,MACF,SAAS,KAAK;AACZ,cAAM,OAAQ,IAA8B;AAC5C,YAAI,SAAS,UAAU;AACrB,gCAAsB;AACtB;AAAA,QACF;AACA,YAAI;AACF,gBAAM,WAAW,MAAM,KAAK,KAAK,QAAQ;AACzC,cAAI,KAAK,IAAI,IAAI,SAAS,UAAU,SAAS;AAC3C,kBAAM,GAAG,KAAK,UAAU,EAAE,WAAW,MAAM,OAAO,KAAK,CAAC;AACxD;AAAA,UACF;AAAA,QACF,QAAQ;AAAA,QAER;AACA,cAAM,IAAI,QAAQ,CAAC,YAAY,WAAW,SAAS,EAAE,CAAC;AAAA,MACxD;AAAA,IACF;AAEA,QAAI,qBAAqB;AACvB,YAAM;AAAA,IACR;AACA,UAAM,IAAI,MAAM,kDAAkD,SAAS,IAAI;AAAA,EACjF;AAAA,EAEA,MAAc,wBAAuC;AACnD,UAAM,MAAM,KAAK,YAAY,EAAE,WAAW,KAAK,CAAC;AAChD,UAAM,gBAAgB,MAAM,SAAS,KAAK,UAAU;AACpD,UAAM,kBAAkB,MAAM,KAAK,gCAAgC,KAAK,QAAQ,KAAK,SAAS,CAAC;AAC/F,UAAM,qBAAqB,KAAK,KAAK,iBAAiB,KAAK,SAAS,KAAK,SAAS,CAAC;AACnF,QAAI,CAAC,KAAK,aAAa,eAAe,kBAAkB,GAAG;AACzD,YAAM,IAAI,MAAM,+CAA+C,kBAAkB,EAAE;AAAA,IACrF;AACA,UAAM,MAAM,KAAK,QAAQ,KAAK,SAAS,GAAG,EAAE,WAAW,KAAK,CAAC;AAC7D,QAAI;AACF,YAAM,aAAa,MAAM,MAAM,KAAK,SAAS;AAC7C,UAAI,WAAW,eAAe,GAAG;AAC/B,cAAM,gBAAgB,MAAM,SAAS,KAAK,SAAS;AACnD,YAAI,CAAC,KAAK,aAAa,eAAe,aAAa,GAAG;AACpD,gBAAM,IAAI,MAAM,kDAAkD,aAAa,EAAE;AAAA,QACnF;AAAA,MACF;AAAA,IACF,SAAS,KAAK;AACZ,YAAM,OAAQ,IAA8B;AAC5C,UAAI,SAAS,UAAU;AACrB,cAAM;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAAA,EAEQ,aAAa,MAAc,WAA4B;AAC7D,UAAM,iBAAiB,KAAK,QAAQ,IAAI;AACxC,UAAM,sBAAsB,KAAK,QAAQ,SAAS;AAClD,QAAI,wBAAwB,eAAgB,QAAO;AACnD,QAAI,mBAAmB,KAAK,MAAM,cAAc,EAAE,MAAM;AACtD,aAAO,oBAAoB,WAAW,cAAc;AAAA,IACtD;AACA,WAAO,oBAAoB,WAAW,GAAG,cAAc,GAAG,KAAK,GAAG,EAAE;AAAA,EACtE;AAAA,EAEA,MAAc,gCAAgC,YAAqC;AACjF,UAAM,iBAAiB,KAAK,QAAQ,UAAU;AAC9C,QAAI,QAAQ;AACZ,WAAO,MAAM;AACX,UAAI;AACF,cAAM,iBAAiB,MAAM,SAAS,KAAK;AAC3C,cAAM,YAAY,KAAK,SAAS,OAAO,cAAc;AACrD,eAAO,KAAK,QAAQ,gBAAgB,SAAS;AAAA,MAC/C,SAAS,KAAK;AACZ,cAAM,OAAQ,IAA8B;AAC5C,YAAI,SAAS,UAAU;AACrB,gBAAM;AAAA,QACR;AACA,cAAM,SAAS,KAAK,QAAQ,KAAK;AACjC,YAAI,WAAW,OAAO;AACpB,iBAAO;AAAA,QACT;AACA,gBAAQ;AAAA,MACV;AAAA,IACF;AAAA,EACF;AACF;","names":[]}
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-IXEJRKCZ.js";
4
4
  import {
5
5
  StorageManager
6
- } from "./chunk-Y4A6M3B6.js";
6
+ } from "./chunk-DLYTYJ43.js";
7
7
  import {
8
8
  parseContinuityImprovementLoops
9
9
  } from "./chunk-QSVPYQPG.js";
@@ -1832,4 +1832,4 @@ export {
1832
1832
  defaultTierMigrationCycleBudget,
1833
1833
  CompoundingEngine
1834
1834
  };
1835
- //# sourceMappingURL=chunk-XQ4EJLUD.js.map
1835
+ //# sourceMappingURL=chunk-TMSHGSIG.js.map
@@ -26,7 +26,7 @@ import {
26
26
  } from "./chunk-VEWZZM3H.js";
27
27
  import {
28
28
  FallbackLlmClient
29
- } from "./chunk-CRU27Q4J.js";
29
+ } from "./chunk-3P6TPZM4.js";
30
30
  import {
31
31
  buildChatCompletionTokenLimit,
32
32
  shouldAssumeOpenAiChatCompletions
@@ -2275,4 +2275,4 @@ ${memoryList}` }
2275
2275
  export {
2276
2276
  ExtractionEngine
2277
2277
  };
2278
- //# sourceMappingURL=chunk-X6VBWOVZ.js.map
2278
+ //# sourceMappingURL=chunk-UE2OQNQQ.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  promoteSemanticRuleFromMemory
3
- } from "./chunk-MUELDH4F.js";
3
+ } from "./chunk-YELFQNQH.js";
4
4
  import {
5
5
  resolveAgentAccessAuthToken
6
6
  } from "./chunk-MXC3AP5I.js";
@@ -8,19 +8,10 @@ import {
8
8
  buildResumeBundleFromState,
9
9
  getResumeBundleStatus,
10
10
  recordResumeBundle
11
- } from "./chunk-47WOM4YW.js";
11
+ } from "./chunk-RXGR3YLU.js";
12
12
  import {
13
13
  parseXrayCliOptions
14
- } from "./chunk-SMA4IMHV.js";
15
- import {
16
- collectPatternMemories,
17
- explainPatternMemory,
18
- parsePatternsExplainOptions,
19
- parsePatternsListOptions,
20
- parseStrictCliDate,
21
- renderPatternExplain,
22
- renderPatternsList
23
- } from "./chunk-AJA46VX5.js";
14
+ } from "./chunk-KUIEFH2S.js";
24
15
  import {
25
16
  listNamespaces,
26
17
  runBenchmarkRecall,
@@ -31,7 +22,16 @@ import {
31
22
  runOperatorRepair,
32
23
  runOperatorSetup,
33
24
  verifyNamespaces
34
- } from "./chunk-TIFRGAKO.js";
25
+ } from "./chunk-YKGRACQP.js";
26
+ import {
27
+ collectPatternMemories,
28
+ explainPatternMemory,
29
+ parsePatternsExplainOptions,
30
+ parsePatternsListOptions,
31
+ parseStrictCliDate,
32
+ renderPatternExplain,
33
+ renderPatternsList
34
+ } from "./chunk-AJA46VX5.js";
35
35
  import {
36
36
  compareVersions
37
37
  } from "./chunk-HL4DB7TO.js";
@@ -46,7 +46,7 @@ import {
46
46
  parseIsoOffsetTimestamp,
47
47
  parseIsoTimestamp,
48
48
  validateReplayTurn
49
- } from "./chunk-VTJVUHRK.js";
49
+ } from "./chunk-SRBJUAMP.js";
50
50
  import {
51
51
  getUtilityLearningStatus,
52
52
  learnUtilityPromotionWeights
@@ -57,25 +57,18 @@ import {
57
57
  } from "./chunk-3QKK7QOS.js";
58
58
  import {
59
59
  searchVerifiedEpisodes
60
- } from "./chunk-EGEPUGN4.js";
60
+ } from "./chunk-LKJA5MR2.js";
61
61
  import {
62
62
  ThreadingManager
63
63
  } from "./chunk-JRNQ3RNA.js";
64
64
  import {
65
65
  searchVerifiedSemanticRules
66
- } from "./chunk-W7WWT4FJ.js";
66
+ } from "./chunk-ZOMA7J3J.js";
67
67
  import {
68
68
  getWorkProductLedgerStatus,
69
69
  recordWorkProductLedgerEntry,
70
70
  searchWorkProductLedgerEntries
71
71
  } from "./chunk-CULXMQJH.js";
72
- import {
73
- readRuntimePolicySnapshot,
74
- sanitizeRuntimePolicyValues
75
- } from "./chunk-EABGC2TL.js";
76
- import {
77
- getObjectiveStateStoreStatus
78
- } from "./chunk-LOBRX7VD.js";
79
72
  import {
80
73
  analyzeSessionIntegrity,
81
74
  applySessionRepair,
@@ -85,6 +78,13 @@ import {
85
78
  LEGACY_PLUGIN_ID,
86
79
  PLUGIN_ID
87
80
  } from "./chunk-U66YHYC7.js";
81
+ import {
82
+ readRuntimePolicySnapshot,
83
+ sanitizeRuntimePolicyValues
84
+ } from "./chunk-EABGC2TL.js";
85
+ import {
86
+ getObjectiveStateStoreStatus
87
+ } from "./chunk-LOBRX7VD.js";
88
88
  import {
89
89
  GOOGLE_DRIVE_CONNECTOR_ID,
90
90
  NOTION_CONNECTOR_ID,
@@ -116,7 +116,7 @@ import {
116
116
  } from "./chunk-7SEAZFFB.js";
117
117
  import {
118
118
  parseConfig
119
- } from "./chunk-JWSENLQI.js";
119
+ } from "./chunk-FSWYMUWI.js";
120
120
  import {
121
121
  parseConnectorsListOptions,
122
122
  parseConnectorsRunName,
@@ -142,30 +142,30 @@ import {
142
142
  } from "./chunk-NGAVDO7E.js";
143
143
  import {
144
144
  EngramAccessHttpServer
145
- } from "./chunk-CUI2STX6.js";
145
+ } from "./chunk-MYMOXFMR.js";
146
146
  import {
147
147
  EngramMcpServer
148
- } from "./chunk-XRCYKJ3V.js";
148
+ } from "./chunk-M3QQ5DRA.js";
149
149
  import {
150
150
  EngramAccessService,
151
151
  WorkStorage
152
- } from "./chunk-AEMBDV7M.js";
152
+ } from "./chunk-OZAFME7S.js";
153
153
  import {
154
154
  parseRecallExplainFormat,
155
155
  renderRecallExplain,
156
156
  renderXray
157
- } from "./chunk-LW2NMHDW.js";
158
- import {
159
- getTrustZoneStoreStatus,
160
- promoteTrustZoneRecord,
161
- seedTrustZoneDemoDataset
162
- } from "./chunk-EQINRHYR.js";
157
+ } from "./chunk-5NS6NN5A.js";
163
158
  import {
164
159
  listMemoryGovernanceRuns,
165
160
  readMemoryGovernanceRunArtifact,
166
161
  restoreMemoryGovernanceRun,
167
162
  runMemoryGovernance
168
- } from "./chunk-F5VQOQ2E.js";
163
+ } from "./chunk-AIT53NLG.js";
164
+ import {
165
+ getTrustZoneStoreStatus,
166
+ promoteTrustZoneRecord,
167
+ seedTrustZoneDemoDataset
168
+ } from "./chunk-EQINRHYR.js";
169
169
  import {
170
170
  expandTildePath
171
171
  } from "./chunk-IXEJRKCZ.js";
@@ -184,11 +184,11 @@ import {
184
184
  } from "./chunk-G2WADRQ3.js";
185
185
  import {
186
186
  StorageManager
187
- } from "./chunk-Y4A6M3B6.js";
187
+ } from "./chunk-DLYTYJ43.js";
188
188
  import {
189
189
  RECALL_DISCLOSURE_LEVELS,
190
190
  isRecallDisclosure
191
- } from "./chunk-43EKP2UK.js";
191
+ } from "./chunk-COAGZQT7.js";
192
192
  import {
193
193
  MEMORY_LIFECYCLE_EVENT_SORT_ORDER,
194
194
  buildLifecycleEventsForMemory,
@@ -218,7 +218,7 @@ import {
218
218
  import {
219
219
  EXPORT_FORMAT,
220
220
  EXPORT_SCHEMA_VERSION
221
- } from "./chunk-IYY4MCPG.js";
221
+ } from "./chunk-P73JTV34.js";
222
222
  import {
223
223
  fileExists,
224
224
  fromPosixRelPath,
@@ -234,7 +234,7 @@ import {
234
234
  } from "./chunk-OA3L7BFR.js";
235
235
  import {
236
236
  encryptCapsuleFile
237
- } from "./chunk-KNKUID7G.js";
237
+ } from "./chunk-767ODGE6.js";
238
238
 
239
239
  // src/cli.ts
240
240
  import path18 from "path";
@@ -4106,7 +4106,7 @@ async function runSemanticRulePromoteCliCommand(options) {
4106
4106
  });
4107
4107
  }
4108
4108
  async function runCompoundingPromoteCliCommand(options) {
4109
- const { CompoundingEngine } = await import("./engine-O6YWKQM3.js");
4109
+ const { CompoundingEngine } = await import("./engine-5OTS6GY3.js");
4110
4110
  const config = parseConfig({
4111
4111
  memoryDir: options.memoryDir,
4112
4112
  qmdEnabled: false,
@@ -6079,7 +6079,7 @@ function registerCli(api, orchestrator, registerOptions = {}) {
6079
6079
  const memoryDir = await resolveMemoryDirForNamespace(orchestrator, namespace, {
6080
6080
  rejectUnsupportedOverride: true
6081
6081
  });
6082
- const { exportCapsule } = await import("./capsule-export-NZQPOTQ4.js");
6082
+ const { exportCapsule } = await import("./capsule-export-LLEVB2RG.js");
6083
6083
  const result = await exportCapsule({
6084
6084
  name,
6085
6085
  root: memoryDir,
@@ -6125,7 +6125,7 @@ function registerCli(api, orchestrator, registerOptions = {}) {
6125
6125
  const memoryDir = await resolveMemoryDirForNamespace(orchestrator, namespace, {
6126
6126
  rejectUnsupportedOverride: true
6127
6127
  });
6128
- const { importCapsule } = await import("./capsule-import-SDCUXLEV.js");
6128
+ const { importCapsule } = await import("./capsule-import-UW45R2MZ.js");
6129
6129
  const result = await importCapsule({
6130
6130
  archivePath: expandTildePath(archivePath),
6131
6131
  root: memoryDir,
@@ -6176,7 +6176,7 @@ function registerCli(api, orchestrator, registerOptions = {}) {
6176
6176
  }
6177
6177
  }
6178
6178
  if (sourceArchive.endsWith(".enc")) {
6179
- const { isEncryptedCapsuleFile } = await import("./capsule-crypto-5CYAGVC5.js");
6179
+ const { isEncryptedCapsuleFile } = await import("./capsule-crypto-SJS5VVAP.js");
6180
6180
  const encDetected = await isEncryptedCapsuleFile(sourceArchive).catch(() => true);
6181
6181
  if (encDetected) {
6182
6182
  throw new Error(
@@ -6339,7 +6339,7 @@ function registerCli(api, orchestrator, registerOptions = {}) {
6339
6339
  const { parseExportBundle } = await import("./types-V3FJ26TF.js");
6340
6340
  let decryptedBuf;
6341
6341
  try {
6342
- const { decryptCapsuleFileInMemory } = await import("./capsule-crypto-5CYAGVC5.js");
6342
+ const { decryptCapsuleFileInMemory } = await import("./capsule-crypto-SJS5VVAP.js");
6343
6343
  decryptedBuf = await decryptCapsuleFileInMemory(archivePath, memoryDir);
6344
6344
  } catch (decErr) {
6345
6345
  const msg = decErr instanceof Error ? decErr.message : String(decErr);
@@ -9680,4 +9680,4 @@ export {
9680
9680
  resolveMemoryDirForNamespace,
9681
9681
  registerCli
9682
9682
  };
9683
- //# sourceMappingURL=chunk-HIRKCQGF.js.map
9683
+ //# sourceMappingURL=chunk-XOG2FHYW.js.map