@remnic/core 9.65.3 → 9.65.4

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 (429) hide show
  1. package/dist/access-admin-ops-surface.d.ts +11 -11
  2. package/dist/access-admin-ops-surface.js +20 -18
  3. package/dist/access-authorization-probe.d.ts +11 -11
  4. package/dist/access-authorization-probe.js +21 -19
  5. package/dist/access-boundary.d.ts +11 -11
  6. package/dist/access-boundary.js +20 -18
  7. package/dist/access-cli.js +55 -53
  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 +11 -11
  11. package/dist/access-extraction-force-flush.js +20 -18
  12. package/dist/access-health-types.d.ts +1 -1
  13. package/dist/access-http-lcm-compaction.d.ts +11 -11
  14. package/dist/access-http-lifecycle-flush.d.ts +11 -11
  15. package/dist/access-http-offline-stream.d.ts +11 -11
  16. package/dist/access-http-query.d.ts +2 -2
  17. package/dist/access-http-query.js +22 -20
  18. package/dist/access-http.d.ts +12 -12
  19. package/dist/access-http.js +31 -29
  20. package/dist/access-identity-continuity-surface.d.ts +9 -9
  21. package/dist/access-identity-continuity-surface.js +20 -18
  22. package/dist/access-lcm-surface.d.ts +11 -11
  23. package/dist/access-lcm-surface.js +20 -18
  24. package/dist/access-mcp.d.ts +11 -11
  25. package/dist/access-mcp.js +25 -23
  26. package/dist/access-memory-search-fanout.d.ts +2 -2
  27. package/dist/{access-namespace-preflight-B7Usyz-K.d.ts → access-namespace-preflight-D_6mo8ms.d.ts} +1 -1
  28. package/dist/access-namespace-preflight.d.ts +3 -3
  29. package/dist/access-namespace-preflight.js +20 -18
  30. package/dist/access-observe-write-surface.d.ts +11 -11
  31. package/dist/access-observe-write-surface.js +20 -18
  32. package/dist/access-offline-manifest.d.ts +9 -9
  33. package/dist/access-offline-manifest.js +3 -3
  34. package/dist/access-operations-batch.js +21 -19
  35. package/dist/access-operations.d.ts +11 -11
  36. package/dist/access-operations.js +24 -22
  37. package/dist/access-recall-concurrency.d.ts +11 -11
  38. package/dist/access-recall-concurrency.js +20 -18
  39. package/dist/access-recall-response.d.ts +11 -11
  40. package/dist/access-recall-response.js +20 -18
  41. package/dist/access-recall-surface.d.ts +11 -11
  42. package/dist/access-recall-surface.js +20 -18
  43. package/dist/{access-service-DkaIG3n8.d.ts → access-service-DqPa3hy4.d.ts} +7 -7
  44. package/dist/access-service-helpers.d.ts +11 -11
  45. package/dist/access-service.d.ts +11 -11
  46. package/dist/access-service.js +20 -18
  47. package/dist/access-surface-catalog.d.ts +11 -11
  48. package/dist/access-surface-catalog.js +22 -20
  49. package/dist/access-surface-catalog.js.map +1 -1
  50. package/dist/access-wearables-meetings-surface.d.ts +3 -3
  51. package/dist/action-confidence.d.ts +1 -1
  52. package/dist/active-memory-bridge.d.ts +1 -1
  53. package/dist/active-recall.d.ts +1 -1
  54. package/dist/active-recall.js +5 -1
  55. package/dist/active-recall.js.map +1 -1
  56. package/dist/ambient-provenance.d.ts +1 -1
  57. package/dist/artifact-search.d.ts +1 -1
  58. package/dist/{auto-sync-H64ZCNIR.js → auto-sync-XVMLL2RH.js} +5 -5
  59. package/dist/behavior-learner.d.ts +1 -1
  60. package/dist/behavior-signals.d.ts +1 -1
  61. package/dist/bootstrap.d.ts +9 -9
  62. package/dist/briefing-window.d.ts +2 -2
  63. package/dist/briefing.d.ts +2 -2
  64. package/dist/briefing.js +4 -4
  65. package/dist/buffer-surprise-report.d.ts +1 -1
  66. package/dist/buffer-turn-helpers.d.ts +1 -1
  67. package/dist/buffer.d.ts +2 -2
  68. package/dist/bulk-import/index.d.ts +3 -3
  69. package/dist/calibration.d.ts +1 -1
  70. package/dist/capabilities.d.ts +1 -1
  71. package/dist/{catalog-CX2BZEJh.d.ts → catalog-DO_7zfkv.d.ts} +1 -1
  72. package/dist/causal-behavior.d.ts +1 -1
  73. package/dist/causal-consolidation.d.ts +1 -1
  74. package/dist/causal-consolidation.js +9 -6
  75. package/dist/causal-consolidation.js.map +1 -1
  76. package/dist/causal-trajectory-graph.d.ts +1 -1
  77. package/dist/chunk-236PXYG7.js +232 -0
  78. package/dist/chunk-236PXYG7.js.map +1 -0
  79. package/dist/{chunk-IQSC3V2E.js → chunk-2IXQSGCU.js} +2 -2
  80. package/dist/{chunk-GUXS322H.js → chunk-2MVTAIL3.js} +2 -2
  81. package/dist/{chunk-7QOO4LGC.js → chunk-3JZBPTLD.js} +331 -73
  82. package/dist/chunk-3JZBPTLD.js.map +1 -0
  83. package/dist/{chunk-TDKSCV62.js → chunk-3NH3VP3U.js} +2 -2
  84. package/dist/{chunk-URHCUXKI.js → chunk-AXGFOFNY.js} +2 -2
  85. package/dist/{chunk-WN5FSGLE.js → chunk-AZLLH6YA.js} +19 -19
  86. package/dist/{chunk-D27J626P.js → chunk-BK5G2MHO.js} +2 -2
  87. package/dist/{chunk-DHTQP334.js → chunk-CQBIN77D.js} +2 -2
  88. package/dist/{chunk-6VALIZKG.js → chunk-DORFF5N5.js} +2 -2
  89. package/dist/{chunk-76PL4XLG.js → chunk-DPNXADEI.js} +7 -2
  90. package/dist/chunk-DPNXADEI.js.map +1 -0
  91. package/dist/{chunk-MRTUN665.js → chunk-DUEDOYZD.js} +2 -2
  92. package/dist/{chunk-QFMO32TO.js → chunk-DUZARALI.js} +3 -3
  93. package/dist/{chunk-7KFIMGMP.js → chunk-ECLJ4LA2.js} +2 -2
  94. package/dist/{chunk-PDVQ5JU3.js → chunk-GHD2LLG4.js} +2 -2
  95. package/dist/{chunk-RK4WXUI2.js → chunk-HF5BUTI6.js} +2 -2
  96. package/dist/{chunk-3DVBKTSO.js → chunk-HSZMX3ZJ.js} +4 -4
  97. package/dist/{chunk-EV3YFLCB.js → chunk-I23ZHYSL.js} +2 -2
  98. package/dist/{chunk-ODZG724P.js → chunk-I2HTKOOP.js} +2 -2
  99. package/dist/{chunk-AYYGRVRP.js → chunk-IURMJBGP.js} +2 -2
  100. package/dist/{chunk-TYUS5TLG.js → chunk-IWKGOCL6.js} +3 -3
  101. package/dist/{chunk-4XDGYCZI.js → chunk-J3ATBB7M.js} +2 -2
  102. package/dist/{chunk-E4MVQQVX.js → chunk-JPAKBNTM.js} +2 -2
  103. package/dist/{chunk-NZWEEALH.js → chunk-KFIOPZ25.js} +2 -2
  104. package/dist/{chunk-EIVIB73I.js → chunk-KOO37E4Y.js} +2 -2
  105. package/dist/{chunk-57HVIG5U.js → chunk-KPB2QHJZ.js} +2 -2
  106. package/dist/{chunk-NXKJHSDN.js → chunk-LBFFNDFM.js} +1 -1
  107. package/dist/chunk-LBFFNDFM.js.map +1 -0
  108. package/dist/{chunk-Z4RPXHJH.js → chunk-LYBIHM4N.js} +4 -4
  109. package/dist/{chunk-G57LQRP6.js → chunk-MFOSZUIT.js} +2 -2
  110. package/dist/{chunk-AUO2LJ3K.js → chunk-NLEH4RTB.js} +2 -2
  111. package/dist/{chunk-AYDDB3XI.js → chunk-OCCHUEZB.js} +2 -2
  112. package/dist/{chunk-6TAX66IA.js → chunk-OU34IQXV.js} +2 -2
  113. package/dist/{chunk-OJD4WS2E.js → chunk-OZDFB22S.js} +2 -2
  114. package/dist/{chunk-GN55KU2P.js → chunk-PTZQYCJ4.js} +2 -2
  115. package/dist/{chunk-BQUEAVNW.js → chunk-QJW4MZSW.js} +2 -2
  116. package/dist/{chunk-2VXWFYJE.js → chunk-R2MZCYA6.js} +3 -3
  117. package/dist/{chunk-VA5KMSAE.js → chunk-SR5LNI6Q.js} +3 -3
  118. package/dist/{chunk-LBWQ65SX.js → chunk-T42L3S6A.js} +4 -4
  119. package/dist/{chunk-PAYGC3BD.js → chunk-THVI4Y7X.js} +7 -7
  120. package/dist/{chunk-S7Q5CM7E.js → chunk-TJFI3K2O.js} +15 -3
  121. package/dist/chunk-TJFI3K2O.js.map +1 -0
  122. package/dist/{chunk-R47WINCY.js → chunk-UCKG36HO.js} +2 -2
  123. package/dist/{chunk-QXIQPCCN.js → chunk-UFR6HX7A.js} +1 -1
  124. package/dist/{chunk-CDUUDBWJ.js → chunk-VFYRYFLL.js} +2 -2
  125. package/dist/{chunk-P4DHENRE.js → chunk-WDXD6ITO.js} +2 -2
  126. package/dist/{chunk-BKYPJUQL.js → chunk-XGM3VQWG.js} +10 -10
  127. package/dist/{chunk-MBDJJTAT.js → chunk-YDKF4MSJ.js} +3 -3
  128. package/dist/{chunk-YF6UHWOV.js → chunk-YHGCT462.js} +3 -3
  129. package/dist/{chunk-AZAA5DNP.js → chunk-YOXVZJFM.js} +2 -2
  130. package/dist/{chunk-OLWTCWQ2.js → chunk-YZJM6CLF.js} +8 -8
  131. package/dist/chunk-ZCUTSMR2.js +61 -0
  132. package/dist/chunk-ZCUTSMR2.js.map +1 -0
  133. package/dist/{chunk-LUNJ3WFO.js → chunk-ZK4BFABK.js} +4 -4
  134. package/dist/{chunk-H5FW4S5Q.js → chunk-ZPOHEB5Z.js} +31 -31
  135. package/dist/{chunk-RDFF2NAU.js → chunk-ZXBTTMGZ.js} +184 -88
  136. package/dist/chunk-ZXBTTMGZ.js.map +1 -0
  137. package/dist/{cli-ChKeYMZv.d.ts → cli-DO3i14pM.d.ts} +5 -5
  138. package/dist/cli.d.ts +13 -13
  139. package/dist/cli.js +44 -42
  140. package/dist/coding/pre-action-gate.d.ts +1 -1
  141. package/dist/compounding/engine.d.ts +2 -2
  142. package/dist/compounding/engine.js +4 -4
  143. package/dist/compounding/preference-consolidator.d.ts +1 -1
  144. package/dist/compression-optimizer.d.ts +1 -1
  145. package/dist/config.d.ts +1 -1
  146. package/dist/config.js +5 -1
  147. package/dist/connectors/codex-materialize-runner.d.ts +1 -1
  148. package/dist/connectors/codex-materialize-runner.js +8 -5
  149. package/dist/connectors/codex-materialize.d.ts +14 -1
  150. package/dist/connectors/codex-materialize.js +10 -1
  151. package/dist/connectors/index.d.ts +1 -1
  152. package/dist/connectors/index.js +8 -5
  153. package/dist/consolidation-provenance-check.d.ts +2 -2
  154. package/dist/consolidation-undo.d.ts +2 -2
  155. package/dist/contradiction/index.d.ts +3 -3
  156. package/dist/contradiction/index.js +1 -1
  157. package/dist/converge-config.d.ts +1 -1
  158. package/dist/convergence-refresh.d.ts +2 -2
  159. package/dist/convergence-refresh.js +6 -6
  160. package/dist/conversation-index/backend.d.ts +1 -1
  161. package/dist/conversation-index/chunker.d.ts +1 -1
  162. package/dist/conversation-index/faiss-adapter.d.ts +1 -1
  163. package/dist/conversation-index/indexer.d.ts +1 -1
  164. package/dist/conversation-index/search.d.ts +1 -1
  165. package/dist/corpus-watermark.d.ts +1 -1
  166. package/dist/corpus-watermark.js +6 -6
  167. package/dist/cross-lingual-recall.d.ts +1 -1
  168. package/dist/day-summary.d.ts +1 -1
  169. package/dist/delinearize.d.ts +1 -1
  170. package/dist/dependency-propagation-config.d.ts +1 -1
  171. package/dist/{dependency-propagation-delivery-B8ZMBBCY.d.ts → dependency-propagation-delivery-D23_x-s5.d.ts} +1 -1
  172. package/dist/direct-answer-wiring.d.ts +1 -1
  173. package/dist/direct-answer.d.ts +1 -1
  174. package/dist/embedding-fallback.d.ts +1 -1
  175. package/dist/enrichment/index.d.ts +1 -1
  176. package/dist/entity-origin-fields.d.ts +1 -1
  177. package/dist/entity-retrieval.d.ts +2 -2
  178. package/dist/entity-retrieval.js +4 -4
  179. package/dist/entity-schema.d.ts +1 -1
  180. package/dist/episodic-context.d.ts +1 -1
  181. package/dist/explicit-capture.d.ts +9 -9
  182. package/dist/explicit-capture.js +1 -1
  183. package/dist/external-wiki-access.d.ts +11 -11
  184. package/dist/external-wiki-access.js +21 -19
  185. package/dist/external-wiki-collection-registration.d.ts +1 -1
  186. package/dist/external-wiki-collection.d.ts +1 -1
  187. package/dist/external-wiki-mcp-tools.d.ts +11 -11
  188. package/dist/extraction-error-classification.d.ts +1 -1
  189. package/dist/extraction-faithfulness.d.ts +1 -1
  190. package/dist/extraction-judge-telemetry.d.ts +1 -1
  191. package/dist/extraction-judge-training.d.ts +1 -1
  192. package/dist/extraction-judge.d.ts +1 -1
  193. package/dist/extraction-judge.js +2 -2
  194. package/dist/extraction-liveness.d.ts +1 -1
  195. package/dist/extraction-normalization.d.ts +1 -1
  196. package/dist/extraction-prompt.d.ts +1 -1
  197. package/dist/extraction-source-grounding-rules.d.ts +1 -1
  198. package/dist/extraction-source-grounding.d.ts +1 -1
  199. package/dist/extraction.d.ts +1 -1
  200. package/dist/extraction.js +9 -7
  201. package/dist/fallback-llm.d.ts +1 -1
  202. package/dist/graph-dashboard-diff.d.ts +1 -1
  203. package/dist/graph-dashboard-key.d.ts +1 -1
  204. package/dist/graph-dashboard-parser.d.ts +1 -1
  205. package/dist/graph-edge-reinforcement.d.ts +1 -1
  206. package/dist/graph-path-reconstruction.d.ts +1 -1
  207. package/dist/graph-path-scoring.d.ts +1 -1
  208. package/dist/graph-snapshot.d.ts +1 -1
  209. package/dist/graph.d.ts +1 -1
  210. package/dist/harmonic-retrieval.js +1 -1
  211. package/dist/importance.d.ts +1 -1
  212. package/dist/importers/index.d.ts +1 -1
  213. package/dist/in-flight-reads.d.ts +1 -1
  214. package/dist/{index-CexDrJzC.d.ts → index--QhGIXF2.d.ts} +2 -2
  215. package/dist/index.d.ts +87 -40
  216. package/dist/index.js +79 -58
  217. package/dist/intent.d.ts +1 -1
  218. package/dist/lcm/engine.d.ts +1 -1
  219. package/dist/lcm/index.d.ts +1 -1
  220. package/dist/lcm/tools.d.ts +1 -1
  221. package/dist/lifecycle.d.ts +1 -1
  222. package/dist/live-connectors-runner.d.ts +1 -1
  223. package/dist/local-llm.d.ts +1 -1
  224. package/dist/local-model-endpoint.d.ts +1 -1
  225. package/dist/maintenance/memory-governance.d.ts +1 -1
  226. package/dist/maintenance/memory-governance.js +4 -4
  227. package/dist/maintenance/rebuild-memory-lifecycle-ledger.d.ts +2 -2
  228. package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +4 -4
  229. package/dist/maintenance/rebuild-memory-projection.d.ts +2 -2
  230. package/dist/maintenance/rebuild-memory-projection.js +5 -5
  231. package/dist/{maintenance-nkdtSrVr.d.ts → maintenance-PFvY1Pw_.d.ts} +3 -3
  232. package/dist/mcp-memory-inspector-app.d.ts +11 -11
  233. package/dist/memory-action-policy.d.ts +1 -1
  234. package/dist/memory-cache.d.ts +1 -1
  235. package/dist/memory-lifecycle-ledger-utils.d.ts +1 -1
  236. package/dist/memory-projection-store.d.ts +1 -1
  237. package/dist/memory-provenance.d.ts +1 -1
  238. package/dist/memory-snapshot.d.ts +1 -1
  239. package/dist/memory-subject-cli.d.ts +11 -11
  240. package/dist/memory-subject.d.ts +11 -11
  241. package/dist/memory-worth-outcomes.d.ts +2 -2
  242. package/dist/models-json.d.ts +1 -1
  243. package/dist/namespaces/migrate.d.ts +3 -3
  244. package/dist/namespaces/migrate.js +5 -5
  245. package/dist/namespaces/principal.d.ts +1 -1
  246. package/dist/namespaces/search.d.ts +1 -1
  247. package/dist/namespaces/storage.d.ts +3 -3
  248. package/dist/namespaces/storage.js +4 -4
  249. package/dist/native-knowledge.d.ts +1 -1
  250. package/dist/offline-sync-impression-drain.d.ts +1 -1
  251. package/dist/operator-doctor-corpus.d.ts +1 -1
  252. package/dist/operator-doctor-corpus.js +7 -7
  253. package/dist/operator-doctor-replica.d.ts +1 -1
  254. package/dist/operator-toolkit.d.ts +3 -3
  255. package/dist/operator-toolkit.js +16 -13
  256. package/dist/orchestration/compression-guideline-coordinator.d.ts +2 -2
  257. package/dist/orchestration/maintenance.d.ts +4 -4
  258. package/dist/orchestration/maintenance.js +10 -10
  259. package/dist/{orchestrator-Bvq1-RQs.d.ts → orchestrator-4wzJrPVm.d.ts} +8 -8
  260. package/dist/orchestrator.d.ts +9 -9
  261. package/dist/orchestrator.js +55 -53
  262. package/dist/patterns-cli.d.ts +1 -1
  263. package/dist/{pipeline-C8vfIiTX.d.ts → pipeline-CgXgdIrF.d.ts} +1 -1
  264. package/dist/policy-runtime.d.ts +1 -1
  265. package/dist/proactive-contention.d.ts +1 -1
  266. package/dist/provenance.d.ts +1 -1
  267. package/dist/{public-http-Cy0aYbys.d.ts → public-http-DhIXYBYI.d.ts} +1 -1
  268. package/dist/{qmd-B9p1SZTZ.d.ts → qmd-BppGGxsi.d.ts} +1 -1
  269. package/dist/qmd-preflight.d.ts +2 -2
  270. package/dist/qmd-recall-cache.d.ts +1 -1
  271. package/dist/qmd.d.ts +2 -2
  272. package/dist/recall-concurrency-config.d.ts +1 -1
  273. package/dist/recall-disclosure-escalation.d.ts +1 -1
  274. package/dist/recall-explain-renderer.d.ts +1 -1
  275. package/dist/recall-explain-renderer.js +3 -3
  276. package/dist/recall-memory-map.d.ts +1 -1
  277. package/dist/recall-planner-llm.d.ts +1 -1
  278. package/dist/recall-state.d.ts +1 -1
  279. package/dist/recall-tag-filter.d.ts +1 -1
  280. package/dist/recall-timings.d.ts +1 -1
  281. package/dist/recall-xray-cli.d.ts +1 -1
  282. package/dist/recall-xray-cli.js +4 -4
  283. package/dist/recall-xray-renderer.d.ts +1 -1
  284. package/dist/recall-xray-renderer.js +3 -3
  285. package/dist/recall-xray.d.ts +1 -1
  286. package/dist/recall-xray.js +2 -2
  287. package/dist/reconcile/cursor.d.ts +1 -1
  288. package/dist/reconcile/manifest.d.ts +1 -1
  289. package/dist/reconcile/manifest.js +2 -2
  290. package/dist/reconcile/plan.d.ts +1 -1
  291. package/dist/replay/normalizers/chatgpt.d.ts +1 -1
  292. package/dist/replay/normalizers/claude.d.ts +1 -1
  293. package/dist/replay/normalizers/openclaw.d.ts +1 -1
  294. package/dist/replay/normalizers/shared.d.ts +1 -1
  295. package/dist/replay/runner.d.ts +1 -1
  296. package/dist/replay/types.d.ts +1 -1
  297. package/dist/replica-divergence.d.ts +1 -1
  298. package/dist/replica-peers-config.d.ts +1 -1
  299. package/dist/resolution-4552BNRV.js +1 -1
  300. package/dist/resolve-auth-token.d.ts +1 -1
  301. package/dist/resume-bundles.js +6 -2
  302. package/dist/retrieval-agents.d.ts +2 -2
  303. package/dist/retrieval-tiers.d.ts +1 -1
  304. package/dist/routing/engine.d.ts +1 -1
  305. package/dist/routing/store.d.ts +1 -1
  306. package/dist/salvage-envelope.d.ts +1 -1
  307. package/dist/salvage-envelope.js +1 -1
  308. package/dist/schemas.d.ts +12 -12
  309. package/dist/{scope-profiles-DLrRxFWR.d.ts → scope-profiles-ChZUtxDU.d.ts} +1 -1
  310. package/dist/search/embed-helper.d.ts +1 -1
  311. package/dist/search/factory.d.ts +1 -1
  312. package/dist/search/index.d.ts +1 -1
  313. package/dist/search/lancedb-backend.d.ts +1 -1
  314. package/dist/search/meilisearch-backend.d.ts +1 -1
  315. package/dist/search/noop-backend.d.ts +1 -1
  316. package/dist/search/orama-backend.d.ts +1 -1
  317. package/dist/search/port.d.ts +1 -1
  318. package/dist/search/remote-backend.d.ts +1 -1
  319. package/dist/{semantic-consolidation-DlN6xe20.d.ts → semantic-consolidation-mSPwQSmF.d.ts} +1 -1
  320. package/dist/semantic-consolidation.d.ts +2 -2
  321. package/dist/semantic-consolidation.js +9 -6
  322. package/dist/semantic-rule-promotion.js +4 -4
  323. package/dist/semantic-rule-verifier.d.ts +1 -1
  324. package/dist/semantic-rule-verifier.js +4 -4
  325. package/dist/{service-GkYyVfm9.d.ts → service-BICWLwSP.d.ts} +2 -2
  326. package/dist/session-observer-bands.d.ts +1 -1
  327. package/dist/session-observer-state.d.ts +1 -1
  328. package/dist/shared-context/manager.d.ts +1 -1
  329. package/dist/signal.d.ts +1 -1
  330. package/dist/skills-registry.js +4 -56
  331. package/dist/skills-registry.js.map +1 -1
  332. package/dist/source-agent-qualifier.d.ts +1 -1
  333. package/dist/source-agent-qualifier.js +8 -5
  334. package/dist/{storage-BIDzuKIn.d.ts → storage-B7urx1K3.d.ts} +1 -1
  335. package/dist/storage.d.ts +2 -2
  336. package/dist/storage.js +6 -6
  337. package/dist/subject-config.d.ts +1 -1
  338. package/dist/summarizer.d.ts +1 -1
  339. package/dist/summary-snapshot.d.ts +1 -1
  340. package/dist/support-passport/index.d.ts +14 -14
  341. package/dist/support-passport/index.js +23 -21
  342. package/dist/temporal-supersession.d.ts +2 -2
  343. package/dist/temporal-timeline-recall.d.ts +1 -1
  344. package/dist/temporal-validity.d.ts +1 -1
  345. package/dist/threading.d.ts +1 -1
  346. package/dist/tier-migration.d.ts +2 -2
  347. package/dist/tier-routing.d.ts +1 -1
  348. package/dist/topics.d.ts +1 -1
  349. package/dist/transcript.d.ts +1 -1
  350. package/dist/trust-score-stage.d.ts +1 -1
  351. package/dist/trust-score.d.ts +1 -1
  352. package/dist/{types-BxAcOl5Q.d.ts → types-ETU5N6nB.d.ts} +111 -4
  353. package/dist/types.d.ts +1 -1
  354. package/dist/types.js +1 -1
  355. package/dist/utility-runtime.d.ts +1 -1
  356. package/dist/verified-recall.js +4 -4
  357. package/dist/who-knows-cli.d.ts +11 -11
  358. package/dist/who-knows-cli.js +5 -5
  359. package/dist/who-knows.d.ts +11 -11
  360. package/dist/who-knows.js +4 -4
  361. package/dist/write-envelope.d.ts +1 -1
  362. package/dist/write-envelope.js +1 -1
  363. package/package.json +2 -2
  364. package/src/cli/skills-commands.ts +150 -0
  365. package/src/cli.ts +4 -2
  366. package/src/config.ts +4 -2
  367. package/src/connectors/codex-materialize-runner.ts +16 -0
  368. package/src/connectors/codex-materialize-skills.test.ts +141 -0
  369. package/src/connectors/codex-materialize.ts +58 -40
  370. package/src/connectors/materialize-paths.ts +50 -0
  371. package/src/connectors/materialize-skills.ts +127 -0
  372. package/src/index.ts +5 -10
  373. package/src/procedural/skill-io.test.ts +190 -0
  374. package/src/procedural/skill-io.ts +220 -0
  375. package/src/procedural/skill-projection.test.ts +214 -0
  376. package/src/procedural/skill-projection.ts +356 -0
  377. package/src/types.ts +2 -3
  378. package/dist/chunk-76PL4XLG.js.map +0 -1
  379. package/dist/chunk-7QOO4LGC.js.map +0 -1
  380. package/dist/chunk-NXKJHSDN.js.map +0 -1
  381. package/dist/chunk-RDFF2NAU.js.map +0 -1
  382. package/dist/chunk-S7Q5CM7E.js.map +0 -1
  383. /package/dist/{auto-sync-H64ZCNIR.js.map → auto-sync-XVMLL2RH.js.map} +0 -0
  384. /package/dist/{chunk-IQSC3V2E.js.map → chunk-2IXQSGCU.js.map} +0 -0
  385. /package/dist/{chunk-GUXS322H.js.map → chunk-2MVTAIL3.js.map} +0 -0
  386. /package/dist/{chunk-TDKSCV62.js.map → chunk-3NH3VP3U.js.map} +0 -0
  387. /package/dist/{chunk-URHCUXKI.js.map → chunk-AXGFOFNY.js.map} +0 -0
  388. /package/dist/{chunk-WN5FSGLE.js.map → chunk-AZLLH6YA.js.map} +0 -0
  389. /package/dist/{chunk-D27J626P.js.map → chunk-BK5G2MHO.js.map} +0 -0
  390. /package/dist/{chunk-DHTQP334.js.map → chunk-CQBIN77D.js.map} +0 -0
  391. /package/dist/{chunk-6VALIZKG.js.map → chunk-DORFF5N5.js.map} +0 -0
  392. /package/dist/{chunk-MRTUN665.js.map → chunk-DUEDOYZD.js.map} +0 -0
  393. /package/dist/{chunk-QFMO32TO.js.map → chunk-DUZARALI.js.map} +0 -0
  394. /package/dist/{chunk-7KFIMGMP.js.map → chunk-ECLJ4LA2.js.map} +0 -0
  395. /package/dist/{chunk-PDVQ5JU3.js.map → chunk-GHD2LLG4.js.map} +0 -0
  396. /package/dist/{chunk-RK4WXUI2.js.map → chunk-HF5BUTI6.js.map} +0 -0
  397. /package/dist/{chunk-3DVBKTSO.js.map → chunk-HSZMX3ZJ.js.map} +0 -0
  398. /package/dist/{chunk-EV3YFLCB.js.map → chunk-I23ZHYSL.js.map} +0 -0
  399. /package/dist/{chunk-ODZG724P.js.map → chunk-I2HTKOOP.js.map} +0 -0
  400. /package/dist/{chunk-AYYGRVRP.js.map → chunk-IURMJBGP.js.map} +0 -0
  401. /package/dist/{chunk-TYUS5TLG.js.map → chunk-IWKGOCL6.js.map} +0 -0
  402. /package/dist/{chunk-4XDGYCZI.js.map → chunk-J3ATBB7M.js.map} +0 -0
  403. /package/dist/{chunk-E4MVQQVX.js.map → chunk-JPAKBNTM.js.map} +0 -0
  404. /package/dist/{chunk-NZWEEALH.js.map → chunk-KFIOPZ25.js.map} +0 -0
  405. /package/dist/{chunk-EIVIB73I.js.map → chunk-KOO37E4Y.js.map} +0 -0
  406. /package/dist/{chunk-57HVIG5U.js.map → chunk-KPB2QHJZ.js.map} +0 -0
  407. /package/dist/{chunk-Z4RPXHJH.js.map → chunk-LYBIHM4N.js.map} +0 -0
  408. /package/dist/{chunk-G57LQRP6.js.map → chunk-MFOSZUIT.js.map} +0 -0
  409. /package/dist/{chunk-AUO2LJ3K.js.map → chunk-NLEH4RTB.js.map} +0 -0
  410. /package/dist/{chunk-AYDDB3XI.js.map → chunk-OCCHUEZB.js.map} +0 -0
  411. /package/dist/{chunk-6TAX66IA.js.map → chunk-OU34IQXV.js.map} +0 -0
  412. /package/dist/{chunk-OJD4WS2E.js.map → chunk-OZDFB22S.js.map} +0 -0
  413. /package/dist/{chunk-GN55KU2P.js.map → chunk-PTZQYCJ4.js.map} +0 -0
  414. /package/dist/{chunk-BQUEAVNW.js.map → chunk-QJW4MZSW.js.map} +0 -0
  415. /package/dist/{chunk-2VXWFYJE.js.map → chunk-R2MZCYA6.js.map} +0 -0
  416. /package/dist/{chunk-VA5KMSAE.js.map → chunk-SR5LNI6Q.js.map} +0 -0
  417. /package/dist/{chunk-LBWQ65SX.js.map → chunk-T42L3S6A.js.map} +0 -0
  418. /package/dist/{chunk-PAYGC3BD.js.map → chunk-THVI4Y7X.js.map} +0 -0
  419. /package/dist/{chunk-R47WINCY.js.map → chunk-UCKG36HO.js.map} +0 -0
  420. /package/dist/{chunk-QXIQPCCN.js.map → chunk-UFR6HX7A.js.map} +0 -0
  421. /package/dist/{chunk-CDUUDBWJ.js.map → chunk-VFYRYFLL.js.map} +0 -0
  422. /package/dist/{chunk-P4DHENRE.js.map → chunk-WDXD6ITO.js.map} +0 -0
  423. /package/dist/{chunk-BKYPJUQL.js.map → chunk-XGM3VQWG.js.map} +0 -0
  424. /package/dist/{chunk-MBDJJTAT.js.map → chunk-YDKF4MSJ.js.map} +0 -0
  425. /package/dist/{chunk-YF6UHWOV.js.map → chunk-YHGCT462.js.map} +0 -0
  426. /package/dist/{chunk-AZAA5DNP.js.map → chunk-YOXVZJFM.js.map} +0 -0
  427. /package/dist/{chunk-OLWTCWQ2.js.map → chunk-YZJM6CLF.js.map} +0 -0
  428. /package/dist/{chunk-LUNJ3WFO.js.map → chunk-ZK4BFABK.js.map} +0 -0
  429. /package/dist/{chunk-H5FW4S5Q.js.map → chunk-ZPOHEB5Z.js.map} +0 -0
