@askexenow/exe-os 0.9.413 → 0.9.415

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 (422) hide show
  1. package/deploy/compose/.env.customer.example +1 -1
  2. package/deploy/compose/.env.default +1 -1
  3. package/deploy/compose/.env.example +1 -1
  4. package/deploy/compose/docker-compose.yml +1 -1
  5. package/deploy/stack-manifests/v0.9.json +399 -2
  6. package/dist/.dist-verified.json +3 -3
  7. package/dist/{active-agent-MHWQDMML.js → active-agent-LB7T3TLZ.js} +7 -6
  8. package/dist/{active-agent-3YCLS7GB.js → active-agent-NUV4ZSZV.js} +7 -6
  9. package/dist/{agent-defs-generator-DNXMO34I.js → agent-defs-generator-GMN7JLNZ.js} +6 -5
  10. package/dist/{agentic-ontology-RA6CMND6.js → agentic-ontology-ARQVAAYP.js} +1 -1
  11. package/dist/{artifact-backup-EETHNFFP.js → artifact-backup-C6CYTX4E.js} +3 -3
  12. package/dist/{backfill-metadata-WYT257VG.js → backfill-metadata-OLMSQBJF.js} +9 -8
  13. package/dist/{backup-verify-AG54CYGR.js → backup-verify-TPKH64MK.js} +3 -2
  14. package/dist/{behavior-injection-G7GAUHGO.js → behavior-injection-UJ6CW5K7.js} +12 -11
  15. package/dist/{behavior-promotion-I2DIUFUR.js → behavior-promotion-QSVT4WGD.js} +11 -10
  16. package/dist/{behaviors-SKVKPCRW.js → behaviors-6HWTCOTR.js} +10 -9
  17. package/dist/bin/agentic-ontology-backfill.js +10 -9
  18. package/dist/bin/agentic-reflection-backfill.js +11 -10
  19. package/dist/bin/agentic-semantic-label.js +10 -9
  20. package/dist/bin/backfill-conversations.js +9 -8
  21. package/dist/bin/backfill-responses.js +9 -8
  22. package/dist/bin/backfill-vectors.js +9 -8
  23. package/dist/bin/bulk-sync-postgres.js +18 -17
  24. package/dist/bin/cc-doctor.js +11 -10
  25. package/dist/bin/cleanup-stale-review-tasks.js +18 -17
  26. package/dist/bin/cli.js +60 -36
  27. package/dist/bin/deferred-daemon-restart.js +106 -105
  28. package/dist/bin/exe-agent-config.js +5 -4
  29. package/dist/bin/exe-agent.js +17 -16
  30. package/dist/bin/exe-assign.js +10 -9
  31. package/dist/bin/exe-boot.js +39 -38
  32. package/dist/bin/exe-call.js +10 -9
  33. package/dist/bin/exe-cloud.js +19 -18
  34. package/dist/bin/exe-config-dump.js +5 -4
  35. package/dist/bin/exe-dispatch.js +19 -18
  36. package/dist/bin/exe-doctor.js +9 -8
  37. package/dist/bin/exe-export-behaviors.js +14 -13
  38. package/dist/bin/exe-forget.js +12 -11
  39. package/dist/bin/exe-gateway.js +11 -10
  40. package/dist/bin/exe-grant.js +6 -6
  41. package/dist/bin/exe-healthcheck.js +11 -10
  42. package/dist/bin/exe-heartbeat.js +24 -23
  43. package/dist/bin/exe-kill.js +23 -22
  44. package/dist/bin/exe-launch-agent.js +66 -33
  45. package/dist/bin/exe-mcp.js +8 -7
  46. package/dist/bin/exe-memory-reads.js +9 -8
  47. package/dist/bin/exe-new-employee.js +14 -13
  48. package/dist/bin/exe-os-mcp-proxy.js +8 -7
  49. package/dist/bin/exe-pending-messages.js +19 -18
  50. package/dist/bin/exe-pending-notifications.js +18 -17
  51. package/dist/bin/exe-pending-reviews.js +19 -18
  52. package/dist/bin/exe-rename.js +9 -8
  53. package/dist/bin/exe-review.js +22 -21
  54. package/dist/bin/exe-search.js +11 -10
  55. package/dist/bin/exe-session-cleanup.js +23 -22
  56. package/dist/bin/exe-settings.js +18 -17
  57. package/dist/bin/exe-start-codex.js +21 -20
  58. package/dist/bin/exe-start-opencode.js +19 -18
  59. package/dist/bin/exe-start.sh +10 -1
  60. package/dist/bin/exe-status.js +20 -19
  61. package/dist/bin/exe-support.js +3 -3
  62. package/dist/bin/exe-team.js +7 -6
  63. package/dist/bin/exe-telemetry.js +88 -0
  64. package/dist/bin/git-sweep.js +20 -19
  65. package/dist/bin/graph-backfill.js +10 -9
  66. package/dist/bin/graph-export.js +10 -9
  67. package/dist/bin/hooks-cli.js +1 -1
  68. package/dist/bin/import-history.js +14 -13
  69. package/dist/bin/install.js +109 -108
  70. package/dist/bin/intercom-check.js +5 -5
  71. package/dist/bin/mcp-sessions.js +2 -2
  72. package/dist/bin/orchestration-metrics.js +7 -6
  73. package/dist/bin/postgres-agentic-reflection-backfill.js +2 -2
  74. package/dist/bin/postgres-agentic-semantic-backfill.js +1 -1
  75. package/dist/bin/reconcile-backlog.js +2 -2
  76. package/dist/bin/registry-proxy.js +1 -1
  77. package/dist/bin/repair-document-chunks.js +9 -8
  78. package/dist/bin/scan-tasks.js +19 -18
  79. package/dist/bin/setup.js +4 -3
  80. package/dist/bin/shard-migrate.js +10 -9
  81. package/dist/bin/stack-update.js +4 -4
  82. package/dist/bin/vps-health-gate.js +1 -1
  83. package/dist/{boot-generation-RPJVFAQJ.js → boot-generation-UGKTVJQW.js} +6 -5
  84. package/dist/{boot-review-sections-FOPPZTJI.js → boot-review-sections-EW5FJU3N.js} +17 -16
  85. package/dist/{bug-landed-reconciler-FN5KPBRK.js → bug-landed-reconciler-7DLU65MM.js} +8 -7
  86. package/dist/build-info.json +3 -3
  87. package/dist/build-manifest.json +1157 -1132
  88. package/dist/{capability-cards-YQWBEG7A.js → capability-cards-EC7FLCFF.js} +5 -4
  89. package/dist/{capacity-monitor-7SMEJHYG.js → capacity-monitor-2TQMIGQV.js} +19 -18
  90. package/dist/{catchup-brief-IBQ26LEB.js → catchup-brief-Q2CEZ5LV.js} +24 -23
  91. package/dist/{chunk-M6SUJLNP.js → chunk-2PNEZSFH.js} +2 -2
  92. package/dist/{chunk-NCNT2C2P.js → chunk-2S3H4TRY.js} +2 -2
  93. package/dist/{chunk-27NG2NTG.js → chunk-2UAILEAO.js} +2 -2
  94. package/dist/{chunk-RHHEYC6H.js → chunk-3PMAZKLF.js} +3 -3
  95. package/dist/{chunk-W4H2MZAS.js → chunk-3W6D3XED.js} +1 -1
  96. package/dist/{chunk-JAIZCE6W.js → chunk-43BBN2ZV.js} +3 -3
  97. package/dist/{chunk-IPUDXR67.js → chunk-4FURM6R5.js} +12 -3
  98. package/dist/{chunk-JW5NUXPN.js → chunk-5GUSZMFP.js} +14 -14
  99. package/dist/{chunk-RHJOTGEU.js → chunk-5HCHK52F.js} +1 -1
  100. package/dist/{chunk-7HLAYQRG.js → chunk-5PNYCWYF.js} +5 -5
  101. package/dist/{chunk-HUHR5CKJ.js → chunk-5X5BOCLS.js} +4 -4
  102. package/dist/{chunk-2EYVXUGA.js → chunk-6DFP2ZMF.js} +4 -4
  103. package/dist/{chunk-6HJF7IA3.js → chunk-6QVWL7ZX.js} +227 -198
  104. package/dist/{chunk-TS4LSNRI.js → chunk-745M4HPM.js} +1 -1
  105. package/dist/{chunk-HDV2V25K.js → chunk-7BMIJMFY.js} +1 -1
  106. package/dist/{chunk-Z3LGAFMG.js → chunk-7D6432GR.js} +1 -1
  107. package/dist/{chunk-6L4VIYLZ.js → chunk-7MCEYNWK.js} +15 -1
  108. package/dist/{chunk-XDOCXKHW.js → chunk-7ZEIFHRE.js} +1 -1
  109. package/dist/{chunk-ZZR2WRNW.js → chunk-AAVLHB5A.js} +4 -4
  110. package/dist/{chunk-7YX73K2R.js → chunk-ALA7WYZZ.js} +6 -1
  111. package/dist/{chunk-CJ6CS2IH.js → chunk-BHIMHRRI.js} +5 -5
  112. package/dist/{chunk-CRW63CDI.js → chunk-BSSVSBHE.js} +1 -1
  113. package/dist/chunk-CCFWKW2D.js +92 -0
  114. package/dist/{chunk-FYV2CTKP.js → chunk-CL7P4RW3.js} +1 -1
  115. package/dist/{chunk-SXUABANK.js → chunk-CRO66YJ2.js} +3 -3
  116. package/dist/{chunk-GL5ZG72X.js → chunk-CTZTOAHJ.js} +2 -2
  117. package/dist/{chunk-LSHUX7P4.js → chunk-D4RU4Y57.js} +16 -16
  118. package/dist/{chunk-JGBYZTWH.js → chunk-D6D7LCMR.js} +1 -1
  119. package/dist/{chunk-HDQAVAV6.js → chunk-D6ORFO5E.js} +2 -2
  120. package/dist/{chunk-RIKFXHLE.js → chunk-DJZ4EAZ7.js} +1 -1
  121. package/dist/{chunk-3DXAJVXE.js → chunk-DNWWDHJM.js} +6 -6
  122. package/dist/{chunk-MZNLQC6W.js → chunk-E3TNFXWQ.js} +1 -1
  123. package/dist/{chunk-6PXFF6IV.js → chunk-EVSJUMO3.js} +1 -1
  124. package/dist/{chunk-CWHTUNJX.js → chunk-EXKT3GID.js} +2 -2
  125. package/dist/{chunk-J6U4ZR77.js → chunk-FDMZOLB3.js} +2 -2
  126. package/dist/{chunk-DHLJZDWI.js → chunk-FIAMVZ5I.js} +6 -6
  127. package/dist/{chunk-O3BLL6MY.js → chunk-FNRVCDFM.js} +1 -1
  128. package/dist/{chunk-BLTXAUP6.js → chunk-G32NPOUR.js} +2 -2
  129. package/dist/{chunk-QSW5DHMZ.js → chunk-GCMKH2PM.js} +1 -1
  130. package/dist/{chunk-BIPTWAEO.js → chunk-GDUQ3UQR.js} +1 -1
  131. package/dist/{chunk-L5JFVK5T.js → chunk-GDZJL5GQ.js} +15 -10
  132. package/dist/{chunk-RYMXD2NT.js → chunk-GELNQI77.js} +1 -1
  133. package/dist/{chunk-5ZMNFSHV.js → chunk-H3MFCDKR.js} +1 -1
  134. package/dist/{chunk-657I6PUF.js → chunk-H3ORS4N7.js} +3 -3
  135. package/dist/{chunk-W3ABSZ6G.js → chunk-H7ZVQUU2.js} +2 -2
  136. package/dist/{chunk-2YGBJHC2.js → chunk-HMEXSII5.js} +3 -3
  137. package/dist/{chunk-EWDBWOCX.js → chunk-HPCISMTN.js} +1 -1
  138. package/dist/{chunk-HA6BIZ6L.js → chunk-I2IG5GKQ.js} +8 -8
  139. package/dist/{chunk-SINIRUYZ.js → chunk-I4N7F54M.js} +117 -39
  140. package/dist/{chunk-XEAZJXMZ.js → chunk-IM2KTXBB.js} +2 -2
  141. package/dist/{chunk-XC5OASHV.js → chunk-IVPVCTXX.js} +1 -1
  142. package/dist/{chunk-CFFSHBQF.js → chunk-J56UXB2X.js} +1 -1
  143. package/dist/{chunk-6J2J3VJS.js → chunk-JHVRXXEB.js} +10 -10
  144. package/dist/{chunk-SO7KTH3Q.js → chunk-JJYL2K7E.js} +1 -1
  145. package/dist/{chunk-2BOLFLAU.js → chunk-JKDYZZGD.js} +2 -2
  146. package/dist/{chunk-VS7V5HNO.js → chunk-JOOWL33C.js} +1 -1
  147. package/dist/{chunk-7KPZQ65I.js → chunk-KAJC6L7D.js} +3 -3
  148. package/dist/{chunk-KN5GAVCG.js → chunk-KBJHOC6E.js} +2 -2
  149. package/dist/{chunk-KEDZRQI3.js → chunk-KKJ3BLYL.js} +2 -2
  150. package/dist/{chunk-QJWLQXR7.js → chunk-KYQ623IB.js} +1 -1
  151. package/dist/{chunk-W7VKGB42.js → chunk-L2IJM337.js} +1 -1
  152. package/dist/{chunk-IHAXXDBH.js → chunk-LCGQGYY6.js} +3 -3
  153. package/dist/{chunk-HTFM7ZDD.js → chunk-LFIDYVYE.js} +2 -2
  154. package/dist/chunk-LP5USONU.js +125 -0
  155. package/dist/{chunk-JJZZXEAN.js → chunk-LUB5P63H.js} +2 -2
  156. package/dist/{chunk-GATAYYAF.js → chunk-MLVDB65S.js} +3 -3
  157. package/dist/{chunk-2YFMBXUU.js → chunk-MSOPRLKE.js} +4 -4
  158. package/dist/{chunk-Q6KUBP6R.js → chunk-MXY47DBC.js} +5 -5
  159. package/dist/{chunk-PDQGR5LZ.js → chunk-N7PW2MXQ.js} +1 -1
  160. package/dist/{chunk-6DMURUBY.js → chunk-NLFYDDFL.js} +4 -4
  161. package/dist/{chunk-JNULO6I5.js → chunk-NPA3GSDP.js} +3 -3
  162. package/dist/{chunk-ZJ6AMC4Y.js → chunk-NXVVJE6C.js} +7 -7
  163. package/dist/{chunk-TVWYMOZ4.js → chunk-O3HLDFKY.js} +15 -4
  164. package/dist/{chunk-PYXXL7N7.js → chunk-OEH4DGFQ.js} +1 -1
  165. package/dist/{chunk-VBYSAQJD.js → chunk-OEJZFRT4.js} +1 -1
  166. package/dist/{chunk-VQQPYI4X.js → chunk-OJMM2CBY.js} +2 -2
  167. package/dist/{chunk-X2ZHCNNB.js → chunk-OL7KB6AV.js} +5 -5
  168. package/dist/{chunk-FSXMKIDO.js → chunk-OSAIUYF5.js} +1 -1
  169. package/dist/{chunk-GZVFHFO3.js → chunk-OVN35JFJ.js} +10 -10
  170. package/dist/{chunk-4J77TCTX.js → chunk-PMGEC42V.js} +1 -1
  171. package/dist/{chunk-LBSCOP25.js → chunk-PV5OGJYV.js} +1 -1
  172. package/dist/{chunk-M6AX64J2.js → chunk-QNFR7ZKH.js} +20 -8
  173. package/dist/{chunk-DWRULKB3.js → chunk-R32D6TBB.js} +2 -2
  174. package/dist/chunk-R3ZU4F7M.js +359 -0
  175. package/dist/{chunk-3N24FV22.js → chunk-REMAJEVA.js} +1 -1
  176. package/dist/{chunk-7SHU5MOD.js → chunk-RJ7RN5GE.js} +1 -1
  177. package/dist/{chunk-5BWDUUMH.js → chunk-RMXIDLAZ.js} +3 -3
  178. package/dist/{chunk-PTF5TB6O.js → chunk-RNFYJ7EQ.js} +9 -9
  179. package/dist/{chunk-RJIH7JXM.js → chunk-RV4DRCSF.js} +4 -4
  180. package/dist/{chunk-QOFQY7BJ.js → chunk-RYJTPWKV.js} +1 -1
  181. package/dist/{telemetry-upload-6DR6AL3V.js → chunk-SBHJ6YVB.js} +53 -28
  182. package/dist/{chunk-XQ7BIVLI.js → chunk-SOKGCUCF.js} +9 -9
  183. package/dist/{chunk-K2HIXAIF.js → chunk-SWU43K5E.js} +14 -14
  184. package/dist/{chunk-BE3UETW6.js → chunk-T4X35SUY.js} +3 -3
  185. package/dist/{chunk-LLZUL7M2.js → chunk-TDPDKE4M.js} +4 -2
  186. package/dist/{chunk-TCBWHLKH.js → chunk-TH3P7D7J.js} +9 -9
  187. package/dist/{chunk-47YGEM4N.js → chunk-TRH4DPXR.js} +1 -1
  188. package/dist/{chunk-EOWJXCYC.js → chunk-TSZ3JCQB.js} +1 -1
  189. package/dist/{chunk-FPF2PJFK.js → chunk-U34HVNLK.js} +3 -3
  190. package/dist/{chunk-OHHZNNUD.js → chunk-UC45TUAV.js} +1 -1
  191. package/dist/{chunk-IC2AONBH.js → chunk-UCXX7XZS.js} +9 -9
  192. package/dist/{chunk-N7POJZJT.js → chunk-UJRBX44K.js} +13 -13
  193. package/dist/{chunk-RYYFFCJG.js → chunk-UMBKEPUP.js} +1 -1
  194. package/dist/{chunk-GHYHNHDL.js → chunk-UOLIA6N6.js} +1 -1
  195. package/dist/{chunk-VAHQOIQY.js → chunk-UOPCGIEE.js} +1 -1
  196. package/dist/{chunk-5DLZJ3MY.js → chunk-UWIL3LFL.js} +1 -1
  197. package/dist/{chunk-BG6RAOCJ.js → chunk-UYK7NOJD.js} +3 -3
  198. package/dist/{chunk-LQGLGSBY.js → chunk-UYOWEAZB.js} +2 -2
  199. package/dist/{chunk-T3AM52YT.js → chunk-V4Q5FU7M.js} +4 -4
  200. package/dist/{chunk-A5I2GYVQ.js → chunk-VPXSW6MC.js} +3 -3
  201. package/dist/{chunk-7PDZBPGW.js → chunk-WECEOYOY.js} +1 -1
  202. package/dist/{chunk-GM4UEZDE.js → chunk-WEG7URND.js} +43 -30
  203. package/dist/{chunk-JTJP4JK7.js → chunk-X537FLO2.js} +3 -3
  204. package/dist/{chunk-RMC2A6EE.js → chunk-X6UH3DQE.js} +1 -1
  205. package/dist/{chunk-353XF4LU.js → chunk-XGQCOI3X.js} +2 -2
  206. package/dist/{chunk-FS7XF7SE.js → chunk-XHJO7XFR.js} +1 -1
  207. package/dist/{chunk-3GGMHSY2.js → chunk-XLUEY3SP.js} +3 -3
  208. package/dist/{chunk-D6NZNUVH.js → chunk-YAV55Y4U.js} +1 -1
  209. package/dist/{chunk-6777GNWI.js → chunk-YBVSVB6C.js} +19 -8
  210. package/dist/{chunk-6BD6JYR2.js → chunk-YV3AVQJW.js} +3 -3
  211. package/dist/{chunk-X4FHT6ST.js → chunk-YXGSP2MH.js} +9 -9
  212. package/dist/{chunk-O6KQAJCC.js → chunk-Z46GUZSY.js} +3 -3
  213. package/dist/{chunk-FUDXITKX.js → chunk-ZDD6IQGV.js} +1 -1
  214. package/dist/{chunk-QV26G2BF.js → chunk-ZO5S6T64.js} +1 -1
  215. package/dist/{cleanup-graph-garbage-SYGPMPUM.js → cleanup-graph-garbage-CNUIX5CD.js} +10 -9
  216. package/dist/{cli-shutdown-JI7CASE4.js → cli-shutdown-5PBVKPZJ.js} +1 -1
  217. package/dist/{cloud-sync-command-ZV3P5FP6.js → cloud-sync-command-3E4HKL3N.js} +2 -2
  218. package/dist/{cloud-sync-db-init-RQIHWKV4.js → cloud-sync-db-init-ASBDBYCS.js} +1 -1
  219. package/dist/{cloud-sync-shutdown-V2N7VLD3.js → cloud-sync-shutdown-P6ZT3O6P.js} +5 -4
  220. package/dist/{co-activation-SRE6DIRX.js → co-activation-7ZJFM3YK.js} +5 -4
  221. package/dist/{co-occurrence-F5TMSEQZ.js → co-occurrence-O7ON7AP3.js} +8 -7
  222. package/dist/{consent-passphrase-MWZRHJRC.js → consent-passphrase-ITU47UWT.js} +2 -2
  223. package/dist/{conversation-entity-extractor-XMOUHGMT.js → conversation-entity-extractor-JZNP4UGE.js} +3 -3
  224. package/dist/{conversations-retention-XTBFJBUM.js → conversations-retention-HFM2K6ND.js} +33 -12
  225. package/dist/{crdt-sync-FXEKABM7.js → crdt-sync-B2E3G5YE.js} +4 -4
  226. package/dist/{crm-webhook-D6IJOPRQ.js → crm-webhook-P543266X.js} +2 -2
  227. package/dist/{cto-delegation-gate-BU3JRCYN.js → cto-delegation-gate-ASFPC6L4.js} +18 -17
  228. package/dist/{daemon-orchestration-K4NKFYXO.js → daemon-orchestration-ZPUEHXRM.js} +24 -23
  229. package/dist/{doc-graph-extractor-TVK2NGAR.js → doc-graph-extractor-IADQDUXA.js} +8 -7
  230. package/dist/{documents-MDZ4VB5X.js → documents-MZ5N44EK.js} +10 -9
  231. package/dist/{dreaming-L24PSS35.js → dreaming-OXHEGMGQ.js} +22 -21
  232. package/dist/{employee-boot-brief-GQVL3FQC.js → employee-boot-brief-PMN4STQZ.js} +26 -25
  233. package/dist/{entity-boost-OMFA5QCG.js → entity-boost-5J6OOB4P.js} +1 -1
  234. package/dist/{exe-drift-JDDG3OPT.js → exe-drift-JPD3DP7R.js} +6 -5
  235. package/dist/{exe-export-EEGIE3JP.js → exe-export-TWJ2E235.js} +11 -10
  236. package/dist/{exe-import-UJNC5Q2L.js → exe-import-JTFPCMXG.js} +11 -10
  237. package/dist/{exe-key-TYEY4W4E.js → exe-key-47FOEEFU.js} +106 -105
  238. package/dist/{exe-org-B3ICTTEV.js → exe-org-SDLU427Y.js} +40 -40
  239. package/dist/{exe-snapshot-VBFBONYN.js → exe-snapshot-G6JSOA3W.js} +25 -24
  240. package/dist/{fast-db-init-TFRTK6EH.js → fast-db-init-BWZOVVBH.js} +1 -1
  241. package/dist/{founder-context-3X4QUWKD.js → founder-context-UMNCOSKR.js} +2 -2
  242. package/dist/{founder-monitor-envelope-54UNZNY4.js → founder-monitor-envelope-I4535R5I.js} +4 -4
  243. package/dist/gateway/index.js +19 -18
  244. package/dist/{gateway-client-OUDO5GGV.js → gateway-client-YD24RN7P.js} +1 -1
  245. package/dist/{git-staleness-73YZ5PGU.js → git-staleness-B4H3EE72.js} +5 -4
  246. package/dist/{global-procedures-PYNE2BQG.js → global-procedures-TTBNXTRS.js} +7 -6
  247. package/dist/{graph-auto-extract-PGUMEEQB.js → graph-auto-extract-E4RSCUEO.js} +8 -7
  248. package/dist/{graph-query-7YA3YNKL.js → graph-query-U4WIQNFV.js} +1 -1
  249. package/dist/{graph-rag-UWOTK4AQ.js → graph-rag-WPSWFLOX.js} +3 -3
  250. package/dist/{hook-integrity-6MNEPT6W.js → hook-integrity-G6L3XFGO.js} +1 -1
  251. package/dist/{hook-prefetch-JOF6YZSR.js → hook-prefetch-5AOLNRCY.js} +18 -17
  252. package/dist/{hook-tamper-log-HTWEP37U.js → hook-tamper-log-SWQVRDDV.js} +6 -1
  253. package/dist/hooks/bug-report-worker.js +22 -21
  254. package/dist/hooks/codex-stop-task-finalizer.js +24 -23
  255. package/dist/hooks/commit-complete.js +21 -20
  256. package/dist/hooks/error-recall.js +14 -13
  257. package/dist/hooks/exe-heartbeat-hook.js +8 -7
  258. package/dist/hooks/ingest-worker.js +20 -19
  259. package/dist/hooks/ingest.js +16 -15
  260. package/dist/hooks/instructions-loaded.js +10 -9
  261. package/dist/hooks/manifest.json +20 -20
  262. package/dist/hooks/notification.js +9 -8
  263. package/dist/hooks/post-compact.js +8 -7
  264. package/dist/hooks/post-tool-combined.js +13 -13
  265. package/dist/hooks/pre-compact.js +22 -21
  266. package/dist/hooks/pre-tool-use.js +2 -2
  267. package/dist/hooks/prompt-submit.js +40 -39
  268. package/dist/hooks/session-end.js +27 -26
  269. package/dist/hooks/session-start.js +18 -18
  270. package/dist/hooks/stop.js +25 -24
  271. package/dist/hooks/subagent-stop.js +25 -24
  272. package/dist/hooks/summary-worker.js +25 -24
  273. package/dist/index.js +32 -31
  274. package/dist/{installer-34XZ7JMW.js → installer-KQPRRYWJ.js} +9 -8
  275. package/dist/{installer-356RMQ2K.js → installer-NDH3XNBJ.js} +9 -8
  276. package/dist/{installer-7TN36Z7T.js → installer-SQXH44SB.js} +9 -8
  277. package/dist/{intercom-queue-ZJ3MNULM.js → intercom-queue-NKPPTIL4.js} +17 -16
  278. package/dist/lib/backup-verify-worker.js +3 -2
  279. package/dist/lib/cloud-sync.js +18 -17
  280. package/dist/lib/consolidation.js +11 -10
  281. package/dist/lib/crypto.js +3 -3
  282. package/dist/lib/database.js +5 -4
  283. package/dist/lib/db-backup.js +12 -1
  284. package/dist/lib/db-checkpoint-worker.js +25 -0
  285. package/dist/lib/db-read-worker-client.js +155 -26
  286. package/dist/lib/db-write-worker-client.js +5 -1
  287. package/dist/lib/db-write-worker.js +9 -8
  288. package/dist/lib/db.js +5 -4
  289. package/dist/lib/device-registry.js +1 -1
  290. package/dist/lib/employee-templates.js +8 -7
  291. package/dist/lib/employees.js +5 -4
  292. package/dist/lib/exe-daemon.js +127 -106
  293. package/dist/lib/file-grep.js +14 -1
  294. package/dist/lib/hybrid-search.js +11 -10
  295. package/dist/lib/identity.js +5 -4
  296. package/dist/lib/keychain.js +1 -1
  297. package/dist/lib/license.js +2 -2
  298. package/dist/lib/messaging.js +18 -17
  299. package/dist/lib/post-tool-memory.js +18 -17
  300. package/dist/lib/registry-proxy.js +1 -1
  301. package/dist/lib/reminders.js +6 -5
  302. package/dist/lib/schedules.js +10 -9
  303. package/dist/lib/session-registry.js +7 -6
  304. package/dist/lib/session-wrappers.js +1 -1
  305. package/dist/lib/skill-learning.js +11 -10
  306. package/dist/lib/store.js +9 -8
  307. package/dist/lib/task-router.js +6 -5
  308. package/dist/lib/tasks.js +19 -18
  309. package/dist/lib/telemetry-consent.js +29 -0
  310. package/dist/lib/tmux-routing.js +17 -16
  311. package/dist/lib/tmux-status.js +5 -1
  312. package/dist/lib/token-spend.js +6 -5
  313. package/dist/lib/ws-client.js +1 -1
  314. package/dist/{license-gate-4BXUTHLB.js → license-gate-Q37UDDE5.js} +3 -3
  315. package/dist/{license-recheck-QFPUKISQ.js → license-recheck-AJ7VHKXK.js} +1 -1
  316. package/dist/{license-sync-FDEDT4AC.js → license-sync-H7EMEVUL.js} +2 -2
  317. package/dist/{maintenance-worker-OY2E4BM5.js → maintenance-worker-3FNF2GA5.js} +1 -1
  318. package/dist/mcp/register-tools.js +105 -104
  319. package/dist/mcp/server.js +107 -106
  320. package/dist/mcp/tools/complete-reminder.js +7 -6
  321. package/dist/mcp/tools/create-reminder.js +7 -6
  322. package/dist/mcp/tools/create-task.js +22 -21
  323. package/dist/mcp/tools/deactivate-behavior.js +13 -12
  324. package/dist/mcp/tools/list-reminders.js +7 -6
  325. package/dist/mcp/tools/list-tasks.js +22 -21
  326. package/dist/mcp/tools/send-message.js +21 -20
  327. package/dist/mcp/tools/update-task.js +20 -19
  328. package/dist/{mcp-http-config-GKP5QGAO.js → mcp-http-config-4355SP7A.js} +8 -7
  329. package/dist/{mcp-session-identity-JHAGRB7B.js → mcp-session-identity-JKOJLE7C.js} +17 -16
  330. package/dist/{memory-cards-O377ETAM.js → memory-cards-WTRVBRVV.js} +9 -8
  331. package/dist/{memory-graph-extractor-4KJCCUOP.js → memory-graph-extractor-4T33LWJU.js} +9 -8
  332. package/dist/{memory-maintenance-RR5UPRW3.js → memory-maintenance-JGNZK33G.js} +1 -1
  333. package/dist/{memory-poisoning-defense-Y5TTKGOP.js → memory-poisoning-defense-AHMMXW44.js} +5 -4
  334. package/dist/{memory-pressure-watchdog-NGXTI4HR.js → memory-pressure-watchdog-L3Z4VEPV.js} +18 -17
  335. package/dist/{memory-reflection-EXNHRZL7.js → memory-reflection-4775DTOT.js} +9 -8
  336. package/dist/{memory-write-repository-S4TX7WQB.js → memory-write-repository-AQ7RXJVQ.js} +5 -3
  337. package/dist/{monitor-grants-57Q4NL25.js → monitor-grants-YCKRRH65.js} +3 -3
  338. package/dist/{monitor-identity-3FQ52SYU.js → monitor-identity-RC5HSDKY.js} +2 -2
  339. package/dist/{notification-ledger-O6KQYYGK.js → notification-ledger-EMZ676N7.js} +18 -17
  340. package/dist/{notifications-6FCQCJ4P.js → notifications-UITENQFG.js} +17 -16
  341. package/dist/{orchestration-events-2Z2BMMA5.js → orchestration-events-TXMCSNWZ.js} +6 -5
  342. package/dist/{orchestrator-AGOSKPHD.js → orchestrator-WJ55ZFL5.js} +19 -18
  343. package/dist/{org-brief-session-WJHZVXXJ.js → org-brief-session-YXCBRVSI.js} +17 -16
  344. package/dist/{org-consent-policy-X43UGTHI.js → org-consent-policy-ZVT2Y22K.js} +5 -5
  345. package/dist/{org-join-M3UTBMHC.js → org-join-PRWU2OBZ.js} +11 -11
  346. package/dist/{org-key-admin-AA2DRHB2.js → org-key-admin-FTGOH7RU.js} +13 -13
  347. package/dist/{org-key-epoch-Z5UIVUHT.js → org-key-epoch-IHN3UVUM.js} +5 -5
  348. package/dist/{org-key-pin-FE6YHEZ3.js → org-key-pin-TAL5ISYT.js} +3 -3
  349. package/dist/{org-membership-3J2MIGE4.js → org-membership-FZ7DUCZX.js} +4 -4
  350. package/dist/{org-partner-config-5HATZYG4.js → org-partner-config-Z45CGHE7.js} +8 -8
  351. package/dist/{org-partner-runtime-UI35IHUC.js → org-partner-runtime-J64U2Z7X.js} +17 -16
  352. package/dist/{org-row-visibility-TRJERVYP.js → org-row-visibility-JO2Z5XVO.js} +1 -1
  353. package/dist/{pipeline-router-EKQ6D7ZA.js → pipeline-router-ARYK3UAA.js} +6 -5
  354. package/dist/{plan-limits-3BGHIHX6.js → plan-limits-BA6ZSEQ2.js} +8 -7
  355. package/dist/{pre-tool-use-impl-7BT5TJVM.js → pre-tool-use-impl-NSPKU7SW.js} +34 -33
  356. package/dist/{project-name-PGJGUEJY.js → project-name-3WEMIXD6.js} +10 -5
  357. package/dist/{projection-worker-3GEVFPAI.js → projection-worker-OD7SCQVL.js} +2 -2
  358. package/dist/{prospective-memory-GEN7CN7H.js → prospective-memory-7M5EOED6.js} +5 -4
  359. package/dist/{push-notifications-QW4BWRC7.js → push-notifications-CT452G6K.js} +18 -17
  360. package/dist/{reproject-worktree-memories-DIULBEBD.js → reproject-worktree-memories-4X4FTVPN.js} +17 -16
  361. package/dist/{reranker-LQ6OPJOI.js → reranker-CZUA64BW.js} +1 -1
  362. package/dist/{retrieval-health-XDFYFEOP.js → retrieval-health-5K3EF7WW.js} +1 -1
  363. package/dist/{review-polling-ED33YLFT.js → review-polling-5W6HLGKH.js} +18 -17
  364. package/dist/runtime/index.js +25 -24
  365. package/dist/{seat-benefit-YEUQBNCS.js → seat-benefit-SBVGAMMY.js} +2 -2
  366. package/dist/{session-events-7IJGTBVH.js → session-events-OOYSDWTW.js} +26 -19
  367. package/dist/{session-kill-telemetry-RUTEARJ3.js → session-kill-telemetry-WTL757YS.js} +18 -17
  368. package/dist/{session-scope-SSYA64L3.js → session-scope-QNS6V4QZ.js} +17 -16
  369. package/dist/{setup-wizard-XD7FZVLJ.js → setup-wizard-2SPD7JW5.js} +4 -3
  370. package/dist/{shard-manager-FH5JZRSE.js → shard-manager-YZXA6L3J.js} +3 -3
  371. package/dist/{skill-refinement-UHD4E6GV.js → skill-refinement-XAL2VK7I.js} +6 -5
  372. package/dist/{skill-retrieval-F6PAJ3I5.js → skill-retrieval-H45FGACU.js} +13 -12
  373. package/dist/{skill-usage-2MBTF7Y4.js → skill-usage-Z4PY5DYL.js} +6 -5
  374. package/dist/{stack-generate-manifest-MVJDTU4F.js → stack-generate-manifest-ZWGGIXOW.js} +4 -4
  375. package/dist/{stack-promote-BMGEY6SQ.js → stack-promote-U34DKI2R.js} +4 -4
  376. package/dist/{stack-release-64UJ6Y4W.js → stack-release-IGZDQ2EA.js} +5 -5
  377. package/dist/{stack-update-EBATTQPP.js → stack-update-3MADKNUJ.js} +3 -3
  378. package/dist/{steward-gate-EWG2BHYQ.js → steward-gate-GXHJ3LLV.js} +6 -5
  379. package/dist/{subagent-brief-injection-YZGSWUEY.js → subagent-brief-injection-CONZI6JP.js} +29 -28
  380. package/dist/{subagent-spawn-ledger-PDICC43I.js → subagent-spawn-ledger-2XSOIL35.js} +3 -1
  381. package/dist/{support-bug-actions-RU6WZ3UV.js → support-bug-actions-GHMGOVQX.js} +3 -3
  382. package/dist/{support-inbox-A3S52SPS.js → support-inbox-3EDSKPUK.js} +15 -14
  383. package/dist/{task-enforcement-LVAS55AR.js → task-enforcement-DPOVUD2H.js} +18 -17
  384. package/dist/{task-request-inbox-2TN4ZUH2.js → task-request-inbox-6CCLPLZF.js} +5 -5
  385. package/dist/{task-scope-NLKUVCP5.js → task-scope-5OTHET2J.js} +17 -16
  386. package/dist/{tasks-crud-NQDPLHNZ.js → tasks-crud-ZPUVDX7W.js} +21 -16
  387. package/dist/{tasks-notify-BDM2NEHP.js → tasks-notify-3RODHYLI.js} +18 -17
  388. package/dist/{tasks-review-3G7CAW2O.js → tasks-review-H43CSMNK.js} +17 -16
  389. package/dist/telemetry-upload-4ZYZNO5R.js +42 -0
  390. package/dist/{token-budget-KNC2WGR7.js → token-budget-QGQRMS47.js} +6 -5
  391. package/dist/{tool-telemetry-I3SEU5M5.js → tool-telemetry-HPOHW2Y2.js} +1 -1
  392. package/dist/tui/App.js +27 -26
  393. package/dist/{tui-data-KJDWP4CB.js → tui-data-3E66SZPC.js} +21 -20
  394. package/dist/{update-support-UYDYMHVR.js → update-support-6PQDY3IQ.js} +14 -13
  395. package/dist/{whatsapp-5EMPZHF5.js → whatsapp-5YLHZDFB.js} +2 -2
  396. package/dist/{wiki-acl-M7BTQJBZ.js → wiki-acl-O4EOHWXE.js} +1 -1
  397. package/dist/{work-claims-5CFMZTML.js → work-claims-XGC47NTW.js} +6 -5
  398. package/dist/{work-state-heartbeat-7IA2DZ2E.js → work-state-heartbeat-WAVGL6QG.js} +1 -1
  399. package/dist/{workflow-engine-S5JOE2YR.js → workflow-engine-E7R4STX2.js} +2 -2
  400. package/dist/{worktree-7V4ZMF3D.js → worktree-GYH7OEVR.js} +7 -6
  401. package/dist/{worktree-sweep-34MXJ7S6.js → worktree-sweep-KMZ2KPSO.js} +8 -7
  402. package/package.json +2 -1
  403. package/release-notes.json +44 -36
  404. package/stack.release.json +3 -3
  405. package/dist/chunk-PEYQ6MWO.js +0 -175
  406. /package/dist/{chunk-EULAP6L6.js → chunk-2KBPXG43.js} +0 -0
  407. /package/dist/{chunk-J635FA7T.js → chunk-2WHPS3AR.js} +0 -0
  408. /package/dist/{chunk-QDSNEGJE.js → chunk-4ZWYHHUJ.js} +0 -0
  409. /package/dist/{chunk-J4B4M5PH.js → chunk-5LKFIUH3.js} +0 -0
  410. /package/dist/{chunk-542FBM5U.js → chunk-5TOYYGBC.js} +0 -0
  411. /package/dist/{chunk-CFO47VW4.js → chunk-BYNXKQG2.js} +0 -0
  412. /package/dist/{chunk-N45FAI6D.js → chunk-EORDC4BQ.js} +0 -0
  413. /package/dist/{chunk-6D2O5SAH.js → chunk-GTGXFYYI.js} +0 -0
  414. /package/dist/{chunk-YVWXI2HM.js → chunk-H6HWBMJ3.js} +0 -0
  415. /package/dist/{chunk-FYSKQPTE.js → chunk-QD3YZKZR.js} +0 -0
  416. /package/dist/{chunk-MOBZTIJQ.js → chunk-QTWQGGSP.js} +0 -0
  417. /package/dist/{chunk-SKSXROKP.js → chunk-TMJKP6WP.js} +0 -0
  418. /package/dist/{chunk-6NRZLVK3.js → chunk-YEUGS6CI.js} +0 -0
  419. /package/dist/{core-memory-PZEO3OWH.js → core-memory-RHW5ZX36.js} +0 -0
  420. /package/dist/{memory-isolation-MFNT2ITE.js → memory-isolation-J3KHDCE7.js} +0 -0
  421. /package/dist/{oauth-server-CBGEWD6H.js → oauth-server-WAR3PJOX.js} +0 -0
  422. /package/dist/{project-boot-VESAYDIH.js → project-boot-3BTM3FJ2.js} +0 -0
