@askexenow/exe-os 0.9.302 → 0.9.310

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 (311) hide show
  1. package/deploy/compose/.env.example +8 -2
  2. package/deploy/compose/README.md +7 -3
  3. package/deploy/compose/add-routes.sh +107 -0
  4. package/deploy/compose/docker-compose.yml +91 -18
  5. package/deploy/compose/gateway-watchdog.sh +223 -0
  6. package/deploy/compose/generate-env.ts +16 -4
  7. package/deploy/compose/setup.sh +7 -8
  8. package/deploy/stack-manifests/v0.9.json +125 -4
  9. package/dist/{active-agent-ODI6GGVD.js → active-agent-ORX47ZKW.js} +4 -3
  10. package/dist/{active-agent-GGQAP4QE.js → active-agent-S5T2YMOR.js} +4 -3
  11. package/dist/{agentic-ontology-M7T72M6V.js → agentic-ontology-6KBAXLSJ.js} +1 -1
  12. package/dist/{backfill-metadata-GSZP2BEW.js → backfill-metadata-FV7GX6AS.js} +5 -4
  13. package/dist/{behaviors-JM6KFSXL.js → behaviors-47CPEKJ7.js} +6 -5
  14. package/dist/bin/agentic-ontology-backfill.js +6 -5
  15. package/dist/bin/agentic-reflection-backfill.js +7 -6
  16. package/dist/bin/agentic-semantic-label.js +6 -5
  17. package/dist/bin/backfill-conversations.js +8 -7
  18. package/dist/bin/backfill-responses.js +8 -7
  19. package/dist/bin/backfill-vectors.js +10 -9
  20. package/dist/bin/bulk-sync-postgres.js +14 -13
  21. package/dist/bin/cc-doctor.js +5 -4
  22. package/dist/bin/cleanup-stale-review-tasks.js +13 -12
  23. package/dist/bin/cli.js +20 -17
  24. package/dist/bin/deferred-daemon-restart.js +4 -4
  25. package/dist/bin/exe-agent-config.js +3 -2
  26. package/dist/bin/exe-agent.js +12 -11
  27. package/dist/bin/exe-assign.js +10 -9
  28. package/dist/bin/exe-boot.js +21 -20
  29. package/dist/bin/exe-call.js +5 -4
  30. package/dist/bin/exe-cloud.js +14 -13
  31. package/dist/bin/exe-config-dump.js +525 -0
  32. package/dist/bin/exe-dispatch.js +13 -12
  33. package/dist/bin/exe-doctor.js +2 -2
  34. package/dist/bin/exe-export-behaviors.js +8 -7
  35. package/dist/bin/exe-forget.js +7 -6
  36. package/dist/bin/exe-gateway.js +22 -11
  37. package/dist/bin/exe-healthcheck.js +7 -4
  38. package/dist/bin/exe-heartbeat.js +13 -12
  39. package/dist/bin/exe-kill.js +16 -15
  40. package/dist/bin/exe-launch-agent.js +41 -25
  41. package/dist/bin/exe-new-employee.js +9 -8
  42. package/dist/bin/exe-pending-messages.js +14 -13
  43. package/dist/bin/exe-pending-notifications.js +13 -12
  44. package/dist/bin/exe-pending-reviews.js +13 -12
  45. package/dist/bin/exe-preflight.js +108 -0
  46. package/dist/bin/exe-rename.js +5 -4
  47. package/dist/bin/exe-review.js +15 -14
  48. package/dist/bin/exe-search-quality.js +282 -0
  49. package/dist/bin/exe-search.js +6 -5
  50. package/dist/bin/exe-session-cleanup.js +18 -17
  51. package/dist/bin/exe-settings.js +15 -14
  52. package/dist/bin/exe-start-codex.js +13 -12
  53. package/dist/bin/exe-start-opencode.js +9 -8
  54. package/dist/bin/exe-status.js +14 -13
  55. package/dist/bin/exe-support.js +4 -4
  56. package/dist/bin/exe-team.js +4 -3
  57. package/dist/bin/exe-timers.js +237 -0
  58. package/dist/bin/git-sweep.js +14 -13
  59. package/dist/bin/graph-backfill.js +7 -6
  60. package/dist/bin/graph-export.js +6 -5
  61. package/dist/bin/import-history.js +10 -9
  62. package/dist/bin/install-launchd.js +5 -2
  63. package/dist/bin/install.js +16 -15
  64. package/dist/bin/intercom-check.js +4 -4
  65. package/dist/bin/mcp-sessions.js +2 -2
  66. package/dist/bin/orchestration-metrics.js +5 -4
  67. package/dist/bin/postgres-agentic-reflection-backfill.js +2 -2
  68. package/dist/bin/postgres-agentic-semantic-backfill.js +1 -1
  69. package/dist/bin/prune-orphan-chunks.js +43 -10
  70. package/dist/bin/scan-tasks.js +13 -12
  71. package/dist/bin/setup.js +1 -1
  72. package/dist/bin/shard-migrate.js +5 -4
  73. package/dist/bin/stack-update.js +30 -5
  74. package/dist/bin/vps-health-gate.js +1 -1
  75. package/dist/{capability-cards-BCTFKT4G.js → capability-cards-WQVY7WSS.js} +3 -2
  76. package/dist/{capacity-monitor-B4S3XEDO.js → capacity-monitor-BUKYPSWR.js} +14 -13
  77. package/dist/{catchup-brief-I35KHK62.js → catchup-brief-X5IVQAOH.js} +16 -15
  78. package/dist/{chunk-74TUYU5A.js → chunk-255DIG4B.js} +1 -1
  79. package/dist/{chunk-CXKR5Z5F.js → chunk-2EJ636HI.js} +4 -0
  80. package/dist/{chunk-ST3X3YMZ.js → chunk-2NGPZCWX.js} +4 -4
  81. package/dist/{chunk-LD2JKEJT.js → chunk-2NVEKSSP.js} +7 -7
  82. package/dist/{chunk-V6P7TPPA.js → chunk-2UVN2NBN.js} +148 -2
  83. package/dist/{chunk-OZRO37JW.js → chunk-3KH6GXXX.js} +2 -2
  84. package/dist/{chunk-IMJNYREY.js → chunk-43R2GILO.js} +1 -1
  85. package/dist/{chunk-6X2YNVLB.js → chunk-4BANMHJ5.js} +3 -3
  86. package/dist/{chunk-QNJPDIWY.js → chunk-4L4R6AQJ.js} +1 -1
  87. package/dist/{chunk-QWLPAEG5.js → chunk-4Q5VNQTV.js} +3 -3
  88. package/dist/{chunk-VLSYKMCJ.js → chunk-4RJJ5FJ2.js} +14 -2
  89. package/dist/{chunk-4AN6KMVG.js → chunk-5DPE7B7K.js} +1 -1
  90. package/dist/{chunk-H7ZNSQ2E.js → chunk-62UZWGFX.js} +2 -2
  91. package/dist/{chunk-ZQ2QHGWE.js → chunk-66JPZELX.js} +20 -24
  92. package/dist/{chunk-BUGMW7YF.js → chunk-6LNSZADA.js} +11 -11
  93. package/dist/{chunk-PBCRUNIK.js → chunk-6OD2RVIA.js} +492 -157
  94. package/dist/chunk-7ODTYODO.js +350 -0
  95. package/dist/{chunk-5YL4Y27D.js → chunk-7WDIGRSO.js} +1 -1
  96. package/dist/{chunk-WIL6LXNG.js → chunk-AC6DKMVS.js} +1 -1
  97. package/dist/{chunk-HZEAAKCR.js → chunk-B2J3BBJC.js} +3 -3
  98. package/dist/{chunk-LE7CDIOA.js → chunk-BUOMSIXH.js} +1 -1
  99. package/dist/{chunk-XKGNKH6V.js → chunk-DFUCFLZH.js} +1 -1
  100. package/dist/{chunk-U724Z3S3.js → chunk-DKHBMIVE.js} +100 -37
  101. package/dist/{chunk-MY36XDUK.js → chunk-DNFU56ZS.js} +1 -1
  102. package/dist/{chunk-GSWGOGP5.js → chunk-EOS7VPVT.js} +5 -5
  103. package/dist/{chunk-P33JVGSP.js → chunk-FM7XZDZI.js} +1 -1
  104. package/dist/chunk-G6EJKYK3.js +33 -0
  105. package/dist/{chunk-OMCNFTSI.js → chunk-GMZMBLHT.js} +1 -1
  106. package/dist/{chunk-4LZ54YGA.js → chunk-GSY6HL3T.js} +5 -5
  107. package/dist/{chunk-OVKNFTCL.js → chunk-HED6D5KR.js} +132 -21
  108. package/dist/{chunk-ALH6QLYF.js → chunk-HQODUV3G.js} +2 -2
  109. package/dist/{chunk-US64UR5O.js → chunk-IIHE3FNC.js} +3 -3
  110. package/dist/{chunk-H2ISTRWU.js → chunk-IRIPGGGL.js} +1 -1
  111. package/dist/{chunk-Z3EXECOX.js → chunk-ISILDO7P.js} +1 -1
  112. package/dist/{chunk-6ERZFDBS.js → chunk-IZPO6IOZ.js} +1 -1
  113. package/dist/{chunk-W65Z4SJS.js → chunk-J3QZPDNH.js} +1 -1
  114. package/dist/{chunk-3IJCP6ZH.js → chunk-JDYO76PI.js} +1 -1
  115. package/dist/{chunk-ORNKGGFX.js → chunk-JNARUXDC.js} +1 -1
  116. package/dist/{chunk-VME3UH4D.js → chunk-JV225JBX.js} +1 -1
  117. package/dist/{chunk-EI7PBUIA.js → chunk-JZW5AOWI.js} +1 -1
  118. package/dist/{chunk-TLOILHSL.js → chunk-K7KBAJQL.js} +36 -18
  119. package/dist/{chunk-RHMWSUJB.js → chunk-KAVUTP5G.js} +2 -2
  120. package/dist/{chunk-7FNELLMX.js → chunk-KPVVTHPK.js} +8 -8
  121. package/dist/{chunk-35U72CD2.js → chunk-KSMITUGY.js} +3 -3
  122. package/dist/{chunk-D6UICP3C.js → chunk-LMX7UKGX.js} +81 -3
  123. package/dist/{chunk-7ZWC5HVG.js → chunk-MTIJ2NXY.js} +1 -1
  124. package/dist/{chunk-KVHPBQV4.js → chunk-NCC3F6GM.js} +1 -1
  125. package/dist/{chunk-AYMSIV7X.js → chunk-NIZQ3CIS.js} +1 -1
  126. package/dist/{chunk-LTI2DLHY.js → chunk-OBJXZII2.js} +2 -2
  127. package/dist/{chunk-WHOT5NZ7.js → chunk-OR3TAZL3.js} +14 -2
  128. package/dist/{chunk-RQUHAXMM.js → chunk-PHFPIUWU.js} +2 -0
  129. package/dist/{chunk-N76VTMMF.js → chunk-PMEOSD6S.js} +2 -2
  130. package/dist/{chunk-TCJEFW5V.js → chunk-PPXQE7AS.js} +4 -4
  131. package/dist/{chunk-KHZQVLNZ.js → chunk-QE7UVQDP.js} +46 -0
  132. package/dist/{chunk-SXJACGQ5.js → chunk-QEGXNJGR.js} +4 -4
  133. package/dist/{chunk-W3E4VEEJ.js → chunk-RPBTYQKJ.js} +1 -1
  134. package/dist/chunk-RQ7OVXUZ.js +81 -0
  135. package/dist/{chunk-7L2EV3XX.js → chunk-RVXWGPD3.js} +39 -6
  136. package/dist/{chunk-YNALY3SX.js → chunk-RZJ6DXVE.js} +1 -1
  137. package/dist/{chunk-P3SIFDES.js → chunk-SCYWCWKY.js} +16 -4
  138. package/dist/{chunk-7I43GVER.js → chunk-SOT23KWW.js} +3 -3
  139. package/dist/{chunk-T62GAN7I.js → chunk-SPOXL7HF.js} +7 -7
  140. package/dist/{chunk-3YJMI422.js → chunk-TN2YCFQE.js} +4 -4
  141. package/dist/{chunk-YMSWCERY.js → chunk-U63BZI2B.js} +3 -3
  142. package/dist/{chunk-KA5RK5HZ.js → chunk-V42BSVX6.js} +2 -2
  143. package/dist/{chunk-PJTRAFL4.js → chunk-V4BW5HFQ.js} +3 -3
  144. package/dist/{chunk-4FG6IX7U.js → chunk-VFSYVQX4.js} +1 -1
  145. package/dist/chunk-VQRTO7IS.js +290 -0
  146. package/dist/{chunk-OR7J7TIA.js → chunk-VT6P7FV4.js} +1 -1
  147. package/dist/{chunk-BEIYF4NS.js → chunk-W2J2RF5N.js} +3 -3
  148. package/dist/{chunk-Y5ASPRP7.js → chunk-WBJXJ2R4.js} +17 -13
  149. package/dist/chunk-WCGNCH3Q.js +72 -0
  150. package/dist/{chunk-2LJDLQNO.js → chunk-WJ2PZGRV.js} +1 -1
  151. package/dist/{chunk-AAPPSMPH.js → chunk-WZBUKC5N.js} +1 -1
  152. package/dist/{chunk-RO7EXVSJ.js → chunk-X4AFBL4N.js} +1 -1
  153. package/dist/{chunk-BR74NYEF.js → chunk-XV5HRIXG.js} +5 -5
  154. package/dist/chunk-XXJRZ75E.js +43 -0
  155. package/dist/{chunk-VDHUHXFF.js → chunk-XYG722JW.js} +2 -2
  156. package/dist/{chunk-MM7SWUQ4.js → chunk-YB7U4WTY.js} +4 -4
  157. package/dist/{chunk-RMRZXPUU.js → chunk-Z6H6Y4BS.js} +1 -1
  158. package/dist/{token-budget-UMHRRDBT.js → chunk-ZOVHXTGC.js} +2 -9
  159. package/dist/{chunk-HNLBHP6P.js → chunk-ZZXADKAP.js} +3 -3
  160. package/dist/{co-activation-OKAHEMPE.js → co-activation-WN25AJOC.js} +3 -2
  161. package/dist/{co-occurrence-IHSPB53O.js → co-occurrence-YP2Q3OEA.js} +5 -4
  162. package/dist/{code-context-index-KGY4LKCA.js → code-context-index-ZWONKBKX.js} +4 -4
  163. package/dist/{conversation-entity-extractor-KXJSHRGJ.js → conversation-entity-extractor-KYOBXNID.js} +2 -2
  164. package/dist/{crdt-sync-K2G3C6XY.js → crdt-sync-ZFIFL2QM.js} +1 -1
  165. package/dist/{crm-webhook-ERZSQ3CW.js → crm-webhook-DGPHULOO.js} +2 -2
  166. package/dist/{cto-delegation-gate-ZCJ53LBQ.js → cto-delegation-gate-OF2A3TSS.js} +12 -11
  167. package/dist/daemon-auth-N6P2MZAV.js +17 -0
  168. package/dist/{daemon-orchestration-V6HALVDS.js → daemon-orchestration-G4RRTPP7.js} +16 -15
  169. package/dist/daemon-ready-signal-3L2MJT7C.js +13 -0
  170. package/dist/{db-backup-VZHSFUVA.js → db-backup-EORG4LBO.js} +1 -1
  171. package/dist/{doc-graph-extractor-LQ2IFND2.js → doc-graph-extractor-APZS3DFD.js} +5 -4
  172. package/dist/{dreaming-QAKUASYV.js → dreaming-Q4E3WBGY.js} +13 -12
  173. package/dist/{exe-drift-H3UWNFFY.js → exe-drift-CI5R6GUT.js} +4 -3
  174. package/dist/{exe-export-MN5D4JMT.js → exe-export-HQIQASIT.js} +7 -6
  175. package/dist/{exe-import-IFFMEVD7.js → exe-import-ULZK56WC.js} +7 -6
  176. package/dist/{exe-key-RSZC72QK.js → exe-key-ILNSBGRN.js} +5 -4
  177. package/dist/{exe-snapshot-I622MPLS.js → exe-snapshot-RUZTWZOF.js} +16 -15
  178. package/dist/{factory-CTFAGZUA.js → factory-YHQZ6RZZ.js} +14 -6
  179. package/dist/{fast-db-init-QEFVT7Q3.js → fast-db-init-KNJRL7T3.js} +1 -1
  180. package/dist/{founder-context-3SOKEW76.js → founder-context-QCTMEK66.js} +2 -2
  181. package/dist/gateway/index.js +12 -11
  182. package/dist/{git-staleness-E7RPQA5U.js → git-staleness-KIA5YI4H.js} +3 -2
  183. package/dist/{git-task-sweep-D3A2C5BW.js → git-task-sweep-WH6QE7HL.js} +13 -12
  184. package/dist/{global-procedures-POG4V6IK.js → global-procedures-SYZZCGDS.js} +4 -3
  185. package/dist/{graph-auto-extract-E7KALNWA.js → graph-auto-extract-J2TIWZEE.js} +5 -4
  186. package/dist/{graph-rag-3RZN7JR3.js → graph-rag-HITZZ63L.js} +2 -2
  187. package/dist/hooks/bug-report-worker.js +15 -14
  188. package/dist/hooks/codex-stop-task-finalizer.js +15 -14
  189. package/dist/hooks/commit-complete.js +15 -14
  190. package/dist/hooks/error-recall.js +8 -7
  191. package/dist/hooks/exe-heartbeat-hook.js +4 -3
  192. package/dist/hooks/ingest-worker.js +4 -4
  193. package/dist/hooks/ingest.js +8 -7
  194. package/dist/hooks/instructions-loaded.js +5 -4
  195. package/dist/hooks/manifest.json +20 -20
  196. package/dist/hooks/notification.js +5 -4
  197. package/dist/hooks/post-compact.js +14 -13
  198. package/dist/hooks/post-tool-combined.js +7 -7
  199. package/dist/hooks/pre-compact.js +19 -18
  200. package/dist/hooks/pre-tool-use.js +18 -17
  201. package/dist/hooks/prompt-submit.js +28 -27
  202. package/dist/hooks/session-end.js +24 -23
  203. package/dist/hooks/session-start.js +46 -22
  204. package/dist/hooks/stop.js +22 -21
  205. package/dist/hooks/subagent-stop.js +14 -13
  206. package/dist/hooks/summary-worker.js +22 -21
  207. package/dist/index.js +25 -23
  208. package/dist/{installer-IXUX73JN.js → installer-3NB3IBHF.js} +10 -9
  209. package/dist/{installer-RCUPPZ7Y.js → installer-IIJFCTMH.js} +10 -9
  210. package/dist/{installer-HDD6OH5Z.js → installer-PSDYMGN7.js} +7 -6
  211. package/dist/lib/cloud-sync.js +14 -13
  212. package/dist/lib/consolidation.js +8 -7
  213. package/dist/lib/database.js +3 -2
  214. package/dist/lib/db-daemon-client.js +4 -4
  215. package/dist/lib/db.js +3 -2
  216. package/dist/lib/device-registry.js +3 -1
  217. package/dist/lib/embedder.js +4 -4
  218. package/dist/lib/employee-templates.js +5 -4
  219. package/dist/lib/employees.js +3 -2
  220. package/dist/lib/exe-daemon-client.js +3 -3
  221. package/dist/lib/exe-daemon.js +256 -406
  222. package/dist/lib/hybrid-search.js +6 -5
  223. package/dist/lib/identity.js +3 -2
  224. package/dist/lib/license.js +2 -2
  225. package/dist/lib/messaging.js +13 -12
  226. package/dist/lib/reminders.js +4 -3
  227. package/dist/lib/schedules.js +6 -5
  228. package/dist/lib/session-registry.js +5 -4
  229. package/dist/lib/skill-learning.js +7 -6
  230. package/dist/lib/store.js +7 -4
  231. package/dist/lib/task-router.js +4 -3
  232. package/dist/lib/tasks.js +14 -13
  233. package/dist/lib/tmux-routing.js +16 -11
  234. package/dist/lib/token-spend.js +4 -3
  235. package/dist/{license-gate-V2UCK4KJ.js → license-gate-7SDHCJUO.js} +3 -3
  236. package/dist/mcp/register-tools.js +74 -73
  237. package/dist/mcp/server.js +97 -79
  238. package/dist/mcp/tools/complete-reminder.js +5 -4
  239. package/dist/mcp/tools/create-reminder.js +5 -4
  240. package/dist/mcp/tools/create-task.js +16 -15
  241. package/dist/mcp/tools/deactivate-behavior.js +8 -7
  242. package/dist/mcp/tools/list-reminders.js +5 -4
  243. package/dist/mcp/tools/list-tasks.js +16 -15
  244. package/dist/mcp/tools/send-message.js +15 -14
  245. package/dist/mcp/tools/update-task.js +15 -14
  246. package/dist/{mcp-http-config-7LFFPNGV.js → mcp-http-config-QSOVFXHW.js} +4 -3
  247. package/dist/mcp-tool-surface-CSPFXL3F.js +15 -0
  248. package/dist/{memory-cards-BGI6MJRN.js → memory-cards-II67WFL2.js} +3 -2
  249. package/dist/{memory-graph-extractor-DTRRNWHZ.js → memory-graph-extractor-PM4Q2KJG.js} +6 -5
  250. package/dist/{memory-poisoning-defense-MOCWJK6S.js → memory-poisoning-defense-ECXSX7HK.js} +3 -2
  251. package/dist/{memory-queue-client-DD4E5SIZ.js → memory-queue-client-HLURQEV6.js} +4 -4
  252. package/dist/{memory-reflection-UKKTGZYR.js → memory-reflection-PXF6YFDU.js} +3 -2
  253. package/dist/{notifications-AMJ2K3MM.js → notifications-UP7WQGG4.js} +12 -11
  254. package/dist/{orchestration-events-MB4QVHTD.js → orchestration-events-PZLLPCKY.js} +4 -3
  255. package/dist/orchestration-health-read-EJWVUARG.js +191 -0
  256. package/dist/{orchestrator-M7DJH6TN.js → orchestrator-PUT45J4O.js} +14 -13
  257. package/dist/{pipeline-router-4LT5YG5P.js → pipeline-router-5CRWKESM.js} +4 -3
  258. package/dist/{plan-limits-ENS7OJWP.js → plan-limits-SH2NDFNX.js} +6 -5
  259. package/dist/{project-boot-6W5JPGSB.js → project-boot-2TCPDZ4S.js} +25 -1
  260. package/dist/{projection-worker-WWXZK7QD.js → projection-worker-HWY37MNC.js} +2 -2
  261. package/dist/{prospective-memory-VNGLPMS6.js → prospective-memory-FQSVMCGG.js} +3 -2
  262. package/dist/{reranker-6XBS55FA.js → reranker-AALRMGMM.js} +1 -1
  263. package/dist/{retrieval-health-ATX5TIQ2.js → retrieval-health-PNWJSJNG.js} +1 -1
  264. package/dist/{review-polling-E4ALHTQE.js → review-polling-65JZUE3T.js} +13 -12
  265. package/dist/runtime/index.js +24 -22
  266. package/dist/{session-events-3J6APMKN.js → session-events-EJ3OSAA6.js} +13 -12
  267. package/dist/session-kill-telemetry-3HGM7SNQ.js +63 -0
  268. package/dist/{session-scope-E54VIYTJ.js → session-scope-JGDYAMJO.js} +12 -11
  269. package/dist/{setup-wizard-XV736U5D.js → setup-wizard-44LMFM2C.js} +1 -1
  270. package/dist/shared-rate-limit-store-QZPQEVE2.js +80 -0
  271. package/dist/{skill-refinement-FTURVWFN.js → skill-refinement-DUOO6B7V.js} +3 -2
  272. package/dist/{stack-release-JZVTSBJJ.js → stack-release-XYMKU7NT.js} +53 -4
  273. package/dist/{stack-update-BIK2QHOE.js → stack-update-XHQJRJEP.js} +5 -3
  274. package/dist/{steward-gate-YGU4VXPP.js → steward-gate-6NWRDLX2.js} +4 -3
  275. package/dist/{task-enforcement-GY3VTY6L.js → task-enforcement-UOULTGFB.js} +12 -11
  276. package/dist/{task-scope-PYOK7OQ6.js → task-scope-P5STKYAC.js} +12 -11
  277. package/dist/{tasks-crud-HLJEJ2UU.js → tasks-crud-24HMTULR.js} +12 -11
  278. package/dist/{tasks-notify-NGS3DWUJ.js → tasks-notify-LAIU7UUI.js} +13 -12
  279. package/dist/{tasks-review-BP5V2X34.js → tasks-review-AFJAU2DY.js} +12 -11
  280. package/dist/{telemetry-upload-AXYPFAPS.js → telemetry-upload-DWFGC2XJ.js} +8 -7
  281. package/dist/token-budget-4RFZKWGH.js +16 -0
  282. package/dist/{tool-capability-index-RHPVMMDD.js → tool-capability-index-ZEXBWKUZ.js} +1 -1
  283. package/dist/{tool-telemetry-BLSVABFJ.js → tool-telemetry-BS5JXM5M.js} +1 -1
  284. package/dist/tui/App.js +21 -20
  285. package/dist/{tui-data-EYPOFYLS.js → tui-data-UNO5B7PU.js} +12 -11
  286. package/dist/{worker-gate-SMFOBMMX.js → worker-gate-C6CTTYMD.js} +1 -1
  287. package/dist/{workflow-engine-TDJZ3TXB.js → workflow-engine-4W2KYCDV.js} +2 -2
  288. package/dist/{worktree-XISIYRM4.js → worktree-2CXY6NEB.js} +5 -4
  289. package/dist/{worktree-sweep-AS6GAR6X.js → worktree-sweep-K3CJFSUL.js} +6 -5
  290. package/package.json +9 -4
  291. package/release-notes.json +17 -88
  292. package/stack.release.json +51 -4
  293. package/dist/chunk-PHOQAVTK.js +0 -42
  294. package/dist/daemon-auth-BK7ON5ZH.js +0 -13
  295. package/dist/session-kill-telemetry-KOAHLRBT.js +0 -31
  296. package/dist/{chunk-XDE5IGBX.js → chunk-2NS3QRMJ.js} +0 -0
  297. package/dist/{chunk-JTMKRUX6.js → chunk-A2YZG4AD.js} +0 -0
  298. package/dist/{chunk-UZATXREL.js → chunk-AE74NOE6.js} +0 -0
  299. package/dist/{chunk-LUGWK6QB.js → chunk-FF5DA4XP.js} +3 -3
  300. /package/dist/{chunk-BGOMFGSW.js → chunk-GWPICNSO.js} +0 -0
  301. /package/dist/{chunk-NLHUA3YB.js → chunk-I3DPCSDG.js} +0 -0
  302. /package/dist/{chunk-YM3367VC.js → chunk-J3SR5MGG.js} +0 -0
  303. /package/dist/{chunk-FKFVNV7X.js → chunk-K4BKJJ4F.js} +0 -0
  304. /package/dist/{chunk-PTDBHQX7.js → chunk-MQCTK6EF.js} +0 -0
  305. /package/dist/{chunk-GBV5PV5T.js → chunk-QNXM2HXW.js} +0 -0
  306. /package/dist/{chunk-GZSG2ZOX.js → chunk-YUBTHJVV.js} +0 -0
  307. /package/dist/{core-memory-4OM7LR77.js → core-memory-OC5ITKKV.js} +0 -0
  308. /package/dist/{entity-boost-SFHIRXT5.js → entity-boost-NF3LE6OJ.js} +0 -0
  309. /package/dist/{message-queue-client-QTC3VHJT.js → message-queue-client-4VDU6BZY.js} +0 -0
  310. /package/dist/{oauth-server-BPN55EJM.js → oauth-server-EWUL7DMD.js} +0 -0
  311. /package/dist/{wiki-acl-45SIGG4O.js → wiki-acl-CONNF6ES.js} +0 -0