@@ -6,14 +6,14 @@ import {
6
6
  loadSyncState,
7
7
  syncWearableSource,
8
8
  wearableSourceLabel
9
- } from "./chunk-CDUUDBWJ.js";
9
+ } from "./chunk-VFYRYFLL.js";
10
10
  import {
11
11
  CompressionGuidelineCoordinator
12
12
  } from "./chunk-UXREWVW4.js";
13
13
  import {
14
14
  ActivityStore,
15
15
  MaintenanceScheduler
16
- } from "./chunk-Z4RPXHJH.js";
16
+ } from "./chunk-LYBIHM4N.js";
17
17
  import {
18
18
  runPeerProfileReasoner
19
19
  } from "./chunk-I74SUMNI.js";
@@ -32,7 +32,7 @@ import {
32
32
  import {
33
33
  CompoundingEngine,
34
34
  defaultTierMigrationCycleBudget
35
- } from "./chunk-R47WINCY.js";
35
+ } from "./chunk-UCKG36HO.js";
36
36
  import {
37
37
  SharedContextManager
38
38
  } from "./chunk-VI637ILW.js";
@@ -160,7 +160,7 @@ import {
160
160
  } from "./chunk-OH7QLI6W.js";
161
161
  import {
162
162
  ExtractionEngine
163
- } from "./chunk-LUNJ3WFO.js";
163
+ } from "./chunk-ZK4BFABK.js";
164
164
  import {
165
165
  parseMemoryActionEligibilityContext
166
166
  } from "./chunk-7BDZTALN.js";
