@askexenow/exe-os 0.9.339 → 0.9.341

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 (312) hide show
  1. package/dist/{active-agent-EC6M7KTX.js → active-agent-AIQP4DFL.js} +3 -3
  2. package/dist/{active-agent-WHIUCHLA.js → active-agent-LW45DSJ4.js} +3 -3
  3. package/dist/{agentic-ontology-RNSXGXW4.js → agentic-ontology-RVUNRCQY.js} +1 -1
  4. package/dist/{backfill-metadata-MFY6BHKE.js → backfill-metadata-ZSDJ4O2T.js} +5 -5
  5. package/dist/backup-verify-ZAJLEL4X.js +425 -0
  6. package/dist/{behaviors-HLZUJSMP.js → behaviors-EO7KCP3H.js} +6 -6
  7. package/dist/bin/agentic-ontology-backfill.js +6 -6
  8. package/dist/bin/agentic-reflection-backfill.js +7 -7
  9. package/dist/bin/agentic-semantic-label.js +6 -6
  10. package/dist/bin/backfill-conversations.js +6 -6
  11. package/dist/bin/backfill-responses.js +6 -6
  12. package/dist/bin/backfill-vectors.js +8 -8
  13. package/dist/bin/bulk-sync-postgres.js +12 -12
  14. package/dist/bin/cc-doctor.js +4 -4
  15. package/dist/bin/cleanup-stale-review-tasks.js +17 -17
  16. package/dist/bin/cli.js +50 -18
  17. package/dist/bin/deferred-daemon-restart.js +74 -73
  18. package/dist/bin/exe-agent-config.js +3 -3
  19. package/dist/bin/exe-agent.js +10 -10
  20. package/dist/bin/exe-assign.js +8 -8
  21. package/dist/bin/exe-boot.js +26 -26
  22. package/dist/bin/exe-call.js +4 -4
  23. package/dist/bin/exe-cloud.js +12 -12
  24. package/dist/bin/exe-config-dump.js +3 -3
  25. package/dist/bin/exe-dispatch.js +17 -17
  26. package/dist/bin/exe-doctor.js +4 -4
  27. package/dist/bin/exe-export-behaviors.js +8 -8
  28. package/dist/bin/exe-forget.js +7 -7
  29. package/dist/bin/exe-gateway.js +7 -7
  30. package/dist/bin/exe-healthcheck.js +4 -4
  31. package/dist/bin/exe-heartbeat.js +17 -17
  32. package/dist/bin/exe-kill.js +21 -21
  33. package/dist/bin/exe-launch-agent.js +27 -27
  34. package/dist/bin/exe-new-employee.js +8 -8
  35. package/dist/bin/exe-pending-messages.js +18 -18
  36. package/dist/bin/exe-pending-notifications.js +17 -17
  37. package/dist/bin/exe-pending-reviews.js +17 -17
  38. package/dist/bin/exe-rename.js +4 -4
  39. package/dist/bin/exe-review.js +20 -20
  40. package/dist/bin/exe-search.js +6 -6
  41. package/dist/bin/exe-session-cleanup.js +22 -22
  42. package/dist/bin/exe-settings.js +13 -13
  43. package/dist/bin/exe-start-codex.js +13 -13
  44. package/dist/bin/exe-start-opencode.js +9 -9
  45. package/dist/bin/exe-status.js +18 -18
  46. package/dist/bin/exe-support.js +3 -3
  47. package/dist/bin/exe-team.js +3 -3
  48. package/dist/bin/git-sweep.js +18 -18
  49. package/dist/bin/graph-backfill.js +7 -7
  50. package/dist/bin/graph-export.js +6 -6
  51. package/dist/bin/import-history.js +10 -10
  52. package/dist/bin/install.js +76 -75
  53. package/dist/bin/intercom-check.js +4 -4
  54. package/dist/bin/mcp-sessions.js +2 -2
  55. package/dist/bin/orchestration-metrics.js +4 -4
  56. package/dist/bin/postgres-agentic-reflection-backfill.js +2 -2
  57. package/dist/bin/postgres-agentic-semantic-backfill.js +1 -1
  58. package/dist/bin/reconcile-backlog.js +484 -0
  59. package/dist/bin/registry-proxy.js +1 -1
  60. package/dist/bin/scan-tasks.js +17 -17
  61. package/dist/bin/setup.js +1 -1
  62. package/dist/bin/shard-migrate.js +5 -5
  63. package/dist/bin/stack-update.js +13 -7
  64. package/dist/bin/vps-health-gate.js +1 -1
  65. package/dist/boot-generation-GSMPJOWM.js +22 -0
  66. package/dist/{capability-cards-YOKVMMOL.js → capability-cards-OBYQNAKZ.js} +2 -2
  67. package/dist/{capacity-monitor-S54IOWRL.js → capacity-monitor-MG3FTUD5.js} +18 -18
  68. package/dist/{catchup-brief-DIOMTEW5.js → catchup-brief-BVJOF3GL.js} +21 -21
  69. package/dist/{chunk-X425OEYF.js → chunk-2C455MU3.js} +2 -2
  70. package/dist/{chunk-N5I7RL3I.js → chunk-2IWBY7XK.js} +1 -1
  71. package/dist/{chunk-X7H3HMFH.js → chunk-2P4WJNN5.js} +3 -3
  72. package/dist/{chunk-MW2GJJ53.js → chunk-2UGGBIDL.js} +2 -2
  73. package/dist/{chunk-BPC5LZ6Y.js → chunk-2WMTTIAZ.js} +1 -1
  74. package/dist/{chunk-BU2QQWBQ.js → chunk-2YCFNBC4.js} +1 -1
  75. package/dist/{chunk-RRWDYOQS.js → chunk-32YHCHWW.js} +1 -1
  76. package/dist/{chunk-I5RLNOFK.js → chunk-3BRVLPPA.js} +8 -4
  77. package/dist/{chunk-KTY7I7UH.js → chunk-4FJZ6SO7.js} +1 -1
  78. package/dist/{chunk-XWHE4LZK.js → chunk-4LWV633D.js} +21 -2
  79. package/dist/{chunk-AVKXCSBI.js → chunk-4QSJVMMT.js} +1 -1
  80. package/dist/{chunk-I3XKO3KQ.js → chunk-6BQG7EKO.js} +1 -1
  81. package/dist/{chunk-RLRT2BVM.js → chunk-6D2PI4QD.js} +1 -1
  82. package/dist/{chunk-7EA7LYW4.js → chunk-6MVC43X7.js} +4 -4
  83. package/dist/chunk-6QW6JHRE.js +368 -0
  84. package/dist/{chunk-HHIBOU3P.js → chunk-7LF5DS3A.js} +1 -1
  85. package/dist/{chunk-XACL67CS.js → chunk-7SEC2AG5.js} +1 -1
  86. package/dist/{chunk-UFAXZ2PY.js → chunk-7YORGTXC.js} +1 -1
  87. package/dist/{chunk-3QDSCJ3F.js → chunk-AP455LBW.js} +1 -1
  88. package/dist/{chunk-OFX5B2S7.js → chunk-ATKW3SYL.js} +1 -1
  89. package/dist/{chunk-3OBWSCJN.js → chunk-B7CUBLF7.js} +10 -10
  90. package/dist/{chunk-UCQITDLM.js → chunk-BJ23BNED.js} +1 -1
  91. package/dist/{chunk-B76TSEP3.js → chunk-BJOBR6P2.js} +1 -1
  92. package/dist/{chunk-XCTGRD4S.js → chunk-BMHQPIJ2.js} +12 -12
  93. package/dist/{chunk-ZIVEA3NB.js → chunk-BR4423AS.js} +1 -1
  94. package/dist/{chunk-ATOU6CYR.js → chunk-BV6GBSRP.js} +16 -2
  95. package/dist/{chunk-DZ6OQM67.js → chunk-C445WRUX.js} +1 -1
  96. package/dist/{chunk-YE7NH53A.js → chunk-CCIEIRV2.js} +1 -1
  97. package/dist/{chunk-6IRVGOUL.js → chunk-CCPHEPLU.js} +1 -1
  98. package/dist/{chunk-2HZY3ECT.js → chunk-CMR64RYM.js} +18 -18
  99. package/dist/{chunk-MQRFKSLI.js → chunk-CYA5S5OD.js} +3 -3
  100. package/dist/{chunk-FNZR3B7U.js → chunk-DGGDUKH6.js} +1 -1
  101. package/dist/{chunk-QXSBB26A.js → chunk-DNVFWFYF.js} +1 -1
  102. package/dist/{chunk-QZLIZAS7.js → chunk-DPFQ2WQX.js} +2 -2
  103. package/dist/{chunk-H37HHX3E.js → chunk-EDH54E5A.js} +9 -9
  104. package/dist/{chunk-JD5S5AAV.js → chunk-EDOO23B2.js} +2 -2
  105. package/dist/{chunk-GQQHDEEM.js → chunk-FOV57K47.js} +10 -10
  106. package/dist/{chunk-65SVQELL.js → chunk-GFDGDFBF.js} +9 -0
  107. package/dist/{chunk-DILD54TU.js → chunk-GOGSWXNZ.js} +9 -9
  108. package/dist/{chunk-UPWE5NOG.js → chunk-GPW32HVB.js} +2 -2
  109. package/dist/{chunk-4IYSBPX3.js → chunk-HAZO7TRD.js} +1 -1
  110. package/dist/{chunk-52KNOQMK.js → chunk-HJX6NCJF.js} +3 -3
  111. package/dist/{chunk-UIV2WPBT.js → chunk-HNLXMD2V.js} +1 -1
  112. package/dist/{chunk-Z7OZP3ET.js → chunk-HSYJ6DZ2.js} +1 -1
  113. package/dist/{chunk-LTVCRHHD.js → chunk-HUSVERE6.js} +4 -4
  114. package/dist/{chunk-I7Z6KTGF.js → chunk-I7ECEP3W.js} +5 -5
  115. package/dist/{chunk-T4KZ2Z2N.js → chunk-IELUDZAA.js} +3 -3
  116. package/dist/{chunk-XUKPALWT.js → chunk-ITMEE7PQ.js} +3 -3
  117. package/dist/{chunk-KCC5A7YL.js → chunk-IXBIVKWZ.js} +6 -6
  118. package/dist/{chunk-GN45PBWI.js → chunk-J6SEDDOR.js} +2 -2
  119. package/dist/{chunk-UXBD22CD.js → chunk-K6KRBXQP.js} +1 -1
  120. package/dist/{chunk-PLRIJALF.js → chunk-KKOLHBNC.js} +33 -25
  121. package/dist/{chunk-OJTJYEMX.js → chunk-KP4PY2Z2.js} +3 -3
  122. package/dist/{chunk-VJHUVFIW.js → chunk-L2YGXJGF.js} +3 -3
  123. package/dist/{chunk-6MRWJMI5.js → chunk-LA2Z6RMS.js} +1 -1
  124. package/dist/{chunk-DEPZOCYD.js → chunk-LEJ25726.js} +321 -621
  125. package/dist/{chunk-2233TQCA.js → chunk-LLU6WZLK.js} +1 -1
  126. package/dist/{chunk-6M36JFFD.js → chunk-LOBCQXV5.js} +4 -4
  127. package/dist/{chunk-LMZISHSJ.js → chunk-MC4ATFJV.js} +5 -5
  128. package/dist/{chunk-EIF2LQHZ.js → chunk-MJB5ZFQM.js} +1 -1
  129. package/dist/{chunk-PAEXYFMY.js → chunk-N7A5D25S.js} +1 -1
  130. package/dist/{chunk-DADMPMYX.js → chunk-NDSNM5OH.js} +1 -1
  131. package/dist/{chunk-H2L4PHGH.js → chunk-NFBW7N4D.js} +2 -2
  132. package/dist/{chunk-VYRYY7TE.js → chunk-NTI22F3R.js} +1 -1
  133. package/dist/{chunk-TLYAEISW.js → chunk-OUEFW4RK.js} +2 -2
  134. package/dist/{chunk-K5WFKEXQ.js → chunk-PTJBWC77.js} +1 -1
  135. package/dist/{chunk-KMBEL7VB.js → chunk-PVIH3ZGV.js} +1 -1
  136. package/dist/{support-outbox-MGUVVGHT.js → chunk-Q5AIPSSC.js} +19 -7
  137. package/dist/chunk-RP5GETX5.js +140 -0
  138. package/dist/{chunk-HEPR6QTL.js → chunk-RWSLVYTE.js} +45 -5
  139. package/dist/{chunk-XJI7Z6LZ.js → chunk-T2PYVVZ5.js} +1 -1
  140. package/dist/{chunk-WYLV4S6A.js → chunk-TIXTHUVJ.js} +3 -3
  141. package/dist/{chunk-7WDXEKUL.js → chunk-TWXZM34M.js} +3 -3
  142. package/dist/{chunk-W7DHFGCB.js → chunk-U2MREVXQ.js} +1 -1
  143. package/dist/{chunk-6HBURYON.js → chunk-UIU2DGRV.js} +3 -3
  144. package/dist/{chunk-7TS64TBG.js → chunk-UU4UINUX.js} +6 -1
  145. package/dist/chunk-W6K4XB6G.js +40 -0
  146. package/dist/{chunk-R44Z32O2.js → chunk-WD55PEBM.js} +3 -3
  147. package/dist/{chunk-FUIIVSW6.js → chunk-WH7XN5ER.js} +1 -1
  148. package/dist/{chunk-Q7L6G6KV.js → chunk-WWNQFOSP.js} +2 -2
  149. package/dist/{chunk-542EWGY3.js → chunk-XSMRR4IW.js} +7 -7
  150. package/dist/{chunk-TNJRWUCE.js → chunk-Y3S4H77G.js} +1 -1
  151. package/dist/{chunk-AOO77BDE.js → chunk-YHUNDGVV.js} +1 -1
  152. package/dist/{chunk-JBSCL2XT.js → chunk-YIIME2OW.js} +1 -1
  153. package/dist/{chunk-QFPTDSY2.js → chunk-YLQXP7T7.js} +1 -1
  154. package/dist/{chunk-RDTZTLVQ.js → chunk-YWQMWFYR.js} +30 -14
  155. package/dist/{chunk-2SG2UGCH.js → chunk-ZNE6H2JO.js} +4 -4
  156. package/dist/{cleanup-graph-garbage-KUABW6LS.js → cleanup-graph-garbage-MXQ4Q2MA.js} +6 -6
  157. package/dist/{co-activation-XMPHKGHR.js → co-activation-QI5BK4RT.js} +2 -2
  158. package/dist/{co-occurrence-SHKSJ6CV.js → co-occurrence-BYSQNZSV.js} +4 -4
  159. package/dist/{code-context-index-EXXDY3QZ.js → code-context-index-BNBHDXHW.js} +2 -2
  160. package/dist/{content-extractor-RHITF2KM.js → content-extractor-JRJDNIHP.js} +2 -2
  161. package/dist/{conversation-entity-extractor-D3EFTLT4.js → conversation-entity-extractor-FPAMTL3C.js} +2 -2
  162. package/dist/{crdt-sync-UJELKSNX.js → crdt-sync-ETPKNBCU.js} +1 -1
  163. package/dist/{crm-webhook-HHNBS7LY.js → crm-webhook-M566ZMZS.js} +2 -2
  164. package/dist/{cto-delegation-gate-DXNF5HVW.js → cto-delegation-gate-S734XDXT.js} +16 -16
  165. package/dist/{daemon-orchestration-7QB6QOXT.js → daemon-orchestration-XV5GN73R.js} +20 -20
  166. package/dist/{daemon-ready-5XI5BIJD.js → daemon-ready-RKKB4P6K.js} +1 -1
  167. package/dist/{daemon-ready-signal-E7VMIQ6I.js → daemon-ready-signal-WKEJQNRA.js} +3 -1
  168. package/dist/{db-backup-DLD4QZBO.js → db-backup-MX2G3CEK.js} +1 -1
  169. package/dist/{doc-graph-extractor-3TRLGD7M.js → doc-graph-extractor-LR5KMPH7.js} +4 -4
  170. package/dist/{documents-FHIBU7KJ.js → documents-FA6N7QDA.js} +8 -8
  171. package/dist/{dreaming-OMFUEUCQ.js → dreaming-UKGTQT6I.js} +17 -17
  172. package/dist/{exe-drift-KY2KHZEL.js → exe-drift-TUKTCXZE.js} +3 -3
  173. package/dist/{exe-export-SP6G3QF6.js → exe-export-ZLHBXMZC.js} +7 -7
  174. package/dist/{exe-import-KJU7FBVQ.js → exe-import-VVKBZWSA.js} +7 -7
  175. package/dist/{exe-key-5RLFQMYP.js → exe-key-QJXFBF6G.js} +74 -73
  176. package/dist/{exe-snapshot-ZNPGUKRZ.js → exe-snapshot-JRLUO645.js} +21 -21
  177. package/dist/{fast-db-init-QQB6IVWV.js → fast-db-init-JKJEEHUI.js} +1 -1
  178. package/dist/{founder-context-PQR3BUS7.js → founder-context-HWPLMZVR.js} +2 -2
  179. package/dist/gateway/index.js +24 -24
  180. package/dist/{git-staleness-UGB5J3K7.js → git-staleness-X5XZONX3.js} +2 -2
  181. package/dist/{global-procedures-R7KRREEK.js → global-procedures-VIIVWB6R.js} +3 -3
  182. package/dist/{graph-auto-extract-LKIQ57PL.js → graph-auto-extract-HCQQF5AG.js} +4 -4
  183. package/dist/{graph-rag-JZZAB7PC.js → graph-rag-WAK2BRJH.js} +2 -2
  184. package/dist/hooks/bug-report-worker.js +19 -19
  185. package/dist/hooks/codex-stop-task-finalizer.js +19 -19
  186. package/dist/hooks/commit-complete.js +19 -19
  187. package/dist/hooks/error-recall.js +7 -7
  188. package/dist/hooks/exe-heartbeat-hook.js +3 -3
  189. package/dist/hooks/ingest-worker.js +5 -5
  190. package/dist/hooks/ingest.js +9 -9
  191. package/dist/hooks/instructions-loaded.js +4 -4
  192. package/dist/hooks/manifest.json +20 -20
  193. package/dist/hooks/notification.js +4 -4
  194. package/dist/hooks/post-compact.js +18 -18
  195. package/dist/hooks/post-tool-combined.js +9 -9
  196. package/dist/hooks/pre-compact.js +19 -19
  197. package/dist/hooks/pre-tool-use.js +22 -22
  198. package/dist/hooks/prompt-submit.js +36 -36
  199. package/dist/hooks/session-end.js +24 -24
  200. package/dist/hooks/session-start.js +14 -14
  201. package/dist/hooks/stop.js +25 -25
  202. package/dist/hooks/subagent-stop.js +18 -18
  203. package/dist/hooks/summary-worker.js +23 -23
  204. package/dist/index.js +29 -29
  205. package/dist/{installer-SB2N5NKH.js → installer-6IFVEQI4.js} +5 -5
  206. package/dist/{installer-MZWWBXM6.js → installer-NX2CLNV5.js} +5 -5
  207. package/dist/{installer-MNPXDLGG.js → installer-T2LGHZKL.js} +5 -5
  208. package/dist/{intercom-queue-VU2G6F5R.js → intercom-queue-KYHXXZCQ.js} +16 -16
  209. package/dist/lib/agent-config.js +1 -1
  210. package/dist/lib/cloud-sync.js +12 -12
  211. package/dist/lib/consolidation.js +8 -8
  212. package/dist/lib/database.js +2 -2
  213. package/dist/lib/db-daemon-client.js +2 -2
  214. package/dist/lib/db.js +2 -2
  215. package/dist/lib/device-registry.js +1 -1
  216. package/dist/lib/embedder.js +2 -2
  217. package/dist/lib/employee-templates.js +4 -4
  218. package/dist/lib/employees.js +2 -2
  219. package/dist/lib/exe-daemon-client.js +1 -1
  220. package/dist/lib/exe-daemon.js +123 -54
  221. package/dist/lib/hybrid-search.js +6 -6
  222. package/dist/lib/identity.js +2 -2
  223. package/dist/lib/license.js +2 -2
  224. package/dist/lib/messaging.js +17 -17
  225. package/dist/lib/post-tool-memory.js +3 -3
  226. package/dist/lib/registry-proxy.js +1 -1
  227. package/dist/lib/reminders.js +3 -3
  228. package/dist/lib/schedules.js +6 -6
  229. package/dist/lib/session-registry.js +4 -4
  230. package/dist/lib/skill-learning.js +7 -7
  231. package/dist/lib/store.js +5 -5
  232. package/dist/lib/task-router.js +3 -3
  233. package/dist/lib/tasks.js +18 -18
  234. package/dist/lib/tmux-routing.js +16 -16
  235. package/dist/lib/token-spend.js +3 -3
  236. package/dist/{license-gate-BYDMFMFT.js → license-gate-MGDR4YNI.js} +3 -3
  237. package/dist/{license-sync-N3RNYVP2.js → license-sync-UWE6GEB4.js} +2 -2
  238. package/dist/mcp/register-tools.js +73 -72
  239. package/dist/mcp/server.js +74 -73
  240. package/dist/mcp/tools/complete-reminder.js +4 -4
  241. package/dist/mcp/tools/create-reminder.js +4 -4
  242. package/dist/mcp/tools/create-task.js +20 -20
  243. package/dist/mcp/tools/deactivate-behavior.js +8 -8
  244. package/dist/mcp/tools/list-reminders.js +4 -4
  245. package/dist/mcp/tools/list-tasks.js +20 -20
  246. package/dist/mcp/tools/send-message.js +19 -19
  247. package/dist/mcp/tools/update-task.js +19 -19
  248. package/dist/{mcp-http-config-EMAVS2JI.js → mcp-http-config-RQLYEPTL.js} +3 -3
  249. package/dist/{memory-cards-TQRLZI4D.js → memory-cards-VYQ5DPMR.js} +5 -5
  250. package/dist/{memory-graph-extractor-IWGNVAFU.js → memory-graph-extractor-GX2HNYLU.js} +5 -5
  251. package/dist/{memory-poisoning-defense-T4ITBGSG.js → memory-poisoning-defense-TX7627BD.js} +2 -2
  252. package/dist/{memory-pressure-watchdog-RRIAXPXQ.js → memory-pressure-watchdog-MLNNH26B.js} +17 -17
  253. package/dist/{memory-queue-client-BKQHTYTH.js → memory-queue-client-YRL6XTGU.js} +2 -2
  254. package/dist/{memory-reflection-6N4J2FL7.js → memory-reflection-KIGEFSI4.js} +2 -2
  255. package/dist/notification-ledger-B6AVEGMV.js +407 -0
  256. package/dist/{notifications-KONB3C62.js → notifications-DWXV7SVL.js} +16 -16
  257. package/dist/{orchestration-events-5SIJOE4H.js → orchestration-events-ZG7O4HRY.js} +3 -3
  258. package/dist/{orchestrator-DUUX7FQV.js → orchestrator-PGHJDUUT.js} +18 -18
  259. package/dist/{pipeline-router-O6HU7DKH.js → pipeline-router-RTLAGZTA.js} +3 -3
  260. package/dist/{plan-limits-GRNBOBB3.js → plan-limits-WLQZTCSF.js} +5 -5
  261. package/dist/{projection-worker-ZVOFHTXT.js → projection-worker-44SEKTZ5.js} +2 -2
  262. package/dist/{prospective-memory-W6S67LZZ.js → prospective-memory-UACFTYXK.js} +2 -2
  263. package/dist/{reranker-SSFBRWWD.js → reranker-NL4YAV6R.js} +1 -1
  264. package/dist/{retrieval-health-TWHKYCRK.js → retrieval-health-4C2PO6HH.js} +1 -1
  265. package/dist/{review-polling-PCMD5BFN.js → review-polling-W5AMHNLT.js} +17 -17
  266. package/dist/runtime/index.js +24 -24
  267. package/dist/{session-events-3LCVQEL7.js → session-events-PGL5GJEB.js} +17 -17
  268. package/dist/{session-kill-telemetry-CZSPN5V6.js → session-kill-telemetry-6YDGEF27.js} +17 -17
  269. package/dist/{session-scope-CFHVSVAQ.js → session-scope-3MEOO557.js} +16 -16
  270. package/dist/{setup-wizard-CJZMM43G.js → setup-wizard-CJIYDSSP.js} +1 -1
  271. package/dist/{skill-refinement-74T6VDFM.js → skill-refinement-EOROTBPX.js} +3 -3
  272. package/dist/stack-promote-RSOWO6EY.js +130 -0
  273. package/dist/{stack-release-XXMV7SPX.js → stack-release-PR2XKJ4Q.js} +24 -9
  274. package/dist/{stack-update-E2TKHHSQ.js → stack-update-LMDM27ZW.js} +5 -3
  275. package/dist/{steward-gate-WT7WXQIE.js → steward-gate-4A2XHYFD.js} +3 -3
  276. package/dist/support-inbox-Z77ACQUY.js +32 -0
  277. package/dist/support-outbox-GB5SQFRJ.js +16 -0
  278. package/dist/{task-enforcement-VI7L43DC.js → task-enforcement-X5QVL6RE.js} +17 -17
  279. package/dist/{task-scope-CQEG5SSJ.js → task-scope-EKYDCVUF.js} +16 -16
  280. package/dist/{tasks-crud-UGK5A25L.js → tasks-crud-6LBNU43G.js} +16 -16
  281. package/dist/{tasks-notify-SMLDFBWM.js → tasks-notify-TFJLSQ3B.js} +17 -17
  282. package/dist/{tasks-review-JKBRACII.js → tasks-review-PBIUYXAL.js} +16 -16
  283. package/dist/{telemetry-upload-7LBYGPCB.js → telemetry-upload-WQDFABTF.js} +7 -7
  284. package/dist/{token-budget-QBRJR4M5.js → token-budget-KWGL5DY7.js} +3 -3
  285. package/dist/{tool-capability-index-Q6YQDL7I.js → tool-capability-index-EH3HQVHU.js} +1 -1
  286. package/dist/{tool-telemetry-ULIDUK3P.js → tool-telemetry-UC55LSIH.js} +1 -1
  287. package/dist/tui/App.js +24 -24
  288. package/dist/{tui-data-NPTGKT37.js → tui-data-M3RBSJL3.js} +16 -16
  289. package/dist/update-support-VPBD5SD2.js +355 -0
  290. package/dist/{worker-gate-MXUQUG4M.js → worker-gate-4QLLMXZM.js} +1 -1
  291. package/dist/{workflow-engine-EWCOLD47.js → workflow-engine-MMEHKUN4.js} +2 -2
  292. package/dist/{worktree-GVF2I5FP.js → worktree-YXBDRYOC.js} +4 -4
  293. package/dist/{worktree-sweep-ZAG3V24E.js → worktree-sweep-5WKBU7E6.js} +5 -5
  294. package/package.json +2 -2
  295. package/release-notes.json +35 -60
  296. package/dist/chunk-Y25OJWOQ.js +0 -45
  297. package/dist/{chunk-FLNSJ2TC.js → chunk-2KLAYDFB.js} +0 -0
  298. package/dist/{chunk-WHRTDN5J.js → chunk-3NCZKWPO.js} +0 -0
  299. package/dist/{chunk-IYB2NIW3.js → chunk-6MVI4QH2.js} +0 -0
  300. package/dist/{chunk-A4DVMPYB.js → chunk-7UMCQQWS.js} +3 -3
  301. /package/dist/{chunk-QLFRCA6I.js → chunk-AYLNJGCS.js} +0 -0
  302. /package/dist/{chunk-D3QASX2W.js → chunk-C2SRRCRK.js} +0 -0
  303. /package/dist/{chunk-KTPG4XKI.js → chunk-IB336P52.js} +0 -0
  304. /package/dist/{chunk-NQBRGXYR.js → chunk-MC6VPZKS.js} +0 -0
  305. /package/dist/{chunk-5Z5NATNS.js → chunk-PPZOWQHP.js} +0 -0
  306. /package/dist/{chunk-C2UO2I6K.js → chunk-WNKVKNOM.js} +0 -0
  307. /package/dist/{core-memory-VO5ZIBKH.js → core-memory-3IBWM4WR.js} +0 -0
  308. /package/dist/{entity-boost-DNI4A5I7.js → entity-boost-DWAWXFKN.js} +0 -0
  309. /package/dist/{message-queue-client-Q5BW3O5W.js → message-queue-client-3PTHPG5Q.js} +0 -0
  310. /package/dist/{oauth-server-ROQFOEMM.js → oauth-server-M5TGXT6D.js} +0 -0
  311. /package/dist/{project-boot-SD7GM24K.js → project-boot-6CGQ3EAH.js} +0 -0
  312. /package/dist/{wiki-acl-JA5UCQZ4.js → wiki-acl-7CROE3MJ.js} +0 -0
