@remnic/core 9.69.38 → 9.69.40

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 (656) hide show
  1. package/dist/access-admin-ops-surface.d.ts +16 -14
  2. package/dist/access-admin-ops-surface.js +39 -39
  3. package/dist/access-authorization-probe.d.ts +16 -14
  4. package/dist/access-authorization-probe.js +40 -40
  5. package/dist/access-boundary.d.ts +16 -14
  6. package/dist/access-boundary.js +39 -39
  7. package/dist/access-cli.js +107 -105
  8. package/dist/access-cli.js.map +1 -1
  9. package/dist/access-coding-context-resolution.d.ts +1 -1
  10. package/dist/access-extraction-force-flush.d.ts +16 -14
  11. package/dist/access-extraction-force-flush.js +39 -39
  12. package/dist/access-health-types.d.ts +1 -1
  13. package/dist/access-http-briefing.d.ts +16 -14
  14. package/dist/access-http-briefing.js +40 -40
  15. package/dist/access-http-lcm-compaction.d.ts +16 -14
  16. package/dist/access-http-lifecycle-flush.d.ts +16 -14
  17. package/dist/access-http-offline-stream.d.ts +16 -14
  18. package/dist/access-http-query.d.ts +2 -2
  19. package/dist/access-http-query.js +41 -41
  20. package/dist/access-http.d.ts +17 -15
  21. package/dist/access-http.js +58 -58
  22. package/dist/access-identity-continuity-surface.d.ts +13 -12
  23. package/dist/access-identity-continuity-surface.js +39 -39
  24. package/dist/access-lcm-surface.d.ts +16 -14
  25. package/dist/access-lcm-surface.js +39 -39
  26. package/dist/access-mcp.d.ts +16 -14
  27. package/dist/access-mcp.js +47 -47
  28. package/dist/access-memory-search-fanout.d.ts +2 -2
  29. package/dist/{access-namespace-preflight-DY4z6L5X.d.ts → access-namespace-preflight-CKBumJ8W.d.ts} +1 -1
  30. package/dist/access-namespace-preflight.d.ts +3 -3
  31. package/dist/access-namespace-preflight.js +39 -39
  32. package/dist/access-observe-transcript.d.ts +13 -12
  33. package/dist/access-observe-write-category.d.ts +1 -1
  34. package/dist/access-observe-write-category.js +2 -2
  35. package/dist/access-observe-write-surface.d.ts +16 -14
  36. package/dist/access-observe-write-surface.js +39 -39
  37. package/dist/access-offline-manifest.d.ts +37 -13
  38. package/dist/access-offline-manifest.js +7 -3
  39. package/dist/access-operations-batch.js +41 -41
  40. package/dist/access-operations.d.ts +16 -14
  41. package/dist/access-operations.js +46 -46
  42. package/dist/access-recall-concurrency.d.ts +16 -14
  43. package/dist/access-recall-concurrency.js +39 -39
  44. package/dist/access-recall-response.d.ts +16 -14
  45. package/dist/access-recall-response.js +39 -39
  46. package/dist/access-recall-surface.d.ts +16 -14
  47. package/dist/access-recall-surface.js +39 -39
  48. package/dist/access-schema.d.ts +5 -3
  49. package/dist/access-schema.js +1 -1
  50. package/dist/{access-service-gBcdRUHY.d.ts → access-service-DJ3qogNt.d.ts} +8 -8
  51. package/dist/access-service-helpers.d.ts +16 -14
  52. package/dist/access-service.d.ts +16 -14
  53. package/dist/access-service.js +39 -39
  54. package/dist/access-surface-catalog.d.ts +16 -14
  55. package/dist/access-surface-catalog.js +41 -41
  56. package/dist/access-wearables-meetings-surface.d.ts +6 -5
  57. package/dist/action-confidence.d.ts +1 -1
  58. package/dist/active-memory-bridge.d.ts +1 -1
  59. package/dist/active-recall.d.ts +1 -1
  60. package/dist/active-recall.js +6 -5
  61. package/dist/active-recall.js.map +1 -1
  62. package/dist/activity/digest.d.ts +1 -1
  63. package/dist/adapters/index.js +4 -4
  64. package/dist/adapters/registry.js +2 -2
  65. package/dist/ambient-provenance.d.ts +1 -1
  66. package/dist/artifact-search.d.ts +1 -1
  67. package/dist/{auto-sync-RP4C6ZPF.js → auto-sync-D6BAPIJV.js} +5 -5
  68. package/dist/background-generation-config.d.ts +1 -1
  69. package/dist/background-generation-config.js +3 -1
  70. package/dist/background-generation.d.ts +1 -1
  71. package/dist/behavior-learner.d.ts +1 -1
  72. package/dist/behavior-signals.d.ts +1 -1
  73. package/dist/bootstrap.d.ts +13 -12
  74. package/dist/briefing-window.d.ts +2 -2
  75. package/dist/briefing.d.ts +2 -2
  76. package/dist/briefing.js +16 -16
  77. package/dist/buffer-surprise-report.d.ts +1 -1
  78. package/dist/buffer-turn-helpers.d.ts +1 -1
  79. package/dist/buffer.d.ts +2 -2
  80. package/dist/buffer.js +5 -5
  81. package/dist/bulk-import/index.d.ts +3 -3
  82. package/dist/calibration.d.ts +3 -2
  83. package/dist/calibration.js +2 -2
  84. package/dist/capabilities.d.ts +1 -1
  85. package/dist/{catalog-CW87xGx8.d.ts → catalog-BHXkBVhg.d.ts} +1 -1
  86. package/dist/causal-behavior.d.ts +1 -1
  87. package/dist/causal-consolidation.d.ts +1 -1
  88. package/dist/causal-consolidation.js +20 -19
  89. package/dist/causal-consolidation.js.map +1 -1
  90. package/dist/causal-trajectory-graph.d.ts +1 -1
  91. package/dist/{chunk-B36GUU6T.js → chunk-23HFXQ5J.js} +36 -3
  92. package/dist/chunk-23HFXQ5J.js.map +1 -0
  93. package/dist/{chunk-YFTNZMGR.js → chunk-27NO2KVB.js} +31 -8
  94. package/dist/chunk-27NO2KVB.js.map +1 -0
  95. package/dist/{chunk-T32B72QX.js → chunk-2SKMZUOW.js} +2 -2
  96. package/dist/{chunk-VHOSM5G4.js → chunk-2SNCQHJZ.js} +2 -2
  97. package/dist/{chunk-VV4ZVUE6.js → chunk-3QEVOQF5.js} +2 -2
  98. package/dist/{chunk-3N3PBBEH.js → chunk-3XPN7AVY.js} +2 -2
  99. package/dist/{chunk-XN6XT6GR.js → chunk-46Z3VGWF.js} +2 -2
  100. package/dist/{chunk-2PTNJTBE.js → chunk-4CMXI55L.js} +2 -2
  101. package/dist/{chunk-2MT4ADLQ.js → chunk-5LYSEZOF.js} +18 -9
  102. package/dist/chunk-5LYSEZOF.js.map +1 -0
  103. package/dist/{chunk-XWLLFKHM.js → chunk-62HFZNCJ.js} +19 -12
  104. package/dist/chunk-62HFZNCJ.js.map +1 -0
  105. package/dist/{chunk-VELCIWJZ.js → chunk-6L2II3KS.js} +22 -11
  106. package/dist/chunk-6L2II3KS.js.map +1 -0
  107. package/dist/{chunk-A6CKMIPK.js → chunk-7D6SER6A.js} +8 -8
  108. package/dist/{chunk-4B3HBIFX.js → chunk-7Z54NXVS.js} +2 -2
  109. package/dist/{chunk-X2NFFBTO.js → chunk-A7GQBJP5.js} +4 -4
  110. package/dist/{chunk-ACY4ZPF7.js → chunk-AEOOGXMQ.js} +10 -5
  111. package/dist/chunk-AEOOGXMQ.js.map +1 -0
  112. package/dist/{chunk-NWMUSKED.js → chunk-BGRTZOJB.js} +3 -3
  113. package/dist/{chunk-ZEGL7YCC.js → chunk-BXIJSPCL.js} +2 -2
  114. package/dist/{chunk-MLWMR2GE.js → chunk-BYQX4IOG.js} +2 -2
  115. package/dist/{chunk-ULDBGA5W.js → chunk-C5R73BON.js} +2 -2
  116. package/dist/{chunk-BD7JTBYP.js → chunk-D7MAYFQP.js} +2 -2
  117. package/dist/{chunk-V6G2PSXA.js → chunk-DAZANIYU.js} +251 -297
  118. package/dist/chunk-DAZANIYU.js.map +1 -0
  119. package/dist/{chunk-BRZWWUCJ.js → chunk-DFVSJFHK.js} +2 -2
  120. package/dist/{chunk-DPMTLJCT.js → chunk-ES5BUPYB.js} +2 -2
  121. package/dist/{chunk-MVAQ2WM3.js → chunk-G2XZFGYN.js} +6 -2
  122. package/dist/chunk-G2XZFGYN.js.map +1 -0
  123. package/dist/{chunk-TNSCIPBQ.js → chunk-G6NQ3L4T.js} +2 -2
  124. package/dist/{chunk-5N4MZLEH.js → chunk-GO5LOHCD.js} +2 -2
  125. package/dist/{chunk-AECJY3GJ.js → chunk-GSSDHAYH.js} +2 -2
  126. package/dist/{chunk-JA2QJOAX.js → chunk-HJUP3K6L.js} +2 -2
  127. package/dist/{chunk-ZKZFFWLV.js → chunk-ICNJ6J46.js} +2 -2
  128. package/dist/{chunk-6EHM2AV7.js → chunk-IMBQFHRV.js} +2 -2
  129. package/dist/{chunk-6PRY6CLC.js → chunk-IOPIGX7Y.js} +1 -1
  130. package/dist/{chunk-TRHBQVVO.js → chunk-IS2IDFJP.js} +14 -14
  131. package/dist/{chunk-R4VAUNNC.js → chunk-J4WGTN2N.js} +2 -2
  132. package/dist/{chunk-JPOX2AJB.js → chunk-J7FVMLBR.js} +2 -2
  133. package/dist/{chunk-BYZKLEWG.js → chunk-JAJIMTFB.js} +6 -6
  134. package/dist/{chunk-OKO57IXB.js → chunk-JOP7W24J.js} +11 -11
  135. package/dist/{chunk-YUW66UAH.js → chunk-JUDT33RX.js} +2 -2
  136. package/dist/{chunk-QHT7MOUF.js → chunk-K4A6UVPB.js} +22 -11
  137. package/dist/chunk-K4A6UVPB.js.map +1 -0
  138. package/dist/{chunk-UQNYPK7G.js → chunk-K4JKAXMO.js} +2 -2
  139. package/dist/{chunk-BV4ZKIZH.js → chunk-K75A5XWU.js} +3 -2
  140. package/dist/{chunk-3CBI2ZSA.js → chunk-KG2OOAFF.js} +20 -12
  141. package/dist/chunk-KG2OOAFF.js.map +1 -0
  142. package/dist/{chunk-M6HBPLBA.js → chunk-KOTG3RXE.js} +2 -2
  143. package/dist/{chunk-CWTCMZGE.js → chunk-KTOXQMW3.js} +119 -3
  144. package/dist/chunk-KTOXQMW3.js.map +1 -0
  145. package/dist/{chunk-OB3XMWX5.js → chunk-KVO2BTA4.js} +2 -2
  146. package/dist/{chunk-CBFYCDYO.js → chunk-KY236SP5.js} +3 -3
  147. package/dist/{chunk-4BCHFSC7.js → chunk-LFVZD5EC.js} +3 -3
  148. package/dist/{chunk-GGAXFTNH.js → chunk-LKFVVN7R.js} +2 -2
  149. package/dist/{chunk-IYKZJVL5.js → chunk-MDIEES23.js} +1 -1
  150. package/dist/chunk-MDIEES23.js.map +1 -0
  151. package/dist/{chunk-4RX5O34R.js → chunk-MJC7UKH7.js} +2 -2
  152. package/dist/{chunk-7S53BPTU.js → chunk-MVG3KXON.js} +69 -22
  153. package/dist/chunk-MVG3KXON.js.map +1 -0
  154. package/dist/chunk-NETQXOPY.js +221 -0
  155. package/dist/chunk-NETQXOPY.js.map +1 -0
  156. package/dist/{chunk-UZZ7SQT3.js → chunk-NVVZPBKI.js} +2 -2
  157. package/dist/{chunk-BLDBT6HZ.js → chunk-PJRKLB4Z.js} +18 -2
  158. package/dist/chunk-PJRKLB4Z.js.map +1 -0
  159. package/dist/{chunk-TTSJ7WUC.js → chunk-PKUJNICO.js} +2 -2
  160. package/dist/{chunk-QMWKENNK.js → chunk-Q4AUIFUA.js} +4 -4
  161. package/dist/{chunk-G43PMSME.js → chunk-QE6YVNP5.js} +7 -7
  162. package/dist/{chunk-WKDFJXW5.js → chunk-QM2SPLKQ.js} +1 -1
  163. package/dist/chunk-QM2SPLKQ.js.map +1 -0
  164. package/dist/{chunk-GT4ZHOKT.js → chunk-QPVNK2VE.js} +2 -2
  165. package/dist/{chunk-K5DA5TRG.js → chunk-QS5Q5RBV.js} +2 -2
  166. package/dist/{chunk-BX4EOMKT.js → chunk-RDLPFM7I.js} +2 -2
  167. package/dist/{chunk-EY5JAWZC.js → chunk-RJQAP333.js} +2 -2
  168. package/dist/{chunk-5AERZWJD.js → chunk-RLU2Y5GV.js} +4 -4
  169. package/dist/chunk-RLU2Y5GV.js.map +1 -0
  170. package/dist/{chunk-2OGTN37H.js → chunk-ROEFLU37.js} +4 -4
  171. package/dist/{chunk-62QIQEUC.js → chunk-SFHLQPBF.js} +25 -25
  172. package/dist/chunk-SK7D34OL.js +68 -0
  173. package/dist/chunk-SK7D34OL.js.map +1 -0
  174. package/dist/{chunk-HVS7TH2Y.js → chunk-SUEOG2S4.js} +2 -2
  175. package/dist/{chunk-74AHCL56.js → chunk-TEMKBSV6.js} +2 -2
  176. package/dist/{chunk-LQNRVPTV.js → chunk-THTF2W7M.js} +151 -118
  177. package/dist/chunk-THTF2W7M.js.map +1 -0
  178. package/dist/{chunk-KDFDXEXZ.js → chunk-TO36VPZI.js} +2 -2
  179. package/dist/{chunk-BJEJUOGM.js → chunk-TZ44E732.js} +44 -6
  180. package/dist/chunk-TZ44E732.js.map +1 -0
  181. package/dist/{chunk-JXN77SGO.js → chunk-U2VDCFXW.js} +1 -1
  182. package/dist/chunk-U2VDCFXW.js.map +1 -0
  183. package/dist/{chunk-3OYSIVOO.js → chunk-UZ6JYPJ6.js} +611 -289
  184. package/dist/chunk-UZ6JYPJ6.js.map +1 -0
  185. package/dist/{chunk-M3MYMWXG.js → chunk-V2ZA4YWE.js} +2 -2
  186. package/dist/{chunk-UIOIDW3L.js → chunk-VHKXRYQN.js} +2 -2
  187. package/dist/{chunk-GAS7KYC7.js → chunk-VKWFNPBH.js} +2 -2
  188. package/dist/{chunk-6H2G7RFT.js → chunk-VNQRRUNS.js} +11 -10
  189. package/dist/chunk-VNQRRUNS.js.map +1 -0
  190. package/dist/{chunk-XGRXQR6T.js → chunk-VQWBUPSJ.js} +2 -2
  191. package/dist/{chunk-TUKGXQ5T.js → chunk-VQYWKCDR.js} +2 -2
  192. package/dist/{chunk-PPQEP4OH.js → chunk-W23JARAQ.js} +2 -2
  193. package/dist/{chunk-YQNNHLCG.js → chunk-WPGR3RW4.js} +2 -2
  194. package/dist/{chunk-474DL7UB.js → chunk-WZYHPAG5.js} +3 -3
  195. package/dist/{chunk-5HYUUFMQ.js → chunk-XCPNH2MG.js} +259 -10
  196. package/dist/chunk-XCPNH2MG.js.map +1 -0
  197. package/dist/{chunk-GQQVEH6V.js → chunk-XM46Y66S.js} +2 -2
  198. package/dist/{chunk-JNSENHV5.js → chunk-YRIFXXMI.js} +3 -3
  199. package/dist/{chunk-TRLOFIQC.js → chunk-YTK5MVNF.js} +2 -2
  200. package/dist/{chunk-VMNCZ627.js → chunk-YTZN2UZO.js} +2 -2
  201. package/dist/chunk-Z4GUX2M6.js +94 -0
  202. package/dist/chunk-Z4GUX2M6.js.map +1 -0
  203. package/dist/{chunk-6ZMNTRU3.js → chunk-ZAEPD4C2.js} +2 -2
  204. package/dist/{chunk-KQW3YGEN.js → chunk-ZRMMXWYI.js} +2 -2
  205. package/dist/{chunk-P4ZAEYKG.js → chunk-ZX3AYNNV.js} +6 -3
  206. package/dist/chunk-ZX3AYNNV.js.map +1 -0
  207. package/dist/{chunk-MCRVQ5YQ.js → chunk-ZZCR2QYL.js} +2 -2
  208. package/dist/{cli-BNg-TAlz.d.ts → cli-BWri5-am.d.ts} +5 -5
  209. package/dist/cli.d.ts +18 -16
  210. package/dist/cli.js +80 -79
  211. package/dist/coding/export-okf-codegraph.d.ts +1 -1
  212. package/dist/coding/export-okf-codegraph.js +15 -15
  213. package/dist/coding/pre-action-gate.d.ts +1 -1
  214. package/dist/compounding/engine.d.ts +2 -2
  215. package/dist/compounding/engine.js +16 -16
  216. package/dist/compounding/preference-consolidator.d.ts +1 -1
  217. package/dist/compression-optimizer.d.ts +1 -1
  218. package/dist/config.d.ts +1 -1
  219. package/dist/config.js +6 -5
  220. package/dist/connectors/codex-materialize-runner.d.ts +1 -1
  221. package/dist/connectors/codex-materialize-runner.js +16 -16
  222. package/dist/connectors/codex-materialize.d.ts +1 -1
  223. package/dist/connectors/index.d.ts +1 -1
  224. package/dist/connectors/index.js +16 -16
  225. package/dist/consolidation-provenance-check.d.ts +2 -2
  226. package/dist/consolidation-undo.d.ts +2 -2
  227. package/dist/contradiction/index.d.ts +6 -5
  228. package/dist/converge-config.d.ts +1 -1
  229. package/dist/convergence-refresh.d.ts +2 -2
  230. package/dist/convergence-refresh.js +18 -18
  231. package/dist/conversation-index/backend.d.ts +1 -1
  232. package/dist/conversation-index/chunker.d.ts +1 -1
  233. package/dist/conversation-index/faiss-adapter.d.ts +1 -1
  234. package/dist/conversation-index/indexer.d.ts +1 -1
  235. package/dist/conversation-index/search.d.ts +1 -1
  236. package/dist/corpus-watermark.d.ts +1 -1
  237. package/dist/corpus-watermark.js +18 -18
  238. package/dist/cross-lingual-recall.d.ts +1 -1
  239. package/dist/day-summary.d.ts +1 -1
  240. package/dist/deep-recall-http-glue.d.ts +16 -14
  241. package/dist/deep-recall-http-glue.js +2 -2
  242. package/dist/deep-recall-mcp-tools.d.ts +16 -14
  243. package/dist/deep-recall-policy-llm.d.ts +4 -3
  244. package/dist/deep-recall-policy-llm.js +3 -3
  245. package/dist/deep-recall-seeds.d.ts +1 -1
  246. package/dist/delinearize.d.ts +1 -1
  247. package/dist/dependency-propagation-config.d.ts +1 -1
  248. package/dist/{dependency-propagation-delivery-Cq1ekOwV.d.ts → dependency-propagation-delivery-ueZlKTQB.d.ts} +1 -1
  249. package/dist/direct-answer-wiring.d.ts +1 -1
  250. package/dist/direct-answer.d.ts +1 -1
  251. package/dist/embedding-fallback.d.ts +1 -1
  252. package/dist/enrichment/index.d.ts +1 -1
  253. package/dist/entity-origin-fields.d.ts +1 -1
  254. package/dist/entity-retrieval.d.ts +2 -2
  255. package/dist/entity-retrieval.js +16 -16
  256. package/dist/entity-schema.d.ts +1 -1
  257. package/dist/episodic-context.d.ts +1 -1
  258. package/dist/eval-trajectory-contracts.d.ts +1 -1
  259. package/dist/eval-trajectory-store.d.ts +1 -1
  260. package/dist/eval-trajectory.d.ts +1 -1
  261. package/dist/explicit-capture.d.ts +13 -12
  262. package/dist/external-wiki-access.d.ts +16 -14
  263. package/dist/external-wiki-access.js +40 -40
  264. package/dist/external-wiki-collection-registration.d.ts +1 -1
  265. package/dist/external-wiki-collection.d.ts +1 -1
  266. package/dist/external-wiki-mcp-tools.d.ts +16 -14
  267. package/dist/extraction-error-classification.d.ts +14 -3
  268. package/dist/extraction-error-classification.js +5 -3
  269. package/dist/extraction-faithfulness.d.ts +4 -3
  270. package/dist/extraction-faithfulness.js +3 -3
  271. package/dist/extraction-judge-telemetry.d.ts +4 -3
  272. package/dist/extraction-judge-training.d.ts +4 -3
  273. package/dist/extraction-judge.d.ts +4 -3
  274. package/dist/extraction-judge.js +3 -3
  275. package/dist/extraction-liveness.d.ts +1 -1
  276. package/dist/extraction-normalization.d.ts +1 -1
  277. package/dist/extraction-prompt.d.ts +1 -1
  278. package/dist/extraction-source-grounding-rules.d.ts +1 -1
  279. package/dist/extraction-source-grounding.d.ts +1 -1
  280. package/dist/extraction-span-config.d.ts +1 -1
  281. package/dist/extraction-span-materialize.d.ts +1 -1
  282. package/dist/extraction.d.ts +4 -4
  283. package/dist/extraction.js +26 -24
  284. package/dist/fallback-llm-codex-subscription.d.ts +52 -7
  285. package/dist/fallback-llm-codex-subscription.js +17 -1
  286. package/dist/fallback-llm.d.ts +25 -28
  287. package/dist/fallback-llm.js +4 -3
  288. package/dist/{generic-recall-paths-BcySh_f9.d.ts → generic-recall-paths-CpyVmA88.d.ts} +1 -1
  289. package/dist/graph-append-error.d.ts +1 -1
  290. package/dist/graph-dashboard-diff.d.ts +1 -1
  291. package/dist/graph-dashboard-key.d.ts +1 -1
  292. package/dist/graph-dashboard-parser.d.ts +1 -1
  293. package/dist/graph-edge-reinforcement.d.ts +1 -1
  294. package/dist/graph-jsonl.d.ts +1 -1
  295. package/dist/graph-path-reconstruction.d.ts +1 -1
  296. package/dist/graph-path-scoring.d.ts +1 -1
  297. package/dist/graph-snapshot.d.ts +1 -1
  298. package/dist/graph.d.ts +1 -1
  299. package/dist/harmonic-retrieval.js +1 -1
  300. package/dist/importance.d.ts +1 -1
  301. package/dist/importers/index.d.ts +1 -1
  302. package/dist/importers/test-utils.d.ts +1 -1
  303. package/dist/in-flight-reads.d.ts +1 -1
  304. package/dist/{index-DWOb4wz9.d.ts → index-BvUA4S7M.d.ts} +3 -3
  305. package/dist/index.d.ts +80 -40
  306. package/dist/index.js +140 -115
  307. package/dist/intent.d.ts +1 -1
  308. package/dist/lcm/engine.d.ts +1 -1
  309. package/dist/lcm/engine.js +2 -2
  310. package/dist/lcm/index.d.ts +1 -1
  311. package/dist/lcm/index.js +7 -7
  312. package/dist/lcm/tools.d.ts +1 -1
  313. package/dist/lifecycle.d.ts +1 -1
  314. package/dist/live-connectors-runner.d.ts +1 -1
  315. package/dist/local-llm-BsJGulur.d.ts +247 -0
  316. package/dist/local-llm-config.d.ts +4 -1
  317. package/dist/local-llm-config.js +4 -2
  318. package/dist/local-llm-helpers.d.ts +18 -69
  319. package/dist/local-llm-helpers.js +1 -1
  320. package/dist/local-llm.d.ts +3 -170
  321. package/dist/local-llm.js +2 -2
  322. package/dist/local-model-endpoint.d.ts +1 -1
  323. package/dist/location/index.d.ts +3 -3
  324. package/dist/location/index.js +18 -18
  325. package/dist/maintenance/memory-governance.d.ts +1 -1
  326. package/dist/maintenance/memory-governance.js +16 -16
  327. package/dist/maintenance/rebuild-memory-lifecycle-ledger.d.ts +2 -2
  328. package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +16 -16
  329. package/dist/maintenance/rebuild-memory-projection.d.ts +2 -2
  330. package/dist/maintenance/rebuild-memory-projection.js +17 -17
  331. package/dist/{maintenance-CW9wCzMP.d.ts → maintenance-CYubtIRr.d.ts} +9 -3
  332. package/dist/mcp-memory-inspector-app.d.ts +16 -14
  333. package/dist/memory-action-policy.d.ts +1 -1
  334. package/dist/memory-cache.d.ts +1 -1
  335. package/dist/memory-controller.d.ts +1 -1
  336. package/dist/memory-lifecycle-ledger-utils.d.ts +1 -1
  337. package/dist/memory-projection-store.d.ts +1 -1
  338. package/dist/memory-provenance.d.ts +1 -1
  339. package/dist/memory-snapshot.d.ts +1 -1
  340. package/dist/memory-subject-cli.d.ts +16 -14
  341. package/dist/memory-subject.d.ts +16 -14
  342. package/dist/memory-worth-outcomes.d.ts +2 -2
  343. package/dist/models-json.d.ts +1 -1
  344. package/dist/namespaces/migrate.d.ts +3 -3
  345. package/dist/namespaces/migrate.js +17 -17
  346. package/dist/namespaces/principal.d.ts +1 -1
  347. package/dist/namespaces/search.d.ts +12 -1
  348. package/dist/namespaces/search.js +9 -9
  349. package/dist/namespaces/storage.d.ts +3 -3
  350. package/dist/namespaces/storage.js +16 -16
  351. package/dist/native-knowledge.d.ts +1 -1
  352. package/dist/offline-sync-impression-drain.d.ts +1 -1
  353. package/dist/operator-doctor-corpus.d.ts +1 -1
  354. package/dist/operator-doctor-corpus.js +19 -19
  355. package/dist/operator-doctor-replica.d.ts +1 -1
  356. package/dist/operator-toolkit.d.ts +3 -3
  357. package/dist/operator-toolkit.js +30 -29
  358. package/dist/orchestration/compression-guideline-coordinator.d.ts +2 -2
  359. package/dist/orchestration/maintenance.d.ts +4 -4
  360. package/dist/orchestration/maintenance.js +27 -27
  361. package/dist/{orchestrator-DocO0_hw.d.ts → orchestrator-BWDRJ_0d.d.ts} +37 -13
  362. package/dist/orchestrator.d.ts +13 -12
  363. package/dist/orchestrator.js +110 -106
  364. package/dist/patterns-cli.d.ts +1 -1
  365. package/dist/{pipeline-CiYcqqhl.d.ts → pipeline-7JMn2yMH.d.ts} +1 -1
  366. package/dist/policy-runtime.d.ts +1 -1
  367. package/dist/proactive-contention.d.ts +2 -2
  368. package/dist/provenance.d.ts +1 -1
  369. package/dist/{public-http-C0FoTiL_.d.ts → public-http-CJWs3mo9.d.ts} +1 -1
  370. package/dist/{qmd-qXD4vatU.d.ts → qmd-CxCH9G9m.d.ts} +2 -2
  371. package/dist/qmd-preflight.d.ts +2 -2
  372. package/dist/qmd-recall-cache.d.ts +1 -1
  373. package/dist/qmd.d.ts +2 -2
  374. package/dist/qmd.js +2 -2
  375. package/dist/recall-concurrency-config.d.ts +1 -1
  376. package/dist/recall-disclosure-escalation.d.ts +1 -1
  377. package/dist/recall-explain-renderer.d.ts +1 -1
  378. package/dist/recall-explain-renderer.js +3 -3
  379. package/dist/recall-memory-map.d.ts +1 -1
  380. package/dist/recall-navigate-access.d.ts +1 -1
  381. package/dist/recall-navigate-access.js +2 -2
  382. package/dist/recall-navigate-disclosure.d.ts +1 -1
  383. package/dist/recall-navigate-disclosure.js +1 -1
  384. package/dist/recall-navigate.d.ts +1 -1
  385. package/dist/recall-navigate.js +2 -2
  386. package/dist/recall-planner-llm.d.ts +3 -2
  387. package/dist/recall-planner-llm.js +4 -3
  388. package/dist/recall-planner-llm.js.map +1 -1
  389. package/dist/recall-state-view-admission.d.ts +13 -3
  390. package/dist/recall-state-view-admission.js +8 -8
  391. package/dist/recall-state-view-anchors.d.ts +85 -0
  392. package/dist/recall-state-view-anchors.js +21 -0
  393. package/dist/recall-state-view-anchors.js.map +1 -0
  394. package/dist/recall-state-view-inject.js +2 -2
  395. package/dist/recall-state-view-render.js +2 -2
  396. package/dist/recall-state-view-widen.js +2 -2
  397. package/dist/recall-state-view-wire.js +3 -3
  398. package/dist/recall-state-view.d.ts +38 -1
  399. package/dist/recall-state-view.js +11 -3
  400. package/dist/recall-state.d.ts +1 -1
  401. package/dist/recall-tag-filter.d.ts +1 -1
  402. package/dist/recall-timings.d.ts +1 -1
  403. package/dist/recall-xray-cli.d.ts +1 -1
  404. package/dist/recall-xray-cli.js +4 -4
  405. package/dist/recall-xray-renderer.d.ts +1 -1
  406. package/dist/recall-xray-renderer.js +3 -3
  407. package/dist/recall-xray.d.ts +1 -1
  408. package/dist/recall-xray.js +2 -2
  409. package/dist/reconcile/cursor.d.ts +1 -1
  410. package/dist/reconcile/manifest.d.ts +1 -1
  411. package/dist/reconcile/plan.d.ts +1 -1
  412. package/dist/replay/normalizers/chatgpt.d.ts +1 -1
  413. package/dist/replay/normalizers/claude.d.ts +1 -1
  414. package/dist/replay/normalizers/openclaw.d.ts +1 -1
  415. package/dist/replay/normalizers/shared.d.ts +1 -1
  416. package/dist/replay/runner.d.ts +1 -1
  417. package/dist/replay/types.d.ts +1 -1
  418. package/dist/replica-divergence.d.ts +1 -1
  419. package/dist/replica-peers-config.d.ts +1 -1
  420. package/dist/resolve-auth-token.d.ts +1 -1
  421. package/dist/resume-bundles.js +7 -6
  422. package/dist/retrieval-agents.d.ts +2 -2
  423. package/dist/retrieval-tiers.d.ts +1 -1
  424. package/dist/routing/engine.d.ts +1 -1
  425. package/dist/routing/store.d.ts +1 -1
  426. package/dist/salvage-envelope.d.ts +1 -1
  427. package/dist/{scope-profiles-BT9rqC3w.d.ts → scope-profiles-BGAUqhBR.d.ts} +1 -1
  428. package/dist/search/embed-helper.d.ts +1 -1
  429. package/dist/search/factory.d.ts +1 -1
  430. package/dist/search/factory.js +8 -8
  431. package/dist/search/index.d.ts +1 -1
  432. package/dist/search/index.js +12 -12
  433. package/dist/search/lancedb-backend.d.ts +1 -1
  434. package/dist/search/lancedb-backend.js +2 -2
  435. package/dist/search/meilisearch-backend.d.ts +1 -1
  436. package/dist/search/meilisearch-backend.js +2 -2
  437. package/dist/search/noop-backend.d.ts +1 -1
  438. package/dist/search/orama-backend.d.ts +1 -1
  439. package/dist/search/orama-backend.js +2 -2
  440. package/dist/search/port.d.ts +2 -2
  441. package/dist/search/port.js +1 -1
  442. package/dist/search/remote-backend.d.ts +1 -1
  443. package/dist/search/remote-backend.js +2 -2
  444. package/dist/{semantic-consolidation-CmZi7thY.d.ts → semantic-consolidation-CCeRD9pV.d.ts} +1 -1
  445. package/dist/semantic-consolidation.d.ts +2 -2
  446. package/dist/semantic-consolidation.js +17 -17
  447. package/dist/semantic-rule-promotion.js +16 -16
  448. package/dist/semantic-rule-verifier.d.ts +1 -1
  449. package/dist/semantic-rule-verifier.js +16 -16
  450. package/dist/{service-CLkA7AQB.d.ts → service-BwpzRduk.d.ts} +2 -2
  451. package/dist/session-observer-bands.d.ts +1 -1
  452. package/dist/session-observer-state.d.ts +1 -1
  453. package/dist/shared-context/manager.d.ts +1 -1
  454. package/dist/signal.d.ts +1 -1
  455. package/dist/source-agent-qualifier.d.ts +1 -1
  456. package/dist/source-agent-qualifier.js +19 -19
  457. package/dist/standup/build.js +16 -16
  458. package/dist/{storage-wvX01lht.d.ts → storage-BprAGBG0.d.ts} +2 -1
  459. package/dist/storage.d.ts +2 -2
  460. package/dist/storage.js +15 -15
  461. package/dist/subject-config.d.ts +1 -1
  462. package/dist/summarizer.d.ts +1 -1
  463. package/dist/summarizer.js +5 -5
  464. package/dist/summary-snapshot.d.ts +1 -1
  465. package/dist/support-passport/index.d.ts +18 -17
  466. package/dist/support-passport/index.js +42 -42
  467. package/dist/task-llm-config.d.ts +16 -0
  468. package/dist/task-llm-config.js +12 -0
  469. package/dist/task-llm-config.js.map +1 -0
  470. package/dist/temporal-supersession.d.ts +2 -2
  471. package/dist/temporal-timeline-recall.d.ts +1 -1
  472. package/dist/temporal-validity.d.ts +1 -1
  473. package/dist/threading.d.ts +1 -1
  474. package/dist/tier-migration.d.ts +2 -2
  475. package/dist/tier-routing.d.ts +1 -1
  476. package/dist/topics.d.ts +1 -1
  477. package/dist/transcript.d.ts +1 -1
  478. package/dist/transfer/export-okf.d.ts +1 -1
  479. package/dist/transfer/export-okf.js +16 -16
  480. package/dist/trust-score-stage.d.ts +1 -1
  481. package/dist/trust-score.d.ts +1 -1
  482. package/dist/{types-Cyr32ABj.d.ts → types-nJV23pa3.d.ts} +1 -1
  483. package/dist/types.d.ts +1 -1
  484. package/dist/types.js +1 -1
  485. package/dist/utility-runtime.d.ts +1 -1
  486. package/dist/verified-recall.js +16 -16
  487. package/dist/who-knows-cli.d.ts +16 -14
  488. package/dist/who-knows-cli.js +17 -17
  489. package/dist/who-knows.d.ts +16 -14
  490. package/dist/who-knows.js +16 -16
  491. package/dist/write-envelope.d.ts +1 -1
  492. package/package.json +2 -2
  493. package/src/access-category-alias.test.ts +93 -0
  494. package/src/access-offline-manifest.ts +52 -2
  495. package/src/access-schema.ts +9 -4
  496. package/src/activity/config.test.ts +61 -0
  497. package/src/activity/config.ts +40 -1
  498. package/src/activity/timeline/analysis-provider.ts +8 -2
  499. package/src/activity/timeline/analysis-run.test.ts +82 -0
  500. package/src/activity/timeline/publish-cli.test.ts +30 -0
  501. package/src/activity/timeline/publish-cli.ts +7 -0
  502. package/src/activity/timeline/query.ts +8 -1
  503. package/src/activity/timeline/regenerate.test.ts +82 -2
  504. package/src/activity/timeline/regenerate.ts +7 -1
  505. package/src/activity/vault-frontmatter.test.ts +99 -1
  506. package/src/activity/vault-frontmatter.ts +131 -0
  507. package/src/activity/vault-publish.ts +6 -0
  508. package/src/activity/vault-publisher.test.ts +172 -0
  509. package/src/activity/vault-publisher.ts +69 -15
  510. package/src/activity/vault-region.test.ts +7 -2
  511. package/src/activity/vault-region.ts +7 -3
  512. package/src/background-generation-config.ts +32 -6
  513. package/src/background-generation.test.ts +10 -1
  514. package/src/cli/timeline-publish-commands.ts +9 -0
  515. package/src/config.test.ts +170 -43
  516. package/src/config.ts +17 -5
  517. package/src/extraction-error-classification.ts +36 -1
  518. package/src/extraction-timeout.test.ts +110 -1
  519. package/src/extraction.test.ts +19 -1
  520. package/src/extraction.ts +23 -21
  521. package/src/fallback-llm-codex-subscription.ts +193 -7
  522. package/src/fallback-llm-parse-failure.test.ts +156 -0
  523. package/src/fallback-llm.test.ts +58 -0
  524. package/src/fallback-llm.ts +187 -186
  525. package/src/index.ts +1 -0
  526. package/src/local-llm-config.ts +11 -10
  527. package/src/local-llm-headers-timeout.test.ts +30 -0
  528. package/src/local-llm-helpers.ts +28 -0
  529. package/src/local-llm.ts +8 -19
  530. package/src/namespaces/search.test.ts +51 -1
  531. package/src/namespaces/search.ts +48 -3
  532. package/src/orchestration/extraction-persist-promotion.test.ts +228 -2
  533. package/src/orchestration/extraction-persist-promotion.ts +17 -14
  534. package/src/orchestration/orchestrator-helpers.test.ts +104 -0
  535. package/src/orchestration/orchestrator-init.ts +366 -106
  536. package/src/orchestration/recall-internal.ts +85 -74
  537. package/src/orchestration/recall-rerank-coordinator.ts +41 -4
  538. package/src/orchestration/recall-search-pipeline.ts +25 -18
  539. package/src/orchestration/recall-state-view-pipeline.test.ts +89 -0
  540. package/src/orchestration/semantic-merge-promotion-payload.ts +62 -6
  541. package/src/orchestration/startup-collection-checks.ts +85 -0
  542. package/src/orchestrator-flush.test.ts +7 -0
  543. package/src/orchestrator-init.test.ts +1539 -0
  544. package/src/orchestrator.ts +7 -0
  545. package/src/qmd.ts +21 -10
  546. package/src/recall-rerank-coordinator.test.ts +153 -0
  547. package/src/recall-state-view-admission.ts +11 -1
  548. package/src/recall-state-view-anchors.ts +163 -0
  549. package/src/recall-state-view-cron-intent.test.ts +268 -0
  550. package/src/recall-state-view-widen.test.ts +14 -5
  551. package/src/recall-state-view-widen.ts +29 -8
  552. package/src/recall-state-view-zero-diff.test.ts +30 -0
  553. package/src/recall-state-view.test.ts +161 -0
  554. package/src/recall-state-view.ts +211 -37
  555. package/src/reconcile-identity-cache.test.ts +82 -1
  556. package/src/search/port.ts +1 -1
  557. package/src/storage/cas-revision-store.test.ts +4 -0
  558. package/src/storage/cas-revision-store.ts +104 -12
  559. package/src/storage-frontmatter-cas.test.ts +19 -17
  560. package/src/summarizer.ts +5 -1
  561. package/src/task-llm-config.test.ts +124 -0
  562. package/src/task-llm-config.ts +88 -0
  563. package/src/testing/subjects/startup-discovery-lifecycle.test.ts +273 -0
  564. package/src/trust-score-recall-paths.test.ts +1 -1
  565. package/src/types.ts +1 -0
  566. package/dist/chunk-255PC37A.js +0 -120
  567. package/dist/chunk-255PC37A.js.map +0 -1
  568. package/dist/chunk-2MT4ADLQ.js.map +0 -1
  569. package/dist/chunk-3CBI2ZSA.js.map +0 -1
  570. package/dist/chunk-3OYSIVOO.js.map +0 -1
  571. package/dist/chunk-5AERZWJD.js.map +0 -1
  572. package/dist/chunk-5HYUUFMQ.js.map +0 -1
  573. package/dist/chunk-6H2G7RFT.js.map +0 -1
  574. package/dist/chunk-7S53BPTU.js.map +0 -1
  575. package/dist/chunk-ACY4ZPF7.js.map +0 -1
  576. package/dist/chunk-B36GUU6T.js.map +0 -1
  577. package/dist/chunk-BJEJUOGM.js.map +0 -1
  578. package/dist/chunk-BLDBT6HZ.js.map +0 -1
  579. package/dist/chunk-CWTCMZGE.js.map +0 -1
  580. package/dist/chunk-IYKZJVL5.js.map +0 -1
  581. package/dist/chunk-JXN77SGO.js.map +0 -1
  582. package/dist/chunk-LQNRVPTV.js.map +0 -1
  583. package/dist/chunk-MVAQ2WM3.js.map +0 -1
  584. package/dist/chunk-P4ZAEYKG.js.map +0 -1
  585. package/dist/chunk-QHT7MOUF.js.map +0 -1
  586. package/dist/chunk-V6G2PSXA.js.map +0 -1
  587. package/dist/chunk-VELCIWJZ.js.map +0 -1
  588. package/dist/chunk-WKDFJXW5.js.map +0 -1
  589. package/dist/chunk-XWLLFKHM.js.map +0 -1
  590. package/dist/chunk-YFTNZMGR.js.map +0 -1
  591. /package/dist/{auto-sync-RP4C6ZPF.js.map → auto-sync-D6BAPIJV.js.map} +0 -0
  592. /package/dist/{chunk-T32B72QX.js.map → chunk-2SKMZUOW.js.map} +0 -0
  593. /package/dist/{chunk-VHOSM5G4.js.map → chunk-2SNCQHJZ.js.map} +0 -0
  594. /package/dist/{chunk-VV4ZVUE6.js.map → chunk-3QEVOQF5.js.map} +0 -0
  595. /package/dist/{chunk-3N3PBBEH.js.map → chunk-3XPN7AVY.js.map} +0 -0
  596. /package/dist/{chunk-XN6XT6GR.js.map → chunk-46Z3VGWF.js.map} +0 -0
  597. /package/dist/{chunk-2PTNJTBE.js.map → chunk-4CMXI55L.js.map} +0 -0
  598. /package/dist/{chunk-A6CKMIPK.js.map → chunk-7D6SER6A.js.map} +0 -0
  599. /package/dist/{chunk-4B3HBIFX.js.map → chunk-7Z54NXVS.js.map} +0 -0
  600. /package/dist/{chunk-X2NFFBTO.js.map → chunk-A7GQBJP5.js.map} +0 -0
  601. /package/dist/{chunk-NWMUSKED.js.map → chunk-BGRTZOJB.js.map} +0 -0
  602. /package/dist/{chunk-ZEGL7YCC.js.map → chunk-BXIJSPCL.js.map} +0 -0
  603. /package/dist/{chunk-MLWMR2GE.js.map → chunk-BYQX4IOG.js.map} +0 -0
  604. /package/dist/{chunk-ULDBGA5W.js.map → chunk-C5R73BON.js.map} +0 -0
  605. /package/dist/{chunk-BD7JTBYP.js.map → chunk-D7MAYFQP.js.map} +0 -0
  606. /package/dist/{chunk-BRZWWUCJ.js.map → chunk-DFVSJFHK.js.map} +0 -0
  607. /package/dist/{chunk-DPMTLJCT.js.map → chunk-ES5BUPYB.js.map} +0 -0
  608. /package/dist/{chunk-TNSCIPBQ.js.map → chunk-G6NQ3L4T.js.map} +0 -0
  609. /package/dist/{chunk-5N4MZLEH.js.map → chunk-GO5LOHCD.js.map} +0 -0
  610. /package/dist/{chunk-AECJY3GJ.js.map → chunk-GSSDHAYH.js.map} +0 -0
  611. /package/dist/{chunk-JA2QJOAX.js.map → chunk-HJUP3K6L.js.map} +0 -0
  612. /package/dist/{chunk-ZKZFFWLV.js.map → chunk-ICNJ6J46.js.map} +0 -0
  613. /package/dist/{chunk-6EHM2AV7.js.map → chunk-IMBQFHRV.js.map} +0 -0
  614. /package/dist/{chunk-6PRY6CLC.js.map → chunk-IOPIGX7Y.js.map} +0 -0
  615. /package/dist/{chunk-TRHBQVVO.js.map → chunk-IS2IDFJP.js.map} +0 -0
  616. /package/dist/{chunk-R4VAUNNC.js.map → chunk-J4WGTN2N.js.map} +0 -0
  617. /package/dist/{chunk-JPOX2AJB.js.map → chunk-J7FVMLBR.js.map} +0 -0
  618. /package/dist/{chunk-BYZKLEWG.js.map → chunk-JAJIMTFB.js.map} +0 -0
  619. /package/dist/{chunk-OKO57IXB.js.map → chunk-JOP7W24J.js.map} +0 -0
  620. /package/dist/{chunk-YUW66UAH.js.map → chunk-JUDT33RX.js.map} +0 -0
  621. /package/dist/{chunk-UQNYPK7G.js.map → chunk-K4JKAXMO.js.map} +0 -0
  622. /package/dist/{chunk-BV4ZKIZH.js.map → chunk-K75A5XWU.js.map} +0 -0
  623. /package/dist/{chunk-M6HBPLBA.js.map → chunk-KOTG3RXE.js.map} +0 -0
  624. /package/dist/{chunk-OB3XMWX5.js.map → chunk-KVO2BTA4.js.map} +0 -0
  625. /package/dist/{chunk-CBFYCDYO.js.map → chunk-KY236SP5.js.map} +0 -0
  626. /package/dist/{chunk-4BCHFSC7.js.map → chunk-LFVZD5EC.js.map} +0 -0
  627. /package/dist/{chunk-GGAXFTNH.js.map → chunk-LKFVVN7R.js.map} +0 -0
  628. /package/dist/{chunk-4RX5O34R.js.map → chunk-MJC7UKH7.js.map} +0 -0
  629. /package/dist/{chunk-UZZ7SQT3.js.map → chunk-NVVZPBKI.js.map} +0 -0
  630. /package/dist/{chunk-TTSJ7WUC.js.map → chunk-PKUJNICO.js.map} +0 -0
  631. /package/dist/{chunk-QMWKENNK.js.map → chunk-Q4AUIFUA.js.map} +0 -0
  632. /package/dist/{chunk-G43PMSME.js.map → chunk-QE6YVNP5.js.map} +0 -0
  633. /package/dist/{chunk-GT4ZHOKT.js.map → chunk-QPVNK2VE.js.map} +0 -0
  634. /package/dist/{chunk-K5DA5TRG.js.map → chunk-QS5Q5RBV.js.map} +0 -0
  635. /package/dist/{chunk-BX4EOMKT.js.map → chunk-RDLPFM7I.js.map} +0 -0
  636. /package/dist/{chunk-EY5JAWZC.js.map → chunk-RJQAP333.js.map} +0 -0
  637. /package/dist/{chunk-2OGTN37H.js.map → chunk-ROEFLU37.js.map} +0 -0
  638. /package/dist/{chunk-62QIQEUC.js.map → chunk-SFHLQPBF.js.map} +0 -0
  639. /package/dist/{chunk-HVS7TH2Y.js.map → chunk-SUEOG2S4.js.map} +0 -0
  640. /package/dist/{chunk-74AHCL56.js.map → chunk-TEMKBSV6.js.map} +0 -0
  641. /package/dist/{chunk-KDFDXEXZ.js.map → chunk-TO36VPZI.js.map} +0 -0
  642. /package/dist/{chunk-M3MYMWXG.js.map → chunk-V2ZA4YWE.js.map} +0 -0
  643. /package/dist/{chunk-UIOIDW3L.js.map → chunk-VHKXRYQN.js.map} +0 -0
  644. /package/dist/{chunk-GAS7KYC7.js.map → chunk-VKWFNPBH.js.map} +0 -0
  645. /package/dist/{chunk-XGRXQR6T.js.map → chunk-VQWBUPSJ.js.map} +0 -0
  646. /package/dist/{chunk-TUKGXQ5T.js.map → chunk-VQYWKCDR.js.map} +0 -0
  647. /package/dist/{chunk-PPQEP4OH.js.map → chunk-W23JARAQ.js.map} +0 -0
  648. /package/dist/{chunk-YQNNHLCG.js.map → chunk-WPGR3RW4.js.map} +0 -0
  649. /package/dist/{chunk-474DL7UB.js.map → chunk-WZYHPAG5.js.map} +0 -0
  650. /package/dist/{chunk-GQQVEH6V.js.map → chunk-XM46Y66S.js.map} +0 -0
  651. /package/dist/{chunk-JNSENHV5.js.map → chunk-YRIFXXMI.js.map} +0 -0
  652. /package/dist/{chunk-TRLOFIQC.js.map → chunk-YTK5MVNF.js.map} +0 -0
  653. /package/dist/{chunk-VMNCZ627.js.map → chunk-YTZN2UZO.js.map} +0 -0
  654. /package/dist/{chunk-6ZMNTRU3.js.map → chunk-ZAEPD4C2.js.map} +0 -0
  655. /package/dist/{chunk-KQW3YGEN.js.map → chunk-ZRMMXWYI.js.map} +0 -0
  656. /package/dist/{chunk-MCRVQ5YQ.js.map → chunk-ZZCR2QYL.js.map} +0 -0