@@ -176,7 +176,7 @@ import {
176
176
  getVerdictKind,
177
177
  judgeFactDurability,
178
178
  validateProcedureExtraction
179
- } from "./chunk-3DVBKTSO.js";
179
+ } from "./chunk-HSZMX3ZJ.js";
180
180
  import {
181
181
  buildExplicitCueRecallSection
182
182
  } from "./chunk-TVIVY7KU.js";
@@ -184,7 +184,7 @@ import {
184
184
  buildEntityRecallSection,
185
185
  entityRecentTranscriptLookbackHours,
186
186
  readRecentEntityTranscriptEntries
187
- } from "./chunk-AUO2LJ3K.js";
187
+ } from "./chunk-NLEH4RTB.js";
188
188
  import {
189
189
  planEpisodeWindowsWithFallback
190
190
  } from "./chunk-T3GIETKV.js";
@@ -209,14 +209,14 @@ import {
209
209
  } from "./chunk-VY47VI2T.js";
210
210
  import {
211
211
  refreshConvergedNamespaces
212
- } from "./chunk-E4MVQQVX.js";
212
+ } from "./chunk-JPAKBNTM.js";
213
213
  import {
214
214
  builtInConnectorPackageSpecifier,
215
215
  ensureBuiltInWearableConnectors,
216
216
  getWearableConnector,
217
217
  listWearableConnectors,
218
218
  screenCandidateFact
219
- } from "./chunk-7QOO4LGC.js";
219
+ } from "./chunk-3JZBPTLD.js";
220
220
  import {
221
221
  RoutingRulesStore
222
222
  } from "./chunk-TBUEE7XF.js";