@@ -6,36 +6,37 @@ import {
6
6
  setupGhostty,
7
7
  setupTmux,
8
8
  setupWezterm
9
- } from "../chunk-ST3X3YMZ.js";
9
+ } from "../chunk-2NGPZCWX.js";
10
10
  import "../chunk-VDYUKTNS.js";
11
11
  import {
12
12
  mergeUserEnvVars,
13
13
  persistEmbeddingsDecisionFromPlist,
14
14
  resolveAnthropicKeyEnvBlock,
15
15
  resolveAnthropicKeySystemdLine
16
- } from "../chunk-VLSYKMCJ.js";
16
+ } from "../chunk-4RJJ5FJ2.js";
17
17
  import {
18
18
  generateSessionWrappers
19
19
  } from "../chunk-EM4EYF3P.js";
20
- import "../chunk-L3TB7CC3.js";
21
- import "../chunk-EI7PBUIA.js";
20
+ import "../chunk-JZW5AOWI.js";
22
21
  import "../chunk-ELXR65AN.js";
23
- import {
24
- computeDaemonHeapCapMb
25
- } from "../chunk-7XGDTKHX.js";
22
+ import "../chunk-L3TB7CC3.js";
26
23
  import {
27
24
  requestDeployRestart,
28
25
  updateMcpVersionMarker
29
- } from "../chunk-7L2EV3XX.js";
26
+ } from "../chunk-RVXWGPD3.js";
27
+ import {
28
+ computeDaemonHeapCapMb
29
+ } from "../chunk-7XGDTKHX.js";
30
30
  import {
31
31
  resolveEmbeddingsEnabled
32
- } from "../chunk-RQUHAXMM.js";
33
- import "../chunk-AYMSIV7X.js";
32
+ } from "../chunk-PHFPIUWU.js";
33
+ import "../chunk-NIZQ3CIS.js";
34
34
  import "../chunk-HYZV25LY.js";
