@graphrefly/ts 0.0.1 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (333) hide show
  1. package/README.md +197 -117
  2. package/dist/actions-types-CH-XCU9O.d.cts +657 -0
  3. package/dist/actions-types-w2iPQTkv.d.ts +657 -0
  4. package/dist/adapters/index.cjs +5157 -2951
  5. package/dist/adapters/index.cjs.map +1 -1
  6. package/dist/adapters/index.d.cts +207 -70
  7. package/dist/adapters/index.d.ts +207 -70
  8. package/dist/adapters/index.js +3738 -1688
  9. package/dist/adapters/index.js.map +1 -1
  10. package/dist/adapters/nestjs/microservices.cjs +841 -0
  11. package/dist/adapters/nestjs/microservices.cjs.map +1 -0
  12. package/dist/adapters/nestjs/microservices.d.cts +45 -0
  13. package/dist/adapters/nestjs/microservices.d.ts +45 -0
  14. package/dist/adapters/nestjs/microservices.js +206 -0
  15. package/dist/adapters/nestjs/microservices.js.map +1 -0
  16. package/dist/adapters/nestjs/native.cjs +1391 -0
  17. package/dist/adapters/nestjs/native.cjs.map +1 -0
  18. package/dist/adapters/nestjs/native.d.cts +111 -0
  19. package/dist/adapters/nestjs/native.d.ts +111 -0
  20. package/dist/adapters/nestjs/native.js +577 -0
  21. package/dist/adapters/nestjs/native.js.map +1 -0
  22. package/dist/adapters/nestjs/websockets.cjs +924 -0
  23. package/dist/adapters/nestjs/websockets.cjs.map +1 -0
  24. package/dist/adapters/nestjs/websockets.d.cts +47 -0
  25. package/dist/adapters/nestjs/websockets.d.ts +47 -0
  26. package/dist/adapters/nestjs/websockets.js +286 -0
  27. package/dist/adapters/nestjs/websockets.js.map +1 -0
  28. package/dist/adapters/nestjs.cjs +1085 -0
  29. package/dist/adapters/nestjs.cjs.map +1 -0
  30. package/dist/adapters/nestjs.d.cts +385 -0
  31. package/dist/adapters/nestjs.d.ts +385 -0
  32. package/dist/adapters/nestjs.js +112 -0
  33. package/dist/adapters/nestjs.js.map +1 -0
  34. package/dist/adapters/observe-storage.d.cts +3 -3
  35. package/dist/adapters/observe-storage.d.ts +3 -3
  36. package/dist/adapters/observe-storage.js +4 -4
  37. package/dist/adapters/react.cjs.map +1 -1
  38. package/dist/adapters/react.d.cts +2 -2
  39. package/dist/adapters/react.d.ts +2 -2
  40. package/dist/adapters/react.js +1 -1
  41. package/dist/adapters/solid.cjs.map +1 -1
  42. package/dist/adapters/solid.d.cts +2 -2
  43. package/dist/adapters/solid.d.ts +2 -2
  44. package/dist/adapters/solid.js +1 -1
  45. package/dist/adapters/svelte.cjs.map +1 -1
  46. package/dist/adapters/svelte.d.cts +2 -2
  47. package/dist/adapters/svelte.d.ts +2 -2
  48. package/dist/adapters/svelte.js +1 -1
  49. package/dist/adapters/vue.cjs.map +1 -1
  50. package/dist/adapters/vue.d.cts +2 -2
  51. package/dist/adapters/vue.d.ts +2 -2
  52. package/dist/adapters/vue.js +1 -1
  53. package/dist/{agent-runtime-BesGDZcB.d.ts → agent-runtime-types-core-CKwrBDyi.d.ts} +171 -320
  54. package/dist/{agent-runtime-DZTJ3C-p.d.cts → agent-runtime-types-core-bfl4m0vM.d.cts} +171 -320
  55. package/dist/agent-runtime-types-tool-BLPV3azj.d.cts +695 -0
  56. package/dist/agent-runtime-types-tool-hwqvVqNt.d.ts +695 -0
  57. package/dist/agentic-memory-retention-CLwI76JK.d.ts +14 -0
  58. package/dist/agentic-memory-retention-Cz8GR6ie.d.cts +14 -0
  59. package/dist/{agentic-memory-DfuVZ-lY.d.cts → agentic-memory-types-JDr7MPhh.d.cts} +13 -57
  60. package/dist/{agentic-memory-BmRCvh0d.d.ts → agentic-memory-types-khYJgzKL.d.ts} +13 -57
  61. package/dist/{capability-admission-B0BzqAm5.d.cts → capability-admission-B8RNFyaZ.d.cts} +3 -3
  62. package/dist/{capability-admission-g0mn9hpq.d.ts → capability-admission-Dkw1Xz3r.d.ts} +3 -3
  63. package/dist/chunk-2KUAG2GZ.js +9693 -0
  64. package/dist/chunk-2KUAG2GZ.js.map +1 -0
  65. package/dist/{chunk-CZNV3VXM.js → chunk-3J7UPZL5.js} +11 -11
  66. package/dist/{chunk-HKK2JD7Z.js → chunk-3LYI6ADX.js} +12 -125
  67. package/dist/chunk-3LYI6ADX.js.map +1 -0
  68. package/dist/{chunk-YXMZ2N6J.js → chunk-4M37FH2I.js} +1071 -1025
  69. package/dist/chunk-4M37FH2I.js.map +1 -0
  70. package/dist/{chunk-YDSIVHRR.js → chunk-4NWSNI4K.js} +1598 -1584
  71. package/dist/chunk-4NWSNI4K.js.map +1 -0
  72. package/dist/{chunk-Z2ANQ6JW.js → chunk-4Q77MMJY.js} +2 -2
  73. package/dist/{chunk-SS2A464I.js → chunk-54WPEODM.js} +3 -3
  74. package/dist/chunk-54WPEODM.js.map +1 -0
  75. package/dist/chunk-6E76H4OU.js +132 -0
  76. package/dist/chunk-6E76H4OU.js.map +1 -0
  77. package/dist/chunk-7GOTIIQ7.js +819 -0
  78. package/dist/chunk-7GOTIIQ7.js.map +1 -0
  79. package/dist/{chunk-V7CIJE4B.js → chunk-DKFWDTVY.js} +92 -9
  80. package/dist/chunk-DKFWDTVY.js.map +1 -0
  81. package/dist/{chunk-FBUU43PM.js → chunk-E4QCH32M.js} +448 -446
  82. package/dist/chunk-E4QCH32M.js.map +1 -0
  83. package/dist/{chunk-XKXWK2KP.js → chunk-GXU6WFEJ.js} +1157 -1021
  84. package/dist/chunk-GXU6WFEJ.js.map +1 -0
  85. package/dist/{chunk-K3FXTC3I.js → chunk-HJACH5PU.js} +3 -3
  86. package/dist/{chunk-GTPCOEOZ.js → chunk-IDMLXLLG.js} +3 -3
  87. package/dist/{chunk-DKP56CSW.js → chunk-JKAYLDQV.js} +2 -2
  88. package/dist/{chunk-4VLAQHZI.js → chunk-K7FB3JTD.js} +17 -1
  89. package/dist/chunk-K7FB3JTD.js.map +1 -0
  90. package/dist/{chunk-43BKLFZU.js → chunk-KFURM6FM.js} +10 -10
  91. package/dist/{chunk-H75VXTGT.js → chunk-L6LDXRWE.js} +3 -3
  92. package/dist/{chunk-H75VXTGT.js.map → chunk-L6LDXRWE.js.map} +1 -1
  93. package/dist/chunk-MCOFHMUU.js +4131 -0
  94. package/dist/chunk-MCOFHMUU.js.map +1 -0
  95. package/dist/chunk-MQEQMS7B.js +1009 -0
  96. package/dist/chunk-MQEQMS7B.js.map +1 -0
  97. package/dist/chunk-MTELVIYR.js +1421 -0
  98. package/dist/chunk-MTELVIYR.js.map +1 -0
  99. package/dist/{chunk-3JR3EDB2.js → chunk-NNDIFUKX.js} +121 -115
  100. package/dist/chunk-NNDIFUKX.js.map +1 -0
  101. package/dist/{chunk-2747WN4Y.js → chunk-PUSRRALM.js} +3 -3
  102. package/dist/{chunk-QFY4AFY4.js → chunk-PVC7WDKI.js} +58 -52
  103. package/dist/chunk-PVC7WDKI.js.map +1 -0
  104. package/dist/{chunk-VTHLCFN4.js → chunk-RAHNUYA5.js} +2 -2
  105. package/dist/chunk-TQPCAIQI.js +612 -0
  106. package/dist/chunk-TQPCAIQI.js.map +1 -0
  107. package/dist/{chunk-IXZBUWSP.js → chunk-UEMN5URK.js} +2 -2
  108. package/dist/chunk-WOS7RJYZ.js +1320 -0
  109. package/dist/chunk-WOS7RJYZ.js.map +1 -0
  110. package/dist/{chunk-6PHB5CJS.js → chunk-ZLFRB6FI.js} +2 -2
  111. package/dist/composition/index.cjs +1228 -1076
  112. package/dist/composition/index.cjs.map +1 -1
  113. package/dist/composition/index.d.cts +3 -3
  114. package/dist/composition/index.d.ts +3 -3
  115. package/dist/composition/index.js +4 -4
  116. package/dist/core/index.cjs +1198 -1046
  117. package/dist/core/index.cjs.map +1 -1
  118. package/dist/core/index.d.cts +23 -2
  119. package/dist/core/index.d.ts +23 -2
  120. package/dist/core/index.js +2 -2
  121. package/dist/cqrs/index.d.cts +3 -3
  122. package/dist/cqrs/index.d.ts +3 -3
  123. package/dist/cqrs/messaging.d.cts +4 -4
  124. package/dist/cqrs/messaging.d.ts +4 -4
  125. package/dist/cqrs/work-queue.d.cts +5 -5
  126. package/dist/cqrs/work-queue.d.ts +5 -5
  127. package/dist/data-structures/index.cjs +1226 -1074
  128. package/dist/data-structures/index.cjs.map +1 -1
  129. package/dist/data-structures/index.d.cts +8 -7
  130. package/dist/data-structures/index.d.ts +8 -7
  131. package/dist/data-structures/index.js +6 -5
  132. package/dist/{describe-DYMw_l1C.d.cts → describe-BumQ-3_0.d.cts} +1 -1
  133. package/dist/{describe-BpyJuWkw.d.ts → describe-cYr_Z5zm.d.ts} +1 -1
  134. package/dist/executors/tool-provider-adapters.cjs +3091 -0
  135. package/dist/executors/tool-provider-adapters.cjs.map +1 -0
  136. package/dist/executors/tool-provider-adapters.d.cts +174 -0
  137. package/dist/executors/tool-provider-adapters.d.ts +174 -0
  138. package/dist/executors/tool-provider-adapters.js +1336 -0
  139. package/dist/executors/tool-provider-adapters.js.map +1 -0
  140. package/dist/executors/tool-provider-runtime.cjs +5178 -0
  141. package/dist/executors/tool-provider-runtime.cjs.map +1 -0
  142. package/dist/executors/tool-provider-runtime.d.cts +17 -0
  143. package/dist/executors/tool-provider-runtime.d.ts +17 -0
  144. package/dist/executors/tool-provider-runtime.js +15 -0
  145. package/dist/executors/tool-provider-runtime.js.map +1 -0
  146. package/dist/executors/tool-provider.cjs +6392 -0
  147. package/dist/executors/tool-provider.cjs.map +1 -0
  148. package/dist/executors/tool-provider.d.cts +60 -0
  149. package/dist/executors/tool-provider.d.ts +60 -0
  150. package/dist/executors/tool-provider.js +89 -0
  151. package/dist/executors/tool-provider.js.map +1 -0
  152. package/dist/executors/work-queue.d.cts +6 -6
  153. package/dist/executors/work-queue.d.ts +6 -6
  154. package/dist/graph/index.cjs +1499 -1341
  155. package/dist/graph/index.cjs.map +1 -1
  156. package/dist/graph/index.d.cts +9 -8
  157. package/dist/graph/index.d.ts +9 -8
  158. package/dist/graph/index.js +23 -22
  159. package/dist/{graph-DCEWh4T2.d.cts → graph-C1C-wb0L.d.cts} +266 -137
  160. package/dist/{graph-D-1-SQeC.d.ts → graph-CS0b4V9B.d.ts} +266 -137
  161. package/dist/{index-72VZC0-E.d.cts → index-DLrNopda.d.cts} +151 -10
  162. package/dist/{index-Bmxeu0nK.d.ts → index-DzJni3_6.d.ts} +151 -10
  163. package/dist/index.cjs +3397 -3140
  164. package/dist/index.cjs.map +1 -1
  165. package/dist/index.d.cts +12 -9
  166. package/dist/index.d.ts +12 -9
  167. package/dist/index.js +110 -109
  168. package/dist/inspection/boundary.d.cts +4 -4
  169. package/dist/inspection/boundary.d.ts +4 -4
  170. package/dist/measurements-BWAnochv.d.ts +294 -0
  171. package/dist/measurements-B_gJfD8h.d.cts +294 -0
  172. package/dist/messaging/index.cjs +57 -51
  173. package/dist/messaging/index.cjs.map +1 -1
  174. package/dist/messaging/index.d.cts +11 -276
  175. package/dist/messaging/index.d.ts +11 -276
  176. package/dist/messaging/index.js +1 -1
  177. package/dist/operators/index.cjs +1228 -1076
  178. package/dist/operators/index.cjs.map +1 -1
  179. package/dist/operators/index.d.cts +5 -5
  180. package/dist/operators/index.d.ts +5 -5
  181. package/dist/operators/index.js +5 -5
  182. package/dist/orchestration/index.cjs +8844 -6071
  183. package/dist/orchestration/index.cjs.map +1 -1
  184. package/dist/orchestration/index.d.cts +171 -224
  185. package/dist/orchestration/index.d.ts +171 -224
  186. package/dist/orchestration/index.js +42 -991
  187. package/dist/orchestration/index.js.map +1 -1
  188. package/dist/orchestration/messaging.d.cts +5 -8
  189. package/dist/orchestration/messaging.d.ts +5 -8
  190. package/dist/orchestration/work-queue.cjs +1243 -5
  191. package/dist/orchestration/work-queue.cjs.map +1 -1
  192. package/dist/orchestration/work-queue.d.cts +121 -10
  193. package/dist/orchestration/work-queue.d.ts +121 -10
  194. package/dist/orchestration/work-queue.js +1067 -4
  195. package/dist/orchestration/work-queue.js.map +1 -1
  196. package/dist/patterns/event-flow.cjs +6 -20
  197. package/dist/patterns/event-flow.cjs.map +1 -1
  198. package/dist/patterns/event-flow.d.cts +4 -4
  199. package/dist/patterns/event-flow.d.ts +4 -4
  200. package/dist/patterns/event-flow.js +2 -2
  201. package/dist/patterns/index.cjs +453 -465
  202. package/dist/patterns/index.cjs.map +1 -1
  203. package/dist/patterns/index.d.cts +6 -5
  204. package/dist/patterns/index.d.ts +6 -5
  205. package/dist/patterns/index.js +3 -3
  206. package/dist/process-types-BB7oRhX3.d.cts +200 -0
  207. package/dist/process-types-QNhyoYJ8.d.ts +200 -0
  208. package/dist/{reactive-collection-DNV0-gFi.d.cts → reactive-collection-BYlWvtnp.d.cts} +4 -34
  209. package/dist/{reactive-collection-BAmfrGjd.d.ts → reactive-collection-efOEdGFN.d.ts} +4 -34
  210. package/dist/{reactive-collection-storage-BNEldDyi.d.cts → reactive-collection-storage-BjoLsoiC.d.cts} +5 -5
  211. package/dist/{reactive-collection-storage-YZsAQsWK.d.ts → reactive-collection-storage-DwW6UuK_.d.ts} +5 -5
  212. package/dist/{reactive-map-DRD1LJ2H.d.cts → reactive-map-BHacbIqz.d.cts} +7 -2
  213. package/dist/{reactive-map-EsDiCmJk.d.ts → reactive-map-DN4Jyqnf.d.ts} +7 -2
  214. package/dist/render/index.d.cts +2 -2
  215. package/dist/render/index.d.ts +2 -2
  216. package/dist/scheduled-readiness-BmqXxnzX.d.ts +91 -0
  217. package/dist/scheduled-readiness-CYSw7KDE.d.cts +91 -0
  218. package/dist/semantic-memory-graph-B_LwbM-E.d.cts +30 -0
  219. package/dist/semantic-memory-graph-rsFNNhwn.d.ts +30 -0
  220. package/dist/{semantic-memory-graph-DKuNzuWw.d.cts → semantic-memory-graph-types-Y73bbwVI.d.cts} +2 -28
  221. package/dist/{semantic-memory-graph-uwbwJdhe.d.ts → semantic-memory-graph-types-safmPkuX.d.ts} +2 -28
  222. package/dist/solutions/index.cjs +6353 -6169
  223. package/dist/solutions/index.cjs.map +1 -1
  224. package/dist/solutions/index.d.cts +12 -10
  225. package/dist/solutions/index.d.ts +12 -10
  226. package/dist/solutions/index.js +5 -5
  227. package/dist/solutions/reactive-layout/browser/index.cjs +116 -108
  228. package/dist/solutions/reactive-layout/browser/index.cjs.map +1 -1
  229. package/dist/solutions/reactive-layout/browser/index.d.cts +4 -4
  230. package/dist/solutions/reactive-layout/browser/index.d.ts +4 -4
  231. package/dist/solutions/reactive-layout/browser/index.js +3 -3
  232. package/dist/solutions/reactive-layout/index.cjs +3578 -3350
  233. package/dist/solutions/reactive-layout/index.cjs.map +1 -1
  234. package/dist/solutions/reactive-layout/index.d.cts +32 -576
  235. package/dist/solutions/reactive-layout/index.d.ts +32 -576
  236. package/dist/solutions/reactive-layout/index.js +65 -5
  237. package/dist/solutions/reactive-layout/node-canvas/index.cjs +127 -117
  238. package/dist/solutions/reactive-layout/node-canvas/index.cjs.map +1 -1
  239. package/dist/solutions/reactive-layout/node-canvas/index.d.cts +4 -4
  240. package/dist/solutions/reactive-layout/node-canvas/index.d.ts +4 -4
  241. package/dist/solutions/reactive-layout/node-canvas/index.js +3 -3
  242. package/dist/solutions/reactive-layout/react-native/index.cjs +127 -117
  243. package/dist/solutions/reactive-layout/react-native/index.cjs.map +1 -1
  244. package/dist/solutions/reactive-layout/react-native/index.d.cts +4 -4
  245. package/dist/solutions/reactive-layout/react-native/index.d.ts +4 -4
  246. package/dist/solutions/reactive-layout/react-native/index.js +3 -3
  247. package/dist/solutions/reactive-layout/skia/index.cjs +127 -117
  248. package/dist/solutions/reactive-layout/skia/index.cjs.map +1 -1
  249. package/dist/solutions/reactive-layout/skia/index.d.cts +4 -4
  250. package/dist/solutions/reactive-layout/skia/index.d.ts +4 -4
  251. package/dist/solutions/reactive-layout/skia/index.js +3 -3
  252. package/dist/solutions/work-item/actions.cjs +1609 -1428
  253. package/dist/solutions/work-item/actions.cjs.map +1 -1
  254. package/dist/solutions/work-item/actions.d.cts +23 -184
  255. package/dist/solutions/work-item/actions.d.ts +23 -184
  256. package/dist/solutions/work-item/actions.js +1558 -934
  257. package/dist/solutions/work-item/actions.js.map +1 -1
  258. package/dist/solutions/work-item/scheduling.cjs +9181 -1838
  259. package/dist/solutions/work-item/scheduling.cjs.map +1 -1
  260. package/dist/solutions/work-item/scheduling.d.cts +1763 -328
  261. package/dist/solutions/work-item/scheduling.d.ts +1763 -328
  262. package/dist/solutions/work-item/scheduling.js +117 -3
  263. package/dist/solutions/work-item/work-queue.d.cts +7 -7
  264. package/dist/solutions/work-item/work-queue.d.ts +7 -7
  265. package/dist/sources/browser.cjs +1318 -1083
  266. package/dist/sources/browser.cjs.map +1 -1
  267. package/dist/sources/browser.d.cts +22 -6
  268. package/dist/sources/browser.d.ts +22 -6
  269. package/dist/sources/browser.js +4 -4
  270. package/dist/sources/browser.js.map +1 -1
  271. package/dist/sources/index.cjs +1318 -1083
  272. package/dist/sources/index.cjs.map +1 -1
  273. package/dist/sources/index.d.cts +4 -4
  274. package/dist/sources/index.d.ts +4 -4
  275. package/dist/sources/index.js +4 -4
  276. package/dist/sources/node.d.cts +3 -3
  277. package/dist/sources/node.d.ts +3 -3
  278. package/dist/storage/browser.cjs +16 -0
  279. package/dist/storage/browser.cjs.map +1 -1
  280. package/dist/storage/browser.js +3 -3
  281. package/dist/storage/index.cjs +16 -0
  282. package/dist/storage/index.cjs.map +1 -1
  283. package/dist/storage/index.d.cts +5 -4
  284. package/dist/storage/index.d.ts +5 -4
  285. package/dist/storage/index.js +6 -6
  286. package/dist/storage/node.cjs +16 -0
  287. package/dist/storage/node.cjs.map +1 -1
  288. package/dist/storage/node.js +3 -3
  289. package/dist/{store-C-joM4gh.d.ts → store-6_CHF6Ge.d.ts} +1 -1
  290. package/dist/{store-CNJwmT-h.d.cts → store-BljX8RkQ.d.cts} +1 -1
  291. package/dist/types-BAw2QVVE.d.cts +274 -0
  292. package/dist/types-BUbbbh4f.d.cts +34 -0
  293. package/dist/types-CMnzoL54.d.cts +457 -0
  294. package/dist/{types-CcPIn7sy.d.cts → types-CTN3XoMl.d.cts} +57 -108
  295. package/dist/types-CV_ohy5T.d.cts +357 -0
  296. package/dist/{types-BsJvElYZ.d.ts → types-DChxk1vK.d.ts} +57 -108
  297. package/dist/types-DRu7SnLV.d.ts +274 -0
  298. package/dist/types-DeID_FRl.d.ts +34 -0
  299. package/dist/types-IhKH0hGW.d.ts +357 -0
  300. package/dist/types-ePlD2uyT.d.ts +457 -0
  301. package/dist/{work-item-runtime-qaVgsL0T.d.cts → work-item-runtime-types-BTxLskN5.d.cts} +3 -93
  302. package/dist/{work-item-runtime-C3M79vE9.d.ts → work-item-runtime-types-DAsZbb2y.d.ts} +3 -93
  303. package/dist/work-queue/index.cjs +957 -953
  304. package/dist/work-queue/index.cjs.map +1 -1
  305. package/dist/work-queue/index.d.cts +9 -357
  306. package/dist/work-queue/index.d.ts +9 -357
  307. package/dist/work-queue/index.js +957 -953
  308. package/dist/work-queue/index.js.map +1 -1
  309. package/package.json +611 -513
  310. package/dist/chunk-3JR3EDB2.js.map +0 -1
  311. package/dist/chunk-4VLAQHZI.js.map +0 -1
  312. package/dist/chunk-6XAIOL3X.js +0 -2407
  313. package/dist/chunk-6XAIOL3X.js.map +0 -1
  314. package/dist/chunk-FBUU43PM.js.map +0 -1
  315. package/dist/chunk-HKK2JD7Z.js.map +0 -1
  316. package/dist/chunk-PC3BTTBE.js +0 -3217
  317. package/dist/chunk-PC3BTTBE.js.map +0 -1
  318. package/dist/chunk-QFY4AFY4.js.map +0 -1
  319. package/dist/chunk-SS2A464I.js.map +0 -1
  320. package/dist/chunk-V7CIJE4B.js.map +0 -1
  321. package/dist/chunk-XKXWK2KP.js.map +0 -1
  322. package/dist/chunk-YDSIVHRR.js.map +0 -1
  323. package/dist/chunk-YXMZ2N6J.js.map +0 -1
  324. /package/dist/{chunk-CZNV3VXM.js.map → chunk-3J7UPZL5.js.map} +0 -0
  325. /package/dist/{chunk-Z2ANQ6JW.js.map → chunk-4Q77MMJY.js.map} +0 -0
  326. /package/dist/{chunk-K3FXTC3I.js.map → chunk-HJACH5PU.js.map} +0 -0
  327. /package/dist/{chunk-GTPCOEOZ.js.map → chunk-IDMLXLLG.js.map} +0 -0
  328. /package/dist/{chunk-DKP56CSW.js.map → chunk-JKAYLDQV.js.map} +0 -0
  329. /package/dist/{chunk-43BKLFZU.js.map → chunk-KFURM6FM.js.map} +0 -0
  330. /package/dist/{chunk-2747WN4Y.js.map → chunk-PUSRRALM.js.map} +0 -0
  331. /package/dist/{chunk-VTHLCFN4.js.map → chunk-RAHNUYA5.js.map} +0 -0
  332. /package/dist/{chunk-IXZBUWSP.js.map → chunk-UEMN5URK.js.map} +0 -0
  333. /package/dist/{chunk-6PHB5CJS.js.map → chunk-ZLFRB6FI.js.map} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/solutions/agentic-memory-shared.ts","../src/solutions/agentic-memory-projection.ts","../src/solutions/agentic-memory-bundle.ts","../src/solutions/agentic-memory-consolidation.ts","../src/solutions/agentic-memory-context-packing.ts","../src/solutions/agentic-memory-frame.ts","../src/solutions/agentic-memory-kg.ts","../src/solutions/agentic-memory-retention.ts","../src/solutions/capability-admission.ts"],"sourcesContent":["import { strictJsonCodec } from \"../json/codec.js\";\nimport type { MemoryFragment } from \"../patterns/semantic-memory.js\";\nimport { validateMemoryFragment } from \"../patterns/semantic-memory.js\";\nimport type {\n\tAgenticMemoryArtifactKind,\n\tAgenticMemoryError,\n\tAgenticMemoryKind,\n\tAgenticMemoryPersistenceLevel,\n\tAgenticMemoryRecord,\n\tAgenticMemoryRecordMetadata,\n\tAgenticMemoryScope,\n\tAgenticMemoryStatusState,\n\tStrictJsonValue,\n} from \"./agentic-memory-types.js\";\n\nexport function validateAndProjectRecords<T>(value: unknown): {\n\treadonly records: AgenticMemoryRecord<T>[];\n\treadonly fragments: MemoryFragment<T>[];\n\treadonly metadataByFragmentId: Record<FactId, AgenticMemoryRecordMetadata>;\n\treadonly errors: Omit<AgenticMemoryError, \"cursor\">[];\n\treadonly invalidRecordIndexes: Set<number>;\n} {\n\tconst records: AgenticMemoryRecord<T>[] = [];\n\tconst fragments: MemoryFragment<T>[] = [];\n\tconst metadataByFragmentId = Object.create(null) as Record<FactId, AgenticMemoryRecordMetadata>;\n\tconst errors: Omit<AgenticMemoryError, \"cursor\">[] = [];\n\tconst invalidRecordIndexes = new Set<number>();\n\tconst seenRecordIds = new Set<FactId>();\n\tconst seenFragmentIds = new Set<FactId>();\n\tif (!Array.isArray(value)) {\n\t\terrors.push({\n\t\t\tcode: \"invalid-records-input\",\n\t\t\tmessage: \"agenticMemoryBundle: records input must be an array\",\n\t\t\trecord: value,\n\t\t});\n\t\treturn { records, fragments, metadataByFragmentId, errors, invalidRecordIndexes };\n\t}\n\tconst length = safeArrayLength(value);\n\tif (length === undefined) {\n\t\terrors.push({\n\t\t\tcode: \"invalid-records-input\",\n\t\t\tmessage: \"agenticMemoryBundle: records input length could not be read\",\n\t\t\trecord: value,\n\t\t});\n\t\treturn { records, fragments, metadataByFragmentId, errors, invalidRecordIndexes };\n\t}\n\tfor (let i = 0; i < length; i += 1) {\n\t\tlet raw: unknown;\n\t\ttry {\n\t\t\traw = value[i];\n\t\t} catch (error) {\n\t\t\tinvalidRecordIndexes.add(i);\n\t\t\terrors.push({\n\t\t\t\tcode: \"invalid-record\",\n\t\t\t\tmessage: `agenticMemoryBundle: record access failed: ${errorMessage(error)}`,\n\t\t\t\tindex: i,\n\t\t\t\tvalidationErrors: Object.freeze([\"record access failed\"]),\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tconst result = validateAndSnapshotRecord<T>(raw, i);\n\t\tif (result.errors.length > 0) {\n\t\t\tinvalidRecordIndexes.add(i);\n\t\t\terrors.push(...result.errors);\n\t\t\tcontinue;\n\t\t}\n\t\tif (result.record === undefined) continue;\n\t\tif (seenRecordIds.has(result.record.id)) {\n\t\t\tinvalidRecordIndexes.add(i);\n\t\t\terrors.push({\n\t\t\t\tcode: \"duplicate-record-id\",\n\t\t\t\tmessage: \"agenticMemoryBundle: duplicate record id\",\n\t\t\t\tindex: i,\n\t\t\t\trecordId: result.record.id,\n\t\t\t\trecord: raw,\n\t\t\t\tvalidationErrors: [`duplicate record id '${result.record.id}'`],\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tif (seenFragmentIds.has(result.record.fragment.id)) {\n\t\t\tinvalidRecordIndexes.add(i);\n\t\t\terrors.push({\n\t\t\t\tcode: \"duplicate-fragment-id\",\n\t\t\t\tmessage: \"agenticMemoryBundle: duplicate fragment id\",\n\t\t\t\tindex: i,\n\t\t\t\trecordId: result.record.id,\n\t\t\t\tfragmentId: result.record.fragment.id,\n\t\t\t\trecord: raw,\n\t\t\t\tvalidationErrors: [`duplicate fragment id '${result.record.fragment.id}'`],\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tseenRecordIds.add(result.record.id);\n\t\tseenFragmentIds.add(result.record.fragment.id);\n\t\trecords.push(result.record);\n\t\tfragments.push(result.record.fragment);\n\t\tmetadataByFragmentId[result.record.fragment.id] = recordMetadata(result.record);\n\t}\n\treturn { records, fragments, metadataByFragmentId, errors, invalidRecordIndexes };\n}\n\nexport function validateAndSnapshotRecord<T>(\n\tvalue: unknown,\n\tindex: number,\n): {\n\treadonly record?: AgenticMemoryRecord<T>;\n\treadonly errors: Omit<AgenticMemoryError, \"cursor\">[];\n} {\n\ttry {\n\t\treturn validateAndSnapshotRecordInner<T>(value, index);\n\t} catch (error) {\n\t\treturn {\n\t\t\terrors: [\n\t\t\t\t{\n\t\t\t\t\tcode: \"invalid-record\",\n\t\t\t\t\tmessage: `agenticMemoryBundle: record access failed: ${errorMessage(error)}`,\n\t\t\t\t\tindex,\n\t\t\t\t\trecord: value,\n\t\t\t\t\tvalidationErrors: Object.freeze([\"record access failed\"]),\n\t\t\t\t},\n\t\t\t],\n\t\t};\n\t}\n}\n\nexport function validateAndSnapshotRecordInner<T>(\n\tvalue: unknown,\n\tindex: number,\n): {\n\treadonly record?: AgenticMemoryRecord<T>;\n\treadonly errors: Omit<AgenticMemoryError, \"cursor\">[];\n} {\n\tconst errors: Omit<AgenticMemoryError, \"cursor\">[] = [];\n\tif (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n\t\treturn {\n\t\t\terrors: [\n\t\t\t\t{\n\t\t\t\t\tcode: \"invalid-record\",\n\t\t\t\t\tmessage: \"agenticMemoryBundle: record must be an object\",\n\t\t\t\t\tindex,\n\t\t\t\t\trecord: value,\n\t\t\t\t},\n\t\t\t],\n\t\t};\n\t}\n\tconst record = value as Partial<AgenticMemoryRecord<T>> & Record<string, unknown>;\n\tconst recordId = typeof record.id === \"string\" ? record.id : undefined;\n\tif (recordId === undefined || recordId.length === 0) {\n\t\terrors.push({\n\t\t\tcode: \"invalid-record\",\n\t\t\tmessage: \"agenticMemoryBundle: record.id must be a non-empty string\",\n\t\t\tindex,\n\t\t\trecord: value,\n\t\t\tvalidationErrors: [\"record.id must be a non-empty string\"],\n\t\t});\n\t}\n\tif (!isAgenticMemoryKind(record.kind)) {\n\t\terrors.push({\n\t\t\tcode: \"invalid-record-kind\",\n\t\t\tmessage: \"agenticMemoryBundle: record.kind is invalid\",\n\t\t\tindex,\n\t\t\trecordId,\n\t\t\trecord: value,\n\t\t\tvalidationErrors: [\"kind must be one of working, episodic, semantic, procedural, profile\"],\n\t\t});\n\t}\n\tif (!isAgenticMemoryPersistenceLevel(record.persistenceLevel)) {\n\t\terrors.push({\n\t\t\tcode: \"invalid-persistence-level\",\n\t\t\tmessage: \"agenticMemoryBundle: record.persistenceLevel is invalid\",\n\t\t\tindex,\n\t\t\trecordId,\n\t\t\trecord: value,\n\t\t\tvalidationErrors: [\n\t\t\t\t\"persistenceLevel must be one of turn, session, project, longTerm, permanent, archived\",\n\t\t\t],\n\t\t});\n\t}\n\tif (!isAgenticMemoryArtifactKind(record.artifactKind)) {\n\t\terrors.push({\n\t\t\tcode: \"invalid-artifact-kind\",\n\t\t\tmessage: \"agenticMemoryBundle: record.artifactKind is invalid\",\n\t\t\tindex,\n\t\t\trecordId,\n\t\t\trecord: value,\n\t\t\tvalidationErrors: [\"artifactKind must be one of raw, insight, profile, procedure\"],\n\t\t});\n\t}\n\tconst scopeValidation = validateScope(record.scope);\n\tif (!scopeValidation.ok) {\n\t\terrors.push({\n\t\t\tcode: \"invalid-scope\",\n\t\t\tmessage: \"agenticMemoryBundle: record.scope is invalid\",\n\t\t\tindex,\n\t\t\trecordId,\n\t\t\trecord: value,\n\t\t\tvalidationErrors: Object.freeze(scopeValidation.errors),\n\t\t});\n\t}\n\tconst fragmentValidation = validateMemoryFragment(record.fragment);\n\tif (!fragmentValidation.ok) {\n\t\terrors.push({\n\t\t\tcode: \"invalid-fragment\",\n\t\t\tmessage: \"agenticMemoryBundle: record.fragment is invalid\",\n\t\t\tindex,\n\t\t\trecordId,\n\t\t\tfragmentId:\n\t\t\t\ttypeof record.fragment === \"object\" &&\n\t\t\t\trecord.fragment !== null &&\n\t\t\t\ttypeof (record.fragment as Partial<MemoryFragment>).id === \"string\"\n\t\t\t\t\t? (record.fragment as Partial<MemoryFragment>).id\n\t\t\t\t\t: undefined,\n\t\t\trecord: value,\n\t\t\tvalidationErrors: Object.freeze([...fragmentValidation.errors]),\n\t\t});\n\t}\n\tconst forbiddenFields = [\n\t\t\"storageTier\",\n\t\t\"storageKey\",\n\t\t\"adapter\",\n\t\t\"collection\",\n\t\t\"collections\",\n\t\t\"ttl\",\n\t\t\"ttlMs\",\n\t\t\"ttlNs\",\n\t\t\"expiresAt\",\n\t\t\"timer\",\n\t\t\"scheduler\",\n\t\t\"schedule\",\n\t\t\"retentionTimer\",\n\t\t\"consolidationSchedule\",\n\t\t\"reflectionSchedule\",\n\t\t\"llm\",\n\t\t\"llmHandle\",\n\t\t\"tool\",\n\t\t\"toolHandle\",\n\t\t\"runner\",\n\t\t\"runnerHandle\",\n\t\t\"restore\",\n\t\t\"hydrate\",\n\t\t\"hydration\",\n\t\t\"graphMutation\",\n\t\t\"protocol\",\n\t] as const;\n\tconst presentForbidden = forbiddenFields.filter((field) => Object.hasOwn(record, field));\n\tif (presentForbidden.length > 0) {\n\t\terrors.push({\n\t\t\tcode: \"invalid-record\",\n\t\t\tmessage: \"agenticMemoryBundle: record contains forbidden runtime/persistence fields\",\n\t\t\tindex,\n\t\t\trecordId,\n\t\t\trecord: value,\n\t\t\tvalidationErrors: Object.freeze(\n\t\t\t\tpresentForbidden.map((field) => `${field} is not part of AgenticMemoryRecord`),\n\t\t\t),\n\t\t});\n\t}\n\tif (errors.length > 0) return { errors };\n\tconst scope = scopeValidation.scope;\n\tconst fragment = snapshotFragment(record.fragment as MemoryFragment<T>);\n\treturn {\n\t\trecord: Object.freeze({\n\t\t\tid: recordId as FactId,\n\t\t\tkind: record.kind as AgenticMemoryKind,\n\t\t\tpersistenceLevel: record.persistenceLevel as AgenticMemoryPersistenceLevel,\n\t\t\tartifactKind: record.artifactKind as AgenticMemoryArtifactKind,\n\t\t\t...(scope === undefined ? {} : { scope }),\n\t\t\tfragment,\n\t\t}),\n\t\terrors,\n\t};\n}\n\nexport function snapshotFragment<T>(fragment: MemoryFragment<T>): MemoryFragment<T> {\n\treturn Object.freeze({\n\t\tid: fragment.id,\n\t\tpayload: fragment.payload,\n\t\ttNs: fragment.tNs,\n\t\t...(fragment.validFrom === undefined ? {} : { validFrom: fragment.validFrom }),\n\t\t...(fragment.validTo === undefined ? {} : { validTo: fragment.validTo }),\n\t\tconfidence: fragment.confidence,\n\t\ttags: Object.freeze([...fragment.tags]),\n\t\tsources: Object.freeze([...fragment.sources]),\n\t\t...(fragment.embedding === undefined\n\t\t\t? {}\n\t\t\t: { embedding: Object.freeze([...fragment.embedding]) }),\n\t\t...(fragment.parentFragmentId === undefined\n\t\t\t? {}\n\t\t\t: { parentFragmentId: fragment.parentFragmentId }),\n\t\t...(fragment.provenance === undefined ? {} : { provenance: fragment.provenance }),\n\t});\n}\n\nexport function recordMetadata(record: AgenticMemoryRecord): AgenticMemoryRecordMetadata {\n\treturn Object.freeze({\n\t\trecordId: record.id,\n\t\tkind: record.kind,\n\t\tpersistenceLevel: record.persistenceLevel,\n\t\tartifactKind: record.artifactKind,\n\t\t...(record.scope === undefined ? {} : { scope: record.scope }),\n\t});\n}\n\nexport function validateRecordMetadata(value: unknown): {\n\treadonly ok: boolean;\n\treadonly metadata?: AgenticMemoryRecordMetadata;\n\treadonly errors: readonly string[];\n} {\n\tif (value === undefined) return { ok: true, errors: [] };\n\tif (!isPlainRecord(value)) {\n\t\treturn { ok: false, errors: [\"record metadata must be an object when present\"] };\n\t}\n\tconst errors: string[] = [];\n\tfor (const key of Object.keys(value)) {\n\t\tif (\n\t\t\tkey !== \"recordId\" &&\n\t\t\tkey !== \"kind\" &&\n\t\t\tkey !== \"persistenceLevel\" &&\n\t\t\tkey !== \"artifactKind\" &&\n\t\t\tkey !== \"scope\"\n\t\t) {\n\t\t\terrors.push(`record.${key} is not part of AgenticMemoryRecordMetadata`);\n\t\t}\n\t}\n\tif (!isNonEmptyString(value.recordId)) {\n\t\terrors.push(\"record.recordId must be a non-empty string\");\n\t}\n\tif (!isAgenticMemoryKind(value.kind)) {\n\t\terrors.push(\"record.kind is invalid\");\n\t}\n\tif (!isAgenticMemoryPersistenceLevel(value.persistenceLevel)) {\n\t\terrors.push(\"record.persistenceLevel is invalid\");\n\t}\n\tif (!isAgenticMemoryArtifactKind(value.artifactKind)) {\n\t\terrors.push(\"record.artifactKind is invalid\");\n\t}\n\tconst scopeValidation = validateScope(value.scope);\n\tif (!scopeValidation.ok) {\n\t\terrors.push(...scopeValidation.errors.map((error) => `record.${error}`));\n\t}\n\tif (errors.length > 0) return { ok: false, errors };\n\treturn {\n\t\tok: true,\n\t\terrors,\n\t\tmetadata: Object.freeze({\n\t\t\trecordId: value.recordId as FactId,\n\t\t\tkind: value.kind as AgenticMemoryKind,\n\t\t\tpersistenceLevel: value.persistenceLevel as AgenticMemoryPersistenceLevel,\n\t\t\tartifactKind: value.artifactKind as AgenticMemoryArtifactKind,\n\t\t\t...(scopeValidation.scope === undefined ? {} : { scope: scopeValidation.scope }),\n\t\t}),\n\t};\n}\n\nexport function contextState(\n\tprojection: AgenticMemoryStatusState,\n\tretrieval: MemoryRetrievalStatus[\"state\"],\n): AgenticMemoryContextState {\n\tif (projection === \"error\" || retrieval === \"error\") return \"error\";\n\tif (projection === \"partial\" || retrieval === \"partial\") return \"partial\";\n\treturn retrieval;\n}\n\nexport function agenticStatusState(\n\terrorCount: number,\n\tvalidRecords: number,\n): AgenticMemoryStatusState {\n\tif (errorCount > 0 && validRecords === 0) return \"error\";\n\tif (errorCount > 0) return \"partial\";\n\treturn validRecords > 0 ? \"ready\" : \"empty\";\n}\n\nexport function isAgenticMemoryKind(value: unknown): value is AgenticMemoryKind {\n\treturn (\n\t\tvalue === \"working\" ||\n\t\tvalue === \"episodic\" ||\n\t\tvalue === \"semantic\" ||\n\t\tvalue === \"procedural\" ||\n\t\tvalue === \"profile\"\n\t);\n}\n\nexport function isAgenticMemoryPersistenceLevel(\n\tvalue: unknown,\n): value is AgenticMemoryPersistenceLevel {\n\treturn (\n\t\tvalue === \"turn\" ||\n\t\tvalue === \"session\" ||\n\t\tvalue === \"project\" ||\n\t\tvalue === \"longTerm\" ||\n\t\tvalue === \"permanent\" ||\n\t\tvalue === \"archived\"\n\t);\n}\n\nexport function isAgenticMemoryArtifactKind(value: unknown): value is AgenticMemoryArtifactKind {\n\treturn value === \"raw\" || value === \"insight\" || value === \"profile\" || value === \"procedure\";\n}\n\nexport function validateScope(value: unknown): {\n\treadonly ok: boolean;\n\treadonly scope?: AgenticMemoryScope;\n\treadonly errors: readonly string[];\n} {\n\tif (value === undefined) return { ok: true, errors: [] };\n\tif (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n\t\treturn { ok: false, errors: [\"scope must be an object when present\"] };\n\t}\n\tconst scope = value as Record<string, unknown>;\n\tconst errors: string[] = [];\n\tconst allowed = new Set([\"sessionId\", \"projectId\", \"userId\", \"tenantId\"]);\n\tfor (const key of Object.keys(scope)) {\n\t\tif (!allowed.has(key)) errors.push(`scope.${key} is not part of AgenticMemoryScope`);\n\t}\n\tfor (const key of allowed) {\n\t\tif (scope[key] !== undefined && (typeof scope[key] !== \"string\" || scope[key].length === 0)) {\n\t\t\terrors.push(`scope.${key} must be a non-empty string when present`);\n\t\t}\n\t}\n\tif (errors.length > 0) return { ok: false, errors };\n\treturn {\n\t\tok: true,\n\t\terrors,\n\t\tscope: Object.freeze({\n\t\t\t...(scope.sessionId === undefined ? {} : { sessionId: scope.sessionId as string }),\n\t\t\t...(scope.projectId === undefined ? {} : { projectId: scope.projectId as string }),\n\t\t\t...(scope.userId === undefined ? {} : { userId: scope.userId as string }),\n\t\t\t...(scope.tenantId === undefined ? {} : { tenantId: scope.tenantId as string }),\n\t\t}),\n\t};\n}\n\nexport function isPlainRecord(value: unknown): value is Record<string, unknown> {\n\treturn value !== null && typeof value === \"object\" && !Array.isArray(value);\n}\n\nexport function ownKeys(value: Record<string, unknown>): readonly string[] {\n\treturn Object.keys(value).sort();\n}\n\nexport function assertExactKeys(\n\tvalue: Record<string, unknown>,\n\texpected: readonly string[],\n\tlabel: string,\n): void {\n\tconst actual = ownKeys(value);\n\tconst want = [...expected].sort();\n\tif (actual.length !== want.length || actual.some((key, i) => key !== want[i])) {\n\t\tthrow new TypeError(`${label}: unexpected fields ${actual.join(\",\")}`);\n\t}\n}\n\nexport function assertAgenticMemoryRecordCodecShape(value: unknown): void {\n\tif (!isPlainRecord(value)) {\n\t\tthrow new TypeError(\"agenticMemoryRecordFrame: record must be an object\");\n\t}\n\tassertNoSymbolKeys(value, \"agenticMemoryRecordFrame.record\");\n\tassertExactKeys(\n\t\tvalue,\n\t\tvalue.scope === undefined\n\t\t\t? [\"artifactKind\", \"fragment\", \"id\", \"kind\", \"persistenceLevel\"]\n\t\t\t: [\"artifactKind\", \"fragment\", \"id\", \"kind\", \"persistenceLevel\", \"scope\"],\n\t\t\"agenticMemoryRecordFrame.record\",\n\t);\n\tconst fragment = value.fragment;\n\tif (!isPlainRecord(fragment)) {\n\t\tthrow new TypeError(\"agenticMemoryRecordFrame: fragment must be an object\");\n\t}\n\tassertNoSymbolKeys(fragment, \"agenticMemoryRecordFrame.record.fragment\");\n\tassertExactKeys(\n\t\tfragment,\n\t\t[\n\t\t\t\"id\",\n\t\t\t\"payload\",\n\t\t\t\"tNs\",\n\t\t\t...(fragment.validFrom === undefined ? [] : [\"validFrom\"]),\n\t\t\t...(fragment.validTo === undefined ? [] : [\"validTo\"]),\n\t\t\t\"confidence\",\n\t\t\t\"tags\",\n\t\t\t\"sources\",\n\t\t\t...(fragment.embedding === undefined ? [] : [\"embedding\"]),\n\t\t\t...(fragment.parentFragmentId === undefined ? [] : [\"parentFragmentId\"]),\n\t\t\t...(fragment.provenance === undefined ? [] : [\"provenance\"]),\n\t\t],\n\t\t\"agenticMemoryRecordFrame.record.fragment\",\n\t);\n\tassertStrictJsonValue(fragment.tags, \"record.fragment.tags\");\n\tassertStrictJsonValue(fragment.sources, \"record.fragment.sources\");\n\tif (fragment.embedding !== undefined) {\n\t\tassertStrictJsonValue(fragment.embedding, \"record.fragment.embedding\");\n\t}\n\tif (value.scope !== undefined) assertScopeFrame(value.scope);\n}\n\nexport function assertNoSymbolKeys(value: object, label: string): void {\n\tif (Object.getOwnPropertySymbols(value).length > 0) {\n\t\tthrow new TypeError(`${label}: unexpected symbol fields`);\n\t}\n}\n\nexport function decimalBigIntString(value: bigint, label: string): string {\n\tconst out = value.toString(10);\n\tif (!/^-?(0|[1-9]\\d*)$/.test(out)) {\n\t\tthrow new TypeError(`${label} must encode as a canonical decimal bigint string`);\n\t}\n\treturn out;\n}\n\nexport function parseDecimalBigInt(value: unknown, label: string): bigint {\n\tif (typeof value !== \"string\" || !/^(0|-?[1-9]\\d*)$/.test(value)) {\n\t\tthrow new TypeError(`${label} must be a canonical decimal bigint string`);\n\t}\n\treturn BigInt(value);\n}\n\nexport function assertStrictJsonValue(value: unknown, label: string): StrictJsonValue {\n\ttry {\n\t\tstrictJsonCodec.encode(value);\n\t\treturn value as StrictJsonValue;\n\t} catch (error) {\n\t\tthrow new TypeError(`${label} must be strict JSON: ${errorMessage(error)}`);\n\t}\n}\n\nexport function assertScopeFrame(value: unknown): AgenticMemoryScope {\n\tif (!isPlainRecord(value)) {\n\t\tthrow new TypeError(\"agenticMemoryRecordFrame: scope must be an object when present\");\n\t}\n\tassertStrictJsonValue(value, \"record.scope\");\n\tconst validation = validateScope(value);\n\tif (!validation.ok || validation.scope === undefined) {\n\t\tthrow new TypeError(`agenticMemoryRecordFrame: invalid scope: ${validation.errors.join(\"; \")}`);\n\t}\n\tassertExactKeys(\n\t\tvalue as Record<string, unknown>,\n\t\t[\n\t\t\t...((value as Record<string, unknown>).sessionId === undefined ? [] : [\"sessionId\"]),\n\t\t\t...((value as Record<string, unknown>).projectId === undefined ? [] : [\"projectId\"]),\n\t\t\t...((value as Record<string, unknown>).userId === undefined ? [] : [\"userId\"]),\n\t\t\t...((value as Record<string, unknown>).tenantId === undefined ? [] : [\"tenantId\"]),\n\t\t],\n\t\t\"agenticMemoryRecordFrame.record.scope\",\n\t);\n\treturn validation.scope;\n}\n\nexport function assertKindValue(value: unknown): AgenticMemoryKind {\n\tif (!isAgenticMemoryKind(value)) {\n\t\tthrow new TypeError(\"agenticMemoryRecordFrame: invalid memory kind\");\n\t}\n\treturn value;\n}\n\nexport function assertPersistenceLevelValue(value: unknown): AgenticMemoryPersistenceLevel {\n\tif (!isAgenticMemoryPersistenceLevel(value)) {\n\t\tthrow new TypeError(\"agenticMemoryRecordFrame: invalid persistence level\");\n\t}\n\treturn value;\n}\n\nexport function assertArtifactKindValue(value: unknown): AgenticMemoryArtifactKind {\n\tif (!isAgenticMemoryArtifactKind(value)) {\n\t\tthrow new TypeError(\"agenticMemoryRecordFrame: invalid artifact kind\");\n\t}\n\treturn value;\n}\n\nexport function assertNonEmptyString(value: unknown, label: string): string {\n\tif (!isNonEmptyString(value)) throw new TypeError(`${label} must be a non-empty string`);\n\treturn value;\n}\n\nexport function assertString(value: unknown, label: string): string {\n\tif (typeof value !== \"string\") throw new TypeError(`${label} must be a string`);\n\treturn value;\n}\n\nexport function assertConfidence(value: unknown, label: string): number {\n\tif (!Number.isFinite(value) || (value as number) < 0 || (value as number) > 1) {\n\t\tthrow new TypeError(`${label} must be a finite number in [0, 1]`);\n\t}\n\treturn value as number;\n}\n\nexport function assertStringArray(value: unknown, label: string): readonly string[] {\n\tif (!isDenseArrayOf(value, (item): item is string => typeof item === \"string\")) {\n\t\tthrow new TypeError(`${label} must be a readonly string array`);\n\t}\n\treturn Object.freeze([...value]);\n}\n\nexport function assertFiniteNumberArray(value: unknown, label: string): readonly number[] {\n\tif (!isDenseArrayOf(value, (item): item is number => Number.isFinite(item))) {\n\t\tthrow new TypeError(`${label} must be a finite number array`);\n\t}\n\treturn Object.freeze([...value]);\n}\n\nexport function isNonEmptyString(value: unknown): value is string {\n\treturn typeof value === \"string\" && value.length > 0;\n}\n\nexport function isDenseArrayOf<T>(\n\tvalue: unknown,\n\tpredicate: (item: unknown) => item is T,\n): value is T[] {\n\tif (!Array.isArray(value)) return false;\n\tfor (let i = 0; i < value.length; i += 1) {\n\t\tif (!Object.hasOwn(value, i) || !predicate(value[i])) return false;\n\t}\n\treturn true;\n}\n\nexport function freezeError<T extends { readonly validationErrors?: readonly string[] }>(\n\terror: T,\n): T {\n\treturn Object.freeze({\n\t\t...error,\n\t\t...(error.validationErrors === undefined\n\t\t\t? {}\n\t\t\t: { validationErrors: Object.freeze([...error.validationErrors]) }),\n\t}) as T;\n}\n\nexport function safeArrayLength(value: readonly unknown[]): number | undefined {\n\ttry {\n\t\treturn value.length;\n\t} catch {\n\t\treturn undefined;\n\t}\n}\n\nexport function errorMessage(error: unknown): string {\n\treturn error instanceof Error ? error.message : String(error);\n}\n","import { depBatch, depLatest } from \"../ctx/types.js\";\nimport type { Graph } from \"../graph/graph.js\";\nimport type { Node } from \"../node/node.js\";\nimport type { MemoryRetrievalSnapshot } from \"../patterns/semantic-memory-graph.js\";\nimport {\n\tagenticStatusState,\n\tcontextState,\n\tvalidateAndProjectRecords,\n} from \"./agentic-memory-shared.js\";\nimport type {\n\tAgenticMemoryContext,\n\tAgenticMemoryProjectionCursor,\n\tAgenticMemoryProjectionSnapshot,\n\tAgenticMemoryRecord,\n\tAgenticMemoryStatus,\n} from \"./agentic-memory-types.js\";\n\nexport function solutionProjection<TFact, TSnapshot>(\n\tgraph: Graph,\n\tsnapshot: Node<TSnapshot>,\n\tname: string,\n\tfactory: string,\n\tselect: (fact: TSnapshot) => TFact,\n): Node<TFact> {\n\treturn graph.node<TFact>(\n\t\t[snapshot],\n\t\t(ctx) => {\n\t\t\tfor (const raw of depBatch(ctx, 0) ?? []) {\n\t\t\t\tctx.down([[\"DATA\", select(raw as TSnapshot)]]);\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tname,\n\t\t\tfactory,\n\t\t\tcompleteWhenDepsComplete: false,\n\t\t\terrorWhenDepsError: false,\n\t\t},\n\t);\n}\n\nexport function agenticMemoryProjection<TFact, T>(\n\tgraph: Graph,\n\tsnapshot: Node<AgenticMemoryProjectionSnapshot<T>>,\n\tname: string,\n\tfactory: string,\n\tselect: (fact: AgenticMemoryProjectionSnapshot<T>) => TFact,\n): Node<TFact> {\n\treturn graph.node<TFact>(\n\t\t[snapshot],\n\t\t(ctx) => {\n\t\t\tfor (const raw of depBatch(ctx, 0) ?? []) {\n\t\t\t\tctx.down([[\"DATA\", select(raw as AgenticMemoryProjectionSnapshot<T>)]]);\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tname,\n\t\t\tfactory,\n\t\t\tcompleteWhenDepsComplete: false,\n\t\t\terrorWhenDepsError: false,\n\t\t},\n\t);\n}\n\nexport function agenticMemoryContextProjection<T>(\n\tgraph: Graph,\n\tprojection: Node<AgenticMemoryProjectionSnapshot<T>>,\n\tretrieval: Node<MemoryRetrievalSnapshot<T>>,\n\tname: string,\n): Node<AgenticMemoryContext<T>> {\n\treturn graph.node<AgenticMemoryContext<T>>(\n\t\t[projection, retrieval],\n\t\t(ctx) => {\n\t\t\tconst projectionFact = depLatest(ctx, 0) as AgenticMemoryProjectionSnapshot<T> | undefined;\n\t\t\tconst retrievalFacts = depBatch(ctx, 1) ?? [];\n\t\t\tif (projectionFact === undefined || retrievalFacts.length === 0) return;\n\t\t\tfor (const raw of retrievalFacts) {\n\t\t\t\tctx.down([\n\t\t\t\t\t[\"DATA\", contextFromSnapshot(projectionFact, raw as MemoryRetrievalSnapshot<T>)],\n\t\t\t\t]);\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tname,\n\t\t\tfactory: \"agenticMemoryContext\",\n\t\t\tcompleteWhenDepsComplete: false,\n\t\t\terrorWhenDepsError: false,\n\t\t},\n\t);\n}\n\nexport function contextFromSnapshot<T>(\n\tprojection: AgenticMemoryProjectionSnapshot<T>,\n\tretrieval: MemoryRetrievalSnapshot<T>,\n): AgenticMemoryContext<T> {\n\tconst entries = retrieval.ranked.results.map((fragment) =>\n\t\tObject.freeze({\n\t\t\tfragmentId: fragment.id,\n\t\t\tpayload: fragment.payload,\n\t\t\tconfidence: fragment.confidence,\n\t\t\ttags: fragment.tags,\n\t\t\tsources: fragment.sources,\n\t\t\t...(projection.metadataByFragmentId[fragment.id] === undefined\n\t\t\t\t? {}\n\t\t\t\t: { record: projection.metadataByFragmentId[fragment.id] }),\n\t\t\tfragment,\n\t\t}),\n\t);\n\tconst hasContext = entries.length > 0;\n\tconst state = contextState(projection.status.state, retrieval.status.state);\n\treturn Object.freeze({\n\t\tstate,\n\t\tquery: retrieval.ranked.query,\n\t\tentries: Object.freeze(entries),\n\t\tcursor: retrieval.cursor,\n\t\terrors: projection.errors,\n\t\tretrievalErrors: retrieval.errors,\n\t\tcontextReady: hasContext && (state === \"ready\" || state === \"partial\"),\n\t});\n}\n\nexport function agenticMemoryRecordProjection<T>(\n\tgraph: Graph,\n\trecords: Node<readonly AgenticMemoryRecord<T>[]>,\n\tname: string,\n): Node<AgenticMemoryProjectionSnapshot<T>> {\n\treturn graph.node<AgenticMemoryProjectionSnapshot<T>>(\n\t\t[records],\n\t\t(ctx) => {\n\t\t\tconst state =\n\t\t\t\tctx.state.get<{ evaluation: number }>() ??\n\t\t\t\t({ evaluation: 0 } satisfies { evaluation: number });\n\t\t\tstate.evaluation += 1;\n\t\t\tconst rawRecords = (depBatch(ctx, 0) ?? []).at(-1);\n\t\t\tconst projected = validateAndProjectRecords<T>(rawRecords);\n\t\t\tconst cursor: AgenticMemoryProjectionCursor = Object.freeze({\n\t\t\t\tevaluation: state.evaluation,\n\t\t\t\tvalidRecords: projected.records.length,\n\t\t\t\tinvalidRecords: projected.invalidRecordIndexes.size,\n\t\t\t\tprojectedFragments: projected.fragments.length,\n\t\t\t});\n\t\t\tconst status: AgenticMemoryStatus = Object.freeze({\n\t\t\t\tstate: agenticStatusState(projected.errors.length, projected.records.length),\n\t\t\t\tcursor,\n\t\t\t});\n\t\t\tconst errors = Object.freeze(\n\t\t\t\tprojected.errors.map((error) =>\n\t\t\t\t\tObject.freeze({\n\t\t\t\t\t\t...error,\n\t\t\t\t\t\t...(error.validationErrors === undefined\n\t\t\t\t\t\t\t? {}\n\t\t\t\t\t\t\t: { validationErrors: Object.freeze([...error.validationErrors]) }),\n\t\t\t\t\t\tcursor,\n\t\t\t\t\t}),\n\t\t\t\t),\n\t\t\t);\n\t\t\tctx.state.set(state);\n\t\t\tctx.down([\n\t\t\t\t[\n\t\t\t\t\t\"DATA\",\n\t\t\t\t\tObject.freeze({\n\t\t\t\t\t\trecords: Object.freeze(projected.records),\n\t\t\t\t\t\tfragments: Object.freeze(projected.fragments),\n\t\t\t\t\t\tmetadataByFragmentId: Object.freeze(projected.metadataByFragmentId),\n\t\t\t\t\t\tstatus,\n\t\t\t\t\t\terrors,\n\t\t\t\t\t\tcursor,\n\t\t\t\t\t}),\n\t\t\t\t],\n\t\t\t]);\n\t\t},\n\t\t{\n\t\t\tname,\n\t\t\tfactory: \"agenticMemoryProjection\",\n\t\t\tcompleteWhenDepsComplete: false,\n\t\t\terrorWhenDepsError: false,\n\t\t},\n\t);\n}\n","import type { Graph } from \"../graph/graph.js\";\nimport { memoryRetrievalBundle } from \"../patterns/semantic-memory-graph.js\";\nimport {\n\tagenticMemoryContextProjection,\n\tagenticMemoryProjection,\n\tagenticMemoryRecordProjection,\n} from \"./agentic-memory-projection.js\";\nimport type { AgenticMemoryBundle, AgenticMemoryBundleOptions } from \"./agentic-memory-types.js\";\n\nexport function agenticMemoryBundle<T = unknown>(\n\tgraph: Graph,\n\topts: AgenticMemoryBundleOptions<T>,\n): AgenticMemoryBundle<T> {\n\tconst name = opts.name ?? \"agenticMemory\";\n\tconst projection = agenticMemoryRecordProjection<T>(graph, opts.records, `${name}/projection`);\n\tconst projectedRecords = agenticMemoryProjection(\n\t\tgraph,\n\t\tprojection,\n\t\t`${name}/records`,\n\t\t\"agenticMemoryRecords\",\n\t\t(fact) => fact.records,\n\t);\n\tconst projectedFragments = agenticMemoryProjection(\n\t\tgraph,\n\t\tprojection,\n\t\t`${name}/fragments`,\n\t\t\"agenticMemoryFragments\",\n\t\t(fact) => fact.fragments,\n\t);\n\tconst status = agenticMemoryProjection(\n\t\tgraph,\n\t\tprojection,\n\t\t`${name}/status`,\n\t\t\"agenticMemoryStatus\",\n\t\t(fact) => fact.status,\n\t);\n\tconst errors = agenticMemoryProjection(\n\t\tgraph,\n\t\tprojection,\n\t\t`${name}/errors`,\n\t\t\"agenticMemoryErrors\",\n\t\t(fact) => fact.errors,\n\t);\n\tconst retrieval = memoryRetrievalBundle<T>(graph, {\n\t\tname: `${name}/retrieval`,\n\t\tfragments: projectedFragments,\n\t\tquery: opts.query,\n\t});\n\tconst sources = agenticMemoryProjection(\n\t\tgraph,\n\t\tprojection,\n\t\t`${name}/sources`,\n\t\t\"agenticMemorySources\",\n\t\t(fact) =>\n\t\t\tObject.freeze(\n\t\t\t\tfact.fragments.map((fragment) =>\n\t\t\t\t\tObject.freeze({\n\t\t\t\t\t\tfragmentId: fragment.id,\n\t\t\t\t\t\t...(fact.metadataByFragmentId[fragment.id] === undefined\n\t\t\t\t\t\t\t? {}\n\t\t\t\t\t\t\t: { record: fact.metadataByFragmentId[fragment.id] }),\n\t\t\t\t\t\tsources: Object.freeze([...fragment.sources]),\n\t\t\t\t\t\t...(fragment.parentFragmentId === undefined\n\t\t\t\t\t\t\t? {}\n\t\t\t\t\t\t\t: { parentFragmentId: fragment.parentFragmentId }),\n\t\t\t\t\t\t...(fragment.provenance === undefined ? {} : { provenance: fragment.provenance }),\n\t\t\t\t\t}),\n\t\t\t\t),\n\t\t\t),\n\t);\n\tconst context = agenticMemoryContextProjection(\n\t\tgraph,\n\t\tprojection,\n\t\tretrieval.snapshot,\n\t\t`${name}/context`,\n\t);\n\n\treturn {\n\t\tinput: { records: opts.records, query: opts.query },\n\t\tprojection,\n\t\tretrieval,\n\t\tretrievalSnapshot: retrieval.snapshot,\n\t\trecords: projectedRecords,\n\t\tfragments: projectedFragments,\n\t\tsources,\n\t\tindexed: retrieval.indexed,\n\t\tranked: retrieval.ranked,\n\t\tcontext,\n\t\tstatus,\n\t\terrors,\n\t\tretrievalStatus: retrieval.status,\n\t\tretrievalErrors: retrieval.errors,\n\t\tcursor: retrieval.cursor,\n\t};\n}\n\n/**\n * D165 solution-level KG assertion projection.\n *\n * Records and explicit assertion drafts stay visible as declared deps. This\n * bundle validates references and shape, then emits DATA facts only; it does\n * not extract assertions, call LLMs, read/write storage, or mutate topology.\n */\n","import { depLatest } from \"../ctx/types.js\";\nimport type { Graph } from \"../graph/graph.js\";\nimport type { FactId } from \"../patterns/semantic-memory.js\";\nimport { solutionProjection } from \"./agentic-memory-projection.js\";\nimport {\n\tagenticStatusState,\n\terrorMessage,\n\tfreezeError,\n\tisDenseArrayOf,\n\tisNonEmptyString,\n\tisPlainRecord,\n\tsafeArrayLength,\n\tvalidateAndProjectRecords,\n\tvalidateAndSnapshotRecord,\n} from \"./agentic-memory-shared.js\";\nimport type {\n\tAgenticMemoryConsolidationBundle,\n\tAgenticMemoryConsolidationBundleOptions,\n\tAgenticMemoryConsolidationCommand,\n\tAgenticMemoryConsolidationCursor,\n\tAgenticMemoryConsolidationError,\n\tAgenticMemoryConsolidationOutcome,\n\tAgenticMemoryConsolidationRecordDraft,\n\tAgenticMemoryConsolidationRequest,\n\tAgenticMemoryConsolidationResult,\n\tAgenticMemoryConsolidationSnapshot,\n\tAgenticMemoryConsolidationStatus,\n\tAgenticMemoryError,\n\tAgenticMemoryRecord,\n\tAgenticMemoryRetentionError,\n} from \"./agentic-memory-types.js\";\n\nexport function agenticMemoryConsolidationBundle<T = unknown>(\n\tgraph: Graph,\n\topts: AgenticMemoryConsolidationBundleOptions<T>,\n): AgenticMemoryConsolidationBundle<T> {\n\tconst name = opts.name ?? \"agenticMemoryConsolidation\";\n\tconst projection = graph.node<AgenticMemoryConsolidationSnapshot<T>>(\n\t\t[opts.records, opts.requests, opts.outcomes],\n\t\t(ctx) => {\n\t\t\tconst state =\n\t\t\t\tctx.state.get<{ evaluation: number }>() ??\n\t\t\t\t({ evaluation: 0 } satisfies { evaluation: number });\n\t\t\tstate.evaluation += 1;\n\t\t\tconst recordProjection = validateAndProjectRecords<T>(depLatest(ctx, 0));\n\t\t\tconst requests = validateConsolidationRequests(depLatest(ctx, 1), recordProjection.records);\n\t\t\tconst outcomes = projectConsolidationOutcomes<T>(\n\t\t\t\tdepLatest(ctx, 2),\n\t\t\t\trequests.requests,\n\t\t\t\tstate.evaluation,\n\t\t\t);\n\t\t\tconst cursor: AgenticMemoryConsolidationCursor = Object.freeze({\n\t\t\t\tevaluation: state.evaluation,\n\t\t\t\tvalidRequests: requests.requests.length,\n\t\t\t\tvalidOutcomes: outcomes.validOutcomes,\n\t\t\t\tinvalidOutcomes: outcomes.invalidOutcomes,\n\t\t\t\tresults: outcomes.results.length,\n\t\t\t\tproposedRecordDrafts: outcomes.proposedRecordDrafts.length,\n\t\t\t});\n\t\t\tconst errors = Object.freeze(\n\t\t\t\t[\n\t\t\t\t\t...recordProjection.errors.map(consolidationErrorFromRecordError),\n\t\t\t\t\t...requests.errors.map(consolidationErrorFromRetentionError),\n\t\t\t\t\t...outcomes.errors,\n\t\t\t\t].map((error) => freezeError({ ...error, cursor })),\n\t\t\t);\n\t\t\tconst status: AgenticMemoryConsolidationStatus = Object.freeze({\n\t\t\t\tstate: agenticStatusState(errors.length, outcomes.results.length),\n\t\t\t\tcursor,\n\t\t\t});\n\t\t\tctx.state.set(state);\n\t\t\tctx.down([\n\t\t\t\t[\n\t\t\t\t\t\"DATA\",\n\t\t\t\t\tObject.freeze({\n\t\t\t\t\t\tresults: Object.freeze(outcomes.results),\n\t\t\t\t\t\tproposedRecordDrafts: Object.freeze(outcomes.proposedRecordDrafts),\n\t\t\t\t\t\tcommands: Object.freeze(outcomes.commands),\n\t\t\t\t\t\tstatus,\n\t\t\t\t\t\terrors,\n\t\t\t\t\t\tcursor,\n\t\t\t\t\t}),\n\t\t\t\t],\n\t\t\t]);\n\t\t},\n\t\t{\n\t\t\tname: `${name}/projection`,\n\t\t\tfactory: \"agenticMemoryConsolidation\",\n\t\t\tcompleteWhenDepsComplete: false,\n\t\t\terrorWhenDepsError: false,\n\t\t},\n\t);\n\treturn {\n\t\tinput: { records: opts.records, requests: opts.requests, outcomes: opts.outcomes },\n\t\tprojection,\n\t\tresults: solutionProjection(\n\t\t\tgraph,\n\t\t\tprojection,\n\t\t\t`${name}/results`,\n\t\t\t\"agenticMemoryConsolidationResults\",\n\t\t\t(fact) => fact.results,\n\t\t),\n\t\tproposedRecordDrafts: solutionProjection(\n\t\t\tgraph,\n\t\t\tprojection,\n\t\t\t`${name}/proposedRecordDrafts`,\n\t\t\t\"agenticMemoryConsolidationRecordDrafts\",\n\t\t\t(fact) => fact.proposedRecordDrafts,\n\t\t),\n\t\tcommands: solutionProjection(\n\t\t\tgraph,\n\t\t\tprojection,\n\t\t\t`${name}/commands`,\n\t\t\t\"agenticMemoryConsolidationCommands\",\n\t\t\t(fact) => fact.commands,\n\t\t),\n\t\tstatus: solutionProjection(\n\t\t\tgraph,\n\t\t\tprojection,\n\t\t\t`${name}/status`,\n\t\t\t\"agenticMemoryConsolidationStatus\",\n\t\t\t(fact) => fact.status,\n\t\t),\n\t\terrors: solutionProjection(\n\t\t\tgraph,\n\t\t\tprojection,\n\t\t\t`${name}/errors`,\n\t\t\t\"agenticMemoryConsolidationErrors\",\n\t\t\t(fact) => fact.errors,\n\t\t),\n\t\tcursor: solutionProjection(\n\t\t\tgraph,\n\t\t\tprojection,\n\t\t\t`${name}/cursor`,\n\t\t\t\"agenticMemoryConsolidationCursor\",\n\t\t\t(fact) => fact.cursor,\n\t\t),\n\t};\n}\n\n/** D168 deterministic context-packing bundle over explicit context text facts. */\n\nfunction validateConsolidationRequests<T>(\n\tvalue: unknown,\n\trecords: readonly AgenticMemoryRecord<T>[],\n): {\n\treadonly requests: readonly AgenticMemoryConsolidationRequest[];\n\treadonly errors: readonly Omit<AgenticMemoryRetentionError, \"cursor\">[];\n} {\n\tconst byId = new Map(records.map((record) => [record.id, record]));\n\tconst requests: AgenticMemoryConsolidationRequest[] = [];\n\tconst errors: Omit<AgenticMemoryRetentionError, \"cursor\">[] = [];\n\tif (!Array.isArray(value)) {\n\t\treturn {\n\t\t\trequests,\n\t\t\terrors: [\n\t\t\t\t{\n\t\t\t\t\tcode: \"invalid-commands-input\",\n\t\t\t\t\tmessage: \"agenticMemoryConsolidationBundle: requests input must be an array\",\n\t\t\t\t\tcommand: value,\n\t\t\t\t},\n\t\t\t],\n\t\t};\n\t}\n\tconst length = safeArrayLength(value);\n\tif (length === undefined) {\n\t\treturn {\n\t\t\trequests,\n\t\t\terrors: [\n\t\t\t\t{\n\t\t\t\t\tcode: \"invalid-commands-input\",\n\t\t\t\t\tmessage: \"agenticMemoryConsolidationBundle: requests input length could not be read\",\n\t\t\t\t\tcommand: value,\n\t\t\t\t},\n\t\t\t],\n\t\t};\n\t}\n\tconst seen = new Set<FactId>();\n\tfor (let i = 0; i < length; i += 1) {\n\t\tlet raw: unknown;\n\t\ttry {\n\t\t\tif (!Object.hasOwn(value, i)) {\n\t\t\t\tthrow new TypeError(\"request array must be dense\");\n\t\t\t}\n\t\t\traw = value[i];\n\t\t} catch (error) {\n\t\t\terrors.push({\n\t\t\t\tcode: \"invalid-command\",\n\t\t\t\tmessage: `agenticMemoryConsolidationBundle: request access failed: ${errorMessage(error)}`,\n\t\t\t\tindex: i,\n\t\t\t\tvalidationErrors: Object.freeze([\"request access failed\"]),\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tif (!isPlainRecord(raw)) {\n\t\t\terrors.push({\n\t\t\t\tcode: \"invalid-command\",\n\t\t\t\tmessage: \"agenticMemoryConsolidationBundle: request must be an object\",\n\t\t\t\tindex: i,\n\t\t\t\tcommand: raw,\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tconst id = isNonEmptyString(raw.id) ? raw.id : undefined;\n\t\tconst commandId = isNonEmptyString(raw.commandId) ? raw.commandId : undefined;\n\t\tconst recordIds = isDenseArrayOf(raw.recordIds, isNonEmptyString)\n\t\t\t? Object.freeze([...raw.recordIds])\n\t\t\t: undefined;\n\t\tconst validationErrors: string[] = [];\n\t\tif (id === undefined) validationErrors.push(\"request.id must be a non-empty string\");\n\t\tif (commandId === undefined) {\n\t\t\tvalidationErrors.push(\"request.commandId must be a non-empty string\");\n\t\t}\n\t\tif (recordIds === undefined || recordIds.length === 0) {\n\t\t\tvalidationErrors.push(\"request.recordIds must be a non-empty string array\");\n\t\t}\n\t\tif (raw.reason !== undefined && typeof raw.reason !== \"string\") {\n\t\t\tvalidationErrors.push(\"request.reason must be a string when present\");\n\t\t}\n\t\tif (id !== undefined && seen.has(id)) {\n\t\t\tvalidationErrors.push(`duplicate request id '${id}'`);\n\t\t}\n\t\tconst missing = (recordIds ?? []).filter((recordId) => !byId.has(recordId));\n\t\tif (missing.length > 0) {\n\t\t\terrors.push({\n\t\t\t\tcode: \"missing-record-ref\",\n\t\t\t\tmessage: \"agenticMemoryConsolidationBundle: request references missing records\",\n\t\t\t\tindex: i,\n\t\t\t\tcommandId,\n\t\t\t\trecordIds: Object.freeze(missing),\n\t\t\t\tcommand: raw,\n\t\t\t\tvalidationErrors: Object.freeze(\n\t\t\t\t\tmissing.map((recordId) => `record '${recordId}' is not projected`),\n\t\t\t\t),\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tif (\n\t\t\tvalidationErrors.length > 0 ||\n\t\t\tid === undefined ||\n\t\t\tcommandId === undefined ||\n\t\t\trecordIds === undefined\n\t\t) {\n\t\t\terrors.push({\n\t\t\t\tcode: \"invalid-command\",\n\t\t\t\tmessage: \"agenticMemoryConsolidationBundle: request is invalid\",\n\t\t\t\tindex: i,\n\t\t\t\tcommandId,\n\t\t\t\trecordIds,\n\t\t\t\tcommand: raw,\n\t\t\t\tvalidationErrors: Object.freeze(validationErrors),\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tseen.add(id);\n\t\trequests.push(\n\t\t\tObject.freeze({\n\t\t\t\tid,\n\t\t\t\tcommandId,\n\t\t\t\trecordIds,\n\t\t\t\t...(raw.reason === undefined ? {} : { reason: raw.reason as string }),\n\t\t\t}),\n\t\t);\n\t}\n\treturn { requests: Object.freeze(requests), errors };\n}\n\nfunction projectConsolidationOutcomes<T>(\n\tvalue: unknown,\n\trequests: readonly AgenticMemoryConsolidationRequest[],\n\tevaluation: number,\n): {\n\treadonly results: readonly AgenticMemoryConsolidationResult[];\n\treadonly proposedRecordDrafts: readonly AgenticMemoryConsolidationRecordDraft<T>[];\n\treadonly commands: readonly AgenticMemoryConsolidationCommand[];\n\treadonly errors: readonly Omit<AgenticMemoryConsolidationError, \"cursor\">[];\n\treadonly validOutcomes: number;\n\treadonly invalidOutcomes: number;\n} {\n\tconst byRequest = new Map(requests.map((request) => [request.id, request]));\n\tconst results: AgenticMemoryConsolidationResult[] = [];\n\tconst proposedRecordDrafts: AgenticMemoryConsolidationRecordDraft<T>[] = [];\n\tconst commands: AgenticMemoryConsolidationCommand[] = [];\n\tconst errors: Omit<AgenticMemoryConsolidationError, \"cursor\">[] = [];\n\tlet validOutcomes = 0;\n\tlet invalidOutcomes = 0;\n\tif (!Array.isArray(value)) {\n\t\treturn {\n\t\t\tresults,\n\t\t\tproposedRecordDrafts,\n\t\t\tcommands,\n\t\t\tvalidOutcomes,\n\t\t\tinvalidOutcomes: 1,\n\t\t\terrors: [\n\t\t\t\t{\n\t\t\t\t\tcode: \"invalid-outcomes-input\",\n\t\t\t\t\tmessage: \"agenticMemoryConsolidationBundle: outcomes input must be an array\",\n\t\t\t\t\toutcome: value,\n\t\t\t\t},\n\t\t\t],\n\t\t};\n\t}\n\tconst length = safeArrayLength(value);\n\tif (length === undefined) {\n\t\treturn {\n\t\t\tresults,\n\t\t\tproposedRecordDrafts,\n\t\t\tcommands,\n\t\t\tvalidOutcomes,\n\t\t\tinvalidOutcomes: 1,\n\t\t\terrors: [\n\t\t\t\t{\n\t\t\t\t\tcode: \"invalid-outcomes-input\",\n\t\t\t\t\tmessage: \"agenticMemoryConsolidationBundle: outcomes input length could not be read\",\n\t\t\t\t\toutcome: value,\n\t\t\t\t},\n\t\t\t],\n\t\t};\n\t}\n\tconst seenOutcomes = new Set<FactId>();\n\tfor (let i = 0; i < length; i += 1) {\n\t\tlet raw: unknown;\n\t\tlet outcome: {\n\t\t\treadonly outcome?: AgenticMemoryConsolidationOutcome<T>;\n\t\t\treadonly error?: Omit<AgenticMemoryConsolidationError, \"cursor\">;\n\t\t};\n\t\ttry {\n\t\t\tif (!Object.hasOwn(value, i)) {\n\t\t\t\tthrow new TypeError(\"outcome array must be dense\");\n\t\t\t}\n\t\t\traw = value[i];\n\t\t\toutcome = validateConsolidationOutcome<T>(raw, i);\n\t\t} catch (error) {\n\t\t\tinvalidOutcomes += 1;\n\t\t\terrors.push({\n\t\t\t\tcode: \"invalid-outcome\",\n\t\t\t\tmessage: `agenticMemoryConsolidationBundle: outcome access failed: ${errorMessage(error)}`,\n\t\t\t\tindex: i,\n\t\t\t\toutcome: raw,\n\t\t\t\tvalidationErrors: Object.freeze([\"outcome access failed\"]),\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tif (outcome.error !== undefined || outcome.outcome === undefined) {\n\t\t\tinvalidOutcomes += 1;\n\t\t\tif (outcome.error !== undefined) errors.push(outcome.error);\n\t\t\tcontinue;\n\t\t}\n\t\tconst validOutcome = outcome.outcome;\n\t\tif (seenOutcomes.has(validOutcome.id)) {\n\t\t\tinvalidOutcomes += 1;\n\t\t\terrors.push({\n\t\t\t\tcode: \"duplicate-outcome-id\",\n\t\t\t\tmessage: \"agenticMemoryConsolidationBundle: duplicate outcome id\",\n\t\t\t\tindex: i,\n\t\t\t\toutcomeId: validOutcome.id,\n\t\t\t\trequestId: validOutcome.requestId,\n\t\t\t\toutcome: raw,\n\t\t\t\tvalidationErrors: Object.freeze([`duplicate outcome id '${validOutcome.id}'`]),\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tconst request = byRequest.get(validOutcome.requestId);\n\t\tif (request === undefined) {\n\t\t\tinvalidOutcomes += 1;\n\t\t\terrors.push({\n\t\t\t\tcode: \"missing-request-ref\",\n\t\t\t\tmessage: \"agenticMemoryConsolidationBundle: outcome references missing request\",\n\t\t\t\tindex: i,\n\t\t\t\toutcomeId: validOutcome.id,\n\t\t\t\trequestId: validOutcome.requestId,\n\t\t\t\toutcome: raw,\n\t\t\t\tvalidationErrors: Object.freeze([`request '${validOutcome.requestId}' is not projected`]),\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tseenOutcomes.add(validOutcome.id);\n\t\tvalidOutcomes += 1;\n\t\tif (validOutcome.kind === \"failed\") {\n\t\t\tconst resultId = `${validOutcome.requestId}:${validOutcome.id}`;\n\t\t\tresults.push(\n\t\t\t\tObject.freeze({\n\t\t\t\t\tid: resultId,\n\t\t\t\t\trequestId: validOutcome.requestId,\n\t\t\t\t\toutcomeId: validOutcome.id,\n\t\t\t\t\tstate: \"failed\",\n\t\t\t\t\tsourceRecordIds: request.recordIds,\n\t\t\t\t\tproposedRecordIds: Object.freeze([]),\n\t\t\t\t\tmessage: validOutcome.message,\n\t\t\t\t\t...(validOutcome.provenance === undefined ? {} : { provenance: validOutcome.provenance }),\n\t\t\t\t}),\n\t\t\t);\n\t\t\tcommands.push(\n\t\t\t\tObject.freeze({\n\t\t\t\t\tid: `${resultId}:markFailed`,\n\t\t\t\t\tkind: \"markFailed\",\n\t\t\t\t\trequestId: validOutcome.requestId,\n\t\t\t\t\toutcomeId: validOutcome.id,\n\t\t\t\t\tmessage: validOutcome.message,\n\t\t\t\t}),\n\t\t\t);\n\t\t\tcontinue;\n\t\t}\n\t\tconst draftIds = validOutcome.records.map(\n\t\t\t(record) => `${validOutcome.requestId}:${validOutcome.id}:${record.id}`,\n\t\t);\n\t\tfor (let recordIndex = 0; recordIndex < validOutcome.records.length; recordIndex += 1) {\n\t\t\tproposedRecordDrafts.push(\n\t\t\t\tObject.freeze({\n\t\t\t\t\tid: draftIds[recordIndex] as FactId,\n\t\t\t\t\trequestId: validOutcome.requestId,\n\t\t\t\t\toutcomeId: validOutcome.id,\n\t\t\t\t\trecord: validOutcome.records[recordIndex] as AgenticMemoryRecord<T>,\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\t\tconst resultId = `${validOutcome.requestId}:${validOutcome.id}`;\n\t\tresults.push(\n\t\t\tObject.freeze({\n\t\t\t\tid: resultId,\n\t\t\t\trequestId: validOutcome.requestId,\n\t\t\t\toutcomeId: validOutcome.id,\n\t\t\t\tstate: \"proposed\",\n\t\t\t\tsourceRecordIds: request.recordIds,\n\t\t\t\tproposedRecordIds: Object.freeze(validOutcome.records.map((record) => record.id)),\n\t\t\t\t...(validOutcome.provenance === undefined ? {} : { provenance: validOutcome.provenance }),\n\t\t\t}),\n\t\t);\n\t\tcommands.push(\n\t\t\tObject.freeze({\n\t\t\t\tid: `${resultId}:proposeRecords`,\n\t\t\t\tkind: \"proposeRecords\",\n\t\t\t\trequestId: validOutcome.requestId,\n\t\t\t\toutcomeId: validOutcome.id,\n\t\t\t\tdraftIds: Object.freeze(draftIds),\n\t\t\t}),\n\t\t);\n\t}\n\tvoid evaluation;\n\treturn {\n\t\tresults: Object.freeze(results),\n\t\tproposedRecordDrafts: Object.freeze(proposedRecordDrafts),\n\t\tcommands: Object.freeze(commands),\n\t\terrors,\n\t\tvalidOutcomes,\n\t\tinvalidOutcomes,\n\t};\n}\n\nfunction validateConsolidationOutcome<T>(\n\tvalue: unknown,\n\tindex: number,\n): {\n\treadonly outcome?: AgenticMemoryConsolidationOutcome<T>;\n\treadonly error?: Omit<AgenticMemoryConsolidationError, \"cursor\">;\n} {\n\tif (!isPlainRecord(value)) {\n\t\treturn {\n\t\t\terror: {\n\t\t\t\tcode: \"invalid-outcome\",\n\t\t\t\tmessage: \"agenticMemoryConsolidationBundle: outcome must be an object\",\n\t\t\t\tindex,\n\t\t\t\toutcome: value,\n\t\t\t},\n\t\t};\n\t}\n\tconst errors: string[] = [];\n\tconst id = isNonEmptyString(value.id) ? value.id : undefined;\n\tconst requestId = isNonEmptyString(value.requestId) ? value.requestId : undefined;\n\tif (id === undefined) errors.push(\"outcome.id must be a non-empty string\");\n\tif (requestId === undefined) errors.push(\"outcome.requestId must be a non-empty string\");\n\tif (value.kind !== \"proposedRecords\" && value.kind !== \"failed\") {\n\t\terrors.push(\"outcome.kind must be proposedRecords or failed\");\n\t}\n\tif (value.provenance !== undefined && typeof value.provenance !== \"string\") {\n\t\terrors.push(\"outcome.provenance must be a string when present\");\n\t}\n\tif (value.kind === \"failed\" && !isNonEmptyString(value.message)) {\n\t\terrors.push(\"failed outcome.message must be a non-empty string\");\n\t}\n\tconst records: AgenticMemoryRecord<T>[] = [];\n\tif (value.kind === \"proposedRecords\") {\n\t\tif (!Array.isArray(value.records)) {\n\t\t\terrors.push(\"proposedRecords.records must be a non-empty array\");\n\t\t} else {\n\t\t\tconst recordsLength = safeArrayLength(value.records);\n\t\t\tconst seenRecordIds = new Set<FactId>();\n\t\t\tif (recordsLength === undefined || recordsLength === 0) {\n\t\t\t\terrors.push(\"proposedRecords.records must be a non-empty array\");\n\t\t\t}\n\t\t\tfor (let i = 0; i < (recordsLength ?? 0); i += 1) {\n\t\t\t\tlet result: {\n\t\t\t\t\treadonly record?: AgenticMemoryRecord<T>;\n\t\t\t\t\treadonly errors: Omit<AgenticMemoryError, \"cursor\">[];\n\t\t\t\t};\n\t\t\t\ttry {\n\t\t\t\t\tif (!Object.hasOwn(value.records, i)) {\n\t\t\t\t\t\tthrow new TypeError(\"proposedRecords.records must be dense\");\n\t\t\t\t\t}\n\t\t\t\t\tresult = validateAndSnapshotRecord<T>(value.records[i], i);\n\t\t\t\t} catch (error) {\n\t\t\t\t\terrors.push(`records[${i}]: record access failed: ${errorMessage(error)}`);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (result.record === undefined || result.errors.length > 0) {\n\t\t\t\t\terrors.push(\n\t\t\t\t\t\t...result.errors\n\t\t\t\t\t\t\t.flatMap((error) => error.validationErrors ?? [error.message])\n\t\t\t\t\t\t\t.map((error) => `records[${i}]: ${error}`),\n\t\t\t\t\t);\n\t\t\t\t} else if (seenRecordIds.has(result.record.id)) {\n\t\t\t\t\terrors.push(`records[${i}]: duplicate proposed record id '${result.record.id}'`);\n\t\t\t\t} else {\n\t\t\t\t\tseenRecordIds.add(result.record.id);\n\t\t\t\t\trecords.push(result.record);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tif (errors.length > 0 || id === undefined || requestId === undefined) {\n\t\treturn {\n\t\t\terror: {\n\t\t\t\tcode: value.kind === \"proposedRecords\" ? \"invalid-proposed-record\" : \"invalid-outcome\",\n\t\t\t\tmessage: \"agenticMemoryConsolidationBundle: outcome is invalid\",\n\t\t\t\tindex,\n\t\t\t\toutcomeId: id,\n\t\t\t\trequestId,\n\t\t\t\toutcome: value,\n\t\t\t\tvalidationErrors: Object.freeze(errors),\n\t\t\t},\n\t\t};\n\t}\n\tif (value.kind === \"failed\") {\n\t\treturn {\n\t\t\toutcome: Object.freeze({\n\t\t\t\tid,\n\t\t\t\trequestId,\n\t\t\t\tkind: \"failed\",\n\t\t\t\tmessage: value.message as string,\n\t\t\t\t...(value.provenance === undefined ? {} : { provenance: value.provenance as string }),\n\t\t\t}),\n\t\t};\n\t}\n\treturn {\n\t\toutcome: Object.freeze({\n\t\t\tid,\n\t\t\trequestId,\n\t\t\tkind: \"proposedRecords\",\n\t\t\trecords: Object.freeze(records),\n\t\t\t...(value.provenance === undefined ? {} : { provenance: value.provenance as string }),\n\t\t}),\n\t};\n}\n\nfunction consolidationErrorFromRecordError(\n\terror: Omit<AgenticMemoryError, \"cursor\">,\n): Omit<AgenticMemoryConsolidationError, \"cursor\"> {\n\treturn {\n\t\t...error,\n\t\tcode: error.code,\n\t};\n}\n\nfunction consolidationErrorFromRetentionError(\n\terror: Omit<AgenticMemoryRetentionError, \"cursor\">,\n): Omit<AgenticMemoryConsolidationError, \"cursor\"> {\n\treturn {\n\t\t...error,\n\t\tcode: error.code,\n\t};\n}\n","import { depLatest } from \"../ctx/types.js\";\nimport type { Graph } from \"../graph/graph.js\";\nimport type { FactId } from \"../patterns/semantic-memory.js\";\nimport { solutionProjection } from \"./agentic-memory-projection.js\";\nimport {\n\tagenticStatusState,\n\tassertStrictJsonValue,\n\terrorMessage,\n\tfreezeError,\n\tisNonEmptyString,\n\tisPlainRecord,\n\tsafeArrayLength,\n\tvalidateRecordMetadata,\n} from \"./agentic-memory-shared.js\";\nimport type {\n\tAgenticMemoryContextEntry,\n\tAgenticMemoryContextPackingBundle,\n\tAgenticMemoryContextPackingBundleOptions,\n\tAgenticMemoryContextPackingCursor,\n\tAgenticMemoryContextPackingError,\n\tAgenticMemoryContextPackingPolicy,\n\tAgenticMemoryContextPackingSnapshot,\n\tAgenticMemoryContextPackingStatus,\n\tAgenticMemoryContextText,\n\tAgenticMemoryPackedContext,\n\tAgenticMemoryPackedContextEntry,\n\tStrictJsonValue,\n\tValidatedPackingContext,\n} from \"./agentic-memory-types.js\";\n\nexport function agenticMemoryContextPackingBundle<T = unknown>(\n\tgraph: Graph,\n\topts: AgenticMemoryContextPackingBundleOptions<T>,\n): AgenticMemoryContextPackingBundle<T> {\n\tconst name = opts.name ?? \"agenticMemoryContextPacking\";\n\tconst projection = graph.node<AgenticMemoryContextPackingSnapshot>(\n\t\t[opts.context, opts.texts, opts.policy],\n\t\t(ctx) => {\n\t\t\tconst state =\n\t\t\t\tctx.state.get<{ evaluation: number }>() ??\n\t\t\t\t({ evaluation: 0 } satisfies { evaluation: number });\n\t\t\tstate.evaluation += 1;\n\t\t\tconst packed = packContext(\n\t\t\t\tdepLatest(ctx, 0),\n\t\t\t\tdepLatest(ctx, 1),\n\t\t\t\tdepLatest(ctx, 2),\n\t\t\t\tstate.evaluation,\n\t\t\t);\n\t\t\tctx.state.set(state);\n\t\t\tctx.down([[\"DATA\", packed]]);\n\t\t},\n\t\t{\n\t\t\tname: `${name}/projection`,\n\t\t\tfactory: \"agenticMemoryContextPacking\",\n\t\t\tcompleteWhenDepsComplete: false,\n\t\t\terrorWhenDepsError: false,\n\t\t},\n\t);\n\treturn {\n\t\tinput: { context: opts.context, texts: opts.texts, policy: opts.policy },\n\t\tprojection,\n\t\tpackedContext: solutionProjection(\n\t\t\tgraph,\n\t\t\tprojection,\n\t\t\t`${name}/packedContext`,\n\t\t\t\"agenticMemoryPackedContext\",\n\t\t\t(fact) => fact.packedContext,\n\t\t),\n\t\tstatus: solutionProjection(\n\t\t\tgraph,\n\t\t\tprojection,\n\t\t\t`${name}/status`,\n\t\t\t\"agenticMemoryContextPackingStatus\",\n\t\t\t(fact) => fact.status,\n\t\t),\n\t\terrors: solutionProjection(\n\t\t\tgraph,\n\t\t\tprojection,\n\t\t\t`${name}/errors`,\n\t\t\t\"agenticMemoryContextPackingErrors\",\n\t\t\t(fact) => fact.errors,\n\t\t),\n\t\tcursor: solutionProjection(\n\t\t\tgraph,\n\t\t\tprojection,\n\t\t\t`${name}/cursor`,\n\t\t\t\"agenticMemoryContextPackingCursor\",\n\t\t\t(fact) => fact.cursor,\n\t\t),\n\t};\n}\n\nfunction packContext(\n\tcontextValue: unknown,\n\ttextsValue: unknown,\n\tpolicyValue: unknown,\n\tevaluation: number,\n): AgenticMemoryContextPackingSnapshot {\n\tconst errors: Omit<AgenticMemoryContextPackingError, \"cursor\">[] = [];\n\tconst context = validatePackingContext(contextValue, errors);\n\tconst texts = validateContextTexts(textsValue, errors);\n\tconst policy = validatePackingPolicy(policyValue, errors);\n\tconst packedEntries: AgenticMemoryPackedContextEntry[] = [];\n\tlet omittedEntries = 0;\n\tlet totalChars = 0;\n\tlet totalCost = 0;\n\tif (context !== undefined && policy !== undefined) {\n\t\tfor (const entry of context.entries) {\n\t\t\tconst textFact = texts.get(entry.fragmentId);\n\t\t\tif (textFact === undefined) {\n\t\t\t\tomittedEntries += 1;\n\t\t\t\terrors.push({\n\t\t\t\t\tcode: \"missing-text\",\n\t\t\t\t\tmessage: \"agenticMemoryContextPackingBundle: missing text projection for context entry\",\n\t\t\t\t\tfragmentId: entry.fragmentId,\n\t\t\t\t\tvalidationErrors: [`missing text for fragment '${entry.fragmentId}'`],\n\t\t\t\t});\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst cost = textFact.cost ?? textFact.text.length;\n\t\t\tconst nextEntries = packedEntries.length + 1;\n\t\t\tconst separatorChars = packedEntries.length === 0 ? 0 : 2;\n\t\t\tconst nextChars = totalChars + separatorChars + textFact.text.length;\n\t\t\tconst nextCost = totalCost + cost;\n\t\t\tconst exceeds =\n\t\t\t\t(policy.maxEntries !== undefined && nextEntries > policy.maxEntries) ||\n\t\t\t\t(policy.maxChars !== undefined && nextChars > policy.maxChars) ||\n\t\t\t\t(policy.maxCost !== undefined && nextCost > policy.maxCost);\n\t\t\tif (exceeds) {\n\t\t\t\tomittedEntries += 1;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst packedEntry: AgenticMemoryPackedContextEntry = Object.freeze({\n\t\t\t\tfragmentId: entry.fragmentId,\n\t\t\t\ttext: textFact.text,\n\t\t\t\tcost,\n\t\t\t\tchars: textFact.text.length,\n\t\t\t\t...(entry.record === undefined ? {} : { record: entry.record }),\n\t\t\t\t...(policy.includeMetadata && textFact.metadata !== undefined\n\t\t\t\t\t? { metadata: textFact.metadata }\n\t\t\t\t\t: {}),\n\t\t\t});\n\t\t\tpackedEntries.push(packedEntry);\n\t\t\ttotalChars = nextChars;\n\t\t\ttotalCost = nextCost;\n\t\t}\n\t}\n\tconst cursor: AgenticMemoryContextPackingCursor = Object.freeze({\n\t\tevaluation,\n\t\tinputEntries: context?.entries.length ?? 0,\n\t\tpackedEntries: packedEntries.length,\n\t\tomittedEntries,\n\t\ttotalChars,\n\t\ttotalCost,\n\t});\n\tconst errorFacts = Object.freeze(\n\t\terrors.map((error) =>\n\t\t\tfreezeError({\n\t\t\t\t...error,\n\t\t\t\tcursor,\n\t\t\t}),\n\t\t),\n\t);\n\tconst packedContext: AgenticMemoryPackedContext = Object.freeze({\n\t\tentries: Object.freeze(packedEntries),\n\t\ttext: packedEntries.map((entry) => entry.text).join(\"\\n\\n\"),\n\t\ttotalChars,\n\t\ttotalCost,\n\t\ttruncated: omittedEntries > 0,\n\t});\n\tconst status: AgenticMemoryContextPackingStatus = Object.freeze({\n\t\tstate: agenticStatusState(errorFacts.length, packedEntries.length),\n\t\tcursor,\n\t});\n\treturn Object.freeze({\n\t\tpackedContext,\n\t\tstatus,\n\t\terrors: errorFacts,\n\t\tcursor,\n\t});\n}\n\nfunction validatePackingContext(\n\tvalue: unknown,\n\terrors: Omit<AgenticMemoryContextPackingError, \"cursor\">[],\n): ValidatedPackingContext | undefined {\n\tif (!isPlainRecord(value)) {\n\t\terrors.push({\n\t\t\tcode: \"invalid-context\",\n\t\t\tmessage: \"agenticMemoryContextPackingBundle: context must be an AgenticMemoryContext fact\",\n\t\t\tvalue,\n\t\t});\n\t\treturn undefined;\n\t}\n\tlet entriesValue: unknown;\n\ttry {\n\t\tentriesValue = value.entries;\n\t} catch (error) {\n\t\terrors.push({\n\t\t\tcode: \"invalid-context\",\n\t\t\tmessage: `agenticMemoryContextPackingBundle: context entries access failed: ${errorMessage(error)}`,\n\t\t\tvalue,\n\t\t\tvalidationErrors: [\"context entries access failed\"],\n\t\t});\n\t\treturn undefined;\n\t}\n\tif (!Array.isArray(entriesValue)) {\n\t\terrors.push({\n\t\t\tcode: \"invalid-context\",\n\t\t\tmessage: \"agenticMemoryContextPackingBundle: context must be an AgenticMemoryContext fact\",\n\t\t\tvalue,\n\t\t\tvalidationErrors: [\"context.entries must be an array\"],\n\t\t});\n\t\treturn undefined;\n\t}\n\tconst length = safeArrayLength(entriesValue);\n\tif (length === undefined) {\n\t\terrors.push({\n\t\t\tcode: \"invalid-context\",\n\t\t\tmessage: \"agenticMemoryContextPackingBundle: context entries length could not be read\",\n\t\t\tvalue,\n\t\t\tvalidationErrors: [\"context.entries length could not be read\"],\n\t\t});\n\t\treturn undefined;\n\t}\n\tconst entries: AgenticMemoryContextEntry[] = [];\n\tfor (let i = 0; i < length; i += 1) {\n\t\tlet raw: unknown;\n\t\ttry {\n\t\t\traw = entriesValue[i];\n\t\t\tif (!isPlainRecord(raw) || !isNonEmptyString(raw.fragmentId)) {\n\t\t\t\terrors.push({\n\t\t\t\t\tcode: \"invalid-context\",\n\t\t\t\t\tmessage: \"agenticMemoryContextPackingBundle: context entry is invalid\",\n\t\t\t\t\tindex: i,\n\t\t\t\t\tvalue: raw,\n\t\t\t\t\tvalidationErrors: [\"context entry fragmentId must be a non-empty string\"],\n\t\t\t\t});\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst record = validateRecordMetadata(raw.record);\n\t\t\tif (!record.ok) {\n\t\t\t\terrors.push({\n\t\t\t\t\tcode: \"invalid-context\",\n\t\t\t\t\tmessage: \"agenticMemoryContextPackingBundle: context entry record metadata is invalid\",\n\t\t\t\t\tindex: i,\n\t\t\t\t\tfragmentId: raw.fragmentId,\n\t\t\t\t\tvalue: raw,\n\t\t\t\t\tvalidationErrors: Object.freeze(record.errors),\n\t\t\t\t});\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tentries.push(\n\t\t\t\tObject.freeze({\n\t\t\t\t\tfragmentId: raw.fragmentId,\n\t\t\t\t\t...(record.metadata === undefined ? {} : { record: record.metadata }),\n\t\t\t\t}) as AgenticMemoryContextEntry,\n\t\t\t);\n\t\t} catch (error) {\n\t\t\terrors.push({\n\t\t\t\tcode: \"invalid-context\",\n\t\t\t\tmessage: `agenticMemoryContextPackingBundle: context entry access failed: ${errorMessage(error)}`,\n\t\t\t\tindex: i,\n\t\t\t\tvalue: raw,\n\t\t\t\tvalidationErrors: [\"context entry access failed\"],\n\t\t\t});\n\t\t}\n\t}\n\treturn Object.freeze({\n\t\tentries: Object.freeze(entries),\n\t});\n}\n\nfunction validateContextTexts(\n\tvalue: unknown,\n\terrors: Omit<AgenticMemoryContextPackingError, \"cursor\">[],\n): Map<FactId, AgenticMemoryContextText> {\n\tconst out = new Map<FactId, AgenticMemoryContextText>();\n\tif (!Array.isArray(value)) {\n\t\terrors.push({\n\t\t\tcode: \"invalid-texts-input\",\n\t\t\tmessage: \"agenticMemoryContextPackingBundle: texts input must be an array\",\n\t\t\tvalue,\n\t\t});\n\t\treturn out;\n\t}\n\tconst length = safeArrayLength(value);\n\tif (length === undefined) {\n\t\terrors.push({\n\t\t\tcode: \"invalid-texts-input\",\n\t\t\tmessage: \"agenticMemoryContextPackingBundle: texts input length could not be read\",\n\t\t\tvalue,\n\t\t});\n\t\treturn out;\n\t}\n\tfor (let i = 0; i < length; i += 1) {\n\t\ttry {\n\t\t\tconst raw = value[i];\n\t\t\tconst result = validateContextText(raw, i);\n\t\t\tif (result.error !== undefined) {\n\t\t\t\terrors.push(result.error);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (result.text === undefined) {\n\t\t\t\terrors.push({\n\t\t\t\t\tcode: \"invalid-text\",\n\t\t\t\t\tmessage: \"agenticMemoryContextPackingBundle: text fact is invalid\",\n\t\t\t\t\tindex: i,\n\t\t\t\t\tvalue: raw,\n\t\t\t\t\tvalidationErrors: [\"text validation returned no fact\"],\n\t\t\t\t});\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (out.has(result.text.fragmentId)) {\n\t\t\t\terrors.push({\n\t\t\t\t\tcode: \"duplicate-text-fragment-id\",\n\t\t\t\t\tmessage: \"agenticMemoryContextPackingBundle: duplicate text fragment id\",\n\t\t\t\t\tindex: i,\n\t\t\t\t\tfragmentId: result.text.fragmentId,\n\t\t\t\t\tvalue: raw,\n\t\t\t\t\tvalidationErrors: [`duplicate text fragment id '${result.text.fragmentId}'`],\n\t\t\t\t});\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tout.set(result.text.fragmentId, result.text);\n\t\t} catch (error) {\n\t\t\terrors.push({\n\t\t\t\tcode: \"invalid-text\",\n\t\t\t\tmessage: `agenticMemoryContextPackingBundle: text access failed: ${errorMessage(error)}`,\n\t\t\t\tindex: i,\n\t\t\t\tvalidationErrors: [\"text access failed\"],\n\t\t\t});\n\t\t}\n\t}\n\treturn out;\n}\n\nfunction validateContextText(\n\tvalue: unknown,\n\tindex: number,\n): {\n\treadonly text?: AgenticMemoryContextText;\n\treadonly error?: Omit<AgenticMemoryContextPackingError, \"cursor\">;\n} {\n\tif (!isPlainRecord(value)) {\n\t\treturn {\n\t\t\terror: {\n\t\t\t\tcode: \"invalid-text\",\n\t\t\t\tmessage: \"agenticMemoryContextPackingBundle: text fact must be an object\",\n\t\t\t\tindex,\n\t\t\t\tvalue,\n\t\t\t},\n\t\t};\n\t}\n\tconst errors: string[] = [];\n\tif (!isNonEmptyString(value.fragmentId)) errors.push(\"fragmentId must be a non-empty string\");\n\tif (typeof value.text !== \"string\") errors.push(\"text must be a string\");\n\tif (\n\t\tvalue.cost !== undefined &&\n\t\t(typeof value.cost !== \"number\" || !Number.isFinite(value.cost) || value.cost < 0)\n\t) {\n\t\terrors.push(\"cost must be a finite number >= 0\");\n\t}\n\tif (value.metadata !== undefined) {\n\t\ttry {\n\t\t\tif (!isPlainRecord(value.metadata)) {\n\t\t\t\tthrow new TypeError(\"metadata must be a plain object when present\");\n\t\t\t}\n\t\t\tassertStrictJsonValue(value.metadata, \"metadata\");\n\t\t} catch (error) {\n\t\t\terrors.push(errorMessage(error));\n\t\t}\n\t}\n\tif (errors.length > 0) {\n\t\treturn {\n\t\t\terror: {\n\t\t\t\tcode: \"invalid-text\",\n\t\t\t\tmessage: \"agenticMemoryContextPackingBundle: text fact is invalid\",\n\t\t\t\tindex,\n\t\t\t\tfragmentId: typeof value.fragmentId === \"string\" ? value.fragmentId : undefined,\n\t\t\t\tvalue,\n\t\t\t\tvalidationErrors: Object.freeze(errors),\n\t\t\t},\n\t\t};\n\t}\n\treturn {\n\t\ttext: Object.freeze({\n\t\t\tfragmentId: value.fragmentId as string,\n\t\t\ttext: value.text as string,\n\t\t\t...(value.cost === undefined ? {} : { cost: value.cost as number }),\n\t\t\t...(value.metadata === undefined\n\t\t\t\t? {}\n\t\t\t\t: { metadata: Object.freeze({ ...(value.metadata as Record<string, StrictJsonValue>) }) }),\n\t\t}),\n\t};\n}\n\nfunction validatePackingPolicy(\n\tvalue: unknown,\n\terrors: Omit<AgenticMemoryContextPackingError, \"cursor\">[],\n): AgenticMemoryContextPackingPolicy | undefined {\n\tif (!isPlainRecord(value)) {\n\t\terrors.push({\n\t\t\tcode: \"invalid-policy\",\n\t\t\tmessage: \"agenticMemoryContextPackingBundle: policy must be an object\",\n\t\t\tvalue,\n\t\t});\n\t\treturn undefined;\n\t}\n\tconst validation: string[] = [];\n\tlet maxEntries: unknown;\n\tlet maxChars: unknown;\n\tlet maxCost: unknown;\n\tlet includeMetadata: unknown;\n\ttry {\n\t\tmaxEntries = value.maxEntries;\n\t\tmaxChars = value.maxChars;\n\t\tmaxCost = value.maxCost;\n\t\tincludeMetadata = value.includeMetadata;\n\t} catch (error) {\n\t\terrors.push({\n\t\t\tcode: \"invalid-policy\",\n\t\t\tmessage: `agenticMemoryContextPackingBundle: policy access failed: ${errorMessage(error)}`,\n\t\t\tvalue,\n\t\t\tvalidationErrors: [\"policy access failed\"],\n\t\t});\n\t\treturn undefined;\n\t}\n\tif (\n\t\tmaxEntries !== undefined &&\n\t\t(typeof maxEntries !== \"number\" || !Number.isSafeInteger(maxEntries) || maxEntries < 0)\n\t) {\n\t\tvalidation.push(\"maxEntries must be a safe integer >= 0\");\n\t}\n\tif (\n\t\tmaxChars !== undefined &&\n\t\t(typeof maxChars !== \"number\" || !Number.isSafeInteger(maxChars) || maxChars < 0)\n\t) {\n\t\tvalidation.push(\"maxChars must be a safe integer >= 0\");\n\t}\n\tif (\n\t\tmaxCost !== undefined &&\n\t\t(typeof maxCost !== \"number\" || !Number.isFinite(maxCost) || maxCost < 0)\n\t) {\n\t\tvalidation.push(\"maxCost must be a finite number >= 0\");\n\t}\n\tif (includeMetadata !== undefined && typeof includeMetadata !== \"boolean\") {\n\t\tvalidation.push(\"includeMetadata must be a boolean when present\");\n\t}\n\tif (validation.length > 0) {\n\t\terrors.push({\n\t\t\tcode: \"invalid-policy\",\n\t\t\tmessage: \"agenticMemoryContextPackingBundle: policy is invalid\",\n\t\t\tvalue,\n\t\t\tvalidationErrors: Object.freeze(validation),\n\t\t});\n\t\treturn undefined;\n\t}\n\treturn Object.freeze({\n\t\t...(maxEntries === undefined ? {} : { maxEntries: maxEntries as number }),\n\t\t...(maxChars === undefined ? {} : { maxChars: maxChars as number }),\n\t\t...(maxCost === undefined ? {} : { maxCost: maxCost as number }),\n\t\t...(includeMetadata === undefined ? {} : { includeMetadata: includeMetadata as boolean }),\n\t});\n}\n","import { type Codec, strictJsonCodec } from \"../json/codec.js\";\nimport type { MemoryFragment } from \"../patterns/semantic-memory.js\";\nimport {\n\tassertAgenticMemoryRecordCodecShape,\n\tassertArtifactKindValue,\n\tassertConfidence,\n\tassertExactKeys,\n\tassertFiniteNumberArray,\n\tassertKindValue,\n\tassertNonEmptyString,\n\tassertPersistenceLevelValue,\n\tassertScopeFrame,\n\tassertStrictJsonValue,\n\tassertString,\n\tassertStringArray,\n\tdecimalBigIntString,\n\tisPlainRecord,\n\tparseDecimalBigInt,\n\tvalidateAndSnapshotRecord,\n} from \"./agentic-memory-shared.js\";\nimport type {\n\tAgenticMemoryFragmentFrame,\n\tAgenticMemoryRecord,\n\tAgenticMemoryRecordFrame,\n\tStrictJsonValue,\n} from \"./agentic-memory-types.js\";\n\nexport const AGENTIC_MEMORY_RECORD_FRAME_FORMAT = \"graphrefly.agenticMemoryRecord\";\nexport const AGENTIC_MEMORY_RECORD_FRAME_VERSION = 1;\n\nexport function agenticMemoryRecordFrame<TJson extends StrictJsonValue>(\n\trecord: AgenticMemoryRecord<TJson>,\n): AgenticMemoryRecordFrame<TJson> {\n\tconst result = validateAndSnapshotRecord<TJson>(record, 0);\n\tif (result.errors.length > 0 || result.record === undefined) {\n\t\tthrow new TypeError(\n\t\t\t`agenticMemoryRecordFrame: invalid record: ${result.errors\n\t\t\t\t.flatMap((error) => error.validationErrors ?? [error.message])\n\t\t\t\t.join(\"; \")}`,\n\t\t);\n\t}\n\tassertAgenticMemoryRecordCodecShape(record);\n\tassertStrictJsonValue(result.record.fragment.payload, \"record.fragment.payload\");\n\treturn Object.freeze({\n\t\tformat: AGENTIC_MEMORY_RECORD_FRAME_FORMAT,\n\t\tversion: AGENTIC_MEMORY_RECORD_FRAME_VERSION,\n\t\trecord: Object.freeze({\n\t\t\tid: result.record.id,\n\t\t\tkind: result.record.kind,\n\t\t\tpersistenceLevel: result.record.persistenceLevel,\n\t\t\tartifactKind: result.record.artifactKind,\n\t\t\t...(result.record.scope === undefined ? {} : { scope: result.record.scope }),\n\t\t\tfragment: fragmentFrame(result.record.fragment as MemoryFragment<TJson>),\n\t\t}),\n\t});\n}\n\n/** Assert and snapshot a decoded D166 record frame. Unknown fields fail honestly. */\nexport function assertAgenticMemoryRecordFrame<TJson extends StrictJsonValue = StrictJsonValue>(\n\tvalue: unknown,\n): AgenticMemoryRecordFrame<TJson> {\n\tif (!isPlainRecord(value))\n\t\tthrow new TypeError(\"agenticMemoryRecordFrame: frame must be an object\");\n\tassertStrictJsonValue(value, \"agenticMemoryRecordFrame\");\n\tassertExactKeys(value, [\"format\", \"record\", \"version\"], \"agenticMemoryRecordFrame\");\n\tif (value.format !== AGENTIC_MEMORY_RECORD_FRAME_FORMAT) {\n\t\tthrow new TypeError(\"agenticMemoryRecordFrame: invalid format\");\n\t}\n\tif (value.version !== AGENTIC_MEMORY_RECORD_FRAME_VERSION) {\n\t\tthrow new TypeError(\"agenticMemoryRecordFrame: invalid version\");\n\t}\n\tconst rawRecord = value.record;\n\tif (!isPlainRecord(rawRecord)) {\n\t\tthrow new TypeError(\"agenticMemoryRecordFrame: record must be an object\");\n\t}\n\tassertExactKeys(\n\t\trawRecord,\n\t\trawRecord.scope === undefined\n\t\t\t? [\"artifactKind\", \"fragment\", \"id\", \"kind\", \"persistenceLevel\"]\n\t\t\t: [\"artifactKind\", \"fragment\", \"id\", \"kind\", \"persistenceLevel\", \"scope\"],\n\t\t\"agenticMemoryRecordFrame.record\",\n\t);\n\tconst rawFragment = rawRecord.fragment;\n\tif (!isPlainRecord(rawFragment)) {\n\t\tthrow new TypeError(\"agenticMemoryRecordFrame: fragment must be an object\");\n\t}\n\tassertExactKeys(\n\t\trawFragment,\n\t\t[\n\t\t\t\"id\",\n\t\t\t\"payload\",\n\t\t\t\"tNs\",\n\t\t\t...(rawFragment.validFrom === undefined ? [] : [\"validFrom\"]),\n\t\t\t...(rawFragment.validTo === undefined ? [] : [\"validTo\"]),\n\t\t\t\"confidence\",\n\t\t\t\"tags\",\n\t\t\t\"sources\",\n\t\t\t...(rawFragment.embedding === undefined ? [] : [\"embedding\"]),\n\t\t\t...(rawFragment.parentFragmentId === undefined ? [] : [\"parentFragmentId\"]),\n\t\t\t...(rawFragment.provenance === undefined ? [] : [\"provenance\"]),\n\t\t],\n\t\t\"agenticMemoryRecordFrame.record.fragment\",\n\t);\n\tif (rawRecord.scope !== undefined) assertScopeFrame(rawRecord.scope);\n\tconst frame = value as unknown as AgenticMemoryRecordFrame<TJson>;\n\tconst decoded = recordFromFrame(frame);\n\tconst roundtrip = agenticMemoryRecordFrame(decoded);\n\treturn roundtrip as AgenticMemoryRecordFrame<TJson>;\n}\n\n/** Strict canonical JSON codec for D166 AgenticMemoryRecordFrame values. */\nexport function agenticMemoryRecordFrameCodec<\n\tTJson extends StrictJsonValue = StrictJsonValue,\n>(): Codec<AgenticMemoryRecordFrame<TJson>> {\n\treturn {\n\t\tencode(value: AgenticMemoryRecordFrame<TJson>): Uint8Array {\n\t\t\treturn strictJsonCodec.encode(assertAgenticMemoryRecordFrame<TJson>(value));\n\t\t},\n\t\tdecode(bytes: Uint8Array): AgenticMemoryRecordFrame<TJson> {\n\t\t\treturn assertAgenticMemoryRecordFrame<TJson>(strictJsonCodec.decode(bytes));\n\t\t},\n\t};\n}\n\n/** Strict canonical JSON codec that persists records and decodes bigint fields back to bigint. */\nexport function agenticMemoryRecordCodec<TJson extends StrictJsonValue = StrictJsonValue>(): Codec<\n\tAgenticMemoryRecord<TJson>\n> {\n\tconst frameCodec = agenticMemoryRecordFrameCodec<TJson>();\n\treturn {\n\t\tencode(value: AgenticMemoryRecord<TJson>): Uint8Array {\n\t\t\treturn frameCodec.encode(agenticMemoryRecordFrame(value));\n\t\t},\n\t\tdecode(bytes: Uint8Array): AgenticMemoryRecord<TJson> {\n\t\t\treturn recordFromFrame(frameCodec.decode(bytes));\n\t\t},\n\t};\n}\n\n/**\n * D167 solution-level retention command projection.\n *\n * Archive/restore/setPersistenceLevel are derived views over current records;\n * requestConsolidation emits request facts only.\n */\n\nfunction fragmentFrame<TJson extends StrictJsonValue>(\n\tfragment: MemoryFragment<TJson>,\n): AgenticMemoryFragmentFrame<TJson> {\n\treturn Object.freeze({\n\t\tid: fragment.id,\n\t\tpayload: fragment.payload,\n\t\ttNs: decimalBigIntString(fragment.tNs, \"fragment.tNs\"),\n\t\t...(fragment.validFrom === undefined\n\t\t\t? {}\n\t\t\t: { validFrom: decimalBigIntString(fragment.validFrom, \"fragment.validFrom\") }),\n\t\t...(fragment.validTo === undefined\n\t\t\t? {}\n\t\t\t: { validTo: decimalBigIntString(fragment.validTo, \"fragment.validTo\") }),\n\t\tconfidence: fragment.confidence,\n\t\ttags: Object.freeze([...fragment.tags]),\n\t\tsources: Object.freeze([...fragment.sources]),\n\t\t...(fragment.embedding === undefined\n\t\t\t? {}\n\t\t\t: { embedding: Object.freeze([...fragment.embedding]) }),\n\t\t...(fragment.parentFragmentId === undefined\n\t\t\t? {}\n\t\t\t: { parentFragmentId: fragment.parentFragmentId }),\n\t\t...(fragment.provenance === undefined ? {} : { provenance: fragment.provenance }),\n\t});\n}\n\nfunction recordFromFrame<TJson extends StrictJsonValue>(\n\tframe: AgenticMemoryRecordFrame<TJson>,\n): AgenticMemoryRecord<TJson> {\n\tconst fragment = frame.record.fragment;\n\tconst record: AgenticMemoryRecord<TJson> = {\n\t\tid: assertNonEmptyString(frame.record.id, \"record.id\"),\n\t\tkind: assertKindValue(frame.record.kind),\n\t\tpersistenceLevel: assertPersistenceLevelValue(frame.record.persistenceLevel),\n\t\tartifactKind: assertArtifactKindValue(frame.record.artifactKind),\n\t\t...(frame.record.scope === undefined ? {} : { scope: assertScopeFrame(frame.record.scope) }),\n\t\tfragment: {\n\t\t\tid: assertNonEmptyString(fragment.id, \"fragment.id\"),\n\t\t\tpayload: assertStrictJsonValue(fragment.payload, \"fragment.payload\") as TJson,\n\t\t\ttNs: parseDecimalBigInt(fragment.tNs, \"fragment.tNs\"),\n\t\t\t...(fragment.validFrom === undefined\n\t\t\t\t? {}\n\t\t\t\t: { validFrom: parseDecimalBigInt(fragment.validFrom, \"fragment.validFrom\") }),\n\t\t\t...(fragment.validTo === undefined\n\t\t\t\t? {}\n\t\t\t\t: { validTo: parseDecimalBigInt(fragment.validTo, \"fragment.validTo\") }),\n\t\t\tconfidence: assertConfidence(fragment.confidence, \"fragment.confidence\"),\n\t\t\ttags: assertStringArray(fragment.tags, \"fragment.tags\"),\n\t\t\tsources: assertStringArray(fragment.sources, \"fragment.sources\"),\n\t\t\t...(fragment.embedding === undefined\n\t\t\t\t? {}\n\t\t\t\t: { embedding: assertFiniteNumberArray(fragment.embedding, \"fragment.embedding\") }),\n\t\t\t...(fragment.parentFragmentId === undefined\n\t\t\t\t? {}\n\t\t\t\t: {\n\t\t\t\t\t\tparentFragmentId: assertNonEmptyString(fragment.parentFragmentId, \"parentFragmentId\"),\n\t\t\t\t\t}),\n\t\t\t...(fragment.provenance === undefined\n\t\t\t\t? {}\n\t\t\t\t: { provenance: assertString(fragment.provenance, \"provenance\") }),\n\t\t},\n\t};\n\tconst result = validateAndSnapshotRecord<TJson>(record, 0);\n\tif (result.errors.length > 0 || result.record === undefined) {\n\t\tthrow new TypeError(\n\t\t\t`agenticMemoryRecordFrame: decoded record is invalid: ${result.errors\n\t\t\t\t.flatMap((error) => error.validationErrors ?? [error.message])\n\t\t\t\t.join(\"; \")}`,\n\t\t);\n\t}\n\treturn result.record;\n}\n","import { depLatest } from \"../ctx/types.js\";\nimport type { Graph } from \"../graph/graph.js\";\nimport type {\n\tFactId,\n\tKnowledgeAssertion,\n\tKnowledgeAssertionObject,\n\tKnowledgeAssertionSubject,\n} from \"../patterns/semantic-memory.js\";\nimport { solutionProjection } from \"./agentic-memory-projection.js\";\nimport {\n\tagenticStatusState,\n\tassertStrictJsonValue,\n\terrorMessage,\n\tfreezeError,\n\tisDenseArrayOf,\n\tisNonEmptyString,\n\tisPlainRecord,\n\tsafeArrayLength,\n\tvalidateAndProjectRecords,\n} from \"./agentic-memory-shared.js\";\nimport type {\n\tAgenticMemoryError,\n\tAgenticMemoryKgAssertionDraft,\n\tAgenticMemoryKgProjectionBundle,\n\tAgenticMemoryKgProjectionBundleOptions,\n\tAgenticMemoryKgProjectionCursor,\n\tAgenticMemoryKgProjectionError,\n\tAgenticMemoryKgProjectionSnapshot,\n\tAgenticMemoryKgProjectionStatus,\n\tAgenticMemoryRecord,\n\tStrictJsonValue,\n} from \"./agentic-memory-types.js\";\n\nexport function agenticMemoryKgProjectionBundle(\n\tgraph: Graph,\n\topts: AgenticMemoryKgProjectionBundleOptions,\n): AgenticMemoryKgProjectionBundle {\n\tconst name = opts.name ?? \"agenticMemoryKgProjection\";\n\tconst projection = graph.node<AgenticMemoryKgProjectionSnapshot>(\n\t\t[opts.records, opts.drafts],\n\t\t(ctx) => {\n\t\t\tconst state =\n\t\t\t\tctx.state.get<{ evaluation: number }>() ??\n\t\t\t\t({ evaluation: 0 } satisfies { evaluation: number });\n\t\t\tstate.evaluation += 1;\n\t\t\tconst recordProjection = validateAndProjectRecords(depLatest(ctx, 0));\n\t\t\tconst draftProjection = validateAndProjectKgDrafts(\n\t\t\t\tdepLatest(ctx, 1),\n\t\t\t\trecordProjection.records,\n\t\t\t);\n\t\t\tconst cursor: AgenticMemoryKgProjectionCursor = Object.freeze({\n\t\t\t\tevaluation: state.evaluation,\n\t\t\t\tvalidRecords: recordProjection.records.length,\n\t\t\t\tvalidDrafts: draftProjection.assertions.length,\n\t\t\t\tinvalidDrafts: draftProjection.invalidDrafts,\n\t\t\t\tprojectedAssertions: draftProjection.assertions.length,\n\t\t\t});\n\t\t\tconst errors = Object.freeze(\n\t\t\t\t[...recordProjection.errors.map(kgErrorFromRecordError), ...draftProjection.errors].map(\n\t\t\t\t\t(error) => freezeError({ ...error, cursor }),\n\t\t\t\t),\n\t\t\t);\n\t\t\tconst status: AgenticMemoryKgProjectionStatus = Object.freeze({\n\t\t\t\tstate: agenticStatusState(errors.length, draftProjection.assertions.length),\n\t\t\t\tcursor,\n\t\t\t});\n\t\t\tctx.state.set(state);\n\t\t\tctx.down([\n\t\t\t\t[\n\t\t\t\t\t\"DATA\",\n\t\t\t\t\tObject.freeze({\n\t\t\t\t\t\tassertions: Object.freeze(draftProjection.assertions),\n\t\t\t\t\t\tstatus,\n\t\t\t\t\t\terrors,\n\t\t\t\t\t\tcursor,\n\t\t\t\t\t}),\n\t\t\t\t],\n\t\t\t]);\n\t\t},\n\t\t{\n\t\t\tname: `${name}/projection`,\n\t\t\tfactory: \"agenticMemoryKgProjection\",\n\t\t\tcompleteWhenDepsComplete: false,\n\t\t\terrorWhenDepsError: false,\n\t\t},\n\t);\n\treturn {\n\t\tinput: { records: opts.records, drafts: opts.drafts },\n\t\tprojection,\n\t\tassertions: solutionProjection(\n\t\t\tgraph,\n\t\t\tprojection,\n\t\t\t`${name}/assertions`,\n\t\t\t\"agenticMemoryKgAssertions\",\n\t\t\t(fact) => fact.assertions,\n\t\t),\n\t\tstatus: solutionProjection(\n\t\t\tgraph,\n\t\t\tprojection,\n\t\t\t`${name}/status`,\n\t\t\t\"agenticMemoryKgStatus\",\n\t\t\t(fact) => fact.status,\n\t\t),\n\t\terrors: solutionProjection(\n\t\t\tgraph,\n\t\t\tprojection,\n\t\t\t`${name}/errors`,\n\t\t\t\"agenticMemoryKgErrors\",\n\t\t\t(fact) => fact.errors,\n\t\t),\n\t\tcursor: solutionProjection(\n\t\t\tgraph,\n\t\t\tprojection,\n\t\t\t`${name}/cursor`,\n\t\t\t\"agenticMemoryKgCursor\",\n\t\t\t(fact) => fact.cursor,\n\t\t),\n\t};\n}\n\n/** Build a D166 strict-JSON frame from an in-memory AgenticMemoryRecord. */\n\nfunction validateAndProjectKgDrafts(\n\tvalue: unknown,\n\trecords: readonly AgenticMemoryRecord[],\n): {\n\treadonly assertions: KnowledgeAssertion[];\n\treadonly errors: Omit<AgenticMemoryKgProjectionError, \"cursor\">[];\n\treadonly invalidDrafts: number;\n} {\n\tconst assertions: KnowledgeAssertion[] = [];\n\tconst errors: Omit<AgenticMemoryKgProjectionError, \"cursor\">[] = [];\n\tlet invalidDrafts = 0;\n\tif (!Array.isArray(value)) {\n\t\treturn {\n\t\t\tassertions,\n\t\t\tinvalidDrafts: 1,\n\t\t\terrors: [\n\t\t\t\t{\n\t\t\t\t\tcode: \"invalid-drafts-input\",\n\t\t\t\t\tmessage: \"agenticMemoryKgProjectionBundle: drafts input must be an array\",\n\t\t\t\t\tdraft: value,\n\t\t\t\t},\n\t\t\t],\n\t\t};\n\t}\n\tconst length = safeArrayLength(value);\n\tif (length === undefined) {\n\t\treturn {\n\t\t\tassertions,\n\t\t\tinvalidDrafts: 1,\n\t\t\terrors: [\n\t\t\t\t{\n\t\t\t\t\tcode: \"invalid-drafts-input\",\n\t\t\t\t\tmessage: \"agenticMemoryKgProjectionBundle: drafts input length could not be read\",\n\t\t\t\t\tdraft: value,\n\t\t\t\t},\n\t\t\t],\n\t\t};\n\t}\n\tconst recordById = new Map(records.map((record) => [record.id, record]));\n\tconst fragmentToRecord = new Map(records.map((record) => [record.fragment.id, record.id]));\n\tconst seenAssertions = new Set<FactId>();\n\tfor (let i = 0; i < length; i += 1) {\n\t\tlet raw: unknown;\n\t\ttry {\n\t\t\traw = value[i];\n\t\t\tconst result = validateKgDraft(raw, i);\n\t\t\tif (result.errors.length > 0 || result.draft === undefined) {\n\t\t\t\tinvalidDrafts += 1;\n\t\t\t\terrors.push(...result.errors);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst draft = result.draft;\n\t\t\tif (seenAssertions.has(draft.id)) {\n\t\t\t\tinvalidDrafts += 1;\n\t\t\t\terrors.push({\n\t\t\t\t\tcode: \"duplicate-assertion-id\",\n\t\t\t\t\tmessage: \"agenticMemoryKgProjectionBundle: duplicate assertion id\",\n\t\t\t\t\tindex: i,\n\t\t\t\t\tassertionId: draft.id,\n\t\t\t\t\trecordId: draft.recordId,\n\t\t\t\t\tfragmentId: draft.fragmentId,\n\t\t\t\t\tdraft: raw,\n\t\t\t\t\tvalidationErrors: [`duplicate assertion id '${draft.id}'`],\n\t\t\t\t});\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst record = recordById.get(draft.recordId);\n\t\t\tif (record === undefined) {\n\t\t\t\tinvalidDrafts += 1;\n\t\t\t\terrors.push({\n\t\t\t\t\tcode: \"missing-record-ref\",\n\t\t\t\t\tmessage: \"agenticMemoryKgProjectionBundle: draft references a missing record\",\n\t\t\t\t\tindex: i,\n\t\t\t\t\tassertionId: draft.id,\n\t\t\t\t\trecordId: draft.recordId,\n\t\t\t\t\tfragmentId: draft.fragmentId,\n\t\t\t\t\tdraft: raw,\n\t\t\t\t\tvalidationErrors: [`record '${draft.recordId}' is not projected`],\n\t\t\t\t});\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst owner = fragmentToRecord.get(draft.fragmentId);\n\t\t\tif (owner === undefined) {\n\t\t\t\tinvalidDrafts += 1;\n\t\t\t\terrors.push({\n\t\t\t\t\tcode: \"missing-fragment-ref\",\n\t\t\t\t\tmessage: \"agenticMemoryKgProjectionBundle: draft references a missing fragment\",\n\t\t\t\t\tindex: i,\n\t\t\t\t\tassertionId: draft.id,\n\t\t\t\t\trecordId: draft.recordId,\n\t\t\t\t\tfragmentId: draft.fragmentId,\n\t\t\t\t\tdraft: raw,\n\t\t\t\t\tvalidationErrors: [`fragment '${draft.fragmentId}' is not projected`],\n\t\t\t\t});\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (owner !== draft.recordId || record.fragment.id !== draft.fragmentId) {\n\t\t\t\tinvalidDrafts += 1;\n\t\t\t\terrors.push({\n\t\t\t\t\tcode: \"fragment-record-mismatch\",\n\t\t\t\t\tmessage: \"agenticMemoryKgProjectionBundle: draft record and fragment refs disagree\",\n\t\t\t\t\tindex: i,\n\t\t\t\t\tassertionId: draft.id,\n\t\t\t\t\trecordId: draft.recordId,\n\t\t\t\t\tfragmentId: draft.fragmentId,\n\t\t\t\t\tdraft: raw,\n\t\t\t\t\tvalidationErrors: [\n\t\t\t\t\t\t`fragment '${draft.fragmentId}' belongs to record '${owner}', not '${draft.recordId}'`,\n\t\t\t\t\t],\n\t\t\t\t});\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tseenAssertions.add(draft.id);\n\t\t\tassertions.push(\n\t\t\t\tObject.freeze({\n\t\t\t\t\tid: draft.id,\n\t\t\t\t\trecordId: draft.recordId,\n\t\t\t\t\tfragmentId: draft.fragmentId,\n\t\t\t\t\tsubject: draft.subject,\n\t\t\t\t\tpredicate: draft.predicate,\n\t\t\t\t\tobject: draft.object,\n\t\t\t\t\t...(draft.confidence === undefined ? {} : { confidence: draft.confidence }),\n\t\t\t\t\tsources: Object.freeze(draft.sources ?? [draft.fragmentId]),\n\t\t\t\t\t...(draft.provenance === undefined ? {} : { provenance: draft.provenance }),\n\t\t\t\t}),\n\t\t\t);\n\t\t} catch (error) {\n\t\t\tinvalidDrafts += 1;\n\t\t\terrors.push({\n\t\t\t\tcode: \"invalid-draft\",\n\t\t\t\tmessage: `agenticMemoryKgProjectionBundle: draft access failed: ${errorMessage(error)}`,\n\t\t\t\tindex: i,\n\t\t\t\tdraft: raw,\n\t\t\t\tvalidationErrors: [\"draft access failed\"],\n\t\t\t});\n\t\t}\n\t}\n\treturn { assertions, errors, invalidDrafts };\n}\n\nfunction validateKgDraft(\n\tvalue: unknown,\n\tindex: number,\n): {\n\treadonly draft?: AgenticMemoryKgAssertionDraft;\n\treadonly errors: Omit<AgenticMemoryKgProjectionError, \"cursor\">[];\n} {\n\tconst errors: Omit<AgenticMemoryKgProjectionError, \"cursor\">[] = [];\n\tif (!isPlainRecord(value)) {\n\t\treturn {\n\t\t\terrors: [\n\t\t\t\t{\n\t\t\t\t\tcode: \"invalid-draft\",\n\t\t\t\t\tmessage: \"agenticMemoryKgProjectionBundle: draft must be an object\",\n\t\t\t\t\tindex,\n\t\t\t\t\tdraft: value,\n\t\t\t\t},\n\t\t\t],\n\t\t};\n\t}\n\tconst raw = value as Partial<AgenticMemoryKgAssertionDraft>;\n\tconst id = typeof raw.id === \"string\" && raw.id.length > 0 ? raw.id : undefined;\n\tconst recordId =\n\t\ttypeof raw.recordId === \"string\" && raw.recordId.length > 0 ? raw.recordId : undefined;\n\tconst fragmentId =\n\t\ttypeof raw.fragmentId === \"string\" && raw.fragmentId.length > 0 ? raw.fragmentId : undefined;\n\tconst subject = validateAssertionSubject(raw.subject);\n\tconst object = validateAssertionObject(raw.object);\n\tconst shapeErrors: string[] = [];\n\tif (id === undefined) shapeErrors.push(\"draft.id must be a non-empty string\");\n\tif (recordId === undefined) {\n\t\tshapeErrors.push(\"draft.recordId must be a non-empty string\");\n\t}\n\tif (fragmentId === undefined) {\n\t\tshapeErrors.push(\"draft.fragmentId must be a non-empty string\");\n\t}\n\tshapeErrors.push(...subject.errors);\n\tif (typeof raw.predicate !== \"string\" || raw.predicate.length === 0) {\n\t\tshapeErrors.push(\"draft.predicate must be a non-empty string\");\n\t}\n\tshapeErrors.push(...object.errors);\n\tif (\n\t\traw.confidence !== undefined &&\n\t\t(!Number.isFinite(raw.confidence) || raw.confidence < 0 || raw.confidence > 1)\n\t) {\n\t\tshapeErrors.push(\"draft.confidence must be a finite number in [0, 1]\");\n\t}\n\tif (raw.sources !== undefined && !isDenseArrayOf(raw.sources, isNonEmptyString)) {\n\t\tshapeErrors.push(\"draft.sources must be a readonly string array\");\n\t}\n\tif (raw.provenance !== undefined && typeof raw.provenance !== \"string\") {\n\t\tshapeErrors.push(\"draft.provenance must be a string when present\");\n\t}\n\tif (shapeErrors.length > 0) errors.push(kgShapeError(index, value, ...shapeErrors));\n\tif (errors.length > 0 || id === undefined || recordId === undefined || fragmentId === undefined) {\n\t\treturn { errors };\n\t}\n\treturn {\n\t\tdraft: Object.freeze({\n\t\t\tid,\n\t\t\trecordId,\n\t\t\tfragmentId,\n\t\t\tsubject: subject.subject as KnowledgeAssertionSubject,\n\t\t\tpredicate: raw.predicate as string,\n\t\t\tobject: object.object as KnowledgeAssertionObject,\n\t\t\t...(raw.confidence === undefined ? {} : { confidence: raw.confidence }),\n\t\t\t...(raw.sources === undefined ? {} : { sources: Object.freeze([...raw.sources]) }),\n\t\t\t...(raw.provenance === undefined ? {} : { provenance: raw.provenance }),\n\t\t}),\n\t\terrors,\n\t};\n}\n\nfunction validateAssertionSubject(value: unknown): {\n\treadonly subject?: KnowledgeAssertionSubject;\n\treadonly errors: readonly string[];\n} {\n\tif (!isPlainRecord(value)) return { errors: [\"subject must be an object\"] };\n\tconst id = value.id;\n\tconst type = value.type;\n\tconst errors: string[] = [];\n\tif (typeof id !== \"string\" || id.length === 0) errors.push(\"subject.id must be non-empty\");\n\tif (type !== undefined && (typeof type !== \"string\" || type.length === 0)) {\n\t\terrors.push(\"subject.type must be a non-empty string when present\");\n\t}\n\tif (errors.length > 0) return { errors };\n\treturn {\n\t\tsubject: Object.freeze({\n\t\t\tid: id as string,\n\t\t\t...(type === undefined ? {} : { type: type as string }),\n\t\t}),\n\t\terrors,\n\t};\n}\n\nfunction validateAssertionObject(value: unknown): {\n\treadonly object?: KnowledgeAssertionObject;\n\treadonly errors: readonly string[];\n} {\n\tif (!isPlainRecord(value)) return { errors: [\"object must be an object\"] };\n\tconst kind = value.kind;\n\tconst errors: string[] = [];\n\tif (kind === \"entity\") {\n\t\tif (typeof value.id !== \"string\" || value.id.length === 0) {\n\t\t\terrors.push(\"object.id must be non-empty for entity objects\");\n\t\t}\n\t\tif (value.type !== undefined && (typeof value.type !== \"string\" || value.type.length === 0)) {\n\t\t\terrors.push(\"object.type must be a non-empty string when present\");\n\t\t}\n\t\tif (Object.hasOwn(value, \"value\")) errors.push(\"entity object must not include value\");\n\t\tif (errors.length > 0) return { errors };\n\t\treturn {\n\t\t\tobject: Object.freeze({\n\t\t\t\tkind: \"entity\",\n\t\t\t\tid: value.id as string,\n\t\t\t\t...(value.type === undefined ? {} : { type: value.type as string }),\n\t\t\t}),\n\t\t\terrors,\n\t\t};\n\t}\n\tif (kind === \"value\") {\n\t\tif (!Object.hasOwn(value, \"value\")) errors.push(\"value object must include value\");\n\t\telse {\n\t\t\ttry {\n\t\t\t\tassertStrictJsonValue(value.value, \"object.value\");\n\t\t\t} catch (error) {\n\t\t\t\terrors.push(errorMessage(error));\n\t\t\t}\n\t\t}\n\t\tif (\n\t\t\tvalue.valueType !== undefined &&\n\t\t\t(typeof value.valueType !== \"string\" || value.valueType.length === 0)\n\t\t) {\n\t\t\terrors.push(\"object.valueType must be a non-empty string when present\");\n\t\t}\n\t\tif (Object.hasOwn(value, \"id\")) errors.push(\"value object must not include id\");\n\t\tif (errors.length > 0) return { errors };\n\t\treturn {\n\t\t\tobject: Object.freeze({\n\t\t\t\tkind: \"value\",\n\t\t\t\tvalue: value.value as StrictJsonValue,\n\t\t\t\t...(value.valueType === undefined ? {} : { valueType: value.valueType as string }),\n\t\t\t}),\n\t\t\terrors,\n\t\t};\n\t}\n\treturn { errors: [\"object.kind must be entity or value\"] };\n}\n\nfunction kgShapeError(\n\tindex: number,\n\tdraft: unknown,\n\t...validationErrors: readonly string[]\n): Omit<AgenticMemoryKgProjectionError, \"cursor\"> {\n\treturn {\n\t\tcode: \"invalid-assertion-shape\",\n\t\tmessage: \"agenticMemoryKgProjectionBundle: draft assertion shape is invalid\",\n\t\tindex,\n\t\tdraft,\n\t\tvalidationErrors: Object.freeze([...validationErrors]),\n\t};\n}\n\nfunction kgErrorFromRecordError(\n\terror: Omit<AgenticMemoryError, \"cursor\">,\n): Omit<AgenticMemoryKgProjectionError, \"cursor\"> {\n\treturn {\n\t\t...error,\n\t\tcode: error.code,\n\t};\n}\n","import { depLatest } from \"../ctx/types.js\";\nimport type { Graph } from \"../graph/graph.js\";\nimport type { FactId } from \"../patterns/semantic-memory.js\";\nimport { solutionProjection } from \"./agentic-memory-projection.js\";\nimport {\n\tagenticStatusState,\n\terrorMessage,\n\tfreezeError,\n\tisAgenticMemoryPersistenceLevel,\n\tisDenseArrayOf,\n\tisNonEmptyString,\n\tisPlainRecord,\n\tsafeArrayLength,\n\tvalidateAndProjectRecords,\n} from \"./agentic-memory-shared.js\";\nimport type {\n\tAgenticMemoryConsolidationRequest,\n\tAgenticMemoryError,\n\tAgenticMemoryPersistenceLevel,\n\tAgenticMemoryRecord,\n\tAgenticMemoryRetentionBundle,\n\tAgenticMemoryRetentionBundleOptions,\n\tAgenticMemoryRetentionCommand,\n\tAgenticMemoryRetentionCursor,\n\tAgenticMemoryRetentionError,\n\tAgenticMemoryRetentionSnapshot,\n\tAgenticMemoryRetentionStatus,\n} from \"./agentic-memory-types.js\";\n\nexport function agenticMemoryRetentionBundle<T = unknown>(\n\tgraph: Graph,\n\topts: AgenticMemoryRetentionBundleOptions<T>,\n): AgenticMemoryRetentionBundle<T> {\n\tconst name = opts.name ?? \"agenticMemoryRetention\";\n\tconst projection = graph.node<AgenticMemoryRetentionSnapshot<T>>(\n\t\t[opts.records, opts.commands],\n\t\t(ctx) => {\n\t\t\tconst state =\n\t\t\t\tctx.state.get<{ evaluation: number }>() ??\n\t\t\t\t({ evaluation: 0 } satisfies { evaluation: number });\n\t\t\tstate.evaluation += 1;\n\t\t\tconst recordProjection = validateAndProjectRecords<T>(depLatest(ctx, 0));\n\t\t\tconst retention = projectRetention<T>(depLatest(ctx, 1), recordProjection.records);\n\t\t\tconst cursor: AgenticMemoryRetentionCursor = Object.freeze({\n\t\t\t\tevaluation: state.evaluation,\n\t\t\t\tvalidRecords: recordProjection.records.length,\n\t\t\t\tvalidCommands: retention.validCommands,\n\t\t\t\tinvalidCommands: retention.invalidCommands,\n\t\t\t\tactiveRecords: retention.activeRecords.length,\n\t\t\t\tarchivedRecords: retention.archivedRecords.length,\n\t\t\t\tconsolidationRequests: retention.consolidationRequests.length,\n\t\t\t});\n\t\t\tconst errors = Object.freeze(\n\t\t\t\t[...recordProjection.errors.map(retentionErrorFromRecordError), ...retention.errors].map(\n\t\t\t\t\t(error) => freezeError({ ...error, cursor }),\n\t\t\t\t),\n\t\t\t);\n\t\t\tconst status: AgenticMemoryRetentionStatus = Object.freeze({\n\t\t\t\tstate: agenticStatusState(errors.length, recordProjection.records.length),\n\t\t\t\tcursor,\n\t\t\t});\n\t\t\tctx.state.set(state);\n\t\t\tctx.down([\n\t\t\t\t[\n\t\t\t\t\t\"DATA\",\n\t\t\t\t\tObject.freeze({\n\t\t\t\t\t\tactiveRecords: Object.freeze(retention.activeRecords),\n\t\t\t\t\t\tarchivedRecords: Object.freeze(retention.archivedRecords),\n\t\t\t\t\t\tconsolidationRequests: Object.freeze(retention.consolidationRequests),\n\t\t\t\t\t\tstatus,\n\t\t\t\t\t\terrors,\n\t\t\t\t\t\tcursor,\n\t\t\t\t\t}),\n\t\t\t\t],\n\t\t\t]);\n\t\t},\n\t\t{\n\t\t\tname: `${name}/projection`,\n\t\t\tfactory: \"agenticMemoryRetention\",\n\t\t\tcompleteWhenDepsComplete: false,\n\t\t\terrorWhenDepsError: false,\n\t\t},\n\t);\n\treturn {\n\t\tinput: { records: opts.records, commands: opts.commands },\n\t\tprojection,\n\t\tactiveRecords: solutionProjection(\n\t\t\tgraph,\n\t\t\tprojection,\n\t\t\t`${name}/activeRecords`,\n\t\t\t\"agenticMemoryRetentionActiveRecords\",\n\t\t\t(fact) => fact.activeRecords,\n\t\t),\n\t\tarchivedRecords: solutionProjection(\n\t\t\tgraph,\n\t\t\tprojection,\n\t\t\t`${name}/archivedRecords`,\n\t\t\t\"agenticMemoryRetentionArchivedRecords\",\n\t\t\t(fact) => fact.archivedRecords,\n\t\t),\n\t\tconsolidationRequests: solutionProjection(\n\t\t\tgraph,\n\t\t\tprojection,\n\t\t\t`${name}/consolidationRequests`,\n\t\t\t\"agenticMemoryRetentionConsolidationRequests\",\n\t\t\t(fact) => fact.consolidationRequests,\n\t\t),\n\t\tstatus: solutionProjection(\n\t\t\tgraph,\n\t\t\tprojection,\n\t\t\t`${name}/status`,\n\t\t\t\"agenticMemoryRetentionStatus\",\n\t\t\t(fact) => fact.status,\n\t\t),\n\t\terrors: solutionProjection(\n\t\t\tgraph,\n\t\t\tprojection,\n\t\t\t`${name}/errors`,\n\t\t\t\"agenticMemoryRetentionErrors\",\n\t\t\t(fact) => fact.errors,\n\t\t),\n\t\tcursor: solutionProjection(\n\t\t\tgraph,\n\t\t\tprojection,\n\t\t\t`${name}/cursor`,\n\t\t\t\"agenticMemoryRetentionCursor\",\n\t\t\t(fact) => fact.cursor,\n\t\t),\n\t};\n}\n\n/**\n * D171 consolidation outcome projection.\n *\n * The bundle does not execute consolidation. External adapters may publish\n * outcome facts, and this projection turns them into visible result/proposal\n * facts for downstream record-creation policy.\n */\n\nfunction projectRetention<T>(\n\tvalue: unknown,\n\trecords: readonly AgenticMemoryRecord<T>[],\n): {\n\treadonly activeRecords: AgenticMemoryRecord<T>[];\n\treadonly archivedRecords: AgenticMemoryRecord<T>[];\n\treadonly consolidationRequests: AgenticMemoryConsolidationRequest[];\n\treadonly errors: Omit<AgenticMemoryRetentionError, \"cursor\">[];\n\treadonly validCommands: number;\n\treadonly invalidCommands: number;\n} {\n\tconst byId = new Map(records.map((record) => [record.id, record]));\n\tconst view = new Map(records.map((record) => [record.id, record]));\n\tconst requests: AgenticMemoryConsolidationRequest[] = [];\n\tconst errors: Omit<AgenticMemoryRetentionError, \"cursor\">[] = [];\n\tlet validCommands = 0;\n\tlet invalidCommands = 0;\n\tif (!Array.isArray(value)) {\n\t\treturn {\n\t\t\tactiveRecords: records.filter((record) => record.persistenceLevel !== \"archived\"),\n\t\t\tarchivedRecords: records.filter((record) => record.persistenceLevel === \"archived\"),\n\t\t\tconsolidationRequests: requests,\n\t\t\tvalidCommands,\n\t\t\tinvalidCommands: 1,\n\t\t\terrors: [\n\t\t\t\t{\n\t\t\t\t\tcode: \"invalid-commands-input\",\n\t\t\t\t\tmessage: \"agenticMemoryRetentionBundle: commands input must be an array\",\n\t\t\t\t\tcommand: value,\n\t\t\t\t},\n\t\t\t],\n\t\t};\n\t}\n\tconst length = safeArrayLength(value);\n\tif (length === undefined) {\n\t\treturn {\n\t\t\tactiveRecords: records.filter((record) => record.persistenceLevel !== \"archived\"),\n\t\t\tarchivedRecords: records.filter((record) => record.persistenceLevel === \"archived\"),\n\t\t\tconsolidationRequests: requests,\n\t\t\tvalidCommands,\n\t\t\tinvalidCommands: 1,\n\t\t\terrors: [\n\t\t\t\t{\n\t\t\t\t\tcode: \"invalid-commands-input\",\n\t\t\t\t\tmessage: \"agenticMemoryRetentionBundle: commands input length could not be read\",\n\t\t\t\t\tcommand: value,\n\t\t\t\t},\n\t\t\t],\n\t\t};\n\t}\n\tconst seenCommands = new Set<FactId>();\n\tfor (let i = 0; i < length; i += 1) {\n\t\tlet raw: unknown;\n\t\ttry {\n\t\t\traw = value[i];\n\t\t\tconst result = validateRetentionCommand(raw, i);\n\t\t\tif (result.errors.length > 0 || result.command === undefined) {\n\t\t\t\tinvalidCommands += 1;\n\t\t\t\terrors.push(...result.errors);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst command = result.command;\n\t\t\tif (seenCommands.has(command.id)) {\n\t\t\t\tinvalidCommands += 1;\n\t\t\t\terrors.push({\n\t\t\t\t\tcode: \"duplicate-command-id\",\n\t\t\t\t\tmessage: \"agenticMemoryRetentionBundle: duplicate command id\",\n\t\t\t\t\tindex: i,\n\t\t\t\t\tcommandId: command.id,\n\t\t\t\t\tcommand: raw,\n\t\t\t\t\tvalidationErrors: [`duplicate command id '${command.id}'`],\n\t\t\t\t});\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst missing = retentionMissingRecords(command, byId);\n\t\t\tif (missing.length > 0) {\n\t\t\t\tinvalidCommands += 1;\n\t\t\t\terrors.push({\n\t\t\t\t\tcode: \"missing-record-ref\",\n\t\t\t\t\tmessage: \"agenticMemoryRetentionBundle: command references missing records\",\n\t\t\t\t\tindex: i,\n\t\t\t\t\tcommandId: command.id,\n\t\t\t\t\trecordId: \"recordId\" in command ? command.recordId : undefined,\n\t\t\t\t\trecordIds: Object.freeze(missing),\n\t\t\t\t\tcommand: raw,\n\t\t\t\t\tvalidationErrors: Object.freeze(missing.map((id) => `record '${id}' is not projected`)),\n\t\t\t\t});\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tseenCommands.add(command.id);\n\t\t\tvalidCommands += 1;\n\t\t\tapplyRetentionCommand(command, byId, view, requests);\n\t\t} catch (error) {\n\t\t\tinvalidCommands += 1;\n\t\t\terrors.push({\n\t\t\t\tcode: \"invalid-command\",\n\t\t\t\tmessage: `agenticMemoryRetentionBundle: command access failed: ${errorMessage(error)}`,\n\t\t\t\tindex: i,\n\t\t\t\tcommand: raw,\n\t\t\t\tvalidationErrors: [\"command access failed\"],\n\t\t\t});\n\t\t}\n\t}\n\tconst projected = records.map((record) => view.get(record.id) ?? record);\n\treturn {\n\t\tactiveRecords: projected.filter((record) => record.persistenceLevel !== \"archived\"),\n\t\tarchivedRecords: projected.filter((record) => record.persistenceLevel === \"archived\"),\n\t\tconsolidationRequests: requests,\n\t\terrors,\n\t\tvalidCommands,\n\t\tinvalidCommands,\n\t};\n}\n\nfunction validateRetentionCommand(\n\tvalue: unknown,\n\tindex: number,\n): {\n\treadonly command?: AgenticMemoryRetentionCommand;\n\treadonly errors: Omit<AgenticMemoryRetentionError, \"cursor\">[];\n} {\n\tif (!isPlainRecord(value)) {\n\t\treturn {\n\t\t\terrors: [\n\t\t\t\t{\n\t\t\t\t\tcode: \"invalid-command\",\n\t\t\t\t\tmessage: \"agenticMemoryRetentionBundle: command must be an object\",\n\t\t\t\t\tindex,\n\t\t\t\t\tcommand: value,\n\t\t\t\t},\n\t\t\t],\n\t\t};\n\t}\n\tconst id = typeof value.id === \"string\" && value.id.length > 0 ? value.id : undefined;\n\tconst kind = value.kind;\n\tconst errors: string[] = [];\n\tif (id === undefined) errors.push(\"command.id must be a non-empty string\");\n\tif (\n\t\tkind !== \"archive\" &&\n\t\tkind !== \"restore\" &&\n\t\tkind !== \"setPersistenceLevel\" &&\n\t\tkind !== \"requestConsolidation\"\n\t) {\n\t\terrors.push(\"command.kind is invalid\");\n\t}\n\tif (value.reason !== undefined && typeof value.reason !== \"string\") {\n\t\terrors.push(\"command.reason must be a string when present\");\n\t}\n\tif (kind === \"archive\") {\n\t\tif (!isNonEmptyString(value.recordId)) errors.push(\"command.recordId must be non-empty\");\n\t} else if (kind === \"restore\") {\n\t\tif (!isNonEmptyString(value.recordId)) errors.push(\"command.recordId must be non-empty\");\n\t\tif (\n\t\t\tvalue.persistenceLevel !== undefined &&\n\t\t\t(!isAgenticMemoryPersistenceLevel(value.persistenceLevel) ||\n\t\t\t\tvalue.persistenceLevel === \"archived\")\n\t\t) {\n\t\t\terrors.push(\"restore.persistenceLevel must be a non-archived persistence level when present\");\n\t\t}\n\t} else if (kind === \"setPersistenceLevel\") {\n\t\tif (!isNonEmptyString(value.recordId)) errors.push(\"command.recordId must be non-empty\");\n\t\tif (!isAgenticMemoryPersistenceLevel(value.persistenceLevel)) {\n\t\t\terrors.push(\"setPersistenceLevel.persistenceLevel is invalid\");\n\t\t}\n\t} else if (kind === \"requestConsolidation\") {\n\t\tif (!isDenseArrayOf(value.recordIds, isNonEmptyString) || value.recordIds.length === 0) {\n\t\t\terrors.push(\"requestConsolidation.recordIds must be a non-empty string array\");\n\t\t}\n\t\tif (\n\t\t\tvalue.requestId !== undefined &&\n\t\t\t(typeof value.requestId !== \"string\" || value.requestId.length === 0)\n\t\t) {\n\t\t\terrors.push(\"requestConsolidation.requestId must be non-empty when present\");\n\t\t}\n\t}\n\tif (errors.length > 0 || id === undefined) {\n\t\treturn {\n\t\t\terrors: [\n\t\t\t\t{\n\t\t\t\t\tcode: \"invalid-command\",\n\t\t\t\t\tmessage: \"agenticMemoryRetentionBundle: command is invalid\",\n\t\t\t\t\tindex,\n\t\t\t\t\tcommandId: id,\n\t\t\t\t\tcommand: value,\n\t\t\t\t\tvalidationErrors: Object.freeze(errors),\n\t\t\t\t},\n\t\t\t],\n\t\t};\n\t}\n\tconst base = { id, reason: value.reason as string | undefined };\n\tif (kind === \"archive\") {\n\t\treturn {\n\t\t\tcommand: Object.freeze({\n\t\t\t\t...base,\n\t\t\t\tkind,\n\t\t\t\trecordId: value.recordId as string,\n\t\t\t\t...(base.reason === undefined ? {} : { reason: base.reason }),\n\t\t\t}),\n\t\t\terrors: [],\n\t\t};\n\t}\n\tif (kind === \"restore\") {\n\t\treturn {\n\t\t\tcommand: Object.freeze({\n\t\t\t\t...base,\n\t\t\t\tkind,\n\t\t\t\trecordId: value.recordId as string,\n\t\t\t\t...(value.persistenceLevel === undefined\n\t\t\t\t\t? {}\n\t\t\t\t\t: {\n\t\t\t\t\t\t\tpersistenceLevel: value.persistenceLevel as Exclude<\n\t\t\t\t\t\t\t\tAgenticMemoryPersistenceLevel,\n\t\t\t\t\t\t\t\t\"archived\"\n\t\t\t\t\t\t\t>,\n\t\t\t\t\t\t}),\n\t\t\t\t...(base.reason === undefined ? {} : { reason: base.reason }),\n\t\t\t}),\n\t\t\terrors: [],\n\t\t};\n\t}\n\tif (kind === \"setPersistenceLevel\") {\n\t\treturn {\n\t\t\tcommand: Object.freeze({\n\t\t\t\t...base,\n\t\t\t\tkind,\n\t\t\t\trecordId: value.recordId as string,\n\t\t\t\tpersistenceLevel: value.persistenceLevel as AgenticMemoryPersistenceLevel,\n\t\t\t\t...(base.reason === undefined ? {} : { reason: base.reason }),\n\t\t\t}),\n\t\t\terrors: [],\n\t\t};\n\t}\n\treturn {\n\t\tcommand: Object.freeze({\n\t\t\t...base,\n\t\t\tkind: \"requestConsolidation\",\n\t\t\trecordIds: Object.freeze([...(value.recordIds as readonly string[])]),\n\t\t\t...(value.requestId === undefined ? {} : { requestId: value.requestId as string }),\n\t\t\t...(base.reason === undefined ? {} : { reason: base.reason }),\n\t\t}),\n\t\terrors: [],\n\t};\n}\n\nfunction retentionMissingRecords(\n\tcommand: AgenticMemoryRetentionCommand,\n\trecords: ReadonlyMap<FactId, AgenticMemoryRecord>,\n): readonly FactId[] {\n\tif (\"recordId\" in command) return records.has(command.recordId) ? [] : [command.recordId];\n\treturn command.recordIds.filter((recordId) => !records.has(recordId));\n}\n\nfunction applyRetentionCommand<T>(\n\tcommand: AgenticMemoryRetentionCommand,\n\tsource: ReadonlyMap<FactId, AgenticMemoryRecord<T>>,\n\tview: Map<FactId, AgenticMemoryRecord<T>>,\n\trequests: AgenticMemoryConsolidationRequest[],\n): void {\n\tif (command.kind === \"requestConsolidation\") {\n\t\trequests.push(\n\t\t\tObject.freeze({\n\t\t\t\tid: command.requestId ?? command.id,\n\t\t\t\tcommandId: command.id,\n\t\t\t\trecordIds: Object.freeze([...command.recordIds]),\n\t\t\t\t...(command.reason === undefined ? {} : { reason: command.reason }),\n\t\t\t}),\n\t\t);\n\t\treturn;\n\t}\n\tconst record = view.get(command.recordId) ?? source.get(command.recordId);\n\tif (record === undefined) return;\n\tconst persistenceLevel =\n\t\tcommand.kind === \"archive\"\n\t\t\t? \"archived\"\n\t\t\t: command.kind === \"restore\"\n\t\t\t\t? (command.persistenceLevel ?? nonArchivedLevel(source.get(command.recordId) ?? record))\n\t\t\t\t: command.persistenceLevel;\n\tview.set(command.recordId, withPersistenceLevel(record, persistenceLevel));\n}\n\nfunction nonArchivedLevel(\n\trecord: AgenticMemoryRecord,\n): Exclude<AgenticMemoryPersistenceLevel, \"archived\"> {\n\treturn record.persistenceLevel === \"archived\" ? \"session\" : record.persistenceLevel;\n}\n\nfunction withPersistenceLevel<T>(\n\trecord: AgenticMemoryRecord<T>,\n\tpersistenceLevel: AgenticMemoryPersistenceLevel,\n): AgenticMemoryRecord<T> {\n\treturn Object.freeze({\n\t\t...record,\n\t\tpersistenceLevel,\n\t});\n}\n\nfunction retentionErrorFromRecordError(\n\terror: Omit<AgenticMemoryError, \"cursor\">,\n): Omit<AgenticMemoryRetentionError, \"cursor\"> {\n\treturn {\n\t\t...error,\n\t\tcode: error.code,\n\t};\n}\n","/**\n * Product-owned capability admission facts (D357).\n *\n * This helper consumes generic BoundaryCapabilityRef data and emits ordinary DATA\n * facts for product admission state. It is not AutoPanel security, not a provider\n * registry, and not protocol ERROR/tier/message semantics.\n */\n\nimport { type Ctx, depBatch } from \"../ctx/types.js\";\nimport type { DataIssue } from \"../data/index.js\";\nimport type { Graph } from \"../graph/graph.js\";\nimport type { BoundaryCapabilityRef, BoundaryRole } from \"../inspection/boundary.js\";\nimport type { Node } from \"../node/node.js\";\nimport type { AgentRuntimeAuditRecord, SourceRef } from \"../orchestration/agent-runtime.js\";\n\nexport type CapabilityAdmissionOutcome = \"allow\" | \"block\" | \"defer\";\nexport type CapabilityAdmissionState = \"allowed\" | \"blocked\" | \"deferred\";\n\nexport interface CapabilityAdmissionProposal {\n\treadonly kind: \"capability-admission-proposal\";\n\treadonly proposalId: string;\n\treadonly subjectId: string;\n\treadonly capability: BoundaryCapabilityRef;\n\treadonly boundaryName?: string;\n\treadonly role?: BoundaryRole;\n\treadonly reason?: string;\n\treadonly sourceRefs?: readonly SourceRef[];\n\treadonly proposedAtMs?: number;\n\treadonly metadata?: Record<string, unknown>;\n}\n\nexport interface CapabilityAdmissionPolicy {\n\treadonly kind: \"capability-admission-policy\";\n\treadonly policyId: string;\n\treadonly capabilityIds?: readonly string[];\n\treadonly capabilityKinds?: readonly BoundaryCapabilityRef[\"kind\"][];\n\treadonly requiredOnly?: boolean;\n\treadonly allowedOutcomes?: readonly CapabilityAdmissionOutcome[];\n\treadonly metadata?: Record<string, unknown>;\n}\n\nexport interface CapabilityAdmissionDecision {\n\treadonly kind: \"capability-admission-decision\";\n\treadonly decisionId: string;\n\treadonly admissionId: string;\n\treadonly proposalId: string;\n\treadonly outcome: CapabilityAdmissionOutcome;\n\treadonly policyId?: string;\n\treadonly reason?: string;\n\treadonly sourceRefs?: readonly SourceRef[];\n\treadonly decidedAtMs?: number;\n\treadonly metadata?: Record<string, unknown>;\n}\n\nexport interface CapabilityAdmission {\n\treadonly kind: \"capability-admission\";\n\treadonly admissionId: string;\n\treadonly proposalId: string;\n\treadonly subjectId: string;\n\treadonly capability: BoundaryCapabilityRef;\n\treadonly state: CapabilityAdmissionState;\n\treadonly decisionId: string;\n\treadonly boundaryName?: string;\n\treadonly role?: BoundaryRole;\n\treadonly policyId?: string;\n\treadonly reason?: string;\n\treadonly sourceRefs?: readonly SourceRef[];\n\treadonly admittedAtMs?: number;\n\treadonly metadata?: Record<string, unknown>;\n}\n\nexport interface CapabilityAdmissionStatus {\n\treadonly kind: \"capability-admission-status\";\n\treadonly statusId: string;\n\treadonly state:\n\t\t| \"capability-admission-allowed\"\n\t\t| \"capability-admission-blocked\"\n\t\t| \"capability-admission-deferred\"\n\t\t| \"capability-admission-issue\";\n\treadonly proposalId?: string;\n\treadonly admissionId?: string;\n\treadonly subjectId?: string;\n\treadonly capabilityId?: string;\n\treadonly capabilityKind?: BoundaryCapabilityRef[\"kind\"];\n\treadonly policyId?: string;\n\treadonly issues?: readonly DataIssue[];\n\treadonly sourceRefs?: readonly SourceRef[];\n\treadonly metadata?: Record<string, unknown>;\n}\n\nexport interface CapabilityAdmissionViews {\n\treadonly admissionsByProposal: ReadonlyMap<string, CapabilityAdmission>;\n\treadonly admissionsBySubject: ReadonlyMap<string, readonly CapabilityAdmission[]>;\n\treadonly issues: readonly DataIssue[];\n\treadonly audit: readonly AgentRuntimeAuditRecord[];\n}\n\nexport interface CapabilityAdmissionBundle {\n\treadonly admissions: Node<CapabilityAdmission>;\n\treadonly status: Node<CapabilityAdmissionStatus>;\n\treadonly issues: Node<DataIssue>;\n\treadonly audit: Node<AgentRuntimeAuditRecord>;\n\treadonly views: Node<CapabilityAdmissionViews>;\n}\n\ntype CapabilityAdmissionFact =\n\t| { readonly kind: \"admission\"; readonly admission: CapabilityAdmission }\n\t| { readonly kind: \"status\"; readonly status: CapabilityAdmissionStatus }\n\t| { readonly kind: \"issue\"; readonly issue: DataIssue }\n\t| { readonly kind: \"audit\"; readonly audit: AgentRuntimeAuditRecord };\n\ninterface CapabilityAdmissionStateInternal {\n\tproposals: Map<string, CapabilityAdmissionProposal>;\n\tpolicies: Map<string, CapabilityAdmissionPolicy>;\n\tdecisions: Map<string, CapabilityAdmissionDecision>;\n\tadmissionsById: Map<string, CapabilityAdmission>;\n\tadmissionsByProposal: Map<string, CapabilityAdmission>;\n\tterminalDecisionIds: Set<string>;\n\tissueKeys: Set<string>;\n\tissueSeq: number;\n\tstatusSeq: number;\n\tauditSeq: number;\n}\n\ninterface CapabilityAdmissionViewsState {\n\tadmissionsByProposal: Map<string, CapabilityAdmission>;\n\tadmissionsBySubject: Map<string, CapabilityAdmission[]>;\n\tissues: DataIssue[];\n\taudit: AgentRuntimeAuditRecord[];\n}\n\nexport function capabilityAdmissionProposal(\n\topts: Omit<CapabilityAdmissionProposal, \"kind\">,\n): CapabilityAdmissionProposal {\n\treturn { kind: \"capability-admission-proposal\", ...opts };\n}\n\nexport function capabilityAdmissionProjector(\n\tgraph: Graph,\n\topts: {\n\t\treadonly name?: string;\n\t\treadonly proposals: Node<CapabilityAdmissionProposal>;\n\t\treadonly decisions: Node<CapabilityAdmissionDecision>;\n\t\treadonly admissionPolicies?: readonly Node<CapabilityAdmissionPolicy>[];\n\t\treadonly now?: () => number;\n\t},\n): CapabilityAdmissionBundle {\n\tconst name = opts.name ?? \"capabilityAdmissions\";\n\tconst policyDeps = opts.admissionPolicies ?? [];\n\tconst now = opts.now ?? Date.now;\n\tconst runtime = graph.node<CapabilityAdmissionFact>(\n\t\t[opts.proposals, opts.decisions, ...policyDeps],\n\t\t(ctx) => {\n\t\t\tconst state =\n\t\t\t\tctx.state.get<CapabilityAdmissionStateInternal>() ?? emptyCapabilityAdmissionState();\n\t\t\tfor (const raw of depBatch(ctx, 0) ?? []) {\n\t\t\t\tconst proposal = raw as CapabilityAdmissionProposal;\n\t\t\t\tconst issue = capabilityAdmissionProposalIssue(proposal);\n\t\t\t\tif (issue !== undefined) {\n\t\t\t\t\temitIssue(\n\t\t\t\t\t\tctx,\n\t\t\t\t\t\tstate,\n\t\t\t\t\t\tnextMalformedIssueKey(state, \"proposal\", proposalKeyFallback(proposal)),\n\t\t\t\t\t\tissue,\n\t\t\t\t\t);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (state.proposals.has(proposal.proposalId)) {\n\t\t\t\t\temitIssue(\n\t\t\t\t\t\tctx,\n\t\t\t\t\t\tstate,\n\t\t\t\t\t\t`duplicate-proposal:${proposal.proposalId}`,\n\t\t\t\t\t\tdataIssue(\n\t\t\t\t\t\t\t\"duplicate-capability-admission-proposal\",\n\t\t\t\t\t\t\t`CapabilityAdmissionProposal '${proposal.proposalId}' was already seen`,\n\t\t\t\t\t\t\t{ subjectId: proposal.subjectId, refs: capabilityProposalRefs(proposal) },\n\t\t\t\t\t\t),\n\t\t\t\t\t);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tstate.proposals.set(proposal.proposalId, proposal);\n\t\t\t}\n\t\t\tforEachPolicyDepBatch(ctx, 2, policyDeps.length, (raw) => {\n\t\t\t\tconst policy = raw as CapabilityAdmissionPolicy;\n\t\t\t\tconst issue = capabilityAdmissionPolicyIssue(policy);\n\t\t\t\tif (issue !== undefined) {\n\t\t\t\t\temitIssue(\n\t\t\t\t\t\tctx,\n\t\t\t\t\t\tstate,\n\t\t\t\t\t\tnextMalformedIssueKey(state, \"policy\", policyKeyFallback(policy)),\n\t\t\t\t\t\tissue,\n\t\t\t\t\t);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (state.policies.has(policy.policyId)) {\n\t\t\t\t\temitIssue(\n\t\t\t\t\t\tctx,\n\t\t\t\t\t\tstate,\n\t\t\t\t\t\t`duplicate-policy:${policy.policyId}`,\n\t\t\t\t\t\tdataIssue(\n\t\t\t\t\t\t\t\"duplicate-capability-admission-policy\",\n\t\t\t\t\t\t\t`CapabilityAdmissionPolicy '${policy.policyId}' was already seen`,\n\t\t\t\t\t\t\t{ refs: [ref(\"capability-admission-policy\", policy.policyId)] },\n\t\t\t\t\t\t),\n\t\t\t\t\t);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tstate.policies.set(policy.policyId, policy);\n\t\t\t});\n\t\t\tfor (const raw of depBatch(ctx, 1) ?? []) {\n\t\t\t\tconst decision = raw as CapabilityAdmissionDecision;\n\t\t\t\tconst issue = capabilityAdmissionDecisionIssue(decision);\n\t\t\t\tif (issue !== undefined) {\n\t\t\t\t\temitIssue(\n\t\t\t\t\t\tctx,\n\t\t\t\t\t\tstate,\n\t\t\t\t\t\tnextMalformedIssueKey(state, \"decision\", decisionKeyFallback(decision)),\n\t\t\t\t\t\tissue,\n\t\t\t\t\t);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (state.decisions.has(decision.decisionId)) {\n\t\t\t\t\temitIssue(\n\t\t\t\t\t\tctx,\n\t\t\t\t\t\tstate,\n\t\t\t\t\t\t`duplicate-decision:${decision.decisionId}`,\n\t\t\t\t\t\tdataIssue(\n\t\t\t\t\t\t\t\"duplicate-capability-admission-decision\",\n\t\t\t\t\t\t\t`CapabilityAdmissionDecision '${decision.decisionId}' was already seen`,\n\t\t\t\t\t\t\t{ refs: capabilityDecisionRefs(decision) },\n\t\t\t\t\t\t),\n\t\t\t\t\t);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tstate.decisions.set(decision.decisionId, decision);\n\t\t\t}\n\t\t\tevaluateCapabilityAdmissions(ctx, state, now());\n\t\t\tctx.state.set(state);\n\t\t},\n\t\t{ name: `${name}/runtime`, factory: \"capabilityAdmissionProjector\", partial: true },\n\t);\n\treturn {\n\t\tadmissions: projectRuntimeFact(\n\t\t\tgraph,\n\t\t\truntime,\n\t\t\t`${name}/admissions`,\n\t\t\t\"capabilityAdmissions\",\n\t\t\t(fact) => (fact.kind === \"admission\" ? fact.admission : undefined),\n\t\t),\n\t\tstatus: projectRuntimeFact(\n\t\t\tgraph,\n\t\t\truntime,\n\t\t\t`${name}/status`,\n\t\t\t\"capabilityAdmissionStatus\",\n\t\t\t(fact) => (fact.kind === \"status\" ? fact.status : undefined),\n\t\t),\n\t\tissues: projectRuntimeFact(\n\t\t\tgraph,\n\t\t\truntime,\n\t\t\t`${name}/issues`,\n\t\t\t\"capabilityAdmissionIssues\",\n\t\t\t(fact) => (fact.kind === \"issue\" ? fact.issue : undefined),\n\t\t),\n\t\taudit: projectRuntimeFact(\n\t\t\tgraph,\n\t\t\truntime,\n\t\t\t`${name}/audit`,\n\t\t\t\"capabilityAdmissionAudit\",\n\t\t\t(fact) => (fact.kind === \"audit\" ? fact.audit : undefined),\n\t\t),\n\t\tviews: capabilityAdmissionViews(graph, runtime, `${name}/views`),\n\t};\n}\n\nfunction evaluateCapabilityAdmissions(\n\tctx: Ctx,\n\tstate: CapabilityAdmissionStateInternal,\n\tadmittedAtMs: number,\n): void {\n\tfor (const decision of state.decisions.values()) {\n\t\tif (state.terminalDecisionIds.has(decision.decisionId)) continue;\n\t\tevaluateCapabilityAdmission(ctx, state, decision, admittedAtMs);\n\t}\n}\n\nfunction evaluateCapabilityAdmission(\n\tctx: Ctx,\n\tstate: CapabilityAdmissionStateInternal,\n\tdecision: CapabilityAdmissionDecision,\n\tadmittedAtMs: number,\n): void {\n\tconst proposal = state.proposals.get(decision.proposalId);\n\tif (proposal === undefined) {\n\t\temitIssue(\n\t\t\tctx,\n\t\t\tstate,\n\t\t\t`missing-proposal:${decision.decisionId}:${decision.proposalId}`,\n\t\t\tdataIssue(\n\t\t\t\t\"missing-capability-admission-proposal\",\n\t\t\t\t`CapabilityAdmissionDecision '${decision.decisionId}' references missing proposal '${decision.proposalId}'`,\n\t\t\t\t{ subjectId: decision.proposalId, refs: capabilityDecisionRefs(decision) },\n\t\t\t),\n\t\t);\n\t\treturn;\n\t}\n\tconst policy = capabilityPolicyForDecision(state, decision);\n\tif (typeof policy === \"string\") {\n\t\temitIssue(\n\t\t\tctx,\n\t\t\tstate,\n\t\t\t`${policy}:${decision.decisionId}:${decision.policyId ?? \"missing\"}`,\n\t\t\tdataIssue(policy, capabilityPolicyIssueMessage(policy, decision), {\n\t\t\t\tsubjectId: proposal.subjectId,\n\t\t\t\trefs: capabilityDecisionRefs(decision, proposal),\n\t\t\t}),\n\t\t);\n\t\tif (policy === \"stale-capability-admission-policy-ref\")\n\t\t\tstate.terminalDecisionIds.add(decision.decisionId);\n\t\treturn;\n\t}\n\tif (policy !== undefined) {\n\t\tconst policyIssue = validateCapabilityAdmissionPolicy(policy, decision, proposal);\n\t\tif (policyIssue !== undefined) {\n\t\t\temitIssue(\n\t\t\t\tctx,\n\t\t\t\tstate,\n\t\t\t\t`${policyIssue.code}:${decision.decisionId}:${policy.policyId}`,\n\t\t\t\tdataIssue(policyIssue.code, policyIssue.message, {\n\t\t\t\t\tsubjectId: proposal.subjectId,\n\t\t\t\t\trefs: capabilityDecisionRefs(decision, proposal, policy),\n\t\t\t\t}),\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\t}\n\tif (state.admissionsById.has(decision.admissionId)) {\n\t\temitIssue(\n\t\t\tctx,\n\t\t\tstate,\n\t\t\t`duplicate-admission-id:${decision.admissionId}`,\n\t\t\tdataIssue(\n\t\t\t\t\"duplicate-capability-admission\",\n\t\t\t\t`CapabilityAdmission '${decision.admissionId}' was already emitted`,\n\t\t\t\t{ subjectId: proposal.subjectId, refs: capabilityDecisionRefs(decision, proposal, policy) },\n\t\t\t),\n\t\t);\n\t\tstate.terminalDecisionIds.add(decision.decisionId);\n\t\treturn;\n\t}\n\tif (state.admissionsByProposal.has(decision.proposalId)) {\n\t\temitIssue(\n\t\t\tctx,\n\t\t\tstate,\n\t\t\t`duplicate-admission-proposal:${decision.proposalId}:${decision.decisionId}`,\n\t\t\tdataIssue(\n\t\t\t\t\"duplicate-capability-admission-proposal\",\n\t\t\t\t`CapabilityAdmissionProposal '${decision.proposalId}' already has an admission decision`,\n\t\t\t\t{ subjectId: proposal.subjectId, refs: capabilityDecisionRefs(decision, proposal, policy) },\n\t\t\t),\n\t\t);\n\t\tstate.terminalDecisionIds.add(decision.decisionId);\n\t\treturn;\n\t}\n\tconst admissionState = admissionStateForOutcome(decision.outcome);\n\tif (admissionState === undefined) {\n\t\temitIssue(\n\t\t\tctx,\n\t\t\tstate,\n\t\t\t`unsupported-outcome:${decision.decisionId}:${String(decision.outcome)}`,\n\t\t\tdataIssue(\n\t\t\t\t\"unsupported-capability-admission-outcome\",\n\t\t\t\t`CapabilityAdmissionDecision '${decision.decisionId}' uses unsupported outcome '${String(decision.outcome)}'`,\n\t\t\t\t{ subjectId: proposal.subjectId, refs: capabilityDecisionRefs(decision, proposal, policy) },\n\t\t\t),\n\t\t);\n\t\tstate.terminalDecisionIds.add(decision.decisionId);\n\t\treturn;\n\t}\n\tconst admission: CapabilityAdmission = {\n\t\tkind: \"capability-admission\",\n\t\tadmissionId: decision.admissionId,\n\t\tproposalId: proposal.proposalId,\n\t\tsubjectId: proposal.subjectId,\n\t\tcapability: cloneCapabilityRef(proposal.capability),\n\t\tstate: admissionState,\n\t\tdecisionId: decision.decisionId,\n\t\tboundaryName: proposal.boundaryName,\n\t\trole: proposal.role,\n\t\tpolicyId: decision.policyId,\n\t\treason: decision.reason ?? proposal.reason,\n\t\tsourceRefs: capabilityDecisionRefs(decision, proposal, policy),\n\t\tadmittedAtMs: decision.decidedAtMs ?? admittedAtMs,\n\t\tmetadata: {\n\t\t\t...(proposal.metadata ?? {}),\n\t\t\t...(policy?.metadata ?? {}),\n\t\t\t...(decision.metadata ?? {}),\n\t\t},\n\t};\n\tstate.admissionsById.set(admission.admissionId, admission);\n\tstate.admissionsByProposal.set(admission.proposalId, admission);\n\tstate.terminalDecisionIds.add(decision.decisionId);\n\temitAdmission(ctx, state, admission);\n}\n\nfunction capabilityAdmissionViews(\n\tgraph: Graph,\n\truntime: Node<CapabilityAdmissionFact>,\n\tname: string,\n): Node<CapabilityAdmissionViews> {\n\treturn graph.node<CapabilityAdmissionViews>(\n\t\t[runtime],\n\t\t(ctx) => {\n\t\t\tconst state: CapabilityAdmissionViewsState =\n\t\t\t\tctx.state.get<CapabilityAdmissionViewsState>() ?? {\n\t\t\t\t\tadmissionsByProposal: new Map(),\n\t\t\t\t\tadmissionsBySubject: new Map(),\n\t\t\t\t\tissues: [],\n\t\t\t\t\taudit: [],\n\t\t\t\t};\n\t\t\tfor (const raw of depBatch(ctx, 0) ?? []) {\n\t\t\t\tconst fact = raw as CapabilityAdmissionFact;\n\t\t\t\tif (fact.kind === \"admission\") {\n\t\t\t\t\tconst admission = fact.admission;\n\t\t\t\t\tstate.admissionsByProposal.set(admission.proposalId, admission);\n\t\t\t\t\tconst bySubject = state.admissionsBySubject.get(admission.subjectId) ?? [];\n\t\t\t\t\tbySubject.push(admission);\n\t\t\t\t\tstate.admissionsBySubject.set(admission.subjectId, bySubject);\n\t\t\t\t}\n\t\t\t\tif (fact.kind === \"issue\") state.issues.push(fact.issue);\n\t\t\t\tif (fact.kind === \"audit\") state.audit.push(fact.audit);\n\t\t\t}\n\t\t\tctx.state.set(state);\n\t\t\tctx.down([[\"DATA\", freezeCapabilityAdmissionViews(state)]]);\n\t\t},\n\t\t{ name, factory: \"capabilityAdmissionViews\" },\n\t);\n}\n\nfunction emitAdmission(\n\tctx: Ctx,\n\tstate: CapabilityAdmissionStateInternal,\n\tadmission: CapabilityAdmission,\n): void {\n\tstate.statusSeq += 1;\n\tstate.auditSeq += 1;\n\tconst statusState = capabilityAdmissionStatusState(admission.state);\n\tconst status: CapabilityAdmissionStatus = {\n\t\tkind: \"capability-admission-status\",\n\t\tstatusId: `${admission.subjectId}:${statusState}:${state.statusSeq}`,\n\t\tstate: statusState,\n\t\tproposalId: admission.proposalId,\n\t\tadmissionId: admission.admissionId,\n\t\tsubjectId: admission.subjectId,\n\t\tcapabilityId: admission.capability.id,\n\t\tcapabilityKind: admission.capability.kind,\n\t\tpolicyId: admission.policyId,\n\t\tsourceRefs: admission.sourceRefs,\n\t};\n\tconst audit: AgentRuntimeAuditRecord = {\n\t\tid: `${admission.subjectId}:${statusState}:${state.auditSeq}`,\n\t\tkind: `capability-admission-${admission.state}`,\n\t\tsubjectId: admission.subjectId,\n\t\tsourceRefs: admission.sourceRefs,\n\t\tmetadata: {\n\t\t\tadmissionId: admission.admissionId,\n\t\t\tcapabilityId: admission.capability.id,\n\t\t\tcapabilityKind: admission.capability.kind,\n\t\t\tpolicyId: admission.policyId,\n\t\t\tproposalId: admission.proposalId,\n\t\t},\n\t};\n\tctx.down([\n\t\t[\"DATA\", { kind: \"admission\", admission } satisfies CapabilityAdmissionFact],\n\t\t[\"DATA\", { kind: \"status\", status } satisfies CapabilityAdmissionFact],\n\t\t[\"DATA\", { kind: \"audit\", audit } satisfies CapabilityAdmissionFact],\n\t]);\n}\n\nfunction emitIssue(\n\tctx: Ctx,\n\tstate: CapabilityAdmissionStateInternal,\n\tkey: string,\n\tissue: DataIssue,\n): void {\n\tif (state.issueKeys.has(key)) return;\n\tstate.issueKeys.add(key);\n\tstate.statusSeq += 1;\n\tstate.auditSeq += 1;\n\tconst status: CapabilityAdmissionStatus = {\n\t\tkind: \"capability-admission-status\",\n\t\tstatusId: `capability-admission-issue:${state.statusSeq}`,\n\t\tstate: \"capability-admission-issue\",\n\t\tsubjectId: issue.subjectId,\n\t\tissues: [issue],\n\t};\n\tconst audit: AgentRuntimeAuditRecord = {\n\t\tid: `capability-admission-issue:${state.auditSeq}`,\n\t\tkind: \"capability-admission-issue\",\n\t\tsubjectId: issue.subjectId,\n\t\tmessage: issue.message,\n\t\tissueCode: issue.code,\n\t};\n\tctx.down([\n\t\t[\"DATA\", { kind: \"issue\", issue } satisfies CapabilityAdmissionFact],\n\t\t[\"DATA\", { kind: \"status\", status } satisfies CapabilityAdmissionFact],\n\t\t[\"DATA\", { kind: \"audit\", audit } satisfies CapabilityAdmissionFact],\n\t]);\n}\n\nfunction capabilityAdmissionProposalIssue(\n\tproposal: CapabilityAdmissionProposal,\n): DataIssue | undefined {\n\tif (\n\t\tproposal.kind !== \"capability-admission-proposal\" ||\n\t\ttypeof proposal.proposalId !== \"string\" ||\n\t\tproposal.proposalId.length === 0 ||\n\t\ttypeof proposal.subjectId !== \"string\" ||\n\t\tproposal.subjectId.length === 0 ||\n\t\t!isBoundaryCapabilityRef(proposal.capability)\n\t) {\n\t\treturn dataIssue(\n\t\t\t\"malformed-capability-admission-proposal\",\n\t\t\t\"CapabilityAdmissionProposal requires proposalId, subjectId, and a D348 BoundaryCapabilityRef\",\n\t\t\t{ subjectId: typeof proposal.subjectId === \"string\" ? proposal.subjectId : undefined },\n\t\t);\n\t}\n\treturn undefined;\n}\n\nfunction capabilityAdmissionPolicyIssue(policy: CapabilityAdmissionPolicy): DataIssue | undefined {\n\tif (\n\t\tpolicy.kind !== \"capability-admission-policy\" ||\n\t\ttypeof policy.policyId !== \"string\" ||\n\t\tpolicy.policyId.length === 0 ||\n\t\t(policy.capabilityIds !== undefined &&\n\t\t\t(!Array.isArray(policy.capabilityIds) ||\n\t\t\t\t!policy.capabilityIds.every((id) => typeof id === \"string\" && id.length > 0))) ||\n\t\t(policy.capabilityKinds !== undefined &&\n\t\t\t(!Array.isArray(policy.capabilityKinds) ||\n\t\t\t\t!policy.capabilityKinds.every(isBoundaryCapabilityKind))) ||\n\t\t(policy.requiredOnly !== undefined && typeof policy.requiredOnly !== \"boolean\") ||\n\t\t(policy.allowedOutcomes !== undefined &&\n\t\t\t(!Array.isArray(policy.allowedOutcomes) ||\n\t\t\t\t!policy.allowedOutcomes.every(isCapabilityAdmissionOutcome)))\n\t) {\n\t\treturn dataIssue(\n\t\t\t\"malformed-capability-admission-policy\",\n\t\t\t\"CapabilityAdmissionPolicy requires a policyId and D348 capability/outcome filters\",\n\t\t\t{ subjectId: typeof policy.policyId === \"string\" ? policy.policyId : undefined },\n\t\t);\n\t}\n\treturn undefined;\n}\n\nfunction capabilityAdmissionDecisionIssue(\n\tdecision: CapabilityAdmissionDecision,\n): DataIssue | undefined {\n\tif (\n\t\tdecision.kind !== \"capability-admission-decision\" ||\n\t\ttypeof decision.decisionId !== \"string\" ||\n\t\tdecision.decisionId.length === 0 ||\n\t\ttypeof decision.admissionId !== \"string\" ||\n\t\tdecision.admissionId.length === 0 ||\n\t\ttypeof decision.proposalId !== \"string\" ||\n\t\tdecision.proposalId.length === 0 ||\n\t\t!isCapabilityAdmissionOutcome(decision.outcome) ||\n\t\t(decision.policyId !== undefined &&\n\t\t\t(typeof decision.policyId !== \"string\" || decision.policyId.length === 0))\n\t) {\n\t\treturn dataIssue(\n\t\t\t\"malformed-capability-admission-decision\",\n\t\t\t\"CapabilityAdmissionDecision requires decisionId, admissionId, proposalId, and allow/block/defer outcome\",\n\t\t\t{ subjectId: typeof decision.proposalId === \"string\" ? decision.proposalId : undefined },\n\t\t);\n\t}\n\treturn undefined;\n}\n\nfunction validateCapabilityAdmissionPolicy(\n\tpolicy: CapabilityAdmissionPolicy,\n\tdecision: CapabilityAdmissionDecision,\n\tproposal: CapabilityAdmissionProposal,\n): { readonly code: string; readonly message: string } | undefined {\n\tif (\n\t\tpolicy.capabilityIds !== undefined &&\n\t\t!policy.capabilityIds.includes(proposal.capability.id)\n\t) {\n\t\treturn {\n\t\t\tcode: \"capability-admission-policy-mismatch\",\n\t\t\tmessage: `CapabilityAdmissionPolicy '${policy.policyId}' does not apply to capability '${proposal.capability.id}'`,\n\t\t};\n\t}\n\tif (\n\t\tpolicy.capabilityKinds !== undefined &&\n\t\t!policy.capabilityKinds.includes(proposal.capability.kind)\n\t) {\n\t\treturn {\n\t\t\tcode: \"capability-admission-policy-mismatch\",\n\t\t\tmessage: `CapabilityAdmissionPolicy '${policy.policyId}' does not apply to capability kind '${proposal.capability.kind}'`,\n\t\t};\n\t}\n\tif (policy.requiredOnly === true && !proposal.capability.required) {\n\t\treturn {\n\t\t\tcode: \"capability-admission-policy-mismatch\",\n\t\t\tmessage: `CapabilityAdmissionPolicy '${policy.policyId}' applies only to required capabilities`,\n\t\t};\n\t}\n\tif (policy.allowedOutcomes !== undefined && !policy.allowedOutcomes.includes(decision.outcome)) {\n\t\treturn {\n\t\t\tcode: \"unsupported-capability-admission-outcome\",\n\t\t\tmessage: `CapabilityAdmissionPolicy '${policy.policyId}' does not allow outcome '${decision.outcome}'`,\n\t\t};\n\t}\n\treturn undefined;\n}\n\nfunction capabilityPolicyForDecision(\n\tstate: CapabilityAdmissionStateInternal,\n\tdecision: CapabilityAdmissionDecision,\n):\n\t| CapabilityAdmissionPolicy\n\t| \"missing-capability-admission-policy\"\n\t| \"stale-capability-admission-policy-ref\"\n\t| undefined {\n\tif (decision.policyId === undefined) return undefined;\n\tconst stalePolicyRef = (decision.sourceRefs ?? []).find(\n\t\t(sourceRef) =>\n\t\t\tsourceRef.kind === \"capability-admission-policy\" && sourceRef.id !== decision.policyId,\n\t);\n\tif (stalePolicyRef !== undefined) return \"stale-capability-admission-policy-ref\";\n\treturn state.policies.get(decision.policyId) ?? \"missing-capability-admission-policy\";\n}\n\nfunction capabilityPolicyIssueMessage(\n\tcode: \"missing-capability-admission-policy\" | \"stale-capability-admission-policy-ref\",\n\tdecision: CapabilityAdmissionDecision,\n): string {\n\tif (code === \"missing-capability-admission-policy\") {\n\t\treturn `CapabilityAdmissionPolicy '${decision.policyId}' was referenced but not present`;\n\t}\n\treturn `CapabilityAdmissionDecision '${decision.decisionId}' carries a stale admission policy source ref`;\n}\n\nfunction admissionStateForOutcome(\n\toutcome: CapabilityAdmissionOutcome,\n): CapabilityAdmissionState | undefined {\n\tif (outcome === \"allow\") return \"allowed\";\n\tif (outcome === \"block\") return \"blocked\";\n\tif (outcome === \"defer\") return \"deferred\";\n\treturn undefined;\n}\n\nfunction capabilityAdmissionStatusState(\n\tstate: CapabilityAdmissionState,\n): CapabilityAdmissionStatus[\"state\"] {\n\tif (state === \"allowed\") return \"capability-admission-allowed\";\n\tif (state === \"blocked\") return \"capability-admission-blocked\";\n\treturn \"capability-admission-deferred\";\n}\n\nfunction cloneCapabilityRef(ref: BoundaryCapabilityRef): BoundaryCapabilityRef {\n\treturn {\n\t\tid: ref.id,\n\t\tkind: ref.kind,\n\t\trequired: ref.required,\n\t\t...(ref.sourceRefs === undefined ? {} : { sourceRefs: [...ref.sourceRefs] }),\n\t};\n}\n\nfunction isBoundaryCapabilityRef(value: unknown): value is BoundaryCapabilityRef {\n\tif (value === null || typeof value !== \"object\" || Array.isArray(value)) return false;\n\tconst record = value as Partial<BoundaryCapabilityRef>;\n\treturn (\n\t\ttypeof record.id === \"string\" &&\n\t\trecord.id.length > 0 &&\n\t\tisBoundaryCapabilityKind(record.kind) &&\n\t\ttypeof record.required === \"boolean\" &&\n\t\t(record.sourceRefs === undefined ||\n\t\t\t(Array.isArray(record.sourceRefs) &&\n\t\t\t\trecord.sourceRefs.every((sourceRef) => typeof sourceRef === \"string\")))\n\t);\n}\n\nfunction isBoundaryCapabilityKind(value: unknown): value is BoundaryCapabilityRef[\"kind\"] {\n\treturn value === \"auth\" || value === \"permission\" || value === \"config\" || value === \"resource\";\n}\n\nfunction isCapabilityAdmissionOutcome(value: unknown): value is CapabilityAdmissionOutcome {\n\treturn value === \"allow\" || value === \"block\" || value === \"defer\";\n}\n\nfunction proposalKeyFallback(proposal: CapabilityAdmissionProposal): string {\n\treturn typeof proposal.proposalId === \"string\" && proposal.proposalId.length > 0\n\t\t? proposal.proposalId\n\t\t: `${stringValue(proposal.subjectId) ?? \"unknown\"}:${capabilityKeyFallback(proposal.capability)}`;\n}\n\nfunction policyKeyFallback(policy: CapabilityAdmissionPolicy): string {\n\treturn typeof policy.policyId === \"string\" && policy.policyId.length > 0\n\t\t? policy.policyId\n\t\t: \"unknown\";\n}\n\nfunction decisionKeyFallback(decision: CapabilityAdmissionDecision): string {\n\treturn typeof decision.decisionId === \"string\" && decision.decisionId.length > 0\n\t\t? decision.decisionId\n\t\t: `${stringValue(decision.proposalId) ?? \"unknown\"}:${stringValue(decision.admissionId) ?? \"unknown\"}`;\n}\n\nfunction capabilityKeyFallback(value: unknown): string {\n\tif (!isBoundaryCapabilityRef(value)) return \"unknown-capability\";\n\treturn `${value.kind}:${value.id}`;\n}\n\nfunction nextMalformedIssueKey(\n\tstate: CapabilityAdmissionStateInternal,\n\tkind: \"decision\" | \"policy\" | \"proposal\",\n\tfallback: string,\n): string {\n\tstate.issueSeq += 1;\n\treturn `malformed-${kind}:${state.issueSeq}:${fallback}`;\n}\n\nfunction stringValue(value: unknown): string | undefined {\n\treturn typeof value === \"string\" && value.length > 0 ? value : undefined;\n}\n\nfunction capabilityProposalRefs(proposal: CapabilityAdmissionProposal): readonly SourceRef[] {\n\treturn uniqueSourceRefs([\n\t\tref(\"capability-admission-proposal\", proposal.proposalId),\n\t\tref(\"boundary-capability\", `${proposal.capability.kind}:${proposal.capability.id}`),\n\t\t...(proposal.sourceRefs ?? []),\n\t]);\n}\n\nfunction capabilityDecisionRefs(\n\tdecision: CapabilityAdmissionDecision,\n\tproposal?: CapabilityAdmissionProposal,\n\tpolicy?: CapabilityAdmissionPolicy,\n): readonly SourceRef[] {\n\treturn uniqueSourceRefs([\n\t\tref(\"capability-admission-decision\", decision.decisionId),\n\t\tref(\"capability-admission\", decision.admissionId),\n\t\tref(\"capability-admission-proposal\", decision.proposalId),\n\t\t...(proposal === undefined ? [] : capabilityProposalRefs(proposal)),\n\t\t...(decision.policyId === undefined\n\t\t\t? []\n\t\t\t: [ref(\"capability-admission-policy\", decision.policyId)]),\n\t\t...(policy === undefined ? [] : [ref(\"capability-admission-policy\", policy.policyId)]),\n\t\t...(decision.sourceRefs ?? []),\n\t]);\n}\n\nfunction forEachPolicyDepBatch(\n\tctx: Ctx,\n\tstart: number,\n\tcount: number,\n\tfn: (value: unknown) => void,\n): void {\n\tfor (let i = 0; i < count; i += 1) {\n\t\tfor (const value of depBatch(ctx, start + i) ?? []) fn(value);\n\t}\n}\n\nfunction projectRuntimeFact<T, TOut>(\n\tgraph: Graph,\n\truntime: Node<T>,\n\tname: string,\n\tfactory: string,\n\tpick: (fact: T) => TOut | undefined,\n): Node<TOut> {\n\treturn graph.node<TOut>(\n\t\t[runtime],\n\t\t(ctx) => {\n\t\t\tfor (const fact of depBatch(ctx, 0) ?? []) {\n\t\t\t\tconst typed = fact as T;\n\t\t\t\tconst value = pick(typed);\n\t\t\t\tif (value !== undefined) ctx.down([[\"DATA\", value]]);\n\t\t\t}\n\t\t},\n\t\t{ name, factory },\n\t);\n}\n\nfunction freezeCapabilityAdmissionViews(\n\tstate: CapabilityAdmissionViewsState,\n): CapabilityAdmissionViews {\n\treturn {\n\t\tadmissionsByProposal: new Map(state.admissionsByProposal),\n\t\tadmissionsBySubject: new Map(\n\t\t\tArray.from(state.admissionsBySubject, ([key, value]) => [key, Object.freeze([...value])]),\n\t\t),\n\t\tissues: Object.freeze([...state.issues]),\n\t\taudit: Object.freeze([...state.audit]),\n\t};\n}\n\nfunction emptyCapabilityAdmissionState(): CapabilityAdmissionStateInternal {\n\treturn {\n\t\tproposals: new Map(),\n\t\tpolicies: new Map(),\n\t\tdecisions: new Map(),\n\t\tadmissionsById: new Map(),\n\t\tadmissionsByProposal: new Map(),\n\t\tterminalDecisionIds: new Set(),\n\t\tissueKeys: new Set(),\n\t\tissueSeq: 0,\n\t\tstatusSeq: 0,\n\t\tauditSeq: 0,\n\t};\n}\n\nfunction dataIssue(\n\tcode: string,\n\tmessage: string,\n\topts: {\n\t\treadonly subjectId?: string;\n\t\treadonly refs?: readonly SourceRef[];\n\t\treadonly details?: unknown;\n\t} = {},\n): DataIssue {\n\treturn {\n\t\tkind: \"issue\",\n\t\tcode,\n\t\tmessage,\n\t\tseverity: \"error\",\n\t\tsubjectId: opts.subjectId,\n\t\trefs: opts.refs?.map((sourceRef) => `${sourceRef.kind}:${sourceRef.id}`),\n\t\tdetails: opts.details,\n\t};\n}\n\nfunction uniqueSourceRefs(sourceRefs: readonly SourceRef[]): readonly SourceRef[] {\n\tconst seen = new Set<string>();\n\tconst out: SourceRef[] = [];\n\tfor (const sourceRef of sourceRefs) {\n\t\tconst key = `${sourceRef.kind}:${sourceRef.id}:${JSON.stringify(sourceRef.metadata ?? {})}`;\n\t\tif (seen.has(key)) continue;\n\t\tseen.add(key);\n\t\tout.push(sourceRef);\n\t}\n\treturn out;\n}\n\nfunction ref(kind: string, id: string): SourceRef {\n\treturn { kind, id };\n}\n"],"mappings":"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","names":["resultId","ref"]}
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  hasKvVersioned
3
- } from "./chunk-DKP56CSW.js";
3
+ } from "./chunk-JKAYLDQV.js";
4
4
 
