@remnic/core 10.0.92 → 10.0.93

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 (486) hide show
  1. package/dist/access-admin-ops-surface.js +331 -58
  2. package/dist/access-authorization-probe.js +2 -283
  3. package/dist/access-boundary.d.ts +1 -1
  4. package/dist/access-boundary.d.ts.map +1 -1
  5. package/dist/access-boundary.js +1 -282
  6. package/dist/access-cli.js +286 -302
  7. package/dist/access-cli.js.map +1 -1
  8. package/dist/access-coding-context-resolution.js +3 -3
  9. package/dist/access-extraction-force-flush.js +331 -58
  10. package/dist/access-http-briefing.js +331 -59
  11. package/dist/access-http-query.js +331 -60
  12. package/dist/access-http.js +329 -111
  13. package/dist/access-identity-continuity-surface.js +331 -58
  14. package/dist/access-lcm-surface.js +331 -58
  15. package/dist/access-mcp-frames.d.ts +20 -6
  16. package/dist/access-mcp-frames.d.ts.map +1 -1
  17. package/dist/access-mcp-frames.js +1 -1
  18. package/dist/access-mcp.d.ts +5 -0
  19. package/dist/access-mcp.d.ts.map +1 -1
  20. package/dist/access-mcp.js +329 -86
  21. package/dist/access-namespace-preflight.js +2 -282
  22. package/dist/access-observe-transcript.js +3 -3
  23. package/dist/access-observe-write-category.js +6 -6
  24. package/dist/access-observe-write-surface.js +331 -58
  25. package/dist/access-offline-manifest.js +12 -11
  26. package/dist/access-operations-batch.js +329 -63
  27. package/dist/access-operations.js +329 -72
  28. package/dist/access-recall-concurrency.js +331 -58
  29. package/dist/access-recall-diagnostics.js +5 -4
  30. package/dist/access-recall-response.js +331 -58
  31. package/dist/access-recall-surface.js +331 -58
  32. package/dist/access-schema.js +2 -2
  33. package/dist/access-service.js +334 -61
  34. package/dist/access-surface-catalog.js +6 -283
  35. package/dist/access-surface-catalog.js.map +1 -1
  36. package/dist/active-context-transform.js +1 -1
  37. package/dist/active-memory-bridge.js +3 -2
  38. package/dist/active-recall.js +35 -36
  39. package/dist/active-recall.js.map +1 -1
  40. package/dist/activity/journal-extract.d.ts +13 -1
  41. package/dist/activity/journal-extract.d.ts.map +1 -1
  42. package/dist/{auto-sync-3AZW7MXI.js → auto-sync-BO5YZKM6.js} +13 -15
  43. package/dist/{auto-sync-3AZW7MXI.js.map → auto-sync-BO5YZKM6.js.map} +1 -1
  44. package/dist/briefing.js +19 -19
  45. package/dist/buffer.js +16 -16
  46. package/dist/calibration.js +10 -10
  47. package/dist/{capsule-merge-2IIXFXN5.js → capsule-merge-6IDAYTKG.js} +6 -6
  48. package/dist/causal-consolidation.js +22 -22
  49. package/dist/{chunk-ATPWZ4F7.js → chunk-2LMA22UU.js} +5 -5
  50. package/dist/{chunk-RGUUBAT5.js → chunk-2WCLTWV2.js} +3 -3
  51. package/dist/{chunk-BQZEGOZ4.js → chunk-2YODOG2O.js} +2 -2
  52. package/dist/{chunk-WYG5UNDY.js → chunk-3AUDELZL.js} +2 -2
  53. package/dist/{chunk-N4KAE2NB.js → chunk-3CYOCE6U.js} +3 -3
  54. package/dist/{chunk-MB6ZJDN6.js → chunk-3FBAEPCU.js} +2 -2
  55. package/dist/{chunk-PIITB2YZ.js → chunk-3ZS3NUEI.js} +4 -4
  56. package/dist/{chunk-ANZZLRUX.js → chunk-4IVRQMZW.js} +2 -2
  57. package/dist/{chunk-63E37JCN.js → chunk-4RAJT5L2.js} +4 -4
  58. package/dist/{chunk-45VUHDV2.js → chunk-5CO5G4MN.js} +2 -2
  59. package/dist/{chunk-BRLXOZLM.js → chunk-5YT2IIFX.js} +729 -17
  60. package/dist/chunk-5YT2IIFX.js.map +1 -0
  61. package/dist/{chunk-E4IRW2FG.js → chunk-622V2AZA.js} +233 -40
  62. package/dist/chunk-622V2AZA.js.map +1 -0
  63. package/dist/{chunk-LUJCQQ3L.js → chunk-65HWAQ4F.js} +2 -2
  64. package/dist/{chunk-T67LUYCR.js → chunk-77NTFICT.js} +5 -5
  65. package/dist/chunk-A2WFUMUN.js +86 -0
  66. package/dist/chunk-A2WFUMUN.js.map +1 -0
  67. package/dist/{chunk-UE6RRXMF.js → chunk-A4F7OIC5.js} +2 -2
  68. package/dist/chunk-AHA5VQGP.js +117 -0
  69. package/dist/chunk-AHA5VQGP.js.map +1 -0
  70. package/dist/{chunk-SUSW74WU.js → chunk-ATG2PQ4V.js} +56 -5
  71. package/dist/chunk-ATG2PQ4V.js.map +1 -0
  72. package/dist/{chunk-U6UNF5ZS.js → chunk-B33YWUJV.js} +3 -3
  73. package/dist/{chunk-RRJBDXAQ.js → chunk-B377OKUP.js} +2 -2
  74. package/dist/{chunk-IUKYFTGW.js → chunk-B3DR2JBZ.js} +140 -125
  75. package/dist/chunk-B3DR2JBZ.js.map +1 -0
  76. package/dist/{chunk-ETZLQOUR.js → chunk-BGHCSLE5.js} +2 -2
  77. package/dist/{chunk-YYOMGOHB.js → chunk-BOK6BN5M.js} +2 -2
  78. package/dist/{chunk-OH7QLI6W.js → chunk-BPPUH5JM.js} +5 -5
  79. package/dist/{chunk-4J363OAA.js → chunk-BTI4C4MA.js} +2 -2
  80. package/dist/{chunk-O6ZSWHVR.js → chunk-C2KE5DMD.js} +4 -4
  81. package/dist/{chunk-47F6WWLQ.js → chunk-C73N66PR.js} +2 -2
  82. package/dist/{chunk-E3A7ELSG.js → chunk-CGJYL633.js} +2 -2
  83. package/dist/{chunk-WRT7GJ2D.js → chunk-CIWMTNHW.js} +4 -4
  84. package/dist/{chunk-O55EKIEC.js → chunk-D3ZKHLN2.js} +2 -2
  85. package/dist/{chunk-CD4BCCNP.js → chunk-DJ7WVEWX.js} +2 -2
  86. package/dist/{chunk-PWXPRVLK.js → chunk-EFL24KOI.js} +2 -2
  87. package/dist/{chunk-4CJTQHEG.js → chunk-ESLOLCD4.js} +3 -3
  88. package/dist/{chunk-6F42QONS.js → chunk-ETBVCRVL.js} +4 -4
  89. package/dist/{chunk-VILPVT4S.js → chunk-EZ47HOJ6.js} +4 -4
  90. package/dist/{chunk-EFYN5I7Z.js → chunk-F4QFU5IZ.js} +2 -2
  91. package/dist/{chunk-T6OZW2WR.js → chunk-FA7SLQ5X.js} +7 -1
  92. package/dist/chunk-FA7SLQ5X.js.map +1 -0
  93. package/dist/{chunk-7W3RXOIG.js → chunk-FMKILENU.js} +14 -14
  94. package/dist/{chunk-YLXETSAH.js → chunk-GCZJ7XRI.js} +2 -2
  95. package/dist/{chunk-5HFXGXE5.js → chunk-GQXOBKPL.js} +7 -9
  96. package/dist/{chunk-5HFXGXE5.js.map → chunk-GQXOBKPL.js.map} +1 -1
  97. package/dist/{chunk-UDKWFDV2.js → chunk-HLUHEMN4.js} +27 -3
  98. package/dist/chunk-HLUHEMN4.js.map +1 -0
  99. package/dist/{chunk-QFEDITXM.js → chunk-JNDMIAJ4.js} +2 -2
  100. package/dist/chunk-JTSSSR4L.js +359 -0
  101. package/dist/chunk-JTSSSR4L.js.map +1 -0
  102. package/dist/{chunk-5KBIOI4G.js → chunk-JVBAPAWZ.js} +217 -13
  103. package/dist/chunk-JVBAPAWZ.js.map +1 -0
  104. package/dist/{chunk-E5PPE4VA.js → chunk-K2VRKCPA.js} +2 -2
  105. package/dist/{chunk-MKRYQROF.js → chunk-LGEHAQHK.js} +4 -4
  106. package/dist/{chunk-7HTUYFR3.js → chunk-LLPMMMWG.js} +27 -10
  107. package/dist/chunk-LLPMMMWG.js.map +1 -0
  108. package/dist/{chunk-XYTQJD7F.js → chunk-LMJVP5CM.js} +2 -2
  109. package/dist/{chunk-FQKBJJYB.js → chunk-LPV72KRQ.js} +2 -2
  110. package/dist/{chunk-2LCRG2YV.js → chunk-M2XR6B6V.js} +2 -2
  111. package/dist/{chunk-P4WNBSTW.js → chunk-MH632KPO.js} +2 -2
  112. package/dist/{chunk-EQ4U73UH.js → chunk-MLAMXQAW.js} +14 -2
  113. package/dist/chunk-MLAMXQAW.js.map +1 -0
  114. package/dist/{chunk-ZU5JDLOH.js → chunk-MMRTPH3J.js} +2 -2
  115. package/dist/{chunk-PMJFRDJI.js → chunk-MUX7IL77.js} +2 -2
  116. package/dist/{chunk-HF3BKUVV.js → chunk-NAQ4A5IX.js} +7 -7
  117. package/dist/{chunk-TVIVY7KU.js → chunk-NED7IR7B.js} +4 -4
  118. package/dist/{chunk-6F5MJFXY.js → chunk-NHVAX7MH.js} +2 -2
  119. package/dist/{chunk-TG3R2SID.js → chunk-NMGHGTVR.js} +5 -5
  120. package/dist/{chunk-YCNIGRRF.js → chunk-NS7U4ZYU.js} +13 -117
  121. package/dist/chunk-NS7U4ZYU.js.map +1 -0
  122. package/dist/{chunk-NGHDW6UU.js → chunk-NUQEREIP.js} +2 -2
  123. package/dist/{chunk-5IIQU4JZ.js → chunk-OB72KNMF.js} +4 -4
  124. package/dist/{chunk-JV4S6VDH.js → chunk-OJXJWNFY.js} +2 -2
  125. package/dist/{chunk-QJPJXCS4.js → chunk-P3WRNWWM.js} +157 -4
  126. package/dist/chunk-P3WRNWWM.js.map +1 -0
  127. package/dist/{chunk-E6M225BJ.js → chunk-PC5DRBGD.js} +18 -8
  128. package/dist/chunk-PC5DRBGD.js.map +1 -0
  129. package/dist/{chunk-Z7JIZ42P.js → chunk-PRAUN6PN.js} +3 -3
  130. package/dist/{chunk-RWGRSKN5.js → chunk-PT4DZDJA.js} +2 -2
  131. package/dist/{chunk-7EPY3IQL.js → chunk-PZJQ46DH.js} +2 -2
  132. package/dist/{chunk-MXHMNKWG.js → chunk-QDESY76F.js} +3 -3
  133. package/dist/{chunk-I6QGI65T.js → chunk-QRMG4HK4.js} +3 -3
  134. package/dist/{chunk-ZU3NJNO7.js → chunk-QSF5SJAM.js} +4 -4
  135. package/dist/{chunk-5IYOKDM4.js → chunk-R23JWJD3.js} +5 -5
  136. package/dist/{chunk-RHQLIHMB.js → chunk-R4BBGPI2.js} +218 -218
  137. package/dist/chunk-R4BBGPI2.js.map +1 -0
  138. package/dist/{chunk-7GLJMDEQ.js → chunk-RM2YUFH6.js} +6 -6
  139. package/dist/{chunk-IPT2OY4B.js → chunk-RQFXZYTF.js} +35 -33
  140. package/dist/chunk-RQFXZYTF.js.map +1 -0
  141. package/dist/{chunk-AP6NCP3V.js → chunk-S3S72HRM.js} +8 -6
  142. package/dist/chunk-S3S72HRM.js.map +1 -0
  143. package/dist/{chunk-RIMK327Y.js → chunk-SGQPR5SX.js} +7 -7
  144. package/dist/{chunk-ZGFLIK5H.js → chunk-SPAKBUJY.js} +2 -2
  145. package/dist/{chunk-ER7XANP3.js → chunk-SQ3GEIEL.js} +4 -4
  146. package/dist/{chunk-BLJT6JP2.js → chunk-SVT5IA2H.js} +2 -2
  147. package/dist/{chunk-HVX4LPNY.js → chunk-T4KY6UYF.js} +5 -3
  148. package/dist/{chunk-HVX4LPNY.js.map → chunk-T4KY6UYF.js.map} +1 -1
  149. package/dist/{chunk-GVGAO3WV.js → chunk-TJ4F6H4H.js} +3 -3
  150. package/dist/{chunk-R6HMAIKM.js → chunk-TOSPNM4T.js} +2 -2
  151. package/dist/{chunk-HH5LY6RR.js → chunk-TRQE3RYR.js} +5 -5
  152. package/dist/{chunk-RMXS4I66.js → chunk-TVDJEUV5.js} +2 -2
  153. package/dist/{chunk-PLCYKAWH.js → chunk-TYRWSE4B.js} +2 -2
  154. package/dist/{chunk-B4QYQFGY.js → chunk-UBEKET2V.js} +383 -36
  155. package/dist/chunk-UBEKET2V.js.map +1 -0
  156. package/dist/{chunk-IQWUACVG.js → chunk-UHMHJX5G.js} +3 -3
  157. package/dist/{chunk-YODUDA6R.js → chunk-UN4RVUG2.js} +22 -22
  158. package/dist/{chunk-E6Z4FBX6.js → chunk-V2QSNFCT.js} +2 -2
  159. package/dist/{chunk-NBH6K6G5.js → chunk-V65H7MI6.js} +345 -16
  160. package/dist/chunk-V65H7MI6.js.map +1 -0
  161. package/dist/chunk-W54Z2MOP.js +4500 -0
  162. package/dist/chunk-W54Z2MOP.js.map +1 -0
  163. package/dist/{chunk-E7YZXWIS.js → chunk-WKSQTMU7.js} +2 -2
  164. package/dist/{chunk-RIZ5NUNN.js → chunk-WQ4XKIOX.js} +4 -4
  165. package/dist/{chunk-FSO3G4JJ.js → chunk-WQURALGV.js} +4995 -2747
  166. package/dist/chunk-WQURALGV.js.map +1 -0
  167. package/dist/{chunk-QEYTRFR3.js → chunk-X26YOFGS.js} +2 -2
  168. package/dist/{chunk-ITHZFHST.js → chunk-X2BVB74H.js} +2 -2
  169. package/dist/{chunk-XYKBWTWI.js → chunk-XIYLWEXC.js} +2 -2
  170. package/dist/{chunk-IBJ6U753.js → chunk-XKZBZOKV.js} +4 -4
  171. package/dist/{chunk-65AUYLU3.js → chunk-XPXHQI6N.js} +2 -2
  172. package/dist/{chunk-EXHXJETE.js → chunk-XRDYRWZI.js} +2 -2
  173. package/dist/chunk-XRWWCW4H.js +102 -0
  174. package/dist/chunk-XRWWCW4H.js.map +1 -0
  175. package/dist/chunk-YKJBSMMP.js +67137 -0
  176. package/dist/chunk-YKJBSMMP.js.map +1 -0
  177. package/dist/{chunk-2JSDPUKD.js → chunk-YMFPFXEX.js} +2 -2
  178. package/dist/{chunk-645WOU5I.js → chunk-ZDZJNXL6.js} +4 -4
  179. package/dist/{chunk-6TCXIRP5.js → chunk-ZKE4CO6B.js} +4 -4
  180. package/dist/{chunk-FNXQZGUS.js → chunk-ZSE774RV.js} +2 -2
  181. package/dist/cli.js +302 -184
  182. package/dist/coding/export-okf-codegraph.js +28 -28
  183. package/dist/compounding/engine.js +22 -23
  184. package/dist/config.js +35 -36
  185. package/dist/connectors/codex-materialize-runner.js +19 -19
  186. package/dist/connectors/index.js +20 -20
  187. package/dist/connectors/live/google-drive.d.ts +2 -0
  188. package/dist/connectors/live/google-drive.d.ts.map +1 -1
  189. package/dist/consolidation-provenance-check.js +4 -4
  190. package/dist/consolidation-undo.js +5 -5
  191. package/dist/contradiction/index.js +7 -6
  192. package/dist/{contradiction-scan-P2MHYFVG.js → contradiction-scan-IBPYGQZF.js} +4 -3
  193. package/dist/convergence-refresh.js +21 -21
  194. package/dist/corpus-watermark.js +22 -22
  195. package/dist/deep-recall-http-glue.js +2 -2
  196. package/dist/deep-recall-policy-llm.js +4 -4
  197. package/dist/direct-answer-wiring.js +2 -2
  198. package/dist/embedding-fallback.js +1 -1
  199. package/dist/entity-retrieval.js +20 -20
  200. package/dist/eval-trajectory-store.js +2 -2
  201. package/dist/eval-trajectory.js +2 -2
  202. package/dist/event-order-recall.js +2 -2
  203. package/dist/explicit-capture.d.ts +3 -2
  204. package/dist/explicit-capture.d.ts.map +1 -1
  205. package/dist/explicit-capture.js +530 -6
  206. package/dist/explicit-cue-recall.js +2 -2
  207. package/dist/external-wiki-access.js +2 -283
  208. package/dist/extraction-faithfulness.js +4 -4
  209. package/dist/extraction-judge.js +5 -5
  210. package/dist/extraction-normalization.js +1 -1
  211. package/dist/extraction-quote-grounding.d.ts.map +1 -1
  212. package/dist/extraction-quote-grounding.js +1 -1
  213. package/dist/extraction-source-grounding-rules.js +2 -2
  214. package/dist/extraction-source-grounding.js +3 -3
  215. package/dist/extraction.js +42 -43
  216. package/dist/fallback-llm-codex-subscription.js +2 -2
  217. package/dist/fallback-llm.js +3 -3
  218. package/dist/{first-start-migration-QFI7B5SH.js → first-start-migration-FILJH3RO.js} +6 -5
  219. package/dist/{first-start-migration-QFI7B5SH.js.map → first-start-migration-FILJH3RO.js.map} +1 -1
  220. package/dist/focused-list-recall.js +2 -2
  221. package/dist/harmonic-retrieval.js +19 -19
  222. package/dist/index.js +772 -793
  223. package/dist/lcm/index.js +2 -2
  224. package/dist/live-connectors-runner.js +2 -3
  225. package/dist/local-llm-config.js +2 -2
  226. package/dist/local-llm-helpers.d.ts +4 -0
  227. package/dist/local-llm-helpers.d.ts.map +1 -1
  228. package/dist/local-llm-helpers.js +3 -1
  229. package/dist/local-llm.d.ts +4 -1
  230. package/dist/local-llm.d.ts.map +1 -1
  231. package/dist/local-llm.js +4 -4
  232. package/dist/location/index.js +26 -28
  233. package/dist/maintenance/memory-governance.js +19 -19
  234. package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +19 -19
  235. package/dist/maintenance/rebuild-memory-projection-runner.js +21 -21
  236. package/dist/maintenance/rebuild-memory-projection.js +20 -20
  237. package/dist/memory-browse-operations.js +2 -283
  238. package/dist/memory-browse.js +8 -7
  239. package/dist/memory-controller.js +2 -2
  240. package/dist/memory-subject.js +2 -2
  241. package/dist/namespaces/migrate.js +20 -20
  242. package/dist/namespaces/search.js +5 -5
  243. package/dist/namespaces/storage.js +19 -19
  244. package/dist/offline-sync-changeset-generations.js +1 -1
  245. package/dist/offline-sync-embedding-generation.js +1 -1
  246. package/dist/offline-sync-impression-drain.js +6 -6
  247. package/dist/offline-sync-snapshot-stream.js +1 -1
  248. package/dist/offline-sync.js +1 -1
  249. package/dist/operator-doctor-corpus.js +23 -23
  250. package/dist/operator-toolkit.js +57 -60
  251. package/dist/orchestration/backlog-scheduler.js +277 -293
  252. package/dist/orchestration/backlog-scheduler.js.map +1 -1
  253. package/dist/orchestration/buffer-drain-runner.js +277 -293
  254. package/dist/orchestration/extraction-run.d.ts +4 -0
  255. package/dist/orchestration/extraction-run.d.ts.map +1 -1
  256. package/dist/orchestration/fact-dedup-window.d.ts +1 -1
  257. package/dist/orchestration/fact-dedup-window.d.ts.map +1 -1
  258. package/dist/orchestration/maintenance.js +38 -41
  259. package/dist/orchestrator.d.ts +9 -11
  260. package/dist/orchestrator.d.ts.map +1 -1
  261. package/dist/orchestrator.js +289 -306
  262. package/dist/page-versioning.js +3 -3
  263. package/dist/qmd-daemon-session.js +2 -2
  264. package/dist/qmd.js +3 -3
  265. package/dist/recall-explain-renderer.js +1 -1
  266. package/dist/recall-navigation-operations.js +2 -283
  267. package/dist/recall-navigation.js +331 -58
  268. package/dist/recall-planner-llm.js +3 -3
  269. package/dist/recall-state-view-admission.js +6 -6
  270. package/dist/recall-why-service.js +10 -9
  271. package/dist/recall-why.js +4 -3
  272. package/dist/recall-xray-cli.js +2 -2
  273. package/dist/recall-xray-renderer.js +1 -1
  274. package/dist/reconcile/manifest.js +3 -3
  275. package/dist/{resolution-N7H3F2E4.js → resolution-OVVIF7ZY.js} +8 -7
  276. package/dist/response-guidance-recall.js +2 -2
  277. package/dist/resume-bundles.js +39 -40
  278. package/dist/salvage-envelope.js +4 -4
  279. package/dist/search/factory.js +4 -4
  280. package/dist/search/index.js +4 -4
  281. package/dist/semantic-consolidation.js +22 -22
  282. package/dist/semantic-rule-promotion.js +19 -19
  283. package/dist/semantic-rule-verifier.js +19 -19
  284. package/dist/shared-context/manager.js +2 -3
  285. package/dist/source-agent-qualifier.js +31 -32
  286. package/dist/standup/build.js +19 -19
  287. package/dist/storage/content-hash-index.d.ts +10 -0
  288. package/dist/storage/content-hash-index.d.ts.map +1 -1
  289. package/dist/storage.js +18 -18
  290. package/dist/subject-config.js +3 -3
  291. package/dist/summarizer.d.ts +4 -1
  292. package/dist/summarizer.d.ts.map +1 -1
  293. package/dist/summarizer.js +6 -6
  294. package/dist/support-passport/index.js +53 -297
  295. package/dist/targeted-fact-recall.js +2 -2
  296. package/dist/tier-routing.js +3 -2
  297. package/dist/{tier-stats-FQGQSFET.js → tier-stats-FXEUJN73.js} +6 -5
  298. package/dist/{tier-stats-FQGQSFET.js.map → tier-stats-FXEUJN73.js.map} +1 -1
  299. package/dist/transcript.js +2 -2
  300. package/dist/transfer/capsule-import.js +4 -4
  301. package/dist/transfer/export-okf.js +19 -19
  302. package/dist/verified-recall.js +19 -19
  303. package/dist/wearables/memory-gen.d.ts +5 -1
  304. package/dist/wearables/memory-gen.d.ts.map +1 -1
  305. package/dist/wearables/service.d.ts.map +1 -1
  306. package/dist/who-knows-cli.js +20 -20
  307. package/dist/who-knows.js +19 -19
  308. package/dist/write-envelope.js +3 -3
  309. package/package.json +2 -2
  310. package/src/access-boundary.ts +5 -1
  311. package/src/access-category-alias.test.ts +5 -0
  312. package/src/access-mcp-frames.test.ts +60 -5
  313. package/src/access-mcp-frames.ts +72 -18
  314. package/src/access-mcp.test.ts +66 -2
  315. package/src/access-mcp.ts +19 -13
  316. package/src/access-service-coding-write.test.ts +7 -0
  317. package/src/activity/journal-extract-storage.test.ts +31 -0
  318. package/src/activity/journal-extract.test.ts +1 -0
  319. package/src/activity/journal-extract.ts +24 -3
  320. package/src/connectors/live/google-drive.test.ts +39 -0
  321. package/src/connectors/live/google-drive.ts +41 -12
  322. package/src/explicit-capture.test.ts +109 -17
  323. package/src/explicit-capture.ts +90 -37
  324. package/src/extraction-quote-grounding.test.ts +20 -0
  325. package/src/extraction-quote-grounding.ts +21 -11
  326. package/src/fact-dedup-window.test.ts +37 -0
  327. package/src/local-llm-helpers.ts +12 -0
  328. package/src/local-llm-shutdown.test.ts +194 -0
  329. package/src/local-llm.ts +32 -30
  330. package/src/orchestration/extraction-run.ts +12 -3
  331. package/src/orchestration/fact-dedup-window.ts +5 -1
  332. package/src/orchestrator-connector-dedup.test.ts +9 -5
  333. package/src/orchestrator.ts +47 -50
  334. package/src/storage/content-hash-index.ts +27 -2
  335. package/src/storage-fact-hash-publish-failure.test.ts +87 -0
  336. package/src/summarizer-shutdown.test.ts +195 -0
  337. package/src/summarizer.ts +15 -2
  338. package/src/wearables/memory-gen.test.ts +20 -0
  339. package/src/wearables/memory-gen.ts +14 -7
  340. package/src/wearables/service.ts +14 -1
  341. package/src/wearables/storage-io.test.ts +25 -0
  342. package/dist/chunk-2FGLEF7C.js +0 -61
  343. package/dist/chunk-2FGLEF7C.js.map +0 -1
  344. package/dist/chunk-3RLK65ZK.js +0 -203
  345. package/dist/chunk-3RLK65ZK.js.map +0 -1
  346. package/dist/chunk-4WR2OD7K.js +0 -43
  347. package/dist/chunk-4WR2OD7K.js.map +0 -1
  348. package/dist/chunk-5KBIOI4G.js.map +0 -1
  349. package/dist/chunk-5M5M22GW.js +0 -346
  350. package/dist/chunk-5M5M22GW.js.map +0 -1
  351. package/dist/chunk-7HTUYFR3.js.map +0 -1
  352. package/dist/chunk-AP6NCP3V.js.map +0 -1
  353. package/dist/chunk-B4QYQFGY.js.map +0 -1
  354. package/dist/chunk-BJRTMNCB.js +0 -1919
  355. package/dist/chunk-BJRTMNCB.js.map +0 -1
  356. package/dist/chunk-BRLXOZLM.js.map +0 -1
  357. package/dist/chunk-BSACVS6R.js +0 -621
  358. package/dist/chunk-BSACVS6R.js.map +0 -1
  359. package/dist/chunk-DKAA2IHQ.js +0 -3644
  360. package/dist/chunk-DKAA2IHQ.js.map +0 -1
  361. package/dist/chunk-E4IRW2FG.js.map +0 -1
  362. package/dist/chunk-E6M225BJ.js.map +0 -1
  363. package/dist/chunk-EQ4U73UH.js.map +0 -1
  364. package/dist/chunk-ETSJD5IV.js +0 -361
  365. package/dist/chunk-ETSJD5IV.js.map +0 -1
  366. package/dist/chunk-F55YQP7N.js +0 -336
  367. package/dist/chunk-F55YQP7N.js.map +0 -1
  368. package/dist/chunk-FHGWKODN.js +0 -2300
  369. package/dist/chunk-FHGWKODN.js.map +0 -1
  370. package/dist/chunk-FLRP63GU.js +0 -32219
  371. package/dist/chunk-FLRP63GU.js.map +0 -1
  372. package/dist/chunk-FSO3G4JJ.js.map +0 -1
  373. package/dist/chunk-ID6JGIMD.js +0 -25
  374. package/dist/chunk-ID6JGIMD.js.map +0 -1
  375. package/dist/chunk-IGLJNHOX.js +0 -62
  376. package/dist/chunk-IGLJNHOX.js.map +0 -1
  377. package/dist/chunk-IPT2OY4B.js.map +0 -1
  378. package/dist/chunk-IUKYFTGW.js.map +0 -1
  379. package/dist/chunk-NBH6K6G5.js.map +0 -1
  380. package/dist/chunk-NTRUKAAE.js +0 -223
  381. package/dist/chunk-NTRUKAAE.js.map +0 -1
  382. package/dist/chunk-OGXXGHW6.js +0 -223
  383. package/dist/chunk-OGXXGHW6.js.map +0 -1
  384. package/dist/chunk-PPCLZ4JU.js +0 -28
  385. package/dist/chunk-PPCLZ4JU.js.map +0 -1
  386. package/dist/chunk-QJPJXCS4.js.map +0 -1
  387. package/dist/chunk-R2LBF4HH.js +0 -729
  388. package/dist/chunk-R2LBF4HH.js.map +0 -1
  389. package/dist/chunk-RHQLIHMB.js.map +0 -1
  390. package/dist/chunk-RRTVGD3J.js +0 -792
  391. package/dist/chunk-RRTVGD3J.js.map +0 -1
  392. package/dist/chunk-SUSW74WU.js.map +0 -1
  393. package/dist/chunk-T6OZW2WR.js.map +0 -1
  394. package/dist/chunk-UDKWFDV2.js.map +0 -1
  395. package/dist/chunk-V7IZKJI3.js +0 -22
  396. package/dist/chunk-V7IZKJI3.js.map +0 -1
  397. package/dist/chunk-X562NQFA.js +0 -10144
  398. package/dist/chunk-X562NQFA.js.map +0 -1
  399. package/dist/chunk-XDSCJOH7.js +0 -3991
  400. package/dist/chunk-XDSCJOH7.js.map +0 -1
  401. package/dist/chunk-YCNIGRRF.js.map +0 -1
  402. package/dist/chunk-ZTTCDQ4I.js +0 -18796
  403. package/dist/chunk-ZTTCDQ4I.js.map +0 -1
  404. /package/dist/{capsule-merge-2IIXFXN5.js.map → capsule-merge-6IDAYTKG.js.map} +0 -0
  405. /package/dist/{chunk-ATPWZ4F7.js.map → chunk-2LMA22UU.js.map} +0 -0
  406. /package/dist/{chunk-RGUUBAT5.js.map → chunk-2WCLTWV2.js.map} +0 -0
  407. /package/dist/{chunk-BQZEGOZ4.js.map → chunk-2YODOG2O.js.map} +0 -0
  408. /package/dist/{chunk-WYG5UNDY.js.map → chunk-3AUDELZL.js.map} +0 -0
  409. /package/dist/{chunk-N4KAE2NB.js.map → chunk-3CYOCE6U.js.map} +0 -0
  410. /package/dist/{chunk-MB6ZJDN6.js.map → chunk-3FBAEPCU.js.map} +0 -0
  411. /package/dist/{chunk-PIITB2YZ.js.map → chunk-3ZS3NUEI.js.map} +0 -0
  412. /package/dist/{chunk-ANZZLRUX.js.map → chunk-4IVRQMZW.js.map} +0 -0
  413. /package/dist/{chunk-63E37JCN.js.map → chunk-4RAJT5L2.js.map} +0 -0
  414. /package/dist/{chunk-45VUHDV2.js.map → chunk-5CO5G4MN.js.map} +0 -0
  415. /package/dist/{chunk-LUJCQQ3L.js.map → chunk-65HWAQ4F.js.map} +0 -0
  416. /package/dist/{chunk-T67LUYCR.js.map → chunk-77NTFICT.js.map} +0 -0
  417. /package/dist/{chunk-UE6RRXMF.js.map → chunk-A4F7OIC5.js.map} +0 -0
  418. /package/dist/{chunk-U6UNF5ZS.js.map → chunk-B33YWUJV.js.map} +0 -0
  419. /package/dist/{chunk-RRJBDXAQ.js.map → chunk-B377OKUP.js.map} +0 -0
  420. /package/dist/{chunk-ETZLQOUR.js.map → chunk-BGHCSLE5.js.map} +0 -0
  421. /package/dist/{chunk-YYOMGOHB.js.map → chunk-BOK6BN5M.js.map} +0 -0
  422. /package/dist/{chunk-OH7QLI6W.js.map → chunk-BPPUH5JM.js.map} +0 -0
  423. /package/dist/{chunk-4J363OAA.js.map → chunk-BTI4C4MA.js.map} +0 -0
  424. /package/dist/{chunk-O6ZSWHVR.js.map → chunk-C2KE5DMD.js.map} +0 -0
  425. /package/dist/{chunk-47F6WWLQ.js.map → chunk-C73N66PR.js.map} +0 -0
  426. /package/dist/{chunk-E3A7ELSG.js.map → chunk-CGJYL633.js.map} +0 -0
  427. /package/dist/{chunk-WRT7GJ2D.js.map → chunk-CIWMTNHW.js.map} +0 -0
  428. /package/dist/{chunk-O55EKIEC.js.map → chunk-D3ZKHLN2.js.map} +0 -0
  429. /package/dist/{chunk-CD4BCCNP.js.map → chunk-DJ7WVEWX.js.map} +0 -0
  430. /package/dist/{chunk-PWXPRVLK.js.map → chunk-EFL24KOI.js.map} +0 -0
  431. /package/dist/{chunk-4CJTQHEG.js.map → chunk-ESLOLCD4.js.map} +0 -0
  432. /package/dist/{chunk-6F42QONS.js.map → chunk-ETBVCRVL.js.map} +0 -0
  433. /package/dist/{chunk-VILPVT4S.js.map → chunk-EZ47HOJ6.js.map} +0 -0
  434. /package/dist/{chunk-EFYN5I7Z.js.map → chunk-F4QFU5IZ.js.map} +0 -0
  435. /package/dist/{chunk-7W3RXOIG.js.map → chunk-FMKILENU.js.map} +0 -0
  436. /package/dist/{chunk-YLXETSAH.js.map → chunk-GCZJ7XRI.js.map} +0 -0
  437. /package/dist/{chunk-QFEDITXM.js.map → chunk-JNDMIAJ4.js.map} +0 -0
  438. /package/dist/{chunk-E5PPE4VA.js.map → chunk-K2VRKCPA.js.map} +0 -0
  439. /package/dist/{chunk-MKRYQROF.js.map → chunk-LGEHAQHK.js.map} +0 -0
  440. /package/dist/{chunk-XYTQJD7F.js.map → chunk-LMJVP5CM.js.map} +0 -0
  441. /package/dist/{chunk-FQKBJJYB.js.map → chunk-LPV72KRQ.js.map} +0 -0
  442. /package/dist/{chunk-2LCRG2YV.js.map → chunk-M2XR6B6V.js.map} +0 -0
  443. /package/dist/{chunk-P4WNBSTW.js.map → chunk-MH632KPO.js.map} +0 -0
  444. /package/dist/{chunk-ZU5JDLOH.js.map → chunk-MMRTPH3J.js.map} +0 -0
  445. /package/dist/{chunk-PMJFRDJI.js.map → chunk-MUX7IL77.js.map} +0 -0
  446. /package/dist/{chunk-HF3BKUVV.js.map → chunk-NAQ4A5IX.js.map} +0 -0
  447. /package/dist/{chunk-TVIVY7KU.js.map → chunk-NED7IR7B.js.map} +0 -0
  448. /package/dist/{chunk-6F5MJFXY.js.map → chunk-NHVAX7MH.js.map} +0 -0
  449. /package/dist/{chunk-TG3R2SID.js.map → chunk-NMGHGTVR.js.map} +0 -0
  450. /package/dist/{chunk-NGHDW6UU.js.map → chunk-NUQEREIP.js.map} +0 -0
  451. /package/dist/{chunk-5IIQU4JZ.js.map → chunk-OB72KNMF.js.map} +0 -0
  452. /package/dist/{chunk-JV4S6VDH.js.map → chunk-OJXJWNFY.js.map} +0 -0
  453. /package/dist/{chunk-Z7JIZ42P.js.map → chunk-PRAUN6PN.js.map} +0 -0
  454. /package/dist/{chunk-RWGRSKN5.js.map → chunk-PT4DZDJA.js.map} +0 -0
  455. /package/dist/{chunk-7EPY3IQL.js.map → chunk-PZJQ46DH.js.map} +0 -0
  456. /package/dist/{chunk-MXHMNKWG.js.map → chunk-QDESY76F.js.map} +0 -0
  457. /package/dist/{chunk-I6QGI65T.js.map → chunk-QRMG4HK4.js.map} +0 -0
  458. /package/dist/{chunk-ZU3NJNO7.js.map → chunk-QSF5SJAM.js.map} +0 -0
  459. /package/dist/{chunk-5IYOKDM4.js.map → chunk-R23JWJD3.js.map} +0 -0
  460. /package/dist/{chunk-7GLJMDEQ.js.map → chunk-RM2YUFH6.js.map} +0 -0
  461. /package/dist/{chunk-RIMK327Y.js.map → chunk-SGQPR5SX.js.map} +0 -0
  462. /package/dist/{chunk-ZGFLIK5H.js.map → chunk-SPAKBUJY.js.map} +0 -0
  463. /package/dist/{chunk-ER7XANP3.js.map → chunk-SQ3GEIEL.js.map} +0 -0
  464. /package/dist/{chunk-BLJT6JP2.js.map → chunk-SVT5IA2H.js.map} +0 -0
  465. /package/dist/{chunk-GVGAO3WV.js.map → chunk-TJ4F6H4H.js.map} +0 -0
  466. /package/dist/{chunk-R6HMAIKM.js.map → chunk-TOSPNM4T.js.map} +0 -0
  467. /package/dist/{chunk-HH5LY6RR.js.map → chunk-TRQE3RYR.js.map} +0 -0
  468. /package/dist/{chunk-RMXS4I66.js.map → chunk-TVDJEUV5.js.map} +0 -0
  469. /package/dist/{chunk-PLCYKAWH.js.map → chunk-TYRWSE4B.js.map} +0 -0
  470. /package/dist/{chunk-IQWUACVG.js.map → chunk-UHMHJX5G.js.map} +0 -0
  471. /package/dist/{chunk-YODUDA6R.js.map → chunk-UN4RVUG2.js.map} +0 -0
  472. /package/dist/{chunk-E6Z4FBX6.js.map → chunk-V2QSNFCT.js.map} +0 -0
  473. /package/dist/{chunk-E7YZXWIS.js.map → chunk-WKSQTMU7.js.map} +0 -0
  474. /package/dist/{chunk-RIZ5NUNN.js.map → chunk-WQ4XKIOX.js.map} +0 -0
  475. /package/dist/{chunk-QEYTRFR3.js.map → chunk-X26YOFGS.js.map} +0 -0
  476. /package/dist/{chunk-ITHZFHST.js.map → chunk-X2BVB74H.js.map} +0 -0
  477. /package/dist/{chunk-XYKBWTWI.js.map → chunk-XIYLWEXC.js.map} +0 -0
  478. /package/dist/{chunk-IBJ6U753.js.map → chunk-XKZBZOKV.js.map} +0 -0
  479. /package/dist/{chunk-65AUYLU3.js.map → chunk-XPXHQI6N.js.map} +0 -0
  480. /package/dist/{chunk-EXHXJETE.js.map → chunk-XRDYRWZI.js.map} +0 -0
  481. /package/dist/{chunk-2JSDPUKD.js.map → chunk-YMFPFXEX.js.map} +0 -0
  482. /package/dist/{chunk-645WOU5I.js.map → chunk-ZDZJNXL6.js.map} +0 -0
  483. /package/dist/{chunk-6TCXIRP5.js.map → chunk-ZKE4CO6B.js.map} +0 -0
  484. /package/dist/{chunk-FNXQZGUS.js.map → chunk-ZSE774RV.js.map} +0 -0
  485. /package/dist/{contradiction-scan-P2MHYFVG.js.map → contradiction-scan-IBPYGQZF.js.map} +0 -0
  486. /package/dist/{resolution-N7H3F2E4.js.map → resolution-OVVIF7ZY.js.map} +0 -0