@@ -19,23 +19,23 @@ import {
19
19
  runStackUpdate,
20
20
  saveServiceSelection,
21
21
  verifyManifestImagesAvailable
22
- } from "../chunk-XWHE4LZK.js";
22
+ } from "../chunk-4LWV633D.js";
23
+ import {
24
+ runVerifyStack
25
+ } from "../chunk-5KLQCGI5.js";
23
26
  import {
24
27
  assertPreflightGate,
25
28
  runPreflightOnManifest
26
29
  } from "../chunk-3QWOO74G.js";
27
- import {
28
- runVerifyStack
29
- } from "../chunk-5KLQCGI5.js";
30
30
  import {
31
31
  preDeployBackup
32
32
  } from "../chunk-5DMAMQNU.js";
33
33
  import {
34
34
  logResult,
35
35
  runHealthGate
36
- } from "../chunk-FNZR3B7U.js";
37
- import "../chunk-XACL67CS.js";
38
- import "../chunk-5Z5NATNS.js";
36
+ } from "../chunk-DGGDUKH6.js";
37
+ import "../chunk-7SEC2AG5.js";
38
+ import "../chunk-PPZOWQHP.js";
39
39
  import "../chunk-7Y5UDEVM.js";
40
40
  import "../chunk-SHIICYJW.js";