@@ -879,3 +879,175 @@ test("a concurrent editor save between read and rename aborts the publish and ke
879
879
  setVaultPublisherTestHooks(null);
880
880
  }
881
881
  });
882
+
883
+ // ── Input-boundary regressions (issue #2917) ────────────────────────────
884
+ // Every rejection below must fire before any file byte is read or written.
885
+
886
+ test("a whitespace-padded section name is rejected, not silently trimmed (#2917)", () => {
887
+ const { vault, notePath } = makeVault();
888
+ const before = readFileSync(notePath, "utf8");
889
+ assert.throws(
890
+ () =>
891
+ publishVaultNote({
892
+ vaultPath: vault,
893
+ notePathTemplate: "{yyyy}-{MM}-{dd}.md",
894
+ date: DATE,
895
+ sections: [{ name: " timeline ", content: "fresh recap" }],
896
+ }),
897
+ /is not a valid region name/,
898
+ );
899
+ assert.equal(readFileSync(notePath, "utf8"), before, "the note is untouched");
900
+ });
901
+
902
+ test("a heading-strategy section name that cannot round-trip through the heading parser is rejected (#2917)", () => {
903
+ const { vault, notePath } = makeVault();
904
+ const before = readFileSync(notePath, "utf8");
905
+ // `## Timeline #` parses back as `Timeline` (closing hash sequence), so
906
+ // the region could never be matched on any publish.
907
+ assert.throws(
908
+ () =>
909
+ publishVaultNote({
910
+ vaultPath: vault,
911
+ notePathTemplate: "{yyyy}-{MM}-{dd}.md",
912
+ date: DATE,
913
+ strategy: "heading",
914
+ sections: [{ name: "Timeline #", content: "fresh recap" }],
915
+ }),
916
+ /not matchable by the heading parser/,
917
+ );
918
+ assert.equal(readFileSync(notePath, "utf8"), before, "the note is untouched");
919
+ });
920
+
921
+ test("a newline-bearing frontmatter value is rejected before any file mutation (#2917)", () => {
922
+ const { vault, notePath } = makeVault();
923
+ const before = readFileSync(notePath, "utf8");
924
+ const mtime = statSync(notePath).mtimeMs;
925
+ assert.throws(
926
+ () =>
927
+ publishVaultNote({
928
+ vaultPath: vault,
929
+ notePathTemplate: "{yyyy}-{MM}-{dd}.md",
930
+ date: DATE,
931
+ sections: [
932
+ {
933
+ name: "timeline",
934
+ content: "fresh recap",
935
+ properties: { focus: "220\ninjected: yes" },
936
+ },
937
+ ],
938
+ propertiesMode: "frontmatter",
939
+ }),
940
+ /control characters or line breaks/,
941
+ );
942
+ assert.equal(readFileSync(notePath, "utf8"), before, "the note is untouched");
943
+ assert.equal(statSync(notePath).mtimeMs, mtime, "no write attempt was made");
944
+ });
945
+
946
+ test("an oversize or injection-shaped frontmatter value is rejected before any file mutation (#2917)", () => {
947
+ const { vault, notePath } = makeVault();
948
+ const before = readFileSync(notePath, "utf8");
949
+ for (const value of ["x".repeat(201), "[flow]", "a #comment", " leading-space"] as const) {
950
+ assert.throws(
951
+ () =>
952
+ publishVaultNote({
953
+ vaultPath: vault,
954
+ notePathTemplate: "{yyyy}-{MM}-{dd}.md",
955
+ date: DATE,
956
+ sections: [{ name: "timeline", content: "fresh recap", properties: { focus: value } }],
957
+ propertiesMode: "frontmatter",
958
+ }),
959
+ RangeError,
960
+ `value ${JSON.stringify(value)} must be rejected at the boundary`,
961
+ );
962
+ }
963
+ assert.equal(readFileSync(notePath, "utf8"), before, "the note is untouched");
964
+ });
965
+
966
+ test("a valid list property publishes as a flow list in frontmatter (#2917)", () => {
967
+ const { vault, notePath } = makeVault();
968
+ const status = publishVaultNote({
969
+ vaultPath: vault,
970
+ notePathTemplate: "Daily Notes/{yyyy}/{MM}/{yyyy}-{MM}-{dd}.md",
971
+ date: DATE,
972
+ sections: [{ name: "timeline", content: "fresh recap", properties: { cards: ["a", "b"] } }],
973
+ propertiesMode: "frontmatter",
974
+ });
975
+ const after = readFileSync(notePath, "utf8");
976
+ assert.match(after, /^remnic_cards: \[a, b\]$/m);
977
+ });
978
+
979
+ test("frontmatter property totals are bounded across sections (#2917)", () => {
980
+ const { vault, notePath } = makeVault();
981
+ const before = readFileSync(notePath, "utf8");
982
+ // Each value is under the per-scalar cap; the SUM crosses the total.
983
+ const big = "v".repeat(200);
984
+ const properties = Object.fromEntries(
985
+ Array.from({ length: 12 }, (_, i) => [`k${i}`, big]),
986
+ );
987
+ assert.throws(
988
+ () =>
989
+ publishVaultNote({
990
+ vaultPath: vault,
991
+ notePathTemplate: "{yyyy}-{MM}-{dd}.md",
992
+ date: DATE,
993
+ sections: [
994
+ { name: "timeline", content: "fresh recap", properties },
995
+ ],
996
+ propertiesMode: "frontmatter",
997
+ }),
998
+ /character total/,
999
+ );
1000
+ assert.equal(readFileSync(notePath, "utf8"), before, "the note is untouched");
1001
+ });
1002
+
1003
+ test("a prefix that makes the final key start with a YAML indicator is rejected before any file mutation (#2917)", () => {
1004
+ const { vault, notePath } = makeVault();
1005
+ const before = readFileSync(notePath, "utf8");
1006
+ const mtime = statSync(notePath).mtimeMs;
1007
+ assert.throws(
1008
+ () =>
1009
+ publishVaultNote({
1010
+ vaultPath: vault,
1011
+ notePathTemplate: "{yyyy}-{MM}-{dd}.md",
1012
+ date: DATE,
1013
+ sections: [{ name: "timeline", content: "fresh recap", properties: { focus: "220" } }],
1014
+ propertiesMode: "frontmatter",
1015
+ propertiesPrefix: "[",
1016
+ }),
1017
+ /not a plain mapping key/,
1018
+ );
1019
+ assert.equal(readFileSync(notePath, "utf8"), before, "the note is untouched");
1020
+ assert.equal(statSync(notePath).mtimeMs, mtime, "no write attempt was made");
1021
+ });
1022
+
1023
+ test("a list item carrying a flow delimiter is rejected before any file mutation (#2917)", () => {
1024
+ const { vault, notePath } = makeVault();
1025
+ const before = readFileSync(notePath, "utf8");
1026
+ const mtime = statSync(notePath).mtimeMs;
1027
+ assert.throws(
1028
+ () =>
1029
+ publishVaultNote({
1030
+ vaultPath: vault,
1031
+ notePathTemplate: "{yyyy}-{MM}-{dd}.md",
1032
+ date: DATE,
1033
+ sections: [{ name: "timeline", content: "fresh recap", properties: { cards: ["a{"] } }],
1034
+ propertiesMode: "frontmatter",
1035
+ }),
1036
+ /flow delimiter/,
1037
+ );
1038
+ assert.equal(readFileSync(notePath, "utf8"), before, "the note is untouched");
1039
+ assert.equal(statSync(notePath).mtimeMs, mtime, "no write attempt was made");
1040
+ });
1041
+
1042
+ test("a valid prefix still publishes a plain final key (#2917)", () => {
1043
+ const { vault, notePath } = makeVault();
1044
+ publishVaultNote({
1045
+ vaultPath: vault,
1046
+ notePathTemplate: "Daily Notes/{yyyy}/{MM}/{yyyy}-{MM}-{dd}.md",
1047
+ date: DATE,
1048
+ sections: [{ name: "timeline", content: "fresh recap", properties: { focus: "220" } }],
1049
+ propertiesMode: "frontmatter",
1050
+ propertiesPrefix: "x_",
1051
+ });
1052
+ assert.match(readFileSync(notePath, "utf8"), /^x_focus: 220$/m);
1053
+ });
@@ -19,7 +19,12 @@ import { chmodSync, chownSync, lstatSync, mkdirSync, readFileSync, realpathSync,
19
19
  import path from "node:path";
20
20
 
21
21
  import { expandTildePath } from "../utils/path.js";
22
- import { applyManagedRegion, fileLines } from "./vault-publish.js";
22
+ import { applyManagedRegion, fileLines, headingSurvivesRoundTrip } from "./vault-publish.js";
23
+ import {
24
+ renderVaultPropertyValue,
25
+ validateVaultProperties,
26
+ type VaultPropertyValue,
27
+ } from "./vault-frontmatter.js";
23
28
  import { insertMarkersUnderHeading } from "./vault-insert.js";
24
29
  import { validateRegionName } from "./vault-region.js";
25
30
  import { assertBeginEndPair } from "./vault-region-pair.js";
@@ -37,8 +42,8 @@ export interface VaultSectionPublish {
37
42
  name: string;
38
43
  /** Rendered artifact body the region owns. */
39
44
  content: string;
40
- /** Unprefixed stats, e.g. `{ focus_minutes: "220" }`; keys get the configured prefix. */
41
- properties?: Readonly<Record<string, string>>;
45
+ /** Unprefixed stats, e.g. `{ focus_minutes: "220" }`; keys get the configured prefix. Values are plain single-line scalars or lists of them (vault-frontmatter.ts). */
46
+ properties?: Readonly<Record<string, VaultPropertyValue>>;
42
47
  /** When present, a provenance footer line is appended inside the region. */
43
48
  provenance?: VaultSectionProvenance;
44
49
  }
@@ -97,6 +102,48 @@ export function publishVaultNote(input: PublishVaultNoteInput): VaultPublishStat
97
102
  }
