@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
@@ -74,6 +74,18 @@ MONITOR_AGENT_LISTEN=:45876
74
74
  # --- AskExe central monitoring hub ---
75
75
  # Not included on customer VPSs. Hygo/customer deployments run exe-monitor-agent above, never the hub.
76
76
 
77
+ # --- Cloudflare Tunnel ---
78
+ # Token-based tunnel (recommended). Get your token:
79
+ # 1. dash.cloudflare.com > Zero Trust > Networks > Tunnels > Create tunnel
80
+ # 2. Choose "Cloudflared" connector, name your tunnel (e.g. "hygo-vps")
81
+ # 3. Copy the token shown during setup
82
+ # Then configure public hostnames in the dashboard (no config.yml needed):
83
+ # crm.<domain> → http://exe-crm:3000
84
+ # wiki.<domain> → http://exe-wiki:3001
85
+ # gateway.<domain> → http://exe-gateway:3100
86
+ # SET_MANUALLY
87
+ CLOUDFLARE_TUNNEL_TOKEN=CHANGEME_CLOUDFLARE_TUNNEL_TOKEN
88
+
77
89
  # --- License ---
78
90
  # injected by deploy_client
79
91
  EXE_LICENSE_KEY=CHANGEME_EXE_LICENSE_KEY
@@ -71,7 +71,7 @@ ERROR_REPORTING_ENABLED=true
71
71
  MONITOR_ERROR_URL=http://exe-monitor-hub:8090/api/exe-monitor/errors
72
72
 
73
73
  # --- ERP (optional — Exe ERP, Frappe/ERPNext fork) ---
74
- ERP_IMAGE_TAG=update.askexe.com/askexe/exe-erp:v0.1.0
74
+ ERP_IMAGE_TAG=update.askexe.com/askexe/exe-erp:v0.2.0-final3
75
75
  ERP_ADMIN_PASSWORD=CHANGEME_ERP_ADMIN_PASSWORD
76
76
  ERP_SITE_NAME=erp.askexe.com
77
77
  ERP_API_PORT=8069
@@ -100,6 +100,18 @@ MONITOR_DISABLE_PASSWORD_AUTH=false
100
100
  MONITOR_USER_CREATION=true
101
101
  MONITOR_SHARE_ALL_SYSTEMS=false
102
102
 
103
+ # --- Cloudflare Tunnel ---
104
+ # Token-based tunnel (recommended). Get your token:
105
+ # 1. dash.cloudflare.com > Zero Trust > Networks > Tunnels > Create tunnel
106
+ # 2. Choose "Cloudflared" connector, name your tunnel (e.g. "hygo-vps")
107
+ # 3. Copy the token shown during setup
108
+ # Then configure public hostnames in the dashboard (no config.yml needed):
109
+ # crm.<domain> → http://exe-crm:3000
110
+ # wiki.<domain> → http://exe-wiki:3001
111
+ # gateway.<domain> → http://exe-gateway:3100
112
+ # SET_MANUALLY
113
+ CLOUDFLARE_TUNNEL_TOKEN=CHANGEME_CLOUDFLARE_TUNNEL_TOKEN
114
+
103
115
  # --- License ---
104
116
  # injected by deploy_client
105
117
  EXE_LICENSE_KEY=CHANGEME_EXE_LICENSE_KEY
@@ -1,7 +1,26 @@
1
- # Cloudflare Tunnel config — routes *.askexe.com to local services.
2
- # Copy to config.yml and replace TUNNEL_ID with your tunnel UUID.
3
- # Create tunnel: cloudflared tunnel create <name>
4
- # Then copy credentials JSON to this directory.
1
+ # Cloudflare Tunnel config — advanced (config file) mode.
2
+ #
3
+ # RECOMMENDED: Use the token approach instead.
4
+ # 1. Create a tunnel at dash.cloudflare.com > Zero Trust > Networks > Tunnels
5
+ # 2. Copy the tunnel token and set CLOUDFLARE_TUNNEL_TOKEN in .env
6
+ # 3. Configure public hostnames in the Cloudflare dashboard:
7
+ # crm.<domain> → http://exe-crm:3000
8
+ # wiki.<domain> → http://exe-wiki:3001
9
+ # gateway.<domain> → http://exe-gateway:3100
10
+ # erp.<domain> → http://exe-erp:8000
11
+ # monitor.<domain> → http://exe-monitor-hub:8090
12
+ # auth.<domain> → http://gotrue:9999
13
+ # api.<domain> → http://exe-os:8765
14
+ # No config.yml or credentials file needed — the token embeds everything.
15
+ #
16
+ # ADVANCED (config file mode): only needed if you want to manage routes locally
17
+ # instead of via the Cloudflare dashboard. Leave CLOUDFLARE_TUNNEL_TOKEN empty
18
+ # and edit docker-compose.yml cloudflared command to use:
19
+ # tunnel --config /etc/cloudflared/config.yml run
20
+ # Then copy this file to config.yml and fill in TUNNEL_ID + credentials.
21
+ #
22
+ # Get your tunnel UUID: cloudflared tunnel list
23
+ # Get credentials JSON: cloudflared tunnel token --cred-file=<path> <name>
5
24
 