41
41
  import {
@@ -496,6 +496,7 @@ function parseArgs(args) {
496
496
  deploymentPersona: process.env.EXE_STACK_DEPLOYMENT_PERSONA === "askexe-control-plane" ? "askexe-control-plane" : "customer",
497
497
  yes: false,
498
498
  allowedBreakingChangeIds: [],
499
+ allowCanary: process.env.EXE_STACK_ALLOW_CANARY === "1",
499
500
  noBootstrap: false,
500
501
  skipHardening: false,
501
502
  verifyManifestSignature: true,
@@ -561,6 +562,7 @@ function parseArgs(args) {
561
562
  else if (arg === "--skip-hardening") opts.skipHardening = true;
562
563
  else if (arg === "--cleanup-volumes") opts.cleanupVolumes = true;
563
564
  else if (arg === "--allow-red") opts.allowRed = true;
565
+ else if (arg === "--allow-canary") opts.allowCanary = true;
564
566
  else if (arg === "--no-verify-manifest-signature") opts.verifyManifestSignature = false;
565
567
  else if (arg === "--require-manifest-signature") opts.requireManifestSignature = true;
566
568
  else if (arg === "--dry-run") opts.dryRun = true;
@@ -632,6 +634,9 @@ Options:
632
634
  --allow-red Break-glass: apply even when the static preflight gate is RED
633
635
  (also via EXE_PREFLIGHT_OVERRIDE=1). Loudly logged. By default a
634
636
  RED manifest is REFUSED so a broken stack can't be pushed mid-update.
637
+ --allow-canary Explicit opt-in to install a CANARY-stage version implicitly
638
+ (also via EXE_STACK_ALLOW_CANARY=1). Not needed when --target names
639
+ the canary version directly. See: exe-os stack-promote --help
635
640
  --no-verify-manifest-signature Explicitly allow unsigned stack manifests (break-glass only)
636
641
  --require-manifest-signature Strict: fail unless EXE_STACK_PUBLIC_KEY is configured and the
637
642
  manifest signature is valid (default is opt-in: warn + proceed when
@@ -911,6 +916,7 @@ async function main(args = process.argv.slice(2)) {
911
916
  const markers = [];
912
917
  if (v.isCurrent) markers.push("installed");
913
918
  if (v.isLatest) markers.push("latest");
919
+ if (v.rolloutStage === "canary") markers.push("CANARY \u2014 requires --target or --allow-canary");
914
920
  const markerStr = markers.length > 0 ? ` \u2190 ${markers.join(", ")}` : "";
915
921
  console.log(` ${v.version}${markerStr}${v.releasedAt ? ` (${v.releasedAt.slice(0, 10)})` : ""}`);
916
922
  }
@@ -8,7 +8,7 @@ import {
8
8
  logResult,
9
9
  main,
10
10
  runHealthGate
11
- } from "../chunk-FNZR3B7U.js";
11
+ } from "../chunk-DGGDUKH6.js";
12
12
  import "../chunk-MLKGABMK.js";
13
13
  export {
14
14
  checkCRM,
@@ -0,0 +1,22 @@
1
+ import {
2
+ _resetBootGenerationCache,
3
+ bumpBootGeneration,
4
+ getBootGeneration,
5
+ getCachedBootGeneration
6
+ } from "./chunk-W6K4XB6G.js";
7
+ import "./chunk-RWSLVYTE.js";
8
+ import "./chunk-2I23RPSI.js";
9
+ import "./chunk-BV6GBSRP.js";
10
+ import "./chunk-PNQDP3OA.js";
11
+ import "./chunk-H73TUI4Y.js";
12
+ import "./chunk-7HLWBYH7.js";
13
+ import "./chunk-FXU7JOXK.js";
14
+ import "./chunk-7Y5UDEVM.js";
15
+ import "./chunk-SHIICYJW.js";
16
+ import "./chunk-MLKGABMK.js";
17
+ export {
18
+ _resetBootGenerationCache,
19
+ bumpBootGeneration,
20
+ getBootGeneration,
21
+ getCachedBootGeneration
22
+ };
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  getIdentity,
3
3
  loadEmployeesSync
4
- } from "./chunk-HEPR6QTL.js";
4
+ } from "./chunk-RWSLVYTE.js";
5
5
  import "./chunk-2I23RPSI.js";
6
- import "./chunk-ATOU6CYR.js";
6
+ import "./chunk-BV6GBSRP.js";
7
7
  import {
8
8
  getRoleCapabilities
9
9
  } from "./chunk-PNQDP3OA.js";
@@ -8,43 +8,43 @@ import {
8
8
  isAtCapacity,
9
9
  isWithinRelaunchCooldown,
10
10
  pollCapacityDead
11
- } from "./chunk-LMZISHSJ.js";
12
- import "./chunk-T4KZ2Z2N.js";
13
- import "./chunk-PLRIJALF.js";
14
- import "./chunk-OFX5B2S7.js";
15
- import "./chunk-B76TSEP3.js";
16
- import "./chunk-RLRT2BVM.js";
11
+ } from "./chunk-MC4ATFJV.js";
12
+ import "./chunk-IELUDZAA.js";
13
+ import "./chunk-KKOLHBNC.js";
14
+ import "./chunk-ATKW3SYL.js";
15
+ import "./chunk-BJOBR6P2.js";
16
+ import "./chunk-6D2PI4QD.js";
17
+ import "./chunk-E23LNUWJ.js";
17
18
  import "./chunk-4JERP7NT.js";
18
19
  import "./chunk-EIKATSE4.js";
19
- import "./chunk-E23LNUWJ.js";
20
- import "./chunk-UIV2WPBT.js";
21
- import "./chunk-SSTLTIF3.js";
20
+ import "./chunk-HNLXMD2V.js";
22
21
  import "./chunk-RMOBQ6A5.js";
23
22
  import "./chunk-54QCG45Y.js";
24
- import "./chunk-FUIIVSW6.js";
25
- import "./chunk-65SVQELL.js";
23
+ import "./chunk-SSTLTIF3.js";
24
+ import "./chunk-WH7XN5ER.js";
25
+ import "./chunk-GFDGDFBF.js";
26
26
  import "./chunk-NGP6LSV2.js";
27
- import "./chunk-MW2GJJ53.js";
27
+ import "./chunk-2UGGBIDL.js";
28
28
  import "./chunk-CVYC6DUW.js";
29
- import "./chunk-2233TQCA.js";
29
+ import "./chunk-LLU6WZLK.js";
30
30
  import "./chunk-HCJCW7X4.js";
31
31
  import "./chunk-OPU3NYOO.js";
32
- import "./chunk-7TS64TBG.js";
32
+ import "./chunk-UU4UINUX.js";
33
33
  import "./chunk-AFNRE2RV.js";
34
34
  import "./chunk-3NGZ4PL7.js";
35
35
  import "./chunk-NLEW62VC.js";
36
36
  import "./chunk-HYZV25LY.js";
37
37
  import "./chunk-GJV3WDWM.js";
38
38
  import "./chunk-MP2AFCGL.js";
39
- import "./chunk-HEPR6QTL.js";
39
+ import "./chunk-RWSLVYTE.js";
40
40
  import "./chunk-2I23RPSI.js";
41
- import "./chunk-ATOU6CYR.js";
41
+ import "./chunk-BV6GBSRP.js";
42
42
  import "./chunk-PNQDP3OA.js";
43
43
  import "./chunk-H73TUI4Y.js";
44
44
  import "./chunk-7HLWBYH7.js";
45
45
  import "./chunk-FXU7JOXK.js";
46
- import "./chunk-XACL67CS.js";
47
- import "./chunk-5Z5NATNS.js";
46
+ import "./chunk-7SEC2AG5.js";
47
+ import "./chunk-PPZOWQHP.js";
48
48
  import "./chunk-7Y5UDEVM.js";
49
49
  import "./chunk-SHIICYJW.js";
50
50
  import "./chunk-MLKGABMK.js";
@@ -1,35 +1,35 @@
1
1
  import {
2
2
  lightweightSearch
3
- } from "./chunk-GQQHDEEM.js";
3
+ } from "./chunk-FOV57K47.js";
4
4
  import "./chunk-AB4PAQYK.js";
