@remnic/core 9.3.770 → 9.4.0

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 (316) hide show
  1. package/dist/access-admin-ops-surface.js +35 -35
  2. package/dist/access-boundary.js +36 -36
  3. package/dist/access-cli.js +109 -108
  4. package/dist/access-cli.js.map +1 -1
  5. package/dist/access-http.js +47 -46
  6. package/dist/access-identity-continuity-surface.js +35 -35
  7. package/dist/access-lcm-surface.js +35 -35
  8. package/dist/access-mcp-output-schemas.d.ts +20 -0
  9. package/dist/access-mcp-output-schemas.js +8 -0
  10. package/dist/access-mcp.js +44 -43
  11. package/dist/access-observe-write-surface.js +35 -35
  12. package/dist/access-operations-batch.js +40 -40
  13. package/dist/access-operations.d.ts +4 -4
  14. package/dist/access-operations.js +42 -42
  15. package/dist/access-recall-surface.js +35 -35
  16. package/dist/access-schema.d.ts +68 -68
  17. package/dist/access-schema.js +3 -3
  18. package/dist/access-service.js +35 -35
  19. package/dist/active-recall.js +2 -2
  20. package/dist/adapters/index.js +4 -4
  21. package/dist/adapters/registry.js +2 -2
  22. package/dist/{auto-sync-2SOUW4JW.js → auto-sync-M47VTCFI.js} +7 -7
  23. package/dist/bootstrap.js +2 -2
  24. package/dist/boxes.js +2 -2
  25. package/dist/briefing.js +10 -10
  26. package/dist/buffer.js +2 -2
  27. package/dist/calibration.js +4 -4
  28. package/dist/causal-behavior.js +4 -4
  29. package/dist/causal-chain.js +4 -4
  30. package/dist/causal-consolidation.js +15 -15
  31. package/dist/causal-retrieval.js +4 -4
  32. package/dist/causal-trajectory-graph.js +1 -1
  33. package/dist/causal-trajectory.js +1 -1
  34. package/dist/{chunk-7FL4CNPV.js → chunk-2A3OXAP2.js} +2 -2
  35. package/dist/{chunk-GG6AJN7A.js → chunk-2IZAGAJR.js} +2 -2
  36. package/dist/{chunk-ZG4FT6IT.js → chunk-2TCZE3C2.js} +3 -3
  37. package/dist/chunk-37CTGERM.js +62 -0
  38. package/dist/chunk-37CTGERM.js.map +1 -0
  39. package/dist/{chunk-KYYL4U6X.js → chunk-42BBIR33.js} +2 -2
  40. package/dist/{chunk-DQC3ZZYM.js → chunk-4KJLYTLS.js} +2 -2
  41. package/dist/{chunk-7OSULYN2.js → chunk-4NMATTXV.js} +2 -2
  42. package/dist/{chunk-GY3SKOS4.js → chunk-5EZXHU36.js} +2 -2
  43. package/dist/{chunk-IOENSSZC.js → chunk-5H56JAHW.js} +4 -4
  44. package/dist/{chunk-K2I3AWBR.js → chunk-5K5VEDFY.js} +2 -2
  45. package/dist/chunk-5RUE3GHQ.js +445 -0
  46. package/dist/chunk-5RUE3GHQ.js.map +1 -0
  47. package/dist/{chunk-IBAU2RZN.js → chunk-64ZYXSCO.js} +2 -2
  48. package/dist/{chunk-2MR3MFQB.js → chunk-6Y4JTNX7.js} +2 -2
  49. package/dist/{chunk-XG4NBBRW.js → chunk-7BAJAXGB.js} +2 -2
  50. package/dist/{chunk-L24JROPR.js → chunk-7WSLR2CU.js} +2 -2
  51. package/dist/{chunk-EXM3CQTZ.js → chunk-A3GOMRJG.js} +2 -2
  52. package/dist/{chunk-KFIAFHOC.js → chunk-ABGDGBDT.js} +2 -2
  53. package/dist/{chunk-3JOFWTQD.js → chunk-APMGGGTY.js} +3 -3
  54. package/dist/{chunk-JBPKEARU.js → chunk-AU7Q3LSC.js} +4 -4
  55. package/dist/{chunk-XHYGJVXL.js → chunk-AXTXN4T6.js} +2 -2
  56. package/dist/{chunk-5QANTTY2.js → chunk-BRDJ2HFP.js} +2 -2
  57. package/dist/{chunk-QMN3CIFS.js → chunk-CGS7UKWM.js} +2 -2
  58. package/dist/{chunk-KYC3RLYJ.js → chunk-CXLNZXG5.js} +1 -1
  59. package/dist/{chunk-3O3BZNSH.js → chunk-CZGIIADK.js} +10 -10
  60. package/dist/{chunk-QRDOSYOR.js → chunk-DBRYEIGY.js} +2 -2
  61. package/dist/{chunk-UC4YOAC2.js → chunk-E5BK6CGV.js} +2 -2
  62. package/dist/{chunk-TKZ3AL5V.js → chunk-EHK6KZHK.js} +2 -2
  63. package/dist/{chunk-JZ7P26GF.js → chunk-F53UF7CI.js} +2 -2
  64. package/dist/{chunk-SJHM6I4J.js → chunk-FC77VUX5.js} +2 -2
  65. package/dist/{chunk-DKTSR7EK.js → chunk-FDPZVY6D.js} +2 -2
  66. package/dist/{chunk-CSHUSYUM.js → chunk-FT37KV7R.js} +2 -2
  67. package/dist/{chunk-MLDAD27I.js → chunk-FWPHPN3V.js} +8 -8
  68. package/dist/{chunk-SRSPVFSJ.js → chunk-G47FEGGK.js} +4 -4
  69. package/dist/{chunk-OP43P53G.js → chunk-GEVIE5NV.js} +163 -73
  70. package/dist/chunk-GEVIE5NV.js.map +1 -0
  71. package/dist/{chunk-52TEPNL7.js → chunk-H25TAODC.js} +7 -7
  72. package/dist/{chunk-5ACKQLGA.js → chunk-H2EJNV2Z.js} +3 -3
  73. package/dist/{chunk-XDRJQMYL.js → chunk-H5IT5JL7.js} +2 -2
  74. package/dist/{chunk-TQT3USCG.js → chunk-HG32URJJ.js} +2 -2
  75. package/dist/{chunk-ZQNCHPTZ.js → chunk-HLTAPHZZ.js} +2 -2
  76. package/dist/{chunk-LOPZ2DWR.js → chunk-I73G4UH7.js} +2 -2
  77. package/dist/{chunk-EWGMA5W5.js → chunk-IGF4DII6.js} +20 -20
  78. package/dist/{chunk-DCWIQFNA.js → chunk-JI5AVXYO.js} +4 -4
  79. package/dist/{chunk-VUA4S7P6.js → chunk-JIKJPDQJ.js} +4 -4
  80. package/dist/{chunk-VQ34TERH.js → chunk-JZHHREBL.js} +2 -2
  81. package/dist/{chunk-IQVQJJL7.js → chunk-K2ZLHESQ.js} +2 -2
  82. package/dist/{chunk-PWFWCGOO.js → chunk-KAWTOYAW.js} +2 -2
  83. package/dist/{chunk-DJECGBBM.js → chunk-KQDNAXOM.js} +2 -2
  84. package/dist/{chunk-WIWPSQYU.js → chunk-KQPJLK3X.js} +2 -2
  85. package/dist/{chunk-QKUWPSU3.js → chunk-KS4PRHRD.js} +2 -2
  86. package/dist/{chunk-DMKMQTBH.js → chunk-L4UZBJNM.js} +2 -2
  87. package/dist/{chunk-IQ7WCZRW.js → chunk-LLMZK53N.js} +2 -2
  88. package/dist/{chunk-YTU7WKYN.js → chunk-MNUHL34L.js} +3 -3
  89. package/dist/{chunk-ZCWIH4LH.js → chunk-MRHFJV44.js} +2 -2
  90. package/dist/{chunk-W4H5A3TJ.js → chunk-MTR7BZQN.js} +3 -3
  91. package/dist/{chunk-PNLCEFE4.js → chunk-MTWKDOVO.js} +2 -2
  92. package/dist/{chunk-3YYWUHA7.js → chunk-MWH5MAFP.js} +5 -5
  93. package/dist/{chunk-OSMBC3JU.js → chunk-O2EL7EGG.js} +2 -2
  94. package/dist/{chunk-HW5EF6LV.js → chunk-O7BBFJLP.js} +2 -2
  95. package/dist/{chunk-EHQ5HO5T.js → chunk-OBMR4VIX.js} +1 -1
  96. package/dist/{chunk-WRBDUNSW.js → chunk-OH6BKCPB.js} +3 -3
  97. package/dist/{chunk-6SHAUM5S.js → chunk-OUMTBFSQ.js} +4 -4
  98. package/dist/{chunk-FLVL4L3L.js → chunk-OUXPVWTZ.js} +5 -5
  99. package/dist/{chunk-EEKDRAWX.js → chunk-PRTA6444.js} +2 -2
  100. package/dist/{chunk-WB4CFKZ4.js → chunk-QGS7Z7YU.js} +2 -2
  101. package/dist/{chunk-T4AWNIXJ.js → chunk-QICQ35K5.js} +2 -2
  102. package/dist/{chunk-UUH4YQOF.js → chunk-QLULYKWZ.js} +2 -2
  103. package/dist/{chunk-DBSMLRTO.js → chunk-QT2RZNRT.js} +2 -2
  104. package/dist/{chunk-HM6UJPPO.js → chunk-QWGNDWKB.js} +2 -2
  105. package/dist/{chunk-KCQA46NR.js → chunk-R5VAVVHP.js} +2 -2
  106. package/dist/{chunk-MYNRJGOY.js → chunk-RBGL4MKQ.js} +2 -2
  107. package/dist/{chunk-O7GOFAM3.js → chunk-RP7YXA67.js} +2 -2
  108. package/dist/{chunk-BVKCV2ZY.js → chunk-SMX5267P.js} +2 -2
  109. package/dist/{chunk-U72WWTLR.js → chunk-TH2KIPP7.js} +4 -4
  110. package/dist/{chunk-PSNMICC2.js → chunk-TKUQSXU4.js} +10 -10
  111. package/dist/{chunk-XBZQRZ6G.js → chunk-TN7THW5U.js} +2 -2
  112. package/dist/{chunk-O5EKTMOJ.js → chunk-UAOZJX5J.js} +16 -16
  113. package/dist/{chunk-JRZV3767.js → chunk-UI4FVU6T.js} +2 -2
  114. package/dist/{chunk-E6LXM2GE.js → chunk-UQI2NHTY.js} +55 -55
  115. package/dist/{chunk-W7VA5667.js → chunk-UQMCR5RW.js} +3 -3
  116. package/dist/{chunk-VGUOEDTU.js → chunk-V3UE5I5F.js} +2 -2
  117. package/dist/{chunk-STN5KMSS.js → chunk-VBBMTSOV.js} +7 -7
  118. package/dist/{chunk-5QJZLJ7Q.js → chunk-VBVSN2TV.js} +3 -3
  119. package/dist/{chunk-VL7DP3OW.js → chunk-VFSP73LP.js} +2 -2
  120. package/dist/{chunk-KMKBD66B.js → chunk-XOE5DYQL.js} +3 -3
  121. package/dist/{chunk-TGROC2UP.js → chunk-XXEOGY77.js} +9 -9
  122. package/dist/{chunk-NNL4LJAD.js → chunk-XZ5I7OZR.js} +5 -5
  123. package/dist/{chunk-7XGF5HCC.js → chunk-XZJMIJLW.js} +85 -85
  124. package/dist/{chunk-3NN73CM7.js → chunk-YFBTVOMB.js} +3 -3
  125. package/dist/{chunk-RZ3KJZYE.js → chunk-YM7IEUO7.js} +3 -3
  126. package/dist/{chunk-ZT34X56N.js → chunk-YPL66L3U.js} +2 -2
  127. package/dist/{chunk-ZZMRXJFY.js → chunk-ZIDSD6VC.js} +2 -2
  128. package/dist/cli.js +71 -70
  129. package/dist/compounding/engine.js +11 -11
  130. package/dist/compounding/preference-consolidator.js +1 -1
  131. package/dist/config.js +2 -2
  132. package/dist/connectors/codex-materialize-runner.js +11 -11
  133. package/dist/connectors/codex-materialize.js +2 -2
  134. package/dist/connectors/index.js +12 -12
  135. package/dist/contradiction/index.js +3 -3
  136. package/dist/{contradiction-scan-3FJYWS3G.js → contradiction-scan-SSKCAMLX.js} +3 -3
  137. package/dist/conversation-index/backend.js +5 -5
  138. package/dist/conversation-index/cleanup.js +2 -2
  139. package/dist/conversation-index/faiss-adapter.js +2 -2
  140. package/dist/conversation-index/indexer.js +2 -2
  141. package/dist/conversation-index/search.js +2 -2
  142. package/dist/day-summary.js +2 -2
  143. package/dist/embedding-fallback.js +2 -2
  144. package/dist/entity-retrieval.js +11 -11
  145. package/dist/extraction-faithfulness.js +5 -5
  146. package/dist/extraction-judge-telemetry.js +2 -2
  147. package/dist/extraction-judge-training.js +2 -2
  148. package/dist/extraction-judge.js +5 -5
  149. package/dist/extraction.js +9 -9
  150. package/dist/fallback-llm.js +4 -4
  151. package/dist/{forget-WYLR4ZFV.js → forget-KHF7A44H.js} +4 -4
  152. package/dist/{graph-edge-decay-RXUCJIN4.js → graph-edge-decay-FO7AM4UR.js} +3 -3
  153. package/dist/graph-snapshot.js +2 -2
  154. package/dist/graph.js +1 -1
  155. package/dist/index.js +146 -145
  156. package/dist/lcm/archive.js +2 -2
  157. package/dist/lcm/engine.js +5 -5
  158. package/dist/lcm/index.js +8 -8
  159. package/dist/lcm/schema.js +2 -2
  160. package/dist/lcm/summarizer.js +3 -3
  161. package/dist/local-llm.js +2 -2
  162. package/dist/logger.d.ts +8 -2
  163. package/dist/logger.js +1 -1
  164. package/dist/maintenance/memory-governance.js +10 -10
  165. package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +10 -10
  166. package/dist/maintenance/rebuild-memory-projection.js +12 -12
  167. package/dist/model-registry.js +2 -2
  168. package/dist/models-json.js +2 -2
  169. package/dist/namespaces/migrate.js +23 -23
  170. package/dist/namespaces/search.js +13 -13
  171. package/dist/namespaces/storage.js +10 -10
  172. package/dist/native-knowledge.js +2 -2
  173. package/dist/negative.js +2 -2
  174. package/dist/operator-toolkit.js +30 -30
  175. package/dist/orchestration/compression-guideline-coordinator.js +2 -2
  176. package/dist/orchestration/maintenance.js +12 -12
  177. package/dist/orchestrator.js +109 -108
  178. package/dist/profiling.js +2 -2
  179. package/dist/qmd.js +2 -2
  180. package/dist/recall-planner-llm.js +4 -4
  181. package/dist/recall-qos.js +2 -2
  182. package/dist/recall-state.js +2 -2
  183. package/dist/relevance.js +2 -2
  184. package/dist/{resolution-33PIX3TT.js → resolution-VH4NGENZ.js} +3 -3
  185. package/dist/resolution-VH4NGENZ.js.map +1 -0
  186. package/dist/resolve-provider-secret.js +2 -2
  187. package/dist/resume-bundles.js +4 -4
  188. package/dist/retrieval-agents.js +2 -2
  189. package/dist/routing/store.js +2 -2
  190. package/dist/schemas.d.ts +84 -84
  191. package/dist/search/embed-helper.js +2 -2
  192. package/dist/search/factory.js +12 -12
  193. package/dist/search/index.js +12 -12
  194. package/dist/search/lancedb-backend.js +2 -2
  195. package/dist/search/meilisearch-backend.js +2 -2
  196. package/dist/search/orama-backend.js +2 -2
  197. package/dist/search/remote-backend.js +2 -2
  198. package/dist/semantic-consolidation.js +12 -12
  199. package/dist/semantic-rule-promotion.js +10 -10
  200. package/dist/semantic-rule-verifier.js +10 -10
  201. package/dist/session-observer-state.js +2 -2
  202. package/dist/session-transcript-migration.js +2 -2
  203. package/dist/shared-context/manager.d.ts +8 -8
  204. package/dist/shared-context/manager.js +2 -2
  205. package/dist/storage-guards.js +2 -2
  206. package/dist/storage.js +9 -9
  207. package/dist/summarizer.js +7 -7
  208. package/dist/temporal-supersession.js +2 -2
  209. package/dist/threading.js +2 -2
  210. package/dist/transcript.js +2 -2
  211. package/dist/transfer/autodetect.js +1 -1
  212. package/dist/transfer/backup.js +1 -1
  213. package/dist/transfer/capsule-export.js +2 -2
  214. package/dist/transfer/types.d.ts +66 -66
  215. package/dist/verified-recall.js +11 -11
  216. package/package.json +2 -2
  217. package/src/access-mcp-output-schemas.ts +472 -0
  218. package/src/access-mcp.ts +235 -143
  219. package/src/logger.test.ts +120 -0
  220. package/src/logger.ts +37 -9
  221. package/dist/chunk-NU3CSQ4H.js +0 -48
  222. package/dist/chunk-NU3CSQ4H.js.map +0 -1
  223. package/dist/chunk-OP43P53G.js.map +0 -1
  224. /package/dist/{contradiction-scan-3FJYWS3G.js.map → access-mcp-output-schemas.js.map} +0 -0
  225. /package/dist/{auto-sync-2SOUW4JW.js.map → auto-sync-M47VTCFI.js.map} +0 -0
  226. /package/dist/{chunk-7FL4CNPV.js.map → chunk-2A3OXAP2.js.map} +0 -0
  227. /package/dist/{chunk-GG6AJN7A.js.map → chunk-2IZAGAJR.js.map} +0 -0
  228. /package/dist/{chunk-ZG4FT6IT.js.map → chunk-2TCZE3C2.js.map} +0 -0
  229. /package/dist/{chunk-KYYL4U6X.js.map → chunk-42BBIR33.js.map} +0 -0
  230. /package/dist/{chunk-DQC3ZZYM.js.map → chunk-4KJLYTLS.js.map} +0 -0
  231. /package/dist/{chunk-7OSULYN2.js.map → chunk-4NMATTXV.js.map} +0 -0
  232. /package/dist/{chunk-GY3SKOS4.js.map → chunk-5EZXHU36.js.map} +0 -0
  233. /package/dist/{chunk-IOENSSZC.js.map → chunk-5H56JAHW.js.map} +0 -0
  234. /package/dist/{chunk-K2I3AWBR.js.map → chunk-5K5VEDFY.js.map} +0 -0
  235. /package/dist/{chunk-IBAU2RZN.js.map → chunk-64ZYXSCO.js.map} +0 -0
  236. /package/dist/{chunk-2MR3MFQB.js.map → chunk-6Y4JTNX7.js.map} +0 -0
  237. /package/dist/{chunk-XG4NBBRW.js.map → chunk-7BAJAXGB.js.map} +0 -0
  238. /package/dist/{chunk-L24JROPR.js.map → chunk-7WSLR2CU.js.map} +0 -0
  239. /package/dist/{chunk-EXM3CQTZ.js.map → chunk-A3GOMRJG.js.map} +0 -0
  240. /package/dist/{chunk-KFIAFHOC.js.map → chunk-ABGDGBDT.js.map} +0 -0
  241. /package/dist/{chunk-3JOFWTQD.js.map → chunk-APMGGGTY.js.map} +0 -0
  242. /package/dist/{chunk-JBPKEARU.js.map → chunk-AU7Q3LSC.js.map} +0 -0
  243. /package/dist/{chunk-XHYGJVXL.js.map → chunk-AXTXN4T6.js.map} +0 -0
  244. /package/dist/{chunk-5QANTTY2.js.map → chunk-BRDJ2HFP.js.map} +0 -0
  245. /package/dist/{chunk-QMN3CIFS.js.map → chunk-CGS7UKWM.js.map} +0 -0
  246. /package/dist/{chunk-KYC3RLYJ.js.map → chunk-CXLNZXG5.js.map} +0 -0
  247. /package/dist/{chunk-3O3BZNSH.js.map → chunk-CZGIIADK.js.map} +0 -0
  248. /package/dist/{chunk-QRDOSYOR.js.map → chunk-DBRYEIGY.js.map} +0 -0
  249. /package/dist/{chunk-UC4YOAC2.js.map → chunk-E5BK6CGV.js.map} +0 -0
  250. /package/dist/{chunk-TKZ3AL5V.js.map → chunk-EHK6KZHK.js.map} +0 -0
  251. /package/dist/{chunk-JZ7P26GF.js.map → chunk-F53UF7CI.js.map} +0 -0
  252. /package/dist/{chunk-SJHM6I4J.js.map → chunk-FC77VUX5.js.map} +0 -0
  253. /package/dist/{chunk-DKTSR7EK.js.map → chunk-FDPZVY6D.js.map} +0 -0
  254. /package/dist/{chunk-CSHUSYUM.js.map → chunk-FT37KV7R.js.map} +0 -0
  255. /package/dist/{chunk-MLDAD27I.js.map → chunk-FWPHPN3V.js.map} +0 -0
  256. /package/dist/{chunk-SRSPVFSJ.js.map → chunk-G47FEGGK.js.map} +0 -0
  257. /package/dist/{chunk-52TEPNL7.js.map → chunk-H25TAODC.js.map} +0 -0
  258. /package/dist/{chunk-5ACKQLGA.js.map → chunk-H2EJNV2Z.js.map} +0 -0
  259. /package/dist/{chunk-XDRJQMYL.js.map → chunk-H5IT5JL7.js.map} +0 -0
  260. /package/dist/{chunk-TQT3USCG.js.map → chunk-HG32URJJ.js.map} +0 -0
  261. /package/dist/{chunk-ZQNCHPTZ.js.map → chunk-HLTAPHZZ.js.map} +0 -0
  262. /package/dist/{chunk-LOPZ2DWR.js.map → chunk-I73G4UH7.js.map} +0 -0
  263. /package/dist/{chunk-EWGMA5W5.js.map → chunk-IGF4DII6.js.map} +0 -0
  264. /package/dist/{chunk-DCWIQFNA.js.map → chunk-JI5AVXYO.js.map} +0 -0
  265. /package/dist/{chunk-VUA4S7P6.js.map → chunk-JIKJPDQJ.js.map} +0 -0
  266. /package/dist/{chunk-VQ34TERH.js.map → chunk-JZHHREBL.js.map} +0 -0
  267. /package/dist/{chunk-IQVQJJL7.js.map → chunk-K2ZLHESQ.js.map} +0 -0
  268. /package/dist/{chunk-PWFWCGOO.js.map → chunk-KAWTOYAW.js.map} +0 -0
  269. /package/dist/{chunk-DJECGBBM.js.map → chunk-KQDNAXOM.js.map} +0 -0
  270. /package/dist/{chunk-WIWPSQYU.js.map → chunk-KQPJLK3X.js.map} +0 -0
  271. /package/dist/{chunk-QKUWPSU3.js.map → chunk-KS4PRHRD.js.map} +0 -0
  272. /package/dist/{chunk-DMKMQTBH.js.map → chunk-L4UZBJNM.js.map} +0 -0
  273. /package/dist/{chunk-IQ7WCZRW.js.map → chunk-LLMZK53N.js.map} +0 -0
  274. /package/dist/{chunk-YTU7WKYN.js.map → chunk-MNUHL34L.js.map} +0 -0
  275. /package/dist/{chunk-ZCWIH4LH.js.map → chunk-MRHFJV44.js.map} +0 -0
  276. /package/dist/{chunk-W4H5A3TJ.js.map → chunk-MTR7BZQN.js.map} +0 -0
  277. /package/dist/{chunk-PNLCEFE4.js.map → chunk-MTWKDOVO.js.map} +0 -0
  278. /package/dist/{chunk-3YYWUHA7.js.map → chunk-MWH5MAFP.js.map} +0 -0
  279. /package/dist/{chunk-OSMBC3JU.js.map → chunk-O2EL7EGG.js.map} +0 -0
  280. /package/dist/{chunk-HW5EF6LV.js.map → chunk-O7BBFJLP.js.map} +0 -0
  281. /package/dist/{chunk-EHQ5HO5T.js.map → chunk-OBMR4VIX.js.map} +0 -0
  282. /package/dist/{chunk-WRBDUNSW.js.map → chunk-OH6BKCPB.js.map} +0 -0
  283. /package/dist/{chunk-6SHAUM5S.js.map → chunk-OUMTBFSQ.js.map} +0 -0
  284. /package/dist/{chunk-FLVL4L3L.js.map → chunk-OUXPVWTZ.js.map} +0 -0
  285. /package/dist/{chunk-EEKDRAWX.js.map → chunk-PRTA6444.js.map} +0 -0
  286. /package/dist/{chunk-WB4CFKZ4.js.map → chunk-QGS7Z7YU.js.map} +0 -0
  287. /package/dist/{chunk-T4AWNIXJ.js.map → chunk-QICQ35K5.js.map} +0 -0
  288. /package/dist/{chunk-UUH4YQOF.js.map → chunk-QLULYKWZ.js.map} +0 -0
  289. /package/dist/{chunk-DBSMLRTO.js.map → chunk-QT2RZNRT.js.map} +0 -0
  290. /package/dist/{chunk-HM6UJPPO.js.map → chunk-QWGNDWKB.js.map} +0 -0
  291. /package/dist/{chunk-KCQA46NR.js.map → chunk-R5VAVVHP.js.map} +0 -0
  292. /package/dist/{chunk-MYNRJGOY.js.map → chunk-RBGL4MKQ.js.map} +0 -0
  293. /package/dist/{chunk-O7GOFAM3.js.map → chunk-RP7YXA67.js.map} +0 -0
  294. /package/dist/{chunk-BVKCV2ZY.js.map → chunk-SMX5267P.js.map} +0 -0
  295. /package/dist/{chunk-U72WWTLR.js.map → chunk-TH2KIPP7.js.map} +0 -0
  296. /package/dist/{chunk-PSNMICC2.js.map → chunk-TKUQSXU4.js.map} +0 -0
  297. /package/dist/{chunk-XBZQRZ6G.js.map → chunk-TN7THW5U.js.map} +0 -0
  298. /package/dist/{chunk-O5EKTMOJ.js.map → chunk-UAOZJX5J.js.map} +0 -0
  299. /package/dist/{chunk-JRZV3767.js.map → chunk-UI4FVU6T.js.map} +0 -0
  300. /package/dist/{chunk-E6LXM2GE.js.map → chunk-UQI2NHTY.js.map} +0 -0
  301. /package/dist/{chunk-W7VA5667.js.map → chunk-UQMCR5RW.js.map} +0 -0
  302. /package/dist/{chunk-VGUOEDTU.js.map → chunk-V3UE5I5F.js.map} +0 -0
  303. /package/dist/{chunk-STN5KMSS.js.map → chunk-VBBMTSOV.js.map} +0 -0
  304. /package/dist/{chunk-5QJZLJ7Q.js.map → chunk-VBVSN2TV.js.map} +0 -0
  305. /package/dist/{chunk-VL7DP3OW.js.map → chunk-VFSP73LP.js.map} +0 -0
  306. /package/dist/{chunk-KMKBD66B.js.map → chunk-XOE5DYQL.js.map} +0 -0
  307. /package/dist/{chunk-TGROC2UP.js.map → chunk-XXEOGY77.js.map} +0 -0
  308. /package/dist/{chunk-NNL4LJAD.js.map → chunk-XZ5I7OZR.js.map} +0 -0
  309. /package/dist/{chunk-7XGF5HCC.js.map → chunk-XZJMIJLW.js.map} +0 -0
  310. /package/dist/{chunk-3NN73CM7.js.map → chunk-YFBTVOMB.js.map} +0 -0
  311. /package/dist/{chunk-RZ3KJZYE.js.map → chunk-YM7IEUO7.js.map} +0 -0
  312. /package/dist/{chunk-ZT34X56N.js.map → chunk-YPL66L3U.js.map} +0 -0
  313. /package/dist/{chunk-ZZMRXJFY.js.map → chunk-ZIDSD6VC.js.map} +0 -0
  314. /package/dist/{graph-edge-decay-RXUCJIN4.js.map → contradiction-scan-SSKCAMLX.js.map} +0 -0
  315. /package/dist/{forget-WYLR4ZFV.js.map → forget-KHF7A44H.js.map} +0 -0
  316. /package/dist/{resolution-33PIX3TT.js.map → graph-edge-decay-FO7AM4UR.js.map} +0 -0