6
25
  tunnel: CHANGEME_TUNNEL_ID
7
26
  credentials-file: /etc/cloudflared/CHANGEME_TUNNEL_ID.json
@@ -503,15 +503,35 @@ services:
503
503
 
504
504
  # ------------------------------------------------------------------
505
505
  # Infrastructure — Cloudflare Tunnel (replaces nginx + SSL certs)
506
+ #
507
+ # Token approach (recommended): create a tunnel in the Cloudflare dashboard,
508
+ # copy the tunnel token, set CLOUDFLARE_TUNNEL_TOKEN in .env.
509
+ # Route CRM/wiki/gateway hostnames in the Cloudflare dashboard under
510
+ # the tunnel's Public Hostnames tab — no config.yml needed.
511
+ #
512
+ # Advanced (config file): set CLOUDFLARE_TUNNEL_TOKEN= (empty) and
513
+ # populate cloudflared/config.yml with tunnel ID + credentials.
514
+ # See cloudflared/config.yml.example for the route mappings template.
506
515
  # ------------------------------------------------------------------
507
516
 
508
517
  cloudflared:
509
518
  image: cloudflare/cloudflared:latest
510
519
  container_name: cloudflared
511
520
  restart: unless-stopped
512
- command: tunnel --config /etc/cloudflared/config.yml run
513
- volumes:
514
- - ${CLOUDFLARED_CONFIG_DIR:-./cloudflared}:/etc/cloudflared:ro
521
+ # Token mode: `tunnel run --token <TOKEN>` — no local credentials file needed.
522
+ # The token embeds the tunnel ID + credentials; routes are managed in the CF dashboard.
523
+ command: >
524
+ tunnel run
525
+ --token ${CLOUDFLARE_TUNNEL_TOKEN}
526
+ depends_on:
527
+ exe-crm:
528
+ condition: service_healthy
529
+ exe-gateway:
530
+ condition: service_healthy
531
+ exe-wiki:
532
+ condition: service_healthy
533
+ environment:
534
+ TUNNEL_TOKEN: ${CLOUDFLARE_TUNNEL_TOKEN}
515
535
  networks:
516
536
  backend:
517
537
  ipv4_address: 10.42.0.31
@@ -535,7 +555,7 @@ services:
535
555
  # 4 services: gunicorn API, websocket, RQ worker, scheduler.
536
556
 
537
557
  exe-erp:
538
- image: ${ERP_IMAGE_TAG:-update.askexe.com/askexe/exe-erp:v0.1.0}
558
+ image: ${ERP_IMAGE_TAG:-update.askexe.com/askexe/exe-erp:v0.2.0-final3}
539
559
  container_name: exe-erp
540
560
  restart: unless-stopped
541
561
  entrypoint: ["/usr/local/bin/entrypoint.sh"]
@@ -605,7 +625,7 @@ services:
605
625
  options: { max-size: "10m", max-file: "3" }
606
626
 
607
627
  exe-erp-websocket:
608
- image: ${ERP_IMAGE_TAG:-update.askexe.com/askexe/exe-erp:v0.1.0}
628
+ image: ${ERP_IMAGE_TAG:-update.askexe.com/askexe/exe-erp:v0.2.0-final3}
609
629
  container_name: exe-erp-websocket
610
630
  restart: unless-stopped
611
631
  entrypoint: []
@@ -635,7 +655,7 @@ services:
635
655
  options: { max-size: "10m", max-file: "3" }
636
656
 
637
657
  exe-erp-queue:
638
- image: ${ERP_IMAGE_TAG:-update.askexe.com/askexe/exe-erp:v0.1.0}
658
+ image: ${ERP_IMAGE_TAG:-update.askexe.com/askexe/exe-erp:v0.2.0-final3}
639
659
  container_name: exe-erp-queue
640
660
  restart: unless-stopped
641
661
  entrypoint: []
@@ -670,7 +690,7 @@ services:
670
690
  options: { max-size: "10m", max-file: "3" }
671
691
 
672
692
  exe-erp-scheduler:
673
- image: ${ERP_IMAGE_TAG:-update.askexe.com/askexe/exe-erp:v0.1.0}
693
+ image: ${ERP_IMAGE_TAG:-update.askexe.com/askexe/exe-erp:v0.2.0-final3}
674
694
  container_name: exe-erp-scheduler
675
695
  restart: unless-stopped
676
696
  entrypoint: []