35
- import "../chunk-P3SIFDES.js";
35
+ import "../chunk-SCYWCWKY.js";
36
36
  import "../chunk-2I23RPSI.js";
37
- import "../chunk-BGOMFGSW.js";
37
+ import "../chunk-GWPICNSO.js";
38
38
  import "../chunk-PNQDP3OA.js";
39
+ import "../chunk-VQRTO7IS.js";
39
40
  import "../chunk-7HLWBYH7.js";
40
41
  import "../chunk-FXU7JOXK.js";
41
42
  import "../chunk-DFIOOK5R.js";
@@ -545,12 +546,12 @@ async function restartDaemon() {
545
546
  process.stderr.write("exe-os: deferred restart already running \u2014 skipping duplicate\n");
546
547
  return;
547
548
  }
548
- updateMcpVersionMarker();
549
+ await updateMcpVersionMarker();
549
550
  const pkgRoot = resolvePackageRoot();
550
551
  const deferredScript = path.join(pkgRoot, "dist", "bin", "deferred-daemon-restart.js");
551
552
  if (!existsSync(deferredScript)) {
552
553
  process.stderr.write("exe-os: deferred restart script not found \u2014 falling back to synchronous restart\n");
553
- requestDeployRestart("deploy-sync-fallback");
554
+ await requestDeployRestart("deploy-sync-fallback");
554
555
  await spawnDaemonInline(pkgRoot);
555
556
  return;
556
557
  }
