@remnic/core 9.3.701 → 9.3.703

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 (302) hide show
  1. package/dist/access-boundary.d.ts +7 -7
  2. package/dist/access-boundary.js +15 -12
  3. package/dist/access-cli.js +36 -33
  4. package/dist/access-cli.js.map +1 -1
  5. package/dist/access-http.d.ts +7 -7
  6. package/dist/access-http.js +18 -15
  7. package/dist/access-mcp.d.ts +7 -7
  8. package/dist/access-mcp.js +17 -14
  9. package/dist/access-operations.d.ts +7 -7
  10. package/dist/access-operations.js +16 -13
  11. package/dist/{access-service-CGVWK6lZ.d.ts → access-service-COCzhgEL.d.ts} +397 -19
  12. package/dist/access-service.d.ts +6 -6
  13. package/dist/access-service.js +14 -11
  14. package/dist/access-surface-catalog.d.ts +7 -7
  15. package/dist/action-confidence.d.ts +1 -1
  16. package/dist/active-memory-bridge.d.ts +1 -1
  17. package/dist/active-memory-bridge.js +2 -2
  18. package/dist/active-recall.d.ts +1 -1
  19. package/dist/active-recall.js +7 -6
  20. package/dist/active-recall.js.map +1 -1
  21. package/dist/behavior-learner.d.ts +1 -1
  22. package/dist/behavior-signals.d.ts +1 -1
  23. package/dist/bootstrap.d.ts +5 -5
  24. package/dist/briefing.d.ts +1 -1
  25. package/dist/briefing.js +6 -5
  26. package/dist/buffer-surprise-report.d.ts +1 -1
  27. package/dist/buffer.d.ts +1 -1
  28. package/dist/calibration.d.ts +1 -1
  29. package/dist/capabilities.d.ts +1 -1
  30. package/dist/{catalog-DBIghceA.d.ts → catalog-DxCzhjE6.d.ts} +2 -2
  31. package/dist/causal-behavior.d.ts +1 -1
  32. package/dist/causal-consolidation.d.ts +1 -1
  33. package/dist/causal-consolidation.js +7 -6
  34. package/dist/causal-consolidation.js.map +1 -1
  35. package/dist/{chunk-YXLT4EMM.js → chunk-4463LUIE.js} +12 -2
  36. package/dist/chunk-4463LUIE.js.map +1 -0
  37. package/dist/{chunk-R5DB26G6.js → chunk-4SBW47WK.js} +9 -23
  38. package/dist/chunk-4SBW47WK.js.map +1 -0
  39. package/dist/{chunk-KF4TXW7Z.js → chunk-5VXVXJH6.js} +149 -6
  40. package/dist/{chunk-KF4TXW7Z.js.map → chunk-5VXVXJH6.js.map} +1 -1
  41. package/dist/{chunk-ODTWHSY2.js → chunk-64XXOQRW.js} +2 -2
  42. package/dist/{chunk-ZT7B64BE.js → chunk-6TAETM63.js} +2 -2
  43. package/dist/{chunk-HF4N43Q7.js → chunk-6VVP6NK7.js} +2 -2
  44. package/dist/{chunk-FN2SM5SN.js → chunk-ABCGDW3A.js} +75 -12
  45. package/dist/chunk-ABCGDW3A.js.map +1 -0
  46. package/dist/{chunk-7TAQEPLE.js → chunk-AMNLZ6SF.js} +2 -2
  47. package/dist/{chunk-KS7WQ4BZ.js → chunk-CZJ6QSKG.js} +3 -3
  48. package/dist/{chunk-27LQPUMZ.js → chunk-EOOVJK2U.js} +3 -3
  49. package/dist/{chunk-QP37KL5H.js → chunk-EYJD6KIO.js} +2 -2
  50. package/dist/{chunk-WFEZUGU5.js → chunk-EZR35XHX.js} +2 -2
  51. package/dist/{chunk-UU6MVCJ6.js → chunk-FIOYURII.js} +32 -25
  52. package/dist/chunk-FIOYURII.js.map +1 -0
  53. package/dist/{chunk-JO3E5VGS.js → chunk-FVI5B7DE.js} +2 -2
  54. package/dist/{chunk-SFMRLXIV.js → chunk-GFIARMA7.js} +15 -7
  55. package/dist/chunk-GFIARMA7.js.map +1 -0
  56. package/dist/{chunk-PONNZ54D.js → chunk-GY3SKOS4.js} +4 -4
  57. package/dist/{chunk-U33LWTQQ.js → chunk-HV57RHMD.js} +4 -4
  58. package/dist/{chunk-IKNQAGBV.js → chunk-IX3UQT4H.js} +1 -1
  59. package/dist/{chunk-IKNQAGBV.js.map → chunk-IX3UQT4H.js.map} +1 -1
  60. package/dist/{chunk-IYOPIG3E.js → chunk-IX72AAMZ.js} +2 -2
  61. package/dist/{chunk-JKOKX3PS.js → chunk-JMA4RYRN.js} +2 -2
  62. package/dist/{chunk-DEDQXIDL.js → chunk-JTKFZMZ7.js} +2 -2
  63. package/dist/{chunk-OLOYQZFB.js → chunk-KC6TCAWV.js} +5 -5
  64. package/dist/{chunk-ROZJACKP.js → chunk-KKK7YTYN.js} +4 -1
  65. package/dist/chunk-KKK7YTYN.js.map +1 -0
  66. package/dist/{chunk-EC2AYKRX.js → chunk-L6W77GWW.js} +10 -24
  67. package/dist/chunk-L6W77GWW.js.map +1 -0
  68. package/dist/{chunk-ED35D32I.js → chunk-LQ4J7ELC.js} +2 -2
  69. package/dist/chunk-LUPVCGYK.js +63 -0
  70. package/dist/chunk-LUPVCGYK.js.map +1 -0
  71. package/dist/{chunk-TFVVONWD.js → chunk-MBUM2Y3L.js} +2 -2
  72. package/dist/{chunk-T5QAZIBO.js → chunk-MOXFPLD6.js} +3 -3
  73. package/dist/{chunk-XTIRCSIH.js → chunk-MXEWQKM7.js} +2 -2
  74. package/dist/{chunk-ZYNMX6IU.js → chunk-NUIJEGVD.js} +6 -6
  75. package/dist/{chunk-FUCJAZ25.js → chunk-OXEAMU42.js} +529 -9
  76. package/dist/chunk-OXEAMU42.js.map +1 -0
  77. package/dist/{chunk-YO4MBK3I.js → chunk-QGJAGC2J.js} +2 -2
  78. package/dist/{chunk-ISLJ5WIM.js → chunk-QIMFOCSH.js} +2 -2
  79. package/dist/{chunk-IJEZMWKA.js → chunk-SFOAQQDJ.js} +3 -3
  80. package/dist/{chunk-HRUULBBV.js → chunk-SHRRWOVY.js} +81 -4
  81. package/dist/chunk-SHRRWOVY.js.map +1 -0
  82. package/dist/{chunk-NINRTFSV.js → chunk-SINGJCUR.js} +5 -5
  83. package/dist/{chunk-ZPQVJEVQ.js → chunk-SK2CR6MW.js} +146 -2
  84. package/dist/chunk-SK2CR6MW.js.map +1 -0
  85. package/dist/{chunk-6W2D6FGG.js → chunk-TGAHHCB6.js} +2 -2
  86. package/dist/{chunk-D75JXBV4.js → chunk-WN4GHSDH.js} +2 -2
  87. package/dist/{chunk-K4DWSPMW.js → chunk-WRGPE6AW.js} +2 -2
  88. package/dist/{chunk-4HIAWLA2.js → chunk-XGMCUY5P.js} +60 -114
  89. package/dist/chunk-XGMCUY5P.js.map +1 -0
  90. package/dist/{chunk-SDPDU2PM.js → chunk-YTMDF6S7.js} +2 -2
  91. package/dist/{chunk-MNU5G4TK.js → chunk-Z7XEIAV4.js} +2 -2
  92. package/dist/{chunk-HXHKLVAS.js → chunk-ZCEI242W.js} +23 -23
  93. package/dist/{cli-D3XeenwN.d.ts → cli-BM4xQPp4.d.ts} +3 -3
  94. package/dist/cli.d.ts +7 -7
  95. package/dist/cli.js +33 -32
  96. package/dist/compounding/engine.d.ts +1 -1
  97. package/dist/compounding/engine.js +6 -5
  98. package/dist/compounding/preference-consolidator.d.ts +1 -1
  99. package/dist/compression-optimizer.d.ts +1 -1
  100. package/dist/config.d.ts +1 -1
  101. package/dist/config.js +4 -2
  102. package/dist/connectors/codex-materialize-runner.d.ts +1 -1
  103. package/dist/connectors/codex-materialize-runner.js +6 -5
  104. package/dist/connectors/codex-materialize.d.ts +1 -1
  105. package/dist/connectors/index.d.ts +1 -1
  106. package/dist/connectors/index.js +7 -6
  107. package/dist/consolidation-provenance-check.d.ts +1 -1
  108. package/dist/consolidation-undo.d.ts +1 -1
  109. package/dist/contradiction/index.d.ts +2 -2
  110. package/dist/conversation-index/backend.d.ts +1 -1
  111. package/dist/conversation-index/chunker.d.ts +1 -1
  112. package/dist/conversation-index/faiss-adapter.d.ts +1 -1
  113. package/dist/conversation-index/indexer.d.ts +1 -1
  114. package/dist/conversation-index/search.d.ts +1 -1
  115. package/dist/day-summary.d.ts +1 -1
  116. package/dist/delinearize.d.ts +1 -1
  117. package/dist/direct-answer-wiring.d.ts +1 -1
  118. package/dist/direct-answer.d.ts +1 -1
  119. package/dist/embedding-fallback.d.ts +1 -1
  120. package/dist/enrichment/index.d.ts +1 -1
  121. package/dist/entity-retrieval.d.ts +1 -1
  122. package/dist/entity-retrieval.js +6 -5
  123. package/dist/entity-schema.d.ts +1 -1
  124. package/dist/event-order-recall.js +2 -1
  125. package/dist/explicit-capture.d.ts +5 -5
  126. package/dist/explicit-capture.js +2 -2
  127. package/dist/explicit-cue-recall.js +2 -1
  128. package/dist/extraction-faithfulness.d.ts +1 -1
  129. package/dist/extraction-judge-telemetry.d.ts +1 -1
  130. package/dist/extraction-judge-training.d.ts +1 -1
  131. package/dist/extraction-judge.d.ts +1 -1
  132. package/dist/extraction.d.ts +14 -1
  133. package/dist/extraction.js +5 -3
  134. package/dist/fallback-llm.d.ts +1 -1
  135. package/dist/identity-continuity.d.ts +1 -1
  136. package/dist/importance.d.ts +1 -1
  137. package/dist/index.d.ts +123 -123
  138. package/dist/index.js +53 -52
  139. package/dist/index.js.map +1 -1
  140. package/dist/intent.d.ts +1 -1
  141. package/dist/lcm/engine.d.ts +1 -1
  142. package/dist/lcm/index.d.ts +1 -1
  143. package/dist/lcm/tools.d.ts +1 -1
  144. package/dist/lifecycle.d.ts +1 -1
  145. package/dist/live-connectors-runner.d.ts +1 -1
  146. package/dist/local-llm.d.ts +1 -1
  147. package/dist/maintenance/memory-governance.d.ts +1 -1
  148. package/dist/maintenance/memory-governance.js +6 -5
  149. package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +6 -5
  150. package/dist/maintenance/rebuild-memory-projection.js +7 -6
  151. package/dist/mcp-memory-inspector-app.d.ts +7 -7
  152. package/dist/memory-action-policy.d.ts +1 -1
  153. package/dist/memory-cache.d.ts +1 -1
  154. package/dist/memory-lifecycle-ledger-utils.d.ts +1 -1
  155. package/dist/memory-projection-store.d.ts +1 -1
  156. package/dist/memory-provenance.d.ts +1 -1
  157. package/dist/memory-worth-outcomes.d.ts +1 -1
  158. package/dist/models-json.d.ts +1 -1
  159. package/dist/namespaces/migrate.d.ts +2 -2
  160. package/dist/namespaces/migrate.js +7 -6
  161. package/dist/namespaces/principal.d.ts +1 -1
  162. package/dist/namespaces/search.d.ts +1 -1
  163. package/dist/namespaces/storage.d.ts +2 -2
  164. package/dist/namespaces/storage.js +6 -5
  165. package/dist/native-knowledge.d.ts +1 -1
  166. package/dist/operator-toolkit.d.ts +1 -1
  167. package/dist/operator-toolkit.js +12 -11
  168. package/dist/orchestration/maintenance.d.ts +2 -2
  169. package/dist/orchestration/maintenance.js +8 -7
  170. package/dist/{orchestrator-BzMCZlKn.d.ts → orchestrator-C9CDWAm6.d.ts} +4 -4
  171. package/dist/orchestrator.d.ts +5 -5
  172. package/dist/orchestrator.js +29 -27
  173. package/dist/patterns-cli.d.ts +1 -1
  174. package/dist/policy-runtime.d.ts +1 -1
  175. package/dist/provenance.d.ts +36 -2
  176. package/dist/provenance.js +5 -1
  177. package/dist/qmd-recall-cache.d.ts +1 -1
  178. package/dist/qmd.d.ts +1 -1
  179. package/dist/recall-disclosure-escalation.d.ts +1 -1
  180. package/dist/recall-explain-renderer.d.ts +1 -1
  181. package/dist/recall-explain-renderer.js +3 -3
  182. package/dist/recall-pipeline-stages.d.ts +15 -0
  183. package/dist/recall-pipeline-stages.js +3 -56
  184. package/dist/recall-pipeline-stages.js.map +1 -1
  185. package/dist/recall-planner-llm.d.ts +1 -1
  186. package/dist/recall-state.d.ts +1 -1
  187. package/dist/recall-tag-filter.d.ts +1 -1
  188. package/dist/recall-xray-cli.d.ts +1 -1
  189. package/dist/recall-xray-cli.js +4 -4
  190. package/dist/recall-xray-renderer.d.ts +1 -1
  191. package/dist/recall-xray-renderer.js +3 -3
  192. package/dist/recall-xray.d.ts +1 -1
  193. package/dist/recall-xray.js +2 -2
  194. package/dist/resolve-auth-token.d.ts +1 -1
  195. package/dist/response-guidance-recall.js +2 -1
  196. package/dist/resume-bundles.js +7 -5
  197. package/dist/retrieval-agents.d.ts +1 -1
  198. package/dist/retrieval-tiers.d.ts +1 -1
  199. package/dist/routing/engine.d.ts +1 -1
  200. package/dist/routing/store.d.ts +1 -1
  201. package/dist/schemas.d.ts +41 -22
  202. package/dist/schemas.js +1 -1
  203. package/dist/search/embed-helper.d.ts +1 -1
  204. package/dist/search/factory.d.ts +1 -1
  205. package/dist/search/index.d.ts +1 -1
  206. package/dist/search/lancedb-backend.d.ts +1 -1
  207. package/dist/search/meilisearch-backend.d.ts +1 -1
  208. package/dist/search/noop-backend.d.ts +1 -1
  209. package/dist/search/orama-backend.d.ts +1 -1
  210. package/dist/search/port.d.ts +1 -1
  211. package/dist/search/remote-backend.d.ts +1 -1
  212. package/dist/{semantic-DJR8_DMQ.d.ts → semantic-SLAa_prH.d.ts} +1 -1
  213. package/dist/{semantic-consolidation-BtUfv-AL.d.ts → semantic-consolidation-DgFXyALl.d.ts} +1 -1
  214. package/dist/semantic-consolidation.d.ts +2 -2
  215. package/dist/semantic-consolidation.js +7 -6
  216. package/dist/semantic-rule-promotion.js +6 -5
  217. package/dist/semantic-rule-verifier.d.ts +1 -1
  218. package/dist/semantic-rule-verifier.js +6 -5
  219. package/dist/session-observer-bands.d.ts +1 -1
  220. package/dist/session-observer-state.d.ts +1 -1
  221. package/dist/shared-context/manager.d.ts +1 -1
  222. package/dist/signal.d.ts +1 -1
  223. package/dist/storage.d.ts +13 -1
  224. package/dist/storage.js +5 -4
  225. package/dist/summarizer.d.ts +1 -1
  226. package/dist/summary-snapshot.d.ts +1 -1
  227. package/dist/targeted-fact-recall.js +2 -1
  228. package/dist/temporal-supersession.d.ts +1 -1
  229. package/dist/temporal-validity.d.ts +1 -1
  230. package/dist/threading.d.ts +1 -1
  231. package/dist/tier-migration.d.ts +1 -1
  232. package/dist/tier-routing.d.ts +1 -1
  233. package/dist/topics.d.ts +1 -1
  234. package/dist/transcript.d.ts +1 -1
  235. package/dist/transcript.js +2 -2
  236. package/dist/transfer/types.d.ts +12 -12
  237. package/dist/{types-PuiPZ9iE.d.ts → types-MWKPZnM0.d.ts} +25 -1
  238. package/dist/types.d.ts +1 -1
  239. package/dist/types.js +1 -1
  240. package/dist/utility-runtime.d.ts +1 -1
  241. package/dist/verified-recall.js +6 -5
  242. package/package.json +2 -2
  243. package/src/access-http.ts +162 -0
  244. package/src/access-service.ts +215 -0
  245. package/src/admin/admin-surfaces.test.ts +458 -0
  246. package/src/admin/admin-surfaces.ts +819 -0
  247. package/src/event-order-recall.test.ts +53 -0
  248. package/src/event-order-recall.ts +61 -37
  249. package/src/explicit-cue-recall.ts +21 -1
  250. package/src/extraction.ts +91 -6
  251. package/src/orchestrator.ts +46 -5
  252. package/src/provenance-extraction.test.ts +838 -0
  253. package/src/provenance.ts +413 -0
  254. package/src/recall-pipeline-parity.test.ts +288 -0
  255. package/src/recall-pipeline-stages.test.ts +43 -0
  256. package/src/recall-pipeline-stages.ts +22 -0
  257. package/src/response-guidance-recall.ts +32 -36
  258. package/src/schemas.ts +7 -0
  259. package/src/storage.ts +23 -0
  260. package/src/targeted-fact-recall.ts +25 -32
  261. package/src/types.ts +24 -0
  262. package/dist/chunk-4HIAWLA2.js.map +0 -1
  263. package/dist/chunk-EC2AYKRX.js.map +0 -1
  264. package/dist/chunk-FN2SM5SN.js.map +0 -1
  265. package/dist/chunk-FUCJAZ25.js.map +0 -1
  266. package/dist/chunk-HRUULBBV.js.map +0 -1
  267. package/dist/chunk-R5DB26G6.js.map +0 -1
  268. package/dist/chunk-ROZJACKP.js.map +0 -1
  269. package/dist/chunk-SFMRLXIV.js.map +0 -1
  270. package/dist/chunk-UU6MVCJ6.js.map +0 -1
  271. package/dist/chunk-YXLT4EMM.js.map +0 -1
  272. package/dist/chunk-ZPQVJEVQ.js.map +0 -1
  273. /package/dist/{chunk-ODTWHSY2.js.map → chunk-64XXOQRW.js.map} +0 -0
  274. /package/dist/{chunk-ZT7B64BE.js.map → chunk-6TAETM63.js.map} +0 -0
  275. /package/dist/{chunk-HF4N43Q7.js.map → chunk-6VVP6NK7.js.map} +0 -0
  276. /package/dist/{chunk-7TAQEPLE.js.map → chunk-AMNLZ6SF.js.map} +0 -0
  277. /package/dist/{chunk-KS7WQ4BZ.js.map → chunk-CZJ6QSKG.js.map} +0 -0
  278. /package/dist/{chunk-27LQPUMZ.js.map → chunk-EOOVJK2U.js.map} +0 -0
  279. /package/dist/{chunk-QP37KL5H.js.map → chunk-EYJD6KIO.js.map} +0 -0
  280. /package/dist/{chunk-WFEZUGU5.js.map → chunk-EZR35XHX.js.map} +0 -0
  281. /package/dist/{chunk-JO3E5VGS.js.map → chunk-FVI5B7DE.js.map} +0 -0
  282. /package/dist/{chunk-PONNZ54D.js.map → chunk-GY3SKOS4.js.map} +0 -0
  283. /package/dist/{chunk-U33LWTQQ.js.map → chunk-HV57RHMD.js.map} +0 -0
  284. /package/dist/{chunk-IYOPIG3E.js.map → chunk-IX72AAMZ.js.map} +0 -0
  285. /package/dist/{chunk-JKOKX3PS.js.map → chunk-JMA4RYRN.js.map} +0 -0
  286. /package/dist/{chunk-DEDQXIDL.js.map → chunk-JTKFZMZ7.js.map} +0 -0
  287. /package/dist/{chunk-OLOYQZFB.js.map → chunk-KC6TCAWV.js.map} +0 -0
  288. /package/dist/{chunk-ED35D32I.js.map → chunk-LQ4J7ELC.js.map} +0 -0
  289. /package/dist/{chunk-TFVVONWD.js.map → chunk-MBUM2Y3L.js.map} +0 -0
  290. /package/dist/{chunk-T5QAZIBO.js.map → chunk-MOXFPLD6.js.map} +0 -0
  291. /package/dist/{chunk-XTIRCSIH.js.map → chunk-MXEWQKM7.js.map} +0 -0
  292. /package/dist/{chunk-ZYNMX6IU.js.map → chunk-NUIJEGVD.js.map} +0 -0
  293. /package/dist/{chunk-YO4MBK3I.js.map → chunk-QGJAGC2J.js.map} +0 -0
  294. /package/dist/{chunk-ISLJ5WIM.js.map → chunk-QIMFOCSH.js.map} +0 -0
  295. /package/dist/{chunk-IJEZMWKA.js.map → chunk-SFOAQQDJ.js.map} +0 -0
  296. /package/dist/{chunk-NINRTFSV.js.map → chunk-SINGJCUR.js.map} +0 -0
  297. /package/dist/{chunk-6W2D6FGG.js.map → chunk-TGAHHCB6.js.map} +0 -0
  298. /package/dist/{chunk-D75JXBV4.js.map → chunk-WN4GHSDH.js.map} +0 -0
  299. /package/dist/{chunk-K4DWSPMW.js.map → chunk-WRGPE6AW.js.map} +0 -0
  300. /package/dist/{chunk-SDPDU2PM.js.map → chunk-YTMDF6S7.js.map} +0 -0
  301. /package/dist/{chunk-MNU5G4TK.js.map → chunk-Z7XEIAV4.js.map} +0 -0
  302. /package/dist/{chunk-HXHKLVAS.js.map → chunk-ZCEI242W.js.map} +0 -0