@@ -69,7 +69,7 @@ export function generateEnv(options: GenerateEnvOptions): string {
69
69
  "",
70
70
  "# --- CRM ---",
71
71
  `CRM_IMAGE_TAG=${CRM_IMAGE_TAG}`,
72
- `CRM_SERVER_URL=https://${normalizedDomain}`,
72
+ `CRM_SERVER_URL=https://crm.${normalizedDomain}`,
73
73
  `CRM_APP_SECRET=${randomSecret(RANDOM_SECRET_48)}`,
74
74
  `EXE_CRM_ADMIN_TOKEN=${randomSecret(RANDOM_SECRET_48)}`,
75
75
  `CRM_HOST_PORT=${CRM_HOST_PORT}`,
@@ -109,6 +109,20 @@ export function generateEnv(options: GenerateEnvOptions): string {
109
109
  "# ANTHROPIC_API_KEY=",
110
110
  `GATEWAY_HTTP_HOST_PORT=${GATEWAY_HTTP_HOST_PORT}`,
111
111
  `GATEWAY_WS_HOST_PORT=${GATEWAY_WS_HOST_PORT}`,
112
+ "# GoTrue SSO — enable for unified auth across all services",
113
+ "GATEWAY_GOTRUE_URL=http://gotrue:9999",
114
+ "# Error forwarding to exe-monitor-hub (strongly recommended for production)",
115
+ "ERROR_REPORTING_ENABLED=true",
116
+ "MONITOR_ERROR_URL=http://exe-monitor-hub:8090/api/exe-monitor/errors",
117
+ "",
118
+ "# --- ERP (optional — Exe ERP, Frappe/ERPNext fork) ---",
119
+ "ERP_IMAGE_TAG=update.askexe.com/askexe/exe-erp:v0.2.0-final3",
120
+ `ERP_ADMIN_PASSWORD=${randomSecret(RANDOM_SECRET_32)}`,
121
+ `ERP_SITE_NAME=erp.${normalizedDomain}`,
122
+ "ERP_API_PORT=8069",
123
+ "ERP_WS_PORT=9069",
124
+ "# ERP_SENTRY_DSN=",
125
+ "# MONITOR_API_KEY= # shared with gateway error forwarding",
112
126
  "",
113
127
  "# --- Monitoring ---",
114
128
  `MONITOR_HUB_IMAGE_TAG=${MONITOR_HUB_IMAGE_TAG}`,
@@ -120,6 +134,14 @@ export function generateEnv(options: GenerateEnvOptions): string {
120
134
  `MONITOR_AGENT_LISTEN=${DEFAULT_MONITOR_AGENT_LISTEN}`,
121
135
  "MONITOR_HUB_PORT=8090",
122
136
  "",
137
+ "# --- Cloudflare Tunnel ---",
138
+ "# Token-based tunnel (recommended). Get your token:",
139
+ "# 1. dash.cloudflare.com > Zero Trust > Networks > Tunnels > Create tunnel",
140
+ "# 2. Choose \"Cloudflared\" connector, name your tunnel",
141
+ "# 3. Copy the token shown during setup",
142
+ MANUAL_VALUE_COMMENT,
143
+ "CLOUDFLARE_TUNNEL_TOKEN=",
144
+ "",
123
145
  "# --- License ---",
124
146
  LICENSE_KEY_COMMENT,
125
147
  `EXE_LICENSE_KEY=${options.licenseKey ?? EXAMPLE_LICENSE_KEY}`,
@@ -194,6 +216,20 @@ export function generateExampleEnv(): string {
194
216
  "# ANTHROPIC_API_KEY=CHANGEME_ANTHROPIC_API_KEY",
195
217
  `GATEWAY_HTTP_HOST_PORT=${GATEWAY_HTTP_HOST_PORT}`,
196
218
  `GATEWAY_WS_HOST_PORT=${GATEWAY_WS_HOST_PORT}`,
219
+ "# GoTrue SSO — enable for unified auth across all services",
220
+ "GATEWAY_GOTRUE_URL=http://gotrue:9999",
221
+ "# Error forwarding to exe-monitor-hub (strongly recommended for production)",
222
+ "ERROR_REPORTING_ENABLED=true",
223
+ "MONITOR_ERROR_URL=http://exe-monitor-hub:8090/api/exe-monitor/errors",
224
+ "",
225
+ "# --- ERP (optional — Exe ERP, Frappe/ERPNext fork) ---",
226
+ "ERP_IMAGE_TAG=update.askexe.com/askexe/exe-erp:v0.2.0-final3",
227
+ "ERP_ADMIN_PASSWORD=CHANGEME_ERP_ADMIN_PASSWORD",
228
+ "ERP_SITE_NAME=erp.askexe.com",
229
+ "ERP_API_PORT=8069",
230
+ "ERP_WS_PORT=9069",
231
+ "# ERP_SENTRY_DSN=",
232
+ "# MONITOR_API_KEY= # shared with gateway error forwarding",
197
233
  "",
198
234
  "# --- Monitoring agent (standard for managed customer VPSs) ---",
199
235
  `MONITOR_AGENT_IMAGE_TAG=${MONITOR_AGENT_IMAGE_TAG}`,
@@ -216,6 +252,18 @@ export function generateExampleEnv(): string {
216
252
  "MONITOR_USER_CREATION=true",
217
253
  "MONITOR_SHARE_ALL_SYSTEMS=false",
218
254
  "",
255
+ "# --- Cloudflare Tunnel ---",
256
+ "# Token-based tunnel (recommended). Get your token:",
257
+ "# 1. dash.cloudflare.com > Zero Trust > Networks > Tunnels > Create tunnel",
258
+ "# 2. Choose \"Cloudflared\" connector, name your tunnel (e.g. \"hygo-vps\")",
259
+ "# 3. Copy the token shown during setup",
260
+ "# Then configure public hostnames in the dashboard (no config.yml needed):",
261
+ "# crm.<domain> → http://exe-crm:3000",
262
+ "# wiki.<domain> → http://exe-wiki:3001",
263
+ "# gateway.<domain> → http://exe-gateway:3100",
264
+ MANUAL_VALUE_COMMENT,
265
+ "CLOUDFLARE_TUNNEL_TOKEN=CHANGEME_CLOUDFLARE_TUNNEL_TOKEN",
266
+ "",
219
267
  "# --- License ---",
220
268
  LICENSE_KEY_COMMENT,
221
269
  `EXE_LICENSE_KEY=${EXAMPLE_LICENSE_KEY}`,
@@ -7,9 +7,17 @@ SELECT 'CREATE DATABASE exe_erp OWNER ' || current_user
7
7
  WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = 'exe_erp')\gexec
8
8
 
9
9
  -- Ensure exe user exists with superuser
10
- DO $$ BEGIN
10
+ DO $$ DECLARE _pw text; BEGIN
11
+ -- current_setting() is not valid in CREATE ROLE DDL syntax; use EXECUTE
12
+ -- to build the statement dynamically. Falls back to no-password if the
13
+ -- GUC is not set (docker-entrypoint already sets POSTGRES_PASSWORD). (bug 2dc16abe)
11
14
  IF NOT EXISTS (SELECT FROM pg_catalog.pg_roles WHERE rolname = 'exe') THEN
12
- CREATE ROLE exe WITH LOGIN SUPERUSER PASSWORD current_setting('app.postgres_password', true);
15
+ _pw := current_setting('app.postgres_password', true);
16
+ IF _pw IS NOT NULL AND _pw <> '' THEN
17
+ EXECUTE format('CREATE ROLE exe WITH LOGIN SUPERUSER PASSWORD %L', _pw);
18
+ ELSE
19
+ EXECUTE 'CREATE ROLE exe WITH LOGIN SUPERUSER';
20
+ END IF;
13
21
  ELSE
14
22
  ALTER ROLE exe SUPERUSER;
15
23
  END IF;
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
- "latest": "0.9.14",
3
+ "latest": "0.9.16",
4
4
  "stacks": {
5
5
  "0.9.0": {
6
6
  "version": "0.9.0",
@@ -11,7 +11,7 @@
11
11
  "id": "whatsapp_relink_required",
12
12
  "title": "WhatsApp QR re-link required for Baileys v7",
13
13
  "description": "exe-gateway uses Baileys v7. Existing WhatsApp 6.x linked-device auth state must be backed up and re-linked once with a new QR code.",
14
- "requiredAction": "Open https://<gateway-domain>/pair/default?token=<admin-token> and scan from WhatsApp \u2192 Linked Devices after the update.",
14
+ "requiredAction": "Open https://<gateway-domain>/pair/default?token=<admin-token> and scan from WhatsApp Linked Devices after the update.",
15
15
  "expectedDowntimeMinutes": "2-5",
16
16
  "requiresConfirmation": true
17
17
  }
@@ -65,7 +65,7 @@
65
65
  "id": "whatsapp_relink_required",
66
66
  "title": "WhatsApp QR re-link required for Baileys v7",
67
67
  "description": "exe-gateway uses Baileys v7. Existing WhatsApp 6.x linked-device auth state must be backed up and re-linked once with a new QR code.",
68
- "requiredAction": "Open https://<gateway-domain>/pair/default?token=<admin-token> and scan from WhatsApp \u2192 Linked Devices after the update.",
68
+ "requiredAction": "Open https://<gateway-domain>/pair/default?token=<admin-token> and scan from WhatsApp Linked Devices after the update.",
69
69
  "expectedDowntimeMinutes": "2-5",
70
70
  "requiresConfirmation": true
71
71
  }
@@ -119,7 +119,7 @@
119
119
  "id": "whatsapp_relink_required",
120
120
  "title": "WhatsApp QR re-link required for Baileys v7",
121
121
  "description": "exe-gateway uses Baileys v7. Existing WhatsApp 6.x linked-device auth state must be backed up and re-linked once with a new QR code.",
122
- "requiredAction": "Open https://<gateway-domain>/pair/default?token=<admin-token> and scan from WhatsApp \u2192 Linked Devices after the update.",
122
+ "requiredAction": "Open https://<gateway-domain>/pair/default?token=<admin-token> and scan from WhatsApp Linked Devices after the update.",
123
123
  "expectedDowntimeMinutes": "2-5",
124
124
  "requiresConfirmation": true
125
125
  }
@@ -173,7 +173,7 @@
173
173
  "id": "whatsapp_relink_required",
174
174
  "title": "WhatsApp QR re-link required for Baileys v7",
175
175
  "description": "exe-gateway uses Baileys v7. Existing WhatsApp 6.x linked-device auth state must be backed up and re-linked once with a new QR code.",
176
- "requiredAction": "Open https://<gateway-domain>/pair/default?token=<admin-token> and scan from WhatsApp \u2192 Linked Devices after the update.",
176
+ "requiredAction": "Open https://<gateway-domain>/pair/default?token=<admin-token> and scan from WhatsApp Linked Devices after the update.",
177
177
  "expectedDowntimeMinutes": "2-5",
178
178
  "requiresConfirmation": true
179
179
  }
@@ -238,7 +238,7 @@
238
238
  "id": "whatsapp_relink_required",
239
239
  "title": "WhatsApp QR re-link required for Baileys v7",
240
240
  "description": "exe-gateway uses Baileys v7. Existing WhatsApp 6.x linked-device auth state must be backed up and re-linked once with a new QR code.",
241
- "requiredAction": "Open https://<gateway-domain>/pair/default?token=<admin-token> and scan from WhatsApp \u2192 Linked Devices after the update.",
241
+ "requiredAction": "Open https://<gateway-domain>/pair/default?token=<admin-token> and scan from WhatsApp Linked Devices after the update.",
242
242
  "expectedDowntimeMinutes": "2-5",
243
243
  "requiresConfirmation": true
244
244
  }
@@ -303,7 +303,7 @@
303
303
  "id": "whatsapp_relink_required",
304
304
  "title": "WhatsApp QR re-link required for Baileys v7",
305
305
  "description": "exe-gateway uses Baileys v7. Existing WhatsApp 6.x linked-device auth state must be backed up and re-linked once with a new QR code.",
306
- "requiredAction": "Open https://<gateway-domain>/pair/default?token=<admin-token> and scan from WhatsApp \u2192 Linked Devices after the update.",
306
+ "requiredAction": "Open https://<gateway-domain>/pair/default?token=<admin-token> and scan from WhatsApp Linked Devices after the update.",
307
307
  "expectedDowntimeMinutes": "2-5",
308
308
  "requiresConfirmation": true
309
309
  }
