@askexenow/exe-os 0.9.145 → 0.9.146

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 (342) hide show
  1. package/dist/{active-agent-HUDSZRUG.js → active-agent-KMQCNXXD.js} +6 -6
  2. package/dist/{active-agent-GJOJUEMF.js → active-agent-NCZCDDZ2.js} +6 -6
  3. package/dist/{agent-context-HH7TL5ZP.js → agent-context-AZTTMUHP.js} +1 -1
  4. package/dist/agent-heartbeat-I5UPGXAU.js +60 -0
  5. package/dist/{agent-loop-OCJFYO72.js → agent-loop-NUIWAL3Z.js} +1 -1
  6. package/dist/{agentic-ontology-5PGUVMDP.js → agentic-ontology-SQR74CO7.js} +2 -2
  7. package/dist/{asana-BSDR6NW4.js → asana-MRQ2OQMJ.js} +1 -1
  8. package/dist/assets/wezterm.lua +68 -0
  9. package/dist/{backfill-metadata-ZDJ5B37R.js → backfill-metadata-5JOQOIN2.js} +7 -7
  10. package/dist/{background-jobs-4N4JSZVZ.js → background-jobs-IUB22CRF.js} +4 -4
  11. package/dist/{bash-X54PZMOG.js → bash-HOHKSOU3.js} +1 -1
  12. package/dist/{behaviors-TXLHEM5J.js → behaviors-4U2N5L4E.js} +6 -6
  13. package/dist/bin/age-ontology-load.js +4 -4
  14. package/dist/bin/agentic-ontology-backfill.js +9 -9
  15. package/dist/bin/agentic-reflection-backfill.js +10 -10
  16. package/dist/bin/agentic-semantic-label.js +9 -9
  17. package/dist/bin/backfill-conversations.js +9 -9
  18. package/dist/bin/backfill-responses.js +9 -9
  19. package/dist/bin/backfill-vectors.js +12 -14
  20. package/dist/bin/bulk-sync-postgres.js +10 -10
  21. package/dist/bin/cc-doctor.js +5 -5
  22. package/dist/bin/cleanup-stale-review-tasks.js +12 -11
  23. package/dist/bin/cli.js +19 -19
  24. package/dist/bin/customer-readiness.js +9 -0
  25. package/dist/bin/exe-agent-config.js +6 -6
  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 +35 -30
  29. package/dist/bin/exe-call.js +9 -11
  30. package/dist/bin/exe-cloud.js +10 -12
  31. package/dist/bin/exe-dispatch.js +12 -11
  32. package/dist/bin/exe-doctor.js +2 -2
  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 +18 -18
  36. package/dist/bin/exe-healthcheck.js +5 -5
  37. package/dist/bin/exe-heartbeat.js +19 -14
  38. package/dist/bin/exe-kill.js +9 -9
  39. package/dist/bin/exe-launch-agent.js +16 -18
  40. package/dist/bin/exe-new-employee.js +11 -11
  41. package/dist/bin/exe-pending-messages.js +13 -12
  42. package/dist/bin/exe-pending-notifications.js +12 -11
  43. package/dist/bin/exe-pending-reviews.js +20 -13
  44. package/dist/bin/exe-rename.js +9 -11
  45. package/dist/bin/exe-review.js +14 -13
  46. package/dist/bin/exe-search.js +8 -10
  47. package/dist/bin/exe-session-cleanup.js +19 -19
  48. package/dist/bin/exe-settings.js +11 -13
  49. package/dist/bin/exe-start-codex.js +15 -15
  50. package/dist/bin/exe-start-opencode.js +11 -11
  51. package/dist/bin/exe-status.js +13 -12
  52. package/dist/bin/exe-support.js +5 -5
  53. package/dist/bin/exe-team.js +6 -6
  54. package/dist/bin/git-sweep.js +12 -11
  55. package/dist/bin/graph-backfill.js +10 -10
  56. package/dist/bin/graph-export.js +8 -8
  57. package/dist/bin/graph-layer-benchmark.js +1 -1
  58. package/dist/bin/install.js +38 -12
  59. package/dist/bin/intercom-check.js +14 -8
  60. package/dist/bin/list-providers.js +1 -1
  61. package/dist/bin/postgres-agentic-reflection-backfill.js +6 -6
  62. package/dist/bin/postgres-agentic-semantic-backfill.js +5 -5
  63. package/dist/bin/pre-publish.js +2 -2
  64. package/dist/bin/registry-proxy.js +1 -1
  65. package/dist/bin/scan-tasks.js +48 -49
  66. package/dist/bin/setup.js +6 -5
  67. package/dist/bin/shard-migrate.js +8 -8
  68. package/dist/bin/stack-update.js +66 -10
  69. package/dist/bin/update.js +1 -1
  70. package/dist/{branding-52J2ILJX.js → branding-EHDA3CCK.js} +4 -6
  71. package/dist/{capacity-monitor-HWN2JX5W.js → capacity-monitor-Q5M5SVRC.js} +13 -12
  72. package/dist/{catchup-brief-UERCIVM5.js → catchup-brief-7HTF254M.js} +14 -13
  73. package/dist/{chunk-GK5VMHSN.js → chunk-26UVGP3I.js} +1 -1
  74. package/dist/{chunk-CDDRSIGK.js → chunk-2BPO7VQF.js} +80 -70
  75. package/dist/{chunk-7PTII6F4.js → chunk-2OATM2JZ.js} +1 -1
  76. package/dist/{chunk-AJ2XDY27.js → chunk-3FIWKONP.js} +10 -12
  77. package/dist/{chunk-H6OEU54G.js → chunk-44XTE6NK.js} +91 -39
  78. package/dist/{chunk-JUITBJ7J.js → chunk-4GLEFA2X.js} +1 -1
  79. package/dist/{chunk-OYCQ6PFC.js → chunk-4LUI7MMY.js} +6 -6
  80. package/dist/{chunk-BY4OTURZ.js → chunk-4MN44ORL.js} +1 -1
  81. package/dist/{chunk-BHV7PX5V.js → chunk-4XO2533K.js} +2 -2
  82. package/dist/{chunk-VXQDZH5T.js → chunk-6CSCJTGT.js} +3 -3
  83. package/dist/{chunk-MUVPQCQA.js → chunk-6HFZ2KUC.js} +1 -3
  84. package/dist/{chunk-F7JVVLGH.js → chunk-6YUACQQA.js} +2 -4
  85. package/dist/{chunk-2R3N4DQY.js → chunk-7J6OKCQX.js} +3 -3
  86. package/dist/{chunk-NQAZ2CP7.js → chunk-AAZ3MQIA.js} +11 -11
  87. package/dist/{chunk-XEA6DSLR.js → chunk-AERGE6GC.js} +4 -6
  88. package/dist/{chunk-RWJY7KMP.js → chunk-ARGBV4PP.js} +46 -13
  89. package/dist/{chunk-32LFUJVG.js → chunk-CAXNZ4KN.js} +221 -110
  90. package/dist/{chunk-ER3UJ2VL.js → chunk-CVUFSWGC.js} +2 -2
  91. package/dist/{chunk-RNN4MZDN.js → chunk-DBXKWFTK.js} +3 -3
  92. package/dist/{chunk-Y2VVTK2E.js → chunk-DTLASDQM.js} +1 -1
  93. package/dist/{chunk-K3PSCQLK.js → chunk-DW6P7UVY.js} +4 -6
  94. package/dist/{chunk-B6Q6WAD7.js → chunk-EHNSK2Y4.js} +1 -1
  95. package/dist/{chunk-7PEYIW53.js → chunk-EHXOWGQG.js} +2 -2
  96. package/dist/{chunk-6BUUY7FG.js → chunk-EOO32RJZ.js} +2 -4
  97. package/dist/{chunk-MFGARIVE.js → chunk-EYQIEK5M.js} +2 -4
  98. package/dist/{chunk-NT6R4ATM.js → chunk-FG4Z2XFU.js} +1 -1
  99. package/dist/{chunk-MPXPPKJ4.js → chunk-GKFSZKUD.js} +2 -2
  100. package/dist/{chunk-CWPE6QVM.js → chunk-GNHN5HRQ.js} +2 -4
  101. package/dist/{chunk-WLEVAIL5.js → chunk-GP6G6EQI.js} +1 -1
  102. package/dist/{chunk-65UQ7H5U.js → chunk-HJWNO7MX.js} +4 -6
  103. package/dist/{chunk-O7YD7JYE.js → chunk-I7AW4237.js} +18 -4
  104. package/dist/{chunk-VRD452MQ.js → chunk-I7KGNSNR.js} +2 -2
  105. package/dist/{chunk-TFZZL3QF.js → chunk-ICKEGWWP.js} +2 -4
  106. package/dist/{chunk-SR6D65DA.js → chunk-IFACD7E6.js} +3 -3
  107. package/dist/{chunk-VX4X2O6J.js → chunk-IGRIWAV4.js} +6 -6
  108. package/dist/{chunk-C4EVFN7J.js → chunk-IYDFOUK4.js} +2 -2
  109. package/dist/{chunk-I4WAKJ6W.js → chunk-J4RAXKTC.js} +3 -3
  110. package/dist/{chunk-RWURKLS3.js → chunk-JH7Z2AZ7.js} +1 -1
  111. package/dist/{chunk-5WTYETQO.js → chunk-K4KAPZC7.js} +4 -8
  112. package/dist/{chunk-G3VR3MJI.js → chunk-KIUU4PNX.js} +4 -8
  113. package/dist/{chunk-53VUIKOE.js → chunk-KJFCQUQP.js} +1 -1
  114. package/dist/{chunk-4F56OUR7.js → chunk-LC53LVOT.js} +2 -2
  115. package/dist/{chunk-W7NQE65M.js → chunk-LJML7HT2.js} +1 -1
  116. package/dist/{chunk-V4O2APMI.js → chunk-LL5EY6OQ.js} +1 -1
  117. package/dist/{chunk-DCJ42FEN.js → chunk-LWJ4AMMY.js} +2 -4
  118. package/dist/{chunk-GCMT6RWI.js → chunk-LYH5HE24.js} +3 -14
  119. package/dist/{chunk-63UVIM7S.js → chunk-MBA4NNTS.js} +2 -4
  120. package/dist/{chunk-7KR5PV4P.js → chunk-MKPSMRVX.js} +1 -1
  121. package/dist/chunk-MLKGABMK.js +9 -0
  122. package/dist/chunk-MLXJ5EZG.js +90 -0
  123. package/dist/{chunk-BXCJOACQ.js → chunk-NFHFNPTN.js} +3 -5
  124. package/dist/{chunk-I5VJNTDL.js → chunk-NNT2ZNMC.js} +5 -7
  125. package/dist/{chunk-O7CTVDC3.js → chunk-ODEGQCWW.js} +8 -8
  126. package/dist/{chunk-H4YONWQX.js → chunk-ONMRBKAX.js} +229 -108
  127. package/dist/{chunk-7APRWURX.js → chunk-PMUKZYTR.js} +10 -12
  128. package/dist/{chunk-NE6RPW5C.js → chunk-PMWDO5FR.js} +1 -1
  129. package/dist/{chunk-IPSFAUK5.js → chunk-QB66MH2V.js} +4 -4
  130. package/dist/{chunk-XAHIVBTU.js → chunk-QHQJ7DLL.js} +6 -6
  131. package/dist/{chunk-KLRP6ZG3.js → chunk-RMSDKMFD.js} +251 -96
  132. package/dist/{chunk-NA3MXUU6.js → chunk-TH6HTK2L.js} +17 -15
  133. package/dist/{chunk-H4KUTL2T.js → chunk-TKEDF7KV.js} +1 -1
  134. package/dist/{chunk-KHV55ME4.js → chunk-TOWAZ5IV.js} +95 -118
  135. package/dist/{chunk-IBVB2NGY.js → chunk-TOXHEZN5.js} +47 -4
  136. package/dist/{chunk-UWBU44UP.js → chunk-UPL5FEZY.js} +1 -1
  137. package/dist/{chunk-UVH6FA5E.js → chunk-UU6YYTYH.js} +1 -1
  138. package/dist/{chunk-X7DJ2QZW.js → chunk-V4MKR32F.js} +4 -6
  139. package/dist/{chunk-HV75RBMK.js → chunk-VB23RNNI.js} +1 -1
  140. package/dist/{chunk-56T5TMNK.js → chunk-VK2AWQ6D.js} +2 -2
  141. package/dist/{chunk-UXDQ4ERA.js → chunk-VNTDQUOG.js} +21 -18
  142. package/dist/{chunk-KQTGSD23.js → chunk-VYVESELG.js} +13 -9
  143. package/dist/{chunk-S465RWY7.js → chunk-W6SKR3HZ.js} +3 -5
  144. package/dist/{chunk-CQCURHDV.js → chunk-X2XE65WV.js} +12 -10
  145. package/dist/{chunk-XQ2ZBOAD.js → chunk-XK7VZFCC.js} +22 -9
  146. package/dist/{chunk-5F3EXHT7.js → chunk-XMRDT4PB.js} +2 -4
  147. package/dist/{chunk-WTJS6PCC.js → chunk-YOG7TWMO.js} +1 -1
  148. package/dist/{chunk-QSSABSCM.js → chunk-YPSN64BU.js} +6 -6
  149. package/dist/{chunk-WJW564IP.js → chunk-ZBA74MMX.js} +2 -2
  150. package/dist/{chunk-K6MMN6AW.js → chunk-ZZLTJXKR.js} +3 -5
  151. package/dist/{code-context-index-SRTAWCZQ.js → code-context-index-I5A7I4JQ.js} +7 -7
  152. package/dist/{content-extractor-H4IPL533.js → content-extractor-M7ISRONU.js} +1 -1
  153. package/dist/{conversation-entity-extractor-IZ3ECP4A.js → conversation-entity-extractor-EYSI4DKM.js} +3 -3
  154. package/dist/{conversation-wiki-populator-K4BQXHHO.js → conversation-wiki-populator-RSJ44BRO.js} +2 -2
  155. package/dist/{core-memory-JZ34WT5R.js → core-memory-KF6T4PMU.js} +1 -1
  156. package/dist/{crdt-sync-4TOVD4QN.js → crdt-sync-XMC6LT2Q.js} +2 -2
  157. package/dist/{crm-bridge-27QVOWPI.js → crm-bridge-4QZRMOF7.js} +1 -1
  158. package/dist/{crm-webhook-77XHBWL7.js → crm-webhook-QMHD5YYQ.js} +3 -3
  159. package/dist/{cto-delegation-gate-AWENA4VT.js → cto-delegation-gate-BTZWAA4E.js} +11 -10
  160. package/dist/{daemon-auth-Z7O3LO23.js → daemon-auth-F47P6HTC.js} +4 -4
  161. package/dist/{daemon-orchestration-BG4NPWOK.js → daemon-orchestration-HFODCB52.js} +14 -13
  162. package/dist/{daemon-protocol-N7MOJ4U3.js → daemon-protocol-XW2OLNBS.js} +1 -1
  163. package/dist/{db-backup-E34JMBZD.js → db-backup-W56YOLMC.js} +4 -4
  164. package/dist/{devtools-ZL5NCINM.js → devtools-5PEATRYE.js} +1 -1
  165. package/dist/{discord-QOFQKX6S.js → discord-LMZKIYWB.js} +1 -1
  166. package/dist/dispatch-ack-JYCKAWKZ.js +13 -0
  167. package/dist/{email-NY5HB4WA.js → email-UENAIKRN.js} +1 -1
  168. package/dist/{entity-boost-V6KSRGG4.js → entity-boost-LIBVNNXO.js} +2 -2
  169. package/dist/{exe-drift-YFWCC26O.js → exe-drift-SED6KQTZ.js} +6 -6
  170. package/dist/{exe-export-YRACBEUY.js → exe-export-C7GZLJJ2.js} +9 -9
  171. package/dist/{exe-import-DY57L2OI.js → exe-import-E3ZOLEAC.js} +9 -9
  172. package/dist/{exe-key-U2JJH4MO.js → exe-key-4275KC6R.js} +5 -7
  173. package/dist/{exe-org-45OTYZZJ.js → exe-org-OOO7KJVZ.js} +4 -4
  174. package/dist/{factory-2PB537KA.js → factory-CTFAGZUA.js} +1 -1
  175. package/dist/fast-db-init-JI5U4KWG.js +7 -0
  176. package/dist/{file-edit-GSXUFUDC.js → file-edit-AZAJPCA3.js} +1 -1
  177. package/dist/{file-read-Z3F3PUCK.js → file-read-VACF23NC.js} +1 -1
  178. package/dist/{file-write-X77JXZ2C.js → file-write-B2RPT5U7.js} +1 -1
  179. package/dist/gateway/index.js +10 -10
  180. package/dist/{gateway-client-IPKKEYKY.js → gateway-client-5EUMMEZZ.js} +2 -2
  181. package/dist/{git-staleness-I662R7RL.js → git-staleness-BY4ZK6MW.js} +5 -5
  182. package/dist/{git-task-sweep-XWFCP2HA.js → git-task-sweep-EVITTAZE.js} +12 -11
  183. package/dist/{glob-2PWAXTZ2.js → glob-7PWH7WKL.js} +1 -1
  184. package/dist/{global-procedures-IEIJBCAH.js → global-procedures-YJLTJ7EZ.js} +7 -7
  185. package/dist/graph-auto-extract-HWZ5GVXZ.js +161 -0
  186. package/dist/{graph-query-NCDYOT4Y.js → graph-query-SE6T5XC4.js} +1 -1
  187. package/dist/{graph-rag-2YLGRBW5.js → graph-rag-G3EG5Q6L.js} +3 -3
  188. package/dist/{grep-GTV6WAZ4.js → grep-HWIDXHRC.js} +1 -1
  189. package/dist/{hook-integrity-LLPJPAXW.js → hook-integrity-PR4BPZBT.js} +2 -2
  190. package/dist/hooks/bug-report-worker.js +13 -12
  191. package/dist/hooks/codex-stop-task-finalizer.js +16 -13
  192. package/dist/hooks/commit-complete.js +14 -13
  193. package/dist/hooks/error-recall.js +9 -12
  194. package/dist/hooks/exe-heartbeat-hook.js +6 -6
  195. package/dist/hooks/ingest-worker.js +9 -9
  196. package/dist/hooks/ingest.js +16 -19
  197. package/dist/hooks/instructions-loaded.js +7 -7
  198. package/dist/hooks/notification.js +12 -10
  199. package/dist/hooks/post-compact.js +13 -12
  200. package/dist/hooks/post-tool-combined.js +6 -6
  201. package/dist/hooks/pre-compact.js +18 -17
  202. package/dist/hooks/pre-tool-use.js +19 -20
  203. package/dist/hooks/prompt-submit.js +78 -39
  204. package/dist/hooks/session-end.js +22 -21
  205. package/dist/hooks/session-start.js +31 -25
  206. package/dist/hooks/stop.js +20 -22
  207. package/dist/hooks/subagent-stop.js +13 -12
  208. package/dist/hooks/summary-worker.js +21 -20
  209. package/dist/{hooks-UK2AYRCA.js → hooks-LDCFYHDF.js} +1 -1
  210. package/dist/{imessage-LINH4V4D.js → imessage-6UOZB5VN.js} +1 -1
  211. package/dist/index.js +19 -18
  212. package/dist/{installer-PB63JTTG.js → installer-RLKOACKG.js} +9 -9
  213. package/dist/{installer-SSR2OOLO.js → installer-W4NY3OBF.js} +13 -11
  214. package/dist/{installer-ZONYB3XK.js → installer-X5FEYJIA.js} +9 -9
  215. package/dist/{intercom-queue-MMZT2MA2.js → intercom-queue-K3DVKSPJ.js} +1 -1
  216. package/dist/{key-backup-status-4WKIQOAS.js → key-backup-status-ORNMJEEA.js} +4 -6
  217. package/dist/lib/agent-config.js +4 -4
  218. package/dist/lib/cloud-sync.js +8 -8
  219. package/dist/lib/cloudflare-dns.js +1 -1
  220. package/dist/lib/config.js +3 -5
  221. package/dist/lib/consolidation.js +8 -8
  222. package/dist/lib/crypto.js +1 -1
  223. package/dist/lib/database.js +5 -5
  224. package/dist/lib/db-daemon-client.js +5 -5
  225. package/dist/lib/db.js +5 -5
  226. package/dist/lib/device-registry.js +4 -6
  227. package/dist/lib/embedder.js +6 -6
  228. package/dist/lib/employee-templates.js +8 -8
  229. package/dist/lib/employees.js +7 -5
  230. package/dist/lib/error-detector.js +1 -1
  231. package/dist/lib/exe-daemon-client.js +5 -5
  232. package/dist/lib/exe-daemon.js +143 -52
  233. package/dist/lib/file-grep.js +1 -1
  234. package/dist/lib/hybrid-search.js +8 -8
  235. package/dist/lib/identity-templates.js +1 -1
  236. package/dist/lib/identity.js +5 -5
  237. package/dist/lib/keychain.js +1 -1
  238. package/dist/lib/license.js +4 -4
  239. package/dist/lib/messaging.js +12 -11
  240. package/dist/lib/post-tool-memory.js +3 -3
  241. package/dist/lib/registry-proxy.js +1 -1
  242. package/dist/lib/reminders.js +6 -6
  243. package/dist/lib/runtime-table.js +1 -1
  244. package/dist/lib/schedules.js +8 -8
  245. package/dist/lib/session-registry.js +1 -1
  246. package/dist/lib/session-wrappers.js +1 -1
  247. package/dist/lib/skill-learning.js +7 -7
  248. package/dist/lib/status-brief.js +1 -1
  249. package/dist/lib/store.js +7 -7
  250. package/dist/lib/task-router.js +6 -6
  251. package/dist/lib/tasks.js +14 -11
  252. package/dist/lib/tmux-routing.js +11 -10
  253. package/dist/lib/tmux-status.js +1 -1
  254. package/dist/lib/tmux-transport.js +1 -1
  255. package/dist/lib/token-spend.js +6 -6
  256. package/dist/lib/transport.js +1 -1
  257. package/dist/lib/ws-auth.js +1 -1
  258. package/dist/lib/ws-client.js +2 -2
  259. package/dist/license-gate-J5YN264E.js +14 -0
  260. package/dist/mcp/register-tools.js +63 -62
  261. package/dist/mcp/server.js +65 -64
  262. package/dist/mcp/tools/complete-reminder.js +7 -7
  263. package/dist/mcp/tools/create-reminder.js +7 -7
  264. package/dist/mcp/tools/create-task.js +15 -13
  265. package/dist/mcp/tools/deactivate-behavior.js +8 -8
  266. package/dist/mcp/tools/list-reminders.js +7 -7
  267. package/dist/mcp/tools/list-tasks.js +14 -14
  268. package/dist/mcp/tools/send-message.js +14 -13
  269. package/dist/mcp/tools/update-task.js +13 -12
  270. package/dist/{mcp-diagnostics-CWMVPHVC.js → mcp-diagnostics-TSBY62UQ.js} +1 -1
  271. package/dist/{mcp-disconnect-tracker-RM3GEERR.js → mcp-disconnect-tracker-MB23DRS6.js} +1 -1
  272. package/dist/{mcp-http-config-PDGSOYNQ.js → mcp-http-config-6YLW4PFG.js} +6 -6
  273. package/dist/{memory-cards-OLE6MGO7.js → memory-cards-UAQCO4QR.js} +5 -5
  274. package/dist/{memory-poisoning-defense-OOHJIXIX.js → memory-poisoning-defense-VWITZ4WO.js} +5 -7
  275. package/dist/{memory-queue-TGWXMENR.js → memory-queue-NYIGZNCG.js} +4 -4
  276. package/dist/memory-queue-client-YJOLYALV.js +15 -0
  277. package/dist/{memory-reflection-Z7CT6JLY.js → memory-reflection-JQC4ZSUD.js} +5 -5
  278. package/dist/{message-queue-client-TWIA2GIH.js → message-queue-client-NTLKYGVO.js} +1 -1
  279. package/dist/{notifications-SREXGSAQ.js → notifications-YDOKTVCH.js} +11 -10
  280. package/dist/{oauth-server-NSWGKLLA.js → oauth-server-TOWAZR4K.js} +1 -1
  281. package/dist/{orchestration-phase-WLQMEP4M.js → orchestration-phase-FXKZYK6R.js} +4 -4
  282. package/dist/{orchestrator-CHQURQSC.js → orchestrator-BZ2D6ZM6.js} +13 -12
  283. package/dist/{permission-presets-3XKJNM6N.js → permission-presets-E3DZK46K.js} +1 -1
  284. package/dist/{permissions-EZH3ULLD.js → permissions-6MCWUDCD.js} +1 -1
  285. package/dist/{pg-ssl-4ZNXKUNH.js → pg-ssl-7JXQFL4I.js} +1 -1
  286. package/dist/{plan-limits-7L75PB33.js → plan-limits-KUTODKG6.js} +7 -7
  287. package/dist/{preferences-K2GKUQSJ.js → preferences-ERXO6SMJ.js} +3 -3
  288. package/dist/{project-name-OBIDABHE.js → project-name-EWG5KAZP.js} +1 -1
  289. package/dist/{projection-worker-HSGE44JA.js → projection-worker-UY7R2EQJ.js} +85 -8
  290. package/dist/{push-notifications-EOTMKJ6B.js → push-notifications-KDYFOJRI.js} +4 -4
  291. package/dist/{reranker-ME4CK2ZQ.js → reranker-OMADCS3D.js} +4 -4
  292. package/dist/{review-gate-M3U2YAW6.js → review-gate-IUNS6GQU.js} +1 -1
  293. package/dist/{review-polling-DQCN4TNM.js → review-polling-DORNZ2KI.js} +12 -11
  294. package/dist/runtime/index.js +14 -13
  295. package/dist/{self-query-router-TRPHL54X.js → self-query-router-37VB3PKQ.js} +1 -1
  296. package/dist/{session-events-ZZBFYL5Z.js → session-events-5WR5RVDK.js} +12 -12
  297. package/dist/{session-kill-telemetry-MUFET632.js → session-kill-telemetry-DHSQV2CI.js} +6 -6
  298. package/dist/{session-scope-QUUDZM2L.js → session-scope-D4Q62ZOZ.js} +13 -13
  299. package/dist/setup-wizard-3GVBHKHG.js +12 -0
  300. package/dist/{shard-manager-VYMJM7NR.js → shard-manager-SP4YL5JQ.js} +4 -4
  301. package/dist/{signal-C263RUND.js → signal-7UIRTYGZ.js} +1 -1
  302. package/dist/{slack-N7PL6QMX.js → slack-GCOYBZUK.js} +1 -1
  303. package/dist/{task-enforcement-WJ3S6JTL.js → task-enforcement-OYCQXBBC.js} +11 -10
  304. package/dist/{task-scanner-YHWRG4ZJ.js → task-scanner-QEM5CO2Y.js} +1 -1
  305. package/dist/{task-scope-V2CTRHG7.js → task-scope-WWRNU2LU.js} +11 -10
  306. package/dist/{tasks-crud-W2XPUGKK.js → tasks-crud-75AUVZPO.js} +13 -10
  307. package/dist/{tasks-review-BR2SBSYG.js → tasks-review-UMZN5ZPQ.js} +11 -10
  308. package/dist/{telegram-B54FFOXD.js → telegram-RGVD4LUY.js} +1 -1
  309. package/dist/{telemetry-7IQCPV4Q.js → telemetry-43X3GT3R.js} +1 -1
  310. package/dist/{token-budget-H2XSWO4D.js → token-budget-62TYDIMI.js} +5 -5
  311. package/dist/{tool-capability-index-5X2CCGIK.js → tool-capability-index-OBZXORBP.js} +2 -2
  312. package/dist/{tool-gates-SGFMDREY.js → tool-gates-3IC7DK4R.js} +1 -1
  313. package/dist/{tool-gates-3DNTD7G3.js → tool-gates-GXSYBVK4.js} +1 -1
  314. package/dist/{tool-registry-2VUAZXTW.js → tool-registry-5XN3FUYL.js} +1 -1
  315. package/dist/{tool-telemetry-NVPSPRYP.js → tool-telemetry-JL6NY3KP.js} +2 -2
  316. package/dist/tui/App.js +44 -43
  317. package/dist/{tui-data-QN4O565C.js → tui-data-C5I2YU4C.js} +11 -10
  318. package/dist/{update-check-ERUKV2G6.js → update-check-MKHO7H6B.js} +1 -1
  319. package/dist/{webhook-L5FGAUPJ.js → webhook-LCW7UP4L.js} +1 -1
  320. package/dist/{webhook-pipe-B7GJCJAI.js → webhook-pipe-PJOFVBD3.js} +1 -1
  321. package/dist/{whatsapp-7FK2PRWO.js → whatsapp-SILL4V64.js} +1 -1
  322. package/dist/{whatsapp-accounts-VIHRSLGB.js → whatsapp-accounts-BWRZUY23.js} +1 -1
  323. package/dist/{wiki-acl-R4IIHICT.js → wiki-acl-5EC5VNYG.js} +1 -1
  324. package/dist/{wiki-client-EUDJA7O2.js → wiki-client-MMVRPTPK.js} +1 -1
  325. package/dist/{worker-gate-3KDXLIJC.js → worker-gate-Q5Y6B5N7.js} +4 -4
  326. package/dist/{workflow-engine-GISKRYSO.js → workflow-engine-KAKVU7NC.js} +3 -3
  327. package/dist/{worktree-B3FHAHEM.js → worktree-OMPQEJH7.js} +1 -1
  328. package/package.json +2 -2
  329. package/release-notes.json +85 -85
  330. package/src/commands/exe/setup.md +1 -1
  331. package/dist/chunk-PNKVD2UK.js +0 -26
  332. package/dist/fast-db-init-67TQTHWT.js +0 -7
  333. package/dist/license-gate-JY2KFIKO.js +0 -14
  334. package/dist/memory-queue-client-RZP5F4EA.js +0 -15
  335. package/dist/setup-wizard-NXWCEK63.js +0 -12
  336. package/dist/{chunk-D5MPHVWH.js → chunk-524VLFFY.js} +0 -0
  337. package/dist/{chunk-HIQ5RDA7.js → chunk-A3A2E42I.js} +0 -0
  338. package/dist/{chunk-APRP5D27.js → chunk-H6ADW3YC.js} +0 -0
  339. package/dist/{chunk-AAVODJ4F.js → chunk-J2OPV5FE.js} +0 -0
  340. package/dist/{chunk-DBLBWWFS.js → chunk-S6DA6UKC.js} +3 -3
  341. /package/dist/{chunk-F3ULERRZ.js → chunk-TSCZMB3P.js} +0 -0
  342. /package/dist/{chunk-2HV2EQW2.js → chunk-WRU72I4S.js} +0 -0