@@ -658,7 +659,7 @@ async function runGlobalInstall() {
658
659
  }
659
660
  try {
660
661
  execSync("which codex", { encoding: "utf8", timeout: 5e3 });
661
- const { runCodexInstaller } = await import("../installer-RCUPPZ7Y.js");
662
+ const { runCodexInstaller } = await import("../installer-IIJFCTMH.js");
662
663
  await runCodexInstaller();
663
664
  } catch {
664
665
  }
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  fastDbInit
4
- } from "../chunk-KHZQVLNZ.js";
4
+ } from "../chunk-QE7UVQDP.js";
5
5
  import "../chunk-MLKGABMK.js";
6
6
 
7
7
  // src/bin/intercom-check.ts
@@ -17,7 +17,7 @@ async function main() {
17
17
  }
18
18
  if (isCoordinator) {
19
19
  try {
20
- const { listPendingReviews, cleanupOrphanedReviews, formatAge, isStale } = await import("../tasks-review-BP5V2X34.js");
20
+ const { listPendingReviews, cleanupOrphanedReviews, formatAge, isStale } = await import("../tasks-review-AFJAU2DY.js");
21
21
  const { extractRootExe } = await import("../lib/tmux-routing.js");
22
22
  let sessionScope = process.env.EXE_SESSION ? extractRootExe(process.env.EXE_SESSION) ?? void 0 : void 0;
23
23
  if (!sessionScope) {
@@ -95,7 +95,7 @@ async function main() {
95
95
  }
96
96
  if (!isCoordinator) {
97
97
  try {
98
- const { listBehaviors } = await import("../behaviors-JM6KFSXL.js");
98
+ const { listBehaviors } = await import("../behaviors-47CPEKJ7.js");
99
99
  const sessionStart = process.env.EXE_SESSION_START_ISO ?? "";
100
100
  if (sessionStart) {
101
101
  const behaviors = await listBehaviors(agent);
@@ -114,7 +114,7 @@ async function main() {
114
114
  }
115
115
  }
116
116
  try {
117
- const { readUnreadNotifications, markAsRead } = await import("../notifications-AMJ2K3MM.js");
117
+ const { readUnreadNotifications, markAsRead } = await import("../notifications-UP7WQGG4.js");
118
118
  const { resolveExeSession } = await import("../lib/tmux-routing.js");
119
119
  const sessionScope = resolveExeSession();
120
120
  const notifications = await readUnreadNotifications(agent, sessionScope);
@@ -45,10 +45,10 @@ async function collectSessions() {
45
45
  const registryMap = new Map(registry.map((r) => [r.windowName, r]));
46
46
  const taskMap = /* @__PURE__ */ new Map();
47
47
  try {
48
- const { fastDbInit } = await import("../fast-db-init-QEFVT7Q3.js");
48
+ const { fastDbInit } = await import("../fast-db-init-KNJRL7T3.js");
49
49
  await fastDbInit();
50
50
  const { getClient } = await import("../lib/database.js");
51
- const { sessionScopeFilter } = await import("../task-scope-PYOK7OQ6.js");
51
+ const { sessionScopeFilter } = await import("../task-scope-P5STKYAC.js");
52
52
  const client = getClient();
53
53
  const scope = sessionScopeFilter();
54
54
  const result = await client.execute({
@@ -1,15 +1,16 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  fastDbInit
4
- } from "../chunk-KHZQVLNZ.js";
4
+ } from "../chunk-QE7UVQDP.js";
5
5
  import {
6
6
  formatOrchestrationMetrics,
7
7
  getOrchestrationMetrics
8
- } from "../chunk-WHOT5NZ7.js";
9
- import "../chunk-P3SIFDES.js";
8
+ } from "../chunk-OR3TAZL3.js";
9
+ import "../chunk-SCYWCWKY.js";
10
10
  import "../chunk-2I23RPSI.js";
11
- import "../chunk-BGOMFGSW.js";
11
+ import "../chunk-GWPICNSO.js";
12
12
  import "../chunk-PNQDP3OA.js";
13
+ import "../chunk-VQRTO7IS.js";
13
14
  import "../chunk-7HLWBYH7.js";
14
15
  import "../chunk-FXU7JOXK.js";
15
16
  import "../chunk-DFIOOK5R.js";
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  buildReflectionCheckpoint
4
- } from "../chunk-5YL4Y27D.js";
5
- import "../chunk-UZATXREL.js";
4
+ } from "../chunk-7WDIGRSO.js";
5
+ import "../chunk-AE74NOE6.js";
6
6
  import {
7
7
  pgSslConfig
8
8
  } from "../chunk-EQSQ4HBW.js";
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  inferSemanticLabel,
4
4
  stableId
5
- } from "../chunk-UZATXREL.js";
5
+ } from "../chunk-AE74NOE6.js";
6
6
  import {
7
7
  pgSslConfig
8
8
  } from "../chunk-EQSQ4HBW.js";
@@ -1,12 +1,26 @@
1
1
  #!/usr/bin/env node
2
+ import "../chunk-MLKGABMK.js";
2
3
 
3
4
  // src/bin/prune-orphan-chunks.ts
4
- import { readFileSync, readdirSync, statSync, unlinkSync } from "fs";
5
+ import { readFileSync, readdirSync, statSync, unlinkSync, existsSync } from "fs";
5
6
  import path from "path";
6
- import { fileURLToPath } from "url";
7
+ import os from "os";
8
+ import { fileURLToPath, pathToFileURL } from "url";
7
9
  var __dirname = path.dirname(fileURLToPath(import.meta.url));
8
10
  var DIST_DIR = path.resolve(__dirname, "..");
9
11
  var HASH_CHUNK_RE = /-[A-Z0-9]{8}\.js$/;
12
+ function isDaemonAlive() {
13
+ const pidPath = process.env.EXE_DAEMON_PID ?? process.env.EXE_EMBED_PID ?? path.join(process.env.EXE_AI_DIR ?? path.join(os.homedir(), ".exe-os"), "exed.pid");
14
+ if (!existsSync(pidPath)) return false;
15
+ try {
16
+ const pid = parseInt(readFileSync(pidPath, "utf8").trim(), 10);
17
+ if (!(pid > 0)) return false;
18
+ process.kill(pid, 0);
19
+ return true;
20
+ } catch {
21
+ return false;
22
+ }
23
+ }
10
24
  function extractRelativeSpecifiers(source) {
11
25
  const specs = [];
12
26
  const re = /(?:from|import)\s*\(?\s*["'](\.\.?\/[^"']+)["']/g;
@@ -29,12 +43,20 @@ function listJsFiles(dir, acc = []) {
29
43
  }
30
44
  return acc;
31
45
  }
32
- function main() {
46
+ function prune(opts = {}) {
47
+ const distDir = opts.distDir ?? DIST_DIR;
48
+ const aliveCheck = opts.daemonAlive ?? isDaemonAlive;
49
+ if (!opts.force && aliveCheck()) {
50
+ console.log(
51
+ "[prune-orphan-chunks] exed daemon is alive \u2014 skipping prune to keep its lazy dynamic imports resolvable (bug 22d2af5a). Pass --force to prune anyway."
52
+ );
53
+ return [];
54
+ }
33
55
  let allJs;
34
56
  try {
35
- allJs = listJsFiles(DIST_DIR);
57
+ allJs = listJsFiles(distDir);
36
58
  } catch {
37
- return;
59
+ return [];
38
60
  }
39
61
  const hashChunks = /* @__PURE__ */ new Set();
40
62
  const entryPoints = [];
@@ -46,7 +68,7 @@ function main() {
46
68
  }
47
69
  }
48
70
  if (hashChunks.size === 0) {
49
- return;
71
+ return [];
50
72
  }
51
73
  const reachable = /* @__PURE__ */ new Set();
52
74
  const queue = [...entryPoints];
@@ -79,17 +101,28 @@ function main() {
79
101
  }
80
102
  if (orphans.length === 0) {
81
103
  console.log("[prune-orphan-chunks] No orphan chunks \u2014 dist is clean.");
82
- return;
104
+ return [];
83
105
  }
106
+ const removed = [];
84
107
  for (const orphan of orphans) {
85
108
  try {
86
109
  unlinkSync(orphan);
110
+ removed.push(path.basename(orphan));
87
111
  } catch (err) {
88
- console.error(`[prune-orphan-chunks] Failed to remove ${path.relative(DIST_DIR, orphan)}: ${String(err)}`);
112
+ console.error(`[prune-orphan-chunks] Failed to remove ${path.relative(distDir, orphan)}: ${String(err)}`);
89
113
  }
90
114
  }
91
115
  console.log(
92
- `[prune-orphan-chunks] Removed ${orphans.length} orphan chunk(s): ` + orphans.map((o) => path.basename(o)).join(", ")
116
+ `[prune-orphan-chunks] Removed ${removed.length} orphan chunk(s): ` + removed.join(", ")
93
117
  );
118
+ return removed;
119
+ }
120
+ if (process.argv[1] && import.meta.url === pathToFileURL(process.argv[1]).href) {
121
+ prune({
122
+ force: process.argv.includes("--force") || process.env.EXE_PRUNE_FORCE === "1"
123
+ });
94
124
  }
95
- main();
125
+ export {
126
+ isDaemonAlive,
127
+ prune
128
+ };
@@ -1,35 +1,36 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  queryTaskRows
4
- } from "../chunk-OVKNFTCL.js";
5
- import "../chunk-YNALY3SX.js";
4
+ } from "../chunk-HED6D5KR.js";
5
+ import "../chunk-RZJ6DXVE.js";
6
6
  import "../chunk-4JERP7NT.js";
7
7
  import "../chunk-4FVVJ7ME.js";
8
8
  import "../chunk-E23LNUWJ.js";
9
- import "../chunk-2LJDLQNO.js";
9
+ import "../chunk-WJ2PZGRV.js";
10
+ import "../chunk-SSTLTIF3.js";
10
11
  import "../chunk-KOO3J5PV.js";
11
12
  import "../chunk-22TVSRQQ.js";
12
- import "../chunk-SSTLTIF3.js";
13
- import "../chunk-WHOT5NZ7.js";
13
+ import "../chunk-OR3TAZL3.js";
14
14
  import "../chunk-QB5JOGPK.js";
15
15
  import "../chunk-NGP6LSV2.js";
16
- import "../chunk-VDHUHXFF.js";
16
+ import "../chunk-XYG722JW.js";
17
17
  import {
18
18
  getSessionRuntime
19
19
  } from "../chunk-CVYC6DUW.js";
20
20
  import "../chunk-OPU3NYOO.js";
21
21
  import "../chunk-GJV3WDWM.js";
22
22
  import "../chunk-MP2AFCGL.js";
23
- import "../chunk-AYMSIV7X.js";
23
+ import "../chunk-NIZQ3CIS.js";
24
24
  import "../chunk-HYZV25LY.js";
25
- import "../chunk-P3SIFDES.js";
25
+ import "../chunk-SCYWCWKY.js";
26
26
  import "../chunk-2I23RPSI.js";
27
- import "../chunk-BGOMFGSW.js";
27
+ import "../chunk-GWPICNSO.js";
28
28
  import "../chunk-PNQDP3OA.js";
29
+ import "../chunk-VQRTO7IS.js";
29
30
  import "../chunk-7HLWBYH7.js";
30
31
  import "../chunk-FXU7JOXK.js";
31
- import "../chunk-VME3UH4D.js";
32
- import "../chunk-CXKR5Z5F.js";
32
+ import "../chunk-JV225JBX.js";
33
+ import "../chunk-2EJ636HI.js";
33
34
  import "../chunk-DFIOOK5R.js";
34
35
  import "../chunk-65DBIEM2.js";
35
36
  import {
@@ -78,7 +79,7 @@ function checkMcpHealth() {
78
79
  }
79
80
  }
80
81
  async function scanFromDb(agentId, tmuxSession, projectName) {
81
- const { fastDbInit } = await import("../fast-db-init-QEFVT7Q3.js");
82
+ const { fastDbInit } = await import("../fast-db-init-KNJRL7T3.js");
82
83
  try {
83
84
  await fastDbInit();
84
85
  } catch (err) {
package/dist/bin/setup.js CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  runSetupWizard
4
- } from "../chunk-JTMKRUX6.js";
4
+ } from "../chunk-A2YZG4AD.js";
5
5
  import "../chunk-Z42MXYWW.js";
6
6
  import "../chunk-DFIOOK5R.js";
7
7
  import "../chunk-65DBIEM2.js";
@@ -8,18 +8,19 @@ import {
8
8
  import {
9
9
  disposeStore,
10
10
  initStore
11
- } from "../chunk-Y5ASPRP7.js";
11
+ } from "../chunk-WBJXJ2R4.js";
12
12
  import "../chunk-CHCA3ZM2.js";
13
13
  import "../chunk-OTVEIJUQ.js";
14
- import "../chunk-PTDBHQX7.js";
14
+ import "../chunk-MQCTK6EF.js";
15
15
  import "../chunk-Y25OJWOQ.js";
16
16
  import "../chunk-MP2AFCGL.js";
17
17
  import {
18
18
  getClient
19
- } from "../chunk-P3SIFDES.js";
19
+ } from "../chunk-SCYWCWKY.js";
20
20
  import "../chunk-2I23RPSI.js";
21
- import "../chunk-BGOMFGSW.js";
21
+ import "../chunk-GWPICNSO.js";
22
22
  import "../chunk-PNQDP3OA.js";
23
+ import "../chunk-VQRTO7IS.js";
23
24
  import "../chunk-7HLWBYH7.js";
24
25
  import "../chunk-FXU7JOXK.js";
25
26
  import {
@@ -17,19 +17,23 @@ import {
17
17
  runStackUpdate,
18
18
  saveServiceSelection,
19
19
  verifyManifestImagesAvailable
20
- } from "../chunk-U724Z3S3.js";
20
+ } from "../chunk-DKHBMIVE.js";
21
21
  import {
22
22
  runVerifyStack
23
23
  } from "../chunk-IRHNV4GY.js";
24
+ import {
25
+ assertPreflightGate,
26
+ runPreflightOnManifest
27
+ } from "../chunk-7ODTYODO.js";
24
28
  import {
25
29
  preDeployBackup
26
30
  } from "../chunk-5DMAMQNU.js";
27
31
  import {
28
32
  logResult,
29
33
  runHealthGate
30
- } from "../chunk-3IJCP6ZH.js";
31
- import "../chunk-VME3UH4D.js";
32
- import "../chunk-CXKR5Z5F.js";
34
+ } from "../chunk-JDYO76PI.js";
35
+ import "../chunk-JV225JBX.js";
36
+ import "../chunk-2EJ636HI.js";
33
37
  import "../chunk-DFIOOK5R.js";