@@ -4,20 +4,20 @@ import {
4
4
  import {
5
5
  assertValidDbPath
6
6
  } from "./chunk-TKDITWDN.js";
7
+ import {
8
+ recordDbOpen
9
+ } from "./chunk-5YEUPUV4.js";
7
10
  import {
8
11
  listBackups,
9
12
  preBackupCheckpoint
10
- } from "./chunk-SINIRUYZ.js";
13
+ } from "./chunk-I4N7F54M.js";
11
14
  import {
12
15
  MEMORY_PROJECTION_OUTBOX_INDEX_SQL,
13
16
  MEMORY_PROJECTION_OUTBOX_TABLE_SQL,
14
17
  MEMORY_PROJECTION_OUTBOX_UNIQUE_INDEX_SQL,
15
18
  PROJECTION_CHECKPOINT_TABLE_SQL,
16
19
  ensureMemoryWriteIndex
17
- } from "./chunk-6777GNWI.js";
18
- import {
19
- recordDbOpen
20
- } from "./chunk-5YEUPUV4.js";
20
+ } from "./chunk-YBVSVB6C.js";
21
21
  import {
22
22
  isPostgresBackendEnabled
23
23
  } from "./chunk-YYB5PMTK.js";
@@ -824,14 +824,15 @@ function registerBinSymlinks(name) {
824
824
  return { created, skipped, errors };
825
825
  }
