@remnic/core 9.3.712 → 9.3.714

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 (328) hide show
  1. package/dist/access-boundary.d.ts +6 -6
  2. package/dist/access-boundary.js +17 -16
  3. package/dist/access-cli.js +40 -39
  4. package/dist/access-cli.js.map +1 -1
  5. package/dist/access-http.d.ts +5 -5
  6. package/dist/access-http.js +24 -23
  7. package/dist/access-mcp.d.ts +18 -5
  8. package/dist/access-mcp.js +21 -20
  9. package/dist/access-operations-batch.js +18 -17
  10. package/dist/access-operations.d.ts +6 -5
  11. package/dist/access-operations.js +20 -19
  12. package/dist/access-schema.d.ts +10 -0
  13. package/dist/access-schema.js +1 -1
  14. package/dist/{access-service-Dx2rSJjH.d.ts → access-service-lddjZoRh.d.ts} +20 -5
  15. package/dist/access-service.d.ts +5 -5
  16. package/dist/access-service.js +16 -15
  17. package/dist/access-surface-catalog.d.ts +5 -5
  18. package/dist/access-surface-catalog.js +6 -1
  19. package/dist/access-surface-catalog.js.map +1 -1
  20. package/dist/action-confidence.d.ts +1 -1
  21. package/dist/active-memory-bridge.d.ts +3 -1
  22. package/dist/active-memory-bridge.js +2 -1
  23. package/dist/active-recall.d.ts +1 -1
  24. package/dist/active-recall.js +4 -3
  25. package/dist/active-recall.js.map +1 -1
  26. package/dist/adapters/index.js +4 -4
  27. package/dist/adapters/registry.js +2 -2
  28. package/dist/behavior-learner.d.ts +1 -1
  29. package/dist/behavior-signals.d.ts +1 -1
  30. package/dist/bootstrap.d.ts +4 -4
  31. package/dist/briefing.d.ts +1 -1
  32. package/dist/briefing.js +8 -7
  33. package/dist/buffer-surprise-report.d.ts +1 -1
  34. package/dist/buffer.d.ts +1 -1
  35. package/dist/calibration.d.ts +1 -1
  36. package/dist/capabilities.d.ts +1 -1
  37. package/dist/{catalog-CadPvH29.d.ts → catalog-CbR0CsUw.d.ts} +1 -1
  38. package/dist/causal-behavior.d.ts +1 -1
  39. package/dist/causal-consolidation.d.ts +1 -1
  40. package/dist/causal-consolidation.js +9 -8
  41. package/dist/causal-consolidation.js.map +1 -1
  42. package/dist/{chunk-OMSTU233.js → chunk-2KAYTPPT.js} +4 -4
  43. package/dist/{chunk-VYZNWH4J.js → chunk-2SXMCQEQ.js} +3 -3
  44. package/dist/{chunk-NXL5CVE7.js → chunk-2Y6LMOQQ.js} +2 -2
  45. package/dist/{chunk-AMXOCZHE.js → chunk-3VUPWDSE.js} +15 -3
  46. package/dist/{chunk-AMXOCZHE.js.map → chunk-3VUPWDSE.js.map} +1 -1
  47. package/dist/{chunk-FVQJYWH7.js → chunk-5GKPFL3S.js} +1 -1
  48. package/dist/{chunk-FVQJYWH7.js.map → chunk-5GKPFL3S.js.map} +1 -1
  49. package/dist/{chunk-LQ4J7ELC.js → chunk-67HG7KFE.js} +2 -2
  50. package/dist/{chunk-ZBG4K36I.js → chunk-6FUJ2VYY.js} +3 -3
  51. package/dist/{chunk-GMRNKPWO.js → chunk-6QUPUTT7.js} +2 -2
  52. package/dist/{chunk-Z56IHRVV.js → chunk-6UU43ZGD.js} +2 -2
  53. package/dist/{chunk-APJQ6UEA.js → chunk-AGNBY3VG.js} +4 -4
  54. package/dist/{chunk-OWOKOFXK.js → chunk-AJOIM6UR.js} +2 -2
  55. package/dist/{chunk-JBPKEARU.js → chunk-AU7Q3LSC.js} +4 -4
  56. package/dist/{chunk-YVWZW37D.js → chunk-BNOAB5HH.js} +62 -12
  57. package/dist/{chunk-YVWZW37D.js.map → chunk-BNOAB5HH.js.map} +1 -1
  58. package/dist/{chunk-A2R5NV6O.js → chunk-CTAHKIG6.js} +205 -29
  59. package/dist/chunk-CTAHKIG6.js.map +1 -0
  60. package/dist/{chunk-K22IJO4R.js → chunk-CTOQEZSN.js} +2 -2
  61. package/dist/{chunk-SINGJCUR.js → chunk-CX77GNMB.js} +14 -3
  62. package/dist/chunk-CX77GNMB.js.map +1 -0
  63. package/dist/{chunk-HSDJCT3V.js → chunk-DXGS5YOQ.js} +3 -3
  64. package/dist/{chunk-HV57RHMD.js → chunk-EH5ED3C6.js} +2 -2
  65. package/dist/{chunk-NUWZFSKC.js → chunk-FVZ2ISIX.js} +9 -1
  66. package/dist/chunk-FVZ2ISIX.js.map +1 -0
  67. package/dist/{chunk-GKPIY7EQ.js → chunk-FXZKXW7C.js} +117 -46
  68. package/dist/chunk-FXZKXW7C.js.map +1 -0
  69. package/dist/{chunk-7NDYFAJS.js → chunk-GM3BMWKR.js} +2 -2
  70. package/dist/{chunk-ZVDRL6SK.js → chunk-HHLWSWWF.js} +2 -2
  71. package/dist/chunk-HHLWSWWF.js.map +1 -0
  72. package/dist/{chunk-5QUS24F7.js → chunk-I56LKMF7.js} +2 -2
  73. package/dist/{chunk-Z3B2YW56.js → chunk-IHMT6XTY.js} +9 -5
  74. package/dist/chunk-IHMT6XTY.js.map +1 -0
  75. package/dist/chunk-JAKIDQB2.js +173 -0
  76. package/dist/chunk-JAKIDQB2.js.map +1 -0
  77. package/dist/{chunk-35YJ6KCV.js → chunk-JEIROMLX.js} +2 -2
  78. package/dist/{chunk-SKQCFAYU.js → chunk-JVEMUX6L.js} +2 -2
  79. package/dist/{chunk-CXMXAC5R.js → chunk-K44MIN6D.js} +3 -3
  80. package/dist/{chunk-5KQCOIPW.js → chunk-MECU6WSH.js} +188 -31
  81. package/dist/chunk-MECU6WSH.js.map +1 -0
  82. package/dist/{chunk-BQCFXAMN.js → chunk-MPHDVHIB.js} +2 -2
  83. package/dist/{chunk-BOGENF7P.js → chunk-MSVSP5VO.js} +1 -1
  84. package/dist/chunk-MSVSP5VO.js.map +1 -0
  85. package/dist/{chunk-QXNFQKWU.js → chunk-MTHNJCOJ.js} +2 -2
  86. package/dist/{chunk-3TCRU4JA.js → chunk-O62P2LFL.js} +2 -2
  87. package/dist/{chunk-JSDZMOT7.js → chunk-OC56UWV5.js} +11 -11
  88. package/dist/{chunk-7IBEWQLG.js → chunk-QOIONSOI.js} +2 -2
  89. package/dist/{chunk-4P5UAL3C.js → chunk-RBHANGVX.js} +6 -6
  90. package/dist/{chunk-SK2CR6MW.js → chunk-RVLB4E6N.js} +2 -2
  91. package/dist/{chunk-I3BT2IDW.js → chunk-SYDHFFAW.js} +1110 -28
  92. package/dist/chunk-SYDHFFAW.js.map +1 -0
  93. package/dist/{chunk-VILEUJXC.js → chunk-UC4YOAC2.js} +74 -2
  94. package/dist/{chunk-VILEUJXC.js.map → chunk-UC4YOAC2.js.map} +1 -1
  95. package/dist/{chunk-CNVIWMQI.js → chunk-UY4JMEAK.js} +2 -2
  96. package/dist/{chunk-S6FQLQGH.js → chunk-V7GDTQ6I.js} +2 -2
  97. package/dist/{chunk-JNOYYWCA.js → chunk-VO4UICII.js} +3 -3
  98. package/dist/{chunk-54TI5GLV.js → chunk-WI4QX7GH.js} +3 -3
  99. package/dist/{chunk-3XHD3XGK.js → chunk-XCTDHF7U.js} +30 -2
  100. package/dist/chunk-XCTDHF7U.js.map +1 -0
  101. package/dist/{chunk-XKU4YE6Z.js → chunk-XZTUMWKQ.js} +2 -2
  102. package/dist/{cli-DTWRoJEI.d.ts → cli-iAiVkbYJ.d.ts} +3 -3
  103. package/dist/cli.d.ts +6 -6
  104. package/dist/cli.js +43 -42
  105. package/dist/compounding/engine.d.ts +1 -1
  106. package/dist/compounding/engine.js +8 -7
  107. package/dist/compounding/preference-consolidator.d.ts +1 -1
  108. package/dist/compression-optimizer.d.ts +1 -1
  109. package/dist/config.d.ts +1 -1
  110. package/dist/config.js +4 -3
  111. package/dist/connectors/codex-materialize-runner.d.ts +1 -1
  112. package/dist/connectors/codex-materialize-runner.js +8 -7
  113. package/dist/connectors/codex-materialize.d.ts +1 -1
  114. package/dist/connectors/index.d.ts +1 -1
  115. package/dist/connectors/index.js +9 -8
  116. package/dist/consolidation-provenance-check.d.ts +1 -1
  117. package/dist/consolidation-undo.d.ts +1 -1
  118. package/dist/contradiction/index.d.ts +1 -1
  119. package/dist/conversation-index/backend.d.ts +1 -1
  120. package/dist/conversation-index/chunker.d.ts +1 -1
  121. package/dist/conversation-index/faiss-adapter.d.ts +1 -1
  122. package/dist/conversation-index/indexer.d.ts +1 -1
  123. package/dist/conversation-index/search.d.ts +1 -1
  124. package/dist/day-summary.d.ts +1 -1
  125. package/dist/delinearize.d.ts +1 -1
  126. package/dist/direct-answer-wiring.d.ts +1 -1
  127. package/dist/direct-answer.d.ts +1 -1
  128. package/dist/embedding-fallback.d.ts +1 -1
  129. package/dist/enrichment/index.d.ts +1 -1
  130. package/dist/entity-retrieval.d.ts +1 -1
  131. package/dist/entity-retrieval.js +8 -7
  132. package/dist/entity-schema.d.ts +1 -1
  133. package/dist/explicit-capture.d.ts +4 -4
  134. package/dist/explicit-capture.js +3 -2
  135. package/dist/extraction-faithfulness.d.ts +1 -1
  136. package/dist/extraction-judge-telemetry.d.ts +1 -1
  137. package/dist/extraction-judge-training.d.ts +1 -1
  138. package/dist/extraction-judge.d.ts +1 -1
  139. package/dist/extraction.d.ts +1 -1
  140. package/dist/extraction.js +4 -3
  141. package/dist/fallback-llm.d.ts +1 -1
  142. package/dist/identity-continuity.d.ts +1 -1
  143. package/dist/importance.d.ts +1 -1
  144. package/dist/index.d.ts +9 -9
  145. package/dist/index.js +62 -61
  146. package/dist/index.js.map +1 -1
  147. package/dist/intent.d.ts +1 -1
  148. package/dist/lcm/engine.d.ts +1 -1
  149. package/dist/lcm/index.d.ts +1 -1
  150. package/dist/lcm/index.js +3 -3
  151. package/dist/lcm/tools.d.ts +1 -1
  152. package/dist/lifecycle.d.ts +1 -1
  153. package/dist/live-connectors-runner.d.ts +1 -1
  154. package/dist/local-llm.d.ts +1 -1
  155. package/dist/maintenance/memory-governance.d.ts +1 -1
  156. package/dist/maintenance/memory-governance.js +8 -7
  157. package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +8 -7
  158. package/dist/maintenance/rebuild-memory-projection.js +9 -8
  159. package/dist/mcp-memory-inspector-app.d.ts +5 -5
  160. package/dist/memory-action-policy.d.ts +1 -1
  161. package/dist/memory-cache.d.ts +1 -1
  162. package/dist/memory-lifecycle-ledger-utils.d.ts +1 -1
  163. package/dist/memory-projection-store.d.ts +1 -1
  164. package/dist/memory-provenance.d.ts +1 -1
  165. package/dist/memory-worth-outcomes.d.ts +1 -1
  166. package/dist/models-json.d.ts +1 -1
  167. package/dist/namespaces/migrate.d.ts +2 -2
  168. package/dist/namespaces/migrate.js +12 -11
  169. package/dist/namespaces/principal.d.ts +1 -1
  170. package/dist/namespaces/search.d.ts +1 -1
  171. package/dist/namespaces/search.js +3 -3
  172. package/dist/namespaces/storage.d.ts +2 -2
  173. package/dist/namespaces/storage.js +8 -7
  174. package/dist/native-knowledge.d.ts +1 -1
  175. package/dist/operator-toolkit.d.ts +1 -1
  176. package/dist/operator-toolkit.js +17 -16
  177. package/dist/orchestration/maintenance.d.ts +2 -2
  178. package/dist/orchestration/maintenance.js +10 -9
  179. package/dist/{orchestrator-B1iVjEyc.d.ts → orchestrator-iVZWi8aW.d.ts} +21 -4
  180. package/dist/orchestrator.d.ts +4 -4
  181. package/dist/orchestrator.js +32 -31
  182. package/dist/patterns-cli.d.ts +1 -1
  183. package/dist/policy-runtime.d.ts +1 -1
  184. package/dist/provenance.d.ts +1 -1
  185. package/dist/provenance.js +3 -2
  186. package/dist/qmd-recall-cache.d.ts +1 -1
  187. package/dist/qmd.d.ts +1 -1
  188. package/dist/recall-disclosure-escalation.d.ts +1 -1
  189. package/dist/recall-explain-renderer.d.ts +1 -1
  190. package/dist/recall-explain-renderer.js +3 -3
  191. package/dist/recall-handles.d.ts +228 -0
  192. package/dist/recall-handles.js +42 -0
  193. package/dist/recall-handles.js.map +1 -0
  194. package/dist/recall-planner-llm.d.ts +1 -1
  195. package/dist/recall-state.d.ts +40 -2
  196. package/dist/recall-state.js +3 -1
  197. package/dist/recall-tag-filter.d.ts +1 -1
  198. package/dist/recall-xray-cli.d.ts +1 -1
  199. package/dist/recall-xray-cli.js +4 -4
  200. package/dist/recall-xray-renderer.d.ts +1 -1
  201. package/dist/recall-xray-renderer.js +3 -3
  202. package/dist/recall-xray.d.ts +1 -1
  203. package/dist/recall-xray.js +2 -2
  204. package/dist/resolve-auth-token.d.ts +1 -1
  205. package/dist/resume-bundles.js +5 -4
  206. package/dist/retrieval-agents.d.ts +1 -1
  207. package/dist/retrieval-tiers.d.ts +1 -1
  208. package/dist/routing/engine.d.ts +1 -1
  209. package/dist/routing/store.d.ts +1 -1
  210. package/dist/sanitize.d.ts +2 -0
  211. package/dist/sanitize.js +6 -2
  212. package/dist/search/embed-helper.d.ts +1 -1
  213. package/dist/search/factory.d.ts +1 -1
  214. package/dist/search/factory.js +2 -2
  215. package/dist/search/index.d.ts +1 -1
  216. package/dist/search/index.js +4 -4
  217. package/dist/search/lancedb-backend.d.ts +1 -1
  218. package/dist/search/meilisearch-backend.d.ts +1 -1
  219. package/dist/search/noop-backend.d.ts +1 -1
  220. package/dist/search/orama-backend.d.ts +1 -1
  221. package/dist/search/port.d.ts +1 -1
  222. package/dist/search/remote-backend.d.ts +1 -1
  223. package/dist/{semantic-consolidation-CY8uVRNJ.d.ts → semantic-consolidation-DSjMDZ1u.d.ts} +1 -1
  224. package/dist/semantic-consolidation.d.ts +2 -2
  225. package/dist/semantic-consolidation.js +9 -8
  226. package/dist/semantic-rule-promotion.js +8 -7
  227. package/dist/semantic-rule-verifier.d.ts +1 -1
  228. package/dist/semantic-rule-verifier.js +8 -7
  229. package/dist/session-observer-bands.d.ts +1 -1
  230. package/dist/session-observer-state.d.ts +1 -1
  231. package/dist/shared-context/manager.d.ts +3 -3
  232. package/dist/signal.d.ts +1 -1
  233. package/dist/storage.d.ts +1 -1
  234. package/dist/storage.js +7 -6
  235. package/dist/summarizer.d.ts +1 -1
  236. package/dist/summary-snapshot.d.ts +1 -1
  237. package/dist/temporal-supersession.d.ts +1 -1
  238. package/dist/temporal-validity.d.ts +1 -1
  239. package/dist/threading.d.ts +1 -1
  240. package/dist/tier-migration.d.ts +1 -1
  241. package/dist/tier-routing.d.ts +1 -1
  242. package/dist/topics.d.ts +1 -1
  243. package/dist/transcript.d.ts +1 -1
  244. package/dist/transfer/import-sqlite.js +2 -2
  245. package/dist/{types-Dr0Cw3L9.d.ts → types-D9dwzU_x.d.ts} +25 -1
  246. package/dist/types.d.ts +1 -1
  247. package/dist/types.js +1 -1
  248. package/dist/utility-runtime.d.ts +1 -1
  249. package/dist/verified-recall.js +8 -7
  250. package/package.json +2 -2
  251. package/src/access-boundary.ts +4 -1
  252. package/src/access-http.ts +78 -20
  253. package/src/access-mcp.test.ts +29 -0
  254. package/src/access-mcp.ts +99 -17
  255. package/src/access-operations-batch.ts +14 -0
  256. package/src/access-operations.ts +5 -0
  257. package/src/access-schema.ts +8 -0
  258. package/src/access-service-observe-idempotency.test.ts +308 -0
  259. package/src/access-service.ts +106 -5
  260. package/src/access-surface-catalog.test.ts +4 -2
  261. package/src/access-surface-catalog.ts +5 -0
  262. package/src/active-memory-bridge.test.ts +72 -0
  263. package/src/active-memory-bridge.ts +21 -2
  264. package/src/chat/chat-cli.test.ts +142 -0
  265. package/src/chat/chat-cli.ts +206 -0
  266. package/src/chat/chat-config.ts +57 -0
  267. package/src/chat/chat-engine.test.ts +272 -0
  268. package/src/chat/chat-engine.ts +518 -0
  269. package/src/chat/chat-executor.ts +133 -0
  270. package/src/chat/chat-factory.ts +161 -0
  271. package/src/chat/chat-http.test.ts +197 -0
  272. package/src/chat/chat-http.ts +222 -0
  273. package/src/chat/chat-llm.ts +229 -0
  274. package/src/chat/chat-mcp.test.ts +135 -0
  275. package/src/chat/chat-security.test.ts +491 -0
  276. package/src/chat/chat-session.ts +296 -0
  277. package/src/chat/chat-system-prompt.ts +76 -0
  278. package/src/chat/chat-tools.ts +255 -0
  279. package/src/chat/chat-types.ts +167 -0
  280. package/src/cli.ts +20 -0
  281. package/src/config.ts +9 -0
  282. package/src/orchestrator.ts +106 -5
  283. package/src/recall-handles-wiring.test.ts +477 -0
  284. package/src/recall-handles.test.ts +283 -0
  285. package/src/recall-handles.ts +414 -0
  286. package/src/recall-state.ts +99 -0
  287. package/src/sanitize.ts +6 -0
  288. package/src/types.ts +29 -0
  289. package/dist/chunk-3XHD3XGK.js.map +0 -1
  290. package/dist/chunk-5KQCOIPW.js.map +0 -1
  291. package/dist/chunk-A2R5NV6O.js.map +0 -1
  292. package/dist/chunk-BOGENF7P.js.map +0 -1
  293. package/dist/chunk-GKPIY7EQ.js.map +0 -1
  294. package/dist/chunk-I3BT2IDW.js.map +0 -1
  295. package/dist/chunk-NUWZFSKC.js.map +0 -1
  296. package/dist/chunk-SINGJCUR.js.map +0 -1
  297. package/dist/chunk-Z3B2YW56.js.map +0 -1
  298. package/dist/chunk-ZVDRL6SK.js.map +0 -1
  299. /package/dist/{chunk-OMSTU233.js.map → chunk-2KAYTPPT.js.map} +0 -0
  300. /package/dist/{chunk-VYZNWH4J.js.map → chunk-2SXMCQEQ.js.map} +0 -0
  301. /package/dist/{chunk-NXL5CVE7.js.map → chunk-2Y6LMOQQ.js.map} +0 -0
  302. /package/dist/{chunk-LQ4J7ELC.js.map → chunk-67HG7KFE.js.map} +0 -0
  303. /package/dist/{chunk-ZBG4K36I.js.map → chunk-6FUJ2VYY.js.map} +0 -0
  304. /package/dist/{chunk-GMRNKPWO.js.map → chunk-6QUPUTT7.js.map} +0 -0
  305. /package/dist/{chunk-Z56IHRVV.js.map → chunk-6UU43ZGD.js.map} +0 -0
  306. /package/dist/{chunk-APJQ6UEA.js.map → chunk-AGNBY3VG.js.map} +0 -0
  307. /package/dist/{chunk-OWOKOFXK.js.map → chunk-AJOIM6UR.js.map} +0 -0
  308. /package/dist/{chunk-JBPKEARU.js.map → chunk-AU7Q3LSC.js.map} +0 -0
  309. /package/dist/{chunk-K22IJO4R.js.map → chunk-CTOQEZSN.js.map} +0 -0
  310. /package/dist/{chunk-HSDJCT3V.js.map → chunk-DXGS5YOQ.js.map} +0 -0
  311. /package/dist/{chunk-HV57RHMD.js.map → chunk-EH5ED3C6.js.map} +0 -0
  312. /package/dist/{chunk-7NDYFAJS.js.map → chunk-GM3BMWKR.js.map} +0 -0
  313. /package/dist/{chunk-5QUS24F7.js.map → chunk-I56LKMF7.js.map} +0 -0
  314. /package/dist/{chunk-35YJ6KCV.js.map → chunk-JEIROMLX.js.map} +0 -0
  315. /package/dist/{chunk-SKQCFAYU.js.map → chunk-JVEMUX6L.js.map} +0 -0
  316. /package/dist/{chunk-CXMXAC5R.js.map → chunk-K44MIN6D.js.map} +0 -0
  317. /package/dist/{chunk-BQCFXAMN.js.map → chunk-MPHDVHIB.js.map} +0 -0
  318. /package/dist/{chunk-QXNFQKWU.js.map → chunk-MTHNJCOJ.js.map} +0 -0
  319. /package/dist/{chunk-3TCRU4JA.js.map → chunk-O62P2LFL.js.map} +0 -0
  320. /package/dist/{chunk-JSDZMOT7.js.map → chunk-OC56UWV5.js.map} +0 -0
  321. /package/dist/{chunk-7IBEWQLG.js.map → chunk-QOIONSOI.js.map} +0 -0
  322. /package/dist/{chunk-4P5UAL3C.js.map → chunk-RBHANGVX.js.map} +0 -0
  323. /package/dist/{chunk-SK2CR6MW.js.map → chunk-RVLB4E6N.js.map} +0 -0
  324. /package/dist/{chunk-CNVIWMQI.js.map → chunk-UY4JMEAK.js.map} +0 -0
  325. /package/dist/{chunk-S6FQLQGH.js.map → chunk-V7GDTQ6I.js.map} +0 -0
  326. /package/dist/{chunk-JNOYYWCA.js.map → chunk-VO4UICII.js.map} +0 -0
  327. /package/dist/{chunk-54TI5GLV.js.map → chunk-WI4QX7GH.js.map} +0 -0
  328. /package/dist/{chunk-XKU4YE6Z.js.map → chunk-XZTUMWKQ.js.map} +0 -0
