@remnic/core 10.0.92 → 10.0.94

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 (501) hide show
  1. package/dist/access-admin-ops-surface.js +332 -59
  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 +287 -303
  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 +332 -59
  10. package/dist/access-http-briefing.js +332 -60
  11. package/dist/access-http-query.js +332 -61
  12. package/dist/access-http.js +330 -112
  13. package/dist/access-identity-continuity-surface.js +332 -59
  14. package/dist/access-lcm-surface.js +332 -59
  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 +330 -87
  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 +332 -59
  25. package/dist/access-offline-manifest.js +12 -11
  26. package/dist/access-operations-batch.js +330 -64
  27. package/dist/access-operations.js +330 -73
  28. package/dist/access-recall-concurrency.js +332 -59
  29. package/dist/access-recall-diagnostics.js +5 -4
  30. package/dist/access-recall-response.js +332 -59
  31. package/dist/access-recall-surface.js +332 -59
  32. package/dist/access-schema.js +2 -2
  33. package/dist/access-service.js +335 -62
  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 +36 -37
  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 +20 -20
  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 +23 -23
  49. package/dist/{chunk-RGUUBAT5.js → chunk-2WCLTWV2.js} +3 -3
  50. package/dist/{chunk-BQZEGOZ4.js → chunk-2YODOG2O.js} +2 -2
  51. package/dist/{chunk-WYG5UNDY.js → chunk-3AUDELZL.js} +2 -2
  52. package/dist/{chunk-MB6ZJDN6.js → chunk-3FBAEPCU.js} +2 -2
  53. package/dist/{chunk-PIITB2YZ.js → chunk-3ZS3NUEI.js} +4 -4
  54. package/dist/{chunk-ATPWZ4F7.js → chunk-4EZWSDFL.js} +5 -5
  55. package/dist/{chunk-ANZZLRUX.js → chunk-4IVRQMZW.js} +2 -2
  56. package/dist/{chunk-63E37JCN.js → chunk-4RAJT5L2.js} +4 -4
  57. package/dist/{chunk-45VUHDV2.js → chunk-5CO5G4MN.js} +2 -2
  58. package/dist/{chunk-LUJCQQ3L.js → chunk-65HWAQ4F.js} +2 -2
  59. package/dist/{chunk-T67LUYCR.js → chunk-77NTFICT.js} +5 -5
  60. package/dist/chunk-A2WFUMUN.js +86 -0
  61. package/dist/chunk-A2WFUMUN.js.map +1 -0
  62. package/dist/{chunk-UE6RRXMF.js → chunk-A4F7OIC5.js} +2 -2
  63. package/dist/chunk-AHA5VQGP.js +117 -0
  64. package/dist/chunk-AHA5VQGP.js.map +1 -0
  65. package/dist/{chunk-RRJBDXAQ.js → chunk-B377OKUP.js} +2 -2
  66. package/dist/{chunk-IUKYFTGW.js → chunk-B3DR2JBZ.js} +140 -125
  67. package/dist/chunk-B3DR2JBZ.js.map +1 -0
  68. package/dist/{chunk-Z7JIZ42P.js → chunk-BN2EBCLB.js} +3 -3
  69. package/dist/{chunk-YYOMGOHB.js → chunk-BOK6BN5M.js} +2 -2
  70. package/dist/{chunk-U6UNF5ZS.js → chunk-BPK32FRM.js} +3 -3
  71. package/dist/{chunk-OH7QLI6W.js → chunk-BPPUH5JM.js} +5 -5
  72. package/dist/{chunk-O6ZSWHVR.js → chunk-C2KE5DMD.js} +4 -4
  73. package/dist/{chunk-47F6WWLQ.js → chunk-C73N66PR.js} +2 -2
  74. package/dist/{chunk-WRT7GJ2D.js → chunk-CIWMTNHW.js} +4 -4
  75. package/dist/{chunk-HF3BKUVV.js → chunk-CL4JU3DF.js} +7 -7
  76. package/dist/{chunk-O55EKIEC.js → chunk-D3ZKHLN2.js} +2 -2
  77. package/dist/chunk-D5S6RL32.js +67137 -0
  78. package/dist/chunk-D5S6RL32.js.map +1 -0
  79. package/dist/{chunk-ETZLQOUR.js → chunk-D5XG2KPS.js} +2 -2
  80. package/dist/{chunk-CD4BCCNP.js → chunk-DJ7WVEWX.js} +2 -2
  81. package/dist/{chunk-PWXPRVLK.js → chunk-DNY63QWJ.js} +2 -2
  82. package/dist/{chunk-4CJTQHEG.js → chunk-ESLOLCD4.js} +3 -3
  83. package/dist/{chunk-VILPVT4S.js → chunk-EZ47HOJ6.js} +4 -4
  84. package/dist/{chunk-EFYN5I7Z.js → chunk-F4QFU5IZ.js} +2 -2
  85. package/dist/{chunk-T6OZW2WR.js → chunk-FA7SLQ5X.js} +7 -1
  86. package/dist/chunk-FA7SLQ5X.js.map +1 -0
  87. package/dist/{chunk-BRLXOZLM.js → chunk-FQAQ63QA.js} +729 -17
  88. package/dist/chunk-FQAQ63QA.js.map +1 -0
  89. package/dist/{chunk-FSO3G4JJ.js → chunk-FWRXW7CZ.js} +5000 -2748
  90. package/dist/chunk-FWRXW7CZ.js.map +1 -0
  91. package/dist/{chunk-XYKBWTWI.js → chunk-FZZMLGWQ.js} +2 -2
  92. package/dist/{chunk-FNXQZGUS.js → chunk-GBJUTX44.js} +2 -2
  93. package/dist/{chunk-YLXETSAH.js → chunk-GCZJ7XRI.js} +2 -2
  94. package/dist/{chunk-UDKWFDV2.js → chunk-HLUHEMN4.js} +27 -3
  95. package/dist/chunk-HLUHEMN4.js.map +1 -0
  96. package/dist/{chunk-SUSW74WU.js → chunk-IL3RHBWM.js} +56 -5
  97. package/dist/chunk-IL3RHBWM.js.map +1 -0
  98. package/dist/{chunk-JV4S6VDH.js → chunk-ILY5SSOM.js} +2 -2
  99. package/dist/{chunk-EXHXJETE.js → chunk-IQ55QGY5.js} +2 -2
  100. package/dist/{chunk-4J363OAA.js → chunk-J7BIFOYP.js} +2 -2
  101. package/dist/{chunk-QFEDITXM.js → chunk-JNDMIAJ4.js} +2 -2
  102. package/dist/chunk-JTSSSR4L.js +359 -0
  103. package/dist/chunk-JTSSSR4L.js.map +1 -0
  104. package/dist/{chunk-5KBIOI4G.js → chunk-JVBAPAWZ.js} +217 -13
  105. package/dist/chunk-JVBAPAWZ.js.map +1 -0
  106. package/dist/{chunk-E5PPE4VA.js → chunk-K2VRKCPA.js} +2 -2
  107. package/dist/{chunk-MKRYQROF.js → chunk-LGEHAQHK.js} +4 -4
  108. package/dist/{chunk-7HTUYFR3.js → chunk-LLPMMMWG.js} +27 -10
  109. package/dist/chunk-LLPMMMWG.js.map +1 -0
  110. package/dist/{chunk-XYTQJD7F.js → chunk-LMJVP5CM.js} +2 -2
  111. package/dist/{chunk-E7YZXWIS.js → chunk-LNGELD2M.js} +2 -2
  112. package/dist/{chunk-FQKBJJYB.js → chunk-LPV72KRQ.js} +2 -2
  113. package/dist/{chunk-2LCRG2YV.js → chunk-M2XR6B6V.js} +2 -2
  114. package/dist/{chunk-EQ4U73UH.js → chunk-MLAMXQAW.js} +14 -2
  115. package/dist/chunk-MLAMXQAW.js.map +1 -0
  116. package/dist/{chunk-ZU5JDLOH.js → chunk-MMRTPH3J.js} +2 -2
  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-RIMK327Y.js → chunk-OUVYYKYU.js} +7 -7
  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-RWGRSKN5.js → chunk-PT4DZDJA.js} +2 -2
  130. package/dist/{chunk-7EPY3IQL.js → chunk-PZJQ46DH.js} +2 -2
  131. package/dist/{chunk-MXHMNKWG.js → chunk-QDESY76F.js} +3 -3
  132. package/dist/{chunk-E3A7ELSG.js → chunk-QHARXWTC.js} +2 -2
  133. package/dist/{chunk-BLJT6JP2.js → chunk-QMFAMOT2.js} +2 -2
  134. package/dist/{chunk-I6QGI65T.js → chunk-QRMG4HK4.js} +3 -3
  135. package/dist/{chunk-ZU3NJNO7.js → chunk-QSF5SJAM.js} +4 -4
  136. package/dist/{chunk-5IYOKDM4.js → chunk-R23JWJD3.js} +5 -5
  137. package/dist/{chunk-RHQLIHMB.js → chunk-R4BBGPI2.js} +218 -218
  138. package/dist/chunk-R4BBGPI2.js.map +1 -0
  139. package/dist/{chunk-NT7F7WJQ.js → chunk-RFUL2ZIQ.js} +291 -93
  140. package/dist/chunk-RFUL2ZIQ.js.map +1 -0
  141. package/dist/{chunk-E4IRW2FG.js → chunk-RKABLU5M.js} +233 -40
  142. package/dist/chunk-RKABLU5M.js.map +1 -0
  143. package/dist/{chunk-P4WNBSTW.js → chunk-RNG7S3FY.js} +2 -2
  144. package/dist/{chunk-IPT2OY4B.js → chunk-RQFXZYTF.js} +35 -33
  145. package/dist/chunk-RQFXZYTF.js.map +1 -0
  146. package/dist/{chunk-5HFXGXE5.js → chunk-RUTN5MMC.js} +7 -9
  147. package/dist/{chunk-5HFXGXE5.js.map → chunk-RUTN5MMC.js.map} +1 -1
  148. package/dist/{chunk-AP6NCP3V.js → chunk-S3S72HRM.js} +8 -6
  149. package/dist/chunk-S3S72HRM.js.map +1 -0
  150. package/dist/{chunk-ZGFLIK5H.js → chunk-SPAKBUJY.js} +2 -2
  151. package/dist/{chunk-ER7XANP3.js → chunk-SQ3GEIEL.js} +4 -4
  152. package/dist/{chunk-PMJFRDJI.js → chunk-SUTEBYGI.js} +2 -2
  153. package/dist/{chunk-HVX4LPNY.js → chunk-T4KY6UYF.js} +5 -3
  154. package/dist/{chunk-HVX4LPNY.js.map → chunk-T4KY6UYF.js.map} +1 -1
  155. package/dist/{chunk-R6HMAIKM.js → chunk-TOSPNM4T.js} +2 -2
  156. package/dist/{chunk-RMXS4I66.js → chunk-TVDJEUV5.js} +2 -2
  157. package/dist/{chunk-PLCYKAWH.js → chunk-TYRWSE4B.js} +2 -2
  158. package/dist/{chunk-B4QYQFGY.js → chunk-UBEKET2V.js} +383 -36
  159. package/dist/chunk-UBEKET2V.js.map +1 -0
  160. package/dist/{chunk-IQWUACVG.js → chunk-UHMHJX5G.js} +3 -3
  161. package/dist/{chunk-YODUDA6R.js → chunk-UN4RVUG2.js} +22 -22
  162. package/dist/{chunk-E6Z4FBX6.js → chunk-V2QSNFCT.js} +2 -2
  163. package/dist/{chunk-NBH6K6G5.js → chunk-V65H7MI6.js} +345 -16
  164. package/dist/chunk-V65H7MI6.js.map +1 -0
  165. package/dist/chunk-W54Z2MOP.js +4500 -0
  166. package/dist/chunk-W54Z2MOP.js.map +1 -0
  167. package/dist/{chunk-7W3RXOIG.js → chunk-WGGRZYSQ.js} +14 -14
  168. package/dist/{chunk-RIZ5NUNN.js → chunk-WQ4XKIOX.js} +4 -4
  169. package/dist/{chunk-QEYTRFR3.js → chunk-X26YOFGS.js} +2 -2
  170. package/dist/{chunk-ITHZFHST.js → chunk-X2BVB74H.js} +2 -2
  171. package/dist/{chunk-6F42QONS.js → chunk-X5HGU2EM.js} +4 -4
  172. package/dist/{chunk-GVGAO3WV.js → chunk-XJ2S5UBF.js} +3 -3
  173. package/dist/{chunk-IBJ6U753.js → chunk-XKZBZOKV.js} +4 -4
  174. package/dist/{chunk-65AUYLU3.js → chunk-XPXHQI6N.js} +2 -2
  175. package/dist/chunk-XRWWCW4H.js +102 -0
  176. package/dist/chunk-XRWWCW4H.js.map +1 -0
  177. package/dist/{chunk-HH5LY6RR.js → chunk-YIXJSW5M.js} +5 -5
  178. package/dist/{chunk-2JSDPUKD.js → chunk-YMFPFXEX.js} +2 -2
  179. package/dist/{chunk-N4KAE2NB.js → chunk-Z3FTSHT5.js} +3 -3
  180. package/dist/{chunk-7GLJMDEQ.js → chunk-ZDV5YWID.js} +6 -6
  181. package/dist/{chunk-645WOU5I.js → chunk-ZDZJNXL6.js} +4 -4
  182. package/dist/{chunk-6TCXIRP5.js → chunk-ZKE4CO6B.js} +4 -4
  183. package/dist/cli.js +303 -185
  184. package/dist/coding/export-okf-codegraph.js +29 -29
  185. package/dist/compounding/engine.js +23 -24
  186. package/dist/config.js +36 -37
  187. package/dist/connectors/codex-materialize-runner.js +20 -20
  188. package/dist/connectors/index.js +21 -21
  189. package/dist/connectors/live/google-drive.d.ts +2 -0
  190. package/dist/connectors/live/google-drive.d.ts.map +1 -1
  191. package/dist/consolidation-provenance-check.js +4 -4
  192. package/dist/consolidation-undo.js +5 -5
  193. package/dist/contradiction/index.js +7 -6
  194. package/dist/{contradiction-scan-P2MHYFVG.js → contradiction-scan-IBPYGQZF.js} +4 -3
  195. package/dist/convergence-refresh.js +22 -22
  196. package/dist/corpus-watermark.js +23 -23
  197. package/dist/deep-recall-http-glue.js +2 -2
  198. package/dist/deep-recall-policy-llm.js +4 -4
  199. package/dist/direct-answer-wiring.js +2 -2
  200. package/dist/embedding-fallback.js +1 -1
  201. package/dist/entity-retrieval.js +21 -21
  202. package/dist/eval-trajectory-store.js +2 -2
  203. package/dist/eval-trajectory.js +2 -2
  204. package/dist/event-order-recall.js +2 -2
  205. package/dist/explicit-capture.d.ts +3 -2
  206. package/dist/explicit-capture.d.ts.map +1 -1
  207. package/dist/explicit-capture.js +530 -6
  208. package/dist/explicit-cue-recall.js +2 -2
  209. package/dist/external-wiki-access.js +2 -283
  210. package/dist/extraction-faithfulness.js +4 -4
  211. package/dist/extraction-judge.js +5 -5
  212. package/dist/extraction-normalization.js +1 -1
  213. package/dist/extraction-quote-grounding.d.ts.map +1 -1
  214. package/dist/extraction-quote-grounding.js +1 -1
  215. package/dist/extraction-source-grounding-rules.js +2 -2
  216. package/dist/extraction-source-grounding.js +3 -3
  217. package/dist/extraction.js +43 -44
  218. package/dist/fallback-llm-codex-subscription.js +2 -2
  219. package/dist/fallback-llm.js +3 -3
  220. package/dist/{first-start-migration-QFI7B5SH.js → first-start-migration-FILJH3RO.js} +6 -5
  221. package/dist/{first-start-migration-QFI7B5SH.js.map → first-start-migration-FILJH3RO.js.map} +1 -1
  222. package/dist/focused-list-recall.js +2 -2
  223. package/dist/harmonic-retrieval.js +20 -20
  224. package/dist/index.js +773 -794
  225. package/dist/lcm/index.js +2 -2
  226. package/dist/live-connectors-runner.js +2 -3
  227. package/dist/local-llm-config.js +2 -2
  228. package/dist/local-llm-helpers.d.ts +4 -0
  229. package/dist/local-llm-helpers.d.ts.map +1 -1
  230. package/dist/local-llm-helpers.js +3 -1
  231. package/dist/local-llm.d.ts +4 -1
  232. package/dist/local-llm.d.ts.map +1 -1
  233. package/dist/local-llm.js +4 -4
  234. package/dist/location/index.js +27 -29
  235. package/dist/maintenance/memory-governance.js +20 -20
  236. package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +20 -20
  237. package/dist/maintenance/rebuild-memory-projection-runner.js +22 -22
  238. package/dist/maintenance/rebuild-memory-projection.js +21 -21
  239. package/dist/memory-browse-operations.js +2 -283
  240. package/dist/memory-browse.js +8 -7
  241. package/dist/memory-controller.js +2 -2
  242. package/dist/memory-subject.js +2 -2
  243. package/dist/namespaces/migrate.js +21 -21
  244. package/dist/namespaces/search.js +5 -5
  245. package/dist/namespaces/storage.js +20 -20
  246. package/dist/offline-sync-changeset-generations.js +1 -1
  247. package/dist/offline-sync-embedding-generation.js +1 -1
  248. package/dist/offline-sync-impression-drain.js +6 -6
  249. package/dist/offline-sync-snapshot-stream.js +1 -1
  250. package/dist/offline-sync.js +1 -1
  251. package/dist/operator-doctor-corpus.js +24 -24
  252. package/dist/operator-toolkit.js +58 -61
  253. package/dist/orchestration/backlog-scheduler.js +278 -294
  254. package/dist/orchestration/backlog-scheduler.js.map +1 -1
  255. package/dist/orchestration/buffer-drain-runner.js +278 -294
  256. package/dist/orchestration/extraction-run.d.ts +4 -0
  257. package/dist/orchestration/extraction-run.d.ts.map +1 -1
  258. package/dist/orchestration/fact-dedup-window.d.ts +1 -1
  259. package/dist/orchestration/fact-dedup-window.d.ts.map +1 -1
  260. package/dist/orchestration/maintenance.js +39 -42
  261. package/dist/orchestrator.d.ts +9 -11
  262. package/dist/orchestrator.d.ts.map +1 -1
  263. package/dist/orchestrator.js +290 -307
  264. package/dist/page-versioning.js +3 -3
  265. package/dist/qmd-daemon-session.js +2 -2
  266. package/dist/qmd.js +3 -3
  267. package/dist/recall-explain-renderer.js +1 -1
  268. package/dist/recall-navigation-operations.js +2 -283
  269. package/dist/recall-navigation.js +332 -59
  270. package/dist/recall-planner-llm.js +3 -3
  271. package/dist/recall-state-view-admission.js +6 -6
  272. package/dist/recall-why-service.js +10 -9
  273. package/dist/recall-why.js +4 -3
  274. package/dist/recall-xray-cli.js +2 -2
  275. package/dist/recall-xray-renderer.js +1 -1
  276. package/dist/reconcile/manifest.js +3 -3
  277. package/dist/{resolution-N7H3F2E4.js → resolution-OVVIF7ZY.js} +8 -7
  278. package/dist/response-guidance-recall.js +2 -2
  279. package/dist/resume-bundles.js +40 -41
  280. package/dist/salvage-envelope.js +4 -4
  281. package/dist/search/factory.js +4 -4
  282. package/dist/search/index.js +4 -4
  283. package/dist/semantic-consolidation.js +23 -23
  284. package/dist/semantic-rule-promotion.js +20 -20
  285. package/dist/semantic-rule-verifier.js +20 -20
  286. package/dist/shared-context/manager.js +2 -3
  287. package/dist/source-agent-qualifier.js +32 -33
  288. package/dist/standup/build.js +20 -20
  289. package/dist/storage/buffer-drain-claims.d.ts +97 -12
  290. package/dist/storage/buffer-drain-claims.d.ts.map +1 -1
  291. package/dist/storage/buffer-drain-claims.js +1 -1
  292. package/dist/storage/buffer-session-files.d.ts +4 -0
  293. package/dist/storage/buffer-session-files.d.ts.map +1 -1
  294. package/dist/storage/buffer-session-files.js +1 -1
  295. package/dist/storage/content-hash-index.d.ts +10 -0
  296. package/dist/storage/content-hash-index.d.ts.map +1 -1
  297. package/dist/storage.d.ts.map +1 -1
  298. package/dist/storage.js +19 -19
  299. package/dist/subject-config.js +3 -3
  300. package/dist/summarizer.d.ts +4 -1
  301. package/dist/summarizer.d.ts.map +1 -1
  302. package/dist/summarizer.js +6 -6
  303. package/dist/support-passport/index.js +53 -297
  304. package/dist/targeted-fact-recall.js +2 -2
  305. package/dist/tier-routing.js +3 -2
  306. package/dist/{tier-stats-FQGQSFET.js → tier-stats-FXEUJN73.js} +6 -5
  307. package/dist/{tier-stats-FQGQSFET.js.map → tier-stats-FXEUJN73.js.map} +1 -1
  308. package/dist/transcript.js +2 -2
  309. package/dist/transfer/capsule-import.js +4 -4
  310. package/dist/transfer/export-okf.js +20 -20
  311. package/dist/verified-recall.js +20 -20
  312. package/dist/wearables/memory-gen.d.ts +5 -1
  313. package/dist/wearables/memory-gen.d.ts.map +1 -1
  314. package/dist/wearables/service.d.ts.map +1 -1
  315. package/dist/who-knows-cli.js +21 -21
  316. package/dist/who-knows.js +20 -20
  317. package/dist/write-envelope.js +3 -3
  318. package/package.json +2 -2
  319. package/src/access-boundary.ts +5 -1
  320. package/src/access-category-alias.test.ts +5 -0
  321. package/src/access-mcp-frames.test.ts +60 -5
  322. package/src/access-mcp-frames.ts +72 -18
  323. package/src/access-mcp.test.ts +66 -2
  324. package/src/access-mcp.ts +19 -13
  325. package/src/access-service-coding-write.test.ts +7 -0
  326. package/src/activity/journal-extract-storage.test.ts +31 -0
  327. package/src/activity/journal-extract.test.ts +1 -0
  328. package/src/activity/journal-extract.ts +24 -3
  329. package/src/buffer-drain-handover.test.ts +5 -1
  330. package/src/connectors/live/google-drive.test.ts +39 -0
  331. package/src/connectors/live/google-drive.ts +41 -12
  332. package/src/explicit-capture.test.ts +109 -17
  333. package/src/explicit-capture.ts +90 -37
  334. package/src/extraction-quote-grounding.test.ts +20 -0
  335. package/src/extraction-quote-grounding.ts +21 -11
  336. package/src/fact-dedup-window.test.ts +37 -0
  337. package/src/local-llm-helpers.ts +12 -0
  338. package/src/local-llm-shutdown.test.ts +194 -0
  339. package/src/local-llm.ts +32 -30
  340. package/src/orchestration/extraction-run.ts +12 -3
  341. package/src/orchestration/fact-dedup-window.ts +5 -1
  342. package/src/orchestrator-connector-dedup.test.ts +9 -5
  343. package/src/orchestrator.ts +47 -50
  344. package/src/storage/buffer-drain-claims.test.ts +385 -1
  345. package/src/storage/buffer-drain-claims.ts +380 -97
  346. package/src/storage/buffer-session-files.ts +4 -0
  347. package/src/storage/content-hash-index.ts +27 -2
  348. package/src/storage-fact-hash-publish-failure.test.ts +87 -0
  349. package/src/storage.ts +5 -1
  350. package/src/summarizer-shutdown.test.ts +195 -0
  351. package/src/summarizer.ts +15 -2
  352. package/src/wearables/memory-gen.test.ts +20 -0
  353. package/src/wearables/memory-gen.ts +14 -7
  354. package/src/wearables/service.ts +14 -1
  355. package/src/wearables/storage-io.test.ts +25 -0
  356. package/dist/chunk-2FGLEF7C.js +0 -61
  357. package/dist/chunk-2FGLEF7C.js.map +0 -1
  358. package/dist/chunk-3RLK65ZK.js +0 -203
  359. package/dist/chunk-3RLK65ZK.js.map +0 -1
  360. package/dist/chunk-4WR2OD7K.js +0 -43
  361. package/dist/chunk-4WR2OD7K.js.map +0 -1
  362. package/dist/chunk-5KBIOI4G.js.map +0 -1
  363. package/dist/chunk-5M5M22GW.js +0 -346
  364. package/dist/chunk-5M5M22GW.js.map +0 -1
  365. package/dist/chunk-7HTUYFR3.js.map +0 -1
  366. package/dist/chunk-AP6NCP3V.js.map +0 -1
  367. package/dist/chunk-B4QYQFGY.js.map +0 -1
  368. package/dist/chunk-BJRTMNCB.js +0 -1919
  369. package/dist/chunk-BJRTMNCB.js.map +0 -1
  370. package/dist/chunk-BRLXOZLM.js.map +0 -1
  371. package/dist/chunk-BSACVS6R.js +0 -621
  372. package/dist/chunk-BSACVS6R.js.map +0 -1
  373. package/dist/chunk-DKAA2IHQ.js +0 -3644
  374. package/dist/chunk-DKAA2IHQ.js.map +0 -1
  375. package/dist/chunk-E4IRW2FG.js.map +0 -1
  376. package/dist/chunk-E6M225BJ.js.map +0 -1
  377. package/dist/chunk-EQ4U73UH.js.map +0 -1
  378. package/dist/chunk-ETSJD5IV.js +0 -361
  379. package/dist/chunk-ETSJD5IV.js.map +0 -1
  380. package/dist/chunk-F55YQP7N.js +0 -336
  381. package/dist/chunk-F55YQP7N.js.map +0 -1
  382. package/dist/chunk-FHGWKODN.js +0 -2300
  383. package/dist/chunk-FHGWKODN.js.map +0 -1
  384. package/dist/chunk-FLRP63GU.js +0 -32219
  385. package/dist/chunk-FLRP63GU.js.map +0 -1
  386. package/dist/chunk-FSO3G4JJ.js.map +0 -1
  387. package/dist/chunk-ID6JGIMD.js +0 -25
  388. package/dist/chunk-ID6JGIMD.js.map +0 -1
  389. package/dist/chunk-IGLJNHOX.js +0 -62
  390. package/dist/chunk-IGLJNHOX.js.map +0 -1
  391. package/dist/chunk-IPT2OY4B.js.map +0 -1
  392. package/dist/chunk-IUKYFTGW.js.map +0 -1
  393. package/dist/chunk-NBH6K6G5.js.map +0 -1
  394. package/dist/chunk-NT7F7WJQ.js.map +0 -1
  395. package/dist/chunk-NTRUKAAE.js +0 -223
  396. package/dist/chunk-NTRUKAAE.js.map +0 -1
  397. package/dist/chunk-OGXXGHW6.js +0 -223
  398. package/dist/chunk-OGXXGHW6.js.map +0 -1
  399. package/dist/chunk-PPCLZ4JU.js +0 -28
  400. package/dist/chunk-PPCLZ4JU.js.map +0 -1
  401. package/dist/chunk-QJPJXCS4.js.map +0 -1
  402. package/dist/chunk-R2LBF4HH.js +0 -729
  403. package/dist/chunk-R2LBF4HH.js.map +0 -1
  404. package/dist/chunk-RHQLIHMB.js.map +0 -1
  405. package/dist/chunk-RRTVGD3J.js +0 -792
  406. package/dist/chunk-RRTVGD3J.js.map +0 -1
  407. package/dist/chunk-SUSW74WU.js.map +0 -1
  408. package/dist/chunk-T6OZW2WR.js.map +0 -1
  409. package/dist/chunk-UDKWFDV2.js.map +0 -1
  410. package/dist/chunk-V7IZKJI3.js +0 -22
  411. package/dist/chunk-V7IZKJI3.js.map +0 -1
  412. package/dist/chunk-X562NQFA.js +0 -10144
  413. package/dist/chunk-X562NQFA.js.map +0 -1
  414. package/dist/chunk-XDSCJOH7.js +0 -3991
  415. package/dist/chunk-XDSCJOH7.js.map +0 -1
  416. package/dist/chunk-YCNIGRRF.js.map +0 -1
  417. package/dist/chunk-ZTTCDQ4I.js +0 -18796
  418. package/dist/chunk-ZTTCDQ4I.js.map +0 -1
  419. /package/dist/{capsule-merge-2IIXFXN5.js.map → capsule-merge-6IDAYTKG.js.map} +0 -0
  420. /package/dist/{chunk-RGUUBAT5.js.map → chunk-2WCLTWV2.js.map} +0 -0
  421. /package/dist/{chunk-BQZEGOZ4.js.map → chunk-2YODOG2O.js.map} +0 -0
  422. /package/dist/{chunk-WYG5UNDY.js.map → chunk-3AUDELZL.js.map} +0 -0
  423. /package/dist/{chunk-MB6ZJDN6.js.map → chunk-3FBAEPCU.js.map} +0 -0
  424. /package/dist/{chunk-PIITB2YZ.js.map → chunk-3ZS3NUEI.js.map} +0 -0
  425. /package/dist/{chunk-ATPWZ4F7.js.map → chunk-4EZWSDFL.js.map} +0 -0
  426. /package/dist/{chunk-ANZZLRUX.js.map → chunk-4IVRQMZW.js.map} +0 -0
  427. /package/dist/{chunk-63E37JCN.js.map → chunk-4RAJT5L2.js.map} +0 -0
  428. /package/dist/{chunk-45VUHDV2.js.map → chunk-5CO5G4MN.js.map} +0 -0
  429. /package/dist/{chunk-LUJCQQ3L.js.map → chunk-65HWAQ4F.js.map} +0 -0
  430. /package/dist/{chunk-T67LUYCR.js.map → chunk-77NTFICT.js.map} +0 -0
  431. /package/dist/{chunk-UE6RRXMF.js.map → chunk-A4F7OIC5.js.map} +0 -0
  432. /package/dist/{chunk-RRJBDXAQ.js.map → chunk-B377OKUP.js.map} +0 -0
  433. /package/dist/{chunk-Z7JIZ42P.js.map → chunk-BN2EBCLB.js.map} +0 -0
  434. /package/dist/{chunk-YYOMGOHB.js.map → chunk-BOK6BN5M.js.map} +0 -0
  435. /package/dist/{chunk-U6UNF5ZS.js.map → chunk-BPK32FRM.js.map} +0 -0
  436. /package/dist/{chunk-OH7QLI6W.js.map → chunk-BPPUH5JM.js.map} +0 -0
  437. /package/dist/{chunk-O6ZSWHVR.js.map → chunk-C2KE5DMD.js.map} +0 -0
  438. /package/dist/{chunk-47F6WWLQ.js.map → chunk-C73N66PR.js.map} +0 -0
  439. /package/dist/{chunk-WRT7GJ2D.js.map → chunk-CIWMTNHW.js.map} +0 -0
  440. /package/dist/{chunk-HF3BKUVV.js.map → chunk-CL4JU3DF.js.map} +0 -0
  441. /package/dist/{chunk-O55EKIEC.js.map → chunk-D3ZKHLN2.js.map} +0 -0
  442. /package/dist/{chunk-ETZLQOUR.js.map → chunk-D5XG2KPS.js.map} +0 -0
  443. /package/dist/{chunk-CD4BCCNP.js.map → chunk-DJ7WVEWX.js.map} +0 -0
  444. /package/dist/{chunk-PWXPRVLK.js.map → chunk-DNY63QWJ.js.map} +0 -0
  445. /package/dist/{chunk-4CJTQHEG.js.map → chunk-ESLOLCD4.js.map} +0 -0
  446. /package/dist/{chunk-VILPVT4S.js.map → chunk-EZ47HOJ6.js.map} +0 -0
  447. /package/dist/{chunk-EFYN5I7Z.js.map → chunk-F4QFU5IZ.js.map} +0 -0
  448. /package/dist/{chunk-XYKBWTWI.js.map → chunk-FZZMLGWQ.js.map} +0 -0
  449. /package/dist/{chunk-FNXQZGUS.js.map → chunk-GBJUTX44.js.map} +0 -0
  450. /package/dist/{chunk-YLXETSAH.js.map → chunk-GCZJ7XRI.js.map} +0 -0
  451. /package/dist/{chunk-JV4S6VDH.js.map → chunk-ILY5SSOM.js.map} +0 -0
  452. /package/dist/{chunk-EXHXJETE.js.map → chunk-IQ55QGY5.js.map} +0 -0
  453. /package/dist/{chunk-4J363OAA.js.map → chunk-J7BIFOYP.js.map} +0 -0
  454. /package/dist/{chunk-QFEDITXM.js.map → chunk-JNDMIAJ4.js.map} +0 -0
  455. /package/dist/{chunk-E5PPE4VA.js.map → chunk-K2VRKCPA.js.map} +0 -0
  456. /package/dist/{chunk-MKRYQROF.js.map → chunk-LGEHAQHK.js.map} +0 -0
  457. /package/dist/{chunk-XYTQJD7F.js.map → chunk-LMJVP5CM.js.map} +0 -0
  458. /package/dist/{chunk-E7YZXWIS.js.map → chunk-LNGELD2M.js.map} +0 -0
  459. /package/dist/{chunk-FQKBJJYB.js.map → chunk-LPV72KRQ.js.map} +0 -0
  460. /package/dist/{chunk-2LCRG2YV.js.map → chunk-M2XR6B6V.js.map} +0 -0
  461. /package/dist/{chunk-ZU5JDLOH.js.map → chunk-MMRTPH3J.js.map} +0 -0
  462. /package/dist/{chunk-TVIVY7KU.js.map → chunk-NED7IR7B.js.map} +0 -0
  463. /package/dist/{chunk-6F5MJFXY.js.map → chunk-NHVAX7MH.js.map} +0 -0
  464. /package/dist/{chunk-TG3R2SID.js.map → chunk-NMGHGTVR.js.map} +0 -0
  465. /package/dist/{chunk-NGHDW6UU.js.map → chunk-NUQEREIP.js.map} +0 -0
  466. /package/dist/{chunk-5IIQU4JZ.js.map → chunk-OB72KNMF.js.map} +0 -0
  467. /package/dist/{chunk-RIMK327Y.js.map → chunk-OUVYYKYU.js.map} +0 -0
  468. /package/dist/{chunk-RWGRSKN5.js.map → chunk-PT4DZDJA.js.map} +0 -0
  469. /package/dist/{chunk-7EPY3IQL.js.map → chunk-PZJQ46DH.js.map} +0 -0
  470. /package/dist/{chunk-MXHMNKWG.js.map → chunk-QDESY76F.js.map} +0 -0
  471. /package/dist/{chunk-E3A7ELSG.js.map → chunk-QHARXWTC.js.map} +0 -0
  472. /package/dist/{chunk-BLJT6JP2.js.map → chunk-QMFAMOT2.js.map} +0 -0
  473. /package/dist/{chunk-I6QGI65T.js.map → chunk-QRMG4HK4.js.map} +0 -0
  474. /package/dist/{chunk-ZU3NJNO7.js.map → chunk-QSF5SJAM.js.map} +0 -0
  475. /package/dist/{chunk-5IYOKDM4.js.map → chunk-R23JWJD3.js.map} +0 -0
  476. /package/dist/{chunk-P4WNBSTW.js.map → chunk-RNG7S3FY.js.map} +0 -0
  477. /package/dist/{chunk-ZGFLIK5H.js.map → chunk-SPAKBUJY.js.map} +0 -0
  478. /package/dist/{chunk-ER7XANP3.js.map → chunk-SQ3GEIEL.js.map} +0 -0
  479. /package/dist/{chunk-PMJFRDJI.js.map → chunk-SUTEBYGI.js.map} +0 -0
  480. /package/dist/{chunk-R6HMAIKM.js.map → chunk-TOSPNM4T.js.map} +0 -0
  481. /package/dist/{chunk-RMXS4I66.js.map → chunk-TVDJEUV5.js.map} +0 -0
  482. /package/dist/{chunk-PLCYKAWH.js.map → chunk-TYRWSE4B.js.map} +0 -0
  483. /package/dist/{chunk-IQWUACVG.js.map → chunk-UHMHJX5G.js.map} +0 -0
  484. /package/dist/{chunk-YODUDA6R.js.map → chunk-UN4RVUG2.js.map} +0 -0
  485. /package/dist/{chunk-E6Z4FBX6.js.map → chunk-V2QSNFCT.js.map} +0 -0
  486. /package/dist/{chunk-7W3RXOIG.js.map → chunk-WGGRZYSQ.js.map} +0 -0
  487. /package/dist/{chunk-RIZ5NUNN.js.map → chunk-WQ4XKIOX.js.map} +0 -0
  488. /package/dist/{chunk-QEYTRFR3.js.map → chunk-X26YOFGS.js.map} +0 -0
  489. /package/dist/{chunk-ITHZFHST.js.map → chunk-X2BVB74H.js.map} +0 -0
  490. /package/dist/{chunk-6F42QONS.js.map → chunk-X5HGU2EM.js.map} +0 -0
  491. /package/dist/{chunk-GVGAO3WV.js.map → chunk-XJ2S5UBF.js.map} +0 -0
  492. /package/dist/{chunk-IBJ6U753.js.map → chunk-XKZBZOKV.js.map} +0 -0
  493. /package/dist/{chunk-65AUYLU3.js.map → chunk-XPXHQI6N.js.map} +0 -0
  494. /package/dist/{chunk-HH5LY6RR.js.map → chunk-YIXJSW5M.js.map} +0 -0
  495. /package/dist/{chunk-2JSDPUKD.js.map → chunk-YMFPFXEX.js.map} +0 -0
  496. /package/dist/{chunk-N4KAE2NB.js.map → chunk-Z3FTSHT5.js.map} +0 -0
  497. /package/dist/{chunk-7GLJMDEQ.js.map → chunk-ZDV5YWID.js.map} +0 -0
  498. /package/dist/{chunk-645WOU5I.js.map → chunk-ZDZJNXL6.js.map} +0 -0
  499. /package/dist/{chunk-6TCXIRP5.js.map → chunk-ZKE4CO6B.js.map} +0 -0
  500. /package/dist/{contradiction-scan-P2MHYFVG.js.map → contradiction-scan-IBPYGQZF.js.map} +0 -0
  501. /package/dist/{resolution-N7H3F2E4.js.map → resolution-OVVIF7ZY.js.map} +0 -0