@@ -5,21 +5,21 @@ import {
5
5
  } from "../chunk-46SQTBQW.js";
6
6
  import {
7
7
  fastDbInit
8
- } from "../chunk-UVH6FA5E.js";
8
+ } from "../chunk-UU6YYTYH.js";
9
9
  import {
10
10
  disposeStore
11
- } from "../chunk-7APRWURX.js";
12
- import "../chunk-D5MPHVWH.js";
11
+ } from "../chunk-PMUKZYTR.js";
12
+ import "../chunk-524VLFFY.js";
13
13
  import "../chunk-MP2AFCGL.js";
14
14
  import {
15
15
  getClient
16
- } from "../chunk-NA3MXUU6.js";
17
- import "../chunk-6BUUY7FG.js";
16
+ } from "../chunk-TH6HTK2L.js";
17
+ import "../chunk-EOO32RJZ.js";
18
18
  import "../chunk-FXU7JOXK.js";
19
19
  import "../chunk-6D23UNXU.js";
20
- import "../chunk-KHV55ME4.js";
21
- import "../chunk-GCMT6RWI.js";
22
- import "../chunk-PNKVD2UK.js";
20
+ import "../chunk-TOWAZ5IV.js";
21
+ import "../chunk-LYH5HE24.js";
22
+ import "../chunk-MLKGABMK.js";
23
23
 