@@ -4,7 +4,7 @@ import {
4
4
  import {
5
5
  judgeContradictionPairs,
6
6
  resolveScanStorage
7
- } from "./chunk-RMXS4I66.js";
7
+ } from "./chunk-TVDJEUV5.js";
8
8
  import {
9
9
  CONTRADICTION_VERBS,
10
10
  PREFERENCE_DRIFT_VERBS,
@@ -15,7 +15,7 @@ import {
15
15
  } from "./chunk-CTVWELNK.js";
16
16
  import {
17
17
  composeMemoryEnvelope
18
- } from "./chunk-QEYTRFR3.js";
18
+ } from "./chunk-X26YOFGS.js";
19
19
  import {
20
20
  readJsonFile,
21
21
  writeJsonFileAtomic
@@ -878,4 +878,4 @@ export {
878
878
  isValidResolutionVerb,
879
879
  executeResolution
880
880
  };
881
- //# sourceMappingURL=chunk-IQWUACVG.js.map
881
+ //# sourceMappingURL=chunk-UHMHJX5G.js.map
@@ -1,15 +1,24 @@
1
+ import {
2
+ applyWorkExtractionBoundary
3
+ } from "./chunk-EI6V5UXY.js";
1
4
  import {
2
5
  applyGroundingWithConnector,
3
6
  headerConnector,
4
7
  renderExtractionConversation,
5
8
  resolveSourceConnector
6
- } from "./chunk-7HTUYFR3.js";
9
+ } from "./chunk-LLPMMMWG.js";
7
10
  import {
8
11
  normalizeReasoningTrace
9
12
  } from "./chunk-54V4BZWP.js";
