@remnic/core 9.3.613 → 9.3.615

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 (386) hide show
  1. package/dist/access-cli.js +59 -58
  2. package/dist/access-cli.js.map +1 -1
  3. package/dist/access-http.d.ts +4 -2
  4. package/dist/access-http.js +23 -23
  5. package/dist/access-mcp.d.ts +9 -2
  6. package/dist/access-mcp.js +20 -20
  7. package/dist/access-schema.d.ts +26 -14
  8. package/dist/access-schema.js +3 -3
  9. package/dist/{access-service-D2J9dh_9.d.ts → access-service-CBNEKjzN.d.ts} +71 -6
  10. package/dist/access-service.d.ts +2 -2
  11. package/dist/access-service.js +17 -17
  12. package/dist/active-recall.js +20 -3
  13. package/dist/active-recall.js.map +1 -1
  14. package/dist/adapters/index.js +4 -4
  15. package/dist/adapters/registry.js +2 -2
  16. package/dist/behavior-learner.js +2 -3
  17. package/dist/behavior-learner.js.map +1 -1
  18. package/dist/bootstrap.d.ts +1 -1
  19. package/dist/briefing.js +3 -3
  20. package/dist/buffer.d.ts +1 -1
  21. package/dist/buffer.js +1 -1
  22. package/dist/calibration.d.ts +5 -2
  23. package/dist/calibration.js +7 -5
  24. package/dist/calibration.js.map +1 -1
  25. package/dist/{capsule-crypto-7FJQINUR.js → capsule-crypto-YO5QJ6L3.js} +2 -2
  26. package/dist/causal-consolidation.d.ts +8 -2
  27. package/dist/causal-consolidation.js +13 -11
  28. package/dist/causal-consolidation.js.map +1 -1
  29. package/dist/{chunk-3BP57I6J.js → chunk-2F6NP3NT.js} +2 -1
  30. package/dist/{chunk-3BP57I6J.js.map → chunk-2F6NP3NT.js.map} +1 -1
  31. package/dist/{chunk-AU7Q3LSC.js → chunk-2QSZNTDO.js} +4 -4
  32. package/dist/{chunk-HSVJGWYS.js → chunk-2ROPI5OE.js} +2 -2
  33. package/dist/{chunk-C4SQJZAF.js → chunk-2SGJY2UY.js} +6 -3
  34. package/dist/chunk-2SGJY2UY.js.map +1 -0
  35. package/dist/{chunk-ZDTVJXIP.js → chunk-3MAONBX3.js} +13 -5
  36. package/dist/chunk-3MAONBX3.js.map +1 -0
  37. package/dist/{chunk-G3Z3QEF5.js → chunk-3PY7VHV7.js} +2 -2
  38. package/dist/chunk-3PY7VHV7.js.map +1 -0
  39. package/dist/{chunk-CF3ZF2YU.js → chunk-3QSU4NFF.js} +3 -3
  40. package/dist/{chunk-AJA46VX5.js → chunk-3T74IZB3.js} +11 -2
  41. package/dist/chunk-3T74IZB3.js.map +1 -0
  42. package/dist/{chunk-KVEVLBKC.js → chunk-4HFJQCJZ.js} +13 -8
  43. package/dist/chunk-4HFJQCJZ.js.map +1 -0
  44. package/dist/{chunk-KGK2QKWL.js → chunk-4R4KTDIE.js} +1 -1
  45. package/dist/chunk-4R4KTDIE.js.map +1 -0
  46. package/dist/{chunk-OI27U2HT.js → chunk-5BTCT236.js} +2 -2
  47. package/dist/{chunk-TH67Q46T.js → chunk-5OHHEORR.js} +64 -21
  48. package/dist/chunk-5OHHEORR.js.map +1 -0
  49. package/dist/{chunk-CO7ZO4TU.js → chunk-5VDJMYTF.js} +2 -2
  50. package/dist/{chunk-BFBF3XEF.js → chunk-6BDVBBBY.js} +33 -25
  51. package/dist/{chunk-BFBF3XEF.js.map → chunk-6BDVBBBY.js.map} +1 -1
  52. package/dist/{chunk-EAZGEEG2.js → chunk-6L46YAEZ.js} +45 -9
  53. package/dist/chunk-6L46YAEZ.js.map +1 -0
  54. package/dist/{chunk-YFS5OEKO.js → chunk-7MLB4NCL.js} +2 -2
  55. package/dist/{chunk-LZ3VEOU5.js → chunk-AL4RAJL5.js} +22 -5
  56. package/dist/chunk-AL4RAJL5.js.map +1 -0
  57. package/dist/{chunk-557IAFPD.js → chunk-APRRL26Q.js} +2 -2
  58. package/dist/{chunk-QDDHYAKV.js → chunk-AZDOWD2L.js} +2 -2
  59. package/dist/{chunk-MLT75J5S.js → chunk-B6SU7YSE.js} +3 -3
  60. package/dist/{chunk-FXKPZ3H6.js → chunk-BPSGLMQ4.js} +2 -2
  61. package/dist/{chunk-2NLLXCJG.js → chunk-BXLOS5AJ.js} +2 -2
  62. package/dist/{chunk-NOMEVTUD.js → chunk-C6C7XVKG.js} +5 -4
  63. package/dist/chunk-C6C7XVKG.js.map +1 -0
  64. package/dist/{chunk-XKIQZXUB.js → chunk-CI7RKSRE.js} +7 -1
  65. package/dist/chunk-CI7RKSRE.js.map +1 -0
  66. package/dist/{chunk-IK34DVAC.js → chunk-CIOMS6DI.js} +2 -2
  67. package/dist/{chunk-2I5JGH3M.js → chunk-CYEPCZN5.js} +2 -2
  68. package/dist/{chunk-2I5JGH3M.js.map → chunk-CYEPCZN5.js.map} +1 -1
  69. package/dist/{chunk-JHMFYY7L.js → chunk-DCGT4FPP.js} +13 -5
  70. package/dist/chunk-DCGT4FPP.js.map +1 -0
  71. package/dist/{chunk-7DZRO2DC.js → chunk-DEPRLVLK.js} +2 -2
  72. package/dist/{chunk-CSKLPDN6.js → chunk-DEVUWMME.js} +52 -19
  73. package/dist/chunk-DEVUWMME.js.map +1 -0
  74. package/dist/{chunk-DHGSZ3UD.js → chunk-DGNQRNLL.js} +2 -2
  75. package/dist/{chunk-X7Y7WX73.js → chunk-DQEMWVMT.js} +1 -1
  76. package/dist/{chunk-HJNQQICM.js → chunk-EXUAP5LH.js} +108 -51
  77. package/dist/chunk-EXUAP5LH.js.map +1 -0
  78. package/dist/chunk-FAV25DUZ.js +12 -0
  79. package/dist/chunk-FAV25DUZ.js.map +1 -0
  80. package/dist/{chunk-ETUPBUHB.js → chunk-GDASG7NC.js} +2 -2
  81. package/dist/{chunk-L227SKTB.js → chunk-GDB4J2H3.js} +17 -1
  82. package/dist/chunk-GDB4J2H3.js.map +1 -0
  83. package/dist/{chunk-IP73YCZP.js → chunk-GLPBYIXN.js} +4 -2
  84. package/dist/chunk-GLPBYIXN.js.map +1 -0
  85. package/dist/{chunk-4HP7HIE3.js → chunk-HP5FMB6L.js} +2 -2
  86. package/dist/{chunk-EVZFIAPG.js → chunk-IBTZEBUD.js} +23 -10
  87. package/dist/chunk-IBTZEBUD.js.map +1 -0
  88. package/dist/{chunk-DOX2CG6Y.js → chunk-IEUU7O4F.js} +2 -2
  89. package/dist/{chunk-EUML3N6B.js → chunk-IMA6GU4Y.js} +3 -3
  90. package/dist/chunk-IMA6GU4Y.js.map +1 -0
  91. package/dist/{chunk-JNANKJLN.js → chunk-JOASJWQR.js} +2 -2
  92. package/dist/chunk-JOASJWQR.js.map +1 -0
  93. package/dist/{chunk-WSGF57U2.js → chunk-JQDZQ4TB.js} +2 -2
  94. package/dist/{chunk-HINSGUA7.js → chunk-KBL3JJR6.js} +9 -13
  95. package/dist/chunk-KBL3JJR6.js.map +1 -0
  96. package/dist/{chunk-IOTENEVL.js → chunk-KGLPJROV.js} +57 -50
  97. package/dist/chunk-KGLPJROV.js.map +1 -0
  98. package/dist/{chunk-W7L6HXUC.js → chunk-LXOM6IQU.js} +2 -2
  99. package/dist/{chunk-G6R5UD3Q.js → chunk-MGN7VHWQ.js} +42 -1
  100. package/dist/{chunk-G6R5UD3Q.js.map → chunk-MGN7VHWQ.js.map} +1 -1
  101. package/dist/{chunk-DLJ4IR6M.js → chunk-MHQC2WU2.js} +2 -2
  102. package/dist/chunk-MHQC2WU2.js.map +1 -0
  103. package/dist/{chunk-5RPTH6AU.js → chunk-NM5NQYJE.js} +20 -19
  104. package/dist/chunk-NM5NQYJE.js.map +1 -0
  105. package/dist/{chunk-6JGNHWCI.js → chunk-OBIRVF36.js} +3 -3
  106. package/dist/{chunk-CHCA44C3.js → chunk-ODPLEWB6.js} +3 -3
  107. package/dist/chunk-ODPLEWB6.js.map +1 -0
  108. package/dist/{chunk-HENLZHIT.js → chunk-OIF36KGD.js} +7 -4
  109. package/dist/chunk-OIF36KGD.js.map +1 -0
  110. package/dist/{chunk-GUPISBV2.js → chunk-PP2JH3GP.js} +2 -2
  111. package/dist/{chunk-OXJBNGBK.js → chunk-PSUB67YB.js} +2 -2
  112. package/dist/{chunk-UWY7GIVS.js → chunk-PYIFUBRK.js} +45 -13
  113. package/dist/chunk-PYIFUBRK.js.map +1 -0
  114. package/dist/{chunk-KIB7SDIJ.js → chunk-Q6YIJGXJ.js} +2 -2
  115. package/dist/{chunk-ZT3EGNLR.js → chunk-QPD426WT.js} +2 -2
  116. package/dist/{chunk-RLV3PQGH.js → chunk-QVO4YOB7.js} +6 -6
  117. package/dist/{chunk-GMAG2HS4.js → chunk-RG3LBSGH.js} +46 -9
  118. package/dist/chunk-RG3LBSGH.js.map +1 -0
  119. package/dist/{chunk-XSWKORGM.js → chunk-S53OYO3F.js} +3 -1
  120. package/dist/chunk-S53OYO3F.js.map +1 -0
  121. package/dist/{chunk-YCN4BVDK.js → chunk-SCPFRKIT.js} +4 -2
  122. package/dist/chunk-SCPFRKIT.js.map +1 -0
  123. package/dist/{chunk-NZPF2SYV.js → chunk-T7N6KQGS.js} +138 -5
  124. package/dist/chunk-T7N6KQGS.js.map +1 -0
  125. package/dist/{chunk-VJXSUAO7.js → chunk-TNOWU6RP.js} +13 -10
  126. package/dist/chunk-TNOWU6RP.js.map +1 -0
  127. package/dist/{chunk-PCI747N2.js → chunk-TZVQQTG4.js} +48 -19
  128. package/dist/chunk-TZVQQTG4.js.map +1 -0
  129. package/dist/{chunk-KQAFEZQX.js → chunk-VDX2J7OX.js} +2 -2
  130. package/dist/{chunk-IK7DCC5H.js → chunk-VMGLYN42.js} +2 -2
  131. package/dist/{chunk-KM2A35EO.js → chunk-WB3LYXC5.js} +11 -7
  132. package/dist/chunk-WB3LYXC5.js.map +1 -0
  133. package/dist/{chunk-PPPZY2EU.js → chunk-WD2W4234.js} +9 -3
  134. package/dist/chunk-WD2W4234.js.map +1 -0
  135. package/dist/{chunk-NSKYFGDL.js → chunk-X4QQB7O6.js} +2 -2
  136. package/dist/{chunk-HPWVAEET.js → chunk-X6IRLNOO.js} +3 -7
  137. package/dist/chunk-X6IRLNOO.js.map +1 -0
  138. package/dist/{chunk-46GJIW5M.js → chunk-XAZOWLW4.js} +5 -5
  139. package/dist/{chunk-46GJIW5M.js.map → chunk-XAZOWLW4.js.map} +1 -1
  140. package/dist/{chunk-XPSVGJYA.js → chunk-YRMKDTKF.js} +12 -9
  141. package/dist/chunk-YRMKDTKF.js.map +1 -0
  142. package/dist/{chunk-6ZZP4EJF.js → chunk-ZJR7VG5L.js} +3 -3
  143. package/dist/{chunk-6ZZP4EJF.js.map → chunk-ZJR7VG5L.js.map} +1 -1
  144. package/dist/{chunk-2QANQKSQ.js → chunk-ZK32E74R.js} +156 -45
  145. package/dist/chunk-ZK32E74R.js.map +1 -0
  146. package/dist/{cli-OrfKXNU4.d.ts → cli-Cw729yLf.d.ts} +6 -2
  147. package/dist/cli.d.ts +3 -3
  148. package/dist/cli.js +61 -60
  149. package/dist/compounding/engine.js +3 -3
  150. package/dist/compounding/preference-consolidator.js +39 -11
  151. package/dist/compounding/preference-consolidator.js.map +1 -1
  152. package/dist/config.js +1 -1
  153. package/dist/connectors/codex-materialize-runner.js +3 -3
  154. package/dist/connectors/index.js +3 -3
  155. package/dist/consolidation-provenance-check.js +1 -1
  156. package/dist/contradiction/index.js +4 -4
  157. package/dist/conversation-index/backend.js +2 -2
  158. package/dist/conversation-index/indexer.js +1 -1
  159. package/dist/cross-namespace-budget.js +1 -1
  160. package/dist/enrichment/index.js +1 -1
  161. package/dist/entity-retrieval.js +3 -3
  162. package/dist/evals.js +1 -1
  163. package/dist/explicit-capture.d.ts +11 -1
  164. package/dist/explicit-capture.js +1 -1
  165. package/dist/extraction-judge.js +8 -1
  166. package/dist/extraction.js +2 -2
  167. package/dist/fallback-llm.d.ts +23 -6
  168. package/dist/fallback-llm.js +5 -3
  169. package/dist/{first-start-migration-GYJWIH36.js → first-start-migration-FF7YFGRP.js} +6 -6
  170. package/dist/index.d.ts +3 -3
  171. package/dist/index.js +95 -94
  172. package/dist/index.js.map +1 -1
  173. package/dist/lcm/archive.js +2 -2
  174. package/dist/lcm/engine.js +5 -5
  175. package/dist/lcm/index.js +7 -7
  176. package/dist/lcm/summarizer.js +3 -3
  177. package/dist/maintenance/memory-governance-cron.d.ts +6 -4
  178. package/dist/maintenance/memory-governance-cron.js +1 -1
  179. package/dist/maintenance/memory-governance.js +3 -3
  180. package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +3 -3
  181. package/dist/maintenance/rebuild-memory-projection.js +4 -4
  182. package/dist/mcp-memory-inspector-app.d.ts +2 -2
  183. package/dist/mcp-memory-inspector-app.js +1 -1
  184. package/dist/migrate/from-engram.js +1 -1
  185. package/dist/namespaces/migrate.js +16 -15
  186. package/dist/namespaces/search.js +12 -11
  187. package/dist/namespaces/storage.js +3 -3
  188. package/dist/network/webdav.d.ts +2 -0
  189. package/dist/network/webdav.js +1 -1
  190. package/dist/objective-state-writers.js +2 -2
  191. package/dist/operator-toolkit.d.ts +3 -1
  192. package/dist/operator-toolkit.js +21 -20
  193. package/dist/{orchestrator-DTRQG75J.d.ts → orchestrator-CqWOjfgl.d.ts} +46 -3
  194. package/dist/orchestrator.d.ts +1 -1
  195. package/dist/orchestrator.js +48 -45
  196. package/dist/patterns-cli.js +1 -1
  197. package/dist/qmd-recall-cache.d.ts +2 -0
  198. package/dist/qmd-recall-cache.js +1 -1
  199. package/dist/qmd.d.ts +37 -2
  200. package/dist/qmd.js +4 -1
  201. package/dist/recall-explain-renderer.js +3 -3
  202. package/dist/recall-planner-llm.d.ts +57 -0
  203. package/dist/recall-planner-llm.js +167 -0
  204. package/dist/recall-planner-llm.js.map +1 -0
  205. package/dist/recall-xray-cli.js +4 -4
  206. package/dist/recall-xray-renderer.js +3 -3
  207. package/dist/recall-xray.js +2 -2
  208. package/dist/resume-bundles.js +2 -2
  209. package/dist/retrieval-agents.js +2 -2
  210. package/dist/routing/store.js +1 -1
  211. package/dist/schemas.d.ts +22 -22
  212. package/dist/search/factory.js +11 -10
  213. package/dist/search/index.js +11 -10
  214. package/dist/search/lancedb-backend.d.ts +1 -1
  215. package/dist/search/lancedb-backend.js +3 -2
  216. package/dist/search/meilisearch-backend.d.ts +1 -1
  217. package/dist/search/meilisearch-backend.js +3 -2
  218. package/dist/search/noop-backend.d.ts +1 -1
  219. package/dist/search/noop-backend.js +1 -1
  220. package/dist/search/orama-backend.d.ts +1 -1
  221. package/dist/search/orama-backend.js +3 -2
  222. package/dist/search/port.d.ts +6 -1
  223. package/dist/search/port.js +7 -0
  224. package/dist/search/remote-backend.d.ts +1 -1
  225. package/dist/search/remote-backend.js +1 -1
  226. package/dist/semantic-consolidation.js +4 -4
  227. package/dist/semantic-rule-promotion.js +3 -3
  228. package/dist/semantic-rule-verifier.js +3 -3
  229. package/dist/session-observer-state.js +1 -1
  230. package/dist/storage.js +2 -2
  231. package/dist/summarizer.js +2 -2
  232. package/dist/temporal-index.js +1 -1
  233. package/dist/{tier-stats-SKML2OSF.js → tier-stats-3LYQ3VV5.js} +3 -3
  234. package/dist/transfer/backup.js +2 -2
  235. package/dist/transfer/capsule-export.js +2 -2
  236. package/dist/transfer/capsule-import.js +2 -2
  237. package/dist/transfer/export-sqlite.js +1 -1
  238. package/dist/transfer/types.d.ts +12 -12
  239. package/dist/types.d.ts +32 -0
  240. package/dist/types.js +1 -1
  241. package/dist/utility-learner.js +1 -1
  242. package/dist/utility-runtime.js +2 -2
  243. package/dist/verified-recall.js +3 -3
  244. package/dist/work/board.js +2 -2
  245. package/dist/work/storage.d.ts +2 -0
  246. package/dist/work/storage.js +1 -1
  247. package/package.json +1 -1
  248. package/src/access-http.ts +24 -10
  249. package/src/access-mcp.test.ts +160 -0
  250. package/src/access-mcp.ts +72 -7
  251. package/src/access-schema.ts +11 -0
  252. package/src/access-service-coding-write.test.ts +478 -0
  253. package/src/access-service.ts +237 -32
  254. package/src/active-recall.test.ts +40 -0
  255. package/src/active-recall.ts +19 -2
  256. package/src/behavior-learner.ts +5 -3
  257. package/src/buffer-session.test.ts +58 -0
  258. package/src/buffer-surprise-trigger.test.ts +4 -18
  259. package/src/buffer.ts +39 -11
  260. package/src/calibration.ts +10 -4
  261. package/src/causal-consolidation.test.ts +47 -2
  262. package/src/causal-consolidation.ts +13 -9
  263. package/src/cli.ts +19 -4
  264. package/src/compounding/engine.ts +2 -0
  265. package/src/compounding/preference-consolidator.test.ts +292 -0
  266. package/src/compounding/preference-consolidator.ts +55 -19
  267. package/src/config.test.ts +213 -0
  268. package/src/config.ts +175 -4
  269. package/src/connectors/codex-materialize-runner.ts +7 -4
  270. package/src/consolidation-provenance-check.ts +24 -5
  271. package/src/conversation-index/indexer.test.ts +22 -0
  272. package/src/conversation-index/indexer.ts +7 -3
  273. package/src/cross-namespace-budget.test.ts +44 -21
  274. package/src/cross-namespace-budget.ts +2 -2
  275. package/src/enrichment/pipeline.ts +11 -16
  276. package/src/evals.ts +1 -1
  277. package/src/explicit-capture.ts +19 -2
  278. package/src/extraction-judge-chain.test.ts +55 -0
  279. package/src/extraction-judge.ts +7 -9
  280. package/src/extraction.ts +16 -5
  281. package/src/fallback-llm.test.ts +600 -1
  282. package/src/fallback-llm.ts +91 -22
  283. package/src/maintenance/memory-governance-cron.ts +39 -29
  284. package/src/mcp-memory-inspector-app.ts +54 -12
  285. package/src/message-parts/index.ts +6 -0
  286. package/src/message-parts/message-parts.test.ts +30 -0
  287. package/src/migrate/from-engram.ts +19 -5
  288. package/src/namespaces/search.test.ts +15 -2
  289. package/src/namespaces/search.ts +1 -1
  290. package/src/network/webdav.ts +61 -21
  291. package/src/operator-toolkit.ts +6 -2
  292. package/src/orchestrator.ts +173 -20
  293. package/src/qmd-client.test.ts +85 -0
  294. package/src/qmd-recall-cache.test.ts +16 -0
  295. package/src/qmd-recall-cache.ts +7 -0
  296. package/src/qmd.test.ts +54 -0
  297. package/src/qmd.ts +119 -19
  298. package/src/recall-planner-llm.test.ts +224 -0
  299. package/src/recall-planner-llm.ts +289 -0
  300. package/src/routing/store.ts +4 -8
  301. package/src/search/factory.ts +3 -0
  302. package/src/search/lancedb-backend.ts +15 -3
  303. package/src/search/meilisearch-backend.ts +70 -7
  304. package/src/search/noop-backend.ts +5 -1
  305. package/src/search/orama-backend.ts +15 -3
  306. package/src/search/port.ts +15 -0
  307. package/src/search/remote-backend.ts +5 -1
  308. package/src/session-observer-state.ts +1 -1
  309. package/src/summarizer.ts +3 -3
  310. package/src/temporal-index.test.ts +18 -0
  311. package/src/temporal-index.ts +45 -0
  312. package/src/training-export/cli-date-validation.test.ts +36 -0
  313. package/src/training-export/date-parse.ts +21 -2
  314. package/src/transfer/export-sqlite.ts +3 -0
  315. package/src/types.ts +35 -0
  316. package/src/utility-learner.ts +1 -0
  317. package/src/work/storage.ts +23 -0
  318. package/dist/chunk-2QANQKSQ.js.map +0 -1
  319. package/dist/chunk-5RPTH6AU.js.map +0 -1
  320. package/dist/chunk-AJA46VX5.js.map +0 -1
  321. package/dist/chunk-C4SQJZAF.js.map +0 -1
  322. package/dist/chunk-CHCA44C3.js.map +0 -1
  323. package/dist/chunk-CSKLPDN6.js.map +0 -1
  324. package/dist/chunk-DLJ4IR6M.js.map +0 -1
  325. package/dist/chunk-EAZGEEG2.js.map +0 -1
  326. package/dist/chunk-EUML3N6B.js.map +0 -1
  327. package/dist/chunk-EVZFIAPG.js.map +0 -1
  328. package/dist/chunk-G3Z3QEF5.js.map +0 -1
  329. package/dist/chunk-GMAG2HS4.js.map +0 -1
  330. package/dist/chunk-HENLZHIT.js.map +0 -1
  331. package/dist/chunk-HINSGUA7.js.map +0 -1
  332. package/dist/chunk-HJNQQICM.js.map +0 -1
  333. package/dist/chunk-HPWVAEET.js.map +0 -1
  334. package/dist/chunk-IOTENEVL.js.map +0 -1
  335. package/dist/chunk-IP73YCZP.js.map +0 -1
  336. package/dist/chunk-JHMFYY7L.js.map +0 -1
  337. package/dist/chunk-JNANKJLN.js.map +0 -1
  338. package/dist/chunk-KGK2QKWL.js.map +0 -1
  339. package/dist/chunk-KM2A35EO.js.map +0 -1
  340. package/dist/chunk-KVEVLBKC.js.map +0 -1
  341. package/dist/chunk-L227SKTB.js.map +0 -1
  342. package/dist/chunk-LZ3VEOU5.js.map +0 -1
  343. package/dist/chunk-NOMEVTUD.js.map +0 -1
  344. package/dist/chunk-NZPF2SYV.js.map +0 -1
  345. package/dist/chunk-PCI747N2.js.map +0 -1
  346. package/dist/chunk-PPPZY2EU.js.map +0 -1
  347. package/dist/chunk-TH67Q46T.js.map +0 -1
  348. package/dist/chunk-UWY7GIVS.js.map +0 -1
  349. package/dist/chunk-VJXSUAO7.js.map +0 -1
  350. package/dist/chunk-XKIQZXUB.js.map +0 -1
  351. package/dist/chunk-XPSVGJYA.js.map +0 -1
  352. package/dist/chunk-XSWKORGM.js.map +0 -1
  353. package/dist/chunk-YCN4BVDK.js.map +0 -1
  354. package/dist/chunk-ZDTVJXIP.js.map +0 -1
  355. /package/dist/{capsule-crypto-7FJQINUR.js.map → capsule-crypto-YO5QJ6L3.js.map} +0 -0
  356. /package/dist/{chunk-AU7Q3LSC.js.map → chunk-2QSZNTDO.js.map} +0 -0
  357. /package/dist/{chunk-HSVJGWYS.js.map → chunk-2ROPI5OE.js.map} +0 -0
  358. /package/dist/{chunk-CF3ZF2YU.js.map → chunk-3QSU4NFF.js.map} +0 -0
  359. /package/dist/{chunk-OI27U2HT.js.map → chunk-5BTCT236.js.map} +0 -0
  360. /package/dist/{chunk-CO7ZO4TU.js.map → chunk-5VDJMYTF.js.map} +0 -0
  361. /package/dist/{chunk-YFS5OEKO.js.map → chunk-7MLB4NCL.js.map} +0 -0
  362. /package/dist/{chunk-557IAFPD.js.map → chunk-APRRL26Q.js.map} +0 -0
  363. /package/dist/{chunk-QDDHYAKV.js.map → chunk-AZDOWD2L.js.map} +0 -0
  364. /package/dist/{chunk-MLT75J5S.js.map → chunk-B6SU7YSE.js.map} +0 -0
  365. /package/dist/{chunk-FXKPZ3H6.js.map → chunk-BPSGLMQ4.js.map} +0 -0
  366. /package/dist/{chunk-2NLLXCJG.js.map → chunk-BXLOS5AJ.js.map} +0 -0
  367. /package/dist/{chunk-IK34DVAC.js.map → chunk-CIOMS6DI.js.map} +0 -0
  368. /package/dist/{chunk-7DZRO2DC.js.map → chunk-DEPRLVLK.js.map} +0 -0
  369. /package/dist/{chunk-DHGSZ3UD.js.map → chunk-DGNQRNLL.js.map} +0 -0
  370. /package/dist/{chunk-X7Y7WX73.js.map → chunk-DQEMWVMT.js.map} +0 -0
  371. /package/dist/{chunk-ETUPBUHB.js.map → chunk-GDASG7NC.js.map} +0 -0
  372. /package/dist/{chunk-4HP7HIE3.js.map → chunk-HP5FMB6L.js.map} +0 -0
  373. /package/dist/{chunk-DOX2CG6Y.js.map → chunk-IEUU7O4F.js.map} +0 -0
  374. /package/dist/{chunk-WSGF57U2.js.map → chunk-JQDZQ4TB.js.map} +0 -0
  375. /package/dist/{chunk-W7L6HXUC.js.map → chunk-LXOM6IQU.js.map} +0 -0
  376. /package/dist/{chunk-6JGNHWCI.js.map → chunk-OBIRVF36.js.map} +0 -0
  377. /package/dist/{chunk-GUPISBV2.js.map → chunk-PP2JH3GP.js.map} +0 -0
  378. /package/dist/{chunk-OXJBNGBK.js.map → chunk-PSUB67YB.js.map} +0 -0
  379. /package/dist/{chunk-KIB7SDIJ.js.map → chunk-Q6YIJGXJ.js.map} +0 -0
  380. /package/dist/{chunk-ZT3EGNLR.js.map → chunk-QPD426WT.js.map} +0 -0
  381. /package/dist/{chunk-RLV3PQGH.js.map → chunk-QVO4YOB7.js.map} +0 -0
  382. /package/dist/{chunk-KQAFEZQX.js.map → chunk-VDX2J7OX.js.map} +0 -0
  383. /package/dist/{chunk-IK7DCC5H.js.map → chunk-VMGLYN42.js.map} +0 -0
  384. /package/dist/{chunk-NSKYFGDL.js.map → chunk-X4QQB7O6.js.map} +0 -0
  385. /package/dist/{first-start-migration-GYJWIH36.js.map → first-start-migration-FF7YFGRP.js.map} +0 -0
  386. /package/dist/{tier-stats-SKML2OSF.js.map → tier-stats-3LYQ3VV5.js.map} +0 -0