24
24
  // src/bin/graph-export.ts
25
25
  import { writeFileSync, mkdirSync, existsSync } from "fs";
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  pgSslConfig
4
4
  } from "../chunk-EQSQ4HBW.js";
5
- import "../chunk-PNKVD2UK.js";
5
+ import "../chunk-MLKGABMK.js";
6
6
 
7
7
  // src/bin/graph-layer-benchmark.ts
8
8
  import { Client } from "pg";
@@ -4,22 +4,23 @@ import {
4
4
  resolvePackageRoot,
5
5
  runInstaller,
6
6
  setupGhostty,
7
- setupTmux
8
- } from "../chunk-IBVB2NGY.js";
9
- import "../chunk-CWPE6QVM.js";
10
- import "../chunk-B6Q6WAD7.js";
7
+ setupTmux,
8
+ setupWezterm
9
+ } from "../chunk-TOXHEZN5.js";
10
+ import "../chunk-GNHN5HRQ.js";
11
+ import "../chunk-EHNSK2Y4.js";
11
12
  import {
12
13
  generateSessionWrappers
13
14
  } from "../chunk-ZHMQDTGE.js";
14
15
  import "../chunk-L3TB7CC3.js";
15
- import "../chunk-Y2VVTK2E.js";
16
+ import "../chunk-DTLASDQM.js";
16
17
  import "../chunk-HYZV25LY.js";