98
103
  }
99
104
 
105
+
106
+ // Issue #2917: input boundaries are total and run BEFORE any note byte
107
+ // is read or written, so a rejection can never leave a half-merged
108
+ // note behind.
109
+
110
+ // The heading strategy matches a section by scanning note headings with
111
+ // the shared ATX parser (`applyHeadingRegion`/`insertMarkersUnderHeading`).
112
+ // A name whose rendered heading parses back to something else — a
113
+ // trailing `#` run is stripped as a closing sequence (`## Timeline #`
114
+ // reads as `Timeline`) — can never be matched, so every publish would
115
+ // no-op or mis-scope. Reject it here rather than at match time.
116
+ const headingsToProbe =
117
+ strategy === "heading" ? input.sections.map((section) => section.name) : [];
118
+ if (typeof input.insertUnderHeading === "string" && input.insertUnderHeading.length > 0) {
119
+ headingsToProbe.push(input.insertUnderHeading);
120
+ }
121
+ for (const headingName of headingsToProbe) {
122
+ if (!headingSurvivesRoundTrip(headingName)) {
123
+ throw new RangeError(
124
+ `Section name ${JSON.stringify(headingName)} is not matchable by the heading parser; it must survive a render-and-parse round trip.`,
125
+ );
126
+ }
127
+ }
128
+
129
+ // Property values land in note frontmatter or inline fields; validate
130
+ // their shape and bounds (vault-frontmatter.ts) against the final
131
+ // prefixed keys, in every mode, before any file access.
132
+ const propertyEntries: Array<{ key: string; value: VaultPropertyValue }> = [];
133
+ for (const section of input.sections) {
134
+ if (!section.properties) continue;
135
+ for (const key of Object.keys(section.properties)) {
136
+ const value = section.properties[key];
137
+ if (value === undefined) continue;
138
+ propertyEntries.push({ key: `${prefix}${key}`, value });
139
+ }
140
+ }
141
+ if (propertyEntries.length > 0) {
142
+ const checked = validateVaultProperties(propertyEntries);
143
+ if (!checked.ok) {
144
+ throw new RangeError(`Vault publish properties rejected: ${checked.reason}.`);
145
+ }
146
+ }
100
147
  const relative = resolveVaultNotePath(input.notePathTemplate, input.date);