34
38
  import "../chunk-65DBIEM2.js";
35
39
  import {
@@ -494,7 +498,8 @@ function parseArgs(args) {
494
498
  skipHardening: false,
495
499
  verifyManifestSignature: true,
496
500
  requireManifestSignature: process.env.EXE_STACK_REQUIRE_SIGNATURE === "1" || process.env.EXE_STACK_REQUIRE_SIGNATURE === "true",
497
- cleanupVolumes: false
501
+ cleanupVolumes: false,
502
+ allowRed: false
498
503
  };
499
504
  for (let i = 0; i < args.length; i++) {
500
505
  const arg = args[i];
@@ -553,6 +558,7 @@ function parseArgs(args) {
553
558
  else if (arg === "--no-bootstrap") opts.noBootstrap = true;
554
559
  else if (arg === "--skip-hardening") opts.skipHardening = true;
555
560
  else if (arg === "--cleanup-volumes") opts.cleanupVolumes = true;
561
+ else if (arg === "--allow-red") opts.allowRed = true;
556
562
  else if (arg === "--no-verify-manifest-signature") opts.verifyManifestSignature = false;
557
563
  else if (arg === "--require-manifest-signature") opts.requireManifestSignature = true;
558
564
  else if (arg === "--dry-run") opts.dryRun = true;
@@ -621,6 +627,9 @@ Options:
621
627
  per-service default for slow-starting services (daemon: 90-120s, CRM: 60-90s)
622
628
  --skip-hardening Skip post-deploy host hardening (UFW firewall + SSH config)
623
629
  --cleanup-volumes Detect and remove orphaned Docker volumes after a successful update
630
+ --allow-red Break-glass: apply even when the static preflight gate is RED
631
+ (also via EXE_PREFLIGHT_OVERRIDE=1). Loudly logged. By default a
632
+ RED manifest is REFUSED so a broken stack can't be pushed mid-update.
624
633
  --no-verify-manifest-signature Explicitly allow unsigned stack manifests (break-glass only)
625
634
  --require-manifest-signature Strict: fail unless EXE_STACK_PUBLIC_KEY is configured and the
626
635
  manifest signature is valid (default is opt-in: warn + proceed when
@@ -771,6 +780,21 @@ function readKeyFromEnvFile(envFile, key) {
771
780
  }
772
781
  return void 0;
773
782
  }
783
+ function gateApplyWithPreflight(manifest, targetVersion, opts) {
784
+ const report = runPreflightOnManifest({
785
+ manifest,
786
+ stackVersion: targetVersion,
787
+ label: `${opts.manifestRef} (stack ${targetVersion})`,
788
+ envExamplePath: existsSync2(opts.envFile) ? opts.envFile : void 0,
789
+ composePath: existsSync2(opts.composeFile) ? opts.composeFile : void 0
790
+ });
791
+ assertPreflightGate(report, {
792
+ context: "stack-update",
793
+ allowRed: opts.allowRed,
794
+ log: (m) => console.log(m),
795
+ warn: (m) => console.warn(m)
796
+ });
797
+ }
774
798
  async function main(args = process.argv.slice(2)) {
775
799
  const opts = parseArgs(args);
776
800
  if (!opts.licenseKey && existsSync2(opts.envFile)) {
@@ -958,6 +982,7 @@ async function main(args = process.argv.slice(2)) {
958
982
  console.error("\nRefusing to update without --yes. Re-run with --yes after reviewing the plan.");
959
983
  process.exit(2);
960
984
  }
985
+ gateApplyWithPreflight(manifest, plan.targetVersion, opts);
961
986
  const updateStart = Date.now();
962
987
  const result = await runStackUpdate(withRuntimeHooks(opts));
963
988
  const updateElapsed = ((Date.now() - updateStart) / 1e3).toFixed(1);
@@ -8,7 +8,7 @@ import {
8
8
  logResult,
9
9
  main,
10
10
  runHealthGate
11
- } from "../chunk-3IJCP6ZH.js";
11
+ } from "../chunk-JDYO76PI.js";
12
12
  import "../chunk-MLKGABMK.js";
13
13
  export {
14
14
  checkCRM,
@@ -1,12 +1,13 @@
1
1
  import {
2
2
  getIdentity,
3
3
  loadEmployeesSync
4
- } from "./chunk-P3SIFDES.js";
4
+ } from "./chunk-SCYWCWKY.js";
5
5
  import "./chunk-2I23RPSI.js";
6
- import "./chunk-BGOMFGSW.js";
6
+ import "./chunk-GWPICNSO.js";
7
7
  import {
8
8
  getRoleCapabilities
9
9
  } from "./chunk-PNQDP3OA.js";
10
+ import "./chunk-VQRTO7IS.js";
10
11
  import "./chunk-7HLWBYH7.js";
11
12
  import "./chunk-FXU7JOXK.js";
12
13
  import "./chunk-DFIOOK5R.js";
@@ -8,35 +8,36 @@ import {
8
8
  isAtCapacity,
9
9
  isWithinRelaunchCooldown,
10
10
  pollCapacityDead
11
- } from "./chunk-4LZ54YGA.js";
12
- import "./chunk-D6UICP3C.js";
13
- import "./chunk-OVKNFTCL.js";
14
- import "./chunk-YNALY3SX.js";
11
+ } from "./chunk-GSY6HL3T.js";
12
+ import "./chunk-LMX7UKGX.js";
13
+ import "./chunk-HED6D5KR.js";
14
+ import "./chunk-RZJ6DXVE.js";
15
15
  import "./chunk-4JERP7NT.js";
16
16
  import "./chunk-4FVVJ7ME.js";
17
17
  import "./chunk-E23LNUWJ.js";
18
- import "./chunk-2LJDLQNO.js";
18
+ import "./chunk-WJ2PZGRV.js";
19
+ import "./chunk-SSTLTIF3.js";
19
20
  import "./chunk-KOO3J5PV.js";
20
21
  import "./chunk-22TVSRQQ.js";
21
- import "./chunk-SSTLTIF3.js";
22
- import "./chunk-WHOT5NZ7.js";
22
+ import "./chunk-OR3TAZL3.js";
23
23
  import "./chunk-QB5JOGPK.js";
24
24
  import "./chunk-NGP6LSV2.js";
25
- import "./chunk-VDHUHXFF.js";
25
+ import "./chunk-XYG722JW.js";
26
26
  import "./chunk-CVYC6DUW.js";
27
27
  import "./chunk-OPU3NYOO.js";
28
28
  import "./chunk-GJV3WDWM.js";
29
29
  import "./chunk-MP2AFCGL.js";
30
- import "./chunk-AYMSIV7X.js";
30
+ import "./chunk-NIZQ3CIS.js";
31
31
  import "./chunk-HYZV25LY.js";
32
- import "./chunk-P3SIFDES.js";
32
+ import "./chunk-SCYWCWKY.js";
33
33
  import "./chunk-2I23RPSI.js";
34
- import "./chunk-BGOMFGSW.js";
34
+ import "./chunk-GWPICNSO.js";
35
35
  import "./chunk-PNQDP3OA.js";
36
+ import "./chunk-VQRTO7IS.js";
36
37
  import "./chunk-7HLWBYH7.js";
37
38
  import "./chunk-FXU7JOXK.js";
38
- import "./chunk-VME3UH4D.js";
39
- import "./chunk-CXKR5Z5F.js";
39
+ import "./chunk-JV225JBX.js";
40
+ import "./chunk-2EJ636HI.js";
40
41
  import "./chunk-DFIOOK5R.js";
41
42
  import "./chunk-65DBIEM2.js";
42
43
  import "./chunk-MLKGABMK.js";
@@ -1,45 +1,46 @@
1
1
  import {
2
2
  lightweightSearch
3
- } from "./chunk-ZQ2QHGWE.js";
3
+ } from "./chunk-66JPZELX.js";
4
4
  import "./chunk-AB4PAQYK.js";
5
- import "./chunk-Y5ASPRP7.js";
5
+ import "./chunk-WBJXJ2R4.js";
6
6
  import "./chunk-CHCA3ZM2.js";
7
7
  import "./chunk-OTVEIJUQ.js";
8
- import "./chunk-PTDBHQX7.js";
8
+ import "./chunk-MQCTK6EF.js";
9
9
  import "./chunk-Y25OJWOQ.js";
10
10
  import {
11
11
  sessionScopeFilter,
12
12
  strictSessionScopeFilter
13
- } from "./chunk-OVKNFTCL.js";
14
- import "./chunk-YNALY3SX.js";
13
+ } from "./chunk-HED6D5KR.js";
14
+ import "./chunk-RZJ6DXVE.js";
15
15
  import "./chunk-4JERP7NT.js";
16
16
  import "./chunk-4FVVJ7ME.js";
17
17
  import "./chunk-E23LNUWJ.js";
18
- import "./chunk-2LJDLQNO.js";
18
+ import "./chunk-WJ2PZGRV.js";
19
+ import "./chunk-SSTLTIF3.js";
19
20
  import "./chunk-KOO3J5PV.js";
20
21
  import "./chunk-22TVSRQQ.js";
21
- import "./chunk-SSTLTIF3.js";
22
- import "./chunk-WHOT5NZ7.js";
22
+ import "./chunk-OR3TAZL3.js";
23
23
  import "./chunk-QB5JOGPK.js";
24
24
  import "./chunk-NGP6LSV2.js";
25
- import "./chunk-VDHUHXFF.js";
25
+ import "./chunk-XYG722JW.js";
26
26
  import "./chunk-CVYC6DUW.js";
27
27
  import "./chunk-OPU3NYOO.js";
28
28
  import "./chunk-GJV3WDWM.js";
29
29
  import "./chunk-MP2AFCGL.js";
30
- import "./chunk-AYMSIV7X.js";
30
+ import "./chunk-NIZQ3CIS.js";
31
31
  import "./chunk-HYZV25LY.js";
32
32
  import {
33
33
  getClient
34
- } from "./chunk-P3SIFDES.js";
34
+ } from "./chunk-SCYWCWKY.js";
35
35
  import "./chunk-2I23RPSI.js";