10
13
  import {
11
14
  shouldRunProactivePass
12
15
  } from "./chunk-2CGLBUW3.js";
16
+ import {
17
+ ProfilingCollector
18
+ } from "./chunk-DOWACHYO.js";
19
+ import {
20
+ ModelRegistry
21
+ } from "./chunk-QNUNAXBE.js";
13
22
  import {
14
23
  extractionProviderJsonSchema,
15
24
  extractionProviderResponseFormat
@@ -39,7 +48,7 @@ import {
39
48
  } from "./chunk-BVRZSI7Q.js";
40
49
  import {
41
50
  attachExtractionProvenance
42
- } from "./chunk-O55EKIEC.js";
51
+ } from "./chunk-D3ZKHLN2.js";
43
52
  import {
44
53
  LocalLlmRejectedError,
45
54
  classifyExtractionThrownError,
@@ -55,6 +64,9 @@ import {
55
64
  formatDaySummaryMemories,
56
65
  loadDaySummaryPrompt
57
66
  } from "./chunk-7G5NTS7F.js";
67
+ import {
68
+ LocalLlmClient
69
+ } from "./chunk-RQFXZYTF.js";
58
70
  import {
59
71
  CONSOLIDATION_RESPONSE_SCHEMA,
60
72
  CUE_ANCHOR_PROMPT_INSTRUCTION,
@@ -70,36 +82,24 @@ import {
70
82
  import {
71
83
  looksLikeMechanicalTelemetryTranscript
72
84
  } from "./chunk-4RA3C3EV.js";
73
- import {
74
- AMBIENT_CAPTURE_PROMPT_SECTION_COMPACT,
75
- clampAmbientCaptureConfidence
76
- } from "./chunk-QW27DOHG.js";
77
- import {
78
- applyWorkExtractionBoundary
79
- } from "./chunk-EI6V5UXY.js";
80
- import {
81
- ProfilingCollector
82
- } from "./chunk-DOWACHYO.js";
83
- import {
84
- ModelRegistry
85
- } from "./chunk-QNUNAXBE.js";
86
- import {
87
- LocalLlmClient
88
- } from "./chunk-IPT2OY4B.js";
89
85
  import {
90
86
  normalizeProcedureSteps
91
87
  } from "./chunk-QDW3E4RD.js";
92
88
  import {
93
89
  FallbackLlmClient,
94
90
  gatewayTaskChainOptions
95
- } from "./chunk-ZU5JDLOH.js";
91
+ } from "./chunk-MMRTPH3J.js";
96
92
  import {
97
93
  buildChatCompletionTokenLimit,
98
94
  shouldAssumeOpenAiChatCompletions
99
95
  } from "./chunk-L2EXJQJP.js";
100
96
  import {
101
97
  fallbackLlmRuntimeContextFromConfig
102
- } from "./chunk-ZU3NJNO7.js";
98
+ } from "./chunk-QSF5SJAM.js";
99
+ import {
100
+ AMBIENT_CAPTURE_PROMPT_SECTION_COMPACT,
101
+ clampAmbientCaptureConfidence
102
+ } from "./chunk-QW27DOHG.js";
103
103
  import {
104
104
  extractJsonCandidates
105
105
  } from "./chunk-YBA52OKG.js";
@@ -111,7 +111,7 @@ import {
111
111
  } from "./chunk-C5LWPYS3.js";
112
112
  import {
113
113
  isMemoryCategory
114
- } from "./chunk-QEYTRFR3.js";
114
+ } from "./chunk-X26YOFGS.js";
115
115
  import {
116
116
  sanitizeMemoryContent
117
117
  } from "./chunk-5GKPFL3S.js";