5
- import "./chunk-H37HHX3E.js";
5
+ import "./chunk-EDH54E5A.js";
6
6
  import "./chunk-CHCA3ZM2.js";
7
7
  import "./chunk-OTVEIJUQ.js";
8
- import "./chunk-HHIBOU3P.js";
9
- import "./chunk-Y25OJWOQ.js";
8
+ import "./chunk-7LF5DS3A.js";
9
+ import "./chunk-RP5GETX5.js";
10
10
  import {
11
11
  sessionScopeFilter,
12
12
  strictSessionScopeFilter
13
- } from "./chunk-PLRIJALF.js";
14
- import "./chunk-OFX5B2S7.js";
15
- import "./chunk-B76TSEP3.js";
16
- import "./chunk-RLRT2BVM.js";
13
+ } from "./chunk-KKOLHBNC.js";
14
+ import "./chunk-ATKW3SYL.js";
15
+ import "./chunk-BJOBR6P2.js";
16
+ import "./chunk-6D2PI4QD.js";
17
+ import "./chunk-E23LNUWJ.js";
17
18
  import "./chunk-4JERP7NT.js";
18
19
  import "./chunk-EIKATSE4.js";
19
- import "./chunk-E23LNUWJ.js";
20
- import "./chunk-UIV2WPBT.js";
21
- import "./chunk-SSTLTIF3.js";
20
+ import "./chunk-HNLXMD2V.js";
22
21
  import "./chunk-RMOBQ6A5.js";
