@askexenow/exe-os 0.9.239 → 0.9.243

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (316) hide show
  1. package/deploy/compose/.env.customer.example +12 -0
  2. package/deploy/compose/.env.example +13 -1
  3. package/deploy/compose/cloudflared/config.yml.example +23 -4
  4. package/deploy/compose/docker-compose.yml +27 -7
  5. package/deploy/compose/generate-env.ts +49 -1
  6. package/deploy/compose/init-db.sql +10 -2
  7. package/deploy/stack-manifests/v0.9.json +113 -9
  8. package/dist/{active-agent-7MIVNARP.js → active-agent-KO4ZWDXE.js} +4 -4
  9. package/dist/{active-agent-55C5Y3XL.js → active-agent-KP2O52HA.js} +4 -4
  10. package/dist/{agentic-ontology-NCAQIQQI.js → agentic-ontology-DXE5J6I5.js} +1 -1
  11. package/dist/{backfill-metadata-3JP7EZ2U.js → backfill-metadata-DFTIGPXP.js} +7 -7
  12. package/dist/{background-jobs-RWL46VRD.js → background-jobs-CRXY7T4Y.js} +2 -2
  13. package/dist/{behaviors-6BGALYGW.js → behaviors-BL3QCHBT.js} +4 -4
  14. package/dist/bin/age-ontology-load.js +2 -2
  15. package/dist/bin/agentic-ontology-backfill.js +9 -9
  16. package/dist/bin/agentic-reflection-backfill.js +10 -10
  17. package/dist/bin/agentic-semantic-label.js +9 -9
  18. package/dist/bin/backfill-conversations.js +9 -9
  19. package/dist/bin/backfill-responses.js +9 -9
  20. package/dist/bin/backfill-vectors.js +11 -11
  21. package/dist/bin/bulk-sync-postgres.js +10 -10
  22. package/dist/bin/cc-doctor.js +3 -3
  23. package/dist/bin/cleanup-stale-review-tasks.js +13 -13
  24. package/dist/bin/cli.js +27 -22
  25. package/dist/bin/exe-agent-config.js +4 -4
  26. package/dist/bin/exe-agent.js +8 -8
  27. package/dist/bin/exe-assign.js +11 -11
  28. package/dist/bin/exe-boot.js +22 -22
  29. package/dist/bin/exe-call.js +5 -5
  30. package/dist/bin/exe-cloud.js +8 -8
  31. package/dist/bin/exe-dispatch.js +13 -13
  32. package/dist/bin/exe-doctor.js +1 -1
  33. package/dist/bin/exe-export-behaviors.js +10 -10
  34. package/dist/bin/exe-forget.js +9 -9
  35. package/dist/bin/exe-gateway.js +8 -8
  36. package/dist/bin/exe-healthcheck.js +3 -3
  37. package/dist/bin/exe-heartbeat.js +13 -13
  38. package/dist/bin/exe-kill.js +18 -18
  39. package/dist/bin/exe-launch-agent.js +22 -22
  40. package/dist/bin/exe-new-employee.js +8 -8
  41. package/dist/bin/exe-pending-messages.js +14 -14
  42. package/dist/bin/exe-pending-notifications.js +13 -13
  43. package/dist/bin/exe-pending-reviews.js +13 -13
  44. package/dist/bin/exe-rename.js +5 -5
  45. package/dist/bin/exe-review.js +17 -17
  46. package/dist/bin/exe-search.js +8 -8
  47. package/dist/bin/exe-session-cleanup.js +20 -20
  48. package/dist/bin/exe-settings.js +7 -7
  49. package/dist/bin/exe-start-codex.js +14 -14
  50. package/dist/bin/exe-start-opencode.js +11 -11
  51. package/dist/bin/exe-status.js +14 -14
  52. package/dist/bin/exe-support.js +3 -3
  53. package/dist/bin/exe-team.js +4 -4
  54. package/dist/bin/git-sweep.js +13 -13
  55. package/dist/bin/graph-backfill.js +8 -8
  56. package/dist/bin/graph-export.js +8 -8
  57. package/dist/bin/import-history.js +10 -10
  58. package/dist/bin/install.js +7 -7
  59. package/dist/bin/intercom-check.js +4 -4
  60. package/dist/bin/mcp-sessions.js +2 -2
  61. package/dist/bin/orchestration-metrics.js +5 -5
  62. package/dist/bin/postgres-agentic-reflection-backfill.js +4 -4
  63. package/dist/bin/postgres-agentic-semantic-backfill.js +3 -3
  64. package/dist/bin/scan-tasks.js +13 -13
  65. package/dist/bin/setup.js +3 -3
  66. package/dist/bin/shard-migrate.js +8 -8
  67. package/dist/bin/stack-update.js +324 -20
  68. package/dist/bin/verify-stack.js +3 -383
  69. package/dist/bin/vps-backup.js +8 -160
  70. package/dist/bin/vps-health-gate.js +10 -220
  71. package/dist/{branding-I7YYX4FM.js → branding-XWMO5EDR.js} +1 -1
  72. package/dist/{capacity-monitor-IFCZKRPG.js → capacity-monitor-4CSBC7AP.js} +14 -14
  73. package/dist/{catchup-brief-PIDRWXOW.js → catchup-brief-LF5Z6Q6E.js} +17 -17
  74. package/dist/{chunk-FGJUGDNM.js → chunk-222SI7QC.js} +14 -14
  75. package/dist/{chunk-JZMVLAZ2.js → chunk-2WBBVEIB.js} +1 -1
  76. package/dist/{chunk-JDOE33C2.js → chunk-3V53HH5T.js} +4 -4
  77. package/dist/{chunk-2KZSKURT.js → chunk-57SULZJ2.js} +3 -3
  78. package/dist/{chunk-QI4IXJN7.js → chunk-5CHYEKMH.js} +7 -4
  79. package/dist/chunk-5DMAMQNU.js +168 -0
  80. package/dist/{chunk-PLQAFB3Z.js → chunk-5JIG2FP2.js} +1 -1
  81. package/dist/{chunk-UWQ3XCDG.js → chunk-5WK7X5CF.js} +2 -2
  82. package/dist/{chunk-DDPAQ4LT.js → chunk-6JAGJN77.js} +2 -2
  83. package/dist/{chunk-7F37NMKB.js → chunk-73UE2PHT.js} +1 -1
  84. package/dist/{chunk-JL3K5OTS.js → chunk-7IZWLMTP.js} +1 -1
  85. package/dist/{chunk-ELRRL2NC.js → chunk-A4K2ZT6N.js} +4 -4
  86. package/dist/{chunk-GWYADLIW.js → chunk-AHXEU5XB.js} +1 -1
  87. package/dist/{chunk-WSHMBME6.js → chunk-AWRL5FGM.js} +19 -78
  88. package/dist/{chunk-OMPCFLWA.js → chunk-BSPOEYAO.js} +1 -1
  89. package/dist/{chunk-DHVC4RN7.js → chunk-CBDPEJOR.js} +5 -5
  90. package/dist/{chunk-2H55BIV2.js → chunk-CEJO7244.js} +2 -2
  91. package/dist/{chunk-FKWZVO2T.js → chunk-CPXGLSIL.js} +3 -3
  92. package/dist/{chunk-HX5G4AS4.js → chunk-CWITU7DW.js} +2 -2
  93. package/dist/{chunk-5GG7MTRJ.js → chunk-DGBGIXCC.js} +4 -4
  94. package/dist/{chunk-IQXPMK46.js → chunk-DLZYAYVM.js} +60 -14
  95. package/dist/{chunk-PPYWQV2M.js → chunk-DR5BGWFR.js} +2 -2
  96. package/dist/{chunk-BZWKTFEB.js → chunk-ENVRFBTB.js} +2 -2
  97. package/dist/{chunk-DUVO2PUJ.js → chunk-F3GM6OOP.js} +4 -4
  98. package/dist/{chunk-HNLPLLE6.js → chunk-F7JLZXHC.js} +60 -26
  99. package/dist/{chunk-AL4DRC5H.js → chunk-FFLILAG6.js} +1 -1
  100. package/dist/{chunk-BZNI4OK5.js → chunk-GHEWRYMY.js} +18 -2
  101. package/dist/{chunk-C7SFJO5F.js → chunk-GHT4REOS.js} +5 -5
  102. package/dist/{chunk-FBWUJEXS.js → chunk-HANG6NLF.js} +4 -6
  103. package/dist/{chunk-5NJ4A4ZA.js → chunk-HCBMPZDT.js} +1 -1
  104. package/dist/chunk-HOGTZLVU.js +244 -0
  105. package/dist/{chunk-IQSCZDBQ.js → chunk-I5PIBL56.js} +3 -3
  106. package/dist/chunk-IRHNV4GY.js +388 -0
  107. package/dist/{chunk-F4TCKCKK.js → chunk-ITZVPCBQ.js} +33 -12
  108. package/dist/{chunk-4HROS3GJ.js → chunk-IZVKWBIP.js} +1 -1
  109. package/dist/{chunk-DKI5BTBC.js → chunk-J7V7LPPX.js} +2 -2
  110. package/dist/{chunk-TOZ5NN5V.js → chunk-JLKUVK5J.js} +1 -1
  111. package/dist/{chunk-4SC65UBG.js → chunk-JLNXKG3K.js} +1 -1
  112. package/dist/{chunk-KVSQOG3W.js → chunk-K2BDE2B5.js} +4 -4
  113. package/dist/{chunk-KDJRFJDL.js → chunk-K333WOW4.js} +30 -2
  114. package/dist/{chunk-6LBCUA2A.js → chunk-KEZXW3RP.js} +1 -1
  115. package/dist/{chunk-W7G3GY4I.js → chunk-KLQI7QY4.js} +3 -3
  116. package/dist/{chunk-UODVZGBQ.js → chunk-KN7LPTIB.js} +1 -1
  117. package/dist/{chunk-ESKBZN4Q.js → chunk-L4WRH3DL.js} +1 -1
  118. package/dist/{chunk-VFQKKMKE.js → chunk-LAOB5BKV.js} +2 -2
  119. package/dist/{chunk-MAN5LZQ4.js → chunk-LQSFP2BV.js} +1 -1
  120. package/dist/{chunk-EJ7LOTV2.js → chunk-LSFHEMVI.js} +9 -9
  121. package/dist/{chunk-RA2RO27E.js → chunk-MCESA5UW.js} +2 -2
  122. package/dist/{chunk-UPMHG7ET.js → chunk-MEIHREPM.js} +1 -1
  123. package/dist/{chunk-D5C56WO3.js → chunk-MOZ2YQ54.js} +1 -1
  124. package/dist/{chunk-CLGB3FGL.js → chunk-MPX3TRMQ.js} +2 -2
  125. package/dist/{chunk-5R75ODPS.js → chunk-NBY6R37W.js} +61 -232
  126. package/dist/{chunk-RWFGXC35.js → chunk-NEYQAEYU.js} +7 -7
  127. package/dist/{chunk-MBHZDXGN.js → chunk-NL35XNLI.js} +1 -1
  128. package/dist/{chunk-TPQVLYSV.js → chunk-NLGMHPEN.js} +1 -1
  129. package/dist/{chunk-5LMH4YHG.js → chunk-NRVV4Y5V.js} +4 -4
  130. package/dist/{chunk-GN5VHPPR.js → chunk-NVZR7T4E.js} +1 -1
  131. package/dist/{chunk-Y2L7RMGH.js → chunk-NWBHL5PI.js} +1 -1
  132. package/dist/{chunk-YPYDLW75.js → chunk-OEMX65EA.js} +1 -1
  133. package/dist/{chunk-UAFUGPKO.js → chunk-ONAQAL3O.js} +1 -1
  134. package/dist/{chunk-AVM7XZE4.js → chunk-OWQ3CCYJ.js} +7 -6
  135. package/dist/{chunk-K525WLL7.js → chunk-PI6V23GF.js} +5 -4
  136. package/dist/{chunk-AURM7FOT.js → chunk-Q2OAQPWY.js} +1 -1
  137. package/dist/{chunk-FB5VRO5S.js → chunk-QLDWASTX.js} +28 -32
  138. package/dist/{chunk-EPWDTS2Q.js → chunk-QMTGMCWB.js} +1 -1
  139. package/dist/{chunk-VI2FJY2M.js → chunk-QP4FHME2.js} +2 -2
  140. package/dist/{chunk-NJWK6J4N.js → chunk-QUNKPR6Y.js} +5 -5
  141. package/dist/{chunk-O6DAF2TY.js → chunk-QUZVAHO7.js} +2 -2
  142. package/dist/{chunk-VHKL4S4T.js → chunk-RRHSONV5.js} +2 -2
  143. package/dist/{chunk-GPF6X6HE.js → chunk-RYDHEWYY.js} +2 -2
  144. package/dist/{chunk-C2YS2AA6.js → chunk-U7WOVXBB.js} +2 -2
  145. package/dist/chunk-UIRWDGMB.js +230 -0
  146. package/dist/{chunk-FE45RXGC.js → chunk-V2GZMY6O.js} +1 -1
  147. package/dist/{chunk-PATCHPNY.js → chunk-VHALWCUO.js} +1 -1
  148. package/dist/{chunk-HLZSC5WK.js → chunk-VQAP35DA.js} +20 -18
  149. package/dist/{chunk-452XB7OZ.js → chunk-VRIMTCX2.js} +1 -1
  150. package/dist/{chunk-SUNYJ6YE.js → chunk-VT2B5BHM.js} +1 -1
  151. package/dist/{chunk-UZIJDYDA.js → chunk-VWVJVQDH.js} +2 -2
  152. package/dist/{chunk-TRZ5KA2R.js → chunk-VXIMSRTO.js} +2 -2
  153. package/dist/{chunk-DAZIV4QZ.js → chunk-WCXZF42W.js} +1 -1
  154. package/dist/{chunk-6OJJF4WP.js → chunk-XJUUWHVN.js} +1 -1
  155. package/dist/{chunk-F7LU65PQ.js → chunk-Y25OJWOQ.js} +14 -2
  156. package/dist/{chunk-2ORPA23Y.js → chunk-YMXXD2GW.js} +36 -8
  157. package/dist/{chunk-5WLMF6PL.js → chunk-YMZHTTOQ.js} +1 -1
  158. package/dist/{chunk-7DIDOQCX.js → chunk-YRVW57UW.js} +139 -125
  159. package/dist/{chunk-BRFH5X7G.js → chunk-Z7VDUS6L.js} +1 -1
  160. package/dist/{chunk-YFE6W75D.js → chunk-ZKFPHJIJ.js} +1 -1
  161. package/dist/{chunk-5WUTKDH6.js → chunk-ZVXJSQOR.js} +1 -1
  162. package/dist/{co-activation-VB4CJQZB.js → co-activation-L6I2LSJO.js} +3 -3
  163. package/dist/{co-occurrence-XZQJJIBM.js → co-occurrence-QARWYUAY.js} +3 -3
  164. package/dist/{code-context-index-FCQOPUEA.js → code-context-index-UIYQRDHD.js} +4 -4
  165. package/dist/{content-extractor-SPSH5X33.js → content-extractor-EYRVGD6O.js} +2 -2
  166. package/dist/{conversation-wiki-populator-YU35LNRK.js → conversation-wiki-populator-L7O6F3BB.js} +1 -1
  167. package/dist/{crdt-sync-KXETGV45.js → crdt-sync-R6YROKDH.js} +1 -1
  168. package/dist/{crm-webhook-JMOAHTJ6.js → crm-webhook-WK3PYJJK.js} +2 -2
  169. package/dist/{cto-delegation-gate-IJ3KQIKF.js → cto-delegation-gate-5JZORQIT.js} +12 -12
  170. package/dist/{daemon-auth-2IZACWSG.js → daemon-auth-2HEOL6VG.js} +2 -2
  171. package/dist/{daemon-orchestration-ZCY4GEI3.js → daemon-orchestration-BJ3T5MMF.js} +16 -15
  172. package/dist/{db-backup-HLX5OLIV.js → db-backup-EWS52P2W.js} +2 -2
  173. package/dist/{dreaming-2CJML3TU.js → dreaming-BOSBDRI3.js} +13 -13
  174. package/dist/{entity-boost-T5IYWWDZ.js → entity-boost-6ZVX7DFB.js} +26 -2
  175. package/dist/{exe-drift-P5OIRNSH.js → exe-drift-WRE6RADZ.js} +4 -4
  176. package/dist/{exe-export-QQL2H322.js → exe-export-7N5PBCMK.js} +8 -8
  177. package/dist/{exe-import-V4RJCUEP.js → exe-import-YOOE7S3H.js} +8 -8
  178. package/dist/{exe-key-MENJGDD7.js → exe-key-GXJSTCX2.js} +4 -4
  179. package/dist/{exe-org-3FNET2J7.js → exe-org-42YMQL75.js} +2 -2
  180. package/dist/{exe-snapshot-YRARQE7F.js → exe-snapshot-ODUCFW7G.js} +18 -18
  181. package/dist/{fast-db-init-HIJWWKAO.js → fast-db-init-YSR7RMVZ.js} +1 -1
  182. package/dist/{founder-context-BQ5NBDUV.js → founder-context-Q2HUCZX4.js} +2 -2
  183. package/dist/gateway/index.js +9 -9
  184. package/dist/{gateway-client-YGSA5QMC.js → gateway-client-4QXHKN5C.js} +1 -1
  185. package/dist/{git-staleness-IHTKCUMN.js → git-staleness-BJDTCDPC.js} +3 -3
  186. package/dist/{git-task-sweep-5ZPNQS7Y.js → git-task-sweep-L3U3T5HM.js} +13 -13
  187. package/dist/{global-procedures-XHDIZRJU.js → global-procedures-HCHEHKY2.js} +4 -4
  188. package/dist/{graph-auto-extract-5TPT67GP.js → graph-auto-extract-FP5C76LS.js} +3 -3
  189. package/dist/{hook-integrity-SB53Y7UK.js → hook-integrity-2OU3T6UC.js} +1 -1
  190. package/dist/hooks/bug-report-worker.js +15 -14
  191. package/dist/hooks/codex-stop-task-finalizer.js +15 -14
  192. package/dist/hooks/commit-complete.js +16 -16
  193. package/dist/hooks/error-recall.js +10 -10
  194. package/dist/hooks/exe-heartbeat-hook.js +5 -5
  195. package/dist/hooks/ingest-worker.js +8 -8
  196. package/dist/hooks/ingest.js +13 -13
  197. package/dist/hooks/instructions-loaded.js +7 -7
  198. package/dist/hooks/manifest.json +20 -20
  199. package/dist/hooks/notification.js +6 -6
  200. package/dist/hooks/post-compact.js +15 -15
  201. package/dist/hooks/post-tool-combined.js +7 -7
  202. package/dist/hooks/pre-compact.js +20 -20
  203. package/dist/hooks/pre-tool-use.js +28 -25
  204. package/dist/hooks/prompt-submit.js +62 -31
  205. package/dist/hooks/session-end.js +26 -26
  206. package/dist/hooks/session-start.js +39 -15
  207. package/dist/hooks/stop.js +22 -22
  208. package/dist/hooks/subagent-stop.js +15 -15
  209. package/dist/hooks/summary-worker.js +32 -27
  210. package/dist/index.js +21 -21
  211. package/dist/{installer-AMZM4MLS.js → installer-AWMUCRN4.js} +7 -7
  212. package/dist/{installer-KT5FW4CN.js → installer-HB3NH6FG.js} +9 -9
  213. package/dist/{installer-HW74W3IT.js → installer-RU6EVOBL.js} +6 -6
  214. package/dist/{intercom-queue-RNM6EPGA.js → intercom-queue-A6UJEFIF.js} +1 -1
  215. package/dist/{key-backup-status-OZ2CXUDW.js → key-backup-status-4YKCV4ZV.js} +1 -1
  216. package/dist/lib/agent-config.js +2 -2
  217. package/dist/lib/cloud-sync.js +10 -8
  218. package/dist/lib/config.js +1 -1
  219. package/dist/lib/consolidation.js +8 -8
  220. package/dist/lib/database.js +3 -3
  221. package/dist/lib/db-daemon-client.js +3 -3
  222. package/dist/lib/db.js +3 -3
  223. package/dist/lib/device-registry.js +1 -1
  224. package/dist/lib/embedder.js +4 -4
  225. package/dist/lib/employee-templates.js +5 -5
  226. package/dist/lib/employees.js +3 -3
  227. package/dist/lib/exe-daemon-client.js +3 -3
  228. package/dist/lib/exe-daemon.js +105 -74
  229. package/dist/lib/hybrid-search.js +8 -8
  230. package/dist/lib/identity.js +3 -3
  231. package/dist/lib/keychain.js +1 -1
  232. package/dist/lib/license.js +2 -2
  233. package/dist/lib/messaging.js +13 -13
  234. package/dist/lib/post-tool-memory.js +3 -3
  235. package/dist/lib/reminders.js +4 -4
  236. package/dist/lib/schedules.js +8 -8
  237. package/dist/lib/session-registry.js +5 -5
  238. package/dist/lib/skill-learning.js +5 -5
  239. package/dist/lib/store.js +7 -7
  240. package/dist/lib/task-router.js +4 -4
  241. package/dist/lib/tasks.js +14 -13
  242. package/dist/lib/tmux-routing.js +12 -12
  243. package/dist/lib/token-spend.js +4 -4
  244. package/dist/lib/ws-client.js +1 -1
  245. package/dist/{license-gate-XJDIL6OZ.js → license-gate-6JQQFBHS.js} +3 -3
  246. package/dist/mcp/register-tools.js +68 -67
  247. package/dist/mcp/server.js +70 -69
  248. package/dist/mcp/tools/complete-reminder.js +5 -5
  249. package/dist/mcp/tools/create-reminder.js +5 -5
  250. package/dist/mcp/tools/create-task.js +16 -15
  251. package/dist/mcp/tools/deactivate-behavior.js +6 -6
  252. package/dist/mcp/tools/list-reminders.js +5 -5
  253. package/dist/mcp/tools/list-tasks.js +16 -15
  254. package/dist/mcp/tools/send-message.js +15 -15
  255. package/dist/mcp/tools/update-task.js +15 -14
  256. package/dist/{mcp-http-config-BXX3RZPR.js → mcp-http-config-XIJR5P2Z.js} +4 -4
  257. package/dist/{memory-cards-KRTP5GFM.js → memory-cards-H4BJJ5OK.js} +3 -3
  258. package/dist/{memory-graph-extractor-G532PUHC.js → memory-graph-extractor-SDGM3GVR.js} +4 -4
  259. package/dist/{memory-poisoning-defense-HJM3FQA3.js → memory-poisoning-defense-UVU67DGJ.js} +3 -3
  260. package/dist/{memory-queue-FTNBWLS4.js → memory-queue-FNT5WHXP.js} +2 -2
  261. package/dist/{memory-queue-client-DHSHEIHQ.js → memory-queue-client-JZCFYTWQ.js} +5 -5
  262. package/dist/{memory-reflection-RANRFUQL.js → memory-reflection-GGB5K35L.js} +3 -3
  263. package/dist/{notifications-4P2PVEOT.js → notifications-P3XQZDTH.js} +12 -12
  264. package/dist/{orchestration-events-IYTASMSN.js → orchestration-events-25WEKUKH.js} +4 -4
  265. package/dist/{orchestration-phase-SGA7PJ5G.js → orchestration-phase-C26XVKLZ.js} +2 -2
  266. package/dist/{orchestrator-VKVHZ4MV.js → orchestrator-VIXTY4E4.js} +14 -14
  267. package/dist/{pipeline-router-E4L5BDXN.js → pipeline-router-S5PE5U6B.js} +4 -4
  268. package/dist/{plan-limits-5O5QG55H.js → plan-limits-DGIVM42H.js} +5 -5
  269. package/dist/{prediction-log-OMWHW7FL.js → prediction-log-DOEOHDHS.js} +1 -1
  270. package/dist/{project-boot-WMI6CWRX.js → project-boot-4ZL2W7DN.js} +12 -2
  271. package/dist/{projection-worker-54KRNQSO.js → projection-worker-GG2W5OM3.js} +3 -3
  272. package/dist/{push-notifications-E2XXEWJZ.js → push-notifications-AMHVR6DF.js} +2 -2
  273. package/dist/{reranker-4NTUFNYT.js → reranker-UCPLQZE2.js} +2 -2
  274. package/dist/{review-polling-BFRJDLUA.js → review-polling-P2MWEXLR.js} +13 -13
  275. package/dist/runtime/index.js +15 -15
  276. package/dist/{session-events-KCZCWGE4.js → session-events-5CD66R6U.js} +13 -13
  277. package/dist/{session-kill-telemetry-TMNIDYWY.js → session-kill-telemetry-7FBHTEDN.js} +4 -4
  278. package/dist/{session-scope-DRZBQ32Y.js → session-scope-VMIPAZU7.js} +12 -12
  279. package/dist/{setup-wizard-TQKGDAHO.js → setup-wizard-BNR47URR.js} +3 -3
  280. package/dist/{shard-manager-G6MHCO7X.js → shard-manager-VGA2TYHM.js} +2 -2
  281. package/dist/{skill-refinement-Z5SWD3AM.js → skill-refinement-NRG4WWRW.js} +3 -3
  282. package/dist/stack-release-PFZI22WC.js +521 -0
  283. package/dist/{stack-update-NO5MNARG.js → stack-update-JIWJGGLX.js} +3 -3
  284. package/dist/{steward-gate-7DWYS5AT.js → steward-gate-L7DJMF4C.js} +4 -4
  285. package/dist/{task-enforcement-2VL5J6JJ.js → task-enforcement-XQL77PZH.js} +52 -12
  286. package/dist/{task-scope-YHALISIB.js → task-scope-R3XKBIHL.js} +12 -12
  287. package/dist/{tasks-crud-JXZEBZFR.js → tasks-crud-DQOG2NPG.js} +12 -12
  288. package/dist/tasks-notify-4EQYG52H.js +37 -0
  289. package/dist/{tasks-review-PGPYJQF5.js → tasks-review-XPFJ4DSJ.js} +12 -12
  290. package/dist/{telemetry-upload-H7OJNBIF.js → telemetry-upload-OT5B5HUY.js} +7 -7
  291. package/dist/{token-budget-JJ7JQIA2.js → token-budget-D2LQKCAV.js} +3 -3
  292. package/dist/{tool-capability-index-WIV4K3FB.js → tool-capability-index-FAJ5ZHDF.js} +1 -1
  293. package/dist/{tool-telemetry-W4LFCHFT.js → tool-telemetry-QIF5BCLF.js} +1 -1
  294. package/dist/tui/App.js +26 -26
  295. package/dist/{tui-data-72U6N2DC.js → tui-data-UEV2QOR3.js} +108 -12
  296. package/dist/{whatsapp-config-W63RQ3AU.js → whatsapp-config-GOSELKTE.js} +7 -0
  297. package/dist/{worker-gate-SCSN6IHI.js → worker-gate-PRCKA23W.js} +2 -2
  298. package/dist/{workflow-engine-OICYBE4F.js → workflow-engine-7X6LLH3M.js} +2 -2
  299. package/dist/{worktree-JXN4RCWC.js → worktree-RICSCT2S.js} +5 -5
  300. package/package.json +1 -1
  301. package/release-notes.json +137 -297
  302. package/stack.release.json +4 -3
  303. package/dist/preflight-EAH2MI76.js +0 -287
  304. /package/dist/{chunk-H42LEGLB.js → chunk-AQBEG33D.js} +0 -0
  305. /package/dist/{chunk-AU5426YP.js → chunk-B7JGEDVE.js} +0 -0
  306. /package/dist/{chunk-YFDDTHNM.js → chunk-JXI4XUTV.js} +0 -0
  307. /package/dist/{chunk-SNYDRHV3.js → chunk-U3DUFHOT.js} +0 -0
  308. /package/dist/{chunk-N2XUH2HQ.js → chunk-VBPC7IC7.js} +0 -0
  309. /package/dist/{chunk-HTUJBTBM.js → chunk-VUS6WXQ3.js} +0 -0
  310. /package/dist/{chunk-NOLIN2YI.js → chunk-XAYRZHLV.js} +0 -0
  311. /package/dist/{core-memory-VOBGGB2Q.js → core-memory-4KAIKQRQ.js} +0 -0
  312. /package/dist/{message-queue-client-KAJN6TIJ.js → message-queue-client-S6W5VMJV.js} +0 -0
  313. /package/dist/{oauth-server-QEXRSXEP.js → oauth-server-2ESBZB7F.js} +0 -0
  314. /package/dist/{webhook-pipe-LY4XEDL7.js → webhook-pipe-ZRUVOG5H.js} +0 -0
  315. /package/dist/{wiki-acl-M3OR547L.js → wiki-acl-MFLSS6DE.js} +0 -0
  316. /package/dist/{wiki-client-MAFYBXCQ.js → wiki-client-GBPR45BQ.js} +0 -0
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  loadLicense
3
- } from "./chunk-D5C56WO3.js";
3
+ } from "./chunk-MOZ2YQ54.js";
4
4
 