@@ -12,7 +12,7 @@ import { LiveConnectorsRunSummary } from './live-connectors-runner.js';
12
12
  import { ModelRegistry } from './model-registry.js';
13
13
  import { RelevanceStore } from './relevance.js';
14
14
  import { NegativeExampleStore } from './negative.js';
15
- import { LastRecallStore, TierMigrationStatusStore, GraphRecallExpandedEntry, TierMigrationStatusSnapshot, TierMigrationCycleSummary, LastRecallSnapshot } from './recall-state.js';
15
+ import { LastRecallStore, RecallHandleHistoryStore, TierMigrationStatusStore, GraphRecallExpandedEntry, TierMigrationStatusSnapshot, TierMigrationCycleSummary, LastRecallSnapshot } from './recall-state.js';
16
16
  import { RecallXraySnapshot } from './recall-xray.js';
17
17
  import { SessionObserverState } from './session-observer-state.js';
18
18
  import { EmbeddingFallback } from './embedding-fallback.js';
@@ -21,11 +21,11 @@ import { CapabilitySet } from './capabilities.js';
21
21
  import { ReplayTurn } from './replay/types.js';
22
22
  import { I as ImportTurn } from './types-gb_SNtjR.js';
23
23
  import { JudgeCandidate, JudgeBatchResult } from './extraction-judge.js';