@@ -2443,4 +2443,4 @@ export {
2443
2443
  shouldEnableLocalExtractionThinking,
2444
2444
  ExtractionEngine
2445
2445
  };
2446
- //# sourceMappingURL=chunk-YODUDA6R.js.map
2446
+ //# sourceMappingURL=chunk-UN4RVUG2.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getConfiguredNamespaces
3
- } from "./chunk-I6QGI65T.js";
3
+ } from "./chunk-QRMG4HK4.js";
4
4
  import {
5
5
  drainPendingLifecycleForSyncOrThrow,
6
6
  drainPendingLifecycleLedgerForSync
@@ -181,4 +181,4 @@ export {
181
181
  offlineSyncStorageForSnapshot,
182
182
  drainPendingLifecycleForOfflineSync
183
183
  };
184
- //# sourceMappingURL=chunk-E6Z4FBX6.js.map
184
+ //# sourceMappingURL=chunk-V2QSNFCT.js.map
@@ -1,10 +1,19 @@
1
1
  import {
2
- isValidConnectorId
2
+ ConnectorStateLockLostError,
3
+ isValidConnectorId,
4
+ readConnectorState,
5
+ withConnectorStateLock,
6
+ writeConnectorState
3
7
  } from "./chunk-MDPT6QFK.js";
4
8
  import {
5
9
  isTransientHttpError
6
10
  } from "./chunk-C7SRUWBW.js";
7
11
  import {
12
+ runConnectorPollOnce
13
+ } from "./chunk-OKTXM5H4.js";
14
+ import {
15
+ abortError,
16
+ raceAbort,
8
17
  throwIfAborted
9
18
  } from "./chunk-R2MBW2S4.js";
10
19
 
@@ -209,7 +218,25 @@ function requireNonEmptyString(value, key) {
209
218
  }
210
219
  return trimmed;
211
220
  }