826
826
  const binDir = path3.dirname(exeBinPath);
827
- let target;
827
+ let cliTarget;
828
828
  try {
829
- target = readlinkSync(exeBinPath);
829
+ cliTarget = readlinkSync(exeBinPath);
830
830
  } catch {
831
831
  errors.push("Could not read 'exe' symlink");
832
832
  return { created, skipped, errors };
833
833
  }
834
- for (const suffix of ["", "-opencode", "-glm"]) {
834
+ const target = path3.join(path3.dirname(cliTarget), "exe-launch-agent.js");
835
+ for (const suffix of ["", "-opencode", "-glm", "-muse"]) {
835
836
  const linkName = `${name}${suffix}`;
836
837
  const linkPath = path3.join(binDir, linkName);
837
838
  if (existsSync3(linkPath)) {
@@ -1515,7 +1516,7 @@ async function migrateReflectionDedup(client) {
1515
1516
  "ALTER TABLE memory_reflections ADD COLUMN dedup_key TEXT",
1516
1517
  "migration add memory_reflections.dedup_key"
1517
1518
  );
1518
- const { reflectionDedupKey } = await import("./memory-reflection-EXNHRZL7.js");
1519
+ const { reflectionDedupKey } = await import("./memory-reflection-4775DTOT.js");
1519
1520
  const keyForRow = (row) => {
1520
1521
  let sources = [];
1521
1522
  try {
@@ -2546,6 +2547,8 @@ async function offloadReadQuery(sql, args = []) {
2546
2547
  return await runReadQueryInWorker(sql, args);
2547
2548
  }
2548
2549
  } catch (err) {
2550
+ const { isDbReadWorkerTimeout } = await import("./lib/db-read-worker-client.js");
2551
+ if (isDbReadWorkerTimeout(err)) throw err;
2549
2552
  logCatchDebug("offloadReadQuery worker", err);
2550
2553
  }
2551
2554
  }
@@ -2559,6 +2562,8 @@ async function offloadReadIfMain(client, sql, args, isMain) {
2559
2562
  return await runReadQueryInWorker(sql, args);
2560
2563
  }
2561
2564
  } catch (err) {
2565
+ const { isDbReadWorkerTimeout } = await import("./lib/db-read-worker-client.js");
2566
+ if (isDbReadWorkerTimeout(err)) throw err;
2562
2567
  logCatchDebug("offloadReadIfMain worker", err);
2563
2568
  }
2564
2569
  }
@@ -2573,7 +2578,7 @@ async function sweepExpiredSoftDeletedMemories(client, options = {}) {
2573
2578
  const purgeArchived = archDays !== void 0;
2574
2579
  const BATCH_SIZE = 2e3;
2575
2580
  const MAX_BATCHES = 500;
2576
- const { cleanupCardsForMemories, cleanupGraphLinksForMemories } = await import("./graph-rag-UWOTK4AQ.js");
2581
+ const { cleanupCardsForMemories, cleanupGraphLinksForMemories } = await import("./graph-rag-WPSWFLOX.js");
2577
2582
  const softCutoff = `-${softDays} days`;
2578
2583
  const selectArgsBase = [softCutoff];
2579
2584
  let predicate = `status = 'deleted' AND COALESCE(deleted_at, timestamp) < datetime('now', ?)`;
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-WCGNCH3Q.js";
4
4
  import {
5
5
  registerAllTools
6
- } from "./chunk-6HJF7IA3.js";
6
+ } from "./chunk-6QVWL7ZX.js";
7
7
 
8
8
  // src/mcp/mcp-surface-hash.ts
9
9
  function computeMcpSurfaceHash() {
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  recordOrchestrationEventBestEffort
3
- } from "./chunk-JGBYZTWH.js";
3
+ } from "./chunk-D6D7LCMR.js";
4
4
 
