@askexenow/exe-os 0.9.342 → 0.9.344

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 (380) hide show
  1. package/dist/{active-agent-PVGE57FY.js → active-agent-WXLJG2WA.js} +5 -5
  2. package/dist/{active-agent-TNIO6IY3.js → active-agent-YZH3F7NG.js} +5 -5
  3. package/dist/{agentic-ontology-3FXYMHKW.js → agentic-ontology-UH556ULS.js} +1 -1
  4. package/dist/assets/com.askexe.exed.plist +3 -5
  5. package/dist/{backfill-gate-65LSYVE5.js → backfill-gate-UCBL6Q5U.js} +2 -2
  6. package/dist/{backfill-metadata-ZSMZC45J.js → backfill-metadata-7WFF4Q45.js} +6 -6
  7. package/dist/{background-jobs-EXR5RVGG.js → background-jobs-QK7NLJ4P.js} +2 -2
  8. package/dist/{backup-verify-3Y2FHGZU.js → backup-verify-EUMJVTMQ.js} +3 -3
  9. package/dist/{behaviors-KYRB3NGJ.js → behaviors-GDR3P3XF.js} +7 -7
  10. package/dist/bin/age-ontology-load.js +2 -2
  11. package/dist/bin/agentic-ontology-backfill.js +8 -8
  12. package/dist/bin/agentic-reflection-backfill.js +9 -9
  13. package/dist/bin/agentic-semantic-label.js +8 -8
  14. package/dist/bin/backfill-conversations.js +8 -8
  15. package/dist/bin/backfill-responses.js +8 -8
  16. package/dist/bin/backfill-vectors.js +17 -17
  17. package/dist/bin/bulk-sync-postgres.js +16 -16
  18. package/dist/bin/cc-doctor.js +9 -9
  19. package/dist/bin/cleanup-stale-review-tasks.js +20 -19
  20. package/dist/bin/cli.js +75 -61
  21. package/dist/bin/daemon-restart-handoff.js +27 -0
  22. package/dist/bin/deferred-daemon-restart.js +121 -93
  23. package/dist/bin/exe-agent-config.js +5 -5
  24. package/dist/bin/exe-agent.js +10 -10
  25. package/dist/bin/exe-assign.js +10 -10
  26. package/dist/bin/exe-boot.js +268 -195
  27. package/dist/bin/exe-call.js +7 -7
  28. package/dist/bin/exe-cloud.js +17 -17
  29. package/dist/bin/exe-config-dump.js +5 -5
  30. package/dist/bin/exe-dispatch.js +20 -19
  31. package/dist/bin/exe-doctor.js +8 -8
  32. package/dist/bin/exe-export-behaviors.js +11 -11
  33. package/dist/bin/exe-forget.js +10 -10
  34. package/dist/bin/exe-gateway.js +9 -9
  35. package/dist/bin/exe-grant.js +4 -4
  36. package/dist/bin/exe-healthcheck.js +9 -9
  37. package/dist/bin/exe-heartbeat.js +76 -20
  38. package/dist/bin/exe-kill.js +25 -24
  39. package/dist/bin/exe-launch-agent.js +46 -31
  40. package/dist/bin/exe-memory-reads.js +6 -6
  41. package/dist/bin/exe-new-employee.js +11 -11
  42. package/dist/bin/exe-os-mcp-proxy.js +365 -0
  43. package/dist/bin/exe-pending-messages.js +21 -20
  44. package/dist/bin/exe-pending-notifications.js +20 -19
  45. package/dist/bin/exe-pending-reviews.js +20 -19
  46. package/dist/bin/exe-rename.js +7 -7
  47. package/dist/bin/exe-review.js +24 -23
  48. package/dist/bin/exe-search-quality.js +1 -1
  49. package/dist/bin/exe-search.js +7 -7
  50. package/dist/bin/exe-session-cleanup.js +23 -22
  51. package/dist/bin/exe-settings.js +17 -17
  52. package/dist/bin/exe-start-codex.js +43 -21
  53. package/dist/bin/exe-start-opencode.js +10 -10
  54. package/dist/bin/exe-status.js +21 -20
  55. package/dist/bin/exe-support.js +4 -4
  56. package/dist/bin/exe-team.js +5 -5
  57. package/dist/bin/git-sweep.js +21 -20
  58. package/dist/bin/graph-backfill.js +9 -9
  59. package/dist/bin/graph-export.js +9 -9
  60. package/dist/bin/import-history.js +11 -11
  61. package/dist/bin/install-launchd.js +3 -1
  62. package/dist/bin/install.js +105 -104
  63. package/dist/bin/intercom-check.js +4 -4
  64. package/dist/bin/mcp-sessions.js +2 -2
  65. package/dist/bin/orchestration-metrics.js +6 -6
  66. package/dist/bin/postgres-agentic-reflection-backfill.js +4 -4
  67. package/dist/bin/postgres-agentic-semantic-backfill.js +3 -3
  68. package/dist/bin/pre-publish.js +1 -1
  69. package/dist/bin/reconcile-backlog.js +2 -2
  70. package/dist/bin/registry-proxy.js +1 -1
  71. package/dist/bin/scan-tasks.js +20 -19
  72. package/dist/bin/setup.js +3 -3
  73. package/dist/bin/shard-migrate.js +7 -7
  74. package/dist/bin/stack-update.js +5 -5
  75. package/dist/bin/vps-health-gate.js +1 -1
  76. package/dist/{boot-generation-BL2ISK4U.js → boot-generation-2IIJMJ7E.js} +5 -5
  77. package/dist/{boot-review-sections-DBMQJT5N.js → boot-review-sections-3DJFA42B.js} +19 -18
  78. package/dist/{branch-hygiene-TZWK6QCF.js → branch-hygiene-L3RV6UWM.js} +1 -1
  79. package/dist/{branding-DVXBGVDH.js → branding-TZIVBXQ5.js} +2 -2
  80. package/dist/{capability-cards-DN5UIKVN.js → capability-cards-FIEIK5PH.js} +4 -4
  81. package/dist/{capacity-monitor-ZG5GGFR2.js → capacity-monitor-7RIEIQBE.js} +21 -20
  82. package/dist/{catchup-brief-D6HH6DWS.js → catchup-brief-ZYYRDIKY.js} +23 -22
  83. package/dist/{chunk-P5HIWY2E.js → chunk-2JFGW62N.js} +1 -1
  84. package/dist/{chunk-USSB56WK.js → chunk-2T6WDJV3.js} +1 -1
  85. package/dist/{chunk-EUS4QUKP.js → chunk-2UWYIZEN.js} +1 -1
  86. package/dist/{chunk-4ZCD2UWW.js → chunk-3EUIJF5U.js} +3 -3
  87. package/dist/{chunk-CWXVH7WV.js → chunk-3NVTC4RA.js} +1 -1
  88. package/dist/{chunk-KGWRTRKC.js → chunk-42GV6K3X.js} +1 -1
  89. package/dist/chunk-4EI5AHHR.js +37 -0
  90. package/dist/{chunk-HV4KESRY.js → chunk-4I2BWW2Z.js} +1 -1
  91. package/dist/{chunk-YTCFACP4.js → chunk-4KNPF6RI.js} +276 -169
  92. package/dist/{chunk-H6BV5TKD.js → chunk-4XIHTE2R.js} +6 -6
  93. package/dist/{sweep-budget-WB2FKPYN.js → chunk-4YXTASUU.js} +13 -3
  94. package/dist/{chunk-2KZNGDSW.js → chunk-54XBWX2U.js} +1 -1
  95. package/dist/{chunk-FPFPLPUY.js → chunk-5BQMRB3E.js} +5 -5
  96. package/dist/{chunk-K7KFGDWF.js → chunk-5IGNNFST.js} +1 -1
  97. package/dist/{chunk-QDGZJ653.js → chunk-5SXVPXTN.js} +4 -4
  98. package/dist/{chunk-RHWZUUS4.js → chunk-62F3CDXB.js} +5 -5
  99. package/dist/{chunk-XHK3FS3W.js → chunk-6777GKUZ.js} +1 -1
  100. package/dist/{chunk-EQHQF5IM.js → chunk-6L6SXVTP.js} +32 -16
  101. package/dist/{chunk-3SW4OEHB.js → chunk-6NUCIIDR.js} +1 -1
  102. package/dist/{chunk-RAXVPNMR.js → chunk-7IGFMHNK.js} +1 -1
  103. package/dist/{chunk-F5O7V7UK.js → chunk-A7UEJSDR.js} +1 -1
  104. package/dist/{chunk-MOPUCPXK.js → chunk-APRVAUOR.js} +1 -0
  105. package/dist/{chunk-2WAVZ5UJ.js → chunk-AQ2TNSJ3.js} +1 -1
  106. package/dist/{chunk-WMESXBJM.js → chunk-BEDUCD7I.js} +127 -30
  107. package/dist/{chunk-7V4JADD6.js → chunk-BPQBKR2V.js} +3 -3
  108. package/dist/{chunk-Z6RSN7KS.js → chunk-BUP7NUPL.js} +30 -8
  109. package/dist/{chunk-TLT7NZCW.js → chunk-BW74OUFZ.js} +3 -3
  110. package/dist/{chunk-VPZHJCKW.js → chunk-CHFWJS7F.js} +2 -2
  111. package/dist/{chunk-UEA3LXOB.js → chunk-CITV2SCP.js} +1 -1
  112. package/dist/{chunk-VSRPS3J7.js → chunk-CNLY3TLP.js} +13 -13
  113. package/dist/{chunk-L2R3LN2P.js → chunk-DF2VTPZE.js} +1 -1
  114. package/dist/{chunk-PPCDBE6Z.js → chunk-DKJFW26S.js} +1 -1
  115. package/dist/{chunk-SQKXKV2Y.js → chunk-DROR4FYJ.js} +2 -2
  116. package/dist/{chunk-G5T6KDG4.js → chunk-DWECQ5VL.js} +1 -1
  117. package/dist/{chunk-I26FWCSP.js → chunk-EA47YVXG.js} +183 -2
  118. package/dist/{chunk-N7QJKQMX.js → chunk-EBZAEAY3.js} +11 -11
  119. package/dist/{chunk-KW2SD2FL.js → chunk-EQY2SN2P.js} +2 -2
  120. package/dist/{chunk-VRAQTFD6.js → chunk-EUUYJO3E.js} +1 -1
  121. package/dist/{chunk-LU2FALL6.js → chunk-FM5QLDG6.js} +28 -4
  122. package/dist/chunk-FQOLG74E.js +144 -0
  123. package/dist/chunk-FUQ2OSDV.js +129 -0
  124. package/dist/{chunk-4VSV5P4D.js → chunk-FWR3BLNB.js} +13 -5
  125. package/dist/{chunk-QOO5RW3K.js → chunk-GMXNBQC3.js} +9 -3
  126. package/dist/{chunk-AJYCFKJR.js → chunk-GWVOVGOB.js} +1 -1
  127. package/dist/{chunk-WZHZCDDO.js → chunk-GXPJELD7.js} +21 -0
  128. package/dist/{chunk-UUEKJDK6.js → chunk-HHG4YUJ5.js} +2 -2
  129. package/dist/{chunk-QRYVCDWS.js → chunk-HSUP2KKZ.js} +2 -2
  130. package/dist/{chunk-H7I47RS5.js → chunk-IBTKZEK4.js} +115 -3
  131. package/dist/{chunk-GG5NDQNN.js → chunk-IGSX4CFJ.js} +14 -20
  132. package/dist/{chunk-PQIDGXSG.js → chunk-IHIT5RCW.js} +2 -2
  133. package/dist/{chunk-KQ4Z2G24.js → chunk-JKOEOHOD.js} +32 -1
  134. package/dist/{chunk-GDIJE6D7.js → chunk-JPP2NKNI.js} +1 -1
  135. package/dist/{chunk-UP75Z5X7.js → chunk-JZMFWFNF.js} +154 -73
  136. package/dist/{chunk-F27XXN6C.js → chunk-KOFH2Z3S.js} +1 -1
  137. package/dist/{chunk-CNVBKDEY.js → chunk-L35RC5GC.js} +699 -383
  138. package/dist/{chunk-L4A5DL6Z.js → chunk-L4PWTC3Q.js} +3 -3
  139. package/dist/{chunk-KADUJ7PE.js → chunk-L5L3WWNM.js} +59 -20
  140. package/dist/{chunk-7CTRGNLW.js → chunk-LAGMVQUT.js} +2 -2
  141. package/dist/{chunk-UNXQBELK.js → chunk-LLJU2CZQ.js} +1 -1
  142. package/dist/chunk-LUQ57SRM.js +127 -0
  143. package/dist/{chunk-EV46QTD3.js → chunk-LWEQXRYE.js} +1 -1
  144. package/dist/{chunk-JLZ4RYSD.js → chunk-MBMOYDUD.js} +2 -2
  145. package/dist/{chunk-X33NYQYJ.js → chunk-MJHXOVM2.js} +2 -2
  146. package/dist/{chunk-4J4PMPXZ.js → chunk-MKF7VY7H.js} +1 -1
  147. package/dist/{chunk-MR6LHP4F.js → chunk-N3OZA3HT.js} +1 -1
  148. package/dist/{chunk-BUCXNV32.js → chunk-NGRY2UKC.js} +1 -1
  149. package/dist/{chunk-O5V57XYE.js → chunk-NSPHWA4W.js} +1 -1
  150. package/dist/{chunk-5ERDIOV3.js → chunk-NVCFWR5I.js} +2 -2
  151. package/dist/{chunk-6WQ3NNCE.js → chunk-NYVO4O24.js} +3 -3
  152. package/dist/{chunk-PDWS3E22.js → chunk-OBADBSW4.js} +6 -6
  153. package/dist/{chunk-NX5INHHG.js → chunk-ODATAUFD.js} +1 -1
  154. package/dist/{chunk-G4RGKBCA.js → chunk-OIEWB4JN.js} +13 -3
  155. package/dist/{chunk-OZEBAGKR.js → chunk-ONZZF5EQ.js} +31 -13
  156. package/dist/chunk-PDTJHPN3.js +285 -0
  157. package/dist/{chunk-6XWTQUO4.js → chunk-PHBE5QNB.js} +19 -8
  158. package/dist/chunk-PLFLQLF4.js +76 -0
  159. package/dist/{chunk-6CH3TPHR.js → chunk-PT2JRHTH.js} +4 -4
  160. package/dist/{chunk-JMYHW3AL.js → chunk-PTVLXA3D.js} +2 -2
  161. package/dist/chunk-PWRC5XZO.js +161 -0
  162. package/dist/{chunk-ASAFVDVR.js → chunk-Q3CZKCCC.js} +1 -1
  163. package/dist/{chunk-C5QAPURN.js → chunk-Q6LDI5JN.js} +1 -1
  164. package/dist/{chunk-5TY4FPH6.js → chunk-QCP3KEPZ.js} +1 -1
  165. package/dist/{chunk-JPUZPAAF.js → chunk-REIDGEAX.js} +3 -3
  166. package/dist/{chunk-YCANDMI2.js → chunk-RGJWTSXB.js} +1 -1
  167. package/dist/{chunk-CE7F6RHG.js → chunk-RT6HMUJF.js} +11 -11
  168. package/dist/{chunk-HJ447YER.js → chunk-S3FIQCSM.js} +14 -6
  169. package/dist/{chunk-MKYFAKDW.js → chunk-SHMDFBG7.js} +4 -4
  170. package/dist/chunk-SNJLKMCY.js +50 -0
  171. package/dist/{chunk-V3EEVY4L.js → chunk-ST4LSFXH.js} +1 -1
  172. package/dist/{chunk-PWUFMX75.js → chunk-T4DCS5J5.js} +11 -5
  173. package/dist/{chunk-R2NN3JKH.js → chunk-TKUIHTQF.js} +5 -5
  174. package/dist/{chunk-JGIPOUIK.js → chunk-TN4M6SRF.js} +3 -3
  175. package/dist/{chunk-OTF44GXL.js → chunk-TSP6GPAK.js} +2 -2
  176. package/dist/{chunk-XZXBB3TN.js → chunk-UE6JIJOO.js} +2 -2
  177. package/dist/{chunk-NN2B2QKU.js → chunk-UVMYLXOD.js} +1 -1
  178. package/dist/{chunk-S7QUM2UK.js → chunk-UVY7DMQN.js} +54 -2
  179. package/dist/{chunk-QYZJHTNE.js → chunk-VCOLV4CR.js} +9 -9
  180. package/dist/{chunk-KWZMQACA.js → chunk-VL2ARD7K.js} +3 -3
  181. package/dist/{chunk-2ZYO73KO.js → chunk-VXBJHPLN.js} +1 -1
  182. package/dist/{chunk-QQ4E2RYW.js → chunk-WIXWS55C.js} +10 -10
  183. package/dist/{chunk-IBYL4DHM.js → chunk-X4Z5DPOC.js} +22 -2
  184. package/dist/{chunk-UUQBZPJJ.js → chunk-X64GUUL4.js} +1 -1
  185. package/dist/{chunk-OLMQ4UOF.js → chunk-XIUDWV5X.js} +209 -20
  186. package/dist/{chunk-MZM6EJCU.js → chunk-XL24STS2.js} +4 -4
  187. package/dist/{chunk-JTBIS4R5.js → chunk-XO4V4HFL.js} +1 -1
  188. package/dist/{chunk-4CMVFVFC.js → chunk-XOC3Y4TF.js} +4 -4
  189. package/dist/{chunk-RACAOE2Z.js → chunk-XOMKTUZI.js} +9 -9
  190. package/dist/{chunk-TTCUG2CF.js → chunk-YEHLGSMN.js} +2 -2
  191. package/dist/{chunk-HA5R6USD.js → chunk-YHESKZNJ.js} +1 -1
  192. package/dist/{chunk-AOHXREB7.js → chunk-ZA7WHPN6.js} +189 -70
  193. package/dist/{chunk-GJ26DULE.js → chunk-ZJSP736C.js} +2 -2
  194. package/dist/{chunk-GBTTBXAF.js → chunk-ZOBWQPIU.js} +6 -6
  195. package/dist/{chunk-NXUSDL37.js → chunk-ZVHKVVKG.js} +1 -1
  196. package/dist/{chunk-X2Q5NLUL.js → chunk-ZVIZQSPE.js} +1 -1
  197. package/dist/{chunk-HAF2DJYV.js → chunk-ZW2XGLWY.js} +3 -3
  198. package/dist/{cleanup-graph-garbage-XWUFAMFO.js → cleanup-graph-garbage-JAHNAACN.js} +8 -8
  199. package/dist/cloud-sync-shutdown-3CXZBBZJ.js +44 -0
  200. package/dist/cloud-sync-state-DJRZORFI.js +17 -0
  201. package/dist/{co-activation-ZCHPLLP6.js → co-activation-PGWGMP4X.js} +4 -4
  202. package/dist/{co-occurrence-KG3LKALN.js → co-occurrence-X7FI7K6K.js} +6 -6
  203. package/dist/{code-context-index-WSOJQ72R.js → code-context-index-5PY2MI55.js} +8 -4
  204. package/dist/{conversation-entity-extractor-D3EFTLT4.js → conversation-entity-extractor-FPAMTL3C.js} +2 -2
  205. package/dist/{conversation-wiki-populator-WQN3IUU6.js → conversation-wiki-populator-U2FKQEWH.js} +1 -1
  206. package/dist/{crdt-sync-4PFGPZXV.js → crdt-sync-ZIRKX6ZT.js} +1 -1
  207. package/dist/{crm-webhook-II7Z45Q6.js → crm-webhook-WJ2TNNNX.js} +2 -2
  208. package/dist/{cto-delegation-gate-JWWOJPNC.js → cto-delegation-gate-YYRGGBU2.js} +19 -18
  209. package/dist/{daemon-auth-3FEAHFWC.js → daemon-auth-GNT27BDR.js} +2 -2
  210. package/dist/daemon-health-log-OBHLBKVW.js +15 -0
  211. package/dist/{daemon-orchestration-FX4XZDR5.js → daemon-orchestration-LSJELXQY.js} +24 -23
  212. package/dist/{daemon-ready-4JTSFKAY.js → daemon-ready-MFLBXJ5J.js} +1 -1
  213. package/dist/{daemon-ready-signal-LPAZWQOV.js → daemon-ready-signal-TVCPSG7J.js} +3 -1
  214. package/dist/{daemon-restart-circuit-breaker-PEGEIP6H.js → daemon-restart-circuit-breaker-5V6B6NLS.js} +1 -1
  215. package/dist/{daemon-restart-report-F3P5AQS4.js → daemon-restart-report-QDRGKLL6.js} +1 -1
  216. package/dist/{db-restore-events-MQ2DBGEQ.js → db-restore-events-QYGUSP7Q.js} +1 -1
  217. package/dist/db-verify-stamp-YTRPEKZ5.js +15 -0
  218. package/dist/{doc-graph-extractor-F6ODFIID.js → doc-graph-extractor-M72TUSHE.js} +6 -6
  219. package/dist/{documents-23WX2FPQ.js → documents-V2TR7SKO.js} +10 -10
  220. package/dist/{dreaming-NWD22UQ5.js → dreaming-K2AUXA6A.js} +20 -19
  221. package/dist/{exe-drift-CW72FBGE.js → exe-drift-APFIZLEK.js} +5 -5
  222. package/dist/{exe-export-AUJ7CV7G.js → exe-export-IYSJCRIU.js} +9 -9
  223. package/dist/{exe-import-JX4I52VE.js → exe-import-EGXUCUPY.js} +9 -9
  224. package/dist/{exe-key-2N6LY2BU.js → exe-key-ZWPFMA6Z.js} +91 -89
  225. package/dist/{exe-org-X4CSNCKS.js → exe-org-HP552ZGP.js} +2 -2
  226. package/dist/{exe-snapshot-XZ7FVCYZ.js → exe-snapshot-GCKN6LOM.js} +23 -22
  227. package/dist/fast-db-init-NBMBQ7MC.js +9 -0
  228. package/dist/{founder-context-7L3CFPYN.js → founder-context-A2BARML6.js} +3 -3
  229. package/dist/gateway/index.js +13 -13
  230. package/dist/{git-staleness-CI2R4QOJ.js → git-staleness-OEGYSCTM.js} +4 -4
  231. package/dist/{global-procedures-XQX3LUH6.js → global-procedures-QJ2XVVLH.js} +6 -6
  232. package/dist/{graph-auto-extract-OURWMGBS.js → graph-auto-extract-NBVCQVWC.js} +6 -6
  233. package/dist/{graph-rag-JZZAB7PC.js → graph-rag-WAK2BRJH.js} +2 -2
  234. package/dist/{hook-integrity-XY47IM7G.js → hook-integrity-FYU2AFKC.js} +1 -1
  235. package/dist/{hook-prefetch-PHRRKY4C.js → hook-prefetch-EM7B2UR3.js} +20 -19
  236. package/dist/hooks/bug-report-worker.js +24 -23
  237. package/dist/hooks/codex-stop-task-finalizer.js +43 -25
  238. package/dist/hooks/commit-complete.js +23 -22
  239. package/dist/hooks/error-recall.js +13 -13
  240. package/dist/hooks/exe-heartbeat-hook.js +6 -6
  241. package/dist/hooks/ingest-worker.js +7 -7
  242. package/dist/hooks/ingest.js +22 -22
  243. package/dist/hooks/instructions-loaded.js +7 -7
  244. package/dist/hooks/manifest.json +20 -20
  245. package/dist/hooks/notification.js +7 -7
  246. package/dist/hooks/post-compact.js +22 -21
  247. package/dist/hooks/post-tool-combined.js +24 -11
  248. package/dist/hooks/pre-compact.js +23 -22
  249. package/dist/hooks/pre-tool-use.js +28 -27
  250. package/dist/hooks/prompt-submit.js +54 -41
  251. package/dist/hooks/session-end.js +28 -27
  252. package/dist/hooks/session-start.js +17 -17
  253. package/dist/hooks/stop.js +29 -28
  254. package/dist/hooks/subagent-stop.js +52 -21
  255. package/dist/hooks/summary-worker.js +28 -27
  256. package/dist/index.js +31 -30
  257. package/dist/{installer-L7EVH5U5.js → installer-CFMBHHKM.js} +8 -8
  258. package/dist/{installer-JND3RJ6Q.js → installer-GGCNURPW.js} +8 -8
  259. package/dist/{installer-G3JAO3NT.js → installer-H2ZKIXNP.js} +8 -8
  260. package/dist/{intercom-queue-ZFEQALR3.js → intercom-queue-WHU3NA4Q.js} +19 -18
  261. package/dist/{key-backup-status-LOSMVATJ.js → key-backup-status-WECD4KLS.js} +1 -1
  262. package/dist/lib/agent-config.js +2 -2
  263. package/dist/lib/cloud-sync.js +18 -16
  264. package/dist/lib/config.js +1 -1
  265. package/dist/lib/consolidation.js +9 -9
  266. package/dist/lib/database.js +14 -6
  267. package/dist/{db-backup-W2QFSYQC.js → lib/db-backup.js} +16 -4
  268. package/dist/lib/db-checkpoint-worker.js +57 -0
  269. package/dist/lib/db-daemon-client.js +4 -4
  270. package/dist/lib/db-write-worker-client.js +17 -0
  271. package/dist/lib/db-write-worker.js +216 -0
  272. package/dist/lib/db.js +14 -6
  273. package/dist/lib/device-registry.js +2 -2
  274. package/dist/lib/embed-worker.js +1 -1
  275. package/dist/lib/embedder.js +4 -4
  276. package/dist/lib/employee-templates.js +7 -7
  277. package/dist/lib/employees.js +4 -4
  278. package/dist/lib/exe-daemon-client.js +3 -3
  279. package/dist/lib/exe-daemon.js +1168 -398
  280. package/dist/lib/hybrid-search.js +7 -7
  281. package/dist/lib/identity.js +4 -4
  282. package/dist/lib/license.js +3 -3
  283. package/dist/lib/messaging.js +20 -19
  284. package/dist/lib/registry-proxy.js +1 -1
  285. package/dist/lib/reminders.js +5 -5
  286. package/dist/lib/schedules.js +7 -7
  287. package/dist/lib/session-registry.js +6 -6
  288. package/dist/lib/skill-learning.js +8 -8
  289. package/dist/lib/status-brief.js +3 -3
  290. package/dist/lib/store.js +6 -6
  291. package/dist/lib/task-router.js +5 -5
  292. package/dist/lib/tasks.js +21 -20
  293. package/dist/lib/tmux-routing.js +19 -18
  294. package/dist/lib/token-spend.js +5 -5
  295. package/dist/{license-gate-QTRQHV4F.js → license-gate-FU5VUYE7.js} +4 -4
  296. package/dist/{license-sync-N3UJFWAW.js → license-sync-BL63T3PA.js} +3 -3
  297. package/dist/mcp/register-tools.js +88 -86
  298. package/dist/mcp/server.js +90 -88
  299. package/dist/mcp/tools/complete-reminder.js +6 -6
  300. package/dist/mcp/tools/create-reminder.js +6 -6
  301. package/dist/mcp/tools/create-task.js +23 -22
  302. package/dist/mcp/tools/deactivate-behavior.js +9 -9
  303. package/dist/mcp/tools/list-reminders.js +6 -6
  304. package/dist/mcp/tools/list-tasks.js +23 -22
  305. package/dist/mcp/tools/send-message.js +22 -21
  306. package/dist/mcp/tools/update-task.js +22 -21
  307. package/dist/{mcp-http-config-BDL36JZ3.js → mcp-http-config-6X6AP2CK.js} +9 -7
  308. package/dist/{mcp-port-config-6HYY6J7K.js → mcp-port-config-PA3W3BJK.js} +7 -1
  309. package/dist/{mcp-session-identity-T7H2EKFQ.js → mcp-session-identity-5OVODESZ.js} +19 -18
  310. package/dist/mcp-session-persist-PS7BIG44.js +62 -0
  311. package/dist/mcp-stale-flag-ZM23XRSJ.js +11 -0
  312. package/dist/{memory-cards-ZRDW7QBX.js → memory-cards-H3BGNJXL.js} +6 -6
  313. package/dist/{memory-graph-extractor-QLXDMHRS.js → memory-graph-extractor-AQRAE5TJ.js} +7 -7
  314. package/dist/{memory-poisoning-defense-HJTXYCWH.js → memory-poisoning-defense-E2V5XSTO.js} +4 -4
  315. package/dist/{memory-pressure-watchdog-HN5X7AVN.js → memory-pressure-watchdog-BWSUJVL6.js} +20 -19
  316. package/dist/{memory-queue-2UOOF27L.js → memory-queue-4IS42XOE.js} +2 -2
  317. package/dist/{memory-queue-client-O5U6F6XP.js → memory-queue-client-R7PJ7IOE.js} +5 -5
  318. package/dist/{memory-reflection-WVNFBJAA.js → memory-reflection-PAA55BXW.js} +4 -4
  319. package/dist/{monitor-grants-E3ELDEWD.js → monitor-grants-7XHXOANT.js} +2 -2
  320. package/dist/{notification-ledger-SZEPGJQ7.js → notification-ledger-CX6OIZ7A.js} +20 -19
  321. package/dist/{notifications-4UT53CDG.js → notifications-R4HDUWL2.js} +19 -18
  322. package/dist/{orchestration-events-WV4NWKZH.js → orchestration-events-W6LW4AD2.js} +5 -5
  323. package/dist/{orchestration-phase-AWBXPO52.js → orchestration-phase-JX4TWS6C.js} +2 -2
  324. package/dist/{orchestrator-UAC3RW2T.js → orchestrator-3W4ZKNEX.js} +21 -20
  325. package/dist/{pipeline-router-LM53NMWJ.js → pipeline-router-E4EZVRQQ.js} +5 -5
  326. package/dist/{plan-limits-2FEY2GOS.js → plan-limits-YSDBXZYI.js} +7 -7
  327. package/dist/{platform-procedures-X5DFJFV7.js → platform-procedures-VDW2R65H.js} +1 -1
  328. package/dist/{project-boot-4NUH5FRU.js → project-boot-MRITBQQP.js} +1 -1
  329. package/dist/{projection-worker-FZ7YSN3G.js → projection-worker-QQW2RVTN.js} +4 -4
  330. package/dist/{prospective-memory-6D2ASWM3.js → prospective-memory-NIZWIZM4.js} +4 -4
  331. package/dist/{push-notifications-U6FIBQRW.js → push-notifications-A46ZXS2Q.js} +2 -2
  332. package/dist/{reranker-GYYRPANK.js → reranker-3C6RUROG.js} +2 -2
  333. package/dist/{retrieval-health-4Z242P3B.js → retrieval-health-HALV3M2U.js} +1 -1
  334. package/dist/review-polling-MOJAI3BZ.js +55 -0
  335. package/dist/runtime/index.js +27 -26
  336. package/dist/{session-events-O3BV56ZX.js → session-events-NTCFPCJV.js} +20 -19
  337. package/dist/{session-kill-telemetry-AELE4JDK.js → session-kill-telemetry-NFKJOQKH.js} +20 -19
  338. package/dist/{session-scope-5EAPUT45.js → session-scope-BINQT6W4.js} +19 -18
  339. package/dist/{setup-wizard-NB6R4QVS.js → setup-wizard-PUA24CMQ.js} +3 -3
  340. package/dist/{shard-manager-35PWFR3B.js → shard-manager-QFUFI6EA.js} +2 -2
  341. package/dist/{skill-refinement-DVSYXBBP.js → skill-refinement-ABFBHUVE.js} +5 -5
  342. package/dist/{stack-update-ATCJFOEK.js → stack-update-CLUGX5NZ.js} +4 -4
  343. package/dist/{steward-gate-3GQ5XKMJ.js → steward-gate-EMKM4LRS.js} +5 -5
  344. package/dist/{support-inbox-4L62P4EP.js → support-inbox-VCJOV6II.js} +4 -4
  345. package/dist/sweep-budget-74FIUNX3.js +17 -0
  346. package/dist/{task-enforcement-IPIZX2MM.js → task-enforcement-FHMDUP7M.js} +20 -19
  347. package/dist/{task-scope-FOIW25HR.js → task-scope-7ZV6UP7R.js} +19 -18
  348. package/dist/{tasks-crud-HBDKE6C5.js → tasks-crud-67ZINIOW.js} +21 -18
  349. package/dist/{tasks-notify-G2U2U2YA.js → tasks-notify-KWCVQCUS.js} +20 -19
  350. package/dist/{tasks-review-27SFX5XN.js → tasks-review-KHGYJ2Y3.js} +19 -18
  351. package/dist/{telemetry-upload-ZOXHRWR5.js → telemetry-upload-44DD2QNW.js} +9 -9
  352. package/dist/{token-budget-5Y4YPDO3.js → token-budget-HM2EUB4W.js} +5 -5
  353. package/dist/{tool-capability-index-VYF5GNJ2.js → tool-capability-index-MUJXMJZQ.js} +1 -1
  354. package/dist/{tool-telemetry-KBXSBDTK.js → tool-telemetry-S6LJIL7X.js} +1 -1
  355. package/dist/tui/App.js +33 -32
  356. package/dist/{tui-data-NLFMBIQI.js → tui-data-75HBG2OG.js} +19 -18
  357. package/dist/{update-support-UVUSZG7R.js → update-support-FXOSSAQ2.js} +16 -16
  358. package/dist/{worker-gate-3KUBAU32.js → worker-gate-F7M24XHO.js} +2 -2
  359. package/dist/{workflow-engine-YITHXZR5.js → workflow-engine-LVNVV2TH.js} +2 -2
  360. package/dist/{worktree-LL62PLQB.js → worktree-IAKAVD7N.js} +8 -6
  361. package/dist/{worktree-sweep-WTK3MTKH.js → worktree-sweep-B4MKSCKY.js} +7 -7
  362. package/package.json +3 -2
  363. package/release-notes.json +63 -23
  364. package/dist/chunk-GIBYNT6W.js +0 -23
  365. package/dist/fast-db-init-4CWHSOOR.js +0 -7
  366. package/dist/review-polling-HXAFJZDA.js +0 -138
  367. package/dist/{chunk-MGGOSFCR.js → chunk-2CCMWJXP.js} +0 -0
  368. package/dist/{chunk-A4DVMPYB.js → chunk-7UMCQQWS.js} +3 -3
  369. /package/dist/{chunk-H73TUI4Y.js → chunk-BBMTVAE3.js} +0 -0
  370. /package/dist/{chunk-JRM4TAGS.js → chunk-DN6HP26X.js} +0 -0
  371. /package/dist/{chunk-KP3U5QGJ.js → chunk-EKWFUXLY.js} +0 -0
  372. /package/dist/{chunk-QIFYLIUF.js → chunk-HP7TB3P2.js} +0 -0
  373. /package/dist/{chunk-NBZL5CGA.js → chunk-MRFM6A4G.js} +0 -0
  374. /package/dist/{core-memory-GAC6EWOQ.js → core-memory-TP43DUIL.js} +0 -0
  375. /package/dist/{entity-boost-NT6UO2Z3.js → entity-boost-2Q4B3H3T.js} +0 -0
  376. /package/dist/{message-queue-client-4EOQRUXW.js → message-queue-client-KJGHJAPD.js} +0 -0
  377. /package/dist/{oauth-server-67YBDP32.js → oauth-server-EV2YHI5J.js} +0 -0
  378. /package/dist/{webhook-pipe-LEXMUQ5B.js → webhook-pipe-CQXXTB2G.js} +0 -0
  379. /package/dist/{wiki-acl-74BLWG6J.js → wiki-acl-3MD443NV.js} +0 -0
  380. /package/dist/{wiki-client-EAN7F5LV.js → wiki-client-TVE6MPKC.js} +0 -0