212
- async function resolveCredential(value, key, resolver) {
221
+ var SECRET_RESOLVE_DEADLINE_MS = 3e4;
222
+ async function resolveWithinDeadline(ref, key, resolver, abortSignal) {
223
+ throwIfAborted(abortSignal, "googleDrive: sync aborted");
224
+ const deadline = new AbortController();
225
+ const timer = setTimeout(() => deadline.abort(), SECRET_RESOLVE_DEADLINE_MS);
226
+ const signal = abortSignal ? AbortSignal.any([abortSignal, deadline.signal]) : deadline.signal;
227
+ try {
228
+ return await raceAbort(Promise.resolve(resolver(ref)), signal, "googleDrive: secret resolve aborted");
229
+ } catch {
230
+ throwIfAborted(abortSignal, "googleDrive: sync aborted");
231
+ if (deadline.signal.aborted) {
232
+ throw new Error(`googleDrive: ${key} secret reference was not resolved within ${SECRET_RESOLVE_DEADLINE_MS} ms`);
233
+ }
234
+ throw new Error(`googleDrive: ${key} secret reference could not be resolved`);
235
+ } finally {
236
+ clearTimeout(timer);
237
+ }
238
+ }
239
+ async function resolveCredential(value, key, resolver, abortSignal) {
213
240
  if (Object.prototype.toString.call(value) !== "[object Object]") {
214
241
  return value;
215
242
  }
@@ -217,11 +244,9 @@ async function resolveCredential(value, key, resolver) {
217
244
  if (resolver == null) {
218
245
  throw new Error(`googleDrive: ${key} is a secret reference but no resolver is configured`);
219
246
  }
220
- let resolved;
221
- try {
222
- resolved = await resolver(ref);
223
- } catch {
224
- throw new Error(`googleDrive: ${key} secret reference could not be resolved`);
247
+ const resolved = await resolveWithinDeadline(ref, key, resolver, abortSignal);
248
+ if (resolved === void 0) {
249
+ throw new Error(`googleDrive: ${key} secret reference resolved to no value (the host secret resolver may be unavailable)`);
225
250
  }
226
251
  if (Object.prototype.toString.call(resolved) !== "[object String]") {
227
252
  throw new Error(`googleDrive: ${key} secret reference resolved to a non-string value`);
@@ -232,11 +257,11 @@ async function resolveCredential(value, key, resolver) {
232
257
  }
233
258
  return text;
234
259
  }
235
- async function resolveGoogleDriveConfig(stored, resolver) {
260
+ async function resolveGoogleDriveConfig(stored, resolver, abortSignal) {
236
261
  return {
237
- clientId: await resolveCredential(stored.clientId, "clientId", resolver),
238
- [CLIENT_SECRET_FIELD]: await resolveCredential(stored[CLIENT_SECRET_FIELD], CLIENT_SECRET_FIELD, resolver),
239
- [REFRESH_TOKEN_FIELD]: await resolveCredential(stored[REFRESH_TOKEN_FIELD], REFRESH_TOKEN_FIELD, resolver),
262
+ clientId: await resolveCredential(stored.clientId, "clientId", resolver, abortSignal),
263
+ [CLIENT_SECRET_FIELD]: await resolveCredential(stored[CLIENT_SECRET_FIELD], CLIENT_SECRET_FIELD, resolver, abortSignal),
264
+ [REFRESH_TOKEN_FIELD]: await resolveCredential(stored[REFRESH_TOKEN_FIELD], REFRESH_TOKEN_FIELD, resolver, abortSignal),
240
265
  pollIntervalMs: stored.pollIntervalMs,
241
266
  folderIds: stored.folderIds
242
267
  };
@@ -300,7 +325,11 @@ function createGoogleDriveConnector(options = {}) {
300
325
  return Object.freeze(persisted);
301
326
  },
302
327
  async syncIncremental(args) {
303
- const config = await resolveGoogleDriveConfig(validateGoogleDriveConfig(args.config), args.resolveSecretRef);
328
+ const config = await resolveGoogleDriveConfig(
329
+ validateGoogleDriveConfig(args.config),
330
+ args.resolveSecretRef,
331
+ args.abortSignal
332
+ );
304
333
  throwIfAborted(args.abortSignal, "googleDrive: sync aborted");
305
334
  const client = await clientFactory(config);
306
335
  throwIfAborted(args.abortSignal, "googleDrive: sync aborted");
@@ -2069,6 +2098,305 @@ function buildTitle(repo, kind, comment) {
2069
2098
  return `${kindLabel} in ${repo} (#${comment.id})`;
2070
2099
  }
2071
2100
 
2101
+ // src/live-connectors-runner.ts
2102
+ function builtInLiveConnectorDefinitions(config) {
2103
+ return [
2104
+ {
2105
+ id: GOOGLE_DRIVE_CONNECTOR_ID,
2106
+ displayName: "Google Drive",
2107
+ enabled: config.googleDrive.enabled,
2108
+ pollIntervalMs: config.googleDrive.pollIntervalMs ?? DEFAULT_POLL_INTERVAL_MS,
2109
+ rawConfig: config.googleDrive,
2110
+ createConnector: createGoogleDriveConnector,
2111
+ validateConfig: (raw) => validateGoogleDriveConfig(raw)
2112
+ },
2113
+ {
2114
+ id: NOTION_CONNECTOR_ID,
2115
+ displayName: "Notion",
2116
+ enabled: config.notion.enabled,
2117
+ pollIntervalMs: config.notion.pollIntervalMs ?? NOTION_DEFAULT_POLL_INTERVAL_MS,
2118
+ rawConfig: config.notion,
2119
+ createConnector: createNotionConnector,
2120
+ validateConfig: (raw) => validateNotionConfig(raw)
2121
+ },
2122
+ {
2123
+ id: GMAIL_CONNECTOR_ID,
2124
+ displayName: "Gmail",
2125
+ enabled: config.gmail.enabled,
2126
+ pollIntervalMs: config.gmail.pollIntervalMs ?? GMAIL_DEFAULT_POLL_INTERVAL_MS,
2127
+ rawConfig: config.gmail,
2128
+ createConnector: createGmailConnector,
2129
+ validateConfig: (raw) => validateGmailConfig(raw)
2130
+ },
2131
+ {
2132
+ id: GITHUB_CONNECTOR_ID,
2133
+ displayName: "GitHub",
2134
+ enabled: config.github.enabled,
2135
+ pollIntervalMs: config.github.pollIntervalMs ?? GITHUB_DEFAULT_POLL_INTERVAL_MS,
2136
+ rawConfig: config.github,
2137
+ createConnector: createGitHubConnector,
2138
+ validateConfig: (raw) => validateGitHubConfig(raw)
2139
+ }
2140
+ ];
2141
+ }
2142
+ function hasEnabledLiveConnector(config) {
2143
+ return config.googleDrive.enabled || config.notion.enabled || config.gmail.enabled || config.github.enabled;
2144
+ }
2145
+ async function runLiveConnectorsOnce(options) {
2146
+ const ranAt = resolveNow(options.now);
2147
+ const force = options.force === true;
2148
+ const definitions = options.definitions ?? builtInLiveConnectorDefinitions(options.connectors);
2149
+ const results = [];
2150
+ for (const definition of definitions) {
2151
+ const checkAt = resolveNow(options.now);
2152
+ if (!definition.enabled) {
2153
+ results.push(skipResult(definition, null, "disabled"));
2154
+ continue;
2155
+ }
2156
+ let state;
2157
+ try {
2158
+ state = await readConnectorState(options.memoryDir, definition.id);
2159
+ } catch (err) {
2160
+ results.push({
2161
+ id: definition.id,
2162
+ displayName: definition.displayName,
2163
+ enabled: true,
2164
+ ran: false,
2165
+ skippedReason: "state_read_error",
2166
+ docsImported: 0,
2167
+ error: err instanceof Error ? err.message : String(err),
2168
+ lastSyncAt: null,
2169
+ nextDueAt: null
2170
+ });
2171
+ continue;
2172
+ }
2173
+ if (!force && !isConnectorDue(state, definition.pollIntervalMs, checkAt)) {
2174
+ results.push(skipResult(definition, state, "not_due"));
2175
+ continue;
2176
+ }
2177
+ let validatedConfig;
2178
+ try {
2179
+ validatedConfig = definition.validateConfig(definition.rawConfig);
2180
+ } catch (err) {
2181
+ const message = err instanceof Error ? err.message : String(err);
2182
+ let stateWriteError;
2183
+ let writtenErrorState;
2184
+ const errorAt = resolveNow(options.now);
2185
+ try {
2186
+ writtenErrorState = await writeConnectorErrorState({
2187
+ memoryDir: options.memoryDir,
2188
+ connectorId: definition.id,
2189
+ state,
2190
+ error: message,
2191
+ now: errorAt
2192
+ });
2193
+ } catch (writeErr) {
2194
+ stateWriteError = writeErr instanceof Error ? writeErr.message : String(writeErr);
2195
+ }
2196
+ const reportedState = writtenErrorState ?? state;
2197
+ results.push({
2198
+ id: definition.id,
2199
+ displayName: definition.displayName,
2200
+ enabled: true,
2201
+ ran: false,
2202
+ skippedReason: "invalid_config",
2203
+ docsImported: 0,
2204
+ error: message,
2205
+ ...stateWriteError !== void 0 ? { stateWriteError } : {},
2206
+ lastSyncAt: reportedState?.lastSyncAt ?? null,
2207
+ nextDueAt: nextDueAt(reportedState, definition.pollIntervalMs)
2208
+ });
2209
+ continue;
2210
+ }
2211
+ let runResult;
2212
+ let lastStateWrittenAt;
2213
+ try {
2214
+ const connector = definition.createConnector();
2215
+ runResult = await withConnectorStateLock(options.memoryDir, definition.id, async (lockSignal) => {
2216
+ const pollAbortSignal = combineAbortSignals(options.abortSignal, lockSignal);
2217
+ const lockedState = await readConnectorState(options.memoryDir, definition.id);
2218
+ if (!force && !isConnectorDue(lockedState, definition.pollIntervalMs, checkAt)) {
2219
+ return { docsImported: 0 };
2220
+ }
2221
+ state = lockedState;
2222
+ return runConnectorPollOnce({
2223
+ connectorId: definition.id,
2224
+ priorState: lockedState,
2225
+ syncFn: (cursor) => connector.syncIncremental({
2226
+ cursor,
2227
+ config: validatedConfig,
2228
+ abortSignal: pollAbortSignal,
2229
+ resolveSecretRef: options.resolveSecretRef
2230
+ }),
2231
+ ingestFn: async (docs) => {
2232
+ throwIfAborted2(pollAbortSignal);
2233
+ await options.ingestDocuments(docs);
2234
+ throwIfAborted2(pollAbortSignal);
2235
+ },
2236
+ writeCursorFn: (writeState) => {
2237
+ throwIfAborted2(pollAbortSignal);
2238
+ const writeAt = resolveNow(options.now);
2239
+ return writeConnectorState(options.memoryDir, definition.id, {
2240
+ id: definition.id,
2241
+ cursor: writeState.cursor,
2242
+ lastSyncAt: writeAt.toISOString(),
2243
+ lastSyncStatus: writeState.lastSyncStatus,
2244
+ ...writeState.lastSyncError !== void 0 ? { lastSyncError: writeState.lastSyncError } : {},
2245
+ totalDocsImported: writeState.totalDocsImported
2246
+ }).then(() => {
2247
+ lastStateWrittenAt = writeAt;
2248
+ });
2249
+ }
2250
+ });
2251
+ });
2252
+ if (runResult.docsImported === 0 && runResult.error === void 0 && runResult.stateWriteError === void 0 && lastStateWrittenAt === void 0) {
2253
+ const lockedState = await readConnectorState(options.memoryDir, definition.id);
2254
+ if (!force && !isConnectorDue(lockedState, definition.pollIntervalMs, checkAt)) {
2255
+ results.push(skipResult(definition, lockedState, "not_due"));
2256
+ continue;
2257
+ }
2258
+ }
2259
+ } catch (err) {
2260
+ const message = err instanceof Error ? err.message : String(err);
2261
+ let stateWriteError;
2262
+ let writtenErrorState;
2263
+ const errorAt = resolveNow(options.now);
2264
+ if (!(err instanceof ConnectorStateLockLostError)) {
2265
+ try {
2266
+ writtenErrorState = await writeConnectorErrorState({
2267
+ memoryDir: options.memoryDir,
2268
+ connectorId: definition.id,
2269
+ state,
2270
+ error: message,
2271
+ now: errorAt
2272
+ });
2273
+ } catch (writeErr) {
2274
+ stateWriteError = writeErr instanceof Error ? writeErr.message : String(writeErr);
2275
+ }
2276
+ }
2277
+ const reportedState = writtenErrorState ?? state;
2278
+ results.push({
2279
+ id: definition.id,
2280
+ displayName: definition.displayName,
2281
+ enabled: true,
2282
+ ran: false,
2283
+ skippedReason: "connector_error",
2284
+ docsImported: 0,
2285
+ error: message,
2286
+ ...stateWriteError !== void 0 ? { stateWriteError } : {},
2287
+ lastSyncAt: reportedState?.lastSyncAt ?? null,
2288
+ nextDueAt: nextDueAt(reportedState, definition.pollIntervalMs)
2289
+ });
2290
+ continue;
2291
+ }
2292
+ results.push(
2293
+ runItemFromResult(
2294
+ definition,
2295
+ runResult,
2296
+ state,
2297
+ lastStateWrittenAt ?? resolveNow(options.now)
2298
+ )
2299
+ );
2300
+ }
2301
+ return {
2302
+ ranAt: ranAt.toISOString(),
2303
+ force,
2304
+ totalDocsImported: results.reduce((sum, item) => sum + item.docsImported, 0),
2305
+ ranCount: results.filter((item) => item.ran).length,
2306
+ skippedCount: results.filter((item) => !item.ran).length,
2307
+ errorCount: results.filter(
2308
+ (item) => item.error !== void 0 || item.stateWriteError !== void 0
2309
+ ).length,
2310
+ results
2311
+ };
2312
+ }
2313
+ function resolveNow(now) {
2314
+ return typeof now === "function" ? now() : now ?? /* @__PURE__ */ new Date();
2315
+ }
2316
+ function isConnectorDue(state, pollIntervalMs, now) {
2317
+ if (state?.lastSyncAt === null || state?.lastSyncAt === void 0) return true;
2318
+ const lastMs = Date.parse(state.lastSyncAt);
2319
+ if (!Number.isFinite(lastMs)) return true;
2320
+ return now.getTime() - lastMs >= Math.max(1, Math.floor(pollIntervalMs));
2321
+ }
2322
+ function nextDueAt(state, pollIntervalMs) {
2323
+ if (state?.lastSyncAt === null || state?.lastSyncAt === void 0) return null;
2324
+ const lastMs = Date.parse(state.lastSyncAt);
2325
+ if (!Number.isFinite(lastMs)) return null;
2326
+ return new Date(lastMs + Math.max(1, Math.floor(pollIntervalMs))).toISOString();
2327
+ }
2328
+ function skipResult(definition, state, skippedReason) {
2329
+ return {
2330
+ id: definition.id,
2331
+ displayName: definition.displayName,
2332
+ enabled: definition.enabled,
2333
+ ran: false,
2334
+ skippedReason,
2335
+ docsImported: 0,
2336
+ lastSyncAt: state?.lastSyncAt ?? null,
2337
+ nextDueAt: skippedReason === "not_due" ? nextDueAt(state, definition.pollIntervalMs) : null
2338
+ };
2339
+ }
2340
+ function runItemFromResult(definition, result, priorState, now) {
2341
+ const stateWriteFailed = result.stateWriteError !== void 0;
2342
+ const reportedLastSyncAt = stateWriteFailed ? priorState?.lastSyncAt ?? null : now.toISOString();
2343
+ const reportedNextDueAt = stateWriteFailed ? nextDueAt(priorState, definition.pollIntervalMs) : new Date(
2344
+ now.getTime() + Math.max(1, Math.floor(definition.pollIntervalMs))
2345
+ ).toISOString();
2346
+ return {
2347
+ id: definition.id,
2348
+ displayName: definition.displayName,
2349
+ enabled: definition.enabled,
2350
+ ran: true,
2351
+ docsImported: result.docsImported,
2352
+ ...result.error !== void 0 ? { error: result.error } : {},
2353
+ ...result.stateWriteError !== void 0 ? { stateWriteError: result.stateWriteError } : {},
2354
+ lastSyncAt: reportedLastSyncAt,
2355
+ nextDueAt: reportedNextDueAt
2356
+ };
2357
+ }
2358
+ function combineAbortSignals(...signals) {
2359
+ const activeSignals = signals.filter((signal) => signal !== void 0);
2360
+ if (activeSignals.length === 0) return void 0;
2361
+ if (activeSignals.length === 1) return activeSignals[0];
2362
+ const abortSignalAny = AbortSignal.any;
2363
+ if (abortSignalAny !== void 0) {
2364
+ return abortSignalAny(activeSignals);
2365
+ }
2366
+ const controller = new AbortController();
2367
+ const abort = (signal) => {
2368
+ if (!controller.signal.aborted) {
2369
+ controller.abort(signal.reason);
2370
+ }
2371
+ };
2372
+ for (const signal of activeSignals) {
2373
+ if (signal.aborted) {
2374
+ abort(signal);
2375
+ break;
2376
+ }
2377
+ signal.addEventListener("abort", () => abort(signal), { once: true });
2378
+ }
2379
+ return controller.signal;
2380
+ }
2381
+ function throwIfAborted2(signal) {
2382
+ if (signal?.aborted !== true) return;
2383
+ const reason = signal.reason;
2384
+ if (reason instanceof Error) {
2385
+ throw reason;
2386
+ }
2387
+ throw abortError(reason === void 0 ? "operation aborted" : String(reason));
2388
+ }
2389
+ async function writeConnectorErrorState(options) {
2390
+ return writeConnectorState(options.memoryDir, options.connectorId, {
2391
+ id: options.connectorId,
2392
+ cursor: options.state?.cursor ?? null,
2393
+ lastSyncAt: options.now.toISOString(),
2394
+ lastSyncStatus: "error",
2395
+ lastSyncError: options.error,
2396
+ totalDocsImported: options.state?.totalDocsImported ?? 0
2397
+ });
2398
+ }
2399
+
2072
2400
  export {
2073
2401
  LiveConnectorRegistryError,
2074
2402
  LiveConnectorRegistry,
@@ -2084,12 +2412,13 @@ export {
2084
2412
  validateNotionConfig,
2085
2413
  createNotionConnector,
2086
2414
  GMAIL_CONNECTOR_ID,
2087
- GMAIL_DEFAULT_POLL_INTERVAL_MS,
2088
2415
  validateGmailConfig,
2089
2416
  createGmailConnector,
2090
2417
  GITHUB_CONNECTOR_ID,
2091
- GITHUB_DEFAULT_POLL_INTERVAL_MS,
2092
2418
  validateGitHubConfig,
2093
- createGitHubConnector
2419
+ createGitHubConnector,
2420
+ builtInLiveConnectorDefinitions,
2421
+ hasEnabledLiveConnector,
2422
+ runLiveConnectorsOnce
2094
2423
  };
2095
- //# sourceMappingURL=chunk-NBH6K6G5.js.map
2424
+ //# sourceMappingURL=chunk-V65H7MI6.js.map