5
5
  // src/lib/worktree.ts
6
6
  import { execFile, execFileSync, execSync } from "child_process";
@@ -1,16 +1,16 @@
1
1
  import {
2
2
  extractMemoryGraph
3
- } from "./chunk-RHHEYC6H.js";
3
+ } from "./chunk-3PMAZKLF.js";
4
4
  import {
5
5
  flushBatch,
6
6
  writeMemory
7
- } from "./chunk-LSHUX7P4.js";
7
+ } from "./chunk-D4RU4Y57.js";
8
8
  import {
9
9
  extractKeywords
10
10
  } from "./chunk-CHCA3ZM2.js";
11
11
  import {
12
12
  getActiveAgent
13
- } from "./chunk-GL5ZG72X.js";
13
+ } from "./chunk-CTZTOAHJ.js";
14
14
 
15
15
  // src/mcp/tools/import-conversations.ts
16
16
  import { z } from "zod";
@@ -140,7 +140,7 @@ async function assertManifestSignature(manifest, publicKeyPem) {
140
140
  "manifest carries no `signature`. Fleets that enforce EXE_STACK_PUBLIC_KEY reject unsigned manifests, so publishing one would ship a release no host can install. Re-sign with the custodied key: node scripts/sign-stack-manifest.mjs deploy/stack-manifests/v0.9.json"
141
141
  );