@@ -226,14 +226,14 @@ import {
226
226
  import {
227
227
  compareVerifiedEpisodeResults,
228
228
  searchVerifiedEpisodes
229
- } from "./chunk-7KFIMGMP.js";
229
+ } from "./chunk-ECLJ4LA2.js";
230
230
  import {
231
231
  ThreadingManager
232
232
  } from "./chunk-OJP3N7UK.js";
233
233
  import {
234
234
  compareVerifiedSemanticRuleResults,
235
235
  searchVerifiedSemanticRules
236
- } from "./chunk-AYDDB3XI.js";
236
+ } from "./chunk-OCCHUEZB.js";
237
237
  import {
238
238
  searchWorkProductLedgerEntries
239
239
  } from "./chunk-NRLELHAY.js";
@@ -246,13 +246,13 @@ import {
246
246
  import {
247
247
  runNamespaceMaintenanceFanout,
248
248
  summarizeNamespaceMaintenanceHealth
249
- } from "./chunk-OLWTCWQ2.js";
249
+ } from "./chunk-YZJM6CLF.js";
250
250
  import {
251
251
  planNamespaceMaintenance
252
- } from "./chunk-MBDJJTAT.js";
252
+ } from "./chunk-YDKF4MSJ.js";
253
253
  import {
254
254
  searchHarmonicRetrieval
255
- } from "./chunk-QXIQPCCN.js";
255
+ } from "./chunk-UFR6HX7A.js";
256
256
  import {
257
257
  isAboveImportanceThreshold,
258
258
  scoreImportance
@@ -287,7 +287,7 @@ import {
287
287
  materializeAfterSemanticConsolidation,
288
288
  parseConsolidationResponse,
289
289
  parseOperatorAwareConsolidationResponse
290
- } from "./chunk-RK4WXUI2.js";
290
+ } from "./chunk-HF5BUTI6.js";
291
291
  import {
292
292
  BootstrapEngine
293
293
  } from "./chunk-MYVPLJOO.js";