@@ -371,7 +371,7 @@
371
371
  "id": "whatsapp_relink_required",
372
372
  "title": "WhatsApp QR re-link required for Baileys v7",
373
373
  "description": "exe-gateway uses Baileys v7. Existing WhatsApp 6.x linked-device auth state must be backed up and re-linked once with a new QR code.",
374
- "requiredAction": "Open https://<gateway-domain>/pair/default?token=<admin-token> and scan from WhatsApp \u2192 Linked Devices after the update.",
374
+ "requiredAction": "Open https://<gateway-domain>/pair/default?token=<admin-token> and scan from WhatsApp Linked Devices after the update.",
375
375
  "expectedDowntimeMinutes": "2-5",
376
376
  "requiresConfirmation": true
377
377
  }
@@ -439,7 +439,7 @@
439
439
  "id": "whatsapp_relink_required",
440
440
  "title": "WhatsApp QR re-link required for Baileys v7",
441
441
  "description": "exe-gateway uses Baileys v7. Existing WhatsApp 6.x linked-device auth state must be backed up and re-linked once with a new QR code.",
442
- "requiredAction": "Open https://<gateway-domain>/pair/default?token=<admin-token> and scan from WhatsApp \u2192 Linked Devices after the update.",
442
+ "requiredAction": "Open https://<gateway-domain>/pair/default?token=<admin-token> and scan from WhatsApp Linked Devices after the update.",
443
443
  "expectedDowntimeMinutes": "2-5",