@@ -0,0 +1,120 @@
1
+ import assert from "node:assert/strict";
2
+ import test from "node:test";
3
+
4
+ import { type LoggerBackend, initLogger, log } from "./logger.js";
5
+
6
+ const FIXED = "2026-07-11T20:00:00.000Z";
7
+
8
+ function capture(): { lines: string[]; backend: LoggerBackend } {
9
+ const lines: string[] = [];
10
+ const push =
11
+ (level: string) =>
12
+ (msg: string, ...args: unknown[]) => {
13
+ lines.push(args.length ? `${level}|${msg}|${JSON.stringify(args)}` : `${level}|${msg}`);
14
+ };
15
+ return {
16
+ lines,
17
+ backend: {
18
+ info: push("info"),
19
+ warn: push("warn"),
20
+ error: push("error"),
21
+ debug: push("debug"),
22
+ },
23
+ };
24
+ }
25
+
26
+ const savedEnv = process.env.REMNIC_LOG_TIMESTAMPS;
27
+ test.afterEach(() => {
28
+ if (savedEnv === undefined) Reflect.deleteProperty(process.env, "REMNIC_LOG_TIMESTAMPS");
29
+ else process.env.REMNIC_LOG_TIMESTAMPS = savedEnv;
30
+ // Reset to a silent backend (module default is NOOP) so this suite never
31
+ // leaks console output or timestamp state into sibling suites in-process.
32
+ initLogger({ info() {}, warn() {}, error() {}, debug() {} }, false, { timestamps: true });
33
+ });
34
+
35
+ test("prefixes each level with an ISO 8601 timestamp by default", () => {
36
+ const { lines, backend } = capture();
37
+ Reflect.deleteProperty(process.env, "REMNIC_LOG_TIMESTAMPS");
38
+ initLogger(backend, true, { clock: () => FIXED });
39
+
40
+ log.info("hello");
41
+ log.warn("careful");
42
+ log.error("boom", new Error("bad"));
43
+ log.debug("trace");
44
+
45
+ assert.deepEqual(lines, [
46
+ `info|${FIXED} remnic: hello`,
47
+ `warn|${FIXED} remnic: careful`,
48
+ `error|${FIXED} remnic: boom — bad`,
49
+ `debug|${FIXED} remnic [debug]: trace`,
50
+ ]);
51
+ });
52
+
53
+ test("timestamps: false restores the legacy 'remnic: ' format", () => {
54
+ const { lines, backend } = capture();
55
+ initLogger(backend, false, { timestamps: false, clock: () => FIXED });
56
+
57
+ log.info("hello");
58
+ assert.equal(lines[0], "info|remnic: hello");
59
+ assert.ok(!lines[0].includes(FIXED));
60
+ });
61
+
62
+ test("REMNIC_LOG_TIMESTAMPS=false disables the prefix", () => {
63
+ const { lines, backend } = capture();
64
+ process.env.REMNIC_LOG_TIMESTAMPS = "false";
65
+ initLogger(backend, false, { clock: () => FIXED });
66
+
67
+ log.info("hello");
68
+ assert.equal(lines[0], "info|remnic: hello");
69
+ });
70
+
71
+ test("explicit option overrides the env var", () => {
72
+ const { lines, backend } = capture();
73
+ process.env.REMNIC_LOG_TIMESTAMPS = "false";
74
+ initLogger(backend, false, { timestamps: true, clock: () => FIXED });
75
+
76
+ log.info("hello");
77
+ assert.equal(lines[0], `info|${FIXED} remnic: hello`);
78
+ });
79
+
80
+ test("emits a real ISO 8601 timestamp when no clock is injected", () => {
81
+ const { lines, backend } = capture();
82
+ Reflect.deleteProperty(process.env, "REMNIC_LOG_TIMESTAMPS");
83
+ initLogger(backend, false);
84
+
85
+ log.info("hello");
86
+ const m = /^info\|(\S+) remnic: hello$/.exec(lines[0]);
87
+ assert.ok(m, `unexpected line: ${lines[0]}`);
88
+ assert.ok(!Number.isNaN(Date.parse(m[1])));
89
+ assert.equal(new Date(m[1]).toISOString(), m[1]);
90
+ });
91
+
92
+ test("preserves variadic args and gates debug on the debug flag", () => {
93
+ const { lines, backend } = capture();
94
+ initLogger(backend, false, { clock: () => FIXED });
95
+ log.debug("suppressed");
96
+ assert.equal(lines.length, 0, "debug must be gated when debug=false");
97
+
98
+ initLogger(backend, true, { clock: () => FIXED });
99
+ log.info("withargs", { a: 1 });
100
+ assert.equal(lines.at(-1), `info|${FIXED} remnic: withargs|[{"a":1}]`);
101
+ });
102
+
103
+ test("unrecognized REMNIC_LOG_TIMESTAMPS falls through to the default (on)", () => {
104
+ const { lines, backend } = capture();
105
+ process.env.REMNIC_LOG_TIMESTAMPS = "maybe";
106
+ initLogger(backend, false, { clock: () => FIXED });
107
+
108
+ log.info("hello");
109
+ assert.equal(lines[0], `info|${FIXED} remnic: hello`);
110
+ });
111
+
112
+ test("empty or whitespace-only REMNIC_LOG_TIMESTAMPS reads as unset (default on)", () => {
113
+ for (const raw of ["", " "]) {
114
+ const { lines, backend } = capture();
115
+ process.env.REMNIC_LOG_TIMESTAMPS = raw;
116
+ initLogger(backend, false, { clock: () => FIXED });
117
+ log.info("hello");
118
+ assert.equal(lines[0], `info|${FIXED} remnic: hello`, `raw=${JSON.stringify(raw)}`);
119
+ }
120
+ });
package/src/logger.ts CHANGED
@@ -12,8 +12,29 @@ const NOOP_LOGGER: LoggerBackend = {
12
12
  debug() {},
13
13
  };