24
- import { u as BufferTurn, a0 as ExtractionResult, M as MemoryCategory, a9 as ImportanceScore, f as MemoryStatus, aw as WearableConversation, ax as WearableSourceSettings, ay as WearableNativeMemory, az as WearableMemoryMode, aA as WearableSourceConnector, aB as WearablesConfig, aC as WearableSyncSummary, aD as WearableSourceStatus, aE as WearableDayTranscript, aF as WearableCorrectionRule, P as PluginConfig, aG as CodingContext, Q as QmdSearchResult, e as BehaviorLoopPolicyState, aH as BootstrapOptions, aI as BootstrapResult, aJ as ConsolidationObservation, g as MemoryFile, a2 as DaySummaryResult, W as MemoryActionEvent, h as RecallPlanMode, aa as MemoryIntent, aK as EntityTimelineEntry, k as MemoryFrontmatter, I as IdentityInjectionMode } from './types-Dr0Cw3L9.js';
24
+ import { u as BufferTurn, a0 as ExtractionResult, M as MemoryCategory, a9 as ImportanceScore, f as MemoryStatus, aw as WearableConversation, ax as WearableSourceSettings, ay as WearableNativeMemory, az as WearableMemoryMode, aA as WearableSourceConnector, aB as WearablesConfig, aC as WearableSyncSummary, aD as WearableSourceStatus, aE as WearableDayTranscript, aF as WearableCorrectionRule, P as PluginConfig, aG as CodingContext, Q as QmdSearchResult, e as BehaviorLoopPolicyState, aH as BootstrapOptions, aI as BootstrapResult, aJ as ConsolidationObservation, g as MemoryFile, a2 as DaySummaryResult, W as MemoryActionEvent, h as RecallPlanMode, aa as MemoryIntent, aK as EntityTimelineEntry, k as MemoryFrontmatter, I as IdentityInjectionMode } from './types-D9dwzU_x.js';
25
25
  import { LcmEngine } from './lcm/engine.js';