444
444
  "requiresConfirmation": true
445
445
  }
@@ -822,6 +822,110 @@
822
822
  "required": false
823
823
  }
824
824
  }
825
+ },
826
+ "0.9.15": {
827
+ "version": "0.9.15",
828
+ "releasedAt": "2026-06-09T00:00:00Z",
829
+ "notes": "30-bug triage: 9 HYGO fixes (WhatsApp QR pairing, init-db, CRM UUID bootstrap, CORS 500, dark mode, Cloudflare Tunnel, ERP image tags), close_task ID resolution, async backup (WAL corruption fix), dreaming column crash, pre-tool-use coordinator allowlist, notification cross-session leak, cascadeUnblock auto-dispatch.",
830
+ "npmVersion": "0.9.240",
831
+ "breakingChanges": [],
832
+ "services": {
833
+ "crm": {
834
+ "image": "update.askexe.com/askexe/exe-crm:v0.9.46",
835
+ "env": "CRM_IMAGE_TAG",
836
+ "composeService": "exe-crm",
837
+ "healthUrl": "http://127.0.0.1:3000/healthz"
838
+ },
839
+ "wiki": {
840
+ "image": "update.askexe.com/askexe/exe-wiki:v0.9.20",
841
+ "env": "WIKI_IMAGE_TAG",
842
+ "composeService": "exe-wiki",
843
+ "healthUrl": "http://127.0.0.1:3001/api/ping"
844
+ },
845
+ "exe-os": {
846
+ "image": "update.askexe.com/askexe/exe-os:v0.9.240",
847
+ "env": "EXE_OS_IMAGE_TAG",
848
+ "composeService": "exe-os",
849
+ "healthUrl": "http://127.0.0.1:8765/health"
850
+ },
851
+ "gateway": {
852
+ "image": "update.askexe.com/askexe/exe-gateway:v0.9.13",
853
+ "env": "GATEWAY_IMAGE_TAG",
854
+ "composeService": "exe-gateway",
855
+ "healthUrl": "http://127.0.0.1:3100/health"
856
+ },
857
+ "monitorAgent": {
858
+ "image": "update.askexe.com/askexe/exe-monitor-agent:v0.9.4",
859
+ "env": "MONITOR_AGENT_IMAGE_TAG",
860
+ "composeService": "exe-monitor-agent"
861
+ },
862
+ "monitorHub": {
863
+ "image": "update.askexe.com/askexe/exe-monitor-hub:v0.9.4",
864
+ "env": "MONITOR_HUB_IMAGE_TAG",
865
+ "composeService": "exe-monitor-hub",
866
+ "healthUrl": "http://127.0.0.1:8090/api/health"
867
+ },
868
+ "erp": {
869
+ "image": "update.askexe.com/askexe/exe-erp:v0.2.0-final3",
870
+ "env": "ERP_IMAGE_TAG",
871
+ "composeService": "exe-erp",
872
+ "healthUrl": "http://127.0.0.1:8069/api/method/ping",
873
+ "deploymentScope": "customer",
874
+ "required": false
875
+ }
876
+ }
877
+ },
878
+ "0.9.16": {
879
+ "version": "0.9.16",
880
+ "releasedAt": "2026-06-09T00:00:00Z",
881
+ "notes": "exe-os v0.9.243: fix: stack-release uses defaultBranch per repo (wiki uses master); chore: bump v0.9.242 for stack release; fix: prevent stale task intercom prompts; docs: add STACK-RELEASE.md — full release process documentation; fix: v0.9.241 — 13 more bug fixes (28 total this session). gateway v0.9.15: chore: bump v0.9.14 for stack release; fix: WhatsApp pairing 15-20s → 1-2s — remove blocking fetch, event-driven wait. wiki v0.9.21: chore: bump v0.9.20 for stack release; fix: accept wiki JWTs alongside GoTrue JWTs in auth middleware; feat: add GoTrue agent provisioning script; fix: set min-width on user menu dropdown to prevent layout collapse; fix: remove demo branding from exe-wiki main page greeting",
882
+ "npmVersion": "0.9.243",
883
+ "breakingChanges": [],
884
+ "services": {
885
+ "crm": {
886
+ "image": "update.askexe.com/askexe/exe-crm:v0.9.46",
887
+ "env": "CRM_IMAGE_TAG",
888
+ "composeService": "exe-crm",
889
+ "healthUrl": "http://127.0.0.1:3000/healthz"
890
+ },
891
+ "wiki": {
892
+ "image": "update.askexe.com/askexe/exe-wiki:v0.9.21",
893
+ "env": "WIKI_IMAGE_TAG",
894
+ "composeService": "exe-wiki",
895
+ "healthUrl": "http://127.0.0.1:3001/api/ping"
896
+ },
897
+ "exe-os": {
898
+ "image": "update.askexe.com/askexe/exe-os:v0.9.243",
899
+ "env": "EXE_OS_IMAGE_TAG",
900
+ "composeService": "exe-os",
901
+ "healthUrl": "http://127.0.0.1:8765/health"
902
+ },
903
+ "gateway": {
904
+ "image": "update.askexe.com/askexe/exe-gateway:v0.9.15",
905
+ "env": "GATEWAY_IMAGE_TAG",
906
+ "composeService": "exe-gateway",
907
+ "healthUrl": "http://127.0.0.1:3100/health"
908
+ },
909
+ "monitorAgent": {
910
+ "image": "update.askexe.com/askexe/exe-monitor-agent:v0.9.4",
911
+ "env": "MONITOR_AGENT_IMAGE_TAG",
912
+ "composeService": "exe-monitor-agent"
913
+ },
914
+ "monitorHub": {
915
+ "image": "update.askexe.com/askexe/exe-monitor-hub:v0.9.4",
916
+ "env": "MONITOR_HUB_IMAGE_TAG",
917
+ "composeService": "exe-monitor-hub",
918
+ "healthUrl": "http://127.0.0.1:8090/api/health"
919
+ },
920
+ "erp": {
921
+ "image": "update.askexe.com/askexe/exe-erp:v0.2.0-final3",
922
+ "env": "ERP_IMAGE_TAG",
923
+ "composeService": "exe-erp",
924
+ "healthUrl": "http://127.0.0.1:8069/api/method/ping",
925
+ "deploymentScope": "customer",
926
+ "required": false
927
+ }
928
+ }
825
929
  }