14
14
 
15
+ export interface LoggerOptions {
16
+ /** Prefix each emitted line with an ISO 8601 timestamp. Defaults to true. */
17
+ timestamps?: boolean;
18
+ /** Clock source for the timestamp prefix; injectable for tests. */
19
+ clock?: () => string;
20
+ }
21
+
15
22
  let _backend: LoggerBackend = NOOP_LOGGER;
16
23
  let _debug = false;
24
+ let _timestamps = true;
25
+ let _clock: () => string = () => new Date().toISOString();
26
+
27
+ // Coerce a boolean-like env string. Empty/whitespace-only and unrecognized
28
+ // values return undefined so callers fall through to the default (timestamps
29
+ // on) rather than silently disabling — an empty env var reads as "unset".
30
+ function coerceBool(value: string | undefined): boolean | undefined {
31
+ if (value === undefined) return undefined;
32
+ const s = value.trim().toLowerCase();
33
+ if (s === "") return undefined;
34
+ if (s === "0" || s === "false" || s === "no" || s === "off") return false;
35
+ if (s === "1" || s === "true" || s === "yes" || s === "on") return true;
36
+ return undefined;
37
+ }
17
38
 
18
39
  // Late-bind console.* rather than capturing references at module import
19
40
  // time. In production this is behaviour-identical to the pre-bound