17
- import "../chunk-NA3MXUU6.js";
18
- import "../chunk-6BUUY7FG.js";
18
+ import "../chunk-TH6HTK2L.js";
19
+ import "../chunk-EOO32RJZ.js";
19
20
  import "../chunk-FXU7JOXK.js";
20
- import "../chunk-KHV55ME4.js";
21
- import "../chunk-GCMT6RWI.js";
22
- import "../chunk-PNKVD2UK.js";
21
+ import "../chunk-TOWAZ5IV.js";
22
+ import "../chunk-LYH5HE24.js";
23
+ import "../chunk-MLKGABMK.js";
23
24
 
24
25
  // src/bin/install.ts
25
26
  import { existsSync, readFileSync, writeFileSync, unlinkSync, readdirSync, openSync, closeSync, renameSync, constants, writeSync } from "fs";
@@ -220,8 +221,32 @@ function restartDaemon() {
220
221
  } catch {
221
222
  }
222
223
  }
223
- process.stderr.write(`exe-os: daemon restarted (new PID spawned)
224
+ const DAEMON_PORT = 48739;
225
+ let daemonHealthy = false;
226
+ for (let attempt = 1; attempt <= 10; attempt++) {
227
+ try {
228
+ execSync("sleep 1");
229
+ } catch {
230
+ }
231
+ try {
232
+ const healthResp = execSync(
233
+ `curl -sf http://127.0.0.1:${DAEMON_PORT}/health 2>/dev/null`,
234
+ { encoding: "utf8", timeout: 3e3 }
235
+ );
236
+ if (healthResp.includes("ok") || healthResp.includes("healthy")) {
237
+ daemonHealthy = true;
238
+ break;
239
+ }
240
+ } catch {
241
+ }
242
+ }
243
+ if (daemonHealthy) {
244
+ process.stderr.write(`exe-os: daemon restarted and healthy
224
245
  `);
246
+ } else {
247
+ process.stderr.write(`exe-os: daemon spawned but health check did not pass (may still be starting)
248
+ `);
249
+ }
225
250
  } catch (err) {
226
251
  process.stderr.write(`exe-os: daemon respawn failed: ${err instanceof Error ? err.message : String(err)}
227
252
  `);
@@ -246,6 +271,7 @@ if (args.includes("--commands-only")) {
246
271
  await runInstaller();
247
272
  setupTmux();
248
273
  setupGhostty();
274
+ setupWezterm();
249
275
  try {
250
276
  const { normalizeRosterCase } = await import("../lib/employees.js");
251
277
  const changed = await normalizeRosterCase();
@@ -271,7 +297,7 @@ if (args.includes("--commands-only")) {
271
297
  }
272
298
  try {
273
299
  execSync("which codex", { encoding: "utf8", timeout: 5e3 });
274
- const { runCodexInstaller } = await import("../installer-PB63JTTG.js");
300
+ const { runCodexInstaller } = await import("../installer-RLKOACKG.js");
275
301
  await runCodexInstaller();
276
302
  } catch {
277
303
  }
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  fastDbInit
4
- } from "../chunk-UVH6FA5E.js";
5
- import "../chunk-PNKVD2UK.js";
4
+ } from "../chunk-UU6YYTYH.js";
5
+ import "../chunk-MLKGABMK.js";
6
6
 
7
7
  // src/bin/intercom-check.ts
8
8
  async function main() {
@@ -17,9 +17,8 @@ async function main() {
17
17
  }
18
18
  if (isCoordinator) {
19
19
  try {
20
- const { listPendingReviews, cleanupOrphanedReviews, formatAge, isStale } = await import("../tasks-review-BR2SBSYG.js");
20
+ const { listPendingReviews, cleanupOrphanedReviews, formatAge, isStale } = await import("../tasks-review-UMZN5ZPQ.js");
21
21
  const { extractRootExe } = await import("../lib/tmux-routing.js");
22
- await cleanupOrphanedReviews();
23
22
  let sessionScope = process.env.EXE_SESSION ? extractRootExe(process.env.EXE_SESSION) ?? void 0 : void 0;
24
23
  if (!sessionScope) {
25
24
  try {
@@ -29,7 +28,14 @@ async function main() {
29
28
  } catch {
30
29
  }
31
30
  }
32
- const reviews = await listPendingReviews(10, sessionScope);
31
+ await cleanupOrphanedReviews(sessionScope);
32
+ let reviewProject;
33
+ try {
34
+ const { getProjectName } = await import("../project-name-EWG5KAZP.js");
35
+ reviewProject = getProjectName() || void 0;
36
+ } catch {
37
+ }
38
+ const reviews = await listPendingReviews(10, sessionScope, reviewProject);
33
39
  if (reviews.length > 0) {
34
40
  process.stdout.write("[REVIEW NOTIFICATIONS]\n");
35
41
  for (const r of reviews.slice(0, 10)) {
@@ -44,7 +50,7 @@ async function main() {
44
50
  } else {
45
51
  try {
46
52
  const { scanFromDb } = await import("./scan-tasks.js");
47
- const { getProjectName } = await import("../project-name-OBIDABHE.js");
53
+ const { getProjectName } = await import("../project-name-EWG5KAZP.js");
48
54
  const tmuxSession = process.env.EXE_SESSION_NAME;
49
55
  const projectName = getProjectName() || void 0;
50
56
  const result = await scanFromDb(agent, tmuxSession, projectName);
@@ -90,7 +96,7 @@ async function main() {
90
96
  }
91
97
  if (!isCoordinator) {
92
98
  try {
93
- const { listBehaviors } = await import("../behaviors-TXLHEM5J.js");
99
+ const { listBehaviors } = await import("../behaviors-4U2N5L4E.js");
94
100
  const sessionStart = process.env.EXE_SESSION_START_ISO ?? "";
95
101
  if (sessionStart) {
96
102
  const behaviors = await listBehaviors(agent);
@@ -109,7 +115,7 @@ async function main() {
109
115
  }
110
116
  }
111
117
  try {
112
- const { readUnreadNotifications, markAsRead } = await import("../notifications-SREXGSAQ.js");
118
+ const { readUnreadNotifications, markAsRead } = await import("../notifications-YDOKTVCH.js");
113
119
  const { resolveExeSession } = await import("../lib/tmux-routing.js");
114
120
  const sessionScope = resolveExeSession();
115
121
  const notifications = await readUnreadNotifications(agent, sessionScope);
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  isMainModule
4
4
  } from "../chunk-6Y4B3QF6.js";
5
- import "../chunk-PNKVD2UK.js";
5
+ import "../chunk-MLKGABMK.js";
6
6
 
7
7
  // src/bin/list-providers.ts
8
8
  import { existsSync, readFileSync } from "fs";
@@ -1,18 +1,18 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  buildReflectionCheckpoint
4
- } from "../chunk-WTJS6PCC.js";
5
- import "../chunk-APRP5D27.js";
4
+ } from "../chunk-YOG7TWMO.js";
5
+ import "../chunk-H6ADW3YC.js";
6
6
  import {
7
7
  pgSslConfig
8
8
  } from "../chunk-EQSQ4HBW.js";
9
9
  import {
10
10
  politeBatchPause,
11
11
  startManagedJob
12
- } from "../chunk-F7JVVLGH.js";
13
- import "../chunk-KHV55ME4.js";
14
- import "../chunk-GCMT6RWI.js";
15
- import "../chunk-PNKVD2UK.js";
12
+ } from "../chunk-6YUACQQA.js";
13
+ import "../chunk-TOWAZ5IV.js";
14
+ import "../chunk-LYH5HE24.js";
15
+ import "../chunk-MLKGABMK.js";
16
16
 
17
17
  // src/bin/postgres-agentic-reflection-backfill.ts
18
18
  import { Client } from "pg";
@@ -2,17 +2,17 @@
2
2
  import {
3
3
  inferSemanticLabel,
4
4
  stableId
5
- } from "../chunk-APRP5D27.js";
5
+ } from "../chunk-H6ADW3YC.js";
6
6
  import {
7
7
  pgSslConfig
8
8
  } from "../chunk-EQSQ4HBW.js";
9
9
  import {
10
10
  politeBatchPause,
11
11
  startManagedJob
12
- } from "../chunk-F7JVVLGH.js";
13
- import "../chunk-KHV55ME4.js";
14
- import "../chunk-GCMT6RWI.js";
15
- import "../chunk-PNKVD2UK.js";
12
+ } from "../chunk-6YUACQQA.js";
13
+ import "../chunk-TOWAZ5IV.js";
14
+ import "../chunk-LYH5HE24.js";
15
+ import "../chunk-MLKGABMK.js";
16
16
 
17
17
  // src/bin/postgres-agentic-semantic-backfill.ts
18
18
  import { Client } from "pg";
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  PLATFORM_PROCEDURES
4
- } from "../chunk-MPXPPKJ4.js";
5
- import "../chunk-PNKVD2UK.js";
4
+ } from "../chunk-GKFSZKUD.js";
5
+ import "../chunk-MLKGABMK.js";
6
6
 
7
7
  // src/bin/pre-publish.ts
8
8
  import { readFileSync as readFileSync2 } from "fs";
@@ -6,7 +6,7 @@ import {
6
6
  import {
7
7
  isMainModule
8
8
  } from "../chunk-6Y4B3QF6.js";
9
- import "../chunk-PNKVD2UK.js";
9
+ import "../chunk-MLKGABMK.js";
10
10
 
11
11
  // src/bin/registry-proxy.ts
12
12
  function printHelp() {
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
- sessionScopeFilter
4
- } from "../chunk-H4YONWQX.js";
3
+ queryTaskRows
4
+ } from "../chunk-ONMRBKAX.js";
5
5
  import "../chunk-LOQCOHEW.js";
6
6
  import "../chunk-TXSJ2L5O.js";
7
7
  import "../chunk-64WZEXXA.js";
@@ -9,26 +9,27 @@ import "../chunk-3TXOH3SJ.js";
9
9
  import "../chunk-RLCZBSUB.js";
10
10
  import "../chunk-GZIAQYGI.js";
11
11
  import "../chunk-ZQX6UOP6.js";
12
- import "../chunk-G3VR3MJI.js";
12
+ import "../chunk-KIUU4PNX.js";
13
13
  import "../chunk-NGP6LSV2.js";
14
- import "../chunk-XEA6DSLR.js";
14
+ import "../chunk-AERGE6GC.js";
15
+ import "../chunk-OPU3NYOO.js";
15
16
  import {
16
17
  getSessionRuntime
17
18
  } from "../chunk-CVYC6DUW.js";
18
19
  import "../chunk-GJV3WDWM.js";
19
20
  import "../chunk-MP2AFCGL.js";
20
- import "../chunk-Y2VVTK2E.js";
21
+ import "../chunk-DTLASDQM.js";
21
22
  import "../chunk-HYZV25LY.js";
22
- import "../chunk-NA3MXUU6.js";
23
- import "../chunk-6BUUY7FG.js";
23
+ import "../chunk-TH6HTK2L.js";
24
+ import "../chunk-EOO32RJZ.js";
24
25
  import "../chunk-FXU7JOXK.js";
25
- import "../chunk-I5VJNTDL.js";
26
- import "../chunk-KHV55ME4.js";
27
- import "../chunk-GCMT6RWI.js";
26
+ import "../chunk-NNT2ZNMC.js";
27
+ import "../chunk-TOWAZ5IV.js";
28
+ import "../chunk-LYH5HE24.js";
28
29
  import {
29
30
  isMainModule
30
31
  } from "../chunk-6Y4B3QF6.js";
31
- import "../chunk-PNKVD2UK.js";
32
+ import "../chunk-MLKGABMK.js";
32
33
 
33
34
  // src/bin/scan-tasks.ts
34
35
  import { existsSync, readFileSync } from "fs";
@@ -71,48 +72,28 @@ function checkMcpHealth() {
71
72
  }
72
73
  }
73
74
  async function scanFromDb(agentId, tmuxSession, projectName) {
74
- const { fastDbInit } = await import("../fast-db-init-67TQTHWT.js");
75
- let client;
75
+ const { fastDbInit } = await import("../fast-db-init-JI5U4KWG.js");
76
76
  try {
77
- client = await fastDbInit();
77
+ await fastDbInit();
78
78
  } catch (err) {
79
79
  process.stderr.write(`[scan-tasks] FATAL: ${err instanceof Error ? err.message : String(err)}
80
80
  `);
81
81
  return { open: [], inProgress: [], done: 0, total: 0 };
82
82
  }
83
- let resolvedProject = projectName;
84
- if (resolvedProject === void 0) {
85
- try {
86
- const { getProjectName } = await import("../project-name-OBIDABHE.js");
87
- resolvedProject = getProjectName();
88
- } catch {
89
- }
90
- }
91
- let resolvedSession = null;
92
- try {
93
- const { resolveExeSession } = await import("../lib/tmux-routing.js");
94
- resolvedSession = resolveExeSession();
95
- } catch {
96
- }
97
- const sessionFilter = resolvedSession ? " AND (session_scope IS NULL OR session_scope = ?)" : "";
98
- const sessionArgs = resolvedSession ? [resolvedSession] : [];
99
- const sql = resolvedProject ? `SELECT id, title, priority, status, assigned_to, reviewer, assigned_tmux, checkpoint, checkpoint_count FROM tasks
100
- WHERE ((assigned_to = ? AND status IN ('open', 'in_progress', 'blocked', 'needs_review'))
101
- OR (reviewer = ? AND status = 'needs_review'))
102
- AND project_name = ?${sessionFilter}
103
- ORDER BY CASE status WHEN 'in_progress' THEN 0 WHEN 'open' THEN 1 WHEN 'blocked' THEN 2 WHEN 'needs_review' THEN 3 ELSE 4 END,
104
- priority ASC, created_at DESC` : `SELECT id, title, priority, status, assigned_to, reviewer, assigned_tmux, checkpoint, checkpoint_count FROM tasks
105
- WHERE ((assigned_to = ? AND status IN ('open', 'in_progress', 'blocked', 'needs_review'))
106
- OR (reviewer = ? AND status = 'needs_review'))
107
- ${sessionFilter ? "AND" + sessionFilter.slice(4) : ""}
108
- ORDER BY CASE status WHEN 'in_progress' THEN 0 WHEN 'open' THEN 1 WHEN 'blocked' THEN 2 WHEN 'needs_review' THEN 3 ELSE 4 END,
109
- priority ASC, created_at DESC`;
110
- const args = resolvedProject ? [agentId, agentId, resolvedProject, ...sessionArgs] : [agentId, agentId, ...sessionArgs];
111
- const result = await client.execute({ sql, args });
83
+ const rows = await queryTaskRows({
84
+ projectName: projectName === void 0 ? void 0 : projectName ?? null,
85
+ columns: "id, title, priority, status, assigned_to, reviewer, assigned_tmux, checkpoint, checkpoint_count",
86
+ limit: 1e3,
87
+ orderBy: "CASE status WHEN 'in_progress' THEN 0 WHEN 'open' THEN 1 WHEN 'blocked' THEN 2 WHEN 'needs_review' THEN 3 ELSE 4 END, priority ASC, created_at DESC",
88
+ extraConditions: [
89
+ "((assigned_to = ? AND status IN ('open', 'in_progress', 'blocked', 'needs_review')) OR (reviewer = ? AND status = 'needs_review'))"
90
+ ],
91
+ extraArgs: [agentId, agentId]
92
+ });
112
93
  const open = [];
113
94
  const inProgress = [];
114
95
  let done = 0;
115
- for (const row of result.rows) {
96
+ for (const row of rows) {
116
97
  const status = String(row.status);
117
98
  const claimedBy = row.assigned_tmux == null ? null : String(row.assigned_tmux);
118
99
  const task = {
@@ -130,15 +111,33 @@ async function scanFromDb(agentId, tmuxSession, projectName) {
130
111
  }
131
112
  inProgress.push(task);
132
113
  } else if (status === "open") {
114
+ if (claimedBy && claimedBy !== "unknown" && tmuxSession) {
115
+ const mine = claimedBy === tmuxSession || claimedBy.startsWith(`${tmuxSession}:`);
116
+ if (!mine) continue;
117
+ }
133
118
  open.push(task);
134
119
  }
135
120
  }
136
- const stScope = sessionScopeFilter();
137
- const doneResult = await client.execute({
138
- sql: `SELECT COUNT(*) as cnt FROM tasks WHERE assigned_to = ? AND status = 'done'${stScope.sql}`,
139
- args: [agentId, ...stScope.args]
121
+ const doneRows = await queryTaskRows({
122
+ assignedTo: agentId,
123
+ status: "done",
124
+ columns: "COUNT(*) as cnt",
125
+ limit: 1,
126
+ orderBy: "1"
127
+ // no-op order for COUNT
140
128
  });
141
- done = Number(doneResult.rows[0]?.cnt ?? 0);
129
+ done = Number(doneRows[0]?.cnt ?? 0);
130
+ if (open.length > 0 && tmuxSession && tmuxSession !== "unknown") {
131
+ const topTask = open[0];
132
+ try {
133
+ const { getClient } = await import("../lib/database.js");
134
+ await getClient().execute({
135
+ sql: "UPDATE tasks SET assigned_tmux = ? WHERE id = ? AND (assigned_tmux IS NULL OR assigned_tmux = 'unknown')",
136
+ args: [tmuxSession, topTask.id]
137
+ });
138
+ } catch {
139
+ }
140
+ }
142
141
  return { open, inProgress, done, total: open.length + inProgress.length + done };
143
142
  }
144
143
  function formatText(_agentId, result) {
package/dist/bin/setup.js CHANGED
@@ -1,17 +1,18 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  runSetupWizard
4
- } from "../chunk-H6OEU54G.js";
4
+ } from "../chunk-44XTE6NK.js";
5
5
  import "../chunk-6D23UNXU.js";
6
- import "../chunk-KHV55ME4.js";
7
- import "../chunk-GCMT6RWI.js";
8
- import "../chunk-PNKVD2UK.js";
6
+ import "../chunk-TOWAZ5IV.js";
7
+ import "../chunk-LYH5HE24.js";
8
+ import "../chunk-MLKGABMK.js";
9
9
 
10
10
  // src/bin/setup.ts
11
11
  var args = process.argv.slice(2);
12
12
  var skipModel = args.includes("--skip-model");
13
+ var nonInteractive = args.includes("--non-interactive") || args.includes("--yes") || args.includes("-y");
13
14
  try {
14
- await runSetupWizard({ skipModel });
15
+ await runSetupWizard({ skipModel, nonInteractive });
15
16
  } catch (err) {
16
17
  console.error("Setup failed:", err instanceof Error ? err.message : String(err));
17
18
  process.exit(1);
@@ -4,24 +4,24 @@ import {
4
4
  getReadyShardClient,
5
5
  getShardsDir,
6
6
  initShardManager
7
- } from "../chunk-TFZZL3QF.js";
7
+ } from "../chunk-ICKEGWWP.js";
8
8
  import {
9
9
  disposeStore,
10
10
  initStore
11
- } from "../chunk-7APRWURX.js";
12
- import "../chunk-D5MPHVWH.js";
11
+ } from "../chunk-PMUKZYTR.js";
12
+ import "../chunk-524VLFFY.js";
13
13
  import "../chunk-MP2AFCGL.js";
14
14
  import {
15
15
  getClient
16
- } from "../chunk-NA3MXUU6.js";
17
- import "../chunk-6BUUY7FG.js";
16
+ } from "../chunk-TH6HTK2L.js";
17
+ import "../chunk-EOO32RJZ.js";
18
18
  import "../chunk-FXU7JOXK.js";
19
19
  import {
20
20
  getMasterKey
21
21
  } from "../chunk-6D23UNXU.js";
22
- import "../chunk-KHV55ME4.js";
23
- import "../chunk-GCMT6RWI.js";
24
- import "../chunk-PNKVD2UK.js";
22
+ import "../chunk-TOWAZ5IV.js";
23
+ import "../chunk-LYH5HE24.js";
24
+ import "../chunk-MLKGABMK.js";
25
25
 
26
26
  // src/bin/shard-migrate.ts
27
27
  import { existsSync, writeFileSync } from "fs";
@@ -1,13 +1,13 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  loadLicense
4
- } from "../chunk-I5VJNTDL.js";
5
- import "../chunk-KHV55ME4.js";
6
- import "../chunk-GCMT6RWI.js";
4
+ } from "../chunk-NNT2ZNMC.js";
5
+ import "../chunk-TOWAZ5IV.js";
6
+ import "../chunk-LYH5HE24.js";
7
7
  import {
8
8
  isMainModule
9
9
  } from "../chunk-6Y4B3QF6.js";
10
- import "../chunk-PNKVD2UK.js";
10
+ import "../chunk-MLKGABMK.js";
11
11
 
12
12
  // src/bin/stack-update.ts
13
13
  import { readFileSync as readFileSync2 } from "fs";
@@ -527,7 +527,63 @@ async function runStackUpdate(options) {
527
527
  registryForLogout = creds.registry;
528
528
  }
529
529
  exec("docker", [...composeArgs, "pull"]);
530
- exec("docker", [...composeArgs, "up", "-d"]);
530
+ const RESTART_ORDER = [
531
+ "crm-postgres",
532
+ // data layer — must be healthy before apps
533
+ "clickhouse",
534
+ "redis",
535
+ "exed",
536
+ // daemon — has its own health endpoint
537
+ "exe-crm",
538
+ // CRM app
539
+ "exe-crm-worker",
540
+ // CRM background worker
541
+ "exe-gateway",
542
+ // gateway — WhatsApp connections
543
+ "exe-wiki"
544
+ // wiki
545
+ ];
546
+ const preSnapshot = spawnSync("docker", ["ps", "--format", "json"], { encoding: "utf8", timeout: 1e4 });
547
+ const preContainerCount = preSnapshot.stdout?.split("\n").filter(Boolean).length ?? 0;
548
+ console.log(`[stack-update] Pre-update snapshot: ${preContainerCount} containers`);
549
+ for (const service of RESTART_ORDER) {
550
+ const psResult = spawnSync("docker", [...composeArgs, "ps", "--quiet", service], {
551
+ encoding: "utf8",
552
+ stdio: ["pipe", "pipe", "pipe"],
553
+ timeout: 1e4
554
+ });
555
+ if (psResult.status !== 0) continue;
556
+ exec("docker", [...composeArgs, "up", "-d", "--no-deps", service]);
557
+ const maxWait = 60;
558
+ let healthy = false;
559
+ for (let i = 0; i < maxWait; i++) {
560
+ const inspectResult = spawnSync(
561
+ "docker",
562
+ ["inspect", "--format", "{{.State.Health.Status}}", service],
563
+ { encoding: "utf8", timeout: 5e3 }
564
+ );
565
+ const status = inspectResult.stdout?.trim();
566
+ if (status === "healthy") {
567
+ healthy = true;
568
+ break;
569
+ }
570
+ if (status === "" || inspectResult.status !== 0) {
571
+ healthy = true;
572
+ break;
573
+ }
574
+ await new Promise((r) => setTimeout(r, 1e3));
575
+ }
576
+ if (!healthy) {
577
+ throw new Error(`Service ${service} failed health check after ${maxWait}s \u2014 aborting update`);
578
+ }
579
+ console.log(`[stack-update] \u2713 ${service} restarted and healthy`);
580
+ }
581
+ const postSnapshot = spawnSync("docker", ["ps", "--format", "json"], { encoding: "utf8", timeout: 1e4 });
582
+ const postContainerCount = postSnapshot.stdout?.split("\n").filter(Boolean).length ?? 0;
583
+ console.log(`[stack-update] Post-update snapshot: ${postContainerCount} containers (was ${preContainerCount})`);
584
+ if (postContainerCount < preContainerCount) {
585
+ console.warn(`[stack-update] \u26A0 Container count dropped from ${preContainerCount} to ${postContainerCount}`);
586
+ }
531
587
  await verifyReleaseHealth(plan.release, options.healthRetries ?? 12, options.healthDelayMs ?? 5e3);
532
588
  writeFileSync(lockFile, JSON.stringify({ stackVersion: plan.targetVersion, updatedAt: now().toISOString(), backupEnvFile, services: plan.release.services }, null, 2) + "\n");
533
589
  await postDeployAudit(options, "success", plan.targetVersion, previousVersion, void 0, { changes: plan.changes.length });
@@ -657,16 +713,16 @@ function defaultStackPaths() {
657
713
  const cwdCompose = path.resolve("docker-compose.yml");
658
714
  const cwdEnv = path.resolve(".env");
659
715
  const packagedManifest = path.join(resolvePackageRoot(), "deploy", "stack-manifests", "v0.9.json");
660
- const manifestRef = process.env.EXE_STACK_MANIFEST || (existsSync(packagedManifest) ? packagedManifest : "https://cloud.askexe.com/stack-manifest.json");
716
+ const manifestRef = process.env.EXE_STACK_MANIFEST || (existsSync(packagedManifest) ? packagedManifest : "https://api.askexe.com/stack-manifest.json");
661
717
  return {
662
718
  composeFile: process.env.EXE_STACK_COMPOSE_FILE || (existsSync(cwdCompose) ? cwdCompose : "/opt/exe-stack/docker-compose.yml"),
663
719
  envFile: process.env.EXE_STACK_ENV_FILE || (existsSync(cwdEnv) ? cwdEnv : "/opt/exe-stack/.env"),
664
720
  manifestRef,
665
- // Only call cloud.askexe.com if explicitly configured or if a remote manifest was requested.
721
+ // Only call api.askexe.com if explicitly configured or if a remote manifest was requested.
666
722
  // Packaged manifests keep cold-start installs unblocked even before update-service entitlements are provisioned.
667
- auditUrl: process.env.EXE_STACK_AUDIT_URL || (/^https?:\/\//.test(manifestRef) ? "https://cloud.askexe.com/v1/deploy-audits" : void 0),
668
- imageCredentialsUrl: process.env.EXE_STACK_IMAGE_CREDENTIALS_URL || (/^https?:\/\//.test(manifestRef) ? "https://cloud.askexe.com/v1/image-credentials" : void 0),
669
- // License key IS the auth token for cloud.askexe.com — no separate update token needed.
723
+ auditUrl: process.env.EXE_STACK_AUDIT_URL || (/^https?:\/\//.test(manifestRef) ? "https://api.askexe.com/v1/deploy-audits" : void 0),
724
+ imageCredentialsUrl: process.env.EXE_STACK_IMAGE_CREDENTIALS_URL || (/^https?:\/\//.test(manifestRef) ? "https://api.askexe.com/v1/image-credentials" : void 0),
725
+ // License key IS the auth token for api.askexe.com — no separate update token needed.
670
726
  // EXE_STACK_UPDATE_TOKEN kept as legacy fallback during migration.
671
727
  manifestAuthToken: process.env.EXE_LICENSE_KEY || loadLicense() || process.env.EXE_STACK_UPDATE_TOKEN || void 0,
672
728
  manifestPublicKey: loadDefaultPublicKey()
@@ -7,7 +7,7 @@ import {
7
7
  import {
8
8
  isMainModule
9
9
  } from "../chunk-6Y4B3QF6.js";
10
- import "../chunk-PNKVD2UK.js";
10
+ import "../chunk-MLKGABMK.js";
11
11
 
12
12
  // src/bin/update.ts
13
13
  import { execSync } from "child_process";
@@ -1,12 +1,10 @@
1
1
  import {
2
- EXE_AI_DIR,
3
- init_config
4
- } from "./chunk-KHV55ME4.js";
5
- import "./chunk-GCMT6RWI.js";
6
- import "./chunk-PNKVD2UK.js";
2
+ EXE_AI_DIR
3
+ } from "./chunk-TOWAZ5IV.js";
4
+ import "./chunk-LYH5HE24.js";
5
+ import "./chunk-MLKGABMK.js";
7
6
 
8
7
  // src/lib/branding.ts
9
- init_config();
10
8
  import { readFileSync, writeFileSync, existsSync, mkdirSync } from "fs";
11
9
  import path from "path";
12
10
  var BRANDING_PATH = path.join(EXE_AI_DIR, "branding.json");
@@ -8,9 +8,9 @@ import {
8
8
  isAtCapacity,
9
9
  isWithinRelaunchCooldown,
10
10
  pollCapacityDead
11
- } from "./chunk-I4WAKJ6W.js";
12
- import "./chunk-NE6RPW5C.js";
13
- import "./chunk-H4YONWQX.js";
11
+ } from "./chunk-J4RAXKTC.js";
12
+ import "./chunk-PMWDO5FR.js";
13
+ import "./chunk-ONMRBKAX.js";
14
14
  import "./chunk-LOQCOHEW.js";
15
15
  import "./chunk-TXSJ2L5O.js";
16
16
  import "./chunk-64WZEXXA.js";
@@ -18,21 +18,22 @@ import "./chunk-3TXOH3SJ.js";
18
18
  import "./chunk-RLCZBSUB.js";
19
19
  import "./chunk-GZIAQYGI.js";
20
20
  import "./chunk-ZQX6UOP6.js";
21
- import "./chunk-G3VR3MJI.js";
21
+ import "./chunk-KIUU4PNX.js";
22
22
  import "./chunk-NGP6LSV2.js";
23
- import "./chunk-XEA6DSLR.js";
23
+ import "./chunk-AERGE6GC.js";
24
+ import "./chunk-OPU3NYOO.js";
24
25
  import "./chunk-CVYC6DUW.js";
25
26
  import "./chunk-GJV3WDWM.js";
26
27
  import "./chunk-MP2AFCGL.js";
27
- import "./chunk-Y2VVTK2E.js";
28
+ import "./chunk-DTLASDQM.js";
28
29
  import "./chunk-HYZV25LY.js";
29
- import "./chunk-NA3MXUU6.js";
30
- import "./chunk-6BUUY7FG.js";
30
+ import "./chunk-TH6HTK2L.js";
31
+ import "./chunk-EOO32RJZ.js";
31
32
  import "./chunk-FXU7JOXK.js";
32
- import "./chunk-I5VJNTDL.js";
33
- import "./chunk-KHV55ME4.js";
34
- import "./chunk-GCMT6RWI.js";
35
- import "./chunk-PNKVD2UK.js";
33
+ import "./chunk-NNT2ZNMC.js";
34
+ import "./chunk-TOWAZ5IV.js";
35
+ import "./chunk-LYH5HE24.js";
36
+ import "./chunk-MLKGABMK.js";
36
37
  export {
37
38
  CTX_FLOOR_PERCENT,
38
39
  _resetLastRelaunchCache,