826
930
  }
827
931
  }
@@ -6,13 +6,13 @@ import {
6
6
  getAllActiveAgents,
7
7
  resolveActiveAgentFromTmuxSession,
8
8
  writeActiveAgent
9
- } from "./chunk-RA2RO27E.js";
9
+ } from "./chunk-MCESA5UW.js";
10
10
  import "./chunk-CVYC6DUW.js";
11
11
  import "./chunk-GJV3WDWM.js";
12
- import "./chunk-2H55BIV2.js";
13
- import "./chunk-WSHMBME6.js";
12
+ import "./chunk-CEJO7244.js";
13
+ import "./chunk-AWRL5FGM.js";
14
14
  import "./chunk-FXU7JOXK.js";
15
- import "./chunk-TRZ5KA2R.js";
15
+ import "./chunk-VXIMSRTO.js";
16
16
  import "./chunk-LYH5HE24.js";
17
17
  import "./chunk-MLKGABMK.js";
18
18
  export {
@@ -5,13 +5,13 @@ import {
5
5
  getAllActiveAgents,
6
6
  resolveActiveAgentFromTmuxSession,
7
7
  writeActiveAgent
8
- } from "./chunk-RA2RO27E.js";
8
+ } from "./chunk-MCESA5UW.js";
9
9
  import "./chunk-CVYC6DUW.js";