package/dist/bin/cli.js CHANGED
@@ -108,7 +108,7 @@ if (args.includes("--global")) {
108
108
  );
109
109
  await runClaudeInstall();
110
110
  } else if (args.includes("--commands-only")) {
111
- const { copySlashCommands, resolvePackageRoot } = await import("../installer-L7EVH5U5.js");
111
+ const { copySlashCommands, resolvePackageRoot } = await import("../installer-CFMBHHKM.js");
112
112
  try {
113
113
  const packageRoot = resolvePackageRoot();
114
114
  const result = await copySlashCommands(packageRoot);
@@ -171,12 +171,12 @@ if (args.includes("--global")) {
171
171
  break;
172
172
  }
173
173
  } else if (args[0] === "org") {
174
- const { main: runOrg } = await import("../exe-org-X4CSNCKS.js");
174
+ const { main: runOrg } = await import("../exe-org-HP552ZGP.js");
175
175
  await runOrg(args.slice(1));
176
176
  } else if (args[0] === "code-context") {
177
177
  await runCodeContext(args.slice(1));
178
178
  } else if (args[0] === "jobs") {
179
- const { cancelBackgroundJob, formatJobs, listBackgroundJobs } = await import("../background-jobs-EXR5RVGG.js");
179
+ const { cancelBackgroundJob, formatJobs, listBackgroundJobs } = await import("../background-jobs-QK7NLJ4P.js");
180
180
  const sub = args[1] ?? "status";
181
181
  if (sub === "status" || sub === "list") {
182
182
  console.log(formatJobs(listBackgroundJobs()));
@@ -197,7 +197,7 @@ if (args.includes("--global")) {
197
197
  process.exit(1);
198
198
  }
199
199
  } else if (args[0] === "key") {
200
- const { main: runKey } = await import("../exe-key-2N6LY2BU.js");
200
+ const { main: runKey } = await import("../exe-key-ZWPFMA6Z.js");
201
201
  await runKey(args.slice(1));
202
202
  } else if (args[0] === "grant") {
203
203
  const { main: runGrant } = await import("./exe-grant.js");
@@ -255,7 +255,7 @@ if (args.includes("--global")) {
255
255
  process.exit(1);
256
256
  }
257
257
  } else if (args[0] === "backfill-metadata") {
258
- const { backfillMetadata } = await import("../backfill-metadata-ZSMZC45J.js");
258
+ const { backfillMetadata } = await import("../backfill-metadata-7WFF4Q45.js");
259
259
  let batchSize = 50;
260
260
  let limit = 0;
261
261
  let dryRun = false;
@@ -286,10 +286,10 @@ if (args.includes("--global")) {
286
286
  process.exit(1);
287
287
  }
288
288
  } else if (args[0] === "export") {
289
- const { runExeExport } = await import("../exe-export-AUJ7CV7G.js");
289
+ const { runExeExport } = await import("../exe-export-IYSJCRIU.js");
290
290
  await runExeExport(args.slice(1));
291
291
  } else if (args[0] === "import") {
292
- const { runExeImport } = await import("../exe-import-JX4I52VE.js");
292
+ const { runExeImport } = await import("../exe-import-EGXUCUPY.js");
293
293
  await runExeImport(args.slice(1));
294
294
  } else if (args[0] === "import-history") {
295
295
  const { runImportHistory } = await import("./import-history.js");
@@ -314,7 +314,7 @@ if (args.includes("--global")) {
314
314
  const { initStore } = await import("../lib/store.js");
315
315
  await initStore();
316
316
  const { sendMessage } = await import("../lib/messaging.js");
317
- const { getActiveAgent } = await import("../active-agent-PVGE57FY.js");
317
+ const { getActiveAgent } = await import("../active-agent-WXLJG2WA.js");
318
318
  const { agentId } = getActiveAgent();
319
319
  const result = await sendMessage({
320
320
  fromAgent: agentId,
@@ -338,7 +338,7 @@ ID: ${result.id}`);
338
338
  process.exit(code);
339
339
  } else if (args[0] === "doctor") {
340
340
  if (args.includes("--drift")) {
341
- const { runDrift } = await import("../exe-drift-CW72FBGE.js");
341
+ const { runDrift } = await import("../exe-drift-APFIZLEK.js");
342
342
  await runDrift(args.slice(1));
343
343
  } else {
344
344
  const { runCcDoctor } = await import("./cc-doctor.js");
@@ -348,7 +348,7 @@ ID: ${result.id}`);
348
348
  const icon = r.pass ? "\x1B[32m\u2713\x1B[0m" : "\x1B[31m\u2717\x1B[0m";
349
349
  console.log(` ${icon} ${r.name}: ${r.detail}`);
350
350
  }
351
- const { readBreakerAlert } = await import("../daemon-restart-circuit-breaker-PEGEIP6H.js");
351
+ const { readBreakerAlert } = await import("../daemon-restart-circuit-breaker-5V6B6NLS.js");
352
352
  const alert = readBreakerAlert();
353
353
  let breakerFailed = 0;
354
354
  if (alert) {
@@ -376,7 +376,7 @@ ID: ${result.id}`);
376
376
  restartBreakerStatePath,
377
377
  restartBreakerAlertPath,
378
378
  daemonLastExitPath
379
- } = await import("../daemon-restart-circuit-breaker-PEGEIP6H.js");
379
+ } = await import("../daemon-restart-circuit-breaker-5V6B6NLS.js");
380
380
  const { existsSync: existsSync2, readFileSync: readFileSync2 } = await import("fs");
381
381
  if (sub === "reset-breaker") {
382
382
  resetRestartBreaker();
@@ -408,7 +408,7 @@ ${JSON.stringify(alert, null, 2)}
408
408
  }
409
409
  } else if (args[0] === "backup") {
410
410
  const sub = args[1];
411
- const { listBackups, createBackup, restoreBackup } = await import("../db-backup-W2QFSYQC.js");
411
+ const { listBackups, createBackup, restoreBackup } = await import("../lib/db-backup.js");
412
412
  if (sub === "list" || !sub) {
413
413
  const backups = listBackups();
414
414
  if (backups.length === 0) {
@@ -458,7 +458,7 @@ ${JSON.stringify(alert, null, 2)}
458
458
  process.exit(1);
459
459
  }
460
460
  } else if (sub === "verify") {
461
- const { verifyBackup } = await import("../backup-verify-3Y2FHGZU.js");
461
+ const { verifyBackup } = await import("../backup-verify-EUMJVTMQ.js");
462
462
  let target;
463
463
  const pathIdx = args.indexOf("--path");
464
464
  if (pathIdx >= 0 && args[pathIdx + 1]) {
@@ -488,7 +488,7 @@ ${JSON.stringify(alert, null, 2)}
488
488
  process.exit(1);
489
489
  }
490
490
  } else if (args[0] === "setup" || args[0] === "-setup" || args[0] === "--setup") {
491
- const { runSetupWizard } = await import("../setup-wizard-NB6R4QVS.js");
491
+ const { runSetupWizard } = await import("../setup-wizard-PUA24CMQ.js");
492
492
  await runSetupWizard({
493
493
  skipModel: args.includes("--skip-model"),
494
494
  nonInteractive: args.includes("--non-interactive") || args.includes("-y") || args.includes("--yes"),
@@ -544,16 +544,16 @@ Post-deploy verification \u2014 8 runtime checks after stack-update.
544
544
  `);
545
545
  process.exit(report.failed > 0 ? 1 : 0);
546
546
  } else if (args[0] === "snapshot") {
547
- const { main: runSnapshot } = await import("../exe-snapshot-XZ7FVCYZ.js");
547
+ const { main: runSnapshot } = await import("../exe-snapshot-GCKN6LOM.js");
548
548
  await runSnapshot(args.slice(1));
549
549
  } else if (args[0] === "boot") {
550
- const { projectBoot, parseBootArgs } = await import("../project-boot-4NUH5FRU.js");
550
+ const { projectBoot, parseBootArgs } = await import("../project-boot-MRITBQQP.js");
551
551
  const bootOpts = parseBootArgs(args.slice(1));
552
552
  console.log(await projectBoot(bootOpts));
553
553
  } else if (args[0] === "brand") {
554
554
  const configIdx = args.indexOf("--config");
555
555
  if (configIdx === -1 || !args[configIdx + 1]) {
556
- const { loadBranding, BRANDING_PATH } = await import("../branding-DVXBGVDH.js");
556
+ const { loadBranding, BRANDING_PATH } = await import("../branding-TZIVBXQ5.js");
557
557
  const b = loadBranding();
558
558
  console.log(`
559
559
  Brand: ${b.name}`);
@@ -572,7 +572,7 @@ Post-deploy verification \u2014 8 runtime checks after stack-update.
572
572
  }
573
573
  try {
574
574
  const raw = JSON.parse(rf(configPath, "utf-8"));
575
- const { validateBranding, saveBranding } = await import("../branding-DVXBGVDH.js");
575
+ const { validateBranding, saveBranding } = await import("../branding-TZIVBXQ5.js");
576
576
  const result = validateBranding(raw);
577
577
  if (!result.valid) {
578
578
  console.error(`
@@ -661,7 +661,7 @@ cd into a project folder and run \x1B[1m${cooName}1\x1B[0m to boot your COO.
661
661
  }
662
662
  }
663
663
  async function runCodeContext(ccArgs) {
664
- const { buildCodeContextIndex, getCodeContextStats, searchCodeContext } = await import("../code-context-index-WSOJQ72R.js");
664
+ const { buildCodeContextIndex, getCodeContextStats, searchCodeContext } = await import("../code-context-index-5PY2MI55.js");
665
665
  const sub = ccArgs[0] ?? "status";
666
666
  const projectRoot = valueAfter(ccArgs, "--project-root") ?? process.cwd();
667
667
  if (sub === "init" || sub === "index") {
@@ -737,7 +737,7 @@ function numberAfter(args2, flag) {
737
737
  return Number.isFinite(parsed) ? parsed : void 0;
738
738
  }
739
739
  async function runClaudeInstall() {
740
- const { runInstaller } = await import("../installer-L7EVH5U5.js");
740
+ const { runInstaller } = await import("../installer-CFMBHHKM.js");
741
741
  try {
742
742
  await runInstaller();
743
743
  } catch (err) {
@@ -749,7 +749,7 @@ async function runClaudeInstall() {
749
749
  }
750
750
  }
751
751
  async function runOpenCodeInstall() {
752
- const { runOpenCodeInstaller } = await import("../installer-G3JAO3NT.js");
752
+ const { runOpenCodeInstaller } = await import("../installer-H2ZKIXNP.js");
753
753
  try {
754
754
  await runOpenCodeInstaller();
755
755
  } catch (err) {
@@ -761,7 +761,7 @@ async function runOpenCodeInstall() {
761
761
  }
762
762
  }
763
763
  async function runCodexInstall() {
764
- const { runCodexInstaller } = await import("../installer-JND3RJ6Q.js");
764
+ const { runCodexInstaller } = await import("../installer-GGCNURPW.js");
765
765
  try {
766
766
  await runCodexInstaller();
767
767
  } catch (err) {
@@ -773,7 +773,7 @@ async function runCodexInstall() {
773
773
  }
774
774
  }
775
775
  async function runClaudeCheck() {
776
- const { detectMcpNameCollisions } = await import("../installer-L7EVH5U5.js");
776
+ const { detectMcpNameCollisions } = await import("../installer-CFMBHHKM.js");
777
777
  const claudeDir = path.join(os.homedir(), ".claude");
778
778
  const settingsPath = path.join(claudeDir, "settings.json");
779
779
  const claudeJsonPath = path.join(os.homedir(), ".claude.json");
@@ -1279,48 +1279,62 @@ async function runCloudSync() {
1279
1279
  const { getMasterKey } = await import("../lib/keychain.js");
1280
1280
  const { initSyncCrypto } = await import("../lib/crypto.js");
1281
1281
  const { assertCloudSyncReachable, withTimeout } = await import("./exe-cloud.js");
1282
+ const { runCloudSyncShutdown } = await import("../cloud-sync-shutdown-3CXZBBZJ.js");
1283
+ let shuttingDown = false;
1284
+ const handleShutdown = (signal) => {
1285
+ if (shuttingDown) return;
1286
+ shuttingDown = true;
1287
+ void runCloudSyncShutdown(signal, { disposeStore }).finally(() => process.exit(143));
1288
+ };
1289
+ process.on("SIGTERM", handleShutdown);
1290
+ process.on("SIGINT", handleShutdown);
1282
1291
  try {
1283
- await assertCloudSyncReachable(config.cloud.endpoint);
1284
- } catch (err) {
1285
- console.error(`Cloud sync aborted: ${err instanceof Error ? err.message : String(err)}`);
1286
- process.exit(1);
1287
- }
1288
- await initStore();
1289
- const masterKey = await getMasterKey();
1290
- if (masterKey) {
1291
- initSyncCrypto(masterKey);
1292
- } else {
1293
- console.error("No encryption key found. Run \x1B[36mexe-os setup\x1B[0m first.");
1294
- await disposeStore();
1295
- process.exit(1);
1296
- }
1297
- console.log("Syncing with Exe Cloud now... (Normally this runs automatically in the background.)");
1298
- try {
1299
- const syncTimeoutMs = Number(process.env.EXE_CLOUD_SYNC_TIMEOUT_MS ?? 6e5);
1300
- const result = await withTimeout(cloudSync(config.cloud), syncTimeoutMs, "Cloud sync");
1301
- console.log("");
1302
- console.log(` Active memories: ${result.totalMemories} (\u2191 ${result.pushed} syncable rows pushed, \u2193 ${result.pulled} pulled)`);
1303
- console.log(` Behaviors: ${result.behaviors.pushed} total (\u2193 ${result.behaviors.pulled} pulled)`);
1304
- console.log(` Roster: ${result.roster.employees} employees, ${result.roster.identities} identities`);
1305
- console.log(` Tasks: ${result.tasks.pushed} total (\u2193 ${result.tasks.pulled} pulled)`);
1306
- console.log(` Conversations: ${result.conversations.pushed} total (\u2193 ${result.conversations.pulled} pulled)`);
1307
- console.log(` Documents: ${result.documents.pushed} total (\u2193 ${result.documents.pulled} pulled)`);
1308
- console.log(` GraphRAG: ${result.graphrag.pushed} entities`);
1309
- const elapsedDisplay = result.elapsedMs != null ? `${(result.elapsedMs / 1e3).toFixed(1)}s` : "n/a";
1310
- console.log(`
1311
- \x1B[32mSync complete.\x1B[0m (${elapsedDisplay})`);
1312
- } catch (err) {
1313
- const message = err instanceof Error ? err.message : String(err);
1314
- if (message.includes("Cloud sync is blocked because this device rotated")) {
1315
- console.error("\nCloud sync is blocked for safety.");
1316
- console.error("This device changed its memory encryption key, so Exe Cloud must be re-uploaded with the new key first.");
1317
- console.error("Run: exe-os cloud reupload");
1292
+ try {
1293
+ await assertCloudSyncReachable(config.cloud.endpoint);
1294
+ } catch (err) {
1295
+ console.error(`Cloud sync aborted: ${err instanceof Error ? err.message : String(err)}`);
1296
+ process.exit(1);
1297
+ }
1298
+ await initStore();
1299
+ const masterKey = await getMasterKey();
1300
+ if (masterKey) {
1301
+ initSyncCrypto(masterKey);
1318
1302
  } else {
1319
- console.error(`Sync failed: ${message}`);
1303
+ console.error("No encryption key found. Run \x1B[36mexe-os setup\x1B[0m first.");
1304
+ await disposeStore();
1305
+ process.exit(1);
1306
+ }
1307
+ console.log("Syncing with Exe Cloud now... (Normally this runs automatically in the background.)");
1308
+ try {
1309
+ const syncTimeoutMs = Number(process.env.EXE_CLOUD_SYNC_TIMEOUT_MS ?? 6e5);
1310
+ const result = await withTimeout(cloudSync(config.cloud), syncTimeoutMs, "Cloud sync");
1311
+ console.log("");
1312
+ console.log(` Active memories: ${result.totalMemories} (\u2191 ${result.pushed} syncable rows pushed, \u2193 ${result.pulled} pulled)`);
1313
+ console.log(` Behaviors: ${result.behaviors.pushed} total (\u2193 ${result.behaviors.pulled} pulled)`);
1314
+ console.log(` Roster: ${result.roster.employees} employees, ${result.roster.identities} identities`);
1315
+ console.log(` Tasks: ${result.tasks.pushed} total (\u2193 ${result.tasks.pulled} pulled)`);
1316
+ console.log(` Conversations: ${result.conversations.pushed} total (\u2193 ${result.conversations.pulled} pulled)`);
1317
+ console.log(` Documents: ${result.documents.pushed} total (\u2193 ${result.documents.pulled} pulled)`);
1318
+ console.log(` GraphRAG: ${result.graphrag.pushed} entities`);
1319
+ const elapsedDisplay = result.elapsedMs != null ? `${(result.elapsedMs / 1e3).toFixed(1)}s` : "n/a";
1320
+ console.log(`
1321
+ \x1B[32mSync complete.\x1B[0m (${elapsedDisplay})`);
1322
+ } catch (err) {
1323
+ const message = err instanceof Error ? err.message : String(err);
1324
+ if (message.includes("Cloud sync is blocked because this device rotated")) {
1325
+ console.error("\nCloud sync is blocked for safety.");
1326
+ console.error("This device changed its memory encryption key, so Exe Cloud must be re-uploaded with the new key first.");
1327
+ console.error("Run: exe-os cloud reupload");
1328
+ } else {
1329
+ console.error(`Sync failed: ${message}`);
1330
+ }
1331
+ process.exit(1);
1332
+ } finally {
1333
+ await disposeStore();
1320
1334
  }
1321
- process.exit(1);
1322
1335
  } finally {
1323
- await disposeStore();
1336
+ process.off("SIGTERM", handleShutdown);
1337
+ process.off("SIGINT", handleShutdown);
1324
1338
  }
1325
1339
  }
1326
1340
  async function runLogin(loginArgs) {
@@ -0,0 +1,27 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ parseHandoffConfig,
4
+ runDaemonRestartHandoff
5
+ } from "../chunk-PWRC5XZO.js";
6
+ import {
7
+ isMainModule
8
+ } from "../chunk-6Y4B3QF6.js";
9
+ import "../chunk-MLKGABMK.js";
10
+
11
+ // src/bin/daemon-restart-handoff.ts
12
+ async function main() {
13
+ try {
14
+ const result = await runDaemonRestartHandoff(parseHandoffConfig(process.env.EXE_DAEMON_HANDOFF_CONFIG));
15
+ if (!result.ok) {
16
+ process.stderr.write(`[daemon-handoff] skipped: ${result.skipped}
17
+ `);
18
+ }
19
+ } catch (err) {
20
+ process.stderr.write(`[daemon-handoff] failed: ${err instanceof Error ? err.message : String(err)}
21
+ `);
22
+ process.exitCode = 1;
23
+ }
24
+ }
25
+ if (isMainModule(import.meta.url) && (process.argv[1] ?? "").includes("daemon-restart-handoff")) {
26
+ void main();
27
+ }
@@ -1,141 +1,143 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  computeMcpSurfaceHash
4
- } from "../chunk-BUCXNV32.js";
4
+ } from "../chunk-NGRY2UKC.js";
5
5
  import "../chunk-WCGNCH3Q.js";
6
- import "../chunk-YTCFACP4.js";
7
- import "../chunk-TLT7NZCW.js";
8
- import "../chunk-UUQBZPJJ.js";
9
- import "../chunk-HV4KESRY.js";
10
- import "../chunk-557C2IGL.js";
11
- import "../chunk-TTCUG2CF.js";
6
+ import "../chunk-4KNPF6RI.js";
7
+ import "../chunk-YEHLGSMN.js";
8
+ import "../chunk-BW74OUFZ.js";
9
+ import "../chunk-X64GUUL4.js";
10
+ import "../chunk-4I2BWW2Z.js";
12
11
  import "../chunk-5H47VHB7.js";
13
- import "../chunk-EUS4QUKP.js";
14
- import "../chunk-MKYFAKDW.js";
15
- import "../chunk-UNXQBELK.js";
12
+ import "../chunk-557C2IGL.js";
13
+ import "../chunk-25X4JD2V.js";
14
+ import "../chunk-UVY7DMQN.js";
15
+ import "../chunk-2UWYIZEN.js";
16
+ import "../chunk-SHMDFBG7.js";
17
+ import "../chunk-ZW2XGLWY.js";
18
+ import "../chunk-LLJU2CZQ.js";
16
19
  import "../chunk-CRCB5S7I.js";
17
- import "../chunk-S7QUM2UK.js";
18
- import "../chunk-NN2B2QKU.js";
19
- import "../chunk-HAF2DJYV.js";
20
- import "../chunk-CE7F6RHG.js";
21
- import "../chunk-4CMVFVFC.js";
22
- import "../chunk-P5HIWY2E.js";
23
- import "../chunk-JRM4TAGS.js";
24
- import "../chunk-MGGOSFCR.js";
20
+ import "../chunk-UVMYLXOD.js";
21
+ import "../chunk-RT6HMUJF.js";
22
+ import "../chunk-XOC3Y4TF.js";
23
+ import "../chunk-2JFGW62N.js";
24
+ import "../chunk-DN6HP26X.js";
25
+ import "../chunk-2CCMWJXP.js";
25
26
  import "../chunk-E6ORBQHP.js";
26
- import "../chunk-C5QAPURN.js";
27
- import "../chunk-FPFPLPUY.js";
28
- import "../chunk-JMYHW3AL.js";
29
- import "../chunk-OZEBAGKR.js";
30
- import "../chunk-QOO5RW3K.js";
31
- import "../chunk-Z6RSN7KS.js";
32
- import "../chunk-NX5INHHG.js";
33
- import "../chunk-4J4PMPXZ.js";
34
- import "../chunk-F27XXN6C.js";
35
- import "../chunk-UUEKJDK6.js";
36
- import "../chunk-MZM6EJCU.js";
37
- import "../chunk-6WQ3NNCE.js";
38
- import "../chunk-7V4JADD6.js";
39
- import "../chunk-L4A5DL6Z.js";
40
- import "../chunk-SQKXKV2Y.js";
41
- import "../chunk-JPUZPAAF.js";
42
- import "../chunk-QRYVCDWS.js";
27
+ import "../chunk-Q6LDI5JN.js";
28
+ import "../chunk-5BQMRB3E.js";
29
+ import "../chunk-GMXNBQC3.js";
30
+ import "../chunk-BUP7NUPL.js";
31
+ import "../chunk-ODATAUFD.js";
32
+ import "../chunk-MKF7VY7H.js";
33
+ import "../chunk-KOFH2Z3S.js";
34
+ import "../chunk-XL24STS2.js";
35
+ import "../chunk-HHG4YUJ5.js";
36
+ import "../chunk-PTVLXA3D.js";
37
+ import "../chunk-ONZZF5EQ.js";
38
+ import "../chunk-NYVO4O24.js";
39
+ import "../chunk-BPQBKR2V.js";
40
+ import "../chunk-L4PWTC3Q.js";
41
+ import "../chunk-DROR4FYJ.js";
42
+ import "../chunk-REIDGEAX.js";
43
+ import "../chunk-HSUP2KKZ.js";
43
44
  import "../chunk-3OEVDGIY.js";
44
- import "../chunk-QQ4E2RYW.js";
45
- import "../chunk-2KZNGDSW.js";
46
- import "../chunk-KQ4Z2G24.js";
45
+ import "../chunk-WIXWS55C.js";
46
+ import "../chunk-54XBWX2U.js";
47
+ import "../chunk-JKOEOHOD.js";
47
48
  import "../chunk-L3TB7CC3.js";
48
- import "../chunk-PDWS3E22.js";
49
- import "../chunk-GG5NDQNN.js";
50
- import "../chunk-IBYL4DHM.js";
49
+ import "../chunk-OBADBSW4.js";
51
50
  import "../chunk-SSC7EKY2.js";
52
- import "../chunk-VRAQTFD6.js";
53
- import "../chunk-KWZMQACA.js";
51
+ import "../chunk-EUUYJO3E.js";
52
+ import "../chunk-VL2ARD7K.js";
54
53
  import "../chunk-75H4R62K.js";
55
- import "../chunk-OTF44GXL.js";
54
+ import "../chunk-TSP6GPAK.js";
56
55
  import "../chunk-MMRUBN3I.js";
57
56
  import "../chunk-2XZ6X3PJ.js";
58
- import "../chunk-XHK3FS3W.js";
59
- import "../chunk-GJ26DULE.js";
60
- import "../chunk-EQHQF5IM.js";
61
- import "../chunk-CNVBKDEY.js";
62
- import "../chunk-NXUSDL37.js";
63
- import "../chunk-NBZL5CGA.js";
57
+ import "../chunk-6777GKUZ.js";
58
+ import "../chunk-ZJSP736C.js";
59
+ import "../chunk-6L6SXVTP.js";
60
+ import "../chunk-L35RC5GC.js";
61
+ import "../chunk-ZVHKVVKG.js";
62
+ import "../chunk-MRFM6A4G.js";
63
+ import "../chunk-QCP3KEPZ.js";
64
64
  import "../chunk-X2Z5GT3V.js";
65
- import "../chunk-QDGZJ653.js";
66
- import "../chunk-KW2SD2FL.js";
67
- import "../chunk-6CH3TPHR.js";
68
- import "../chunk-A4DVMPYB.js";
69
- import "../chunk-GUMRIUI5.js";
65
+ import "../chunk-5SXVPXTN.js";
66
+ import "../chunk-EQY2SN2P.js";
67
+ import "../chunk-PT2JRHTH.js";
68
+ import "../chunk-7UMCQQWS.js";
70
69
  import "../chunk-Z6BZQHP5.js";
70
+ import "../chunk-GUMRIUI5.js";
71
71
  import "../chunk-VGMACSEV.js";
72
+ import "../chunk-7IGFMHNK.js";
73
+ import "../chunk-QGGH7LOU.js";
72
74
  import "../chunk-S3THSOWV.js";
73
75
  import "../chunk-IOEUAQWP.js";
74
- import "../chunk-5TY4FPH6.js";
75
- import "../chunk-XZXBB3TN.js";
76
- import "../chunk-RAXVPNMR.js";
77
- import "../chunk-QGGH7LOU.js";
78
- import "../chunk-QYZJHTNE.js";
79
- import "../chunk-R2NN3JKH.js";
80
- import "../chunk-O7LWR36Z.js";
81
- import "../chunk-PWUFMX75.js";
82
- import "../chunk-VPZHJCKW.js";
83
- import "../chunk-N7QJKQMX.js";
76
+ import "../chunk-UE6JIJOO.js";
77
+ import "../chunk-EBZAEAY3.js";
84
78
  import "../chunk-AB4PAQYK.js";
85
- import "../chunk-VSRPS3J7.js";
79
+ import "../chunk-CNLY3TLP.js";
86
80
  import "../chunk-CHCA3ZM2.js";
87
81
  import "../chunk-OTVEIJUQ.js";
88
- import "../chunk-6XWTQUO4.js";
82
+ import "../chunk-PHBE5QNB.js";
83
+ import "../chunk-VCOLV4CR.js";
84
+ import "../chunk-TKUIHTQF.js";
85
+ import "../chunk-O7LWR36Z.js";
86
+ import "../chunk-T4DCS5J5.js";
89
87
  import "../chunk-76CJBM36.js";
90
- import "../chunk-5ERDIOV3.js";
88
+ import "../chunk-IGSX4CFJ.js";
89
+ import "../chunk-X4Z5DPOC.js";
90
+ import "../chunk-CHFWJS7F.js";
91
+ import "../chunk-NVCFWR5I.js";
91
92
  import "../chunk-4QCFFW2H.js";
92
- import "../chunk-UP75Z5X7.js";
93
- import "../chunk-L2R3LN2P.js";
94
- import "../chunk-I26FWCSP.js";
95
- import "../chunk-EV46QTD3.js";
93
+ import "../chunk-JZMFWFNF.js";
94
+ import "../chunk-DF2VTPZE.js";
95
+ import "../chunk-EA47YVXG.js";
96
+ import "../chunk-LWEQXRYE.js";
96
97
  import "../chunk-E23LNUWJ.js";
97
98
  import "../chunk-4JERP7NT.js";
98
99
  import "../chunk-EIKATSE4.js";
99
- import "../chunk-KGWRTRKC.js";
100
+ import "../chunk-42GV6K3X.js";
100
101
  import "../chunk-AD2VCHSS.js";
101
102
  import "../chunk-WOYADZF5.js";
102
103
  import "../chunk-SKGMF2SO.js";
103
- import "../chunk-2WAVZ5UJ.js";
104
- import "../chunk-HA5R6USD.js";
104
+ import "../chunk-AQ2TNSJ3.js";
105
+ import "../chunk-YHESKZNJ.js";
105
106
  import "../chunk-AM7S2TY6.js";
106
- import "../chunk-JGIPOUIK.js";
107
+ import "../chunk-TN4M6SRF.js";
107
108
  import "../chunk-GWDSB25T.js";
109
+ import "../chunk-4YXTASUU.js";
108
110
  import "../chunk-CVYC6DUW.js";
109
- import "../chunk-JLZ4RYSD.js";
110
- import "../chunk-H7I47RS5.js";
111
+ import "../chunk-MBMOYDUD.js";
112
+ import "../chunk-IBTKZEK4.js";
111
113
  import "../chunk-OPU3NYOO.js";
112
- import "../chunk-G4RGKBCA.js";
114
+ import "../chunk-OIEWB4JN.js";
113
115
  import {
114
116
  requestDeployRestart
115
117
  } from "../chunk-AFNRE2RV.js";
116
- import "../chunk-X2Q5NLUL.js";
118
+ import "../chunk-ZVIZQSPE.js";
117
119
  import {
118
120
  computeDaemonHeapCapMb
119
121
  } from "../chunk-NLEW62VC.js";
120
122
  import "../chunk-HYZV25LY.js";
121
123
  import "../chunk-GJV3WDWM.js";
122
124
  import "../chunk-GL57PO3K.js";
123
- import "../chunk-KP3U5QGJ.js";
125
+ import "../chunk-EKWFUXLY.js";
124
126
  import "../chunk-ML4S5SHZ.js";
125
127
  import "../chunk-MP2AFCGL.js";
126
- import "../chunk-AOHXREB7.js";
128
+ import "../chunk-ZA7WHPN6.js";
127
129
  import "../chunk-2I23RPSI.js";
128
- import "../chunk-OLMQ4UOF.js";
130
+ import "../chunk-XIUDWV5X.js";
129
131
  import "../chunk-PNQDP3OA.js";
130
- import "../chunk-H73TUI4Y.js";
131
132
  import "../chunk-7HLWBYH7.js";
133
+ import "../chunk-BBMTVAE3.js";
132
134
  import "../chunk-FXU7JOXK.js";
133
135
  import "../chunk-QWVXN224.js";
134
136
  import "../chunk-NGP6LSV2.js";
135
137
  import "../chunk-F55P3H4S.js";
136
- import "../chunk-PQIDGXSG.js";
137
- import "../chunk-K7KFGDWF.js";
138
- import "../chunk-WZHZCDDO.js";
138
+ import "../chunk-IHIT5RCW.js";
139
+ import "../chunk-5IGNNFST.js";
140
+ import "../chunk-GXPJELD7.js";
139
141
  import "../chunk-BYTDMAGB.js";
140
142
  import "../chunk-6Y4B3QF6.js";
141
143
  import "../chunk-MLKGABMK.js";
@@ -198,6 +200,28 @@ async function probeDaemonHealth(clientVersion) {
198
200
  warnOnVersionMismatch(result2.version, clientVersion);
199
201
  return result2.ok;
200
202
  }
203
+ function isLaunchdManagingDaemon() {
204
+ try {
205
+ const launchdCheck = execSync("launchctl list com.askexe.exed 2>/dev/null", { encoding: "utf8", timeout: 3e3 });
206
+ return launchdCheck.includes("com.askexe.exed");
207
+ } catch {
208
+ return false;
209
+ }
210
+ }
211
+ function kickstartLaunchdDaemon() {
212
+ const uid = process.getuid?.() ?? os.userInfo().uid;
213
+ const target = `gui/${uid}/com.askexe.exed`;
214
+ try {
215
+ execSync(`launchctl kickstart ${target}`, { timeout: 1e4, stdio: "pipe" });
216
+ process.stderr.write(`[deferred-restart] launchd kickstart issued for ${target}
217
+ `);
218
+ } catch (err) {
219
+ process.stderr.write(
220
+ `[deferred-restart] launchd kickstart failed (will rely on fallback if needed): ${err instanceof Error ? err.message : String(err)}
221
+ `
222
+ );
223
+ }
224
+ }
201
225
  try {
202
226
  writeFileSync(DEFERRED_RESTART_PID_PATH, String(process.pid));
203
227
  } catch {
@@ -225,13 +249,17 @@ if (!result.ok) {
225
249
  process.stderr.write(`[deferred-restart] Kill phase skipped: ${result.skipped}
226
250
  `);
227
251
  }
228
- try {
229
- const launchdCheck = execSync("launchctl list com.askexe.exed 2>/dev/null", { encoding: "utf8", timeout: 3e3 });
230
- if (launchdCheck.includes("com.askexe.exed")) {
231
- process.stderr.write("[deferred-restart] launchd manages daemon \u2014 it will auto-restart. Done.\n");
232
- process.exit(0);
252
+ if (isLaunchdManagingDaemon()) {
253
+ kickstartLaunchdDaemon();
254
+ const clientVersion = packageVersion(resolvePackageRoot());
255
+ for (let attempt = 1; attempt <= 10; attempt++) {
256
+ await new Promise((r) => setTimeout(r, 1e3));
257
+ if (await probeDaemonHealth(clientVersion)) {
258
+ process.stderr.write("[deferred-restart] launchd-managed daemon restarted and healthy\n");
259
+ process.exit(0);
260
+ }
233
261
  }
234
- } catch {
262
+ process.stderr.write("[deferred-restart] launchd-managed daemon not healthy after kickstart \u2014 using manual fallback\n");
235
263
  }
236
264
  var totalGB = os.totalmem() / (1024 * 1024 * 1024);
237
265
  function resolvePackageRoot() {
@@ -6,21 +6,21 @@ import {
6
6
  getAgentRuntime,
7
7
  loadAgentConfig,
8
8
  setAgentRuntime
9
- } from "../chunk-HA5R6USD.js";
9
+ } from "../chunk-YHESKZNJ.js";
10
10
  import "../chunk-AM7S2TY6.js";
11
11
  import {
12
12
  loadEmployeesSync
13
- } from "../chunk-AOHXREB7.js";
13
+ } from "../chunk-ZA7WHPN6.js";
14
14
  import "../chunk-2I23RPSI.js";
15
- import "../chunk-OLMQ4UOF.js";
15
+ import "../chunk-XIUDWV5X.js";
16
16
  import "../chunk-PNQDP3OA.js";
17
- import "../chunk-H73TUI4Y.js";
18
17
  import "../chunk-7HLWBYH7.js";
18
+ import "../chunk-BBMTVAE3.js";
19
19
  import "../chunk-FXU7JOXK.js";
20
20
  import {
21
21
  DEFAULT_RUNTIME
22
22
  } from "../chunk-NGP6LSV2.js";
23
- import "../chunk-WZHZCDDO.js";
23
+ import "../chunk-GXPJELD7.js";
24
24
  import "../chunk-BYTDMAGB.js";
25
25
  import "../chunk-MLKGABMK.js";
26
26