142
142
  }
143
- const { verifyStackManifestSignature } = await import("./stack-update-EBATTQPP.js");
143
+ const { verifyStackManifestSignature } = await import("./stack-update-3MADKNUJ.js");
144
144
  try {
145
145
  verifyStackManifestSignature(manifest, publicKeyPem);
146
146
  } catch (err) {
@@ -1008,7 +1008,7 @@ async function runRegistryProxy(options = registryProxyOptionsFromEnv()) {
1008
1008
  await new Promise((resolve) => server.listen(options.port, options.host, resolve));
1009
1009
  console.log(`exe-registry-proxy listening on ${options.host ?? "0.0.0.0"}:${options.port}`);
1010
1010
  console.log(`proxying /v2/${options.allowedNamespace ?? "askexe"}/* -> ${options.upstream ?? "https://ghcr.io"}`);
1011
- const { licenseSyncConfigFromEnv, startLicenseSyncScheduler } = await import("./license-sync-FDEDT4AC.js");
1011
+ const { licenseSyncConfigFromEnv, startLicenseSyncScheduler } = await import("./license-sync-H7EMEVUL.js");
1012
1012
  const syncConfig = licenseSyncConfigFromEnv();
1013
1013
  if (syncConfig) {
1014
1014
  startLicenseSyncScheduler(syncConfig);
@@ -1,15 +1,15 @@
1
1
  import {
2
2
  getActiveAgent
3
- } from "./chunk-GL5ZG72X.js";
3
+ } from "./chunk-CTZTOAHJ.js";
4
4
  import {
5
5
  listTasks
6
- } from "./chunk-GM4UEZDE.js";
6
+ } from "./chunk-WEG7URND.js";
7
7
  import {
8
8
  getAgentContext
9
9
  } from "./chunk-GJV3WDWM.js";
10
10
  import {
11
11
  isCoordinatorName
12
- } from "./chunk-L5JFVK5T.js";
12
+ } from "./chunk-GDZJL5GQ.js";
13
13
 