10
10
  import "./chunk-GJV3WDWM.js";
11
- import "./chunk-2H55BIV2.js";
12
- import "./chunk-WSHMBME6.js";
11
+ import "./chunk-CEJO7244.js";
12
+ import "./chunk-AWRL5FGM.js";
13
13
  import "./chunk-FXU7JOXK.js";
14
- import "./chunk-TRZ5KA2R.js";
14
+ import "./chunk-VXIMSRTO.js";
15
15
  import "./chunk-LYH5HE24.js";
16
16
  import "./chunk-MLKGABMK.js";
17
17
  export {
@@ -9,7 +9,7 @@ import {
9
9
  insertOntologyForMemory,
10
10
  ontologyPayload,
11
11
  stableId
12
- } from "./chunk-NOLIN2YI.js";
12
+ } from "./chunk-XAYRZHLV.js";
13
13
  import "./chunk-MLKGABMK.js";
14
14
  export {
15
15
  clean,
@@ -2,20 +2,20 @@
2
2
  import {
3
3
  disposeStore,
4
4
  initStore
5
- } from "./chunk-FGJUGDNM.js";
5
+ } from "./chunk-222SI7QC.js";
6
6
  import "./chunk-CHCA3ZM2.js";
7
- import "./chunk-4HROS3GJ.js";
8
- import "./chunk-F7LU65PQ.js";
7
+ import "./chunk-IZVKWBIP.js";
8
+ import "./chunk-Y25OJWOQ.js";
9
9
  import "./chunk-MP2AFCGL.js";
10
10
  import {
11
11
  getClient,
12
12
  getEmployeeNamesByRole,
13
13
  loadEmployeesSync
14
- } from "./chunk-2H55BIV2.js";
15
- import "./chunk-WSHMBME6.js";
14
+ } from "./chunk-CEJO7244.js";
15
+ import "./chunk-AWRL5FGM.js";
16
16
  import "./chunk-FXU7JOXK.js";
17
- import "./chunk-KDJRFJDL.js";
18
- import "./chunk-TRZ5KA2R.js";
17
+ import "./chunk-K333WOW4.js";
18
+ import "./chunk-VXIMSRTO.js";
19
19
  import "./chunk-LYH5HE24.js";