36
- import "./chunk-BGOMFGSW.js";
36
+ import "./chunk-GWPICNSO.js";
37
37
  import "./chunk-PNQDP3OA.js";
38
+ import "./chunk-VQRTO7IS.js";
38
39
  import "./chunk-7HLWBYH7.js";
39
40
  import "./chunk-FXU7JOXK.js";
40
41
  import "./chunk-Z42MXYWW.js";
41
- import "./chunk-VME3UH4D.js";
42
- import "./chunk-CXKR5Z5F.js";
42
+ import "./chunk-JV225JBX.js";
43
+ import "./chunk-2EJ636HI.js";
43
44
  import "./chunk-DFIOOK5R.js";
44
45
  import "./chunk-65DBIEM2.js";
45
46
  import "./chunk-MLKGABMK.js";
@@ -148,7 +149,7 @@ ${msgLines}`);
148
149
  } catch {
149
150
  }
150
151
  try {
151
- const { getPendingProspective, markSurfaced } = await import("./prospective-memory-VNGLPMS6.js");
152
+ const { getPendingProspective, markSurfaced } = await import("./prospective-memory-FQSVMCGG.js");
152
153
  const due = await getPendingProspective(agentId, { projectName, limit: 5 });
153
154
  if (due.length > 0) {
154
155
  const now = Date.now();
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  getIdentity,
3
3
  loadEmployeesSync
4
- } from "./chunk-P3SIFDES.js";
4
+ } from "./chunk-SCYWCWKY.js";
5
5
 
6
6
  // src/lib/drift-probes.ts
7
7
  var DRIFT_THRESHOLD = 80;
@@ -19,6 +19,9 @@ import path from "path";
19
19
  var DEVICE_JSON_PATH = path.join(EXE_AI_DIR, "device.json");
20
20
  var DEVICE_LOCK_PATH = `${DEVICE_JSON_PATH}.lock`;
21
21
  var _cachedInfo = null;
22
+ function _resetDeviceInfoCacheForTests() {
23
+ _cachedInfo = null;
24
+ }
22
25
  function readDeviceJson() {
23
26
  if (!existsSync(DEVICE_JSON_PATH)) return null;
24
27
  try {
@@ -141,6 +144,7 @@ async function resolveTargetDevice(targetAgent, targetProject) {
141
144
  }
142
145
 
143
146
  export {
147
+ _resetDeviceInfoCacheForTests,
144
148
  getDeviceInfo,
145
149
  setFriendlyName,
146
150
  resolveTargetDevice
@@ -1,17 +1,17 @@
1
1
  import {
2
2
  loadPreferences
3
3
  } from "./chunk-VDYUKTNS.js";
4
+ import {
5
+ buildClaudeHttpMcpEntry
6
+ } from "./chunk-JZW5AOWI.js";
4
7
  import {
5
8
  EXE_HOOKS,
6
9
  isLegacyHomeDirHookCommand,
7
10
  isLegacySplitPostToolCommand
8
11
  } from "./chunk-L3TB7CC3.js";
9
- import {
10
- buildClaudeHttpMcpEntry
11
- } from "./chunk-EI7PBUIA.js";
12
12
  import {
13
13
  ensureAllAgentSymlinks
14
- } from "./chunk-AYMSIV7X.js";
14
+ } from "./chunk-NIZQ3CIS.js";
15
15
  import {
16
16
  MCP_LEGACY_KEY,
17
17
  MCP_PRIMARY_KEY