package/dist/storage.js CHANGED
@@ -8,7 +8,7 @@ import {
8
8
  normalizeEntityName,
9
9
  parseEntityFile,
10
10
  serializeEntityFile
11
- } from "./chunk-SFMRLXIV.js";
11
+ } from "./chunk-GFIARMA7.js";
12
12
  import "./chunk-3JJWNZTT.js";
13
13
  import "./chunk-M7XQSUBB.js";
14
14
  import "./chunk-5UZXUTVO.js";
@@ -20,7 +20,7 @@ import {
20
20
  } from "./chunk-SVOZFLIQ.js";
21
21
  import "./chunk-LTJAMRGI.js";
22
22
  import "./chunk-J6A3CX5N.js";
23
- import "./chunk-IKNQAGBV.js";
23
+ import "./chunk-IX3UQT4H.js";
24
24
  import "./chunk-SCU65EZI.js";
25
25
  import "./chunk-MB5RSUW6.js";
26
26
  import "./chunk-6KYMPV2O.js";
@@ -29,7 +29,6 @@ import "./chunk-42JKGUFJ.js";
29
29
  import "./chunk-RULE4VG5.js";
30
30
  import "./chunk-LDXUBPMO.js";
31
31
  import "./chunk-DM2T26WE.js";
32
- import "./chunk-FVQJYWH7.js";
33
32
  import "./chunk-FEB7W5JG.js";