20
20
  import {
21
21
  isMainModule
@@ -8,8 +8,8 @@ import {
8
8
  releaseJobLock,
9
9
  reniceCurrentProcess,
10
10
  startManagedJob
11
- } from "./chunk-BRFH5X7G.js";
12
- import "./chunk-TRZ5KA2R.js";
11
+ } from "./chunk-Z7VDUS6L.js";
12
+ import "./chunk-VXIMSRTO.js";
13
13
  import "./chunk-LYH5HE24.js";
14
14
  import "./chunk-MLKGABMK.js";
15
15
  export {
@@ -6,11 +6,11 @@ import {
6
6
  listSharedSkills,
7
7
  reactivateBehavior,
8
8
  storeBehavior
9
- } from "./chunk-UAFUGPKO.js";
10
- import "./chunk-2H55BIV2.js";
11
- import "./chunk-WSHMBME6.js";
9
+ } from "./chunk-ONAQAL3O.js";
10
+ import "./chunk-CEJO7244.js";
11
+ import "./chunk-AWRL5FGM.js";
12
12
  import "./chunk-FXU7JOXK.js";
13
- import "./chunk-TRZ5KA2R.js";
13
+ import "./chunk-VXIMSRTO.js";
14
14
  import "./chunk-LYH5HE24.js";
15
15
  import "./chunk-MLKGABMK.js";
16
16
  export {
@@ -5,8 +5,8 @@ import {
5
5
  import {
6
6
  politeBatchPause,
7
7
  startManagedJob
8
- } from "../chunk-BRFH5X7G.js";
9
- import "../chunk-TRZ5KA2R.js";
8
+ } from "../chunk-Z7VDUS6L.js";
9
+ import "../chunk-VXIMSRTO.js";
10
10
  import "../chunk-LYH5HE24.js";
11
11
  import "../chunk-MLKGABMK.js";
12
12
 
@@ -1,26 +1,26 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  insertOntologyForBatch
4
- } from "../chunk-NOLIN2YI.js";
4
+ } from "../chunk-XAYRZHLV.js";
5
5
  import {
6
6
  politeBatchPause,
7
7
  startManagedJob
8
- } from "../chunk-BRFH5X7G.js";
8
+ } from "../chunk-Z7VDUS6L.js";
9
9
  import {
10
10
  disposeStore,
11
11
  initStore
12
- } from "../chunk-FGJUGDNM.js";
12
+ } from "../chunk-222SI7QC.js";
13
13
  import "../chunk-CHCA3ZM2.js";
14
- import "../chunk-4HROS3GJ.js";
15
- import "../chunk-F7LU65PQ.js";
14
+ import "../chunk-IZVKWBIP.js";
15
+ import "../chunk-Y25OJWOQ.js";
16
16
  import "../chunk-MP2AFCGL.js";
17
17
  import {
18
18
  getClient
19
- } from "../chunk-2H55BIV2.js";
20
- import "../chunk-WSHMBME6.js";
19
+ } from "../chunk-CEJO7244.js";
20
+ import "../chunk-AWRL5FGM.js";
21
21
  import "../chunk-FXU7JOXK.js";
22
- import "../chunk-KDJRFJDL.js";
23
- import "../chunk-TRZ5KA2R.js";
22
+ import "../chunk-K333WOW4.js";
23
+ import "../chunk-VXIMSRTO.js";
24
24
  import "../chunk-LYH5HE24.js";
25
25
  import "../chunk-MLKGABMK.js";
26
26
 
@@ -1,23 +1,23 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  generateReflectionCheckpoints
4
- } from "../chunk-YPYDLW75.js";
5
- import "../chunk-NOLIN2YI.js";
4
+ } from "../chunk-OEMX65EA.js";
5
+ import "../chunk-XAYRZHLV.js";
6
6
  import {
7
7
  startManagedJob
8
- } from "../chunk-BRFH5X7G.js";
8
+ } from "../chunk-Z7VDUS6L.js";
9
9
  import {
10
10
  initStore
11
- } from "../chunk-FGJUGDNM.js";
11
+ } from "../chunk-222SI7QC.js";
12
12
  import "../chunk-CHCA3ZM2.js";
13
- import "../chunk-4HROS3GJ.js";
14
- import "../chunk-F7LU65PQ.js";
13
+ import "../chunk-IZVKWBIP.js";
14
+ import "../chunk-Y25OJWOQ.js";
15
15
  import "../chunk-MP2AFCGL.js";
16
- import "../chunk-2H55BIV2.js";
17
- import "../chunk-WSHMBME6.js";
16
+ import "../chunk-CEJO7244.js";
17
+ import "../chunk-AWRL5FGM.js";
18
18
  import "../chunk-FXU7JOXK.js";
19
- import "../chunk-KDJRFJDL.js";
20
- import "../chunk-TRZ5KA2R.js";
19
+ import "../chunk-K333WOW4.js";
20
+ import "../chunk-VXIMSRTO.js";
21
21
  import "../chunk-LYH5HE24.js";
22
22
  import "../chunk-MLKGABMK.js";
23
23