@@ -305,7 +305,7 @@ import {
305
305
  } from "./chunk-6TBIWIAG.js";
306
306
  import {
307
307
  detectMeetings
308
- } from "./chunk-76PL4XLG.js";
308
+ } from "./chunk-DPNXADEI.js";
309
309
  import {
310
310
  compileCorrectionRule,
311
311
  correctionsFilePath,
@@ -330,14 +330,14 @@ import {
330
330
  } from "./chunk-KD3QD3A5.js";
331
331
  import {
332
332
  MeetingsInputError
333
- } from "./chunk-BKYPJUQL.js";
333
+ } from "./chunk-XGM3VQWG.js";
334
334
  import {
335
335
  WearablesInputError,
336
336
  describeErrorForOperator
337
337
  } from "./chunk-V7IZKJI3.js";
338
338
  import {
339
339
  NamespaceCatalog
340
- } from "./chunk-MRTUN665.js";
340
+ } from "./chunk-DUEDOYZD.js";
341
341
  import {
342
342
  recordDreamsPhaseRun
343
343
  } from "./chunk-EQWEIIKQ.js";
@@ -354,7 +354,7 @@ import {
354
354
  filterRecallCandidates,
355
355
  isGenericRecallExcludedPath,
356
356
  isTopLevelArchivePath
357
- } from "./chunk-WN5FSGLE.js";
357
+ } from "./chunk-AZLLH6YA.js";
358
358
  import {
359
359
  importCapsule
360
360
  } from "./chunk-6433HV72.js";
@@ -380,7 +380,7 @@ import {
380
380
  } from "./chunk-ZVZHG7AI.js";