26
- import { S as SemanticConsolidationResult } from './semantic-consolidation-CY8uVRNJ.js';
26
+ import { S as SemanticConsolidationResult } from './semantic-consolidation-DSjMDZ1u.js';
27
27
  import { ConversationIndexBackendInspection } from './conversation-index/backend.js';
28
- import { a as NamespaceKind, N as NamespaceCatalog } from './catalog-CadPvH29.js';
28
+ import { a as NamespaceKind, N as NamespaceCatalog } from './catalog-CbR0CsUw.js';
29
29
  import { NamespaceSearchHealth } from './namespaces/search.js';
30
30
  import { SharedContextManager } from './shared-context/manager.js';
31
31
  import { CompoundingEngine } from './compounding/engine.js';
@@ -985,6 +985,7 @@ declare class Orchestrator {
985
985
  readonly relevance: RelevanceStore;
986
986
  readonly negatives: NegativeExampleStore;
987
987
  readonly lastRecall: LastRecallStore;
988
+ readonly handleHistory: RecallHandleHistoryStore;
988
989
  readonly tierMigrationStatus: TierMigrationStatusStore;
989
990
  /**
990
991
  * In-memory X-ray snapshot from the most recent `recall()` call that
@@ -1929,6 +1930,22 @@ declare class Orchestrator {
1929
1930
  recordMemoryFeedback(memoryId: string, vote: "up" | "down", note?: string): Promise<void>;
1930
1931
  recordNotUsefulMemories(memoryIds: string[], note?: string): Promise<void>;
1931
1932
  getLastRecall(sessionKey: string): LastRecallSnapshot | null;
1933
+ /**
1934
+ * Issue #1582 — resolve a memory handle (`[m:4f2a]` / bare hex) to its memory
1935
+ * id against THIS session's recent recall history. Returns the id on a unique
1936
+ * hit, `null` on a miss, and throws on ambiguity (callers must disambiguate —
1937
+ * rule 34/51). Resolution is per-session and snapshot-scoped; there is no
1938
+ * global handle→id map (rule 42).
1939
+ */
1940
+ resolveMemoryHandle(handle: string, sessionKey: string): string | null;
1941
+ /**
1942
+ * Issue #1582 — resolve a caller reference that may be EITHER a memory id or
1943
+ * a handle to a concrete memory id. Handles resolve against the session's
1944
+ * recall history; raw ids pass through unchanged. The single shared helper
1945
+ * every surface (memory_get / feedback / outcome / correction targetIds)
1946
+ * calls so handle resolution has one path (rule 22).
1947
+ */
1948
+ resolveMemoryIdOrHandle(ref: string, sessionKey?: string): string;
1932
1949
  /**
1933
1950
  * Check if a new memory contradicts an existing one.
1934
1951
  * Uses QMD to find similar memories, then LLM to verify contradiction.
@@ -9,7 +9,7 @@ import './local-llm.js';
9
9
  import './fallback-llm.js';
10
10
  import './orchestration/maintenance.js';
11
11
  import './live-connectors-runner.js';
12
- export { L as BulkImportBatchIngestResult, M as BulkImportBatchPartialFailureError, N as GraphRecallRankedResult, Q as GraphRecallShadowComparison, G as GraphRecallSnapshot, I as IntentDebugSnapshot, O as Orchestrator, T as QmdRecallSnapshot, U as RecallInvocationOptions, V as RecallModeDecision, X as appendMemoryToGraphContext, Y as blendGraphExpandedRecallScore, Z as buildCompressionGuidelinesMarkdown, _ as buildMemoryPathById, $ as computeArtifactCandidateFetchLimit, a0 as computeArtifactRecallLimit, a1 as computeQmdHybridFetchLimit, a2 as dedupeEntitySynthesisEvidenceEntries, q as defaultWorkspaceDir, a3 as deriveTopicsFromExtraction, a4 as filterRecallCandidates, a5 as formatCompressionGuidelinesForRecall, a6 as graphPathRelativeToStorage, a7 as hasIdentityRecoveryIntent, a8 as isArtifactMemoryPath, a9 as lifecycleRecallScoreAdjustment, aa as mergeArtifactRecallCandidates, ab as mergeGraphExpandedResults, ac as resolveEffectiveIdentityInjectionMode, ad as resolveEffectiveRecallMode, ae as resolvePersistedMemoryRelativePath, af as resolveRecallModeDecision, ag as resolveRecallModeDecisionAsync, ah as resolveRecentThreadMemoryPaths, A as sanitizeSessionKeyForFilename, ai as shouldFilterLifecycleRecallCandidate, aj as summarizeGraphShadowComparison } from './orchestrator-B1iVjEyc.js';
12
+ export { L as BulkImportBatchIngestResult, M as BulkImportBatchPartialFailureError, N as GraphRecallRankedResult, Q as GraphRecallShadowComparison, G as GraphRecallSnapshot, I as IntentDebugSnapshot, O as Orchestrator, T as QmdRecallSnapshot, U as RecallInvocationOptions, V as RecallModeDecision, X as appendMemoryToGraphContext, Y as blendGraphExpandedRecallScore, Z as buildCompressionGuidelinesMarkdown, _ as buildMemoryPathById, $ as computeArtifactCandidateFetchLimit, a0 as computeArtifactRecallLimit, a1 as computeQmdHybridFetchLimit, a2 as dedupeEntitySynthesisEvidenceEntries, q as defaultWorkspaceDir, a3 as deriveTopicsFromExtraction, a4 as filterRecallCandidates, a5 as formatCompressionGuidelinesForRecall, a6 as graphPathRelativeToStorage, a7 as hasIdentityRecoveryIntent, a8 as isArtifactMemoryPath, a9 as lifecycleRecallScoreAdjustment, aa as mergeArtifactRecallCandidates, ab as mergeGraphExpandedResults, ac as resolveEffectiveIdentityInjectionMode, ad as resolveEffectiveRecallMode, ae as resolvePersistedMemoryRelativePath, af as resolveRecallModeDecision, ag as resolveRecallModeDecisionAsync, ah as resolveRecentThreadMemoryPaths, A as sanitizeSessionKeyForFilename, ai as shouldFilterLifecycleRecallCandidate, aj as summarizeGraphShadowComparison } from './orchestrator-iVZWi8aW.js';
13
13
  import './model-registry.js';
14
14
  import './relevance.js';
15
15
  import './negative.js';
@@ -21,11 +21,11 @@ import './semantic-SLAa_prH.js';
21
21
  import './capabilities.js';
22
22
  import './replay/types.js';
23
23
  import './types-gb_SNtjR.js';
24
- import './types-Dr0Cw3L9.js';
24
+ import './types-D9dwzU_x.js';
25
25
  import './lcm/engine.js';
26
- import './semantic-consolidation-CY8uVRNJ.js';
26
+ import './semantic-consolidation-DSjMDZ1u.js';
27
27
  import './conversation-index/backend.js';
28
- import './catalog-CadPvH29.js';
28
+ import './catalog-CbR0CsUw.js';
29
29
  import './namespaces/search.js';
30
30
  import './shared-context/manager.js';
31
31
  import './compounding/engine.js';
@@ -28,44 +28,44 @@ import {
28
28
  sanitizeSessionKeyForFilename,
29
29
  shouldFilterLifecycleRecallCandidate,
30
30
  summarizeGraphShadowComparison
31
- } from "./chunk-GKPIY7EQ.js";
31
+ } from "./chunk-FXZKXW7C.js";
32
32
  import "./chunk-DGTDRIUO.js";
33
- import "./chunk-3TCRU4JA.js";
33
+ import "./chunk-O62P2LFL.js";
34
34
  import "./chunk-7HYPN2GC.js";
35
35
  import "./chunk-666A3MOW.js";
36
36
  import "./chunk-HHLLAQGZ.js";
37
+ import "./chunk-UWK5OXUJ.js";
37
38
  import "./chunk-773DPI6T.js";
38
39
  import "./chunk-7N4KAIGN.js";
39
40
  import "./chunk-TPDBFYEG.js";
40
41
  import "./chunk-KCYE2MZM.js";
41
42
  import "./chunk-KYYL4U6X.js";
42
43
  import "./chunk-XPOOY35N.js";
43
- import "./chunk-UWK5OXUJ.js";
44
+ import "./chunk-HW5EF6LV.js";
44
45
  import "./chunk-TECVW3JP.js";
45
46
  import "./chunk-O7GOFAM3.js";
46
- import "./chunk-HW5EF6LV.js";
47
- import "./chunk-54TI5GLV.js";
47
+ import "./chunk-WI4QX7GH.js";
48
48
  import "./chunk-UFS7OXGL.js";
49
- import "./chunk-UHGBNIOS.js";
50
49
  import "./chunk-LXOM6IQU.js";
50
+ import "./chunk-ECZU5BJH.js";
51
+ import "./chunk-UHGBNIOS.js";
51
52
  import "./chunk-4EX5WZ4M.js";
52
53
  import "./chunk-VOUOLGIP.js";
53
54
  import "./chunk-S75M5ZRK.js";
54
- import "./chunk-ECZU5BJH.js";
55
55
  import "./chunk-IO5NQEGZ.js";
56
56
  import "./chunk-3FAMU5TX.js";
57
57
  import "./chunk-4SBW47WK.js";
58
58
  import "./chunk-DKTSR7EK.js";
59
+ import "./chunk-5IZL4DCV.js";
60
+ import "./chunk-GG6AJN7A.js";
59
61
  import "./chunk-E3VODCC3.js";
60
62
  import "./chunk-L6W77GWW.js";
61
63
  import "./chunk-L24JROPR.js";
62
64
  import "./chunk-MGN7VHWQ.js";
63
- import "./chunk-5IZL4DCV.js";
65
+ import "./chunk-UC4YOAC2.js";
64
66
  import "./chunk-X7XN6YU4.js";
65
- import "./chunk-GG6AJN7A.js";
66
67
  import "./chunk-YDBIWGNI.js";
67
68
  import "./chunk-VQ34TERH.js";
68
- import "./chunk-VILEUJXC.js";
69
69
  import "./chunk-ZZTOURJI.js";
70
70
  import "./chunk-EXM3CQTZ.js";
71
71
  import "./chunk-3GPTTA4J.js";
@@ -75,7 +75,7 @@ import "./chunk-H63EDPFJ.js";
75
75
  import "./chunk-PD6O7AXF.js";
76
76
  import "./chunk-YAZNBMNF.js";
77
77
  import "./chunk-TH7WMHVK.js";
78
- import "./chunk-VYZNWH4J.js";
78
+ import "./chunk-2SXMCQEQ.js";
79
79
  import "./chunk-4RA3C3EV.js";
80
80
  import "./chunk-5GSUBCZM.js";
81
81
  import "./chunk-54V4BZWP.js";
@@ -93,21 +93,21 @@ import "./chunk-VEWZZM3H.js";
93
93
  import "./chunk-OQH5XUH3.js";
94
94
  import "./chunk-6HEM6HTQ.js";
95
95
  import "./chunk-ZA2S2VLL.js";
96
- import "./chunk-HSDJCT3V.js";
96
+ import "./chunk-DXGS5YOQ.js";
97
97
  import "./chunk-EO5QWINU.js";
98
98
  import "./chunk-2PRQG7PV.js";
99
99
  import "./chunk-WIWPSQYU.js";
100
- import "./chunk-S6FQLQGH.js";
100
+ import "./chunk-V7GDTQ6I.js";
101
101
  import "./chunk-2F6NP3NT.js";
102
102
  import "./chunk-TERNBNJB.js";
103
103
  import "./chunk-QRDOSYOR.js";
104
- import "./chunk-SKQCFAYU.js";
104
+ import "./chunk-JVEMUX6L.js";
105
105
  import "./chunk-ZRWB5D4H.js";
106
106
  import "./chunk-GY3SKOS4.js";
107
107
  import "./chunk-SFQ6QNL7.js";
108
- import "./chunk-7NDYFAJS.js";
109
- import "./chunk-GMRNKPWO.js";
110
- import "./chunk-BQCFXAMN.js";
108
+ import "./chunk-GM3BMWKR.js";
109
+ import "./chunk-6QUPUTT7.js";
110
+ import "./chunk-MPHDVHIB.js";
111
111
  import "./chunk-KFY3SGN7.js";
112
112
  import "./chunk-33JBK2XP.js";
113
113
  import "./chunk-TQNRI55H.js";
@@ -122,8 +122,8 @@ import "./chunk-FZZ2QTJI.js";
122
122
  import "./chunk-LMDRGRJ2.js";
123
123
  import "./chunk-OD4FM2U7.js";
124
124
  import "./chunk-PBH4JUAB.js";
125
- import "./chunk-NXL5CVE7.js";
126
- import "./chunk-CNVIWMQI.js";
125
+ import "./chunk-2Y6LMOQQ.js";
126
+ import "./chunk-UY4JMEAK.js";
127
127
  import "./chunk-UUH4YQOF.js";
128
128
  import "./chunk-JLNBQWZ2.js";
129
129
  import "./chunk-3UXOZBHV.js";
@@ -144,15 +144,15 @@ import "./chunk-RS25QOKZ.js";
144
144
  import "./chunk-JGSKJHF7.js";
145
145
  import "./chunk-S4DDLTPX.js";
146
146
  import "./chunk-FF4KLI5W.js";
147
- import "./chunk-OWOKOFXK.js";
148
- import "./chunk-K22IJO4R.js";
149
- import "./chunk-OMSTU233.js";
147
+ import "./chunk-AJOIM6UR.js";
148
+ import "./chunk-CTOQEZSN.js";
149
+ import "./chunk-2KAYTPPT.js";
150
+ import "./chunk-WRFKZEO6.js";
150
151
  import "./chunk-CYEPCZN5.js";
151
152
  import "./chunk-LQ6JI4VH.js";
152
153
  import "./chunk-SANZHXY2.js";
153
154
  import "./chunk-EHISUJFN.js";
154
155
  import "./chunk-5CEJH5ZN.js";
155
- import "./chunk-WRFKZEO6.js";
156
156
  import "./chunk-AER6MT24.js";
157
157
  import "./chunk-CINZGPSJ.js";
158
158
  import "./chunk-ZFXCQPNO.js";
@@ -168,7 +168,7 @@ import "./chunk-EI6V5UXY.js";
168
168
  import "./chunk-PNLCEFE4.js";
169
169
  import "./chunk-O75CRYGF.js";
170
170
  import "./chunk-QDW3E4RD.js";
171
- import "./chunk-HV57RHMD.js";
171
+ import "./chunk-EH5ED3C6.js";
172
172
  import "./chunk-3ONXXHQO.js";
173
173
  import "./chunk-YI7RZO7Y.js";
174
174
  import "./chunk-YGKUAX2B.js";
@@ -176,18 +176,18 @@ import "./chunk-DEUNUKTD.js";
176
176
  import "./chunk-2LSZVONP.js";
177
177
  import "./chunk-TBBDFYXW.js";
178
178
  import "./chunk-ZBJMUXZH.js";
179
- import "./chunk-35YJ6KCV.js";
180
- import "./chunk-JSDZMOT7.js";
181
- import "./chunk-M7XQSUBB.js";
179
+ import "./chunk-JEIROMLX.js";
180
+ import "./chunk-OC56UWV5.js";
182
181
  import "./chunk-3JJWNZTT.js";
182
+ import "./chunk-M7XQSUBB.js";
183
183
  import "./chunk-5UZXUTVO.js";
184
184
  import "./chunk-5GPPACXK.js";
185
185
  import "./chunk-TKZ3AL5V.js";
186
186
  import "./chunk-6CIAGZ6X.js";
187
+ import "./chunk-J6A3CX5N.js";
187
188
  import "./chunk-SVOZFLIQ.js";
188
189
  import "./chunk-LTJAMRGI.js";
189
- import "./chunk-J6A3CX5N.js";
190
- import "./chunk-BOGENF7P.js";
190
+ import "./chunk-MSVSP5VO.js";
191
191
  import "./chunk-RULE4VG5.js";
192
192
  import "./chunk-SCU65EZI.js";
193
193
  import "./chunk-MB5RSUW6.js";
@@ -216,13 +216,14 @@ import "./chunk-I4WBNM3M.js";
216
216
  import "./chunk-SOAU2OE2.js";
217
217
  import "./chunk-UZYLX7M6.js";
218
218
  import "./chunk-U3PN77QT.js";
219
- import "./chunk-SK2CR6MW.js";
220
- import "./chunk-FVQJYWH7.js";
219
+ import "./chunk-RVLB4E6N.js";
220
+ import "./chunk-5GKPFL3S.js";
221
221
  import "./chunk-4DJQYKMN.js";
222
222
  import "./chunk-EYIEWJNI.js";
223
223
  import "./chunk-JUC24CTX.js";
224
224
  import "./chunk-NU3CSQ4H.js";
225
225
  import "./chunk-6MKAMLQL.js";
226
+ import "./chunk-JAKIDQB2.js";
226
227
  import "./chunk-PVGDJXVK.js";
227
228
  import "./chunk-A2IYSXDQ.js";
228
229
  import "./chunk-LPSF4OQH.js";
@@ -1,4 +1,4 @@
1
- import { M as MemoryCategory, g as MemoryFile } from './types-Dr0Cw3L9.js';
1
+ import { M as MemoryCategory, g as MemoryFile } from './types-D9dwzU_x.js';
2
2
  import './types-gb_SNtjR.js';
3
3
  import './message-parts/index.js';
4
4
 
@@ -1,4 +1,4 @@
1
- import { P as PluginConfig, e as BehaviorLoopPolicyState } from './types-Dr0Cw3L9.js';
1
+ import { P as PluginConfig, e as BehaviorLoopPolicyState } from './types-D9dwzU_x.js';
2
2
  import './types-gb_SNtjR.js';
3
3
  import './message-parts/index.js';
4
4
 
@@ -1,4 +1,4 @@
1
- import { ai as ProvenanceSource, aj as ProvenanceConfig, k as MemoryFrontmatter } from './types-Dr0Cw3L9.js';
1
+ import { ai as ProvenanceSource, aj as ProvenanceConfig, k as MemoryFrontmatter } from './types-D9dwzU_x.js';
2
2
  import './types-gb_SNtjR.js';
3
3
  import './message-parts/index.js';
4
4
 
@@ -5,10 +5,11 @@ import {
5
5
  parseProvenanceTag,
6
6
  reconcileProvenanceRead,
7
7
  serializeProvenanceFields
8
- } from "./chunk-SK2CR6MW.js";
9
- import "./chunk-FVQJYWH7.js";
8
+ } from "./chunk-RVLB4E6N.js";
9
+ import "./chunk-5GKPFL3S.js";
10
10
  import "./chunk-JUC24CTX.js";
11
11
  import "./chunk-6MKAMLQL.js";
12
+ import "./chunk-JAKIDQB2.js";
12
13
  import "./chunk-PZ5AY32C.js";
13
14
  export {
14
15
  buildFactProvenance,
@@ -1,4 +1,4 @@
1
- import { h as RecallPlanMode } from './types-Dr0Cw3L9.js';
1
+ import { h as RecallPlanMode } from './types-D9dwzU_x.js';
2
2
  import { SearchQueryOptions } from './search/port.js';
3
3
  import './types-gb_SNtjR.js';
4
4
  import './message-parts/index.js';
package/dist/qmd.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { Q as QmdSearchResult, ab as QmdSearchExplain } from './types-Dr0Cw3L9.js';
1
+ import { Q as QmdSearchResult, ab as QmdSearchExplain } from './types-D9dwzU_x.js';
2
2
  import { SearchBackend, SearchExecutionOptions, SearchQueryOptions } from './search/port.js';
3
3
  import './types-gb_SNtjR.js';
4
4
  import './message-parts/index.js';
@@ -1,4 +1,4 @@
1
- import { i as RecallDisclosure } from './types-Dr0Cw3L9.js';
1
+ import { i as RecallDisclosure } from './types-D9dwzU_x.js';
2
2
  import './types-gb_SNtjR.js';
3
3
  import './message-parts/index.js';
4
4
 
@@ -1,5 +1,5 @@
1
1
  import { LastRecallSnapshot } from './recall-state.js';
2
- import { R as RecallTierExplain } from './types-Dr0Cw3L9.js';
2
+ import { R as RecallTierExplain } from './types-D9dwzU_x.js';
3
3
  import { RecallXraySnapshot } from './recall-xray.js';
4
4
  import './search/port.js';
5
5
  import './types-gb_SNtjR.js';
@@ -5,10 +5,10 @@ import {
5
5
  toRecallExplainJson,
6
6
  toRecallExplainText,
7
7
  toRecallXraySnapshotFromLegacy
8
- } from "./chunk-5QUS24F7.js";
8
+ } from "./chunk-I56LKMF7.js";
9
9
  import "./chunk-SOBJ6NEY.js";
10
- import "./chunk-OWOKOFXK.js";
11
- import "./chunk-BOGENF7P.js";
10
+ import "./chunk-AJOIM6UR.js";
11
+ import "./chunk-MSVSP5VO.js";
12
12
  import "./chunk-I4WBNM3M.js";
13
13
  import "./chunk-SOAU2OE2.js";
14
14
  import "./chunk-PZ5AY32C.js";
@@ -0,0 +1,228 @@
1
+ /**
2
+ * recall-handles.ts — injection-time memory handles (issue #1582).
3
+ *
4
+ * Every injected memory gets a stable short handle — `[m:4f2a]` — so a user
5
+ * (or the agent) can react to ONE specific memory in-band ("[m:4f2a] is
6
+ * stale", thumbs-down, "correct that") without a context switch to a CLI or
7
+ * console. The handle is derived from the memory **id** (never the content),
8
+ * so it is stable across edits/versioning.
9
+ *
10
+ * This module is PURE — no I/O, no side effects, no state. It owns:
11
+ * - {@link handleFor} — deterministic 4-hex handle from a memory id.
12
+ * - {@link renderHandle} / {@link renderHandlesForInjection} — render the
13
+ * `[m:xxxx]` token for one memory (or a whole injection set, extending to
14
+ * 6 chars on intra-injection collision).
15
+ * - {@link parseHandles} — extract handle tokens from prose.
16
+ * - {@link normalizeHandle} / {@link isHandleToken} — classify a string.
17
+ * - {@link resolveHandle} — map a handle back to a memory id against the
18
+ * session's recent recall snapshots (hit / not-found / ambiguous).
19
+ *
20
+ * Design rules honored (issue #1582 design + pitfalls):
21
+ * - Handles are derived from the id only — never hashed with content, never
22
+ * persisted into memory files or rawContent (rule 23). Rendering happens
23
+ * at injection time only.
24
+ * - Resolution is per-session and snapshot-scoped — there is NEVER a global
25
+ * handle→id map (collision space too small globally, leaks across
26
+ * principals — rule 42). Misses are tagged, never guessed (rule 34/51).
27
+ * - The formatter is allocation-light: a string append at render time, no
28
+ * per-memory object churn, because it runs on every recall.
29
+ */
30
+ /**
31
+ * Default handle width in hex characters (4 → 65 536-handle space).
32
+ * Per-injection sets are ~10–40 memories, so in-context collisions are
33
+ * vanishingly rare; {@link renderHandlesForInjection} widens the colliding
34
+ * member to {@link HANDLE_EXTENDED_WIDTH} when two ids in ONE injection would
35
+ * collide.
36
+ */
37
+ declare const HANDLE_DEFAULT_WIDTH = 4;
38
+ /**
39
+ * Width used to disambiguate two ids that collide at the default width within
40
+ * a single injection. 6 hex chars → ~16 M-handle space, which is comfortably
41
+ * beyond per-injection set sizes.
42
+ */
43
+ declare const HANDLE_EXTENDED_WIDTH = 6;
44
+ /** Minimum/maximum accepted hex widths for a rendered/parsed handle. */
45
+ declare const HANDLE_MIN_WIDTH = 4;
46
+ declare const HANDLE_MAX_WIDTH = 8;
47
+ /**
48
+ * Regex matching a rendered handle token anywhere in prose: `[m:` followed by
49
+ * 4–8 lowercase hex chars and a closing `]`. Malformed tokens (`[m:xyz!]`,
50
+ * `[m:abc]` with uppercase, missing bracket) are intentionally NOT matched.
51
+ * Used by {@link parseHandles} and the sanitizer.
52
+ */
53
+ declare const HANDLE_REGEX: RegExp;
54
+ /**
55
+ * Memory ids are `<category>-<timestamp>-<suffix>` (e.g. `fact-1770469224307-eelr`,
56
+ * `artifact-...`, `reasoning_trace-...`, plus parent-`-chunk-N` variants). The
57
+ * category segment allows underscores because `MemoryCategory` includes
58
+ * `reasoning_trace` (codex review); bare names (`Widget`) still fail. Entity
59
+ * reconstructions and other non-memory `.md` rows use bare names (`Widget`)
60
+ * that must NOT receive a handle — citing one would resolve to a basename no
61
+ * storage can load. This pattern gates handle rendering/recording to plausible
62
+ * memory ids only (issue #1582, codex review).
63
+ */
64
+ declare const MEMORY_ID_PATTERN: RegExp;
65
+ /**
66
+ * Derive the deterministic handle hex for a memory id at a given width.
67
+ *
68
+ * `handleFor(id) === handleFor(id)` always, and `handleFor(id, w)` is a prefix
69
+ * of `handleFor(id, w+1)` (both slice the same sha256 hex digest), so widening
70
+ * for collision-disambiguation never changes the shorter prefix.
71
+ *
72
+ * @param memoryId Stable memory id (e.g. `fact-1770469224307-eelr`).
73
+ * @param width Hex width. Defaults to {@link HANDLE_DEFAULT_WIDTH}.
74
+ * Clamped to [4, 8]; the digest has 64 hex chars available.
75
+ */
76
+ declare function handleFor(memoryId: string, width?: number): string;
77
+ /**
78
+ * Render the `[m:xxxx]` token for one memory id. Width override is for the
79
+ * collision-extension path in {@link renderHandlesForInjection}; callers that
80
+ * render a single handle in isolation should omit it.
81
+ */
82
+ declare function renderHandle(memoryId: string, widthOverride?: number): string;
83
+ /**
84
+ * Append a handle to a memory line, allocation-light. When `widthOverride` is
85
+ * omitted the default-width handle is used; pass the widened width from
86
+ * {@link renderHandlesForInjection} for a colliding member.
87
+ *
88
+ * appendHandle("API rate limit is 1000 rpm.", "fact-1-abc")
89
+ * // → "API rate limit is 1000 rpm. [m:4f2a]"
90
+ */
91
+ declare function appendHandle(line: string, memoryId: string, widthOverride?: number): string;
92
+ /**
93
+ * Result of {@link renderHandlesForInjection}: for each memory id, the width
94
+ * used (default 4, or 6 when widened to break an intra-injection collision)
95
+ * and the rendered token. Ordered for stable iteration.
96
+ */
97
+ interface InjectionHandleEntry {
98
+ memoryId: string;
99
+ width: number;
100
+ handle: string;
101
+ }
102
+ /**
103
+ * Build handles for a whole injection set, widening to 6 chars when two ids
104
+ * collide at the default width within THIS set (so each rendered token is
105
+ * unique in context). Idempotent for the same input.
106
+ *
107
+ * The collision case is vanishingly rare (~10–40 memories per injection), but
108
+ * widening guarantees a user can always point at exactly one memory in-band.
109
+ */
110
+ declare function renderHandlesForInjection(memoryIds: readonly string[]): InjectionHandleEntry[];
111
+ /**
112
+ * Build a `resultIndex → handle` map for a QMD result set. Returns an empty
113
+ * map when handles are disabled or no result carries a handle-eligible memory
114
+ * id. Extracted from the orchestrator's `formatQmdResults` so the rendering
115
+ * logic lives in the pure handles module, not the god file (issue #1582,
116
+ * rule 4).
117
+ *
118
+ * Only real memory ids (matching {@link MEMORY_ID_PATTERN}) are handle-eligible;
119
+ * entity reconstructions and other non-memory `.md` rows get no handle.
120
+ *
121
+ * @param results QMD search results (each has a `path` like `…/fact-x.md`).
122
+ * @param enabled Whether handle rendering is on. The caller gates on both the
123
+ * config flag and session-key availability — handles rendered
124
+ * without a session key can never be resolved, so they must
125
+ * not be shown (cursor review of #1582).
126
+ */
127
+ declare function buildHandleIndexForResults(results: readonly {
128
+ path: string;
129
+ }[], enabled: boolean): Map<number, string>;
130
+ /**
131
+ * Extract every handle token from prose, in order of appearance. Returns the
132
+ * full rendered tokens (e.g. `[m:4f2a]`) so callers can locate them in text.
133
+ * Malformed tokens are ignored. Duplicates are preserved (a user may cite the
134
+ * same memory twice).
135
+ *
136
+ * parseHandles("see [m:4f2a] (also [m:1b9e]) — not [m:xyz!]")
137
+ * // → ["[m:4f2a]", "[m:1b9e]"]
138
+ */
139
+ declare function parseHandles(text: string): string[];
140
+ /**
141
+ * Strip every handle token from text, collapsing the spacing it introduced.
142
+ * Used by the sanitizer so handles observed back into the pipeline never
143
+ * become memory content (issue #1582 hygiene §2).
144
+ *
145
+ * stripHandles("API limit 1000 rpm. [m:4f2a]") → "API limit 1000 rpm."
146
+ */
147
+ declare function stripHandles(text: string): string;
148
+ /**
149
+ * Normalize a handle token (or bare hex) to its lowercase hex core, or `null`
150
+ * when the input is not a handle. Accepts both the rendered `[m:4f2a]` form
151
+ * and the bare `m:4f2a` / `4f2a` form a user might type.
152
+ *
153
+ * normalizeHandle("[m:4f2a]") → "4f2a"
154
+ * normalizeHandle("m:4f2a") → "4f2a"
155
+ * normalizeHandle("4f2a") → "4f2a"
156
+ * normalizeHandle("fact-1") → null
157
+ */
158
+ declare function normalizeHandle(token: string): string | null;
159
+ /**
160
+ * Whether a string looks like a handle token (rendered or bare). Cheaper
161
+ * boolean form of {@link normalizeHandle} for callers that only need to branch.
162
+ */
163
+ declare function isHandleToken(token: string): boolean;
164
+ /**
165
+ * A flattened id-or-handle reference: either a raw memory id or the hex core
166
+ * of a handle. {@link resolveMemoryIdOrHandle} produces this so the snapshot
167
+ * lookup only runs for actual handles.
168
+ */
169
+ interface ParsedIdOrHandle {
170
+ /** The original reference as supplied by the caller. */
171
+ raw: string;
172
+ /** `true` when `raw` is a handle that still needs snapshot resolution. */
173
+ isHandle: boolean;
174
+ /** For a handle, its hex core; for a raw id, the id itself. */
175
+ value: string;
176
+ }
177
+ /**
178
+ * Classify a single caller reference as id-or-handle.
179
+ */
180
+ declare function parseIdOrHandle(ref: string): ParsedIdOrHandle;
181
+ /**
182
+ * A flattened view of the memory-id sets a session has recently recalled.
183
+ * Each entry is one past recall's admitted memory ids (newest first).
184
+ * Resolution never sees raw {@link LastRecallSnapshot}s — callers flatten to
185
+ * this so the pure resolver has no dependency on the snapshot type.
186
+ */
187
+ interface RecallSnapshotIds {
188
+ memoryIds: readonly string[];
189
+ }
190
+ /**
191
+ * Result of resolving a handle against recent recall snapshots.
192
+ * - `{ ok: true, memoryId }` — exactly one match within the lookback window.
193
+ * - `{ ok: false, reason: "not_found" }` — no memory id produced this handle
194
+ * within the window (misses are acceptable and tagged, never guessed).
195
+ * - `{ ok: false, reason: "ambiguous", candidates }` — two DIFFERENT memory
196
+ * ids in the window collide on the same handle; the caller must disambiguate
197
+ * (rule 34/51: never guess).
198
+ */
199
+ type ResolveHandleResult = {
200
+ ok: true;
201
+ memoryId: string;
202
+ } | {
203
+ ok: false;
204
+ reason: "not_found";
205
+ } | {
206
+ ok: false;
207
+ reason: "ambiguous";
208
+ candidates: string[];
209
+ };
210
+ /**
211
+ * Resolve a handle hex (or a rendered token / bare form) to its memory id
212
+ * against the session's recent recall snapshots.
213
+ *
214
+ * @param handle A handle token, bare hex, or `m:hex` form.
215
+ * @param snapshots Recent recall snapshots for the session, newest first.
216
+ * Only the first `depth` entries are searched.
217
+ * @param depth How many snapshots (newest-first) to search. Defaults to
218
+ * {@link DEFAULT_HANDLE_SNAPSHOT_DEPTH}.
219
+ */
220
+ declare function resolveHandle(handle: string, snapshots: readonly RecallSnapshotIds[], depth?: number): ResolveHandleResult;
221
+ /**
222
+ * Default snapshot lookback depth for handle resolution (issue #1582 config
223
+ * `recall.handleSnapshotDepth`). Older-than-N snapshots are not searched and a
224
+ * miss is tagged rather than widening the window.
225
+ */
226
+ declare const DEFAULT_HANDLE_SNAPSHOT_DEPTH = 5;
227
+
228
+ export { DEFAULT_HANDLE_SNAPSHOT_DEPTH, HANDLE_DEFAULT_WIDTH, HANDLE_EXTENDED_WIDTH, HANDLE_MAX_WIDTH, HANDLE_MIN_WIDTH, HANDLE_REGEX, type InjectionHandleEntry, MEMORY_ID_PATTERN, type ParsedIdOrHandle, type RecallSnapshotIds, type ResolveHandleResult, appendHandle, buildHandleIndexForResults, handleFor, isHandleToken, normalizeHandle, parseHandles, parseIdOrHandle, renderHandle, renderHandlesForInjection, resolveHandle, stripHandles };
@@ -0,0 +1,42 @@
1
+ import {
2
+ DEFAULT_HANDLE_SNAPSHOT_DEPTH,
3
+ HANDLE_DEFAULT_WIDTH,
4
+ HANDLE_EXTENDED_WIDTH,
5
+ HANDLE_MAX_WIDTH,
6
+ HANDLE_MIN_WIDTH,
7
+ HANDLE_REGEX,
8
+ MEMORY_ID_PATTERN,
9
+ appendHandle,
10
+ buildHandleIndexForResults,
11
+ handleFor,
12
+ isHandleToken,
13
+ normalizeHandle,
14
+ parseHandles,
15
+ parseIdOrHandle,
16
+ renderHandle,
17
+ renderHandlesForInjection,
18
+ resolveHandle,
19
+ stripHandles
20
+ } from "./chunk-JAKIDQB2.js";
21
+ import "./chunk-PZ5AY32C.js";
22
+ export {
23
+ DEFAULT_HANDLE_SNAPSHOT_DEPTH,
24
+ HANDLE_DEFAULT_WIDTH,
25
+ HANDLE_EXTENDED_WIDTH,
26
+ HANDLE_MAX_WIDTH,
27
+ HANDLE_MIN_WIDTH,
28
+ HANDLE_REGEX,
29
+ MEMORY_ID_PATTERN,
30
+ appendHandle,
31
+ buildHandleIndexForResults,
32
+ handleFor,
33
+ isHandleToken,
34
+ normalizeHandle,
35
+ parseHandles,
36
+ parseIdOrHandle,
37
+ renderHandle,
38
+ renderHandlesForInjection,
39
+ resolveHandle,
40
+ stripHandles
41
+ };
42
+ //# sourceMappingURL=recall-handles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -1,4 +1,4 @@
1
- import { h as RecallPlanMode, P as PluginConfig } from './types-Dr0Cw3L9.js';
1
+ import { h as RecallPlanMode, P as PluginConfig } from './types-D9dwzU_x.js';
2
2
  import { CapabilitySet } from './capabilities.js';
3
3
  import { FallbackLlmClient, FallbackLlmOptions } from './fallback-llm.js';
4
4
  import './types-gb_SNtjR.js';