5
5
  // src/lib/stack-update.ts
6
6
  import { execFileSync, spawnSync } from "child_process";
@@ -350,6 +350,7 @@ function hydrateEnv(raw, opts) {
350
350
  if (!/CHANGEME/.test(value)) continue;
351
351
  if (key === "EXE_LICENSE_KEY" && license) replacements[key] = license;
352
352
  else if (key === "MONITOR_AGENT_TOKEN" || key === "MONITOR_AGENT_KEY") continue;
353
+ else if (key === "CLOUDFLARE_TUNNEL_TOKEN") continue;
353
354
  else if (key === "EXE_GATEWAY_WS_RELAY_AUTH_TOKEN") replacements[key] = randomHexSecret(24);
354
355
  else if (key.endsWith("_PASSWORD")) replacements[key] = randomSecret(24);
355
356
  else if (key.endsWith("_TOKEN")) replacements[key] = randomHexSecret(32);
@@ -414,6 +415,11 @@ function bootstrapStackHost(options) {
414
415
  }
415
416
  copyTemplateIfMissing("deploy/compose/docker-compose.yml", options.composeFile, createdFiles);
416
417
  copyTemplateIfMissing("deploy/compose/.env.customer.example", options.envFile, createdFiles);
418
+ copyTemplateIfMissing(
419
+ "deploy/compose/init-db.sql",
420
+ path.join(path.dirname(options.composeFile), "init-db.sql"),
421
+ createdFiles
422
+ );
417
423
  copyTemplateIfMissing(
418
424
  "deploy/compose/clickhouse-config.xml",
419
425
  path.join(path.dirname(options.envFile), "clickhouse-config.xml"),
@@ -422,6 +428,11 @@ function bootstrapStackHost(options) {
422
428
  const brandingDest = path.join(path.dirname(options.envFile), "branding.json");
423
429
  copyTemplateIfMissing("deploy/compose/gateway.json", path.join(path.dirname(options.envFile), "gateway.json"), createdFiles);
424
430
  if (!existsSync(brandingDest)) writeFileSync(brandingDest, JSON.stringify({ brandName: "Hygo", productName: "Hygo OS" }, null, 2) + "\n", { mode: 384 });
431
+ copyTemplateIfMissing(
432
+ "deploy/compose/cloudflared/config.yml.example",
433
+ path.join(path.dirname(options.composeFile), "cloudflared", "config.yml.example"),
434
+ createdFiles
435
+ );
425
436
  let envHadPlaceholders = false;
426
437
  let envRemainingPlaceholders = [];
427
438
  if (existsSync(options.envFile)) {
@@ -458,7 +469,7 @@ function assertHostReadyForApply(report) {
458
469
  if (!report.composeFileExists) blockers.push("docker-compose.yml is missing and could not be created.");
459
470
  if (!report.envFileExists) blockers.push(".env is missing and could not be created.");
460
471
  if (!report.licensePresent) blockers.push("Exe OS license key is missing. Run `exe-os setup`, `exe-os --activate <key>`, or pass --license-key.");
461
- const hardPlaceholders = report.envRemainingPlaceholders.filter((p) => !/WHATSAPP|API_ROUTER|MONITOR_AGENT/.test(p));
472
+ const hardPlaceholders = report.envRemainingPlaceholders.filter((p) => !/WHATSAPP|API_ROUTER|MONITOR_AGENT|CLOUDFLARE_TUNNEL_TOKEN/.test(p));
462
473
  if (hardPlaceholders.length > 0) blockers.push(`Required .env placeholders remain: ${hardPlaceholders.join(", ")}`);
463
474
  if (blockers.length > 0) throw new Error(`Stack host is not ready:
464
475
  - ${blockers.join("\n- ")}`);
@@ -565,8 +576,10 @@ async function runStackUpdate(options) {
565
576
  warnLegacyDaemonVolume();
566
577
  if (!options.dryRun) {
567
578
  try {
568
- const { runPreflight } = await import("./preflight-EAH2MI76.js");
569
- const preflightReport = runPreflight({
579
+ if (!options.preflight) {
580
+ throw new Error("preflight hook not provided");
581
+ }
582
+ const preflightReport = options.preflight({
570
583
  composeFile: options.composeFile,
571
584
  envFile: options.envFile
572
585
  });
@@ -620,8 +633,10 @@ async function runStackUpdate(options) {
620
633
  }
621
634
  await postDeployAudit(options, "started", plan.targetVersion, previousVersion);
622
635
  try {
623
- const { preDeployBackup } = await import("./bin/vps-backup.js");
624
- preDeployBackup(plan.targetVersion);
636
+ if (!options.preDeployBackup) {
637
+ throw new Error("preDeployBackup hook not provided");
638
+ }
639
+ options.preDeployBackup(plan.targetVersion);
625
640
  } catch {
626
641
  }
627
642
  const stackDir = path.dirname(options.envFile);
@@ -755,8 +770,10 @@ async function runStackUpdate(options) {
755
770
  // ERP WebSocket (Socket.io)
756
771
  "exe-erp-queue",
757
772
  // ERP background workers (RQ)
758
- "exe-erp-scheduler"
773
+ "exe-erp-scheduler",
759
774
  // ERP scheduled tasks
775
+ "cloudflared"
776
+ // tunnel — restarted last so services are healthy before it connects
760
777
  ];
761
778
  const preSnapshot = spawnSync("docker", ["ps", "--format", "json"], { encoding: "utf8", timeout: 1e4 });
762
779
  const preContainerCount = preSnapshot.stdout?.split("\n").filter(Boolean).length ?? 0;
@@ -809,9 +826,11 @@ async function runStackUpdate(options) {
809
826
  }
810
827
  await verifyReleaseHealth(plan.release, options.healthRetries ?? 12, options.healthDelayMs ?? 5e3);
811
828
  try {
812
- const { runHealthGate, logResult } = await import("./bin/vps-health-gate.js");
813
- const gateResult = await runHealthGate();
814
- logResult(gateResult);
829
+ if (!options.healthGate) {
830
+ throw new Error("healthGate hook not provided");
831
+ }
832
+ const gateResult = await options.healthGate();
833
+ options.logHealthGateResult?.(gateResult);
815
834
  if (!gateResult.passed) {
816
835
  const failed = gateResult.results.filter((r) => r.status === "fail").map((r) => r.check);
817
836
  throw new Error(`Health gate failed: ${failed.join(", ")}`);
@@ -825,8 +844,10 @@ async function runStackUpdate(options) {
825
844
  }
826
845
  assertVolumesIntact();
827
846
  try {
828
- const { runVerifyStack } = await import("./bin/verify-stack.js");
829
- const verifyReport = await runVerifyStack({ composeFile: options.composeFile, envFile: options.envFile });
847
+ if (!options.verifyStack) {
848
+ throw new Error("verifyStack hook not provided");
849
+ }
850
+ const verifyReport = await options.verifyStack({ composeFile: options.composeFile, envFile: options.envFile });
830
851
  for (const r of verifyReport.results) {
831
852
  if (r.status === "fail") console.warn(`[verify-stack] FAIL: ${r.check}: ${r.message}`);
832
853
  }
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  redactSecrets
3
- } from "./chunk-F7LU65PQ.js";
3
+ } from "./chunk-Y25OJWOQ.js";
4
4
 
5
5
  // src/lib/memory-write-governor.ts
6
6
  import { createHash } from "crypto";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  sessionScopeFilter
3
- } from "./chunk-HNLPLLE6.js";
3
+ } from "./chunk-F7JLZXHC.js";
4
4
 
5
5
  // src/lib/git-task-sweep.ts
6
6
  import { execSync } from "child_process";
@@ -178,7 +178,7 @@ async function sweepTasks(projectName, options = {}) {
178
178
  }
179
179
  if (!dryRun) {
180
180
  try {
181
- const { updateTaskStatus } = await import("./tasks-crud-JXZEBZFR.js");
181
+ const { updateTaskStatus } = await import("./tasks-crud-DQOG2NPG.js");
182
182
  await updateTaskStatus({
183
183
  taskId: task.id,
184
184
  status: "needs_review",
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getGlobalProceduresBlock
3
- } from "./chunk-GN5VHPPR.js";
3
+ } from "./chunk-NVZR7T4E.js";
4
4
 
5
5
  // src/lib/employee-templates.ts
6
6
  var BASE_OPERATING_PROCEDURES = `
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  loadEmployees
3
- } from "./chunk-2H55BIV2.js";
3
+ } from "./chunk-CEJO7244.js";
4
4
 
5
5
  // src/lib/agent-symlinks.ts
6
6
  import os from "os";
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  deactivateBehavior
3
- } from "./chunk-UAFUGPKO.js";
3
+ } from "./chunk-ONAQAL3O.js";
4
4
  import {
5
5
  getActiveAgent
6
- } from "./chunk-RA2RO27E.js";
6
+ } from "./chunk-MCESA5UW.js";
7
7
  import {
8
8
  canCoordinate,
9
9
  getClient
10
- } from "./chunk-2H55BIV2.js";
10
+ } from "./chunk-CEJO7244.js";
11
11
 
12
12
  // src/mcp/tools/deactivate-behavior.ts
13
13
  import { z } from "zod";
@@ -24,7 +24,7 @@ function registerDeactivateBehavior(server) {
24
24
  async ({ behavior_id }) => {
25
25
  const caller = getActiveAgent();
26
26
  try {
27
- const { StewardGate } = await import("./steward-gate-7DWYS5AT.js");
27
+ const { StewardGate } = await import("./steward-gate-L7DJMF4C.js");
28
28
  const steward = new StewardGate();
29
29
  const gateDecision = await steward.checkAuthority(caller.agentId || "unknown", "deactivate_behavior", behavior_id);
30
30
  if (!gateDecision.allowed) {
@@ -1,6 +1,6 @@
1
1
  // src/lib/keychain.ts
2
2
  import { readFile, writeFile, unlink, mkdir, chmod, rename, copyFile } from "fs/promises";
3
- import { existsSync, statSync, writeFileSync, readFileSync } from "fs";
3
+ import { existsSync, statSync, writeFileSync, readFileSync, readdirSync } from "fs";
4
4
  import { execSync, execFileSync, spawnSync } from "child_process";
5
5
  import crypto from "crypto";
6
6
  import path from "path";
@@ -17,7 +17,35 @@ function warnPlaintextFallback() {
17
17
  var LEGACY_SERVICE = "exe-mem";
18
18
  var ACCOUNT = "master-key";
19
19
  function getKeyDir() {
20
- return process.env.EXE_OS_DIR ?? process.env.EXE_MEM_DIR ?? path.join(os.homedir(), ".exe-os");
20
+ if (process.env.EXE_OS_DIR) return process.env.EXE_OS_DIR;
21
+ if (process.env.EXE_MEM_DIR) return process.env.EXE_MEM_DIR;
22
+ const homeDir = os.homedir();
23
+ const defaultDir = path.join(homeDir, ".exe-os");
24
+ if (process.getuid?.() === 0) {
25
+ const sudoUser = process.env.SUDO_USER ?? "";
26
+ if (sudoUser) {
27
+ try {
28
+ const sudoHome = execSync(`getent passwd ${sudoUser} | cut -d: -f6`, { encoding: "utf8", timeout: 3e3 }).trim();
29
+ const sudoDir = path.join(sudoHome, ".exe-os");
30
+ if (existsSync(sudoDir)) return sudoDir;
31
+ } catch {
32
+ }
33
+ }
34
+ try {
35
+ if (existsSync("/home")) {
36
+ const candidates = [];
37
+ for (const user of readdirSync("/home")) {
38
+ const candidate = path.join("/home", user, ".exe-os");
39
+ if (existsSync(path.join(candidate, "master.key")) || existsSync(path.join(candidate, "config.json"))) {
40
+ candidates.push(candidate);
41
+ }
42
+ }
43
+ if (candidates.length === 1) return candidates[0];
44
+ }
45
+ } catch {
46
+ }
47
+ }
48
+ return defaultDir;
21
49
  }
22
50
  function getKeyPath() {
23
51
  return path.join(getKeyDir(), "master.key");
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  getCurrentSessionScope,
3
3
  strictSessionScopeFilter
4
- } from "./chunk-HNLPLLE6.js";
4
+ } from "./chunk-F7JLZXHC.js";
5
5
  import {
6
6
  getProjectName
7
7
  } from "./chunk-OPU3NYOO.js";
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  fastDbInit
3
- } from "./chunk-H42LEGLB.js";
3
+ } from "./chunk-AQBEG33D.js";
4
4
  import {
5
5
  sessionScopeFilter
6
- } from "./chunk-HNLPLLE6.js";
6
+ } from "./chunk-F7JLZXHC.js";
7
7
  import {
8
8
  formatStatusAll,
9
9
  formatStatusDeep,
@@ -14,7 +14,7 @@ import {
14
14
  getClient,
15
15
  isCoordinatorRole,
16
16
  loadEmployees
17
- } from "./chunk-2H55BIV2.js";
17
+ } from "./chunk-CEJO7244.js";
18
18
  import {
19
19
  isMainModule
20
20
  } from "./chunk-6Y4B3QF6.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  EXE_AI_DIR
3
- } from "./chunk-TRZ5KA2R.js";
3
+ } from "./chunk-VXIMSRTO.js";
4
4
 
5
5
  // src/lib/mcp-transport-health.ts
6
6
  import { appendFileSync, closeSync, existsSync, mkdirSync, openSync, readFileSync, readSync, statSync, writeFileSync } from "fs";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  loadConfigSync
3
- } from "./chunk-TRZ5KA2R.js";
3
+ } from "./chunk-VXIMSRTO.js";
4
4
 
5
5
  // src/lib/push-notifications.ts
6
6
  import { execSync } from "child_process";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  EXE_AI_DIR
3
- } from "./chunk-TRZ5KA2R.js";
3
+ } from "./chunk-VXIMSRTO.js";
4
4
 
5
5
  // src/lib/worker-gate.ts
6
6
  import { readdirSync, writeFileSync, unlinkSync, mkdirSync, existsSync, readFileSync } from "fs";
@@ -111,7 +111,7 @@ function releaseBackfillLock() {
111
111
  }
112
112
  async function getTaskAwareCapacity() {
113
113
  const { getClient } = await import("./lib/database.js");
114
- const { sessionScopeFilter } = await import("./task-scope-YHALISIB.js");
114
+ const { sessionScopeFilter } = await import("./task-scope-R3XKBIHL.js");
115
115
  const client = getClient();
116
116
  const scope = sessionScopeFilter();
117
117
  const result = await client.execute({
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  processCRMEvent
3
- } from "./chunk-AU5426YP.js";
3
+ } from "./chunk-B7JGEDVE.js";
4
4
 
5
5
  // src/gateway/adapters/crm-webhook.ts
6
6
  function parseTwentyWebhook(payload) {
@@ -3,30 +3,30 @@ import {
3
3
  } from "./chunk-MLXJ5EZG.js";
4
4
  import {
5
5
  createTask
6
- } from "./chunk-5R75ODPS.js";
6
+ } from "./chunk-NBY6R37W.js";
7
7
  import {
8
8
  getActiveAgent
9
- } from "./chunk-RA2RO27E.js";
9
+ } from "./chunk-MCESA5UW.js";
10
10
  import {
11
11
  ensureEmployee,
12
12
  logTaskDispatch,
13
13
  resolveExeSession
14
- } from "./chunk-HNLPLLE6.js";
14
+ } from "./chunk-F7JLZXHC.js";
15
15
  import {
16
16
  recordOrchestrationEventBestEffort
17
- } from "./chunk-5NJ4A4ZA.js";
17
+ } from "./chunk-HCBMPZDT.js";
18
18
  import {
19
19
  getAgentRuntime
20
- } from "./chunk-6OJJF4WP.js";
20
+ } from "./chunk-XJUUWHVN.js";
21
21
  import {
22
22
  getLicenseSync
23
- } from "./chunk-IQSCZDBQ.js";
23
+ } from "./chunk-I5PIBL56.js";
24
24
  import {
25
25
  getAgentContext
26
26
  } from "./chunk-GJV3WDWM.js";
27
27
  import {
28
28
  isCoordinatorName
29
- } from "./chunk-2H55BIV2.js";
29
+ } from "./chunk-CEJO7244.js";
30
30
 
31
31
  // src/mcp/tools/create-task.ts
32
32
  import { z } from "zod";
@@ -275,7 +275,7 @@ function registerCreateTask(server) {
275
275
  session_scope: sessionScope,
276
276
  created_at: (/* @__PURE__ */ new Date()).toISOString()
277
277
  }), "utf-8");
278
- const { recordOrchestrationEventBestEffort: recordOE } = await import("./orchestration-events-IYTASMSN.js");
278
+ const { recordOrchestrationEventBestEffort: recordOE } = await import("./orchestration-events-25WEKUKH.js");
279
279
  recordOE({
280
280
  eventType: "signal.created",
281
281
  source: "create-task.mcp",
@@ -307,7 +307,7 @@ function registerCreateTask(server) {
307
307
  let projectConflictOpts = {};
308
308
  try {
309
309
  const { getClient } = await import("./lib/database.js");
310
- const { sessionScopeFilter } = await import("./task-scope-YHALISIB.js");
310
+ const { sessionScopeFilter } = await import("./task-scope-R3XKBIHL.js");
311
311
  const client = getClient();
312
312
  const scope = sessionScopeFilter(task.sessionScope || callerRoot || exeSession || null);
313
313
  const existing = await client.execute({
@@ -9,10 +9,10 @@ import {
9
9
  getCoordinatorEmployee,
10
10
  getEmployee,
11
11
  loadEmployeesSync
12
- } from "./chunk-2H55BIV2.js";
12
+ } from "./chunk-CEJO7244.js";
13
13
  import {
14
14
  EXE_AI_DIR
15
- } from "./chunk-TRZ5KA2R.js";
15
+ } from "./chunk-VXIMSRTO.js";
16
16
 
17
17
  // src/lib/active-agent.ts
18
18
  import { readFileSync, writeFileSync, mkdirSync, unlinkSync, readdirSync } from "fs";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  EXE_AI_DIR
3
- } from "./chunk-TRZ5KA2R.js";
3
+ } from "./chunk-VXIMSRTO.js";
4
4
 
5
5
  // src/lib/memory-queue.ts
6
6
  import {
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  EXE_AI_DIR
3
- } from "./chunk-TRZ5KA2R.js";
3
+ } from "./chunk-VXIMSRTO.js";
4
4
 
5
5
  // src/lib/license.ts
6
6
  import { readFileSync, writeFileSync, existsSync, mkdirSync, statSync } from "fs";
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  extractSemanticText
3
- } from "./chunk-SUNYJ6YE.js";
3
+ } from "./chunk-VT2B5BHM.js";
4
4
  import {
5
5
  detectError
6
6
  } from "./chunk-AHMUF6RO.js";
7
7
  import {
8
8
  redactSecrets
9
- } from "./chunk-F7LU65PQ.js";
9
+ } from "./chunk-Y25OJWOQ.js";
10
10
  import {
11
11
  getProjectName
12
12
  } from "./chunk-OPU3NYOO.js";