23
22
  import "./chunk-54QCG45Y.js";
24
- import "./chunk-FUIIVSW6.js";
25
- import "./chunk-65SVQELL.js";
23
+ import "./chunk-SSTLTIF3.js";
24
+ import "./chunk-WH7XN5ER.js";
25
+ import "./chunk-GFDGDFBF.js";
26
26
  import "./chunk-NGP6LSV2.js";
27
- import "./chunk-MW2GJJ53.js";
27
+ import "./chunk-2UGGBIDL.js";
28
28
  import "./chunk-CVYC6DUW.js";
29
- import "./chunk-2233TQCA.js";
29
+ import "./chunk-LLU6WZLK.js";
30
30
  import "./chunk-HCJCW7X4.js";
31
31
  import "./chunk-OPU3NYOO.js";
32
- import "./chunk-7TS64TBG.js";
32
+ import "./chunk-UU4UINUX.js";
33
33
  import "./chunk-AFNRE2RV.js";
34
34
  import "./chunk-3NGZ4PL7.js";
35
35
  import "./chunk-NLEW62VC.js";
@@ -38,16 +38,16 @@ import "./chunk-GJV3WDWM.js";
38
38
  import "./chunk-MP2AFCGL.js";
39
39
  import {
40
40
  getClient
41
- } from "./chunk-HEPR6QTL.js";
41
+ } from "./chunk-RWSLVYTE.js";
42
42
  import "./chunk-2I23RPSI.js";