34
33
  import "./chunk-G7D6GZ5J.js";
35
34
  import "./chunk-VF4XKTX3.js";
@@ -43,11 +42,13 @@ import "./chunk-J2HSAU72.js";
43
42
  import "./chunk-A6XUJE5D.js";
44
43
  import "./chunk-P7FMDTKL.js";
45
44
  import "./chunk-VS2IYZRU.js";
46
- import "./chunk-ZPQVJEVQ.js";
45
+ import "./chunk-SK2CR6MW.js";
46
+ import "./chunk-FVQJYWH7.js";
47
47
  import "./chunk-4DJQYKMN.js";
48
48
  import "./chunk-EYIEWJNI.js";
49
49
  import "./chunk-JUC24CTX.js";
50
50
  import "./chunk-NU3CSQ4H.js";
51
+ import "./chunk-6MKAMLQL.js";
51
52
  import "./chunk-PZ5AY32C.js";
52
53
  export {
53
54
  ContentHashIndex,
@@ -1,5 +1,5 @@
1
1
  import { ModelRegistry } from './model-registry.js';
2
- import { P as PluginConfig, G as GatewayConfig, T as TranscriptEntry, H as HourlySummary } from './types-PuiPZ9iE.js';
2
+ import { P as PluginConfig, G as GatewayConfig, T as TranscriptEntry, H as HourlySummary } from './types-MWKPZnM0.js';
3
3
  import { TranscriptManager } from './transcript.js';
4
4
  import './types-ByK7T3L6.js';
5
5
  import './index-DJ9QWMw-.js';
@@ -1,4 +1,4 @@
1
- import { H as HourlySummary } from './types-PuiPZ9iE.js';
1
+ import { H as HourlySummary } from './types-MWKPZnM0.js';
2
2
  import './types-ByK7T3L6.js';
3
3
  import './index-DJ9QWMw-.js';
4
4
 
@@ -1,8 +1,9 @@
1
1
  import {
2
2
  buildTargetedFactRecallSection,
3
3
  shouldRecallTargetedFactEvidence
4
- } from "./chunk-R5DB26G6.js";
4
+ } from "./chunk-4SBW47WK.js";
5
5
  import "./chunk-YVVQUAOO.js";
6
+ import "./chunk-LUPVCGYK.js";
6
7
  import "./chunk-PYPOFEMK.js";
7
8
  import "./chunk-PZ5AY32C.js";
8
9
  export {
@@ -1,4 +1,4 @@
1
- import { k as MemoryFrontmatter } from './types-PuiPZ9iE.js';
1
+ import { k as MemoryFrontmatter } from './types-MWKPZnM0.js';
2
2
  import { StorageManager } from './storage.js';
3
3
  import './types-ByK7T3L6.js';
4
4
  import './index-DJ9QWMw-.js';
@@ -1,4 +1,4 @@
1
- import { k as MemoryFrontmatter } from './types-PuiPZ9iE.js';
1
+ import { k as MemoryFrontmatter } from './types-MWKPZnM0.js';
2
2
  import './types-ByK7T3L6.js';
3
3
  import './index-DJ9QWMw-.js';
4
4
 
@@ -1,4 +1,4 @@
1
- import { u as BufferTurn, am as ConversationThread } from './types-PuiPZ9iE.js';
1
+ import { u as BufferTurn, am as ConversationThread } from './types-MWKPZnM0.js';
2
2
  import './types-ByK7T3L6.js';
3
3
  import './index-DJ9QWMw-.js';
4
4
 
@@ -1,4 +1,4 @@
1
- import { g as MemoryFile } from './types-PuiPZ9iE.js';
1
+ import { g as MemoryFile } from './types-MWKPZnM0.js';
2
2
  import { StorageManager } from './storage.js';
3
3
  import { MemoryTier } from './tier-routing.js';
4
4
  import { SearchBackend } from './search/port.js';
@@ -1,4 +1,4 @@
1
- import { g as MemoryFile } from './types-PuiPZ9iE.js';
1
+ import { g as MemoryFile } from './types-MWKPZnM0.js';
2
2
  import { LifecycleSignals } from './lifecycle.js';
3
3
  import './types-ByK7T3L6.js';
4
4
  import './index-DJ9QWMw-.js';
package/dist/topics.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { g as MemoryFile, an as TopicScore } from './types-PuiPZ9iE.js';
1
+ import { g as MemoryFile, an as TopicScore } from './types-MWKPZnM0.js';
2
2
  import './types-ByK7T3L6.js';
3
3
  import './index-DJ9QWMw-.js';
4
4
 
@@ -1,4 +1,4 @@
1
- import { P as PluginConfig, T as TranscriptEntry, v as Checkpoint } from './types-PuiPZ9iE.js';
1
+ import { P as PluginConfig, T as TranscriptEntry, v as Checkpoint } from './types-MWKPZnM0.js';
2
2
  import { SessionIntegrityReport } from './session-integrity.js';
3
3
  import './types-ByK7T3L6.js';
4
4
  import './index-DJ9QWMw-.js';
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  TranscriptManager,
3
3
  utcDayRange
4
- } from "./chunk-PONNZ54D.js";
5
- import "./chunk-S4DDLTPX.js";
4
+ } from "./chunk-GY3SKOS4.js";
6
5
  import "./chunk-KFY3SGN7.js";