381
381
  import {
382
382
  buildXraySnapshot
383
- } from "./chunk-G57LQRP6.js";
383
+ } from "./chunk-MFOSZUIT.js";
384
384
  import {
385
385
  objectiveStateStoreOverrideForNamespace,
386
386
  searchObjectiveStateSnapshots
@@ -395,9 +395,6 @@ import {
395
395
  import {
396
396
  LocalLlmClient
397
397
  } from "./chunk-IVKIODHO.js";
398
- import {
399
- buildProcedurePersistBody
400
- } from "./chunk-QDW3E4RD.js";
401
398
  import {
402
399
  shouldSkipImplicitExtraction
403
400
  } from "./chunk-7BEPVIH3.js";
@@ -411,7 +408,7 @@ import {
411
408
  } from "./chunk-7ZNJN5WZ.js";
412
409
  import {
413
410
  NamespaceStorageRouter
414
- } from "./chunk-DHTQP334.js";
411
+ } from "./chunk-CQBIN77D.js";
415
412
  import {
416
413
  GraphIndex
417
414
  } from "./chunk-BIJAWZYW.js";
@@ -464,7 +461,7 @@ import {
464
461
  } from "./chunk-CSAKJVXW.js";
465
462
  import {
466
463
  buildChainFollowupGenerator
467
- } from "./chunk-AYYGRVRP.js";
464
+ } from "./chunk-IURMJBGP.js";
468
465
  import {
469
466
  QmdResultResolver,
470
467
  StorageManager,
@@ -483,7 +480,7 @@ import {
483
480
  reconstructFusionInputs,
484
481
  selfDeps,
485
482
  serializeFusionDay
486
- } from "./chunk-PAYGC3BD.js";
483
+ } from "./chunk-THVI4Y7X.js";
487
484
  import {
488
485
  bodyIsEscaped,
489
486
  decodeTranscriptBody,
@@ -519,7 +516,7 @@ import {
519
516
  } from "./chunk-S2V7RUCL.js";
520
517
  import {
521
518
  confidenceTier
522
- } from "./chunk-NXKJHSDN.js";
519
+ } from "./chunk-LBFFNDFM.js";
523
520
  import {
524
521
  lintWorkspaceFiles,
525
522
  rotateMarkdownFileToArchive
@@ -587,6 +584,9 @@ import {
587
584
  import {
588
585
  assertExternalWikiRootOutsideMemoryDirCanonical
589
586
  } from "./chunk-JV3C2MNQ.js";
587
+ import {
588
+ buildProcedurePersistBody
589
+ } from "./chunk-QDW3E4RD.js";
590
590
  import {
591
591
  searchCausalTrajectories
592
592
  } from "./chunk-PP7R754B.js";
@@ -650,13 +650,13 @@ import {
650
650
  excludeSupportPassportPrivateMemories,
651
651
  isSupportPassportPrivateMemory
652
652
  } from "./chunk-XDL5CYZN.js";
653
+ import {
654
+ ContentHashIndex
655
+ } from "./chunk-JOEJG4SD.js";
653
656
  import {
654
657
  normalizeAttributePairs,
655
658
  stripAttributesSuffix
656
659
  } from "./chunk-JDSVLVCG.js";
657
- import {
658
- ContentHashIndex
659
- } from "./chunk-JOEJG4SD.js";
660
660
  import {
661
661
  sanitizeMemoryContent
662
662
  } from "./chunk-5GKPFL3S.js";
@@ -15652,7 +15652,7 @@ var OrchestratorInitCoordinator = class {
15652
15652
  if (signal.aborted) return;
15653
15653
  if (!this.deps.wearablesAutoSyncHandle && this.deps.config.wearables.enabled && this.deps.config.wearables.autoSyncEnabled && Object.values(this.deps.config.wearables.sources).some((source) => source.enabled)) {
15654
15654
  try {
15655
- const { startWearablesAutoSync } = await import("./auto-sync-H64ZCNIR.js");
15655
+ const { startWearablesAutoSync } = await import("./auto-sync-XVMLL2RH.js");
15656
15656
  if (signal.aborted) return;
15657
15657
  this.deps.wearablesAutoSyncHandle = startWearablesAutoSync(
15658
15658
  {
@@ -27190,4 +27190,4 @@ export {
27190
27190
  blendGraphExpandedRecallScore,
27191
27191
  Orchestrator
27192
27192
  };
27193
- //# sourceMappingURL=chunk-H5FW4S5Q.js.map
27193
+ //# sourceMappingURL=chunk-ZPOHEB5Z.js.map
@@ -1,6 +1,16 @@
1
1
  import {
2
2
  estimateTokenCount
3
3
  } from "./chunk-TOTT6S2V.js";
4
+ import {
5
+ SKILL_FILE_NAME,
6
+ renderSkillBundle
7
+ } from "./chunk-236PXYG7.js";
8
+ import {
9
+ isValidSkillSlug
10
+ } from "./chunk-ZCUTSMR2.js";
11
+ import {
12
+ pathIsInside
13
+ } from "./chunk-GCASGYIO.js";
4
14
  import {
5
15
  expandTildePath
6
16
  } from "./chunk-EYIEWJNI.js";
@@ -16,8 +26,105 @@ import {
16
26
  import {
17
27
  createHash
18
28
  } from "crypto";
29
+ import fs3 from "fs";
30
+ import path3 from "path";
31
+
32
+ // src/connectors/materialize-paths.ts
19
33
  import fs from "fs";
20
34
  import path from "path";
35
+ function ensureSafeManagedSubdir(memoriesDir, subdir, label) {
36
+ const memoriesReal = fs.realpathSync(memoriesDir);
37
+ try {
38
+ const stat = fs.lstatSync(subdir);
39
+ if (stat.isSymbolicLink()) {
40
+ throw new Error("is a symbolic link");
41
+ }
42
+ if (!stat.isDirectory()) {
43
+ throw new Error("is not a directory");
44
+ }
45
+ } catch (err) {
46
+ if (err.code !== "ENOENT") {
47
+ throw new Error(
48
+ `codex-materialize: unsafe ${label} directory at ${subdir}: ${err instanceof Error ? err.message : String(err)}`
49
+ );
50
+ }
51
+ fs.mkdirSync(subdir, { recursive: true });
52
+ }
53
+ const subdirReal = fs.realpathSync(subdir);
54
+ if (!pathIsInside(memoriesReal, subdirReal)) {
55
+ throw new Error(
56
+ `codex-materialize: unsafe ${label} directory at ${subdir}: resolves outside ${memoriesDir}`
57
+ );
58
+ }
59
+ return path.normalize(subdir);
60
+ }
61
+
62
+ // src/connectors/materialize-skills.ts
63
+ import fs2 from "fs";
64
+ import path2 from "path";
65
+ var SKILLS_SUBDIR = "skills";
66
+ function planSkillFiles(bundles, previouslyProjectedSlugs) {
67
+ const files = [];
68
+ const seen = /* @__PURE__ */ new Set();
69
+ for (const bundle of bundles ?? []) {
70
+ if (!isValidSkillSlug(bundle.slug) || seen.has(bundle.slug)) continue;
71
+ seen.add(bundle.slug);
72
+ files.push({ slug: bundle.slug, body: renderSkillBundle(bundle) });
73
+ }
74
+ const previous = previouslyProjectedSlugs.filter((slug) => isValidSkillSlug(slug));
75
+ return {
76
+ supplied: bundles !== void 0,
77
+ files,
78
+ retiredSlugs: bundles === void 0 ? [] : previous.filter((slug) => !seen.has(slug))
79
+ };
80
+ }
81
+ function skillFilePath(memoriesDir, slug) {
82
+ return path2.join(memoriesDir, SKILLS_SUBDIR, slug, SKILL_FILE_NAME);
83
+ }
84
+ function skillFileRelPath(slug) {
85
+ return path2.join(SKILLS_SUBDIR, slug, SKILL_FILE_NAME);
86
+ }
87
+ function retiredSkillsAlreadyRemoved(memoriesDir, retiredSlugs) {
88
+ return retiredSlugs.every((slug) => !fs2.existsSync(path2.join(memoriesDir, SKILLS_SUBDIR, slug)));
89
+ }
90
+ function stageSkillFiles(tmpDir, files) {
91
+ for (const file of files) {
92
+ const stagedDir = path2.join(tmpDir, SKILLS_SUBDIR, file.slug);
93
+ fs2.mkdirSync(stagedDir, { recursive: true });
94
+ fs2.writeFileSync(path2.join(stagedDir, SKILL_FILE_NAME), file.body);
95
+ }
96
+ }
97
+ function commitSkillFiles(memoriesDir, tmpDir, plan) {
98
+ if (!plan.supplied) return;
99
+ if (plan.files.length === 0 && plan.retiredSlugs.length === 0) return;
100
+ const skillsDir = ensureSafeManagedSubdir(memoriesDir, path2.join(memoriesDir, SKILLS_SUBDIR), SKILLS_SUBDIR);
101
+ for (const slug of plan.retiredSlugs) {
102
+ const retiredDir = path2.join(skillsDir, slug);
103
+ try {
104
+ if (fs2.lstatSync(retiredDir).isSymbolicLink()) continue;
105
+ } catch (err) {
106
+ if (err.code === "ENOENT") continue;
107
+ throw err;
108
+ }
109
+ try {
110
+ fs2.rmSync(retiredDir, { recursive: true, force: true });
111
+ } catch (err) {
112
+ throw new Error(
113
+ `codex-materialize: failed to remove retired skill ${slug}: ${err instanceof Error ? err.message : String(err)}`
114
+ );
115
+ }
116
+ }
117
+ for (const file of plan.files) {
118
+ const destDir = path2.join(skillsDir, file.slug);
119
+ fs2.mkdirSync(destDir, { recursive: true });
120
+ fs2.renameSync(
121
+ path2.join(tmpDir, SKILLS_SUBDIR, file.slug, SKILL_FILE_NAME),
122
+ path2.join(destDir, SKILL_FILE_NAME)
123
+ );
124
+ }
125
+ }
126
+
127
+ // src/connectors/codex-materialize.ts
21
128
  var MATERIALIZE_VERSION = 1;
22
129
  var SENTINEL_FILE = ".remnic-managed";
23
130
  var TMP_DIR = ".remnic-tmp";
@@ -37,10 +144,10 @@ function materializeForNamespace(namespace, options) {
37
144
  const now = options.now ?? /* @__PURE__ */ new Date();
38
145
  const maxSummaryTokens = typeof options.maxSummaryTokens === "number" && options.maxSummaryTokens >= 0 ? options.maxSummaryTokens : 4500;
39
146
  const rolloutRetentionDays = typeof options.rolloutRetentionDays === "number" && options.rolloutRetentionDays >= 0 ? options.rolloutRetentionDays : 30;
40
- const sentinelPath = path.join(memoriesDir, SENTINEL_FILE);
147
+ const sentinelPath = path3.join(memoriesDir, SENTINEL_FILE);
41
148
  const existingSentinel = readSentinel(sentinelPath);
42
149
  if (!existingSentinel) {
43
- if (fs.existsSync(memoriesDir)) {
150
+ if (fs3.existsSync(memoriesDir)) {
44
151
  logger.warn(
45
152
  `sentinel ${SENTINEL_FILE} missing in ${memoriesDir}; skipping materialization to preserve hand-edits`
46
153
  );
@@ -59,7 +166,7 @@ function materializeForNamespace(namespace, options) {
59
166
  contentHash: ""
60
167
  };
61
168
  }
62
- fs.mkdirSync(memoriesDir, { recursive: true });
169
+ fs3.mkdirSync(memoriesDir, { recursive: true });
63
170
  const memories = [...options.memories];
64
171
  const rolloutsSupplied = options.rolloutSummaries !== void 0;
65
172
  const rolloutSummaries = options.rolloutSummaries ?? [];
@@ -106,28 +213,32 @@ function materializeForNamespace(namespace, options) {
106
213
  name: `${sanitizeSlug(r.slug)}.md`,
107
214
  body: renderRolloutSummary(r)
108
215
  }));
109
- const destRolloutsDir = path.join(memoriesDir, ROLLOUT_SUBDIR);
216
+ const destRolloutsDir = path3.join(memoriesDir, ROLLOUT_SUBDIR);
110
217
  const retainedRolloutNames = new Set(rolloutFiles.map((r) => r.name));
218
+ const skillPlan = planSkillFiles(options.skills, existingSentinel.projected_skills ?? []);
111
219
  const hash = computeContentHash({
112
220
  namespace,
113
221
  memorySummary,
114
222
  memoryMd,
115
223
  rawMemories,
116
- rolloutFiles
224
+ rolloutFiles,
225
+ skillFiles: skillPlan.files
117
226
  });
118
227
  if (existingSentinel.content_hash === hash) {
119
228
  const requiredFiles = [
120
- path.join(memoriesDir, "memory_summary.md"),
121
- path.join(memoriesDir, "MEMORY.md"),
122
- path.join(memoriesDir, "raw_memories.md"),
123
- ...rolloutFiles.map((r) => path.join(memoriesDir, ROLLOUT_SUBDIR, r.name))
229
+ path3.join(memoriesDir, "memory_summary.md"),
230
+ path3.join(memoriesDir, "MEMORY.md"),
231
+ path3.join(memoriesDir, "raw_memories.md"),
232
+ ...rolloutFiles.map((r) => path3.join(memoriesDir, ROLLOUT_SUBDIR, r.name)),
233
+ ...skillPlan.files.map((s) => skillFilePath(memoriesDir, s.slug))
124
234
  ];
125
- const allPresent = requiredFiles.every((f) => fs.existsSync(f));
235
+ const allPresent = requiredFiles.every((f) => fs3.existsSync(f));
126
236
  const rolloutsClean = !rolloutsSupplied || rolloutDirectoryMatchesRetainedSet(
127
- ensureSafeRolloutsDir(memoriesDir, destRolloutsDir),
237
+ ensureSafeManagedSubdir(memoriesDir, destRolloutsDir, ROLLOUT_SUBDIR),
128
238
  retainedRolloutNames
129
239
  );
130
- if (allPresent && rolloutsClean) {
240
+ const skillsClean = retiredSkillsAlreadyRemoved(memoriesDir, skillPlan.retiredSlugs);
241
+ if (allPresent && rolloutsClean && skillsClean) {
131
242
  logger.debug?.(`no-op materialization for namespace=${namespace} (hash unchanged)`);
132
243
  return {
133
244
  namespace,
@@ -144,46 +255,50 @@ function materializeForNamespace(namespace, options) {
144
255
  );
145
256
  }
146
257
  const runTag = `${process.pid}-${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 10)}`;
147
- const tmpDir = path.join(memoriesDir, `${TMP_DIR}-${runTag}`);
258
+ const tmpDir = path3.join(memoriesDir, `${TMP_DIR}-${runTag}`);
148
259
  const TMP_STALE_MS = 60 * 60 * 1e3;
149
260
  const wallClockMs = Date.now();
150
261
  try {
151
- for (const entry of fs.readdirSync(memoriesDir, { withFileTypes: true })) {
262
+ for (const entry of fs3.readdirSync(memoriesDir, { withFileTypes: true })) {
152
263
  if (!entry.isDirectory()) continue;
153
264
  if (!entry.name.startsWith(TMP_DIR)) continue;
154
- const stalePath = path.join(memoriesDir, entry.name);
265
+ const stalePath = path3.join(memoriesDir, entry.name);
155
266
  try {
156
- const stat = fs.statSync(stalePath);
267
+ const stat = fs3.statSync(stalePath);
157
268
  if (wallClockMs - stat.mtimeMs < TMP_STALE_MS) continue;
158
- fs.rmSync(stalePath, { recursive: true, force: true });
269
+ fs3.rmSync(stalePath, { recursive: true, force: true });
159
270
  } catch {
160
271
  }
161
272
  }
162
273
  } catch {
163
274
  }
164
- fs.mkdirSync(tmpDir, { recursive: true });
165
- fs.mkdirSync(path.join(tmpDir, ROLLOUT_SUBDIR), { recursive: true });
275
+ fs3.mkdirSync(tmpDir, { recursive: true });
276
+ fs3.mkdirSync(path3.join(tmpDir, ROLLOUT_SUBDIR), { recursive: true });
166
277
  const filesWritten = [];
167
- fs.writeFileSync(path.join(tmpDir, "memory_summary.md"), memorySummary);
278
+ fs3.writeFileSync(path3.join(tmpDir, "memory_summary.md"), memorySummary);
168
279
  filesWritten.push("memory_summary.md");
169
- fs.writeFileSync(path.join(tmpDir, "MEMORY.md"), memoryMd);
280
+ fs3.writeFileSync(path3.join(tmpDir, "MEMORY.md"), memoryMd);
170
281
  filesWritten.push("MEMORY.md");
171
- fs.writeFileSync(path.join(tmpDir, "raw_memories.md"), rawMemories);
282
+ fs3.writeFileSync(path3.join(tmpDir, "raw_memories.md"), rawMemories);
172
283
  filesWritten.push("raw_memories.md");
173
284
  for (const rollout of rolloutFiles) {
174
- fs.writeFileSync(path.join(tmpDir, ROLLOUT_SUBDIR, rollout.name), rollout.body);
175
- filesWritten.push(path.join(ROLLOUT_SUBDIR, rollout.name));
285
+ fs3.writeFileSync(path3.join(tmpDir, ROLLOUT_SUBDIR, rollout.name), rollout.body);
286
+ filesWritten.push(path3.join(ROLLOUT_SUBDIR, rollout.name));
287
+ }
288
+ stageSkillFiles(tmpDir, skillPlan.files);
289
+ for (const skill of skillPlan.files) {
290
+ filesWritten.push(skillFileRelPath(skill.slug));
176
291
  }
177
292
  for (const rel of ["memory_summary.md", "MEMORY.md", "raw_memories.md"]) {
178
- const src = path.join(tmpDir, rel);
179
- const dest = path.join(memoriesDir, rel);
180
- fs.renameSync(src, dest);
293
+ const src = path3.join(tmpDir, rel);
294
+ const dest = path3.join(memoriesDir, rel);
295
+ fs3.renameSync(src, dest);
181
296
  }
182
- const safeDestRolloutsDir = ensureSafeRolloutsDir(memoriesDir, destRolloutsDir);
297
+ const safeDestRolloutsDir = ensureSafeManagedSubdir(memoriesDir, destRolloutsDir, ROLLOUT_SUBDIR);
183
298
  if (rolloutsSupplied) {
184
299
  let existingRollouts;
185
300
  try {
186
- existingRollouts = fs.readdirSync(safeDestRolloutsDir, { withFileTypes: true });
301
+ existingRollouts = fs3.readdirSync(safeDestRolloutsDir, { withFileTypes: true });
187
302
  } catch (err) {
188
303
  if (err.code !== "ENOENT") throw err;
189
304
  existingRollouts = [];
@@ -193,7 +308,7 @@ function materializeForNamespace(namespace, options) {
193
308
  if (!entry.name.endsWith(".md")) continue;
194
309
  if (retainedRolloutNames.has(entry.name)) continue;
195
310
  try {
196
- fs.unlinkSync(path.join(safeDestRolloutsDir, entry.name));
311
+ fs3.unlinkSync(path3.join(safeDestRolloutsDir, entry.name));
197
312
  } catch (err) {
198
313
  throw new Error(
199
314
  `codex-materialize: failed to prune stale rollout summary ${entry.name}: ${err instanceof Error ? err.message : String(err)}`
@@ -202,19 +317,21 @@ function materializeForNamespace(namespace, options) {
202
317
  }
203
318
  }
204
319
  for (const rollout of rolloutFiles) {
205
- const src = path.join(tmpDir, ROLLOUT_SUBDIR, rollout.name);
206
- const dest = path.join(safeDestRolloutsDir, rollout.name);
207
- fs.renameSync(src, dest);
320
+ const src = path3.join(tmpDir, ROLLOUT_SUBDIR, rollout.name);
321
+ const dest = path3.join(safeDestRolloutsDir, rollout.name);
322
+ fs3.renameSync(src, dest);
208
323
  }
324
+ commitSkillFiles(memoriesDir, tmpDir, skillPlan);
209
325
  const sentinel = {
210
326
  version: MATERIALIZE_VERSION,
211
327
  namespace,
212
328
  updated_at: now.toISOString(),
213
- content_hash: hash
329
+ content_hash: hash,
330
+ projected_skills: skillPlan.supplied ? skillPlan.files.map((s) => s.slug) : existingSentinel.projected_skills ?? []
214
331
  };
215
332
  writeSentinelAtomically(sentinelPath, sentinel);
216
333
  try {
217
- fs.rmSync(tmpDir, { recursive: true, force: true });
334
+ fs3.rmSync(tmpDir, { recursive: true, force: true });
218
335
  } catch {
219
336
  }
220
337
  logger.info(
@@ -231,9 +348,9 @@ function materializeForNamespace(namespace, options) {
231
348
  };
232
349
  }
233
350
  function ensureSentinel(memoriesDir, namespace, now = /* @__PURE__ */ new Date()) {
234
- fs.mkdirSync(memoriesDir, { recursive: true });
235
- const sentinelPath = path.join(memoriesDir, SENTINEL_FILE);
236
- if (fs.existsSync(sentinelPath)) {
351
+ fs3.mkdirSync(memoriesDir, { recursive: true });
352
+ const sentinelPath = path3.join(memoriesDir, SENTINEL_FILE);
353
+ if (fs3.existsSync(sentinelPath)) {
237
354
  readSentinel(sentinelPath);
238
355
  return;
239
356
  }
@@ -444,24 +561,24 @@ function validateMemoryMd(content) {
444
561
  }
445
562
  function resolveCodexHome(override) {
446
563
  if (override && override.trim().length > 0) {
447
- return path.resolve(expandTildePath(override.trim()));
564
+ return path3.resolve(expandTildePath(override.trim()));
448
565
  }
449
566
  const fromEnv = readEnvVar("CODEX_HOME");
450
567
  if (fromEnv && fromEnv.trim().length > 0) {
451
- return path.resolve(expandTildePath(fromEnv.trim()));
568
+ return path3.resolve(expandTildePath(fromEnv.trim()));
452
569
  }
453
- return path.resolve(resolveHomeDir(), ".codex");
570
+ return path3.resolve(resolveHomeDir(), ".codex");
454
571
  }
455
572
  function resolveCodexMemoriesDir(codexHome) {
456
- return path.join(resolveCodexHome(codexHome), "memories");
573
+ return path3.join(resolveCodexHome(codexHome), "memories");
457
574
  }
458
575
  function hasCodexMaterializeSentinel(codexHome) {
459
- return readSentinel(path.join(resolveCodexMemoriesDir(codexHome), SENTINEL_FILE)) !== null;
576
+ return readSentinel(path3.join(resolveCodexMemoriesDir(codexHome), SENTINEL_FILE)) !== null;
460
577
  }
461
578
  function rolloutDirectoryMatchesRetainedSet(rolloutsDir, retainedNames) {
462
579
  let entries;
463
580
  try {
464
- entries = fs.readdirSync(rolloutsDir, { withFileTypes: true });
581
+ entries = fs3.readdirSync(rolloutsDir, { withFileTypes: true });
465
582
  } catch {
466
583
  return retainedNames.size === 0;
467
584
  }
@@ -472,49 +589,21 @@ function rolloutDirectoryMatchesRetainedSet(rolloutsDir, retainedNames) {
472
589
  }
473
590
  return true;
474
591
  }
475
- function isPathInside(parent, child) {
476
- const relative = path.relative(parent, child);
477
- return relative === "" || !relative.startsWith("..") && !path.isAbsolute(relative);
478
- }
479
- function ensureSafeRolloutsDir(memoriesDir, rolloutsDir) {
480
- const memoriesReal = fs.realpathSync(memoriesDir);
481
- try {
482
- const stat = fs.lstatSync(rolloutsDir);
483
- if (stat.isSymbolicLink()) {
484
- throw new Error("is a symbolic link");
485
- }
486
- if (!stat.isDirectory()) {
487
- throw new Error("is not a directory");
488
- }
489
- } catch (err) {
490
- if (err.code !== "ENOENT") {
491
- throw new Error(
492
- `codex-materialize: unsafe ${ROLLOUT_SUBDIR} directory at ${rolloutsDir}: ${err instanceof Error ? err.message : String(err)}`
493
- );
494
- }
495
- fs.mkdirSync(rolloutsDir, { recursive: true });
496
- }
497
- const rolloutsReal = fs.realpathSync(rolloutsDir);
498
- if (!isPathInside(memoriesReal, rolloutsReal)) {
499
- throw new Error(
500
- `codex-materialize: unsafe ${ROLLOUT_SUBDIR} directory at ${rolloutsDir}: resolves outside ${memoriesDir}`
501
- );
502
- }
503
- return rolloutsDir;
504
- }
505
592
  function readSentinel(sentinelPath) {
506
- if (!fs.existsSync(sentinelPath)) return null;
593
+ if (!fs3.existsSync(sentinelPath)) return null;
507
594
  try {
508
- const raw = fs.readFileSync(sentinelPath, "utf-8");
595
+ const raw = fs3.readFileSync(sentinelPath, "utf-8");
509
596
  const parsed = JSON.parse(raw);
510
597
  if (typeof parsed !== "object" || parsed === null || typeof parsed.version !== "number" || typeof parsed.namespace !== "string" || typeof parsed.updated_at !== "string" || typeof parsed.content_hash !== "string") {
511
598
  throw new Error("invalid sentinel schema");
512
599
  }
600
+ const projected = Array.isArray(parsed.projected_skills) ? parsed.projected_skills.filter((slug) => typeof slug === "string") : [];
513
601
  return {
514
602
  version: parsed.version,
515
603
  namespace: parsed.namespace,
516
604
  updated_at: parsed.updated_at,
517
- content_hash: parsed.content_hash
605
+ content_hash: parsed.content_hash,
606
+ projected_skills: projected
518
607
  };
519
608
  } catch (err) {
520
609
  throw new Error(
@@ -525,14 +614,14 @@ function readSentinel(sentinelPath) {
525
614
  function writeSentinelAtomically(sentinelPath, sentinel) {
526
615
  const tmpPath = `${sentinelPath}.${process.pid}.${Date.now()}.${Math.random().toString(16).slice(2)}.tmp`;
527
616
  try {
528
- fs.writeFileSync(tmpPath, `${JSON.stringify(sentinel, null, 2)}
617
+ fs3.writeFileSync(tmpPath, `${JSON.stringify(sentinel, null, 2)}
529
618
  `, {
530
619
  flag: "wx"
531
620
  });
532
- fs.renameSync(tmpPath, sentinelPath);
621
+ fs3.renameSync(tmpPath, sentinelPath);
533
622
  } catch (err) {
534
623
  try {
535
- fs.rmSync(tmpPath, { force: true });
624
+ fs3.rmSync(tmpPath, { force: true });
536
625
  } catch {
537
626
  }
538
627
  throw err;
@@ -658,22 +747,29 @@ function computeContentHash(input) {
658
747
  `);
659
748
  hash.update(r.body);
660
749
  }
750
+ const sortedSkills = [...input.skillFiles].sort((a, b) => a.slug < b.slug ? -1 : a.slug > b.slug ? 1 : 0);
751
+ for (const s of sortedSkills) {
752
+ hash.update(`
753
+ ---skill:${s.slug}---
754
+ `);
755
+ hash.update(s.body);
756
+ }
661
757
  return hash.digest("hex");
662
758
  }
663
759
  function describeMemoriesDir(memoriesDir) {
664
- if (!fs.existsSync(memoriesDir)) return null;
665
- const sentinelPath = path.join(memoriesDir, SENTINEL_FILE);
760
+ if (!fs3.existsSync(memoriesDir)) return null;
761
+ const sentinelPath = path3.join(memoriesDir, SENTINEL_FILE);
666
762
  const sentinel = readSentinel(sentinelPath);
667
763
  const files = [];
668
- for (const entry of fs.readdirSync(memoriesDir, { withFileTypes: true })) {
764
+ for (const entry of fs3.readdirSync(memoriesDir, { withFileTypes: true })) {
669
765
  if (entry.isFile() && OWNED_FILES.has(entry.name)) files.push(entry.name);
670
766
  }
671
- const rolloutsDir = path.join(memoriesDir, ROLLOUT_SUBDIR);
672
- if (fs.existsSync(rolloutsDir)) {
767
+ const rolloutsDir = path3.join(memoriesDir, ROLLOUT_SUBDIR);
768
+ if (fs3.existsSync(rolloutsDir)) {
673
769
  try {
674
- for (const entry of fs.readdirSync(rolloutsDir, { withFileTypes: true })) {
770
+ for (const entry of fs3.readdirSync(rolloutsDir, { withFileTypes: true })) {
675
771
  if (entry.isFile() && entry.name.endsWith(".md")) {
676
- files.push(path.join(ROLLOUT_SUBDIR, entry.name));
772
+ files.push(path3.join(ROLLOUT_SUBDIR, entry.name));
677
773
  }
678
774
  }
679
775
  } catch {
@@ -704,4 +800,4 @@ export {
704
800
  truncateToTokenBudget,
705
801
  describeMemoriesDir
706
802
  };
707
- //# sourceMappingURL=chunk-RDFF2NAU.js.map
803
+ //# sourceMappingURL=chunk-ZXBTTMGZ.js.map