@@ -1,336 +0,0 @@
1
- import {
2
- DEFAULT_POLL_INTERVAL_MS,
3
- GITHUB_CONNECTOR_ID,
4
- GITHUB_DEFAULT_POLL_INTERVAL_MS,
5
- GMAIL_CONNECTOR_ID,
6
- GMAIL_DEFAULT_POLL_INTERVAL_MS,
7
- GOOGLE_DRIVE_CONNECTOR_ID,
8
- NOTION_CONNECTOR_ID,
9
- NOTION_DEFAULT_POLL_INTERVAL_MS,
10
- createGitHubConnector,
11
- createGmailConnector,
12
- createGoogleDriveConnector,
13
- createNotionConnector,
14
- validateGitHubConfig,
15
- validateGmailConfig,
16
- validateGoogleDriveConfig,
17
- validateNotionConfig
18
- } from "./chunk-NBH6K6G5.js";
19
- import {
20
- ConnectorStateLockLostError,
21
- readConnectorState,
22
- withConnectorStateLock,
23
- writeConnectorState
24
- } from "./chunk-MDPT6QFK.js";
25
- import {
26
- runConnectorPollOnce
27
- } from "./chunk-OKTXM5H4.js";
28
- import {
29
- abortError
30
- } from "./chunk-R2MBW2S4.js";
31
-
32
- // src/live-connectors-runner.ts
33
- function builtInLiveConnectorDefinitions(config) {
34
- return [
35
- {
36
- id: GOOGLE_DRIVE_CONNECTOR_ID,
37
- displayName: "Google Drive",
38
- enabled: config.googleDrive.enabled,
39
- pollIntervalMs: config.googleDrive.pollIntervalMs ?? DEFAULT_POLL_INTERVAL_MS,
40
- rawConfig: config.googleDrive,
41
- createConnector: createGoogleDriveConnector,
42
- validateConfig: (raw) => validateGoogleDriveConfig(raw)
43
- },
44
- {
45
- id: NOTION_CONNECTOR_ID,
46
- displayName: "Notion",
47
- enabled: config.notion.enabled,
48
- pollIntervalMs: config.notion.pollIntervalMs ?? NOTION_DEFAULT_POLL_INTERVAL_MS,
49
- rawConfig: config.notion,
50
- createConnector: createNotionConnector,
51
- validateConfig: (raw) => validateNotionConfig(raw)
52
- },
53
- {
54
- id: GMAIL_CONNECTOR_ID,
55
- displayName: "Gmail",
56
- enabled: config.gmail.enabled,
57
- pollIntervalMs: config.gmail.pollIntervalMs ?? GMAIL_DEFAULT_POLL_INTERVAL_MS,
58
- rawConfig: config.gmail,
59
- createConnector: createGmailConnector,
60
- validateConfig: (raw) => validateGmailConfig(raw)
61
- },
62
- {
63
- id: GITHUB_CONNECTOR_ID,
64
- displayName: "GitHub",
65
- enabled: config.github.enabled,
66
- pollIntervalMs: config.github.pollIntervalMs ?? GITHUB_DEFAULT_POLL_INTERVAL_MS,
67
- rawConfig: config.github,
68
- createConnector: createGitHubConnector,
69
- validateConfig: (raw) => validateGitHubConfig(raw)
70
- }
71
- ];
72
- }
73
- function hasEnabledLiveConnector(config) {
74
- return config.googleDrive.enabled || config.notion.enabled || config.gmail.enabled || config.github.enabled;
75
- }
76
- async function runLiveConnectorsOnce(options) {
77
- const ranAt = resolveNow(options.now);
78
- const force = options.force === true;
79
- const definitions = options.definitions ?? builtInLiveConnectorDefinitions(options.connectors);
80
- const results = [];
81
- for (const definition of definitions) {
82
- const checkAt = resolveNow(options.now);
83
- if (!definition.enabled) {
84
- results.push(skipResult(definition, null, "disabled"));
85
- continue;
86
- }
87
- let state;
88
- try {
89
- state = await readConnectorState(options.memoryDir, definition.id);
90
- } catch (err) {
91
- results.push({
92
- id: definition.id,
93
- displayName: definition.displayName,
94
- enabled: true,
95
- ran: false,
96
- skippedReason: "state_read_error",
97
- docsImported: 0,
98
- error: err instanceof Error ? err.message : String(err),
99
- lastSyncAt: null,
100
- nextDueAt: null
101
- });
102
- continue;
103
- }
104
- if (!force && !isConnectorDue(state, definition.pollIntervalMs, checkAt)) {
105
- results.push(skipResult(definition, state, "not_due"));
106
- continue;
107
- }
108
- let validatedConfig;
109
- try {
110
- validatedConfig = definition.validateConfig(definition.rawConfig);
111
- } catch (err) {
112
- const message = err instanceof Error ? err.message : String(err);
113
- let stateWriteError;
114
- let writtenErrorState;
115
- const errorAt = resolveNow(options.now);
116
- try {
117
- writtenErrorState = await writeConnectorErrorState({
118
- memoryDir: options.memoryDir,
119
- connectorId: definition.id,
120
- state,
121
- error: message,
122
- now: errorAt
123
- });
124
- } catch (writeErr) {
125
- stateWriteError = writeErr instanceof Error ? writeErr.message : String(writeErr);
126
- }
127
- const reportedState = writtenErrorState ?? state;
128
- results.push({
129
- id: definition.id,
130
- displayName: definition.displayName,
131
- enabled: true,
132
- ran: false,
133
- skippedReason: "invalid_config",
134
- docsImported: 0,
135
- error: message,
136
- ...stateWriteError !== void 0 ? { stateWriteError } : {},
137
- lastSyncAt: reportedState?.lastSyncAt ?? null,
138
- nextDueAt: nextDueAt(reportedState, definition.pollIntervalMs)
139
- });
140
- continue;
141
- }
142
- let runResult;
143
- let lastStateWrittenAt;
144
- try {
145
- const connector = definition.createConnector();
146
- runResult = await withConnectorStateLock(options.memoryDir, definition.id, async (lockSignal) => {
147
- const pollAbortSignal = combineAbortSignals(options.abortSignal, lockSignal);
148
- const lockedState = await readConnectorState(options.memoryDir, definition.id);
149
- if (!force && !isConnectorDue(lockedState, definition.pollIntervalMs, checkAt)) {
150
- return { docsImported: 0 };
151
- }
152
- state = lockedState;
153
- return runConnectorPollOnce({
154
- connectorId: definition.id,
155
- priorState: lockedState,
156
- syncFn: (cursor) => connector.syncIncremental({
157
- cursor,
158
- config: validatedConfig,
159
- abortSignal: pollAbortSignal,
160
- resolveSecretRef: options.resolveSecretRef
161
- }),
162
- ingestFn: async (docs) => {
163
- throwIfAborted(pollAbortSignal);
164
- await options.ingestDocuments(docs);
165
- throwIfAborted(pollAbortSignal);
166
- },
167
- writeCursorFn: (writeState) => {
168
- throwIfAborted(pollAbortSignal);
169
- const writeAt = resolveNow(options.now);
170
- return writeConnectorState(options.memoryDir, definition.id, {
171
- id: definition.id,
172
- cursor: writeState.cursor,
173
- lastSyncAt: writeAt.toISOString(),
174
- lastSyncStatus: writeState.lastSyncStatus,
175
- ...writeState.lastSyncError !== void 0 ? { lastSyncError: writeState.lastSyncError } : {},
176
- totalDocsImported: writeState.totalDocsImported
177
- }).then(() => {
178
- lastStateWrittenAt = writeAt;
179
- });
180
- }
181
- });
182
- });
183
- if (runResult.docsImported === 0 && runResult.error === void 0 && runResult.stateWriteError === void 0 && lastStateWrittenAt === void 0) {
184
- const lockedState = await readConnectorState(options.memoryDir, definition.id);
185
- if (!force && !isConnectorDue(lockedState, definition.pollIntervalMs, checkAt)) {
186
- results.push(skipResult(definition, lockedState, "not_due"));
187
- continue;
188
- }
189
- }
190
- } catch (err) {
191
- const message = err instanceof Error ? err.message : String(err);
192
- let stateWriteError;
193
- let writtenErrorState;
194
- const errorAt = resolveNow(options.now);
195
- if (!(err instanceof ConnectorStateLockLostError)) {
196
- try {
197
- writtenErrorState = await writeConnectorErrorState({
198
- memoryDir: options.memoryDir,
199
- connectorId: definition.id,
200
- state,
201
- error: message,
202
- now: errorAt
203
- });
204
- } catch (writeErr) {
205
- stateWriteError = writeErr instanceof Error ? writeErr.message : String(writeErr);
206
- }
207
- }
208
- const reportedState = writtenErrorState ?? state;
209
- results.push({
210
- id: definition.id,
211
- displayName: definition.displayName,
212
- enabled: true,
213
- ran: false,
214
- skippedReason: "connector_error",
215
- docsImported: 0,
216
- error: message,
217
- ...stateWriteError !== void 0 ? { stateWriteError } : {},
218
- lastSyncAt: reportedState?.lastSyncAt ?? null,
219
- nextDueAt: nextDueAt(reportedState, definition.pollIntervalMs)
220
- });
221
- continue;
222
- }
223
- results.push(
224
- runItemFromResult(
225
- definition,
226
- runResult,
227
- state,
228
- lastStateWrittenAt ?? resolveNow(options.now)
229
- )
230
- );
231
- }
232
- return {
233
- ranAt: ranAt.toISOString(),
234
- force,
235
- totalDocsImported: results.reduce((sum, item) => sum + item.docsImported, 0),
236
- ranCount: results.filter((item) => item.ran).length,
237
- skippedCount: results.filter((item) => !item.ran).length,
238
- errorCount: results.filter(
239
- (item) => item.error !== void 0 || item.stateWriteError !== void 0
240
- ).length,
241
- results
242
- };
243
- }
244
- function resolveNow(now) {
245
- return typeof now === "function" ? now() : now ?? /* @__PURE__ */ new Date();
246
- }
247
- function isConnectorDue(state, pollIntervalMs, now) {
248
- if (state?.lastSyncAt === null || state?.lastSyncAt === void 0) return true;
249
- const lastMs = Date.parse(state.lastSyncAt);
250
- if (!Number.isFinite(lastMs)) return true;
251
- return now.getTime() - lastMs >= Math.max(1, Math.floor(pollIntervalMs));
252
- }
253
- function nextDueAt(state, pollIntervalMs) {
254
- if (state?.lastSyncAt === null || state?.lastSyncAt === void 0) return null;
255
- const lastMs = Date.parse(state.lastSyncAt);
256
- if (!Number.isFinite(lastMs)) return null;
257
- return new Date(lastMs + Math.max(1, Math.floor(pollIntervalMs))).toISOString();
258
- }
259
- function skipResult(definition, state, skippedReason) {
260
- return {
261
- id: definition.id,
262
- displayName: definition.displayName,
263
- enabled: definition.enabled,
264
- ran: false,
265
- skippedReason,
266
- docsImported: 0,
267
- lastSyncAt: state?.lastSyncAt ?? null,
268
- nextDueAt: skippedReason === "not_due" ? nextDueAt(state, definition.pollIntervalMs) : null
269
- };
270
- }
271
- function runItemFromResult(definition, result, priorState, now) {
272
- const stateWriteFailed = result.stateWriteError !== void 0;
273
- const reportedLastSyncAt = stateWriteFailed ? priorState?.lastSyncAt ?? null : now.toISOString();
274
- const reportedNextDueAt = stateWriteFailed ? nextDueAt(priorState, definition.pollIntervalMs) : new Date(
275
- now.getTime() + Math.max(1, Math.floor(definition.pollIntervalMs))
276
- ).toISOString();
277
- return {
278
- id: definition.id,
279
- displayName: definition.displayName,
280
- enabled: definition.enabled,
281
- ran: true,
282
- docsImported: result.docsImported,
283
- ...result.error !== void 0 ? { error: result.error } : {},
284
- ...result.stateWriteError !== void 0 ? { stateWriteError: result.stateWriteError } : {},
285
- lastSyncAt: reportedLastSyncAt,
286
- nextDueAt: reportedNextDueAt
287
- };
288
- }
289
- function combineAbortSignals(...signals) {
290
- const activeSignals = signals.filter((signal) => signal !== void 0);
291
- if (activeSignals.length === 0) return void 0;
292
- if (activeSignals.length === 1) return activeSignals[0];
293
- const abortSignalAny = AbortSignal.any;
294
- if (abortSignalAny !== void 0) {
295
- return abortSignalAny(activeSignals);
296
- }
297
- const controller = new AbortController();
298
- const abort = (signal) => {
299
- if (!controller.signal.aborted) {
300
- controller.abort(signal.reason);
301
- }
302
- };
303
- for (const signal of activeSignals) {
304
- if (signal.aborted) {
305
- abort(signal);
306
- break;
307
- }
308
- signal.addEventListener("abort", () => abort(signal), { once: true });
309
- }
310
- return controller.signal;
311
- }
312
- function throwIfAborted(signal) {
313
- if (signal?.aborted !== true) return;
314
- const reason = signal.reason;
315
- if (reason instanceof Error) {
316
- throw reason;
317
- }
318
- throw abortError(reason === void 0 ? "operation aborted" : String(reason));
319
- }
320
- async function writeConnectorErrorState(options) {
321
- return writeConnectorState(options.memoryDir, options.connectorId, {
322
- id: options.connectorId,
323
- cursor: options.state?.cursor ?? null,
324
- lastSyncAt: options.now.toISOString(),
325
- lastSyncStatus: "error",
326
- lastSyncError: options.error,
327
- totalDocsImported: options.state?.totalDocsImported ?? 0
328
- });
329
- }
330
-
331
- export {
332
- builtInLiveConnectorDefinitions,
333
- hasEnabledLiveConnector,
334
- runLiveConnectorsOnce
335
- };
336
- //# sourceMappingURL=chunk-F55YQP7N.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/live-connectors-runner.ts"],"sourcesContent":["import {\n runConnectorPollOnce,\n type ConnectorRunResult,\n} from \"./connectors-cli.js\";\nimport {\n createGitHubConnector,\n createGmailConnector,\n createGoogleDriveConnector,\n createNotionConnector,\n GITHUB_CONNECTOR_ID,\n GITHUB_DEFAULT_POLL_INTERVAL_MS,\n GMAIL_CONNECTOR_ID,\n GMAIL_DEFAULT_POLL_INTERVAL_MS,\n GOOGLE_DRIVE_CONNECTOR_ID,\n GOOGLE_DRIVE_DEFAULT_POLL_INTERVAL_MS,\n NOTION_CONNECTOR_ID,\n NOTION_DEFAULT_POLL_INTERVAL_MS,\n ConnectorStateLockLostError,\n readConnectorState,\n withConnectorStateLock,\n writeConnectorState,\n validateGitHubConfig,\n validateGmailConfig,\n validateGoogleDriveConfig,\n validateNotionConfig,\n type ConnectorConfig,\n type ConnectorCursor,\n type ConnectorDocument,\n type ConnectorState,\n type LiveConnector,\n} from \"./connectors/live/index.js\";\nimport { abortError } from \"./abort-error.js\";\nimport type { LiveConnectorsConfig } from \"./types.js\";\nimport type { ResolveSecretRefFn } from \"./resolve-auth-token.js\";\n\nexport type LiveConnectorSkipReason =\n | \"disabled\"\n | \"not_due\"\n | \"invalid_config\"\n | \"state_read_error\"\n | \"connector_error\";\n\nexport interface LiveConnectorRunItem {\n id: string;\n displayName: string;\n enabled: boolean;\n ran: boolean;\n skippedReason?: LiveConnectorSkipReason;\n docsImported: number;\n error?: string;\n stateWriteError?: string;\n lastSyncAt: string | null;\n nextDueAt: string | null;\n}\n\nexport interface LiveConnectorsRunSummary {\n ranAt: string;\n force: boolean;\n totalDocsImported: number;\n ranCount: number;\n skippedCount: number;\n errorCount: number;\n results: LiveConnectorRunItem[];\n}\n\nexport interface LiveConnectorDefinition {\n id: string;\n displayName: string;\n enabled: boolean;\n pollIntervalMs: number;\n rawConfig: unknown;\n createConnector: () => LiveConnector;\n validateConfig: (raw: unknown) => ConnectorConfig;\n}\n\ntype LiveConnectorsNow = Date | (() => Date);\n\nexport function builtInLiveConnectorDefinitions(\n config: LiveConnectorsConfig,\n): LiveConnectorDefinition[] {\n return [\n {\n id: GOOGLE_DRIVE_CONNECTOR_ID,\n displayName: \"Google Drive\",\n enabled: config.googleDrive.enabled,\n pollIntervalMs:\n config.googleDrive.pollIntervalMs ?? GOOGLE_DRIVE_DEFAULT_POLL_INTERVAL_MS,\n rawConfig: config.googleDrive,\n createConnector: createGoogleDriveConnector,\n validateConfig: (raw) =>\n validateGoogleDriveConfig(raw) as unknown as ConnectorConfig,\n },\n {\n id: NOTION_CONNECTOR_ID,\n displayName: \"Notion\",\n enabled: config.notion.enabled,\n pollIntervalMs: config.notion.pollIntervalMs ?? NOTION_DEFAULT_POLL_INTERVAL_MS,\n rawConfig: config.notion,\n createConnector: createNotionConnector,\n validateConfig: (raw) =>\n validateNotionConfig(raw) as unknown as ConnectorConfig,\n },\n {\n id: GMAIL_CONNECTOR_ID,\n displayName: \"Gmail\",\n enabled: config.gmail.enabled,\n pollIntervalMs: config.gmail.pollIntervalMs ?? GMAIL_DEFAULT_POLL_INTERVAL_MS,\n rawConfig: config.gmail,\n createConnector: createGmailConnector,\n validateConfig: (raw) => validateGmailConfig(raw) as unknown as ConnectorConfig,\n },\n {\n id: GITHUB_CONNECTOR_ID,\n displayName: \"GitHub\",\n enabled: config.github.enabled,\n pollIntervalMs:\n config.github.pollIntervalMs ?? GITHUB_DEFAULT_POLL_INTERVAL_MS,\n rawConfig: config.github,\n createConnector: createGitHubConnector,\n validateConfig: (raw) => validateGitHubConfig(raw) as unknown as ConnectorConfig,\n },\n ];\n}\n\nexport function hasEnabledLiveConnector(config: LiveConnectorsConfig): boolean {\n return (\n config.googleDrive.enabled ||\n config.notion.enabled ||\n config.gmail.enabled ||\n config.github.enabled\n );\n}\n\nexport async function runLiveConnectorsOnce(options: {\n memoryDir: string;\n connectors: LiveConnectorsConfig;\n ingestDocuments: (docs: ConnectorDocument[]) => Promise<void>;\n force?: boolean;\n now?: LiveConnectorsNow;\n abortSignal?: AbortSignal;\n definitions?: LiveConnectorDefinition[];\n resolveSecretRef?: ResolveSecretRefFn | null;\n}): Promise<LiveConnectorsRunSummary> {\n const ranAt = resolveNow(options.now);\n const force = options.force === true;\n const definitions =\n options.definitions ?? builtInLiveConnectorDefinitions(options.connectors);\n const results: LiveConnectorRunItem[] = [];\n\n for (const definition of definitions) {\n const checkAt = resolveNow(options.now);\n if (!definition.enabled) {\n results.push(skipResult(definition, null, \"disabled\"));\n continue;\n }\n let state: ConnectorState | null;\n try {\n state = await readConnectorState(options.memoryDir, definition.id);\n } catch (err) {\n results.push({\n id: definition.id,\n displayName: definition.displayName,\n enabled: true,\n ran: false,\n skippedReason: \"state_read_error\",\n docsImported: 0,\n error: err instanceof Error ? err.message : String(err),\n lastSyncAt: null,\n nextDueAt: null,\n });\n continue;\n }\n if (!force && !isConnectorDue(state, definition.pollIntervalMs, checkAt)) {\n results.push(skipResult(definition, state, \"not_due\"));\n continue;\n }\n\n let validatedConfig: ConnectorConfig;\n try {\n validatedConfig = definition.validateConfig(definition.rawConfig);\n } catch (err) {\n const message = err instanceof Error ? err.message : String(err);\n let stateWriteError: string | undefined;\n let writtenErrorState: ConnectorState | undefined;\n const errorAt = resolveNow(options.now);\n try {\n writtenErrorState = await writeConnectorErrorState({\n memoryDir: options.memoryDir,\n connectorId: definition.id,\n state,\n error: message,\n now: errorAt,\n });\n } catch (writeErr) {\n stateWriteError =\n writeErr instanceof Error ? writeErr.message : String(writeErr);\n }\n const reportedState = writtenErrorState ?? state;\n results.push({\n id: definition.id,\n displayName: definition.displayName,\n enabled: true,\n ran: false,\n skippedReason: \"invalid_config\",\n docsImported: 0,\n error: message,\n ...(stateWriteError !== undefined ? { stateWriteError } : {}),\n lastSyncAt: reportedState?.lastSyncAt ?? null,\n nextDueAt: nextDueAt(reportedState, definition.pollIntervalMs),\n });\n continue;\n }\n\n let runResult: ConnectorRunResult;\n let lastStateWrittenAt: Date | undefined;\n try {\n const connector = definition.createConnector();\n runResult = await withConnectorStateLock(options.memoryDir, definition.id, async (lockSignal) => {\n const pollAbortSignal = combineAbortSignals(options.abortSignal, lockSignal);\n const lockedState = await readConnectorState(options.memoryDir, definition.id);\n if (!force && !isConnectorDue(lockedState, definition.pollIntervalMs, checkAt)) {\n return { docsImported: 0 };\n }\n state = lockedState;\n return runConnectorPollOnce({\n connectorId: definition.id,\n priorState: lockedState,\n syncFn: (cursor: ConnectorCursor | null) =>\n connector.syncIncremental({\n cursor,\n config: validatedConfig,\n abortSignal: pollAbortSignal,\n resolveSecretRef: options.resolveSecretRef,\n }),\n ingestFn: async (docs) => {\n throwIfAborted(pollAbortSignal);\n await options.ingestDocuments(docs);\n throwIfAborted(pollAbortSignal);\n },\n writeCursorFn: (writeState) => {\n throwIfAborted(pollAbortSignal);\n const writeAt = resolveNow(options.now);\n return writeConnectorState(options.memoryDir, definition.id, {\n id: definition.id,\n cursor: writeState.cursor,\n lastSyncAt: writeAt.toISOString(),\n lastSyncStatus: writeState.lastSyncStatus,\n ...(writeState.lastSyncError !== undefined\n ? { lastSyncError: writeState.lastSyncError }\n : {}),\n totalDocsImported: writeState.totalDocsImported,\n }).then(() => {\n lastStateWrittenAt = writeAt;\n });\n },\n });\n });\n if (\n runResult.docsImported === 0 &&\n runResult.error === undefined &&\n runResult.stateWriteError === undefined &&\n lastStateWrittenAt === undefined\n ) {\n const lockedState = await readConnectorState(options.memoryDir, definition.id);\n if (!force && !isConnectorDue(lockedState, definition.pollIntervalMs, checkAt)) {\n results.push(skipResult(definition, lockedState, \"not_due\"));\n continue;\n }\n }\n } catch (err) {\n const message = err instanceof Error ? err.message : String(err);\n let stateWriteError: string | undefined;\n let writtenErrorState: ConnectorState | undefined;\n const errorAt = resolveNow(options.now);\n if (!(err instanceof ConnectorStateLockLostError)) {\n try {\n writtenErrorState = await writeConnectorErrorState({\n memoryDir: options.memoryDir,\n connectorId: definition.id,\n state,\n error: message,\n now: errorAt,\n });\n } catch (writeErr) {\n stateWriteError =\n writeErr instanceof Error ? writeErr.message : String(writeErr);\n }\n }\n const reportedState = writtenErrorState ?? state;\n results.push({\n id: definition.id,\n displayName: definition.displayName,\n enabled: true,\n ran: false,\n skippedReason: \"connector_error\",\n docsImported: 0,\n error: message,\n ...(stateWriteError !== undefined ? { stateWriteError } : {}),\n lastSyncAt: reportedState?.lastSyncAt ?? null,\n nextDueAt: nextDueAt(reportedState, definition.pollIntervalMs),\n });\n continue;\n }\n results.push(\n runItemFromResult(\n definition,\n runResult,\n state,\n lastStateWrittenAt ?? resolveNow(options.now),\n ),\n );\n }\n\n return {\n ranAt: ranAt.toISOString(),\n force,\n totalDocsImported: results.reduce((sum, item) => sum + item.docsImported, 0),\n ranCount: results.filter((item) => item.ran).length,\n skippedCount: results.filter((item) => !item.ran).length,\n errorCount: results.filter(\n (item) => item.error !== undefined || item.stateWriteError !== undefined,\n ).length,\n results,\n };\n}\n\nfunction resolveNow(now: LiveConnectorsNow | undefined): Date {\n return typeof now === \"function\" ? now() : now ?? new Date();\n}\n\nfunction isConnectorDue(\n state: ConnectorState | null,\n pollIntervalMs: number,\n now: Date,\n): boolean {\n if (state?.lastSyncAt === null || state?.lastSyncAt === undefined) return true;\n const lastMs = Date.parse(state.lastSyncAt);\n if (!Number.isFinite(lastMs)) return true;\n return now.getTime() - lastMs >= Math.max(1, Math.floor(pollIntervalMs));\n}\n\nfunction nextDueAt(\n state: ConnectorState | null,\n pollIntervalMs: number,\n): string | null {\n if (state?.lastSyncAt === null || state?.lastSyncAt === undefined) return null;\n const lastMs = Date.parse(state.lastSyncAt);\n if (!Number.isFinite(lastMs)) return null;\n return new Date(lastMs + Math.max(1, Math.floor(pollIntervalMs))).toISOString();\n}\n\nfunction skipResult(\n definition: LiveConnectorDefinition,\n state: ConnectorState | null,\n skippedReason: LiveConnectorSkipReason,\n): LiveConnectorRunItem {\n return {\n id: definition.id,\n displayName: definition.displayName,\n enabled: definition.enabled,\n ran: false,\n skippedReason,\n docsImported: 0,\n lastSyncAt: state?.lastSyncAt ?? null,\n nextDueAt:\n skippedReason === \"not_due\"\n ? nextDueAt(state, definition.pollIntervalMs)\n : null,\n };\n}\n\nfunction runItemFromResult(\n definition: LiveConnectorDefinition,\n result: ConnectorRunResult,\n priorState: ConnectorState | null,\n now: Date,\n): LiveConnectorRunItem {\n const stateWriteFailed = result.stateWriteError !== undefined;\n const reportedLastSyncAt = stateWriteFailed\n ? priorState?.lastSyncAt ?? null\n : now.toISOString();\n const reportedNextDueAt = stateWriteFailed\n ? nextDueAt(priorState, definition.pollIntervalMs)\n : new Date(\n now.getTime() + Math.max(1, Math.floor(definition.pollIntervalMs)),\n ).toISOString();\n\n return {\n id: definition.id,\n displayName: definition.displayName,\n enabled: definition.enabled,\n ran: true,\n docsImported: result.docsImported,\n ...(result.error !== undefined ? { error: result.error } : {}),\n ...(result.stateWriteError !== undefined\n ? { stateWriteError: result.stateWriteError }\n : {}),\n lastSyncAt: reportedLastSyncAt,\n nextDueAt: reportedNextDueAt,\n };\n}\n\nfunction combineAbortSignals(...signals: Array<AbortSignal | undefined>): AbortSignal | undefined {\n const activeSignals = signals.filter((signal): signal is AbortSignal => signal !== undefined);\n if (activeSignals.length === 0) return undefined;\n if (activeSignals.length === 1) return activeSignals[0];\n const abortSignalAny = (AbortSignal as typeof AbortSignal & {\n any?: (signals: AbortSignal[]) => AbortSignal;\n }).any;\n if (abortSignalAny !== undefined) {\n return abortSignalAny(activeSignals);\n }\n const controller = new AbortController();\n const abort = (signal: AbortSignal): void => {\n if (!controller.signal.aborted) {\n controller.abort(signal.reason);\n }\n };\n for (const signal of activeSignals) {\n if (signal.aborted) {\n abort(signal);\n break;\n }\n signal.addEventListener(\"abort\", () => abort(signal), { once: true });\n }\n return controller.signal;\n}\n\nfunction throwIfAborted(signal: AbortSignal | undefined): void {\n if (signal?.aborted !== true) return;\n const reason = signal.reason;\n if (reason instanceof Error) {\n throw reason;\n }\n throw abortError(reason === undefined ? \"operation aborted\" : String(reason));\n}\n\nasync function writeConnectorErrorState(options: {\n memoryDir: string;\n connectorId: string;\n state: ConnectorState | null;\n error: string;\n now: Date;\n}): Promise<ConnectorState> {\n return writeConnectorState(options.memoryDir, options.connectorId, {\n id: options.connectorId,\n cursor: options.state?.cursor ?? null,\n lastSyncAt: options.now.toISOString(),\n lastSyncStatus: \"error\",\n lastSyncError: options.error,\n totalDocsImported: options.state?.totalDocsImported ?? 0,\n });\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6EO,SAAS,gCACd,QAC2B;AAC3B,SAAO;AAAA,IACL;AAAA,MACE,IAAI;AAAA,MACJ,aAAa;AAAA,MACb,SAAS,OAAO,YAAY;AAAA,MAC5B,gBACE,OAAO,YAAY,kBAAkB;AAAA,MACvC,WAAW,OAAO;AAAA,MAClB,iBAAiB;AAAA,MACjB,gBAAgB,CAAC,QACf,0BAA0B,GAAG;AAAA,IACjC;AAAA,IACA;AAAA,MACE,IAAI;AAAA,MACJ,aAAa;AAAA,MACb,SAAS,OAAO,OAAO;AAAA,MACvB,gBAAgB,OAAO,OAAO,kBAAkB;AAAA,MAChD,WAAW,OAAO;AAAA,MAClB,iBAAiB;AAAA,MACjB,gBAAgB,CAAC,QACf,qBAAqB,GAAG;AAAA,IAC5B;AAAA,IACA;AAAA,MACE,IAAI;AAAA,MACJ,aAAa;AAAA,MACb,SAAS,OAAO,MAAM;AAAA,MACtB,gBAAgB,OAAO,MAAM,kBAAkB;AAAA,MAC/C,WAAW,OAAO;AAAA,MAClB,iBAAiB;AAAA,MACjB,gBAAgB,CAAC,QAAQ,oBAAoB,GAAG;AAAA,IAClD;AAAA,IACA;AAAA,MACE,IAAI;AAAA,MACJ,aAAa;AAAA,MACb,SAAS,OAAO,OAAO;AAAA,MACvB,gBACE,OAAO,OAAO,kBAAkB;AAAA,MAClC,WAAW,OAAO;AAAA,MAClB,iBAAiB;AAAA,MACjB,gBAAgB,CAAC,QAAQ,qBAAqB,GAAG;AAAA,IACnD;AAAA,EACF;AACF;AAEO,SAAS,wBAAwB,QAAuC;AAC7E,SACE,OAAO,YAAY,WACnB,OAAO,OAAO,WACd,OAAO,MAAM,WACb,OAAO,OAAO;AAElB;AAEA,eAAsB,sBAAsB,SASN;AACpC,QAAM,QAAQ,WAAW,QAAQ,GAAG;AACpC,QAAM,QAAQ,QAAQ,UAAU;AAChC,QAAM,cACJ,QAAQ,eAAe,gCAAgC,QAAQ,UAAU;AAC3E,QAAM,UAAkC,CAAC;AAEzC,aAAW,cAAc,aAAa;AACpC,UAAM,UAAU,WAAW,QAAQ,GAAG;AACtC,QAAI,CAAC,WAAW,SAAS;AACvB,cAAQ,KAAK,WAAW,YAAY,MAAM,UAAU,CAAC;AACrD;AAAA,IACF;AACA,QAAI;AACJ,QAAI;AACF,cAAQ,MAAM,mBAAmB,QAAQ,WAAW,WAAW,EAAE;AAAA,IACnE,SAAS,KAAK;AACZ,cAAQ,KAAK;AAAA,QACX,IAAI,WAAW;AAAA,QACf,aAAa,WAAW;AAAA,QACxB,SAAS;AAAA,QACT,KAAK;AAAA,QACL,eAAe;AAAA,QACf,cAAc;AAAA,QACd,OAAO,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;AAAA,QACtD,YAAY;AAAA,QACZ,WAAW;AAAA,MACb,CAAC;AACD;AAAA,IACF;AACA,QAAI,CAAC,SAAS,CAAC,eAAe,OAAO,WAAW,gBAAgB,OAAO,GAAG;AACxE,cAAQ,KAAK,WAAW,YAAY,OAAO,SAAS,CAAC;AACrD;AAAA,IACF;AAEA,QAAI;AACJ,QAAI;AACF,wBAAkB,WAAW,eAAe,WAAW,SAAS;AAAA,IAClE,SAAS,KAAK;AACZ,YAAM,UAAU,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;AAC/D,UAAI;AACJ,UAAI;AACJ,YAAM,UAAU,WAAW,QAAQ,GAAG;AACtC,UAAI;AACF,4BAAoB,MAAM,yBAAyB;AAAA,UACjD,WAAW,QAAQ;AAAA,UACnB,aAAa,WAAW;AAAA,UACxB;AAAA,UACA,OAAO;AAAA,UACP,KAAK;AAAA,QACP,CAAC;AAAA,MACH,SAAS,UAAU;AACjB,0BACE,oBAAoB,QAAQ,SAAS,UAAU,OAAO,QAAQ;AAAA,MAClE;AACA,YAAM,gBAAgB,qBAAqB;AAC3C,cAAQ,KAAK;AAAA,QACX,IAAI,WAAW;AAAA,QACf,aAAa,WAAW;AAAA,QACxB,SAAS;AAAA,QACT,KAAK;AAAA,QACL,eAAe;AAAA,QACf,cAAc;AAAA,QACd,OAAO;AAAA,QACP,GAAI,oBAAoB,SAAY,EAAE,gBAAgB,IAAI,CAAC;AAAA,QAC3D,YAAY,eAAe,cAAc;AAAA,QACzC,WAAW,UAAU,eAAe,WAAW,cAAc;AAAA,MAC/D,CAAC;AACD;AAAA,IACF;AAEA,QAAI;AACJ,QAAI;AACJ,QAAI;AACF,YAAM,YAAY,WAAW,gBAAgB;AAC7C,kBAAY,MAAM,uBAAuB,QAAQ,WAAW,WAAW,IAAI,OAAO,eAAe;AAC/F,cAAM,kBAAkB,oBAAoB,QAAQ,aAAa,UAAU;AAC3E,cAAM,cAAc,MAAM,mBAAmB,QAAQ,WAAW,WAAW,EAAE;AAC7E,YAAI,CAAC,SAAS,CAAC,eAAe,aAAa,WAAW,gBAAgB,OAAO,GAAG;AAC9E,iBAAO,EAAE,cAAc,EAAE;AAAA,QAC3B;AACA,gBAAQ;AACR,eAAO,qBAAqB;AAAA,UAC1B,aAAa,WAAW;AAAA,UACxB,YAAY;AAAA,UACZ,QAAQ,CAAC,WACP,UAAU,gBAAgB;AAAA,YACxB;AAAA,YACA,QAAQ;AAAA,YACR,aAAa;AAAA,YACb,kBAAkB,QAAQ;AAAA,UAC5B,CAAC;AAAA,UACH,UAAU,OAAO,SAAS;AACxB,2BAAe,eAAe;AAC9B,kBAAM,QAAQ,gBAAgB,IAAI;AAClC,2BAAe,eAAe;AAAA,UAChC;AAAA,UACA,eAAe,CAAC,eAAe;AAC7B,2BAAe,eAAe;AAC9B,kBAAM,UAAU,WAAW,QAAQ,GAAG;AACtC,mBAAO,oBAAoB,QAAQ,WAAW,WAAW,IAAI;AAAA,cAC3D,IAAI,WAAW;AAAA,cACf,QAAQ,WAAW;AAAA,cACnB,YAAY,QAAQ,YAAY;AAAA,cAChC,gBAAgB,WAAW;AAAA,cAC3B,GAAI,WAAW,kBAAkB,SAC7B,EAAE,eAAe,WAAW,cAAc,IAC1C,CAAC;AAAA,cACL,mBAAmB,WAAW;AAAA,YAChC,CAAC,EAAE,KAAK,MAAM;AACZ,mCAAqB;AAAA,YACvB,CAAC;AAAA,UACH;AAAA,QACF,CAAC;AAAA,MACH,CAAC;AACD,UACE,UAAU,iBAAiB,KAC3B,UAAU,UAAU,UACpB,UAAU,oBAAoB,UAC9B,uBAAuB,QACvB;AACA,cAAM,cAAc,MAAM,mBAAmB,QAAQ,WAAW,WAAW,EAAE;AAC7E,YAAI,CAAC,SAAS,CAAC,eAAe,aAAa,WAAW,gBAAgB,OAAO,GAAG;AAC9E,kBAAQ,KAAK,WAAW,YAAY,aAAa,SAAS,CAAC;AAC3D;AAAA,QACF;AAAA,MACF;AAAA,IACF,SAAS,KAAK;AACZ,YAAM,UAAU,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;AAC/D,UAAI;AACJ,UAAI;AACJ,YAAM,UAAU,WAAW,QAAQ,GAAG;AACtC,UAAI,EAAE,eAAe,8BAA8B;AACjD,YAAI;AACF,8BAAoB,MAAM,yBAAyB;AAAA,YACjD,WAAW,QAAQ;AAAA,YACnB,aAAa,WAAW;AAAA,YACxB;AAAA,YACA,OAAO;AAAA,YACP,KAAK;AAAA,UACP,CAAC;AAAA,QACH,SAAS,UAAU;AACjB,4BACE,oBAAoB,QAAQ,SAAS,UAAU,OAAO,QAAQ;AAAA,QAClE;AAAA,MACF;AACA,YAAM,gBAAgB,qBAAqB;AAC3C,cAAQ,KAAK;AAAA,QACX,IAAI,WAAW;AAAA,QACf,aAAa,WAAW;AAAA,QACxB,SAAS;AAAA,QACT,KAAK;AAAA,QACL,eAAe;AAAA,QACf,cAAc;AAAA,QACd,OAAO;AAAA,QACP,GAAI,oBAAoB,SAAY,EAAE,gBAAgB,IAAI,CAAC;AAAA,QAC3D,YAAY,eAAe,cAAc;AAAA,QACzC,WAAW,UAAU,eAAe,WAAW,cAAc;AAAA,MAC/D,CAAC;AACD;AAAA,IACF;AACA,YAAQ;AAAA,MACN;AAAA,QACE;AAAA,QACA;AAAA,QACA;AAAA,QACA,sBAAsB,WAAW,QAAQ,GAAG;AAAA,MAC9C;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AAAA,IACL,OAAO,MAAM,YAAY;AAAA,IACzB;AAAA,IACA,mBAAmB,QAAQ,OAAO,CAAC,KAAK,SAAS,MAAM,KAAK,cAAc,CAAC;AAAA,IAC3E,UAAU,QAAQ,OAAO,CAAC,SAAS,KAAK,GAAG,EAAE;AAAA,IAC7C,cAAc,QAAQ,OAAO,CAAC,SAAS,CAAC,KAAK,GAAG,EAAE;AAAA,IAClD,YAAY,QAAQ;AAAA,MAClB,CAAC,SAAS,KAAK,UAAU,UAAa,KAAK,oBAAoB;AAAA,IACjE,EAAE;AAAA,IACF;AAAA,EACF;AACF;AAEA,SAAS,WAAW,KAA0C;AAC5D,SAAO,OAAO,QAAQ,aAAa,IAAI,IAAI,OAAO,oBAAI,KAAK;AAC7D;AAEA,SAAS,eACP,OACA,gBACA,KACS;AACT,MAAI,OAAO,eAAe,QAAQ,OAAO,eAAe,OAAW,QAAO;AAC1E,QAAM,SAAS,KAAK,MAAM,MAAM,UAAU;AAC1C,MAAI,CAAC,OAAO,SAAS,MAAM,EAAG,QAAO;AACrC,SAAO,IAAI,QAAQ,IAAI,UAAU,KAAK,IAAI,GAAG,KAAK,MAAM,cAAc,CAAC;AACzE;AAEA,SAAS,UACP,OACA,gBACe;AACf,MAAI,OAAO,eAAe,QAAQ,OAAO,eAAe,OAAW,QAAO;AAC1E,QAAM,SAAS,KAAK,MAAM,MAAM,UAAU;AAC1C,MAAI,CAAC,OAAO,SAAS,MAAM,EAAG,QAAO;AACrC,SAAO,IAAI,KAAK,SAAS,KAAK,IAAI,GAAG,KAAK,MAAM,cAAc,CAAC,CAAC,EAAE,YAAY;AAChF;AAEA,SAAS,WACP,YACA,OACA,eACsB;AACtB,SAAO;AAAA,IACL,IAAI,WAAW;AAAA,IACf,aAAa,WAAW;AAAA,IACxB,SAAS,WAAW;AAAA,IACpB,KAAK;AAAA,IACL;AAAA,IACA,cAAc;AAAA,IACd,YAAY,OAAO,cAAc;AAAA,IACjC,WACE,kBAAkB,YACd,UAAU,OAAO,WAAW,cAAc,IAC1C;AAAA,EACR;AACF;AAEA,SAAS,kBACP,YACA,QACA,YACA,KACsB;AACtB,QAAM,mBAAmB,OAAO,oBAAoB;AACpD,QAAM,qBAAqB,mBACvB,YAAY,cAAc,OAC1B,IAAI,YAAY;AACpB,QAAM,oBAAoB,mBACtB,UAAU,YAAY,WAAW,cAAc,IAC/C,IAAI;AAAA,IACF,IAAI,QAAQ,IAAI,KAAK,IAAI,GAAG,KAAK,MAAM,WAAW,cAAc,CAAC;AAAA,EACnE,EAAE,YAAY;AAElB,SAAO;AAAA,IACL,IAAI,WAAW;AAAA,IACf,aAAa,WAAW;AAAA,IACxB,SAAS,WAAW;AAAA,IACpB,KAAK;AAAA,IACL,cAAc,OAAO;AAAA,IACrB,GAAI,OAAO,UAAU,SAAY,EAAE,OAAO,OAAO,MAAM,IAAI,CAAC;AAAA,IAC5D,GAAI,OAAO,oBAAoB,SAC3B,EAAE,iBAAiB,OAAO,gBAAgB,IAC1C,CAAC;AAAA,IACL,YAAY;AAAA,IACZ,WAAW;AAAA,EACb;AACF;AAEA,SAAS,uBAAuB,SAAkE;AAChG,QAAM,gBAAgB,QAAQ,OAAO,CAAC,WAAkC,WAAW,MAAS;AAC5F,MAAI,cAAc,WAAW,EAAG,QAAO;AACvC,MAAI,cAAc,WAAW,EAAG,QAAO,cAAc,CAAC;AACtD,QAAM,iBAAkB,YAErB;AACH,MAAI,mBAAmB,QAAW;AAChC,WAAO,eAAe,aAAa;AAAA,EACrC;AACA,QAAM,aAAa,IAAI,gBAAgB;AACvC,QAAM,QAAQ,CAAC,WAA8B;AAC3C,QAAI,CAAC,WAAW,OAAO,SAAS;AAC9B,iBAAW,MAAM,OAAO,MAAM;AAAA,IAChC;AAAA,EACF;AACA,aAAW,UAAU,eAAe;AAClC,QAAI,OAAO,SAAS;AAClB,YAAM,MAAM;AACZ;AAAA,IACF;AACA,WAAO,iBAAiB,SAAS,MAAM,MAAM,MAAM,GAAG,EAAE,MAAM,KAAK,CAAC;AAAA,EACtE;AACA,SAAO,WAAW;AACpB;AAEA,SAAS,eAAe,QAAuC;AAC7D,MAAI,QAAQ,YAAY,KAAM;AAC9B,QAAM,SAAS,OAAO;AACtB,MAAI,kBAAkB,OAAO;AAC3B,UAAM;AAAA,EACR;AACA,QAAM,WAAW,WAAW,SAAY,sBAAsB,OAAO,MAAM,CAAC;AAC9E;AAEA,eAAe,yBAAyB,SAMZ;AAC1B,SAAO,oBAAoB,QAAQ,WAAW,QAAQ,aAAa;AAAA,IACjE,IAAI,QAAQ;AAAA,IACZ,QAAQ,QAAQ,OAAO,UAAU;AAAA,IACjC,YAAY,QAAQ,IAAI,YAAY;AAAA,IACpC,gBAAgB;AAAA,IAChB,eAAe,QAAQ;AAAA,IACvB,mBAAmB,QAAQ,OAAO,qBAAqB;AAAA,EACzD,CAAC;AACH;","names":[]}