6
+ import "./chunk-S4DDLTPX.js";
7
7
  import "./chunk-FF4KLI5W.js";
8
8
  import "./chunk-NU3CSQ4H.js";
9
9
  import "./chunk-PZ5AY32C.js";
@@ -313,13 +313,13 @@ declare const CapsuleBlockSchema: z.ZodObject<{
313
313
  peerProfiles: boolean;
314
314
  }>;
315
315
  }, "strip", z.ZodTypeAny, {
316
- schemaVersion: string;
317
316
  includes: {
318
317
  procedural: boolean;
319
318
  taxonomy: boolean;
320
319
  identityAnchors: boolean;
321
320
  peerProfiles: boolean;
322
321
  };
322
+ schemaVersion: string;
323
323
  id: string;
324
324
  description: string;
325
325
  version: string;
@@ -334,13 +334,13 @@ declare const CapsuleBlockSchema: z.ZodObject<{
334
334
  directAnswerEnabled: boolean;
335
335
  };
336
336
  }, {
337
- schemaVersion: string;
338
337
  includes: {
339
338
  procedural: boolean;
340
339
  taxonomy: boolean;
341
340
  identityAnchors: boolean;
342
341
  peerProfiles: boolean;
343
342
  };
343
+ schemaVersion: string;
344
344
  id: string;
345
345
  description: string;
346
346
  version: string;
@@ -464,13 +464,13 @@ declare const ExportManifestV2Schema: z.ZodObject<{
464
464
  peerProfiles: boolean;
465
465
  }>;
466
466
  }, "strip", z.ZodTypeAny, {
467
- schemaVersion: string;
468
467
  includes: {
469
468
  procedural: boolean;
470
469
  taxonomy: boolean;
471
470
  identityAnchors: boolean;
472
471
  peerProfiles: boolean;
473
472
  };
473
+ schemaVersion: string;
474
474
  id: string;
475
475
  description: string;
476
476
  version: string;
@@ -485,13 +485,13 @@ declare const ExportManifestV2Schema: z.ZodObject<{
485
485
  directAnswerEnabled: boolean;
486
486
  };
487
487
  }, {
488
- schemaVersion: string;
489
488
  includes: {
490
489
  procedural: boolean;
491
490
  taxonomy: boolean;
492
491
  identityAnchors: boolean;
493
492
  peerProfiles: boolean;
494
493
  };
494
+ schemaVersion: string;
495
495
  id: string;
496
496
  description: string;
497
497
  version: string;
@@ -518,13 +518,13 @@ declare const ExportManifestV2Schema: z.ZodObject<{
518
518
  pluginVersion: string;
519
519
  includesTranscripts: boolean;
520
520
  capsule: {
521
- schemaVersion: string;
522
521
  includes: {
523
522
  procedural: boolean;
524
523
  taxonomy: boolean;
525
524
  identityAnchors: boolean;
526
525
  peerProfiles: boolean;
527
526
  };
527
+ schemaVersion: string;
528
528
  id: string;
529
529
  description: string;
530
530
  version: string;
@@ -551,13 +551,13 @@ declare const ExportManifestV2Schema: z.ZodObject<{
551
551
  pluginVersion: string;
552
552
  includesTranscripts: boolean;
553
553
  capsule: {
554
- schemaVersion: string;
555
554
  includes: {
556
555
  procedural: boolean;
557
556
  taxonomy: boolean;
558
557
  identityAnchors: boolean;
559
558
  peerProfiles: boolean;
560
559
  };
560
+ schemaVersion: string;
561
561
  id: string;
562
562
  description: string;
563
563
  version: string;
@@ -683,13 +683,13 @@ declare const ExportBundleV2Schema: z.ZodObject<{
683
683
  peerProfiles: boolean;
684
684
  }>;
685
685
  }, "strip", z.ZodTypeAny, {
686
- schemaVersion: string;
687
686
  includes: {
688
687
  procedural: boolean;
689
688
  taxonomy: boolean;
690
689
  identityAnchors: boolean;
691
690
  peerProfiles: boolean;
692
691
  };
692
+ schemaVersion: string;
693
693
  id: string;
694
694
  description: string;
695
695
  version: string;
@@ -704,13 +704,13 @@ declare const ExportBundleV2Schema: z.ZodObject<{
704
704
  directAnswerEnabled: boolean;
705
705
  };
706
706
  }, {
707
- schemaVersion: string;
708
707
  includes: {
709
708
  procedural: boolean;
710
709
  taxonomy: boolean;
711
710
  identityAnchors: boolean;
712
711
  peerProfiles: boolean;
713
712
  };
713
+ schemaVersion: string;
714
714
  id: string;
715
715
  description: string;
716
716
  version: string;
@@ -737,13 +737,13 @@ declare const ExportBundleV2Schema: z.ZodObject<{
737
737
  pluginVersion: string;
738
738
  includesTranscripts: boolean;
739
739
  capsule: {
740
- schemaVersion: string;
741
740
  includes: {
742
741
  procedural: boolean;
743
742
  taxonomy: boolean;
744
743
  identityAnchors: boolean;
745
744
  peerProfiles: boolean;
746
745
  };
746
+ schemaVersion: string;
747
747
  id: string;
748
748
  description: string;
749
749
  version: string;
@@ -770,13 +770,13 @@ declare const ExportBundleV2Schema: z.ZodObject<{
770
770
  pluginVersion: string;
771
771
  includesTranscripts: boolean;
772
772
  capsule: {
773
- schemaVersion: string;
774
773
  includes: {
775
774
  procedural: boolean;
776
775
  taxonomy: boolean;
777
776
  identityAnchors: boolean;
778
777
  peerProfiles: boolean;
779
778
  };
779
+ schemaVersion: string;
780
780
  id: string;
781
781
  description: string;
782
782
  version: string;
@@ -819,13 +819,13 @@ declare const ExportBundleV2Schema: z.ZodObject<{
819
819
  pluginVersion: string;
820
820
  includesTranscripts: boolean;
821
821
  capsule: {
822
- schemaVersion: string;
823
822
  includes: {
824
823
  procedural: boolean;
825
824
  taxonomy: boolean;
826
825
  identityAnchors: boolean;
827
826
  peerProfiles: boolean;
828
827
  };
828
+ schemaVersion: string;
829
829
  id: string;
830
830
  description: string;
831
831
  version: string;
@@ -858,13 +858,13 @@ declare const ExportBundleV2Schema: z.ZodObject<{
858
858
  pluginVersion: string;
859
859
  includesTranscripts: boolean;
860
860
  capsule: {
861
- schemaVersion: string;
862
861
  includes: {
863
862
  procedural: boolean;
864
863
  taxonomy: boolean;
865
864
  identityAnchors: boolean;
866
865
  peerProfiles: boolean;
867
866
  };
867
+ schemaVersion: string;
868
868
  id: string;
869
869
  description: string;
870
870
  version: string;
@@ -2946,6 +2946,30 @@ interface ExtractedFact {
2946
2946
  * "no verified span" and skip gracefully.
2947
2947
  */
2948
2948
  sources?: ProvenanceSource[];
2949
+ /**
2950
+ * Coarse provenance strength tag (issue #1575 PR 2). Set by the extraction
2951
+ * validator: "verified" when the quote was located in source turns,
2952
+ * "unverified" when the quote survived but no offsets were recoverable.
2953
+ * Absent when `provenance.enabled` is false or no quote was provided —
2954
+ * readers treat absent as "none" (rule 34 spirit).
2955
+ */
2956
+ provenance?: "verified" | "unverified" | "none";
2957
+ /**
2958
+ * Transient LLM-provided supporting quote (issue #1575 PR 2). Consumed by
2959
+ * the post-parse validator to build `sources`, then stripped before the
2960
+ * fact reaches persistence. NEVER included in content-hash dedup (rule 23 /
2961
+ * checklist §13). Absent on facts that have already passed the validator.
2962
+ */
2963
+ quote?: string;
2964
+ /**
2965
+ * Transient requireSpans signal (issue #1575 PR 2). Set by the provenance
2966
+ * validator (`ProvenanceBuildResult.requireSpansPending`) when
2967
+ * `provenance.requireSpans` is enabled and the quote could not be located
2968
+ * in any source turn. Read by the persist path to route the fact to
2969
+ * `pending_review` instead of `active`. Stripped before persistence —
2970
+ * it never reaches frontmatter (chatgpt-codex-connector thread 4xB).
2971
+ */
2972
+ requireSpansPending?: boolean;
2949
2973
  promptedByQuestion?: string;
2950
2974
  /**
2951
2975
  * Whether this fact is project-scoped or globally applicable.
@@ -3455,4 +3479,4 @@ interface HourlySummary {
3455
3479
  generatedAt: string;
3456
3480
  }
3457
3481
 
3458
- export { type EntityStructuredSection as $, type ActiveRecallChatType as A, type BehaviorSignalEvent as B, type CalendarSource as C, type SecretRef as D, type EntityFile as E, type FaithfulnessFrontmatter as F, type GatewayConfig as G, type HourlySummary as H, type IdentityInjectionMode as I, type AgentAccessAuthToken as J, type CompressionGuidelineOptimizerEventCounts as K, type LiveConnectorsConfig as L, type MemoryCategory as M, type CompressionGuidelineOptimizerActionSummary as N, type CompressionGuidelineOptimizerRuleUpdate as O, type PluginConfig as P, type QmdSearchResult as Q, type RecallTierExplain as R, type SessionObserverBandConfig as S, type TranscriptEntry as T, type MemoryActionType as U, type VerificationState as V, type MemoryActionEvent as W, type CompressionGuidelineOptimizerState as X, type EntityMention as Y, type EntitySchemaDefinition as Z, type EntitySchemaSectionDefinition as _, type ActiveRecallQueryMode as a, type MemoryScope as a$, type ExtractionResult as a0, type ConsolidationResult as a1, type DaySummaryResult as a2, type ContinuityIncidentRecord as a3, type ContinuityIncidentCloseInput as a4, type ContinuityIncidentOpenInput as a5, type ContinuityImprovementLoop as a6, type ContinuityLoopReviewInput as a7, type ContinuityLoopUpsertInput as a8, type ImportanceScore as a9, type DreamsRunResult as aA, type WearableConversation as aB, type WearableSourceSettings as aC, type WearableNativeMemory as aD, type WearableMemoryMode as aE, type WearableSourceConnector as aF, type WearablesConfig as aG, type WearableSyncSummary as aH, type WearableSourceStatus as aI, type WearableDayTranscript as aJ, type WearableCorrectionRule as aK, type CodingContext as aL, type BootstrapOptions as aM, type BootstrapResult as aN, type ConsolidationObservation as aO, type EntityTimelineEntry as aP, type CodingModeConfig as aQ, type WearableCleanupSettings as aR, type WearableDayTranscriptMeta as aS, type BriefingConfig as aT, type BriefingOpenCommitment as aU, type BriefingWindow as aV, type CodexCompatConfig as aW, DEFAULT_RECALL_DISCLOSURE as aX, type ExtractedFact as aY, type MemoryActionEligibilitySource as aZ, type MemoryObservation as a_, type MemoryIntent as aa, type QmdSearchExplain as ab, type MemoryActionEligibilityContext as ac, type MemoryActionPolicyResult as ad, type MemoryLifecycleEventType as ae, type MemoryLifecycleStateSummary as af, type ModelProviderConfig as ag, type NativeKnowledgeConfig as ah, type ProvenanceConfig as ai, type ProvenanceSource as aj, type RetrievalTier as ak, type SignalScanResult as al, type ConversationThread as am, type TopicScore as an, type MemoryLink as ao, type BufferState as ap, type MetaState as aq, type FileHygieneConfig as ar, type EntityRelationship as as, type EntityActivityEntry as at, type AccessTrackingEntry as au, type MemorySummary as av, type ScopeProfileLayerId as aw, type ScopeProfilePromotionTarget as ax, type DreamsStatusResult as ay, type DreamsPhase as az, type ActiveRecallPromptStyle as b, type NativeKnowledgeOpenClawWorkspaceConfig as b$, RECALL_DISCLOSURE_LEVELS as b0, type WearableAuthCheck as b1, type WearableFetchOptions as b2, type WearableFetchPage as b3, type WearableNativeMemoryPage as b4, type WearableTranscriptSegment as b5, isRecallDisclosure as b6, type AgentAccessHttpConfig as b7, type AgentDefaultsConfig as b8, type AgentPersona as b9, type DreamsPhasesConfig as bA, type DreamsRemConfig as bB, type EngramTraceEvent as bC, type ExtractedProcedureStep as bD, type ExtractedQuestion as bE, type ExtractedReasoningTrace as bF, type ExtractedReasoningTraceStep as bG, type ExtractedRelationship as bH, type ExtractionPassSource as bI, type GitHubLiveConnectorConfig as bJ, type GmailLiveConnectorConfig as bK, type GoogleDriveLiveConnectorConfig as bL, type HeartbeatConfig as bM, type HeartbeatDetectionMode as bN, type LlmTraceCallback as bO, type LlmTraceEvent as bP, type MemoryActionOutcome as bQ, type MemoryActionPolicyDecision as bR, type MemoryActionStatus as bS, type MemoryLinkType as bT, type MemoryOsPresetName as bU, type ModelApi as bV, type ModelDefinitionConfig as bW, type ModelProviderAuthMode as bX, type NamespacePolicy as bY, type NativeKnowledgeFolderRuleConfig as bZ, type NativeKnowledgeObsidianVaultConfig as b_, type BehaviorLoopAdjustment as ba, type BehaviorSignalDirection as bb, type BehaviorSignalType as bc, type BriefingCalendarSourceError as bd, type BufferEntryState as be, type CaptureMode as bf, type CodexCliReasoningEffort as bg, type CodexCompactionFlushMode as bh, type CodexConnectorConfig as bi, type CodingKnowledgeConfig as bj, type CompressionGuidelineActivationState as bk, type CompressionGuidelineOptimizerSourceWindow as bl, type ConfidenceTier as bm, type ConsolidationAction as bn, type ConsolidationItem as bo, type ContinuityIncidentState as bp, type ContinuityLoopCadence as bq, type ContinuityLoopStatus as br, type ContradictionScanConfig as bs, type CronConversationRecallMode as bt, type CronRecallMode as bu, type DreamingConfig as bv, type DreamingNarrativePromptStyle as bw, type DreamsDeepSleepConfig as bx, type DreamsLightSleepConfig as by, type DreamsPhaseStatus as bz, type ActiveRecallThinking as c, type NotionLiveConnectorConfig as c0, type PrincipalFromSessionKeyMode as c1, type PrincipalRule as c2, type ProceduralConfig as c3, type QuestionEntry as c4, type ReasoningEffort as c5, type RecallPipelineConfig as c6, type RecallSectionConfig as c7, type RecallTraceEvent as c8, type RelevanceFeedback as c9, SPECULATIVE_TTL_DAYS as ca, type ScopeProfileAutoPromoteConfig as cb, type ScopeProfileConfig as cc, type ScopeProfileTeamProjectConfig as cd, type ScopeTeamConfig as ce, type ScoredEntity as cf, type SemanticChunkingConfigShape as cg, type SignalLevel as ch, type SlotBehaviorConfig as ci, type SlotMismatchMode as cj, type TriggerMode as ck, confidenceTier as cl, type ActiveRecallModelFallbackPolicy as d, type BehaviorLoopPolicyState as e, type AgentPersonaModelConfig as f, type MemoryFile as g, type MemoryStatus as h, type RecallPlanMode as i, type RecallDisclosure as j, type MemoryFrontmatter as k, type MemoryProjectionCurrentState as l, type MemoryLifecycleEvent as m, type BriefingSections as n, type BriefingFollowup as o, type BriefingFocus as p, type CalendarEvent as q, type BriefingActiveThread as r, type BriefingResult as s, type BriefingRecentEntity as t, type BufferTurn as u, type Checkpoint as v, type LifecycleState as w, type PolicyClass as x, type ImportanceLevel as y, type BufferSurpriseEvent as z };
3482
+ export { type EntityStructuredSection as $, type ActiveRecallChatType as A, type BehaviorSignalEvent as B, type CalendarSource as C, type SecretRef as D, type EntityFile as E, type FaithfulnessFrontmatter as F, type GatewayConfig as G, type HourlySummary as H, type IdentityInjectionMode as I, type AgentAccessAuthToken as J, type CompressionGuidelineOptimizerEventCounts as K, type LiveConnectorsConfig as L, type MemoryCategory as M, type CompressionGuidelineOptimizerActionSummary as N, type CompressionGuidelineOptimizerRuleUpdate as O, type PluginConfig as P, type QmdSearchResult as Q, type RecallTierExplain as R, type SessionObserverBandConfig as S, type TranscriptEntry as T, type MemoryActionType as U, type VerificationState as V, type MemoryActionEvent as W, type CompressionGuidelineOptimizerState as X, type EntityMention as Y, type EntitySchemaDefinition as Z, type EntitySchemaSectionDefinition as _, type ActiveRecallQueryMode as a, type MemoryObservation as a$, type ExtractionResult as a0, type ConsolidationResult as a1, type DaySummaryResult as a2, type ContinuityIncidentRecord as a3, type ContinuityIncidentCloseInput as a4, type ContinuityIncidentOpenInput as a5, type ContinuityImprovementLoop as a6, type ContinuityLoopReviewInput as a7, type ContinuityLoopUpsertInput as a8, type ImportanceScore as a9, type WearableSourceConnector as aA, type WearablesConfig as aB, type WearableSyncSummary as aC, type WearableSourceStatus as aD, type WearableDayTranscript as aE, type WearableCorrectionRule as aF, type CodingContext as aG, type BootstrapOptions as aH, type BootstrapResult as aI, type ConsolidationObservation as aJ, type EntityTimelineEntry as aK, type ScopeProfileLayerId as aL, type ScopeProfilePromotionTarget as aM, type ScopeProfileConfig as aN, type DreamsStatusResult as aO, type DreamsPhase as aP, type DreamsRunResult as aQ, type CodingModeConfig as aR, type WearableCleanupSettings as aS, type WearableDayTranscriptMeta as aT, type BriefingConfig as aU, type BriefingOpenCommitment as aV, type BriefingWindow as aW, type CodexCompatConfig as aX, DEFAULT_RECALL_DISCLOSURE as aY, type ExtractedFact as aZ, type MemoryActionEligibilitySource as a_, type MemoryIntent as aa, type QmdSearchExplain as ab, type MemoryActionEligibilityContext as ac, type MemoryActionPolicyResult as ad, type MemoryLifecycleEventType as ae, type MemoryLifecycleStateSummary as af, type ModelProviderConfig as ag, type NativeKnowledgeConfig as ah, type ProvenanceSource as ai, type ProvenanceConfig as aj, type RetrievalTier as ak, type SignalScanResult as al, type ConversationThread as am, type TopicScore as an, type MemoryLink as ao, type BufferState as ap, type MetaState as aq, type FileHygieneConfig as ar, type EntityRelationship as as, type EntityActivityEntry as at, type AccessTrackingEntry as au, type MemorySummary as av, type WearableConversation as aw, type WearableSourceSettings as ax, type WearableNativeMemory as ay, type WearableMemoryMode as az, type ActiveRecallPromptStyle as b, type NativeKnowledgeObsidianVaultConfig as b$, type MemoryScope as b0, RECALL_DISCLOSURE_LEVELS as b1, type WearableAuthCheck as b2, type WearableFetchOptions as b3, type WearableFetchPage as b4, type WearableNativeMemoryPage as b5, type WearableTranscriptSegment as b6, isRecallDisclosure as b7, type AgentAccessHttpConfig as b8, type AgentDefaultsConfig as b9, type DreamsPhaseStatus as bA, type DreamsPhasesConfig as bB, type DreamsRemConfig as bC, type EngramTraceEvent as bD, type ExtractedProcedureStep as bE, type ExtractedQuestion as bF, type ExtractedReasoningTrace as bG, type ExtractedReasoningTraceStep as bH, type ExtractedRelationship as bI, type ExtractionPassSource as bJ, type GitHubLiveConnectorConfig as bK, type GmailLiveConnectorConfig as bL, type GoogleDriveLiveConnectorConfig as bM, type HeartbeatConfig as bN, type HeartbeatDetectionMode as bO, type LlmTraceCallback as bP, type LlmTraceEvent as bQ, type MemoryActionOutcome as bR, type MemoryActionPolicyDecision as bS, type MemoryActionStatus as bT, type MemoryLinkType as bU, type MemoryOsPresetName as bV, type ModelApi as bW, type ModelDefinitionConfig as bX, type ModelProviderAuthMode as bY, type NamespacePolicy as bZ, type NativeKnowledgeFolderRuleConfig as b_, type AgentPersona as ba, type BehaviorLoopAdjustment as bb, type BehaviorSignalDirection as bc, type BehaviorSignalType as bd, type BriefingCalendarSourceError as be, type BufferEntryState as bf, type CaptureMode as bg, type CodexCliReasoningEffort as bh, type CodexCompactionFlushMode as bi, type CodexConnectorConfig as bj, type CodingKnowledgeConfig as bk, type CompressionGuidelineActivationState as bl, type CompressionGuidelineOptimizerSourceWindow as bm, type ConfidenceTier as bn, type ConsolidationAction as bo, type ConsolidationItem as bp, type ContinuityIncidentState as bq, type ContinuityLoopCadence as br, type ContinuityLoopStatus as bs, type ContradictionScanConfig as bt, type CronConversationRecallMode as bu, type CronRecallMode as bv, type DreamingConfig as bw, type DreamingNarrativePromptStyle as bx, type DreamsDeepSleepConfig as by, type DreamsLightSleepConfig as bz, type ActiveRecallThinking as c, type NativeKnowledgeOpenClawWorkspaceConfig as c0, type NotionLiveConnectorConfig as c1, type PrincipalFromSessionKeyMode as c2, type PrincipalRule as c3, type ProceduralConfig as c4, type QuestionEntry as c5, type ReasoningEffort as c6, type RecallPipelineConfig as c7, type RecallSectionConfig as c8, type RecallTraceEvent as c9, type RelevanceFeedback as ca, SPECULATIVE_TTL_DAYS as cb, type ScopeProfileAutoPromoteConfig as cc, type ScopeProfileTeamProjectConfig as cd, type ScopeTeamConfig as ce, type ScoredEntity as cf, type SemanticChunkingConfigShape as cg, type SignalLevel as ch, type SlotBehaviorConfig as ci, type SlotMismatchMode as cj, type TriggerMode as ck, confidenceTier as cl, type ActiveRecallModelFallbackPolicy as d, type BehaviorLoopPolicyState as e, type AgentPersonaModelConfig as f, type MemoryFile as g, type MemoryStatus as h, type RecallPlanMode as i, type RecallDisclosure as j, type MemoryFrontmatter as k, type MemoryProjectionCurrentState as l, type MemoryLifecycleEvent as m, type BriefingSections as n, type BriefingFollowup as o, type BriefingFocus as p, type CalendarEvent as q, type BriefingActiveThread as r, type BriefingResult as s, type BriefingRecentEntity as t, type BufferTurn as u, type Checkpoint as v, type LifecycleState as w, type PolicyClass as x, type ImportanceLevel as y, type BufferSurpriseEvent as z };
package/dist/types.d.ts CHANGED
@@ -1,3 +1,3 @@
1
1
  import './types-ByK7T3L6.js';
2
2
  import './index-DJ9QWMw-.js';
3
- export { au as AccessTrackingEntry, A as ActiveRecallChatType, d as ActiveRecallModelFallbackPolicy, b as ActiveRecallPromptStyle, a as ActiveRecallQueryMode, c as ActiveRecallThinking, J as AgentAccessAuthToken, b7 as AgentAccessHttpConfig, b8 as AgentDefaultsConfig, b9 as AgentPersona, f as AgentPersonaModelConfig, ba as BehaviorLoopAdjustment, e as BehaviorLoopPolicyState, bb as BehaviorSignalDirection, B as BehaviorSignalEvent, bc as BehaviorSignalType, aM as BootstrapOptions, aN as BootstrapResult, r as BriefingActiveThread, bd as BriefingCalendarSourceError, aT as BriefingConfig, p as BriefingFocus, o as BriefingFollowup, aU as BriefingOpenCommitment, t as BriefingRecentEntity, s as BriefingResult, n as BriefingSections, aV as BriefingWindow, be as BufferEntryState, ap as BufferState, z as BufferSurpriseEvent, u as BufferTurn, q as CalendarEvent, C as CalendarSource, bf as CaptureMode, v as Checkpoint, bg as CodexCliReasoningEffort, bh as CodexCompactionFlushMode, aW as CodexCompatConfig, bi as CodexConnectorConfig, aL as CodingContext, bj as CodingKnowledgeConfig, aQ as CodingModeConfig, bk as CompressionGuidelineActivationState, N as CompressionGuidelineOptimizerActionSummary, K as CompressionGuidelineOptimizerEventCounts, O as CompressionGuidelineOptimizerRuleUpdate, bl as CompressionGuidelineOptimizerSourceWindow, X as CompressionGuidelineOptimizerState, bm as ConfidenceTier, bn as ConsolidationAction, bo as ConsolidationItem, aO as ConsolidationObservation, a1 as ConsolidationResult, a6 as ContinuityImprovementLoop, a4 as ContinuityIncidentCloseInput, a5 as ContinuityIncidentOpenInput, a3 as ContinuityIncidentRecord, bp as ContinuityIncidentState, bq as ContinuityLoopCadence, a7 as ContinuityLoopReviewInput, br as ContinuityLoopStatus, a8 as ContinuityLoopUpsertInput, bs as ContradictionScanConfig, am as ConversationThread, bt as CronConversationRecallMode, bu as CronRecallMode, aX as DEFAULT_RECALL_DISCLOSURE, a2 as DaySummaryResult, bv as DreamingConfig, bw as DreamingNarrativePromptStyle, bx as DreamsDeepSleepConfig, by as DreamsLightSleepConfig, az as DreamsPhase, bz as DreamsPhaseStatus, bA as DreamsPhasesConfig, bB as DreamsRemConfig, aA as DreamsRunResult, ay as DreamsStatusResult, bC as EngramTraceEvent, at as EntityActivityEntry, E as EntityFile, Y as EntityMention, as as EntityRelationship, Z as EntitySchemaDefinition, _ as EntitySchemaSectionDefinition, $ as EntityStructuredSection, aP as EntityTimelineEntry, aY as ExtractedFact, bD as ExtractedProcedureStep, bE as ExtractedQuestion, bF as ExtractedReasoningTrace, bG as ExtractedReasoningTraceStep, bH as ExtractedRelationship, bI as ExtractionPassSource, a0 as ExtractionResult, F as FaithfulnessFrontmatter, ar as FileHygieneConfig, G as GatewayConfig, bJ as GitHubLiveConnectorConfig, bK as GmailLiveConnectorConfig, bL as GoogleDriveLiveConnectorConfig, bM as HeartbeatConfig, bN as HeartbeatDetectionMode, H as HourlySummary, I as IdentityInjectionMode, y as ImportanceLevel, a9 as ImportanceScore, w as LifecycleState, L as LiveConnectorsConfig, bO as LlmTraceCallback, bP as LlmTraceEvent, ac as MemoryActionEligibilityContext, aZ as MemoryActionEligibilitySource, W as MemoryActionEvent, bQ as MemoryActionOutcome, bR as MemoryActionPolicyDecision, ad as MemoryActionPolicyResult, bS as MemoryActionStatus, U as MemoryActionType, M as MemoryCategory, g as MemoryFile, k as MemoryFrontmatter, aa as MemoryIntent, m as MemoryLifecycleEvent, ae as MemoryLifecycleEventType, af as MemoryLifecycleStateSummary, ao as MemoryLink, bT as MemoryLinkType, a_ as MemoryObservation, bU as MemoryOsPresetName, l as MemoryProjectionCurrentState, a$ as MemoryScope, h as MemoryStatus, av as MemorySummary, aq as MetaState, bV as ModelApi, bW as ModelDefinitionConfig, bX as ModelProviderAuthMode, ag as ModelProviderConfig, bY as NamespacePolicy, ah as NativeKnowledgeConfig, bZ as NativeKnowledgeFolderRuleConfig, b_ as NativeKnowledgeObsidianVaultConfig, b$ as NativeKnowledgeOpenClawWorkspaceConfig, c0 as NotionLiveConnectorConfig, P as PluginConfig, x as PolicyClass, c1 as PrincipalFromSessionKeyMode, c2 as PrincipalRule, c3 as ProceduralConfig, ai as ProvenanceConfig, aj as ProvenanceSource, ab as QmdSearchExplain, Q as QmdSearchResult, c4 as QuestionEntry, b0 as RECALL_DISCLOSURE_LEVELS, c5 as ReasoningEffort, j as RecallDisclosure, c6 as RecallPipelineConfig, i as RecallPlanMode, c7 as RecallSectionConfig, R as RecallTierExplain, c8 as RecallTraceEvent, c9 as RelevanceFeedback, ak as RetrievalTier, ca as SPECULATIVE_TTL_DAYS, cb as ScopeProfileAutoPromoteConfig, cc as ScopeProfileConfig, aw as ScopeProfileLayerId, ax as ScopeProfilePromotionTarget, cd as ScopeProfileTeamProjectConfig, ce as ScopeTeamConfig, cf as ScoredEntity, D as SecretRef, cg as SemanticChunkingConfigShape, S as SessionObserverBandConfig, ch as SignalLevel, al as SignalScanResult, ci as SlotBehaviorConfig, cj as SlotMismatchMode, an as TopicScore, T as TranscriptEntry, ck as TriggerMode, V as VerificationState, cl as confidenceTier, b6 as isRecallDisclosure } from './types-PuiPZ9iE.js';
3
+ export { au as AccessTrackingEntry, A as ActiveRecallChatType, d as ActiveRecallModelFallbackPolicy, b as ActiveRecallPromptStyle, a as ActiveRecallQueryMode, c as ActiveRecallThinking, J as AgentAccessAuthToken, b8 as AgentAccessHttpConfig, b9 as AgentDefaultsConfig, ba as AgentPersona, f as AgentPersonaModelConfig, bb as BehaviorLoopAdjustment, e as BehaviorLoopPolicyState, bc as BehaviorSignalDirection, B as BehaviorSignalEvent, bd as BehaviorSignalType, aH as BootstrapOptions, aI as BootstrapResult, r as BriefingActiveThread, be as BriefingCalendarSourceError, aU as BriefingConfig, p as BriefingFocus, o as BriefingFollowup, aV as BriefingOpenCommitment, t as BriefingRecentEntity, s as BriefingResult, n as BriefingSections, aW as BriefingWindow, bf as BufferEntryState, ap as BufferState, z as BufferSurpriseEvent, u as BufferTurn, q as CalendarEvent, C as CalendarSource, bg as CaptureMode, v as Checkpoint, bh as CodexCliReasoningEffort, bi as CodexCompactionFlushMode, aX as CodexCompatConfig, bj as CodexConnectorConfig, aG as CodingContext, bk as CodingKnowledgeConfig, aR as CodingModeConfig, bl as CompressionGuidelineActivationState, N as CompressionGuidelineOptimizerActionSummary, K as CompressionGuidelineOptimizerEventCounts, O as CompressionGuidelineOptimizerRuleUpdate, bm as CompressionGuidelineOptimizerSourceWindow, X as CompressionGuidelineOptimizerState, bn as ConfidenceTier, bo as ConsolidationAction, bp as ConsolidationItem, aJ as ConsolidationObservation, a1 as ConsolidationResult, a6 as ContinuityImprovementLoop, a4 as ContinuityIncidentCloseInput, a5 as ContinuityIncidentOpenInput, a3 as ContinuityIncidentRecord, bq as ContinuityIncidentState, br as ContinuityLoopCadence, a7 as ContinuityLoopReviewInput, bs as ContinuityLoopStatus, a8 as ContinuityLoopUpsertInput, bt as ContradictionScanConfig, am as ConversationThread, bu as CronConversationRecallMode, bv as CronRecallMode, aY as DEFAULT_RECALL_DISCLOSURE, a2 as DaySummaryResult, bw as DreamingConfig, bx as DreamingNarrativePromptStyle, by as DreamsDeepSleepConfig, bz as DreamsLightSleepConfig, aP as DreamsPhase, bA as DreamsPhaseStatus, bB as DreamsPhasesConfig, bC as DreamsRemConfig, aQ as DreamsRunResult, aO as DreamsStatusResult, bD as EngramTraceEvent, at as EntityActivityEntry, E as EntityFile, Y as EntityMention, as as EntityRelationship, Z as EntitySchemaDefinition, _ as EntitySchemaSectionDefinition, $ as EntityStructuredSection, aK as EntityTimelineEntry, aZ as ExtractedFact, bE as ExtractedProcedureStep, bF as ExtractedQuestion, bG as ExtractedReasoningTrace, bH as ExtractedReasoningTraceStep, bI as ExtractedRelationship, bJ as ExtractionPassSource, a0 as ExtractionResult, F as FaithfulnessFrontmatter, ar as FileHygieneConfig, G as GatewayConfig, bK as GitHubLiveConnectorConfig, bL as GmailLiveConnectorConfig, bM as GoogleDriveLiveConnectorConfig, bN as HeartbeatConfig, bO as HeartbeatDetectionMode, H as HourlySummary, I as IdentityInjectionMode, y as ImportanceLevel, a9 as ImportanceScore, w as LifecycleState, L as LiveConnectorsConfig, bP as LlmTraceCallback, bQ as LlmTraceEvent, ac as MemoryActionEligibilityContext, a_ as MemoryActionEligibilitySource, W as MemoryActionEvent, bR as MemoryActionOutcome, bS as MemoryActionPolicyDecision, ad as MemoryActionPolicyResult, bT as MemoryActionStatus, U as MemoryActionType, M as MemoryCategory, g as MemoryFile, k as MemoryFrontmatter, aa as MemoryIntent, m as MemoryLifecycleEvent, ae as MemoryLifecycleEventType, af as MemoryLifecycleStateSummary, ao as MemoryLink, bU as MemoryLinkType, a$ as MemoryObservation, bV as MemoryOsPresetName, l as MemoryProjectionCurrentState, b0 as MemoryScope, h as MemoryStatus, av as MemorySummary, aq as MetaState, bW as ModelApi, bX as ModelDefinitionConfig, bY as ModelProviderAuthMode, ag as ModelProviderConfig, bZ as NamespacePolicy, ah as NativeKnowledgeConfig, b_ as NativeKnowledgeFolderRuleConfig, b$ as NativeKnowledgeObsidianVaultConfig, c0 as NativeKnowledgeOpenClawWorkspaceConfig, c1 as NotionLiveConnectorConfig, P as PluginConfig, x as PolicyClass, c2 as PrincipalFromSessionKeyMode, c3 as PrincipalRule, c4 as ProceduralConfig, aj as ProvenanceConfig, ai as ProvenanceSource, ab as QmdSearchExplain, Q as QmdSearchResult, c5 as QuestionEntry, b1 as RECALL_DISCLOSURE_LEVELS, c6 as ReasoningEffort, j as RecallDisclosure, c7 as RecallPipelineConfig, i as RecallPlanMode, c8 as RecallSectionConfig, R as RecallTierExplain, c9 as RecallTraceEvent, ca as RelevanceFeedback, ak as RetrievalTier, cb as SPECULATIVE_TTL_DAYS, cc as ScopeProfileAutoPromoteConfig, aN as ScopeProfileConfig, aL as ScopeProfileLayerId, aM as ScopeProfilePromotionTarget, cd as ScopeProfileTeamProjectConfig, ce as ScopeTeamConfig, cf as ScoredEntity, D as SecretRef, cg as SemanticChunkingConfigShape, S as SessionObserverBandConfig, ch as SignalLevel, al as SignalScanResult, ci as SlotBehaviorConfig, cj as SlotMismatchMode, an as TopicScore, T as TranscriptEntry, ck as TriggerMode, V as VerificationState, cl as confidenceTier, b7 as isRecallDisclosure } from './types-MWKPZnM0.js';
package/dist/types.js CHANGED
@@ -4,7 +4,7 @@ import {
4
4
  SPECULATIVE_TTL_DAYS,
5
5
  confidenceTier,
6
6
  isRecallDisclosure
7
- } from "./chunk-IKNQAGBV.js";
7
+ } from "./chunk-IX3UQT4H.js";
8
8
  import "./chunk-PZ5AY32C.js";
9
9
  export {
10
10
  DEFAULT_RECALL_DISCLOSURE,
@@ -1,5 +1,5 @@
1
1
  import { TierRoutingPolicy } from './tier-routing.js';
2
- import './types-PuiPZ9iE.js';
2
+ import './types-MWKPZnM0.js';
3
3
  import './types-ByK7T3L6.js';
4
4
  import './index-DJ9QWMw-.js';
5
5
  import './lifecycle.js';
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  compareVerifiedEpisodeResults,
3
3
  searchVerifiedEpisodes
4
- } from "./chunk-XTIRCSIH.js";
4
+ } from "./chunk-MXEWQKM7.js";
5
5
  import "./chunk-7FL4CNPV.js";
6
- import "./chunk-SFMRLXIV.js";
6
+ import "./chunk-GFIARMA7.js";
7
7
  import "./chunk-3JJWNZTT.js";
8
8
  import "./chunk-M7XQSUBB.js";
9
9
  import "./chunk-5UZXUTVO.js";
@@ -13,7 +13,7 @@ import "./chunk-IREVVFTM.js";
13
13
  import "./chunk-SVOZFLIQ.js";
14
14
  import "./chunk-LTJAMRGI.js";
15
15
  import "./chunk-J6A3CX5N.js";
16
- import "./chunk-IKNQAGBV.js";
16
+ import "./chunk-IX3UQT4H.js";
17
17
  import "./chunk-SCU65EZI.js";
18
18
  import "./chunk-MB5RSUW6.js";
19
19
  import "./chunk-6KYMPV2O.js";
@@ -22,7 +22,6 @@ import "./chunk-42JKGUFJ.js";
22
22
  import "./chunk-RULE4VG5.js";
23
23
  import "./chunk-LDXUBPMO.js";
24
24
  import "./chunk-DM2T26WE.js";
25
- import "./chunk-FVQJYWH7.js";
26
25
  import "./chunk-FEB7W5JG.js";
27
26
  import "./chunk-G7D6GZ5J.js";
28
27
  import "./chunk-VF4XKTX3.js";
@@ -36,11 +35,13 @@ import "./chunk-J2HSAU72.js";
36
35
  import "./chunk-A6XUJE5D.js";
37
36
  import "./chunk-P7FMDTKL.js";
38
37
  import "./chunk-VS2IYZRU.js";
39
- import "./chunk-ZPQVJEVQ.js";
38
+ import "./chunk-SK2CR6MW.js";
39
+ import "./chunk-FVQJYWH7.js";
40
40
  import "./chunk-4DJQYKMN.js";
41
41
  import "./chunk-EYIEWJNI.js";
42
42
  import "./chunk-JUC24CTX.js";
43
43
  import "./chunk-NU3CSQ4H.js";
44
+ import "./chunk-6MKAMLQL.js";
44
45
  import "./chunk-ZBJMUXZH.js";
45
46
  import "./chunk-PZ5AY32C.js";
46
47
  export {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@remnic/core",
3
- "version": "9.3.701",
3
+ "version": "9.3.703",
4
4
  "description": "Framework-agnostic Remnic memory engine — orchestrator, storage, extraction, search, trust zones",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -2941,7 +2941,7 @@
2941
2941
  "core"
2942
2942
  ],
2943
2943
  "peerDependencies": {
2944
- "@remnic/coding-graph": "^9.3.701"
2944
+ "@remnic/coding-graph": "^9.3.703"
2945
2945
  },
2946
2946
  "peerDependenciesMeta": {
2947
2947
  "@remnic/coding-graph": {
@@ -2114,6 +2114,168 @@ export class EngramAccessHttpServer {
2114
2114
  return;
2115
2115
  }
2116
2116
 
2117
+ // ── Admin console surfaces (issue #1502) ──────────────────────────────
2118
+ //
2119
+ // All five routes live under /engram/v1/admin/* which the access-surface
2120
+ // catalog treats as infrastructure (no boundary migration required; the
2121
+ // static-completeness fitness test excludes this prefix). They still
2122
+ // require bearer auth (enforced above) and delegate to core APIs via the
2123
+ // pure admin-surfaces module — the dashboard never re-resolves scope or
2124
+ // re-lists namespaces.
2125
+ if (pathname.startsWith("/engram/v1/admin/scope/inspect")) {
2126
+ if (req.method !== "GET" && req.method !== "POST") {
2127
+ this.respondJson(res, 405, { error: "method_not_allowed", code: "method_not_allowed" });
2128
+ return;
2129
+ }
2130
+ const principal = this.resolveRequestPrincipal(req);
2131
+ let sessionKey: string | undefined;
2132
+ let namespaceOverride: string | undefined;
2133
+ let operation: string | undefined;
2134
+ if (req.method === "GET") {
2135
+ sessionKey = parsed.searchParams.get("session") ?? undefined;
2136
+ namespaceOverride = parsed.searchParams.get("namespace") ?? undefined;
2137
+ operation = parsed.searchParams.get("operation") ?? undefined;
2138
+ } else {
2139
+ const body = await this.readJsonBody(req) as Record<string, unknown>;
2140
+ sessionKey = typeof body.sessionKey === "string" ? body.sessionKey : undefined;
2141
+ namespaceOverride = typeof body.namespace === "string" ? body.namespace : undefined;
2142
+ operation = typeof body.operation === "string" ? body.operation : undefined;
2143
+ }
2144
+ const inspection = await this.service.adminInspectScope({
2145
+ sessionKey: sessionKey && sessionKey.length > 0 ? sessionKey : undefined,
2146
+ namespace: namespaceOverride && namespaceOverride.length > 0 ? namespaceOverride : undefined,
2147
+ principalOverride: principal,
2148
+ operation: operation as "recall" | "observe" | "memory_store" | "maintenance" | "dashboard" | undefined,
2149
+ });
2150
+ this.respondJson(res, 200, inspection);
2151
+ return;
2152
+ }
2153
+
2154
+ if (pathname === "/engram/v1/admin/namespaces") {
2155
+ if (req.method !== "GET") {
2156
+ this.respondJson(res, 405, { error: "method_not_allowed", code: "method_not_allowed" });
2157
+ return;
2158
+ }
2159
+ const kind = parsed.searchParams.get("kind");
2160
+ const principal = parsed.searchParams.get("principal");
2161
+ const projectId = parsed.searchParams.get("projectId");
2162
+ const discoveredBy = parsed.searchParams.get("discoveredBy");
2163
+ const result = await this.service.adminListNamespaces({
2164
+ ...(kind ? { kind: kind as "default" | "self" | "shared" | "project" | "branch" | "team-project" | "explicit" | "legacy" } : {}),
2165
+ ...(principal && principal.length > 0 ? { principal } : {}),
2166
+ ...(projectId && projectId.length > 0 ? { projectId } : {}),
2167
+ ...(discoveredBy
2168
+ ? { discoveredBy: discoveredBy as "config" | "write" | "read" | "scan" | "migration" }
2169
+ : {}),
2170
+ });
2171
+ this.respondJson(res, 200, result);
2172
+ return;
2173
+ }
2174
+
2175
+ if (pathname === "/engram/v1/admin/maintenance-health") {
2176
+ if (req.method !== "GET") {
2177
+ this.respondJson(res, 405, { error: "method_not_allowed", code: "method_not_allowed" });
2178
+ return;
2179
+ }
2180
+ const report = await this.service.adminMaintenanceHealth();
2181
+ this.respondJson(res, 200, report);
2182
+ return;
2183
+ }
2184
+
2185
+ if (pathname === "/engram/v1/admin/transcript-audit") {
2186
+ if (req.method !== "GET") {
2187
+ this.respondJson(res, 405, { error: "method_not_allowed", code: "method_not_allowed" });
2188
+ return;
2189
+ }
2190
+ const report = await this.service.adminTranscriptAudit();
2191
+ this.respondJson(res, 200, report);
2192
+ return;
2193
+ }
2194
+
2195
+ if (pathname === "/engram/v1/admin/promote") {
2196
+ if (req.method !== "POST") {
2197
+ this.respondJson(res, 405, { error: "method_not_allowed", code: "method_not_allowed" });
2198
+ return;
2199
+ }
2200
+ const body = await this.readJsonBody(req) as Record<string, unknown>;
2201
+ if (typeof body.sourceMemoryId !== "string" || body.sourceMemoryId.trim().length === 0) {
2202
+ this.respondJson(res, 400, {
2203
+ error: "invalid_request",
2204
+ code: "invalid_request",
2205
+ message: "sourceMemoryId is required",
2206
+ });
2207
+ return;
2208
+ }
2209
+ if (typeof body.reason !== "string" || body.reason.trim().length === 0) {
2210
+ this.respondJson(res, 400, {
2211
+ error: "invalid_request",
2212
+ code: "invalid_request",
2213
+ message: "reason is required for promotion",
2214
+ });
2215
+ return;
2216
+ }
2217
+ if (!Array.isArray(body.targets) || body.targets.length === 0) {
2218
+ this.respondJson(res, 400, {
2219
+ error: "invalid_request",
2220
+ code: "invalid_request",
2221
+ message: "targets must be a non-empty array",
2222
+ });
2223
+ return;
2224
+ }
2225
+ const VALID_TARGETS = ["teamProject", "serverShared", "userProject", "userGlobal", "explicit"];
2226
+ const targets = [];
2227
+ for (const entry of body.targets) {
2228
+ if (typeof entry !== "object" || entry === null || typeof entry.kind !== "string") {
2229
+ this.respondJson(res, 400, {
2230
+ error: "invalid_request",
2231
+ code: "invalid_request",
2232
+ message: "each target must be an object with a 'kind' string",
2233
+ });
2234
+ return;
2235
+ }
2236
+ if (!VALID_TARGETS.includes(entry.kind)) {
2237
+ this.respondJson(res, 400, {
2238
+ error: "invalid_request",
2239
+ code: "invalid_request",
2240
+ message: `target.kind must be one of: ${VALID_TARGETS.join(", ")}`,
2241
+ });
2242
+ return;
2243
+ }
2244
+ targets.push({
2245
+ kind: entry.kind as "teamProject" | "serverShared" | "userProject" | "userGlobal" | "explicit",
2246
+ namespace: typeof entry.namespace === "string" ? entry.namespace : undefined,
2247
+ });
2248
+ }
2249
+ try {
2250
+ // Rate-limit the promotion write, matching every other write route
2251
+ // (observe, trust-zone promotion, etc.). The check throws on limit
2252
+ // exceeded; the hit is recorded after the write succeeds.
2253
+ this.ensureWriteRateLimitAvailable();
2254
+ const result = await this.service.adminPromoteMemory({
2255
+ sourceMemoryId: body.sourceMemoryId,
2256
+ namespace: typeof body.namespace === "string" ? body.namespace : undefined,
2257
+ principal: this.resolveRequestPrincipal(req),
2258
+ sessionKey: typeof body.sessionKey === "string" ? body.sessionKey : undefined,
2259
+ targets,
2260
+ reason: body.reason,
2261
+ });
2262
+ // actor is derived from the authenticated principal inside adminPromoteMemory;
2263
+ this.recordWriteRateLimitHit();
2264
+ this.respondJson(res, 200, result);
2265
+ } catch (err) {
2266
+ if (err instanceof EngramAccessInputError) {
2267
+ this.respondJson(res, 400, {
2268
+ error: "invalid_request",
2269
+ code: "invalid_request",
2270
+ message: err.message,
2271
+ });
2272
+ return;
2273
+ }
2274
+ throw err;
2275
+ }
2276
+ return;
2277
+ }
2278
+
2117
2279
  this.respondJson(res, 404, { error: "not_found", code: "not_found" });
2118
2280
  }
2119
2281