5
5
  // src/storage/read-through.ts
6
6
  function defer(fn) {
@@ -146,4 +146,4 @@ export {
146
146
  readThroughKv,
147
147
  tieredReadThrough
148
148
  };
149
- //# sourceMappingURL=chunk-Z2ANQ6JW.js.map
149
+ //# sourceMappingURL=chunk-4Q77MMJY.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  Node,
3
3
  withNodeCore
4
- } from "./chunk-XKXWK2KP.js";
4
+ } from "./chunk-GXU6WFEJ.js";
5
5
  import {
6
6
  depBatch,
7
7
  depCount,
@@ -17,7 +17,7 @@ import {
17
17
  } from "./chunk-S6HXABGL.js";
18
18
  import {
19
19
  strictJsonCodec
20
- } from "./chunk-4VLAQHZI.js";
20
+ } from "./chunk-K7FB3JTD.js";
21
21
 
22
22
  // src/graph/checkpoint.ts
23
23
  var GRAPH_CHECKPOINT_VERSION = "graphrefly.checkpoint.v1";
@@ -551,4 +551,4 @@ export {
551
551
  catchError,
552
552
  valve
553
553
  };
554
- //# sourceMappingURL=chunk-SS2A464I.js.map
554
+ //# sourceMappingURL=chunk-54WPEODM.js.map