package/src/buffer.ts CHANGED
@@ -85,7 +85,8 @@ interface AddTurnMutationResult {
85
85
  decision: TriggerDecision;
86
86
  signalLevel: SignalLevel;
87
87
  priorTurns: BufferTurn[];
88
- turnSnapshot: BufferTurn;
88
+ activeTurnsSnapshot: BufferTurn[];
89
+ retainedTurnsSnapshot: BufferTurn[];
89
90
  turnCountInWindow: number;
90
91
  }
91
92
 
@@ -298,9 +299,10 @@ export class SmartBuffer {
298
299
  const shouldPromote = surprise > this.config.bufferSurpriseThreshold;
299
300
  let triggered = false;
300
301
  if (shouldPromote) {
301
- const currentTurns = await this.getExtractionTurnsIfTurnSnapshotStillCurrent(
302
+ const currentTurns = await this.getExtractionTurnsIfBufferSnapshotStillCurrent(
302
303
  bufferKey,
303
- mutation.turnSnapshot,
304
+ mutation.activeTurnsSnapshot,
305
+ mutation.retainedTurnsSnapshot,
304
306
  );
305
307
  if (currentTurns) {
306
308
  log.debug(
@@ -361,7 +363,8 @@ export class SmartBuffer {
361
363
  const entry = this.entryFor(bufferKey);
362
364
  const priorTurns = entry.turns.slice();
363
365
  entry.turns.push(turn);
364
- const turnSnapshot = copyBufferTurn(turn);
366
+ const activeTurnsSnapshot = entry.turns.map(copyBufferTurn);
367
+ const retainedTurnsSnapshot = (entry.retainedTurns ?? []).map(copyBufferTurn);
365
368
  if (bufferKey === "default") {
366
369
  this.state.turns = entry.turns;
367
370
  }
@@ -376,24 +379,26 @@ export class SmartBuffer {
376
379
  decision,
377
380
  signalLevel: signal.level,
378
381
  priorTurns,
379
- turnSnapshot,
382
+ activeTurnsSnapshot,
383
+ retainedTurnsSnapshot,
380
384
  turnCountInWindow,
381
385
  };
382
386
  }
383
387
 
384
- private async getExtractionTurnsIfTurnSnapshotStillCurrent(
388
+ private async getExtractionTurnsIfBufferSnapshotStillCurrent(
385
389
  bufferKey: string,
386
- turnSnapshot: BufferTurn,
390
+ activeTurnsSnapshot: readonly BufferTurn[],
391
+ retainedTurnsSnapshot: readonly BufferTurn[],
387
392
  ): Promise<BufferTurn[] | null> {
388
393
  return this.enqueueMutation(async () => {
389
394
  await this.loadUnlocked();
390
395
  const entry = this.peekEntry(bufferKey);
391
396
  if (!entry) return null;
392
- const stillCurrent = entry.turns.some((turn) =>
393
- bufferTurnsEqual(turn, turnSnapshot),
394
- );
395
- if (!stillCurrent) return null;
396
397
  const retained = entry.retainedTurns ?? [];
398
+ const stillCurrent =
399
+ bufferTurnArrayIsSuffixOfSnapshot(entry.turns, activeTurnsSnapshot) &&
400
+ bufferTurnArraysEqual(retained, retainedTurnsSnapshot);
401
+ if (!stillCurrent) return null;
397
402
  return [...retained, ...entry.turns];
398
403
  });
399
404
  }
@@ -802,6 +807,29 @@ function bufferTurnsEqual(left: BufferTurn | undefined, right: BufferTurn): bool
802
807
  );
803
808
  }
804
809
 
810
+ function bufferTurnArraysEqual(
811
+ left: readonly BufferTurn[],
812
+ right: readonly BufferTurn[],
813
+ ): boolean {
814
+ return (
815
+ left.length === right.length &&
816
+ left.every((turn, index) => bufferTurnsEqual(turn, right[index]))
817
+ );
818
+ }
819
+
820
+ function bufferTurnArrayIsSuffixOfSnapshot(
821
+ liveTurns: readonly BufferTurn[],
822
+ snapshot: readonly BufferTurn[],
823
+ ): boolean {
824
+ if (liveTurns.length === 0 || liveTurns.length > snapshot.length) {
825
+ return false;
826
+ }
827
+ const offset = snapshot.length - liveTurns.length;
828
+ return liveTurns.every((turn, index) =>
829
+ bufferTurnsEqual(turn, snapshot[offset + index]),
830
+ );
831
+ }
832
+
805
833
  function liveTurnsFromExtractionSnapshot(
806
834
  entry: BufferEntryState,
807
835
  extractedTurns: readonly BufferTurn[],
@@ -16,7 +16,7 @@ import { createHash } from "node:crypto";
16
16
  import path from "node:path";
17
17
  import { mkdir, readFile, writeFile } from "node:fs/promises";
18
18
  import { FallbackLlmClient } from "./fallback-llm.js";
19
- import type { GatewayConfig, MemoryFile } from "./types.js";
19
+ import type { AgentPersonaModelConfig, GatewayConfig, MemoryFile } from "./types.js";
20
20
  import { listJsonFiles, readJsonFile } from "./json-store.js";
21
21
  import { isRecord } from "./store-contract.js";
22
22
  import { log } from "./logger.js";
@@ -226,6 +226,7 @@ export async function synthesizeCalibrationRules(
226
226
  llm: FallbackLlmClient,
227
227
  existingRules: CalibrationRule[],
228
228
  agentId?: string,
229
+ modelChain?: AgentPersonaModelConfig,
229
230
  ): Promise<CalibrationRule[]> {
230
231
  if (corrections.length < 2) return [];
231
232
 
@@ -244,7 +245,7 @@ export async function synthesizeCalibrationRules(
244
245
  { role: "system", content: CLUSTER_PROMPT },
245
246
  { role: "user", content: `Here are ${corrections.length} corrections from this user:\n\n${correctionText}${existingRulesText}` },
246
247
  ],
247
- { temperature: 0.3, maxTokens: 3000, agentId },
248
+ { temperature: 0.3, maxTokens: 3000, agentId, modelChain },
248
249
  );
249
250
 
250
251
  if (!response?.content) return [];
@@ -349,13 +350,14 @@ export async function runCalibrationConsolidation(options: {
349
350
  memoryDir: string;
350
351
  gatewayConfig?: GatewayConfig;
351
352
  gatewayAgentId?: string;
353
+ modelChain?: AgentPersonaModelConfig;
352
354
  workspaceDir?: string;
353
355
  }): Promise<CalibrationRule[]> {
354
356
  try {
355
357
  const llm = new FallbackLlmClient(options.gatewayConfig, {
356
358
  workspaceDir: options.workspaceDir,
357
359
  });
358
- if (!llm.isAvailable(options.gatewayAgentId)) {
360
+ if (!llm.isAvailable({ agentId: options.gatewayAgentId, modelChain: options.modelChain })) {
359
361
  log.debug("[calibration] no LLM available — skipping consolidation");
360
362
  return [];
361
363
  }
@@ -368,7 +370,7 @@ export async function runCalibrationConsolidation(options: {
368
370
 
369
371
  const existingIndex = await readCalibrationIndex(options.memoryDir);
370
372
 
371
- const newRules = await synthesizeCalibrationRules(corrections, llm, existingIndex.rules, options.gatewayAgentId);
373
+ const newRules = await synthesizeCalibrationRules(corrections, llm, existingIndex.rules, options.gatewayAgentId, options.modelChain);
372
374
  if (newRules.length === 0) {
373
375
  log.debug("[calibration] no new calibration rules synthesized");
374
376
  return existingIndex.rules;
@@ -414,6 +416,8 @@ export async function runCalibrationIfEnabled(options: {
414
416
  memoryDir: string;
415
417
  calibrationEnabled: boolean;
416
418
  gatewayConfig?: GatewayConfig;
419
+ gatewayAgentId?: string;
420
+ modelChain?: AgentPersonaModelConfig;
417
421
  workspaceDir?: string;
418
422
  }): Promise<CalibrationRule[]> {
419
423
  if (!options.calibrationEnabled) {
@@ -422,6 +426,8 @@ export async function runCalibrationIfEnabled(options: {
422
426
  return runCalibrationConsolidation({
423
427
  memoryDir: options.memoryDir,
424
428
  gatewayConfig: options.gatewayConfig,
429
+ gatewayAgentId: options.gatewayAgentId,
430
+ modelChain: options.modelChain,
425
431
  workspaceDir: options.workspaceDir,
426
432
  });
427
433
  }
@@ -49,14 +49,24 @@ async function withTrajectoryStore<T>(
49
49
 
50
50
  function llmStub() {
51
51
  let calls = 0;
52
+ let availableOptions: unknown;
53
+ let completionOptions: unknown;
52
54
  return {
53
55
  get calls() {
54
56
  return calls;
55
57
  },
56
- isAvailable() {
58
+ get availableOptions() {
59
+ return availableOptions;
60
+ },
61
+ get completionOptions() {
62
+ return completionOptions;
63
+ },
64
+ isAvailable(options?: unknown) {
65
+ availableOptions = options;
57
66
  return true;
58
67
  },
59
- async chatCompletion() {
68
+ async chatCompletion(_messages?: unknown, options?: unknown) {
69
+ completionOptions = options;
60
70
  calls += 1;
61
71
  return {
62
72
  content: JSON.stringify({
@@ -154,6 +164,41 @@ test("deriveCausalPromotionCandidates calls LLM when recurrence session and succ
154
164
  );
155
165
  });
156
166
 
167
+ test("deriveCausalPromotionCandidates forwards task model chain to availability and chat completion", async () => {
168
+ const llm = llmStub();
169
+ const modelChain = {
170
+ primary: "openai/task-primary",
171
+ fallbacks: ["openai/task-fallback"],
172
+ };
173
+ await withTrajectoryStore(
174
+ [
175
+ trajectory("t1", "a", "success"),
176
+ trajectory("t2", "b", "success"),
177
+ trajectory("t3", "c", "partial"),
178
+ ],
179
+ async ({ memoryDir, storeDir }) => {
180
+ const candidates = await deriveCausalPromotionCandidates({
181
+ memoryDir,
182
+ causalTrajectoryStoreDir: storeDir,
183
+ config: { minRecurrence: 3, minSessions: 2, successThreshold: 0.7 },
184
+ gatewayAgentId: "expensive-agent",
185
+ modelChain,
186
+ llmClient: llm,
187
+ });
188
+
189
+ assert.equal(llm.calls, 1);
190
+ assert.equal(candidates.length, 1);
191
+ assert.deepEqual(llm.availableOptions, { agentId: "expensive-agent", modelChain });
192
+ assert.deepEqual(llm.completionOptions, {
193
+ temperature: 0.2,
194
+ maxTokens: 2000,
195
+ agentId: "expensive-agent",
196
+ modelChain,
197
+ });
198
+ },
199
+ );
200
+ });
201
+
157
202
  test("deriveCausalPromotionCandidates validates LLM-derived rule fields", async () => {
158
203
  const llm = llmWithContent(JSON.stringify({
159
204
  rules: [
@@ -18,7 +18,7 @@ import { readChainIndex, resolveChainsDir, type CausalChainIndex, type CausalEdg
18
18
  import { listJsonFiles, readJsonFile } from "./json-store.js";
19
19
  import { isRecord } from "./store-contract.js";
20
20
  import { FallbackLlmClient, fallbackLlmRuntimeContextFromConfig } from "./fallback-llm.js";
21
- import type { GatewayConfig, MemoryFile, PluginConfig } from "./types.js";
21
+ import type { AgentPersonaModelConfig, GatewayConfig, MemoryFile, PluginConfig } from "./types.js";
22
22
  import path from "node:path";
23
23
  import { log } from "./logger.js";
24
24
  import { runPostConsolidationMaterialize } from "./connectors/codex-materialize-runner.js";
@@ -64,10 +64,10 @@ export interface LlmConsolidationResult {
64
64
  const CAUSAL_RULE_CATEGORIES = new Set(["rule", "principle", "preference"]);
65
65
 
66
66
  interface ConsolidationLlmClient {
67
- isAvailable(agentId?: string): boolean;
67
+ isAvailable(options?: { agentId?: string; modelChain?: AgentPersonaModelConfig }): boolean;
68
68
  chatCompletion(
69
69
  messages: Array<{ role: "system" | "user" | "assistant"; content: string }>,
70
- options?: { temperature?: number; maxTokens?: number; agentId?: string },
70
+ options?: { temperature?: number; maxTokens?: number; agentId?: string; modelChain?: AgentPersonaModelConfig },
71
71
  ): Promise<{ content: string } | null>;
72
72
  }
73
73
 
@@ -188,14 +188,14 @@ If no clear patterns exist, return {"rules": [], "preferences": []}.`;
188
188
  async function consolidateWithLlm(
189
189
  context: string,
190
190
  llm: ConsolidationLlmClient,
191
- agentId?: string,
191
+ options: { agentId?: string; modelChain?: AgentPersonaModelConfig } = {},
192
192
  ): Promise<LlmConsolidationResult> {
193
193
  const response = await llm.chatCompletion(
194
194
  [
195
195
  { role: "system", content: CONSOLIDATION_PROMPT },
196
196
  { role: "user", content: context },
197
197
  ],
198
- { temperature: 0.2, maxTokens: 2000, agentId },
198
+ { temperature: 0.2, maxTokens: 2000, agentId: options.agentId, modelChain: options.modelChain },
199
199
  );
200
200
 
201
201
  if (!response?.content) {
@@ -369,6 +369,7 @@ export async function deriveCausalPromotionCandidates(options: {
369
369
  config: ConsolidationConfig;
370
370
  gatewayConfig?: GatewayConfig;
371
371
  gatewayAgentId?: string;
372
+ modelChain?: AgentPersonaModelConfig;
372
373
  workspaceDir?: string;
373
374
  pluginConfig?: PluginConfig;
374
375
  llmClient?: ConsolidationLlmClient;
@@ -400,13 +401,14 @@ export async function deriveCausalPromotionCandidates(options: {
400
401
  })
401
402
  : { workspaceDir: options.workspaceDir },
402
403
  );
403
- if (!llm.isAvailable(options.gatewayAgentId)) {
404
+ const llmOptions = { agentId: options.gatewayAgentId, modelChain: options.modelChain };
405
+ if (!llm.isAvailable(llmOptions)) {
404
406
  log.debug("[cmc] no LLM available for consolidation — skipping");
405
407
  return [];
406
408
  }
407
409
 
408
410
  // Call LLM for pattern analysis
409
- const result = await consolidateWithLlm(context, llm, options.gatewayAgentId);
411
+ const result = await consolidateWithLlm(context, llm, llmOptions);
410
412
  const candidates = llmResultToCandidates(result);
411
413
 
412
414
  log.debug(`[cmc] LLM consolidation produced ${candidates.length} rule(s) and ${result.preferences.length} preference(s)`);
@@ -426,6 +428,7 @@ export async function synthesizeCausalPreferencesViaLlm(options: {
426
428
  causalTrajectoryStoreDir?: string;
427
429
  gatewayConfig?: GatewayConfig;
428
430
  gatewayAgentId?: string;
431
+ modelChain?: AgentPersonaModelConfig;
429
432
  workspaceDir?: string;
430
433
  minTrajectories?: number;
431
434
  }): Promise<string | null> {
@@ -440,9 +443,10 @@ export async function synthesizeCausalPreferencesViaLlm(options: {
440
443
  const llm = new FallbackLlmClient(options.gatewayConfig, {
441
444
  workspaceDir: options.workspaceDir,
442
445
  });
443
- if (!llm.isAvailable(options.gatewayAgentId)) return null;
446
+ const llmOptions = { agentId: options.gatewayAgentId, modelChain: options.modelChain };
447
+ if (!llm.isAvailable(llmOptions)) return null;
444
448
 
445
- const result = await consolidateWithLlm(context, llm, options.gatewayAgentId);
449
+ const result = await consolidateWithLlm(context, llm, llmOptions);
446
450
  if (result.preferences.length === 0 && result.rules.length === 0) return null;
447
451
 
448
452
  const lines: string[] = ["## Behavioral Insights (from Causal Chain Analysis)", ""];
package/src/cli.ts CHANGED
@@ -792,6 +792,7 @@ export interface AccessHttpServeCliCommandOptions {
792
792
  trustPrincipalHeader?: boolean;
793
793
  citationsEnabled?: boolean;
794
794
  citationsAutoDetect?: boolean;
795
+ emitLegacyTools?: boolean;
795
796
  createServer?: (options: {
796
797
  service: EngramAccessService;
797
798
  host?: string;
@@ -802,6 +803,7 @@ export interface AccessHttpServeCliCommandOptions {
802
803
  trustPrincipalHeader?: boolean;
803
804
  citationsEnabled?: boolean;
804
805
  citationsAutoDetect?: boolean;
806
+ emitLegacyTools?: boolean;
805
807
  }) => AccessHttpServerLike;
806
808
  }
807
809
 
@@ -2732,6 +2734,7 @@ export async function runAccessHttpServeCliCommand(
2732
2734
  trustPrincipalHeader: input.trustPrincipalHeader,
2733
2735
  citationsEnabled: input.citationsEnabled,
2734
2736
  citationsAutoDetect: input.citationsAutoDetect,
2737
+ emitLegacyTools: input.emitLegacyTools,
2735
2738
  }));
2736
2739
 
2737
2740
  const server = createServer(options);
@@ -2772,14 +2775,24 @@ export async function runAccessMcpServeCliCommand(
2772
2775
  service: EngramAccessService,
2773
2776
  options: {
2774
2777
  principal?: string;
2775
- createServer?: (service: EngramAccessService, options: { principal?: string }) => EngramMcpServerLike;
2778
+ emitLegacyTools?: boolean;
2779
+ createServer?: (
2780
+ service: EngramAccessService,
2781
+ options: { principal?: string; emitLegacyTools?: boolean },
2782
+ ) => EngramMcpServerLike;
2776
2783
  stdin?: Readable;
2777
2784
  stdout?: Writable;
2778
2785
  } = {},
2779
2786
  ): Promise<{ ok: true }> {
2780
- const server = options.createServer?.(service, { principal: options.principal }) ?? new EngramMcpServer(service, {
2781
- principal: options.principal,
2782
- });
2787
+ const server =
2788
+ options.createServer?.(service, {
2789
+ principal: options.principal,
2790
+ emitLegacyTools: options.emitLegacyTools,
2791
+ }) ??
2792
+ new EngramMcpServer(service, {
2793
+ principal: options.principal,
2794
+ emitLegacyTools: options.emitLegacyTools,
2795
+ });
2783
2796
  await server.runStdio(options.stdin ?? process.stdin, options.stdout ?? process.stdout);
2784
2797
  return { ok: true };
2785
2798
  }
@@ -6939,6 +6952,7 @@ export function registerCli(
6939
6952
  trustPrincipalHeader: options.trustPrincipalHeader === true,
6940
6953
  citationsEnabled: orchestrator.config.citationsEnabled,
6941
6954
  citationsAutoDetect: orchestrator.config.citationsAutoDetect,
6955
+ emitLegacyTools: orchestrator.config.emitLegacyTools,
6942
6956
  });
6943
6957
  console.log(JSON.stringify(status, null, 2));
6944
6958
  console.log("OK");
@@ -6977,6 +6991,7 @@ export function registerCli(
6977
6991
  const options = (args[0] ?? {}) as Record<string, unknown>;
6978
6992
  await runAccessMcpServeCliCommand(accessService, {
6979
6993
  principal: resolveAccessPrincipalOverride(options.principal, orchestrator.config.agentAccessHttp.principal),
6994
+ emitLegacyTools: orchestrator.config.emitLegacyTools,
6980
6995
  });
6981
6996
  });
6982
6997
 
@@ -492,6 +492,7 @@ export class CompoundingEngine {
492
492
  causalTrajectoryStoreDir: this.config.causalTrajectoryStoreDir,
493
493
  gatewayConfig: this.config.gatewayConfig,
494
494
  gatewayAgentId: this.config.modelSource === "gateway" ? (this.config.gatewayAgentId || undefined) : undefined,
495
+ modelChain: this.config.modelSource === "gateway" ? this.config.taskModelChain : undefined,
495
496
  workspaceDir: this.config.workspaceDir,
496
497
  pluginConfig: this.config,
497
498
  config: {
@@ -534,6 +535,7 @@ export class CompoundingEngine {
534
535
  memoryDir: this.config.memoryDir,
535
536
  gatewayConfig: this.config.gatewayConfig,
536
537
  gatewayAgentId: this.config.modelSource === "gateway" ? (this.config.gatewayAgentId || undefined) : undefined,
538
+ modelChain: this.config.modelSource === "gateway" ? this.config.taskModelChain : undefined,
537
539
  workspaceDir: this.config.workspaceDir,
538
540
  });
539
541
  log.debug(`[calibration] weekly synthesis produced ${calRules.length} calibration rule(s)`);