@@ -31,28 +52,35 @@ const CONSOLE_LOGGER: LoggerBackend = {
31
52
  debug: (msg, ...args) => console.debug(msg, ...args),
32
53
  };
33
54
 
34
- export function initLogger(backend?: LoggerBackend, debug?: boolean): void {
55
+ export function initLogger(backend?: LoggerBackend, debug?: boolean, options?: LoggerOptions): void {
35
56
  _backend = backend ?? CONSOLE_LOGGER;
36
57
  _debug = debug ?? false;
58
+ // Precedence: explicit option > REMNIC_LOG_TIMESTAMPS env > default (on).
59
+ _timestamps = options?.timestamps ?? coerceBool(process.env.REMNIC_LOG_TIMESTAMPS) ?? true;
60
+ _clock = options?.clock ?? (() => new Date().toISOString());
61
+ }
62
+
63
+ // Format one log line: "<iso> remnic: <msg>" when timestamps are enabled,
64
+ // otherwise the legacy "remnic: <msg>". Timestamp is per-call.
65
+ function fmt(msg: string, label = "remnic"): string {
66
+ const ts = _timestamps ? `${_clock()} ` : "";
67
+ return `${ts}${label}: ${msg}`;
37
68
  }
38
69
 
39
70
  export const log = {
40
71
  info(msg: string, ...args: unknown[]): void {
41
- _backend.info(`remnic: ${msg}`, ...args);
72
+ _backend.info(fmt(msg), ...args);
42
73
  },
43
74
  warn(msg: string, ...args: unknown[]): void {
44
- _backend.warn(`remnic: ${msg}`, ...args);
75
+ _backend.warn(fmt(msg), ...args);
45
76
  },
46
77
  error(msg: string, err?: unknown): void {
47
- const detail =
48
- err instanceof Error ? err.message : err ? String(err) : "";
49
- _backend.error(
50
- `remnic: ${msg}${detail ? ` — ${detail}` : ""}`,
51
- );
78
+ const detail = err instanceof Error ? err.message : err ? String(err) : "";
79
+ _backend.error(fmt(`${msg}${detail ? ` ${detail}` : ""}`));
52
80
  },
53
81
  debug(msg: string, ...args: unknown[]): void {
54
82
  if (!_debug) return;
55
83
  const fn = _backend.debug ?? _backend.info;
56
- fn(`remnic [debug]: ${msg}`, ...args);
84
+ fn(fmt(msg, "remnic [debug]"), ...args);
57
85
  },
58
86
  };
@@ -1,48 +0,0 @@
1
- // src/logger.ts
2
- var NOOP_LOGGER = {
3
- info() {
4
- },
5
- warn() {
6
- },
7
- error() {
8
- },
9
- debug() {
10
- }
11
- };
12
- var _backend = NOOP_LOGGER;
13
- var _debug = false;
14
- var CONSOLE_LOGGER = {
15
- info: (msg, ...args) => console.info(msg, ...args),
16
- warn: (msg, ...args) => console.warn(msg, ...args),
17
- error: (msg, ...args) => console.error(msg, ...args),
18
- debug: (msg, ...args) => console.debug(msg, ...args)
19
- };
20
- function initLogger(backend, debug) {
21
- _backend = backend ?? CONSOLE_LOGGER;
22
- _debug = debug ?? false;
23
- }
24
- var log = {
25
- info(msg, ...args) {
26
- _backend.info(`remnic: ${msg}`, ...args);
27
- },
28
- warn(msg, ...args) {
29
- _backend.warn(`remnic: ${msg}`, ...args);
30
- },
31
- error(msg, err) {
32
- const detail = err instanceof Error ? err.message : err ? String(err) : "";
33
- _backend.error(
34
- `remnic: ${msg}${detail ? ` \u2014 ${detail}` : ""}`
35
- );
36
- },
37
- debug(msg, ...args) {
38
- if (!_debug) return;
39
- const fn = _backend.debug ?? _backend.info;
40
- fn(`remnic [debug]: ${msg}`, ...args);
41
- }
42
- };
43
-
44
- export {
45
- initLogger,
46
- log
47
- };
48
- //# sourceMappingURL=chunk-NU3CSQ4H.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/logger.ts"],"sourcesContent":["export interface LoggerBackend {\n info(msg: string, ...args: unknown[]): void;\n warn(msg: string, ...args: unknown[]): void;\n error(msg: string, ...args: unknown[]): void;\n debug?(msg: string, ...args: unknown[]): void;\n}\n\nconst NOOP_LOGGER: LoggerBackend = {\n info() {},\n warn() {},\n error() {},\n debug() {},\n};\n\nlet _backend: LoggerBackend = NOOP_LOGGER;\nlet _debug = false;\n\n// Late-bind console.* rather than capturing references at module import\n// time. In production this is behaviour-identical to the pre-bound\n// `.bind(console)` form — `console.info(msg, ...)` resolves `this` to\n// `console` whether called directly or via an arrow wrapper — but it lets\n// harnesses that swap console methods (e.g. runCli in @remnic/cli) route\n// logger output through their capture sinks. With the old pre-bound form,\n// any command that called initLogger() pinned the logger to the original\n// console methods before the harness could swap them, so log.warn /\n// log.info output escaped the capture buffer.\nconst CONSOLE_LOGGER: LoggerBackend = {\n info: (msg, ...args) => console.info(msg, ...args),\n warn: (msg, ...args) => console.warn(msg, ...args),\n error: (msg, ...args) => console.error(msg, ...args),\n debug: (msg, ...args) => console.debug(msg, ...args),\n};\n\nexport function initLogger(backend?: LoggerBackend, debug?: boolean): void {\n _backend = backend ?? CONSOLE_LOGGER;\n _debug = debug ?? false;\n}\n\nexport const log = {\n info(msg: string, ...args: unknown[]): void {\n _backend.info(`remnic: ${msg}`, ...args);\n },\n warn(msg: string, ...args: unknown[]): void {\n _backend.warn(`remnic: ${msg}`, ...args);\n },\n error(msg: string, err?: unknown): void {\n const detail =\n err instanceof Error ? err.message : err ? String(err) : \"\";\n _backend.error(\n `remnic: ${msg}${detail ? ` — ${detail}` : \"\"}`,\n );\n },\n debug(msg: string, ...args: unknown[]): void {\n if (!_debug) return;\n const fn = _backend.debug ?? _backend.info;\n fn(`remnic [debug]: ${msg}`, ...args);\n },\n};\n"],"mappings":";AAOA,IAAM,cAA6B;AAAA,EACjC,OAAO;AAAA,EAAC;AAAA,EACR,OAAO;AAAA,EAAC;AAAA,EACR,QAAQ;AAAA,EAAC;AAAA,EACT,QAAQ;AAAA,EAAC;AACX;AAEA,IAAI,WAA0B;AAC9B,IAAI,SAAS;AAWb,IAAM,iBAAgC;AAAA,EACpC,MAAM,CAAC,QAAQ,SAAS,QAAQ,KAAK,KAAK,GAAG,IAAI;AAAA,EACjD,MAAM,CAAC,QAAQ,SAAS,QAAQ,KAAK,KAAK,GAAG,IAAI;AAAA,EACjD,OAAO,CAAC,QAAQ,SAAS,QAAQ,MAAM,KAAK,GAAG,IAAI;AAAA,EACnD,OAAO,CAAC,QAAQ,SAAS,QAAQ,MAAM,KAAK,GAAG,IAAI;AACrD;AAEO,SAAS,WAAW,SAAyB,OAAuB;AACzE,aAAW,WAAW;AACtB,WAAS,SAAS;AACpB;AAEO,IAAM,MAAM;AAAA,EACjB,KAAK,QAAgB,MAAuB;AAC1C,aAAS,KAAK,WAAW,GAAG,IAAI,GAAG,IAAI;AAAA,EACzC;AAAA,EACA,KAAK,QAAgB,MAAuB;AAC1C,aAAS,KAAK,WAAW,GAAG,IAAI,GAAG,IAAI;AAAA,EACzC;AAAA,EACA,MAAM,KAAa,KAAqB;AACtC,UAAM,SACJ,eAAe,QAAQ,IAAI,UAAU,MAAM,OAAO,GAAG,IAAI;AAC3D,aAAS;AAAA,MACP,WAAW,GAAG,GAAG,SAAS,WAAM,MAAM,KAAK,EAAE;AAAA,IAC/C;AAAA,EACF;AAAA,EACA,MAAM,QAAgB,MAAuB;AAC3C,QAAI,CAAC,OAAQ;AACb,UAAM,KAAK,SAAS,SAAS,SAAS;AACtC,OAAG,mBAAmB,GAAG,IAAI,GAAG,IAAI;AAAA,EACtC;AACF;","names":[]}