14
14
  // src/mcp/tools/list-tasks.ts
15
15
  import { z } from "zod";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  completeReminder,
3
3
  formatAmbiguousReminder
4
- } from "./chunk-RYYFFCJG.js";
4
+ } from "./chunk-UMBKEPUP.js";
5
5
 
6
6
  // src/mcp/tools/complete-reminder.ts
7
7
  import { z } from "zod";
@@ -1,27 +1,27 @@
1
- import {
2
- asOrgBillablePlan
3
- } from "./chunk-W4H2MZAS.js";
4
1
  import {
5
2
  resolvePartnerIdentities
6
- } from "./chunk-CJ6CS2IH.js";
3
+ } from "./chunk-BHIMHRRI.js";
4
+ import {
5
+ asOrgBillablePlan
6
+ } from "./chunk-3W6D3XED.js";
7
7
  import {
8
8
  OrgKeyPinConflictError,
9
9
  orgKeyPinConfirmation,
10
10
  pinOrgKey,
11
11
  readOrgKeyPin
12
- } from "./chunk-6PXFF6IV.js";
12
+ } from "./chunk-EVSJUMO3.js";
13
13
  import {
14
14
  displayFingerprint,
15
15
  ed25519PrivateKeyFromSeed,
16
16
  signKeyFingerprint
17
- } from "./chunk-MZNLQC6W.js";
17
+ } from "./chunk-E3TNFXWQ.js";
18
18
  import {
19
19
  establishOrgMode,
20
20
  upsertOrgMembership
21
- } from "./chunk-LLZUL7M2.js";
21
+ } from "./chunk-TDPDKE4M.js";
22
22
  import {
23
23
  isValidX25519Recipient
24
- } from "./chunk-7SHU5MOD.js";
24
+ } from "./chunk-RJ7RN5GE.js";
25
25
 
26
26
  // src/lib/org-join.ts
27
27
  import { createHash, sign } from "crypto";
@@ -1,3 +1,6 @@
1
+ import {
2
+ copyDbUnderReadSnapshot
3
+ } from "./chunk-CCFWKW2D.js";
1
4
  import {
2
5
  isPostgresBackendEnabled
3
6
  } from "./chunk-YYB5PMTK.js";
@@ -230,7 +233,7 @@ async function preBackupCheckpoint(dbPath, checkpointMode) {
230
233
  }