43
- import "./chunk-ATOU6CYR.js";
43
+ import "./chunk-BV6GBSRP.js";
44
44
  import "./chunk-PNQDP3OA.js";
45
45
  import "./chunk-H73TUI4Y.js";
46
46
  import "./chunk-7HLWBYH7.js";
47
47
  import "./chunk-FXU7JOXK.js";
48
48
  import "./chunk-Z42MXYWW.js";
49
- import "./chunk-XACL67CS.js";
50
- import "./chunk-5Z5NATNS.js";
49
+ import "./chunk-7SEC2AG5.js";
50
+ import "./chunk-PPZOWQHP.js";
51
51
  import "./chunk-7Y5UDEVM.js";
52
52
  import "./chunk-SHIICYJW.js";
53
53
  import "./chunk-MLKGABMK.js";
@@ -156,7 +156,7 @@ ${msgLines}`);
156
156
  } catch {
157
157
  }
158
158
  try {
159
- const { getPendingProspective, markSurfaced } = await import("./prospective-memory-W6S67LZZ.js");
159
+ const { getPendingProspective, markSurfaced } = await import("./prospective-memory-UACFTYXK.js");
160
160
  const due = await getPendingProspective(agentId, { projectName, limit: 5 });
161
161
  if (due.length > 0) {
162
162
  const now = Date.now();
@@ -8,10 +8,10 @@ import {
8
8
  } from "./chunk-L3TB7CC3.js";
9
9
  import {
10
10
  buildClaudeHttpMcpEntry
11
- } from "./chunk-AVKXCSBI.js";
11
+ } from "./chunk-4QSJVMMT.js";
12
12
  import {
13
13
  ensureAllAgentSymlinks
14
- } from "./chunk-OFX5B2S7.js";
14
+ } from "./chunk-ATKW3SYL.js";
15
15
  import {
16
16
  MCP_LEGACY_KEY,
17
17
  MCP_PRIMARY_KEY
@@ -119,7 +119,7 @@ function releaseBackfillLock() {
119
119
  }
120
120
  async function getTaskAwareCapacity() {
121
121
  const { getClient } = await import("./lib/database.js");
122
- const { sessionScopeFilter } = await import("./task-scope-CQEG5SSJ.js");
122
+ const { sessionScopeFilter } = await import("./task-scope-EKYDCVUF.js");
123
123
  const client = getClient();
124
124
  const scope = sessionScopeFilter();
125
125
  const result = await client.execute({
@@ -4,17 +4,17 @@ import {
4
4
  resolveExeSession,
5
5
  sendIntercom,
6
6
  strictSessionScopeFilter
7
- } from "./chunk-PLRIJALF.js";
7
+ } from "./chunk-KKOLHBNC.js";
8
8
  import {
9
9
  parseMessage,
10
10
  serializeMessage
11
11
  } from "./chunk-4JERP7NT.js";
12
12
  import {
13
13
  recordOrchestrationEventBestEffort
14
- } from "./chunk-FUIIVSW6.js";
14
+ } from "./chunk-WH7XN5ER.js";
15
15
  import {
16
16
  getClient
17
- } from "./chunk-HEPR6QTL.js";
17
+ } from "./chunk-RWSLVYTE.js";
18
18
 
19
19
  // src/lib/messaging.ts
20
20
  import crypto from "crypto";
@@ -3,12 +3,12 @@ import {
3
3
  getClient,
4
4
  isInitialized,
5
5
  loadEmployees
6
- } from "./chunk-HEPR6QTL.js";
6
+ } from "./chunk-RWSLVYTE.js";
7
7
  import {
8
8
  PLAN_LIMITS,
9
9
  checkLicense,
10
10
  isFeatureAllowed
11
- } from "./chunk-XACL67CS.js";
11
+ } from "./chunk-7SEC2AG5.js";
12
12
  import {
13
13
  EXE_AI_DIR
14
14
  } from "./chunk-7Y5UDEVM.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getClient
3
- } from "./chunk-HEPR6QTL.js";
3
+ } from "./chunk-RWSLVYTE.js";
4
4
  import {
5
5
  loadConfigSync
6
6
  } from "./chunk-7Y5UDEVM.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  listReminders
3
- } from "./chunk-KMBEL7VB.js";
3
+ } from "./chunk-PVIH3ZGV.js";
4
4
 
5
5
  // src/mcp/tools/list-reminders.ts
6
6
  import { z } from "zod";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getClient
3
- } from "./chunk-HEPR6QTL.js";
3
+ } from "./chunk-RWSLVYTE.js";
4
4
 
5
5
  // src/lib/token-budget.ts
6
6
  var WARN_THRESHOLD = 0.8;
@@ -11,12 +11,15 @@ function daemonReadyPath() {
11
11
  function eventLoopBlockedMarkerPath() {
12
12
  return join(exeDir(), "session-cache", "event-loop-blocked.marker");
13
13
  }
14
+ var _readyGeneration;
15
+ function setDaemonReadyGeneration(generation) {
16
+ _readyGeneration = generation;
17
+ }
14
18
  function writeDaemonReady(info) {
15
19
  try {
16
- writeFileSync(
17
- daemonReadyPath(),
18
- JSON.stringify({ pid: info.pid, port: info.port, ts: (/* @__PURE__ */ new Date()).toISOString() })
19
- );
20
+ const payload = { pid: info.pid, port: info.port, ts: (/* @__PURE__ */ new Date()).toISOString() };
21
+ if (_readyGeneration !== void 0) payload.generation = _readyGeneration;
22
+ writeFileSync(daemonReadyPath(), JSON.stringify(payload));
20
23
  } catch {
21
24
  }
22
25
  }
@@ -55,6 +58,7 @@ function isDaemonReady(maxAgeMs = 3e4) {
55
58
 
56
59
  export {
57
60
  daemonReadyPath,
61
+ setDaemonReadyGeneration,
58
62
  writeDaemonReady,
59
63
  clearDaemonReady,
60
64
  readDaemonReady,
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  clean,
3
3
  stableId
4
- } from "./chunk-D3QASX2W.js";
4
+ } from "./chunk-C2SRRCRK.js";
5
5
 
6
6
  // src/lib/reflection-checkpoints.ts
7
7
  function parsePayload(payload) {
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  loadLicense
3
- } from "./chunk-XACL67CS.js";
3
+ } from "./chunk-7SEC2AG5.js";
4
4
 
5
5
  // src/lib/stack-update.ts
6
6
  import { execFileSync, spawnSync } from "child_process";
@@ -955,6 +955,17 @@ function writeBreakGlassAudit(plan, issues, options) {
955
955
  writeFileSync(auditFile, body, { mode: 384 });
956
956
  console.warn(`[stack-update] BREAK-GLASS deploy override recorded: ${auditFile}`);
957
957
  }
958
+ function assertRolloutStageAllowed(plan, options) {
959
+ const stage = plan.release.rolloutStage ?? "ga";
960
+ if (stage !== "canary") return;
961
+ if (options.explicitTarget || options.allowCanary) return;
962
+ throw new Error(
963
+ `Stack ${plan.targetVersion} is a CANARY release (not yet promoted to general availability). Refusing to install it implicitly via manifest.latest \u2014 this protects the fleet from an unpromoted rollout reaching every customer at once. To deploy it anyway:
964
+ - as the designated canary host: exe-os stack-update --target ${plan.targetVersion} --yes
965
+ - or explicitly opt in: exe-os stack-update --allow-canary --yes
966
+ Once the canary host is verified healthy, promote it with: exe-os stack-promote --version ${plan.targetVersion} --yes`
967
+ );
968
+ }
958
969
  function assertBreakingChangesAllowed(plan, allowedIds) {
959
970
  const required = plan.breakingChanges.filter((c) => c.requiresConfirmation !== false);
960
971
  const missing = required.filter((c) => !allowedIds.includes(c.id));
@@ -1786,6 +1797,10 @@ async function runStackUpdate(options) {
1786
1797
  const composeRaw = readFileSync(options.composeFile, "utf8");
1787
1798
  const plan = createStackUpdatePlan(manifest, envRaw, effectiveTargetVersion, scopedServiceNames, serviceSelection, composeRaw);
1788
1799
  const fullTargetPlan = scopedServiceNames.length > 0 ? createStackUpdatePlan(manifest, envRaw, effectiveTargetVersion, void 0, serviceSelection, composeRaw) : plan;
1800
+ assertRolloutStageAllowed(plan, {
1801
+ explicitTarget: Boolean(effectiveTargetVersion),
1802
+ allowCanary: options.allowCanary ?? process.env.EXE_STACK_ALLOW_CANARY === "1"
1803
+ });
1789
1804
  assertBreakingChangesAllowed(plan, options.allowedBreakingChangeIds ?? []);
1790
1805
  assertDeploymentScopeAllowed(plan, options.deploymentPersona ?? "customer");
1791
1806
  const plannedEnvRaw = patchEnv(envRaw, Object.fromEntries(plan.changes.map((c) => [c.key, c.after])));
@@ -2416,7 +2431,10 @@ function listAvailableVersions(manifest, currentVersion) {
2416
2431
  releasedAt: manifest.stacks[v]?.releasedAt,
2417
2432
  notes: manifest.stacks[v]?.notes,
2418
2433
  isCurrent: v === currentVersion,
2419
- isLatest: v === manifest.latest
2434
+ isLatest: v === manifest.latest,
2435
+ // Backward compatible: manifest entries published before rolloutStage existed
2436
+ // are "ga" (see assertRolloutStageAllowed).
2437
+ rolloutStage: manifest.stacks[v]?.rolloutStage ?? "ga"
2420
2438
  }));
2421
2439
  }
2422
2440
  function compareVersions(a, b) {
@@ -2865,6 +2883,7 @@ export {
2865
2883
  collectImageAvailabilityIssues,
2866
2884
  assertDeploymentScopeAllowed,
2867
2885
  assertProductionDeployGate,
2886
+ assertRolloutStageAllowed,
2868
2887
  assertBreakingChangesAllowed,
2869
2888
  verifyManifestImagesAvailable,
2870
2889
  applyGatewayOverlays,
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-X2FHTDIU.js";
4
4
  import {
5
5
  loadEmployeesSync
6
- } from "./chunk-HEPR6QTL.js";
6
+ } from "./chunk-RWSLVYTE.js";
7
7
 
8
8
  // src/adapters/mcp-http-config.ts
9
9
  import { chmodSync, existsSync, mkdirSync, readFileSync, writeFileSync } from "fs";
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-A47MXY2I.js";
5
5
  import {
6
6
  getClient
7
- } from "./chunk-HEPR6QTL.js";
7
+ } from "./chunk-RWSLVYTE.js";
8
8
 
9
9
  // src/lib/global-procedures.ts
10
10
  import { randomUUID } from "crypto";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getClient
3
- } from "./chunk-HEPR6QTL.js";
3
+ } from "./chunk-RWSLVYTE.js";
4
4
 
5
5
  // src/lib/skill-refinement.ts
6
6
  import crypto from "crypto";
@@ -1,11 +1,11 @@
1
+ import {
2
+ ingest
3
+ } from "./chunk-TWXZM34M.js";
1
4
  import {
2
5
  listWorkflowDefinitions,
3
6
  runWorkflow,
4
7
  startWorkflow
5
- } from "./chunk-QXSBB26A.js";
6
- import {
7
- ingest
8
- } from "./chunk-7WDXEKUL.js";
8
+ } from "./chunk-DNVFWFYF.js";
9
9
  import {
10
10
  initCRMBridge
11
11
  } from "./chunk-ML4S5SHZ.js";