101
148
  const result = publishRelative(input, relative, { strategy, propertiesMode, prefix });
102
149
  return summarizeVaultPublish(result);
@@ -262,13 +309,13 @@ function refuse(relative: string, outcome: "skipped" | "error", reason: string):
262
309
 
263
310
  function decorate(
264
311
  section: VaultSectionPublish,
265
- prefixed: Record<string, string> | undefined,
312
+ prefixed: Record<string, VaultPropertyValue> | undefined,
266
313
  mode: string,
267
314
  ): string {
268
315
  const parts: string[] = [section.content];
269
316
  if (prefixed !== undefined && mode === "dataview-inline") {
270
317
  for (const [key, value] of Object.entries(prefixed)) {
271
- parts.push(`${key}:: ${value}`);
318
+ parts.push(`${key}:: ${renderVaultPropertyValue(value)}`);
272
319
  }
273
320
  }
274
321
  if (section.provenance !== undefined) {
@@ -388,8 +435,8 @@ function looksLikeRemnicMarkerLine(trimmed: string): boolean {
388
435
  function frontmatterUpdates(
389
436
  sections: readonly VaultSectionPublish[],
390
437
  prefix: string,
391
- ): Record<string, string> {
392
- const updates: Record<string, string> = {};
438
+ ): Record<string, VaultPropertyValue> {
439
+ const updates: Record<string, VaultPropertyValue> = {};
393
440
  for (const section of sections) {
394
441
  if (!section.properties) continue;
395
442
  for (const [key, value] of Object.entries(section.properties)) {
@@ -406,14 +453,16 @@ function frontmatterUpdates(
406
453
  */
407
454
  export function mergeFrontmatterKeys(
408
455
  noteText: string,
409
- updates: Readonly<Record<string, string>>,
456
+ updates: Readonly<Record<string, VaultPropertyValue>>,
410
457
  ): { ok: true; text: string } | { ok: false; reason: string } {
411
458
  const entries = Object.entries(updates);
412
459
  if (entries.length === 0) return { ok: true, text: noteText };
413
- for (const [key] of entries) {
414
- if (key.includes("\n") || key.includes("\r") || key.trim() !== key || key.length === 0) {
415
- return { ok: false, reason: "invalid_property_key" };
416
- }
460
+ // The writer re-validates the same boundary the publisher entry checked
461
+ // (issue #2917): this function is exported, so a direct caller must not
462
+ // be able to smuggle a newline-bearing or unbounded value into a note.
463
+ const checked = validateVaultProperties(entries.map(([key, value]) => ({ key, value })));
464
+ if (!checked.ok) {
465
+ return { ok: false, reason: "invalid_property" };
417
466
  }
418
467
 
419
468
  const eol = noteText.includes("\r\n") ? "\r\n" : "\n";
@@ -422,7 +471,12 @@ export function mergeFrontmatterKeys(
422
471
  const firstLine = firstLineEnd === -1 ? noteText : noteText.slice(0, firstLineEnd);
423
472
 
424
473
  if (!openRe.test(firstLine)) {
425
- const block = ["---", ...entries.map(([key, value]) => `${key}: ${value}`), "---", ""].join(eol);
474
+ const block = [
475
+ "---",
476
+ ...entries.map(([key, value]) => `${key}: ${renderVaultPropertyValue(value)}`),
477
+ "---",
478
+ "",
479
+ ].join(eol);
426
480
  return { ok: true, text: block + eol + noteText };
427
481
  }
428
482
 
@@ -451,13 +505,13 @@ export function mergeFrontmatterKeys(
451
505
  if (rawKey !== rawKey.trimStart()) continue;
452
506
  const key = rawKey.trimEnd();
453
507
  if (!pending.has(key)) continue;
454
- lines[i] = `${rawKey}: ${pending.get(key)}`;
508
+ lines[i] = `${rawKey}: ${renderVaultPropertyValue(pending.get(key)!)}`;
455
509
  pending.delete(key);
456
510
  }
457
511
  const insertAt = closeIdx;
458
512
  const added: string[] = [];
459
513
  for (const [key, value] of pending.entries()) {
460
- added.push(`${key}: ${value}`);
514
+ added.push(`${key}: ${renderVaultPropertyValue(value)}`);
461
515
  }
462
516
  lines.splice(insertAt, 0, ...added);
463
517
  return { ok: true, text: lines.join(eol) };
@@ -3,9 +3,14 @@ import test from "node:test";
3
3
 
4
4
  import { validateRegionName } from "./vault-region.js";
5
5
 
6
- test("validateRegionName trims a valid name", () => {
6
+ test("validateRegionName accepts a valid name unchanged", () => {
7
7
  assert.deepEqual(validateRegionName("timeline"), { ok: true, name: "timeline" });
8
- assert.deepEqual(validateRegionName(" weekly "), { ok: true, name: "weekly" });
8
+ });
9
+
10
+ test("validateRegionName rejects whitespace-padded names instead of trimming them (#2917)", () => {
11
+ assert.deepEqual(validateRegionName(" weekly"), { ok: false, error: "invalid_name" });
12
+ assert.deepEqual(validateRegionName("weekly "), { ok: false, error: "invalid_name" });
13
+ assert.deepEqual(validateRegionName(" weekly "), { ok: false, error: "invalid_name" });
9
14
  });
10
15
 
11
16
  test("validateRegionName rejects empty and whitespace-only names", () => {
@@ -8,6 +8,10 @@
8
8
  * or as name `A` with a `B:start` suffix) and a publisher that resolved
9
9
  * that ambiguity differently from the note's own markers would pair a
10
10
  * start with a later end and delete the user bytes in between.
11
+ *
12
+ * Whitespace-padded names are rejected, not trimmed (issue #2917): the
13
+ * old silent trim validated one name and wrote another, so markers and
14
+ * heading matches were computed against bytes the caller never saw.
11
15
  */
12
16
 
13
17
  export type ValidateRegionNameResult =
@@ -21,9 +25,9 @@ export function validateRegionName(name: string): ValidateRegionNameResult {
21
25
  if (name.includes("\n") || name.includes("\r") || name.includes("-->") || name.includes(":")) {
22
26
  return { ok: false, error: "invalid_name" };
23
27
  }
24
- const trimmed = name.trim();
25
- if (trimmed.length === 0) {
28
+ if (name.trim() !== name || name.trim().length === 0) {
26
29
  return { ok: false, error: "invalid_name" };
27
30
  }
28
- return { ok: true, name: trimmed };
31
+ return { ok: true, name };
29
32
  }
33
+
@@ -1,4 +1,7 @@
1
+ import { readFileSync } from "node:fs";
2
+
1
3
  import { isLoopbackHost } from "./runtime/http-transport.js";
4
+ import { expandTildePath } from "./utils/path.js";
2
5
 
3
6
  export interface BackgroundGenerationConfig {
4
7
  /** Full chat-completions URL. Never used as the global OpenAI base URL. */
@@ -54,14 +57,13 @@ function parseBackgroundGenerationObject(
54
57
  if (typeof tokenRaw !== "string" || tokenRaw.length === 0) {
55
58
  throw new Error(`${keyName} must include a token`);
56
59
  }
57
- const timeoutRaw = record.timeoutSeconds;
60
+ const timeoutRaw = record.timeoutSeconds ?? record.timeout_seconds;
58
61
  let timeoutSeconds = 120;
59
62
  if (timeoutRaw !== undefined) {
60
- const parsed = typeof timeoutRaw === "number" ? timeoutRaw : Number(timeoutRaw);
61
- if (!Number.isFinite(parsed) || parsed <= 0) {
63
+ if (typeof timeoutRaw !== "number" || !Number.isFinite(timeoutRaw) || timeoutRaw <= 0) {
62
64
  throw new Error(`${keyName} timeoutSeconds must be a finite number > 0`);
63
65
  }
64
- timeoutSeconds = parsed;
66
+ timeoutSeconds = timeoutRaw;
65
67
  }
66
68
  return {
67
69
  endpoint: parseBackgroundEndpoint(endpointRaw, `${keyName}.endpoint`),
@@ -72,8 +74,32 @@ function parseBackgroundGenerationObject(
72
74
 
73
75
  export function parseBackgroundGeneration(
74
76
  cfg: Record<string, unknown>,
77
+ expandEnv: (value: string) => string,
75
78
  ): BackgroundGenerationConfig | undefined {
79
+ const pathRaw = cfg.llmBridgeClientConfigPath;
80
+ let fromFile: BackgroundGenerationConfig | undefined;
81
+ if (pathRaw !== undefined && pathRaw !== null && pathRaw !== "") {
82
+ if (typeof pathRaw !== "string") {
83
+ throw new Error("llmBridgeClientConfigPath must be a string");
84
+ }
85
+ const expanded = expandTildePath(expandEnv(pathRaw.trim()));
86
+ let parsed: unknown;
87
+ try {
88
+ parsed = JSON.parse(readFileSync(expanded, "utf8"));
89
+ } catch {
90
+ throw new Error(`llmBridgeClientConfigPath could not be read: ${expanded}`);
91
+ }
92
+ fromFile = parseBackgroundGenerationObject(parsed, "llmBridgeClientConfigPath");
93
+ }
76
94
  const explicitRaw = cfg.backgroundGeneration;
77
- if (explicitRaw === undefined || explicitRaw === null) return undefined;
78
- return parseBackgroundGenerationObject(explicitRaw, "backgroundGeneration");
95
+ const fromExplicit =
96
+ explicitRaw === undefined || explicitRaw === null
97
+ ? undefined
98
+ : parseBackgroundGenerationObject(explicitRaw, "backgroundGeneration");
99
+ if (!fromFile && !fromExplicit) return undefined;
100
+ return {
101
+ endpoint: fromExplicit?.endpoint ?? fromFile!.endpoint,
102
+ token: fromExplicit?.token ?? fromFile!.token,
103
+ timeoutSeconds: fromExplicit?.timeoutSeconds ?? fromFile!.timeoutSeconds,
104
+ };
79
105
  }
@@ -83,11 +83,13 @@ test("HourlySummarizer uses backgroundGeneration and not openaiBaseUrl", async (
83
83
  timeoutSeconds: 12,
84
84
  },
85
85
  });
86
- globalThis.fetch = (async (url) => {
86
+ let sentBody: string | undefined;
87
+ globalThis.fetch = (async (url, init) => {
87
88
  calls.push(String(url));
88
89
  if (String(url) !== "http://127.0.0.1:8765/v1/chat/completions") {
89
90
  return new Response("not the bridge", { status: 404 });
90
91
  }
92
+ sentBody = String(init?.body);
91
93
  return new Response(
92
94
  JSON.stringify({
93
95
  choices: [{ message: { content: '{"bullets":["bridge-only"]}' } }],
@@ -114,6 +116,13 @@ test("HourlySummarizer uses backgroundGeneration and not openaiBaseUrl", async (
114
116
  assert.deepEqual(summary?.bullets, ["bridge-only"]);
115
117
  assert.deepEqual(calls, ["http://127.0.0.1:8765/v1/chat/completions"]);
116
118
  assert.equal(config.openaiBaseUrl, "http://127.0.0.1:9999/v1");
119
+ // The bridge prompt must spell out the required JSON shape; without it a
120
+ // literal host model returns {"summary": "..."} and the schema rejects it.
121
+ const sent = JSON.parse(String(sentBody)) as {
122
+ messages: Array<{ role: string; content: string }>;
123
+ };
124
+ const system = sent.messages.find((message) => message.role === "system")?.content ?? "";
125
+ assert.match(system, /"bullets"/);
117
126
  } finally {
118
127
  globalThis.fetch = previousFetch;
119
128
  if (previousXdg === undefined) delete process.env.XDG_CONFIG_HOME;
@@ -23,6 +23,15 @@ export function registerTimelineCommands(cmd: CliCommand, orchestrator: Orchestr
23
23
  .option("--what <kinds>", "Comma-separated artifacts to publish (default: timeline)")
24
24
  .option("--dry-run", "Report per-file outcomes without writing")
25
25
  .action((...args: unknown[]) => {
26
+ // Commander passes declared positional args before the options
27
+ // object; `publish` declares none, so a stray positional would
28
+ // displace the options object and silently publish with defaults
29
+ // (issue #2917). Reject any string arg outright.
30
+ if (args.some((arg) => typeof arg === "string")) {
31
+ process.stderr.write("timeline publish takes no positional arguments.\n");
32
+ process.exitCode = 1;
33
+ return;
34
+ }
26
35
  const options = (args[0] ?? {}) as Record<string, unknown>;
27
36
  const code = runTimelinePublishCli(orchestrator.config, options, {
28
37
  stdout: process.stdout,