231
234
  async function offloadedSourceQuickCheck(dbPath) {
232
235
  try {
233
- const { backupVerifyOffloadEnabled, runInBackupVerifyWorker, reportBackupVerifyWorkerMissing } = await import("./backup-verify-AG54CYGR.js");
236
+ const { backupVerifyOffloadEnabled, runInBackupVerifyWorker, reportBackupVerifyWorkerMissing } = await import("./backup-verify-TPKH64MK.js");
234
237
  if (!backupVerifyOffloadEnabled()) return null;
235
238
  if (!backupOffloadCreds || path.resolve(backupOffloadCreds.dbPath) !== path.resolve(dbPath)) {
236
239
  process.stderr.write(
@@ -257,10 +260,10 @@ async function offloadedSourceQuickCheck(dbPath) {
257
260
  return null;
258
261
  }
259
262
  process.stderr.write(
260
- `[db-backup] off-loop source quick_check did not complete (${run.ok ? "unexpected reply" : run.reason}); falling back to the main-thread check.
263
+ `[db-backup] off-loop source quick_check did not complete (${run.ok ? "unexpected reply" : run.reason}); NOT re-running it on the daemon event loop.
261
264
  `
262
265
  );
263
- return null;
266
+ return "incomplete";
264
267
  } catch (err) {
265
268
  process.stderr.write(
266
269
  `[db-backup] off-loop source quick_check failed (${err instanceof Error ? err.message : String(err)}); falling back to the main-thread check.
@@ -302,6 +305,9 @@ async function quickCheckBackupSourceAfterCopy(reason, backupPath, dbPath) {
302
305
  return markUnverified("connection is query_only; an FTS5 verdict from it is not trustworthy");
303
306
  }
304
307
  const offloaded = await offloadedSourceQuickCheck(dbPath);
308
+ if (offloaded === "incomplete") {
309
+ return markUnverified("off-loop source quick_check did not complete; refusing to re-run a full-DB scan on the daemon event loop");
310
+ }
305
311
  let result;
306
312
  if (offloaded === "ok") {
307
313
  result = "ok";
@@ -410,42 +416,65 @@ async function promoteTmpBackup(tmpBackupPath, backupPath, includeSidecars) {
410
416
  if (existsSync(tmpSidecar)) await rename(tmpSidecar, backupPath + suffix);
411
417
  }
412
418
  }
413
- async function checkpointWalIntoMainDb(client) {
419
+ var SNAPSHOT_COPY_WORKER_TIMEOUT_MS = Number(process.env.EXE_BACKUP_SNAPSHOT_COPY_TIMEOUT_MS) || 2 * 60 * 60 * 1e3;
420
+ var SNAPSHOT_COPY_EXIT_WITH_WAL = 3;
421
+ async function trySnapshotCopyWorker(dbPath, tmpBackupPath, encryptionKey) {
422
+ if (process.env.EXE_IS_DAEMON !== "1") return null;
423
+ if (!backupOffloadCreds || path.resolve(backupOffloadCreds.dbPath) !== path.resolve(dbPath)) return null;
424
+ const workerPath = process.env.EXE_DB_CHECKPOINT_WORKER_BIN || resolveCheckpointWorkerPath(import.meta.url);
425
+ if (!workerPath) {
426
+ process.stderr.write(
427
+ "[db-backup] WARNING: db-checkpoint-worker.js not found \u2014 the encrypted backup snapshot copy will run IN-PROCESS on the daemon event loop (check tsup entries).\n"
428
+ );
429
+ return null;
430
+ }
431
+ const { fork } = await import("child_process");
432
+ const env = {
433
+ ...process.env,
434
+ EXE_DB_CHECKPOINT_PATH: dbPath,
435
+ EXE_DB_CHECKPOINT_MODE: "TRUNCATE",
436
+ EXE_DB_CHECKPOINT_BUSY_TIMEOUT_MS: String(PRE_BACKUP_CHECKPOINT_BUSY_TIMEOUT_MS),
437
+ EXE_DB_CHECKPOINT_KEY: encryptionKey,
438
+ EXE_DB_SNAPSHOT_COPY_DEST: tmpBackupPath,
439
+ EXE_IS_DAEMON: ""
440
+ };
441
+ const child = fork(workerPath, [], { stdio: ["ignore", "ignore", "inherit", "ipc"], env });
414
442
  try {
415
- await client.execute(`PRAGMA busy_timeout = ${PRE_BACKUP_CHECKPOINT_BUSY_TIMEOUT_MS}`);
443
+ child.disconnect();
416
444
  } catch {
417
445
  }
418
- const modes = ["TRUNCATE", "TRUNCATE", "TRUNCATE", "FULL"];
419
- for (const mode of modes) {
420
- try {
421
- const res = await client.execute(`PRAGMA wal_checkpoint(${mode})`);
422
- const row = res.rows?.[0];
423
- const busy = Number(row?.busy ?? row?.[0] ?? 0);
424
- if (busy === 0) return true;
425
- } catch {
426
- }
427
- }
428
- return false;
446
+ const exitCode = await new Promise((resolve, reject) => {
447
+ const timer = setTimeout(() => {
448
+ try {
449
+ child.kill("SIGKILL");
450
+ } catch {
451
+ }
452
+ reject(new Error(`snapshot copy worker timed out after ${SNAPSHOT_COPY_WORKER_TIMEOUT_MS}ms`));
453
+ }, SNAPSHOT_COPY_WORKER_TIMEOUT_MS);
454
+ timer.unref?.();
455
+ child.once("error", (err) => {
456
+ clearTimeout(timer);
457
+ reject(err);
458
+ });
459
+ child.once("exit", (code) => {
460
+ clearTimeout(timer);
461
+ resolve(code);
462
+ });
463
+ });
464
+ if (exitCode === 0) return "standalone";
465
+ if (exitCode === SNAPSHOT_COPY_EXIT_WITH_WAL) return "with-wal";
466
+ throw new Error(`snapshot copy worker exited with code ${exitCode}`);
429
467
  }
430
468
  async function createEncryptedByteBackup(dbPath, tmpBackupPath, encryptionKey) {
431
- let drained = false;
432
- const client = createClient({ url: `file:${dbPath}`, encryptionKey });
433
- try {
434
- await client.execute("SELECT 1");
435
- drained = await checkpointWalIntoMainDb(client);
436
- } finally {
437
- client.close();
438
- }
439
- let walBytes = 0;
440
- try {
441
- walBytes = existsSync(dbPath + "-wal") ? statSync(dbPath + "-wal").size : 0;
442
- } catch {
443
- }
444
- if (drained || walBytes === 0) {
445
- await copyFile(dbPath, tmpBackupPath);
446
- return false;
447
- }
448
- return copyBytePreservingSnapshot(dbPath, tmpBackupPath);
469
+ const offloaded = await trySnapshotCopyWorker(dbPath, tmpBackupPath, encryptionKey);
470
+ if (offloaded) return offloaded === "with-wal";
471
+ const mode = await copyDbUnderReadSnapshot({
472
+ dbPath,
473
+ destPath: tmpBackupPath,
474
+ encryptionKey,
475
+ busyTimeoutMs: PRE_BACKUP_CHECKPOINT_BUSY_TIMEOUT_MS
476
+ });
477
+ return mode === "with-wal";
449
478
  }
450
479
  async function resolveBackupEncryptionKey(dbPath, explicit) {
451
480
  if (explicit) return explicit;
@@ -549,17 +578,30 @@ async function createBackupAsync(reason = "manual", opts = {}) {
549
578
  await createOnlineBackup(dbPath, tmpBackupPath);
550
579
  }
551
580
  } catch (err) {
552
- if (!preserveForRestore) throw err;
581
+ if (!preserveForRestore) {
582
+ recordFailedBackupAttempt(reason, `copy failed: ${err instanceof Error ? err.message : String(err)}`);
583
+ for (const p of [tmpBackupPath, `${tmpBackupPath}-wal`]) {
584
+ try {
585
+ unlinkSync(p);
586
+ } catch {
587
+ }
588
+ }
589
+ throw err;
590
+ }
553
591
  bytePreservingSidecars = await copyBytePreservingSnapshot(dbPath, tmpBackupPath);
554
592
  }
555
593
  markBackupInFlight(backupPath);
556
594
  try {
557
595
  await promoteTmpBackup(tmpBackupPath, backupPath, bytePreservingSidecars);
558
596
  const sourceStatus = preserveForRestore ? null : await quickCheckBackupSourceAfterCopy(reason, backupPath, dbPath);
559
- if (sourceStatus === "failed") return null;
597
+ if (sourceStatus === "failed") {
598
+ recordFailedBackupAttempt(reason, "backup source failed quick_check; copy quarantined");
599
+ return null;
600
+ }
560
601
  if (sourceStatus === "repaired") {
561
602
  if (opts._retriedAfterFtsRepair) {
562
603
  process.stderr.write("[db-backup] ERROR: backup source still failed after FTS repair retry; refusing to keep backup.\n");
604
+ recordFailedBackupAttempt(reason, "backup source still failed quick_check after FTS repair retry");
563
605
  return null;
564
606
  }
565
607
  return createBackupAsync(reason, { ...opts, _retriedAfterFtsRepair: true });
@@ -576,7 +618,7 @@ async function createBackupAsync(reason = "manual", opts = {}) {
576
618
  let artifactState = "not-checked";
577
619
  let artifactDetail = "artifact read-back did not run";
578
620
  try {
579
- const { manifestWriteEnabled, readBackBackupArtifact, manifestPathFor } = await import("./backup-verify-AG54CYGR.js");
621
+ const { manifestWriteEnabled, readBackBackupArtifact, manifestPathFor } = await import("./backup-verify-TPKH64MK.js");
580
622
  if (manifestWriteEnabled()) {
581
623
  const readback = await readBackBackupArtifact(backupPath, dbName, { keyHex: encryptionKey });
582
624
  artifactState = readback.artifact;
@@ -605,6 +647,7 @@ async function createBackupAsync(reason = "manual", opts = {}) {
605
647
  `[db-backup] ERROR: backup (${reason}) produced an UNREADABLE artifact \u2014 ${artifactDetail}. The live source passed its own check; the COPY did not. ` + (quarantined ? `Quarantined as ${path.basename(quarantined)}.` : `Quarantine rename FAILED \u2014 remove ${backupBase} manually.`) + ` This file is NOT a valid backup.
606
648
  `
607
649
  );
650
+ recordFailedBackupAttempt(reason, `artifact unreadable: ${artifactDetail}`);
608
651
  return null;
609
652
  }
610
653
  if (artifactState === "readable") {
@@ -649,10 +692,14 @@ async function createBackupAsync(reason = "manual", opts = {}) {
649
692
  `[db-backup] ERROR: backup (${reason}) left a ${walBytes}-byte WAL with no manifest \u2014 unverifiable image. ` + (quarantined ? `Quarantined as ${path.basename(quarantined)}.` : `Quarantine rename FAILED \u2014 remove ${path.basename(backupPath)} manually.`) + ` This file is NOT a valid backup.
650
693
  `
651
694
  );
652
- if (reason !== "pre-restore") return null;
695
+ if (reason !== "pre-restore") {
696
+ recordFailedBackupAttempt(reason, `dirty-WAL image without manifest (wal=${walBytes} bytes)`);
697
+ return null;
698
+ }
653
699
  }
654
700
  }
655
701
  clearBackupInFlight(backupPath);
702
+ if (reason !== "pre-restore") clearFailedBackupAttempt(reason);
656
703
  if (!opts.skipRetention) {
657
704
  try {
658
705
  enforceRetention(reason);
@@ -816,7 +863,7 @@ function recordMissedBackup(entry) {
816
863
  function alertMissedBackup(message, skipped) {
817
864
  void (async () => {
818
865
  try {
819
- const { pushNotifyAsync } = await import("./push-notifications-QW4BWRC7.js");
866
+ const { pushNotifyAsync } = await import("./push-notifications-CT452G6K.js");
820
867
  pushNotifyAsync({
821
868
  event: "backup_failed",
822
869
  title: skipped ? "Backup SKIPPED \u2014 disk full" : "Backup FAILED \u2014 disk full",
@@ -1272,6 +1319,32 @@ function hasRecentBackup(reason, withinMs, deps = REAL_RECENT_BACKUP_DEPS) {
1272
1319
  }
1273
1320
  return false;
1274
1321
  }
1322
+ function failedBackupAttemptMarkerPath(reason, backupDir = BACKUP_DIR) {
1323
+ return path.join(backupDir, `.last-failed-attempt-${reason.replace(/[^A-Za-z0-9_-]/g, "_")}.json`);
1324
+ }
1325
+ function recordFailedBackupAttempt(reason, detail, backupDir = BACKUP_DIR) {
1326
+ try {
1327
+ writeFileSync(
1328
+ failedBackupAttemptMarkerPath(reason, backupDir),
1329
+ JSON.stringify({ reason, at: (/* @__PURE__ */ new Date()).toISOString(), detail: detail.slice(0, 500) }) + "\n"
1330
+ );
1331
+ } catch {
1332
+ }
1333
+ }
1334
+ function clearFailedBackupAttempt(reason, backupDir = BACKUP_DIR) {
1335
+ try {
1336
+ unlinkSync(failedBackupAttemptMarkerPath(reason, backupDir));
1337
+ } catch {
1338
+ }
1339
+ }
1340
+ function hasRecentFailedBackupAttempt(reason, withinMs, deps = REAL_RECENT_BACKUP_DEPS) {
1341
+ try {
1342
+ const mtime = deps.statMtimeMs(failedBackupAttemptMarkerPath(reason, deps.backupDir));
1343
+ return deps.now() - mtime <= withinMs;
1344
+ } catch {
1345
+ return false;
1346
+ }
1347
+ }
1275
1348
  function shouldMakePreRestartBackup(existingBackupMtimesMs, now, windowMs = preRestartDedupWindowMs()) {
1276
1349
  return !existingBackupMtimesMs.some((mtime) => now - mtime <= windowMs);
1277
1350
  }
@@ -1356,6 +1429,7 @@ export {
1356
1429
  resolveQuickCheckRoute,
1357
1430
  resolveCheckpointWorkerPath,
1358
1431
  preBackupCheckpoint,
1432
+ SNAPSHOT_COPY_EXIT_WITH_WAL,
1359
1433
  shouldQuarantineDirtyWalBackup,
1360
1434
  quarantineDirtyWalBackup,
1361
1435
  createBackup,
@@ -1396,6 +1470,10 @@ export {
1396
1470
  DEFAULT_PRE_RESTART_DEDUP_MS,
1397
1471
  preRestartDedupWindowMs,
1398
1472
  hasRecentBackup,
1473
+ failedBackupAttemptMarkerPath,
1474
+ recordFailedBackupAttempt,
1475
+ clearFailedBackupAttempt,
1476
+ hasRecentFailedBackupAttempt,
1399
1477
  shouldMakePreRestartBackup,
1400
1478
  isUnverifiableDirtyWalBackup,
1401
1479
  getLatestBackup,
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  ingest
3
- } from "./chunk-FPF2PJFK.js";
3
+ } from "./chunk-U34HVNLK.js";
4
4
  import {
5
5
  listWorkflowDefinitions,
6
6
  runWorkflow,
7
7
  startWorkflow
8
- } from "./chunk-GHYHNHDL.js";
8
+ } from "./chunk-UOLIA6N6.js";
9
9
  import {
10
10
  initCRMBridge
11
11
  } from "./chunk-ML4S5SHZ.js";
@@ -11,7 +11,7 @@ import {
11
11
  import {
12
12
  loadLicense,
13
13
  readCachedLicenseToken
14
- } from "./chunk-EOWJXCYC.js";
14
+ } from "./chunk-TSZ3JCQB.js";
15
15
  import {
16
16
  loadConfig
17
17
  } from "./chunk-MMS2HBRT.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getClient
3
- } from "./chunk-L5JFVK5T.js";
3
+ } from "./chunk-GDZJL5GQ.js";
4
4
 
5
5
  // src/lib/skill-refinement.ts
6
6
  import crypto from "crypto";
@@ -1,23 +1,23 @@
1
1
  import {
2
2
  MultiAgentOrchestrator
3
- } from "./chunk-BE3UETW6.js";
3
+ } from "./chunk-T4X35SUY.js";
4
4
  import {
5
5
  createTokenBudgetMiddleware
6
- } from "./chunk-PDQGR5LZ.js";
6
+ } from "./chunk-N7PW2MXQ.js";
7
7
  import {
8
8
  createQuietRenderer,
9
9
  createTerminalRenderer,
10
10
  renderAgentEvents
11
11
  } from "./chunk-YZFZDJWZ.js";
12
- import {
13
- checkDangerousPatterns,
14
- hasCriticalPattern
15
- } from "./chunk-CMCYL2JC.js";
16
12
  import {
17
13
  checkPathSafety,
18
14
  checkReadPathSafety,
19
15
  containsPathTraversal
20
16
  } from "./chunk-NGVOA6ZQ.js";
17
+ import {
18
+ checkDangerousPatterns,
19
+ hasCriticalPattern
20
+ } from "./chunk-CMCYL2JC.js";
21
21
  import {
22
22
  ContextManager,
23
23
  agentLoop,
@@ -212,7 +212,7 @@ function createExeOSHooks(config) {
212
212
  );
213
213
  }
214
214
  try {
215
- const { listBehaviors } = await import("./behaviors-SKVKPCRW.js");
215
+ const { listBehaviors } = await import("./behaviors-6HWTCOTR.js");
216
216
  const behaviors = await listBehaviors(config.agentId, config.projectName, 12);
217
217
  if (behaviors.length > 0) {
218
218
  process.stderr.write(
@@ -333,7 +333,7 @@ function createExeOSHooks(config) {
333
333
  async onSubagentStop(_reason) {
334
334
  try {
335
335
  const { getClient } = await import("./lib/database.js");
336
- const { sessionScopeFilter } = await import("./task-scope-NLKUVCP5.js");
336
+ const { sessionScopeFilter } = await import("./task-scope-5OTHET2J.js");
337
337
  const client = getClient();
338
338
  const ehScope = sessionScopeFilter();
339
339
  const tasks = await client.execute({
@@ -373,7 +373,7 @@ function createExeOSHooks(config) {
373
373
  setAt: (/* @__PURE__ */ new Date()).toISOString()
374
374
  });
375
375
  try {
376
- const { writeNotification } = await import("./notifications-6FCQCJ4P.js");
376
+ const { writeNotification } = await import("./notifications-UITENQFG.js");
377
377
  await writeNotification({
378
378
  agentId: config.agentId,
379
379
  agentRole: "employee",
@@ -444,7 +444,7 @@ function createExeOSHooks(config) {
444
444
  try {
445
445
  const { writeMemory, flushBatch } = await import("./lib/store.js");
446
446
  const { getClient } = await import("./lib/database.js");
447
- const { sessionScopeFilter: cpScopeFilter } = await import("./task-scope-NLKUVCP5.js");
447
+ const { sessionScopeFilter: cpScopeFilter } = await import("./task-scope-5OTHET2J.js");
448
448
  const client = getClient();
449
449
  const cpScope = cpScopeFilter();
450
450
  const tasks = await client.execute({
@@ -15,7 +15,7 @@ function formatBytes(bytes) {
15
15
  var FREE_TIER_BACKUP_DISCLOSURE = [
16
16
  "Cloud backup is NOT included on the free plan. Exe OS is local-first:",
17
17
  "your Partner and your memories live on this machine and work fully offline.",
18
- "Free accounts keep everything locally, and nothing is copied to the cloud.",
18
+ "Free accounts keep everything locally: none of your memories are copied to the cloud.",
19
19
  "Cloud backup comes with a paid plan, or with a seat in an organisation -",
20
20
  "and either way it is encrypted under your key, so we cannot read it."
21
21
  ].join("\n");
@@ -3,14 +3,14 @@ import {
3
3
  getClient,
4
4
  isInitialized,
5
5
  loadEmployees
6
- } from "./chunk-L5JFVK5T.js";
6
+ } from "./chunk-GDZJL5GQ.js";
7
7
  import {
8
8
  checkLicense,
9
9
  isFeatureAllowed,
10
10
  proofWithinOfflineTrust,
11
11
  readPersonalFreeGrandfatherState,
12
12
  resolveClientLimits
13
- } from "./chunk-EOWJXCYC.js";
13
+ } from "./chunk-TSZ3JCQB.js";
14
14
  import {
15
15
  PLAN_LIMITS
16
16
  } from "./chunk-3R7UDPVR.js";
@@ -4,7 +4,7 @@ import {
4
4
  getGitRootAsync,
5
5
  isWorktreeDirty,
6
6
  isWorktreeDirtyAsync
7
- } from "./chunk-5ZMNFSHV.js";
7
+ } from "./chunk-H3MFCDKR.js";
8
8
 
9
9
  // src/lib/worktree-sweep.ts
10
10
  import { execFile } from "child_process";
@@ -8,14 +8,14 @@ import {
8
8
  resolveExeSession,
9
9
  sendIntercom,
10
10
  strictSessionScopeFilter
11
- } from "./chunk-GM4UEZDE.js";
11
+ } from "./chunk-WEG7URND.js";
12
12
  import {
13
13
  parseMessage,
14
14
  serializeMessage
15
15
  } from "./chunk-TDF2XKLK.js";
16
16
  import {
17
17
  recordOrchestrationEventBestEffort
18
- } from "./chunk-JGBYZTWH.js";
18
+ } from "./chunk-D6D7LCMR.js";
19
19
  import {
20
20
  isValidSessionScope
21
21
  } from "./chunk-BTSWFMEH.js";
@@ -24,7 +24,7 @@ import {
24
24
  } from "./chunk-CVYC6DUW.js";
25
25
  import {
26
26
  getClient
27
- } from "./chunk-L5JFVK5T.js";
27
+ } from "./chunk-GDZJL5GQ.js";
28
28
 
29
29
  // src/lib/messaging.ts
30
30
  import crypto from "crypto";
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  registerScopedQueryChokepoint,
3
3
  scopedQueryChokepointStatus
4
- } from "./chunk-XQ7BIVLI.js";
4
+ } from "./chunk-SOKGCUCF.js";
5
5
  import {
6
6
  getClient
7
- } from "./chunk-L5JFVK5T.js";
7
+ } from "./chunk-GDZJL5GQ.js";
8
8
 
9
9
  // src/lib/org-scoped-rows.ts
10
10
  var SCOPED_QUERY_MAX_LIMIT = 200;
@@ -4,14 +4,14 @@ import {
4
4
  } from "./chunk-ZD5TZZXU.js";
5
5
  import {
6
6
  vectorToSqlLiteral
7
- } from "./chunk-LSHUX7P4.js";
7
+ } from "./chunk-D4RU4Y57.js";
8
8
  import {
9
9
  blobToVector
10
10
  } from "./chunk-OTVEIJUQ.js";
11
11
  import {
12
12
  getClient,
13
13
  sanitizeBehaviorContent
14
- } from "./chunk-L5JFVK5T.js";
14
+ } from "./chunk-GDZJL5GQ.js";
15
15
 
16
16
  // src/lib/behaviors.ts
17
17
  import crypto from "crypto";