@askexenow/exe-os 0.9.382 → 0.9.384

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 (493) hide show
  1. package/delivery/catalog.json +1254 -0
  2. package/deploy/compose/.env.customer.example +5 -5
  3. package/deploy/compose/.env.example +3 -3
  4. package/deploy/compose/docker-compose.yml +1 -1
  5. package/deploy/compose/generate-env.ts +65 -9
  6. package/deploy/compose/setup.sh +205 -7
  7. package/deploy/compose/sso-edge/default.conf.template +45 -0
  8. package/deploy/compose/sso-edge/sso-redirect.conf +11 -2
  9. package/deploy/stack-manifests/v0.9.30-apps.json +1 -1
  10. package/deploy/stack-manifests/v0.9.json +254 -2
  11. package/dist/.dist-verified.json +3 -3
  12. package/dist/{active-agent-GFUUCFLD.js → active-agent-F5V4E4UL.js} +7 -7
  13. package/dist/{active-agent-LE6FE6SO.js → active-agent-YTBB4ZQM.js} +7 -7
  14. package/dist/{agent-defs-generator-EIUA3SH5.js → agent-defs-generator-7TFISIJQ.js} +6 -6
  15. package/dist/{agent-loop-7ZRH56EX.js → agent-loop-EZ7LDAGD.js} +1 -1
  16. package/dist/{agentic-ontology-67JGSP7G.js → agentic-ontology-XVTUVV7W.js} +1 -1
  17. package/dist/{artifact-backup-NYXAYASJ.js → artifact-backup-TF6YWQT2.js} +5 -5
  18. package/dist/{backfill-gate-KWJQ35YX.js → backfill-gate-FWYLCGNJ.js} +3 -3
  19. package/dist/{backfill-metadata-RQYG2WUJ.js → backfill-metadata-J6MXIDCW.js} +10 -10
  20. package/dist/{background-jobs-6VMD55PK.js → background-jobs-V3DZRFKU.js} +3 -3
  21. package/dist/{backup-verify-HC4YDSGN.js → backup-verify-6DVBQMDP.js} +67 -18
  22. package/dist/{behavior-injection-6HSXP43Q.js → behavior-injection-XDA7ZCYN.js} +21 -20
  23. package/dist/{behavior-promotion-SJDQ2Y3U.js → behavior-promotion-4VLQ7LXK.js} +20 -19
  24. package/dist/{behaviors-6ITLA2CK.js → behaviors-SCCZP7RZ.js} +19 -18
  25. package/dist/bin/age-ontology-load.js +3 -3
  26. package/dist/bin/agentic-ontology-backfill.js +12 -12
  27. package/dist/bin/agentic-reflection-backfill.js +13 -13
  28. package/dist/bin/agentic-semantic-label.js +12 -12
  29. package/dist/bin/backfill-conversations.js +17 -16
  30. package/dist/bin/backfill-responses.js +17 -16
  31. package/dist/bin/backfill-vectors.js +23 -22
  32. package/dist/bin/bulk-sync-postgres.js +28 -27
  33. package/dist/bin/cc-doctor.js +17 -16
  34. package/dist/bin/cleanup-stale-review-tasks.js +29 -28
  35. package/dist/bin/cli.js +35 -26
  36. package/dist/bin/deferred-daemon-restart.js +124 -123
  37. package/dist/bin/exe-actions.js +1 -1
  38. package/dist/bin/exe-agent-config.js +6 -6
  39. package/dist/bin/exe-agent.js +22 -22
  40. package/dist/bin/exe-assign.js +19 -18
  41. package/dist/bin/exe-boot.js +57 -56
  42. package/dist/bin/exe-call.js +7 -7
  43. package/dist/bin/exe-cicd.js +38 -8
  44. package/dist/bin/exe-cloud.js +30 -29
  45. package/dist/bin/exe-config-dump.js +6 -6
  46. package/dist/bin/exe-dispatch.js +30 -29
  47. package/dist/bin/exe-doctor.js +11 -11
  48. package/dist/bin/exe-export-behaviors.js +23 -22
  49. package/dist/bin/exe-forget.js +13 -13
  50. package/dist/bin/exe-gateway.js +47 -14
  51. package/dist/bin/exe-grant.js +6 -6
  52. package/dist/bin/exe-healthcheck.js +17 -16
  53. package/dist/bin/exe-heartbeat.js +41 -35
  54. package/dist/bin/exe-kill.js +35 -34
  55. package/dist/bin/exe-launch-agent.js +43 -42
  56. package/dist/bin/exe-mcp.js +9 -9
  57. package/dist/bin/exe-memory-reads.js +10 -10
  58. package/dist/bin/exe-new-employee.js +11 -11
  59. package/dist/bin/exe-os-mcp-proxy.js +9 -9
  60. package/dist/bin/exe-pending-messages.js +30 -29
  61. package/dist/bin/exe-pending-notifications.js +29 -28
  62. package/dist/bin/exe-pending-reviews.js +30 -29
  63. package/dist/bin/exe-preflight.js +1 -1
  64. package/dist/bin/exe-rename.js +9 -9
  65. package/dist/bin/exe-review.js +34 -33
  66. package/dist/bin/exe-search.js +12 -12
  67. package/dist/bin/exe-session-cleanup.js +35 -34
  68. package/dist/bin/exe-settings.js +29 -28
  69. package/dist/bin/exe-start-codex.js +30 -29
  70. package/dist/bin/exe-start-opencode.js +27 -26
  71. package/dist/bin/exe-status.js +31 -30
  72. package/dist/bin/exe-support.js +5 -5
  73. package/dist/bin/exe-team.js +7 -7
  74. package/dist/bin/exe-verify-running-images.js +1 -1
  75. package/dist/bin/exe-watchdog.js +8 -8
  76. package/dist/bin/generate-hook-manifest.js +7 -1
  77. package/dist/bin/git-sweep.js +30 -29
  78. package/dist/bin/graph-backfill.js +12 -12
  79. package/dist/bin/graph-export.js +11 -11
  80. package/dist/bin/hooks-cli.js +1 -1
  81. package/dist/bin/import-history.js +15 -15
  82. package/dist/bin/install.js +130 -129
  83. package/dist/bin/intercom-check.js +11 -7
  84. package/dist/bin/mcp-sessions.js +2 -2
  85. package/dist/bin/orchestration-metrics.js +7 -7
  86. package/dist/bin/postgres-agentic-reflection-backfill.js +5 -5
  87. package/dist/bin/postgres-agentic-semantic-backfill.js +4 -4
  88. package/dist/bin/reconcile-backlog.js +2 -2
  89. package/dist/bin/registry-proxy.js +1 -1
  90. package/dist/bin/repair-document-chunks.js +161 -0
  91. package/dist/bin/scan-tasks.js +30 -29
  92. package/dist/bin/setup.js +5 -5
  93. package/dist/bin/shard-migrate.js +11 -11
  94. package/dist/bin/stack-update.js +625 -33
  95. package/dist/bin/update.js +96 -22
  96. package/dist/bin/verify-stack.js +2 -2
  97. package/dist/bin/vps-health-gate.js +1 -1
  98. package/dist/{boot-generation-L55QANCX.js → boot-generation-Q7LGQ3AO.js} +6 -6
  99. package/dist/{boot-review-sections-AON5ZCR2.js → boot-review-sections-G5774FR5.js} +28 -27
  100. package/dist/{branch-hygiene-QLD77IMJ.js → branch-hygiene-44WLSOZR.js} +2 -2
  101. package/dist/{branding-I6KIMB7F.js → branding-KMWCY5HZ.js} +3 -3
  102. package/dist/build-manifest.json +1259 -1219
  103. package/dist/{capability-cards-WTOXY7O6.js → capability-cards-I3RHCF4F.js} +5 -5
  104. package/dist/{capacity-monitor-ZLG7FSWM.js → capacity-monitor-7I7GDONU.js} +30 -29
  105. package/dist/{catchup-brief-QHY7D7N2.js → catchup-brief-3T5PARIR.js} +39 -36
  106. package/dist/check-image-pullability-2AIVB4BX.js +338 -0
  107. package/dist/{chunk-CTCCYKOV.js → chunk-2FKU4ZEO.js} +55 -29
  108. package/dist/{chunk-M7O7TGGU.js → chunk-2NW4LRDU.js} +1 -1
  109. package/dist/{chunk-XTFM4KMW.js → chunk-2PZTMSMG.js} +6 -6
  110. package/dist/{chunk-UWX6MMCX.js → chunk-3B6FLNLV.js} +1 -1
  111. package/dist/{chunk-GPJIBLP4.js → chunk-3DAEZILW.js} +1 -1
  112. package/dist/{chunk-NY6SBR4O.js → chunk-3FGBBJYM.js} +15 -3
  113. package/dist/{chunk-C4OZVVSG.js → chunk-3OX34OC3.js} +50 -18
  114. package/dist/{chunk-TXTXC3QG.js → chunk-3RGTLZNO.js} +12 -12
  115. package/dist/{chunk-PYRO25A5.js → chunk-3SUPEE6H.js} +10 -11
  116. package/dist/{chunk-PPMGQFLJ.js → chunk-3XY57PKT.js} +2 -2
  117. package/dist/{chunk-CRHI5QTZ.js → chunk-46VSBDUW.js} +2 -2
  118. package/dist/{chunk-VZT66WWP.js → chunk-4AAMFWJT.js} +2 -2
  119. package/dist/{chunk-4GZTBLJG.js → chunk-4AR5XKCH.js} +1 -1
  120. package/dist/{chunk-IHXW4VUI.js → chunk-5IADGFGR.js} +1 -1
  121. package/dist/{chunk-GLQEJOXE.js → chunk-5MVKTNZP.js} +57 -0
  122. package/dist/{chunk-AVMLC2MR.js → chunk-5U2IJBFV.js} +290 -41
  123. package/dist/{chunk-JUKDL5MF.js → chunk-6BJCDWSM.js} +1 -1
  124. package/dist/{chunk-6WWNK7UX.js → chunk-6FIC57PH.js} +1 -1
  125. package/dist/{chunk-ASUICGPX.js → chunk-6YDY6ZTD.js} +4 -4
  126. package/dist/{chunk-FU5O2REK.js → chunk-72V3S44T.js} +108 -29
  127. package/dist/{chunk-LTIIZHNA.js → chunk-7J2ZQ4XN.js} +1 -1
  128. package/dist/{chunk-7RI2CNXJ.js → chunk-7OTR2OET.js} +1 -1
  129. package/dist/{chunk-ZVBVPX4W.js → chunk-7UHZBVP3.js} +82 -51
  130. package/dist/{chunk-PTY2N23C.js → chunk-AGC2V7JS.js} +26 -13
  131. package/dist/{chunk-44VR3PFW.js → chunk-AHESD3KW.js} +1 -1
  132. package/dist/{chunk-NPGV4MZ3.js → chunk-ALRHGEAJ.js} +1 -1
  133. package/dist/{chunk-WJC6AAJN.js → chunk-ANVHWV2X.js} +2 -2
  134. package/dist/{chunk-AGZSGAEN.js → chunk-APL7HUE3.js} +105 -32
  135. package/dist/{chunk-7UH2JWBF.js → chunk-AZSTIAVL.js} +176 -11
  136. package/dist/chunk-AZXMR25O.js +545 -0
  137. package/dist/{chunk-WPWEBZ37.js → chunk-B7AMNZTC.js} +2 -2
  138. package/dist/{chunk-4CF5KUWH.js → chunk-BPVFZ6Q4.js} +3 -3
  139. package/dist/{chunk-XTQ7R2PA.js → chunk-BV2IET6B.js} +73 -17
  140. package/dist/{chunk-4F5CNI65.js → chunk-C5ISP5FO.js} +2 -2
  141. package/dist/{chunk-NPWNXJ3U.js → chunk-CH7BUBP3.js} +7 -7
  142. package/dist/{chunk-X5Q66EOG.js → chunk-CHIUS5QB.js} +16 -16
  143. package/dist/{chunk-ZG62LIK3.js → chunk-CIPDQRFO.js} +1 -1
  144. package/dist/{chunk-4PYIRIU6.js → chunk-CM7N5MBY.js} +5 -5
  145. package/dist/{chunk-L5YDAFUH.js → chunk-CYCIX7AW.js} +5 -5
  146. package/dist/{chunk-76YRJKKF.js → chunk-D3LXVAIQ.js} +28 -16
  147. package/dist/{chunk-2GNAHBRD.js → chunk-DMUOTCDN.js} +1 -1
  148. package/dist/{chunk-QMUFSRQX.js → chunk-DN3ZR3UE.js} +1 -1
  149. package/dist/{chunk-V3WLC5TJ.js → chunk-DRTJCG6B.js} +1 -1
  150. package/dist/{chunk-275WHBEN.js → chunk-DYVLEMKS.js} +1 -1
  151. package/dist/{chunk-O34F5EP5.js → chunk-DZN7SDY2.js} +1 -1
  152. package/dist/{chunk-ZDIXMHY7.js → chunk-E3ZM32LF.js} +8 -8
  153. package/dist/{chunk-N2HXR5MB.js → chunk-E7C2WNR5.js} +4 -4
  154. package/dist/{chunk-VVGXWVZU.js → chunk-EGOEB42T.js} +3 -3
  155. package/dist/{chunk-QV5CQLQH.js → chunk-EIOGV75A.js} +2 -2
  156. package/dist/{chunk-ZY4IGUOS.js → chunk-ELCRJGCH.js} +3 -3
  157. package/dist/{chunk-5QCIWWFA.js → chunk-ELEGH4DX.js} +130 -14
  158. package/dist/{chunk-S7CTCPSW.js → chunk-EOTZSAQL.js} +1 -1
  159. package/dist/{chunk-PPLQ4ECD.js → chunk-EUGEFBGV.js} +3 -3
  160. package/dist/{chunk-UFNCL6MS.js → chunk-EYMFVITZ.js} +1 -1
  161. package/dist/{chunk-F6H7GP2O.js → chunk-F4BBMIPG.js} +3 -3
  162. package/dist/{chunk-FNEZ4BWT.js → chunk-FEU6QEEL.js} +1 -1
  163. package/dist/{chunk-JKOC2L6P.js → chunk-FHIFTSPL.js} +1 -1
  164. package/dist/{chunk-4RTKETV3.js → chunk-FMIYFHLE.js} +3 -3
  165. package/dist/{chunk-TK544DEW.js → chunk-FVLNNNH6.js} +3 -3
  166. package/dist/{chunk-AY2U4NZ5.js → chunk-GL47M7NY.js} +85 -17
  167. package/dist/{chunk-DN24VTS5.js → chunk-GSLFH4AI.js} +25 -13
  168. package/dist/{chunk-CHO5SNWR.js → chunk-HA63SH5W.js} +1 -1
  169. package/dist/{chunk-4IK2K3B3.js → chunk-HME6ITKV.js} +1 -1
  170. package/dist/{chunk-H2T6TFJZ.js → chunk-HU3VD4MQ.js} +2 -2
  171. package/dist/{chunk-ZW32RI66.js → chunk-I5XIW2BP.js} +49 -11
  172. package/dist/{chunk-3CL2I3RG.js → chunk-IGJMS7C5.js} +2 -2
  173. package/dist/{chunk-BRPO6GOH.js → chunk-JA3Y5TV6.js} +2 -2
  174. package/dist/{chunk-SFFXAPYK.js → chunk-JDDM6C57.js} +1 -1
  175. package/dist/{chunk-W4EGAQXW.js → chunk-JFJP6ATJ.js} +2 -2
  176. package/dist/{chunk-ENCUOZXX.js → chunk-JFTUAV4J.js} +1 -1
  177. package/dist/{chunk-3UOQH2DJ.js → chunk-JJTPPAZY.js} +2568 -345
  178. package/dist/{chunk-A6QBAUJH.js → chunk-KILR4FBR.js} +4 -4
  179. package/dist/{chunk-CGFGNHSP.js → chunk-KTKIFXIP.js} +1 -1
  180. package/dist/{chunk-NCJBPXGM.js → chunk-KXYKSLW4.js} +108 -24
  181. package/dist/{chunk-3MUARHPO.js → chunk-L3VUW5M4.js} +1 -1
  182. package/dist/{chunk-GZOG2MAX.js → chunk-L5EPGGDP.js} +1 -1
  183. package/dist/{chunk-T7VSKWES.js → chunk-L63V25HS.js} +6 -5
  184. package/dist/{chunk-R4VNGRKU.js → chunk-LFBLQE2P.js} +1 -1
  185. package/dist/{chunk-W5MCOZTW.js → chunk-LFUBEHFW.js} +12 -2
  186. package/dist/{chunk-AIBIEP4R.js → chunk-LKTN22L6.js} +61 -25
  187. package/dist/{chunk-3KFQCFQB.js → chunk-LR5O2XWZ.js} +5 -5
  188. package/dist/{chunk-VUOAPKPI.js → chunk-LSNBTGW4.js} +1 -1
  189. package/dist/{chunk-P5U3GAWU.js → chunk-MB47DRF5.js} +2 -2
  190. package/dist/{chunk-HZESME3B.js → chunk-MC4IM2CC.js} +16 -13
  191. package/dist/{chunk-ZKJ5S23O.js → chunk-MFAOAIUE.js} +12 -9
  192. package/dist/{chunk-62J64CHO.js → chunk-MKM6D7JM.js} +26 -7
  193. package/dist/{chunk-ZIG7VPJV.js → chunk-MMS2HBRT.js} +15 -3
  194. package/dist/{chunk-FHSV4BSW.js → chunk-MOANZQXF.js} +12 -4
  195. package/dist/{chunk-RTZZBWQC.js → chunk-MPZ2AVNS.js} +16 -5
  196. package/dist/{chunk-AZ6KLVDX.js → chunk-MROSARM5.js} +2 -2
  197. package/dist/{chunk-RV2FFCDS.js → chunk-MUAWCFW6.js} +6 -2
  198. package/dist/{chunk-K4ESASPL.js → chunk-MUCNYSJP.js} +1 -1
  199. package/dist/{chunk-5QGKMP6T.js → chunk-NF5FOSLD.js} +1 -1
  200. package/dist/{chunk-CKOJP7JI.js → chunk-NKEFYE4R.js} +2 -2
  201. package/dist/{chunk-3SXHEQ7X.js → chunk-NPXIS2RY.js} +1 -1
  202. package/dist/{chunk-A5USSF66.js → chunk-NVFNADTX.js} +12 -8
  203. package/dist/{chunk-VVUO3RJS.js → chunk-NYLJQ2M2.js} +4 -4
  204. package/dist/{chunk-HIVOLPLD.js → chunk-OAFENIHN.js} +1 -1
  205. package/dist/{chunk-PMZHZQ6K.js → chunk-OBBO6EJR.js} +1 -1
  206. package/dist/{chunk-SS6EMDLL.js → chunk-P2UY34XE.js} +6 -6
  207. package/dist/{chunk-Y4T5IUEP.js → chunk-P3QQ52QK.js} +2 -2
  208. package/dist/{chunk-GGEKMY6G.js → chunk-P3UX5EH4.js} +4 -4
  209. package/dist/{chunk-F7IRZU5G.js → chunk-P4PIZOL2.js} +3 -3
  210. package/dist/{chunk-GEPFKUUR.js → chunk-P4XLIPB7.js} +1 -1
  211. package/dist/{chunk-GPUOUUHA.js → chunk-PCV52RYM.js} +1 -1
  212. package/dist/{chunk-XR3773KZ.js → chunk-PL4CFSQ7.js} +1 -1
  213. package/dist/{chunk-LLZNPOGB.js → chunk-PLII76NJ.js} +58 -0
  214. package/dist/{chunk-FT5PPV2C.js → chunk-PRDDPQLC.js} +5 -5
  215. package/dist/{chunk-BZ546I4Q.js → chunk-PUBA5B4M.js} +24 -0
  216. package/dist/{chunk-2TGJ5XCV.js → chunk-PWC3C5ME.js} +4 -4
  217. package/dist/{chunk-A4YCLD3L.js → chunk-QFAFKEB5.js} +40 -4
  218. package/dist/{chunk-CL4J4757.js → chunk-QH5ZQ5SJ.js} +26 -0
  219. package/dist/{chunk-UJWZYK46.js → chunk-QNZ4562V.js} +1 -1
  220. package/dist/{chunk-IPHLUZ37.js → chunk-QPTSA4PP.js} +2 -2
  221. package/dist/{chunk-O3YJTHWI.js → chunk-R5E7WNAC.js} +3 -3
  222. package/dist/{chunk-V3M4LJRA.js → chunk-RB3J2WYQ.js} +1 -1
  223. package/dist/{chunk-IUCWOI4Y.js → chunk-RDWIKDMY.js} +237 -11
  224. package/dist/{chunk-ENN6DY4T.js → chunk-RVO5O5SR.js} +46 -21
  225. package/dist/{chunk-LY4AXCYJ.js → chunk-RZN2LEAK.js} +6 -6
  226. package/dist/{chunk-2YIB75UQ.js → chunk-S26CV7BE.js} +57 -13
  227. package/dist/{chunk-XC36HYP6.js → chunk-SDYWZRPN.js} +1 -1
  228. package/dist/{chunk-PHBU4LGO.js → chunk-SNHYZYGZ.js} +1 -1
  229. package/dist/{chunk-4KTTBKWQ.js → chunk-T5FEAQES.js} +1 -1
  230. package/dist/{chunk-XU57KFD6.js → chunk-T5SM4RXY.js} +5 -1
  231. package/dist/{chunk-KUV5VBAO.js → chunk-TKAU7IJ2.js} +1 -1
  232. package/dist/{chunk-KBR5LIWD.js → chunk-TKS5GMYA.js} +1 -1
  233. package/dist/{chunk-5DFE2NAF.js → chunk-TNS63ATU.js} +96 -22
  234. package/dist/{chunk-RFPMXR6B.js → chunk-U4GMOT4M.js} +1 -1
  235. package/dist/{chunk-CO5ZVE3D.js → chunk-UOPCVFVR.js} +17 -17
  236. package/dist/{chunk-22LNFCDF.js → chunk-UX2EO653.js} +1 -1
  237. package/dist/{chunk-LGC6TBA3.js → chunk-UXN4BICC.js} +2 -2
  238. package/dist/{chunk-7J5X4AK7.js → chunk-VF2KRROX.js} +1 -1
  239. package/dist/{chunk-7THUQU44.js → chunk-VF3BZOZK.js} +5 -2
  240. package/dist/{chunk-M2B35MUK.js → chunk-VHHX4UCP.js} +1 -1
  241. package/dist/{chunk-AZBJXATK.js → chunk-VJEJ7JNB.js} +1 -1
  242. package/dist/{chunk-4TRVALTR.js → chunk-VLBHZ6TF.js} +2 -2
  243. package/dist/{chunk-7BMSBACY.js → chunk-VOVFUKEB.js} +5 -5
  244. package/dist/{chunk-MDPGZS6C.js → chunk-VROK4X2L.js} +1 -1
  245. package/dist/{chunk-J6ABJDZ4.js → chunk-W3KPQE7H.js} +4 -4
  246. package/dist/{chunk-3Q7NEDHB.js → chunk-W6BZ4UGA.js} +48 -9
  247. package/dist/{chunk-IZ3IFLL2.js → chunk-XEBKIWI7.js} +14 -14
  248. package/dist/{chunk-UZDF6FLJ.js → chunk-XHU3KOKJ.js} +1 -1
  249. package/dist/{chunk-PA37MXV5.js → chunk-XSUALA32.js} +2 -2
  250. package/dist/{chunk-GR5WJPKF.js → chunk-XUZK23V7.js} +11 -6
  251. package/dist/{chunk-IDB3EZLW.js → chunk-YLB365YX.js} +148 -5
  252. package/dist/{chunk-JDQ7JU3A.js → chunk-YLFCH3VA.js} +24 -16
  253. package/dist/{chunk-ZJJL2Z23.js → chunk-YRQ26MNP.js} +4 -4
  254. package/dist/chunk-YRUZK2QA.js +35 -0
  255. package/dist/{chunk-7HLJ4BSF.js → chunk-ZAEUEDTN.js} +2 -2
  256. package/dist/{chunk-NY74W3S4.js → chunk-ZBPZDADW.js} +313 -43
  257. package/dist/{chunk-ZLPS3GR7.js → chunk-ZJQ56DZZ.js} +42 -1
  258. package/dist/{chunk-VMZZTFXT.js → chunk-ZOTTYCP5.js} +4 -4
  259. package/dist/{chunk-MP4ST7RO.js → chunk-ZPP63JSQ.js} +51 -11
  260. package/dist/{chunk-N4J5WHO2.js → chunk-ZT4LFTUJ.js} +1 -1
  261. package/dist/{cleanup-graph-garbage-GE2DYOTB.js → cleanup-graph-garbage-VQAJ2RBT.js} +11 -11
  262. package/dist/{cloud-sync-command-T6KF3ARK.js → cloud-sync-command-J7NEFUY7.js} +2 -2
  263. package/dist/{cloud-sync-db-init-RSHCCY74.js → cloud-sync-db-init-KWEMNMGA.js} +1 -1
  264. package/dist/{cloud-sync-shutdown-6IVCSLM5.js → cloud-sync-shutdown-P63AUTUI.js} +5 -5
  265. package/dist/{co-activation-AF7RCJPX.js → co-activation-7IHRPBZN.js} +5 -5
  266. package/dist/{co-occurrence-DMOOGBVV.js → co-occurrence-R5AG4OAU.js} +9 -9
  267. package/dist/{code-context-index-LIDOFKOR.js → code-context-index-WFLLZBVB.js} +10 -9
  268. package/dist/{code-context-watcher-4F7K2N3U.js → code-context-watcher-3QAPHO7N.js} +10 -9
  269. package/dist/{codex-consolidation-SH4UKFBQ.js → codex-consolidation-ONZ2AQFX.js} +2 -2
  270. package/dist/{consent-passphrase-WV7MZPMO.js → consent-passphrase-5ZBDJ5G7.js} +2 -2
  271. package/dist/{content-extractor-DJM5EUDA.js → content-extractor-ZLXC6GNR.js} +2 -2
  272. package/dist/{conversation-entity-extractor-4UG7BKWL.js → conversation-entity-extractor-7FRKLLBD.js} +4 -4
  273. package/dist/{conversation-wiki-populator-OS4C6W54.js → conversation-wiki-populator-YAOVCUGO.js} +1 -1
  274. package/dist/{crdt-sync-VL4KXZB7.js → crdt-sync-IFRZOEIS.js} +4 -4
  275. package/dist/{crm-webhook-IDBJ7X5Y.js → crm-webhook-L2S63ASV.js} +2 -2
  276. package/dist/{cto-delegation-gate-4FLSHSLO.js → cto-delegation-gate-3WU7OHX7.js} +29 -28
  277. package/dist/{daemon-auth-PNKHERLV.js → daemon-auth-OWLFYEFR.js} +3 -3
  278. package/dist/{daemon-orchestration-HFCB6OK4.js → daemon-orchestration-3VQYKLOR.js} +33 -32
  279. package/dist/{daemon-ready-BN6EZLTQ.js → daemon-ready-VZ6ZHA2C.js} +1 -1
  280. package/dist/{db-integrity-events-GYGANKZV.js → db-integrity-events-7NKWS5MT.js} +3 -3
  281. package/dist/{db-restore-events-G6NOQOVE.js → db-restore-events-XYL6CGPC.js} +2 -2
  282. package/dist/{destructive-data-guard-HHWUBIGS.js → destructive-data-guard-JDUJ2ULM.js} +58 -2
  283. package/dist/{dispatch-ack-X4DXUSKP.js → dispatch-ack-UYEAKON5.js} +2 -1
  284. package/dist/{doc-graph-extractor-E36PQUCS.js → doc-graph-extractor-YIR5E7OF.js} +9 -9
  285. package/dist/{documents-SCKKHDR7.js → documents-QEHPTYIY.js} +19 -18
  286. package/dist/{dreaming-Q26JBH56.js → dreaming-LNFE7DTN.js} +34 -33
  287. package/dist/{employee-boot-brief-XU6EI2EO.js → employee-boot-brief-ZTXDYNWM.js} +39 -38
  288. package/dist/{entity-boost-VNQLLR3Q.js → entity-boost-R5N6JWXD.js} +1 -1
  289. package/dist/{exe-drift-YZ6OIUAY.js → exe-drift-WYSJVZFO.js} +6 -6
  290. package/dist/{exe-export-HHRQMLSS.js → exe-export-GOLNAEAV.js} +20 -19
  291. package/dist/{exe-import-5XR4NQAB.js → exe-import-U4BSI6OH.js} +20 -19
  292. package/dist/{exe-key-5XOFVP3I.js → exe-key-V42G3NGO.js} +152 -130
  293. package/dist/{exe-org-TPAX4AAK.js → exe-org-U4GLQ6OP.js} +27 -27
  294. package/dist/{exe-snapshot-GIRP3XCJ.js → exe-snapshot-U7ONBYNY.js} +38 -37
  295. package/dist/{fast-db-init-MGY6VCLG.js → fast-db-init-W3NGKAEU.js} +1 -1
  296. package/dist/{founder-context-WD72OL2P.js → founder-context-ZSIBRVDM.js} +4 -4
  297. package/dist/{founder-monitor-envelope-XGYMHT4W.js → founder-monitor-envelope-L3IWZLFY.js} +7 -7
  298. package/dist/{fts-integrity-PLAL6NMG.js → fts-integrity-PHCKKOBC.js} +3 -3
  299. package/dist/gateway/index.js +23 -22
  300. package/dist/{gateway-client-VO3BRLV5.js → gateway-client-DJFCVIPT.js} +1 -1
  301. package/dist/{git-staleness-KGZABPP3.js → git-staleness-OF24QXFZ.js} +5 -5
  302. package/dist/{global-procedures-KOU6A5E5.js → global-procedures-WSIOWO43.js} +6 -6
  303. package/dist/{graph-auto-extract-OZNRDAHE.js → graph-auto-extract-IEVVN3L3.js} +9 -9
  304. package/dist/{graph-query-36K6VXFF.js → graph-query-JDZWAVCU.js} +1 -1
  305. package/dist/{graph-rag-TZLH3CTQ.js → graph-rag-BKAD2XQA.js} +4 -4
  306. package/dist/{hook-integrity-BWFFISJV.js → hook-integrity-TPWDGX2M.js} +3 -1
  307. package/dist/{hook-prefetch-MFUJRAIM.js → hook-prefetch-FD6VGJJA.js} +29 -28
  308. package/dist/hooks/bug-report-worker.js +34 -33
  309. package/dist/hooks/codex-stop-task-finalizer.js +36 -35
  310. package/dist/hooks/commit-complete.js +40 -36
  311. package/dist/hooks/error-recall.js +15 -15
  312. package/dist/hooks/exe-heartbeat-hook.js +8 -8
  313. package/dist/hooks/ingest-worker.js +21 -20
  314. package/dist/hooks/ingest.js +23 -23
  315. package/dist/hooks/instructions-loaded.js +10 -10
  316. package/dist/hooks/manifest.json +20 -20
  317. package/dist/hooks/notification.js +9 -9
  318. package/dist/hooks/post-compact.js +8 -8
  319. package/dist/hooks/post-tool-combined.js +15 -15
  320. package/dist/hooks/pre-compact.js +33 -32
  321. package/dist/hooks/pre-tool-use.js +2 -2
  322. package/dist/hooks/prompt-submit.js +52 -51
  323. package/dist/hooks/session-end.js +38 -37
  324. package/dist/hooks/session-start.js +25 -22
  325. package/dist/hooks/stop.js +40 -39
  326. package/dist/hooks/subagent-stop.js +36 -35
  327. package/dist/hooks/summary-worker.js +41 -40
  328. package/dist/index.js +43 -42
  329. package/dist/{inrun-inbox-DRKVDPLY.js → inrun-inbox-RGNFFGMU.js} +5 -0
  330. package/dist/{installer-RM4ASY7U.js → installer-NMOBSEZ2.js} +11 -11
  331. package/dist/{installer-IESPHXVH.js → installer-OTI5SA43.js} +11 -11
  332. package/dist/{installer-SQZRVD36.js → installer-SRJGE4GU.js} +11 -11
  333. package/dist/{intercom-queue-DGLAC224.js → intercom-queue-4FFXCBHO.js} +28 -27
  334. package/dist/{key-backup-status-LQPINQ3W.js → key-backup-status-6U7D5GOD.js} +2 -2
  335. package/dist/lib/agent-config.js +3 -3
  336. package/dist/lib/cloud-sync.js +28 -27
  337. package/dist/lib/config.js +4 -2
  338. package/dist/lib/consolidation.js +14 -12
  339. package/dist/lib/crypto.js +5 -3
  340. package/dist/lib/database.js +5 -5
  341. package/dist/lib/db-backup.js +11 -3
  342. package/dist/lib/db-daemon-client.js +11 -10
  343. package/dist/lib/db-write-worker.js +4 -4
  344. package/dist/lib/db.js +5 -5
  345. package/dist/lib/delivery-catalog.js +431 -0
  346. package/dist/lib/delivery-schemas.js +62 -0
  347. package/dist/lib/delivery-truth.js +1 -1
  348. package/dist/lib/device-registry.js +3 -3
  349. package/dist/lib/embed-worker.js +2 -2
  350. package/dist/lib/embedder.js +10 -9
  351. package/dist/lib/employee-templates.js +7 -7
  352. package/dist/lib/employees.js +5 -5
  353. package/dist/lib/exe-daemon-client.js +9 -8
  354. package/dist/lib/exe-daemon.js +186 -117
  355. package/dist/lib/hybrid-search.js +12 -12
  356. package/dist/lib/identity.js +5 -5
  357. package/dist/lib/keychain.js +13 -1
  358. package/dist/lib/license.js +8 -4
  359. package/dist/lib/messaging.js +39 -30
  360. package/dist/lib/post-tool-memory.js +9 -9
  361. package/dist/lib/registry-proxy.js +9 -1
  362. package/dist/lib/reminders.js +6 -6
  363. package/dist/lib/schedules.js +11 -11
  364. package/dist/lib/session-registry.js +7 -7
  365. package/dist/lib/skill-learning.js +20 -19
  366. package/dist/lib/status-brief.js +5 -4
  367. package/dist/lib/store.js +10 -10
  368. package/dist/lib/task-router.js +6 -6
  369. package/dist/lib/tasks.js +30 -29
  370. package/dist/lib/tmux-routing.js +28 -27
  371. package/dist/lib/tmux-status.js +3 -1
  372. package/dist/lib/token-spend.js +6 -6
  373. package/dist/lib/ws-client.js +1 -1
  374. package/dist/{license-gate-E6GTRYBA.js → license-gate-R4JWTWM4.js} +5 -5
  375. package/dist/{license-recheck-RBAO6Z2H.js → license-recheck-3MBJ4IJX.js} +1 -1
  376. package/dist/{license-sync-ZCZ2LIHK.js → license-sync-BVSG3WMW.js} +4 -4
  377. package/dist/local-secret-inventory-JWNBHZZ4.js +20 -0
  378. package/dist/mailbox-inbox-MTAT4MXX.js +13 -0
  379. package/dist/{mailbox-outbox-DNDDP2HW.js → mailbox-outbox-OY4IU6S4.js} +2 -1
  380. package/dist/mcp/register-tools.js +121 -120
  381. package/dist/mcp/server.js +123 -122
  382. package/dist/mcp/tools/complete-reminder.js +7 -7
  383. package/dist/mcp/tools/create-reminder.js +7 -7
  384. package/dist/mcp/tools/create-task.js +35 -32
  385. package/dist/mcp/tools/deactivate-behavior.js +22 -21
  386. package/dist/mcp/tools/list-reminders.js +7 -7
  387. package/dist/mcp/tools/list-tasks.js +33 -32
  388. package/dist/mcp/tools/send-message.js +32 -31
  389. package/dist/mcp/tools/update-task.js +31 -30
  390. package/dist/{mcp-child-registry-DVHYAHPW.js → mcp-child-registry-TIZERM7O.js} +5 -5
  391. package/dist/{mcp-health-B5EKRCZG.js → mcp-health-4ZHU67LM.js} +9 -3
  392. package/dist/{mcp-http-config-ME67QDOF.js → mcp-http-config-VUMSFWFH.js} +12 -12
  393. package/dist/{mcp-session-identity-DNG4ULAE.js → mcp-session-identity-DZHWEJRV.js} +28 -27
  394. package/dist/{memory-cards-WCISXY62.js → memory-cards-JVXTMSAT.js} +10 -10
  395. package/dist/{memory-graph-extractor-GXIK4QUF.js → memory-graph-extractor-PPBJMYFJ.js} +10 -10
  396. package/dist/{memory-poisoning-defense-25LZ5FJI.js → memory-poisoning-defense-K5Q74XQ4.js} +5 -5
  397. package/dist/{memory-pressure-watchdog-XGXI7WGE.js → memory-pressure-watchdog-YMJH5CSA.js} +29 -28
  398. package/dist/{memory-queue-YF7IDSFY.js → memory-queue-2MA67TAA.js} +3 -3
  399. package/dist/{memory-queue-client-QC2OTMJB.js → memory-queue-client-4G7HVRSX.js} +11 -10
  400. package/dist/{memory-reflection-GFGT44NT.js → memory-reflection-7BZWIHRE.js} +10 -10
  401. package/dist/{monitor-grants-Z2SEFE6E.js → monitor-grants-Q7X3MYQP.js} +6 -6
  402. package/dist/{monitor-identity-AEMHCVHV.js → monitor-identity-ZQB4IXEE.js} +2 -2
  403. package/dist/{notification-ledger-ETQBGRP7.js → notification-ledger-XRAXL5OI.js} +32 -29
  404. package/dist/{notifications-LPRCFJYY.js → notifications-JE3PX55X.js} +28 -27
  405. package/dist/{orchestration-events-T2GXV2NG.js → orchestration-events-JCQ5F5IJ.js} +6 -6
  406. package/dist/{orchestration-phase-T2WD45UA.js → orchestration-phase-QKTGQ2YT.js} +3 -3
  407. package/dist/{orchestrator-HY2IB3NA.js → orchestrator-X65INDTR.js} +30 -29
  408. package/dist/{org-brief-session-UWFCFEEB.js → org-brief-session-3PQ22UIX.js} +19 -18
  409. package/dist/{org-consent-policy-XXMST37J.js → org-consent-policy-VGELJ7K7.js} +7 -6
  410. package/dist/{org-join-72QKM7JR.js → org-join-6TO5ZYUZ.js} +12 -12
  411. package/dist/{org-key-admin-YCIAYP7V.js → org-key-admin-XHYVRRAZ.js} +12 -12
  412. package/dist/{org-key-pin-F7BQPI5P.js → org-key-pin-TTTYGTQL.js} +6 -6
  413. package/dist/{org-membership-JQSU4Z5P.js → org-membership-Y7T2BS57.js} +7 -7
  414. package/dist/{org-partner-config-PVJ45SLC.js → org-partner-config-OP4NEUNF.js} +10 -10
  415. package/dist/{org-partner-runtime-U4CTLWLC.js → org-partner-runtime-YNVUNT2R.js} +20 -19
  416. package/dist/{org-row-visibility-WUX4N3FX.js → org-row-visibility-JBBXNYXD.js} +1 -1
  417. package/dist/{pipeline-router-2RMBCBRM.js → pipeline-router-EIBB7QNG.js} +6 -6
  418. package/dist/{plan-limits-Z47XYEJR.js → plan-limits-MEWXYLEN.js} +8 -8
  419. package/dist/{postinstall-failure-O6TSSNJB.js → postinstall-failure-VETYYWEZ.js} +3 -3
  420. package/dist/{pre-tool-use-impl-JPE6XMRJ.js → pre-tool-use-impl-C6KJY22W.js} +60 -49
  421. package/dist/{project-boot-UFQDAFU5.js → project-boot-VEYFCCSL.js} +2 -2
  422. package/dist/{project-name-V4IREGHO.js → project-name-UYORSNGE.js} +6 -6
  423. package/dist/{projection-worker-HAD6H3VJ.js → projection-worker-WYFDWS57.js} +5 -5
  424. package/dist/{prospective-memory-KIF4JLFF.js → prospective-memory-E6XBQFJA.js} +5 -5
  425. package/dist/{push-notifications-GDKRTYXH.js → push-notifications-M7YU63FY.js} +29 -28
  426. package/dist/{reproject-worktree-memories-SG4BZJ3Z.js → reproject-worktree-memories-B5XMGJSD.js} +28 -27
  427. package/dist/{reranker-G2AZ67JP.js → reranker-SRA4BR7N.js} +3 -3
  428. package/dist/{retrieval-health-GBJRXTBZ.js → retrieval-health-P2JPZUPV.js} +4 -4
  429. package/dist/{review-polling-VUZPAAGT.js → review-polling-KQPN7IQE.js} +29 -28
  430. package/dist/runtime/index.js +37 -36
  431. package/dist/{session-events-BI6NIFIR.js → session-events-6LDDKKY3.js} +29 -28
  432. package/dist/{session-kill-telemetry-HPBDOPHT.js → session-kill-telemetry-5DSRGWCL.js} +29 -28
  433. package/dist/{session-mcp-config-WFZAH6R5.js → session-mcp-config-F7RCERUG.js} +3 -3
  434. package/dist/{session-scope-UB3HA5E7.js → session-scope-XG5R3P3D.js} +28 -27
  435. package/dist/{setup-wizard-6XULOT3L.js → setup-wizard-7QFLZIKT.js} +5 -5
  436. package/dist/{shard-manager-DYEJ6ETD.js → shard-manager-HHHHV2KZ.js} +3 -3
  437. package/dist/{skill-refinement-MKBQIWZ6.js → skill-refinement-I5RMAHSC.js} +6 -6
  438. package/dist/{stack-generate-manifest-7ODQ6W2O.js → stack-generate-manifest-AKMZ3AUX.js} +246 -13
  439. package/dist/stack-init-5VKL5PL5.js +136 -0
  440. package/dist/{stack-promote-3UKJBJSP.js → stack-promote-34CE2HHF.js} +7 -6
  441. package/dist/{stack-release-5CVXMJM5.js → stack-release-5PGWV5D4.js} +123 -12
  442. package/dist/{stack-update-Z53KG2P5.js → stack-update-ZQQ5YYPJ.js} +20 -5
  443. package/dist/{steward-gate-OKUYYIX6.js → steward-gate-AQJ6KT2C.js} +6 -6
  444. package/dist/{subagent-brief-injection-T2CVQLAS.js → subagent-brief-injection-3GU7YAWY.js} +50 -42
  445. package/dist/{subagent-spawn-ledger-E6U3OY6Z.js → subagent-spawn-ledger-52I66CLW.js} +3 -3
  446. package/dist/{supervisor-handoff-SGLEPOCY.js → supervisor-handoff-BWJW6CKZ.js} +4 -4
  447. package/dist/{support-inbox-WJIDCKJC.js → support-inbox-NY5TB3FN.js} +12 -12
  448. package/dist/{support-outbox-G2NG2U5K.js → support-outbox-KNI3FR3G.js} +3 -2
  449. package/dist/{task-enforcement-JL5ADPS6.js → task-enforcement-CAA6D2MH.js} +29 -28
  450. package/dist/{task-request-inbox-54BRRFHZ.js → task-request-inbox-QBZVU66E.js} +9 -6
  451. package/dist/{task-scope-OBPZBID5.js → task-scope-NHXB4ZRN.js} +32 -27
  452. package/dist/{tasks-crud-YBCPT7TY.js → tasks-crud-JHSWL5NM.js} +28 -27
  453. package/dist/{tasks-notify-CEEQSDJF.js → tasks-notify-7PBE4U7T.js} +29 -28
  454. package/dist/{tasks-review-JIEI656P.js → tasks-review-PPPVEE62.js} +28 -27
  455. package/dist/{telemetry-upload-ZZSEZR2U.js → telemetry-upload-YU2VRNHX.js} +10 -10
  456. package/dist/{token-budget-AUFMEMQ2.js → token-budget-QCMWKG3K.js} +6 -6
  457. package/dist/{tool-capability-index-6HLZU437.js → tool-capability-index-7AWQAJRP.js} +1 -1
  458. package/dist/{tool-gates-VXITVRFQ.js → tool-gates-5Q3RSQEG.js} +1 -1
  459. package/dist/{tool-gates-JWVSAYTW.js → tool-gates-QD26D2NE.js} +1 -1
  460. package/dist/{tool-telemetry-RHSEK2TO.js → tool-telemetry-LTOIC64I.js} +1 -1
  461. package/dist/tui/App.js +43 -42
  462. package/dist/{tui-data-PBZNN5YB.js → tui-data-NDBXD6U7.js} +32 -31
  463. package/dist/{update-support-V3ZCJR6L.js → update-support-BMJM4NG7.js} +27 -26
  464. package/dist/{whatsapp-NAM2CRVQ.js → whatsapp-QQLDAHUX.js} +2 -2
  465. package/dist/{wiki-acl-NUBAPLCD.js → wiki-acl-W6WDCVCP.js} +1 -1
  466. package/dist/{work-claims-Q2NU6JON.js → work-claims-6DM32MGO.js} +6 -6
  467. package/dist/{work-state-heartbeat-HAQRV3RK.js → work-state-heartbeat-HG7D4AWJ.js} +1 -1
  468. package/dist/{worker-gate-NUUSQMBT.js → worker-gate-FTMW7GBB.js} +3 -3
  469. package/dist/{workflow-engine-GEWPU5YR.js → workflow-engine-ZWC6CCXE.js} +2 -2
  470. package/dist/{worktree-C7LFMRKW.js → worktree-EMQCPGFE.js} +7 -7
  471. package/dist/{worktree-ownership-guard-4LKMW6PW.js → worktree-ownership-guard-O6JQF2CL.js} +2 -2
  472. package/dist/{worktree-sweep-SYF62ANH.js → worktree-sweep-XVUJZBXV.js} +8 -8
  473. package/package.json +23 -7
  474. package/release-notes.json +39 -12
  475. package/stack.release.json +4 -4
  476. package/dist/mailbox-inbox-XE72D3AX.js +0 -10
  477. /package/dist/{chunk-QIEYJ4KZ.js → chunk-2KY7WZZF.js} +0 -0
  478. /package/dist/{chunk-T3667X2B.js → chunk-2Q2CD6CD.js} +0 -0
  479. /package/dist/{chunk-JZJZYKMW.js → chunk-AJK2PVQW.js} +0 -0
  480. /package/dist/{chunk-ZEGEFBZV.js → chunk-AWWDKF22.js} +0 -0
  481. /package/dist/{chunk-QNTKRGJ6.js → chunk-GIRD7O5X.js} +0 -0
  482. /package/dist/{chunk-FWA4MYTA.js → chunk-JRIH6I7D.js} +0 -0
  483. /package/dist/{chunk-C7H2D7LX.js → chunk-M4XY4JRK.js} +0 -0
  484. /package/dist/{chunk-Q3DN5J6F.js → chunk-P2VVMGMI.js} +0 -0
  485. /package/dist/{chunk-BRAIWGMF.js → chunk-Q46NYJ77.js} +0 -0
  486. /package/dist/{chunk-3LQ2N4H7.js → chunk-U2D6PJ5T.js} +0 -0
  487. /package/dist/{chunk-3O6OGZL3.js → chunk-XDVOGDBC.js} +0 -0
  488. /package/dist/{core-memory-UNCAPGD4.js → core-memory-O6D5UC3T.js} +0 -0
  489. /package/dist/{hook-tamper-log-Z4PWC7N4.js → hook-tamper-log-ARGWCXKJ.js} +0 -0
  490. /package/dist/{memory-isolation-ALPJWLR5.js → memory-isolation-EBFFC6HF.js} +0 -0
  491. /package/dist/{oauth-server-AC2KB7NB.js → oauth-server-ZKBUHDFI.js} +0 -0
  492. /package/dist/{webhook-pipe-W2FVXY7M.js → webhook-pipe-PXH5MBRM.js} +0 -0
  493. /package/dist/{wiki-client-W65IOSWF.js → wiki-client-DD2NVWK2.js} +0 -0
@@ -0,0 +1,136 @@
1
+ #!/usr/bin/env node
2
+ import "./chunk-MLKGABMK.js";
3
+
4
+ // src/bin/stack-init.ts
5
+ import {
6
+ chmodSync,
7
+ copyFileSync,
8
+ existsSync,
9
+ mkdirSync,
10
+ readdirSync,
11
+ statSync
12
+ } from "fs";
13
+ import path from "path";
14
+ import { fileURLToPath } from "url";
15
+ var DEFAULT_STACK_DIR = "/opt/exe-stack";
16
+ var NEVER_OVERWRITE = /* @__PURE__ */ new Set([
17
+ ".env",
18
+ "gateway.json",
19
+ "branding.json",
20
+ "clickhouse-config.xml",
21
+ "cloudflared/config.yml"
22
+ ]);
23
+ var CUSTOMER_OWNED_PATTERNS = [/^cloudflared\/.+\.json$/];
24
+ function isCustomerOwned(rel) {
25
+ return NEVER_OVERWRITE.has(rel) || CUSTOMER_OWNED_PATTERNS.some((re) => re.test(rel));
26
+ }
27
+ function resolvePackageRoot(moduleUrl = import.meta.url) {
28
+ const here = path.dirname(fileURLToPath(moduleUrl));
29
+ const candidates = [path.resolve(here, "..", ".."), path.resolve(here, ".."), process.cwd()];
30
+ for (const c of candidates) {
31
+ if (existsSync(path.join(c, "package.json")) && existsSync(path.join(c, "deploy", "compose", "docker-compose.yml"))) {
32
+ return c;
33
+ }
34
+ }
35
+ throw new Error(
36
+ "stack-init: could not locate the packaged deploy/ assets. Reinstall the CLI (`npm install -g @askexenow/exe-os`) and retry."
37
+ );
38
+ }
39
+ function copyTree(srcDir, destDir, relPrefix, force, created, skipped) {
40
+ mkdirSync(destDir, { recursive: true });
41
+ for (const entry of readdirSync(srcDir)) {
42
+ const src = path.join(srcDir, entry);
43
+ const dest = path.join(destDir, entry);
44
+ const rel = relPrefix ? `${relPrefix}/${entry}` : entry;
45
+ if (statSync(src).isDirectory()) {
46
+ copyTree(src, dest, rel, force, created, skipped);
47
+ continue;
48
+ }
49
+ if (existsSync(dest) && (!force || isCustomerOwned(rel))) {
50
+ skipped.push(rel);
51
+ continue;
52
+ }
53
+ copyFileSync(src, dest);
54
+ if (entry.startsWith(".env")) {
55
+ try {
56
+ chmodSync(dest, 384);
57
+ } catch {
58
+ }
59
+ }
60
+ created.push(rel);
61
+ }
62
+ }
63
+ function runStackInit(options = {}) {
64
+ const packageRoot = options.packageRoot ?? resolvePackageRoot();
65
+ const composeSrc = path.join(packageRoot, "deploy", "compose");
66
+ const manifestSrc = path.join(packageRoot, "deploy", "stack-manifests");
67
+ if (!existsSync(composeSrc)) {
68
+ throw new Error(`stack-init: packaged compose files missing at ${composeSrc}. Reinstall the CLI and retry.`);
69
+ }
70
+ if (!existsSync(manifestSrc)) {
71
+ throw new Error(
72
+ `stack-init: packaged stack manifests missing at ${manifestSrc}. The manifest is the single source of truth for every image pin \u2014 refusing to lay down a stack directory that cannot generate a .env. Reinstall the CLI and retry.`
73
+ );
74
+ }
75
+ const dir = path.resolve(options.dir ?? process.cwd());
76
+ const created = [];
77
+ const skipped = [];
78
+ copyTree(composeSrc, dir, "", options.force === true, created, skipped);
79
+ const manifestDir = path.join(dir, "stack-manifests");
80
+ copyTree(manifestSrc, manifestDir, "stack-manifests", options.force === true, created, skipped);
81
+ return { dir, created, skipped, manifestDir };
82
+ }
83
+ async function runStackInitCli(argv) {
84
+ if (argv.includes("--help") || argv.includes("-h")) {
85
+ console.log(
86
+ `
87
+ Usage: exe-os stack-init [--dir <path>] [--force]
88
+
89
+ Lay down a fresh exe-os stack directory: docker-compose.yml, setup.sh,
90
+ the .env template, the service configs, and the signed stack manifest.
91
+
92
+ --dir <path> Target directory (default: current directory)
93
+ --force Refresh packaged assets that already exist
94
+ (customer-owned files \u2014 .env, gateway.json, branding.json,
95
+ clickhouse-config.xml, cloudflared/* \u2014 are never touched)
96
+
97
+ Next: cd <dir> && ./setup.sh --client <name> --domain <domain> \\
98
+ --admin-email <you@your-domain> --license <key>
99
+ `
100
+ );
101
+ return;
102
+ }
103
+ let dir;
104
+ let force = false;
105
+ for (let i = 0; i < argv.length; i++) {
106
+ const arg = argv[i];
107
+ if (arg === "--dir") dir = argv[++i];
108
+ else if (arg.startsWith("--dir=")) dir = arg.slice("--dir=".length);
109
+ else if (arg === "--force") force = true;
110
+ else {
111
+ console.error(`exe-os stack-init: unknown option: ${arg}`);
112
+ process.exit(1);
113
+ }
114
+ }
115
+ const result = runStackInit({ dir, force });
116
+ console.log(`
117
+ Stack directory ready: ${result.dir}`);
118
+ console.log(` Files written: ${result.created.length}`);
119
+ if (result.skipped.length > 0) {
120
+ console.log(` Left untouched: ${result.skipped.length} (already present \u2014 re-run with --force to refresh)`);
121
+ }
122
+ console.log(` Stack manifest: ${path.join(result.manifestDir, "v0.9.json")}`);
123
+ console.log(`
124
+ Next:`);
125
+ console.log(` cd ${result.dir}`);
126
+ console.log(
127
+ ` ./setup.sh --client <name> --domain <domain> --admin-email <you@your-domain> --license <key>
128
+ `
129
+ );
130
+ }
131
+ export {
132
+ DEFAULT_STACK_DIR,
133
+ resolvePackageRoot,
134
+ runStackInit,
135
+ runStackInitCli
136
+ };
@@ -1,20 +1,21 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  writeSignedStackManifest
4
- } from "./chunk-FHSV4BSW.js";
5
- import "./chunk-NY74W3S4.js";
4
+ } from "./chunk-MOANZQXF.js";
5
+ import "./chunk-ZBPZDADW.js";
6
6
  import "./chunk-EC5H53YD.js";
7
7
  import "./chunk-C5HUMAA7.js";
8
8
  import "./chunk-L25OAFOU.js";
9
- import "./chunk-5DFE2NAF.js";
9
+ import "./chunk-LFUBEHFW.js";
10
+ import "./chunk-TNS63ATU.js";
10
11
  import "./chunk-A7XLR3K7.js";
11
- import "./chunk-O34F5EP5.js";
12
- import "./chunk-ZIG7VPJV.js";
13
- import "./chunk-HSGBZSCA.js";
12
+ import "./chunk-DZN7SDY2.js";
13
+ import "./chunk-MMS2HBRT.js";
14
14
  import "./chunk-RH4AH3YB.js";
15
15
  import {
16
16
  isMainModule
17
17
  } from "./chunk-6Y4B3QF6.js";
18
+ import "./chunk-HSGBZSCA.js";
18
19
  import "./chunk-JKKZGDLP.js";
19
20
  import "./chunk-MLKGABMK.js";
20
21
 
@@ -1,21 +1,22 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  writeSignedStackManifest
4
- } from "./chunk-FHSV4BSW.js";
5
- import "./chunk-NY74W3S4.js";
4
+ } from "./chunk-MOANZQXF.js";
5
+ import "./chunk-ZBPZDADW.js";
6
6
  import "./chunk-EC5H53YD.js";
7
7
  import {
8
8
  assertPreflightGate,
9
9
  runPreflightOnManifest
10
- } from "./chunk-LLZNPOGB.js";
10
+ } from "./chunk-PLII76NJ.js";
11
11
  import "./chunk-C5HUMAA7.js";
12
12
  import "./chunk-L25OAFOU.js";
13
- import "./chunk-5DFE2NAF.js";
13
+ import "./chunk-LFUBEHFW.js";
14
+ import "./chunk-TNS63ATU.js";
14
15
  import "./chunk-A7XLR3K7.js";
15
- import "./chunk-O34F5EP5.js";
16
- import "./chunk-ZIG7VPJV.js";
17
- import "./chunk-HSGBZSCA.js";
16
+ import "./chunk-DZN7SDY2.js";
17
+ import "./chunk-MMS2HBRT.js";
18
18
  import "./chunk-RH4AH3YB.js";
19
+ import "./chunk-HSGBZSCA.js";
19
20
  import "./chunk-JKKZGDLP.js";
20
21
  import "./chunk-MLKGABMK.js";
21
22
 
@@ -229,6 +230,38 @@ var STACK_RECONCILE_APP_IMAGE_REPOS = Object.freeze([
229
230
  {
230
231
  imageName: "update.askexe.com/askexe/exe-auth",
231
232
  ghRepo: "AskExe/exe-auth"
233
+ },
234
+ // exe-dashboard: same gap — it was absent from both maps in this file, so
235
+ // G6's reconcile classified an unstamped dashboard image as "no expected
236
+ // source repo mapped here" (third-party, informational), exactly the false
237
+ // pass the "unstamped-third-party" distinction exists to avoid for images
238
+ // this repo family DOES build.
239
+ //
240
+ // 🔴 THE REPO HERE IS THE REPO THE IMAGE IS BUILT IN, NOT THE ONE THAT WILL
241
+ // EVENTUALLY OWN IT. G6 compares this value against the image's org.exe.repo
242
+ // label, which the shared release lane stamps with the repository the build
243
+ // actually ran in. exe-dashboard is still built from `dashboard-page/` INSIDE
244
+ // AskExe/exe-os (.github/workflows/release-dashboard-image.yml passes
245
+ // `context: dashboard-page`); AskExe/exe-dashboard exists but its history
246
+ // extraction is unfinished and nothing is built there yet. The real published
247
+ // ghcr.io/askexe/exe-dashboard:v0.9.382 carries org.exe.repo=AskExe/exe-os
248
+ // (recorded verbatim in release-service.yml's G2 arming note), so naming the
249
+ // destination repo here turns every correctly-stamped dashboard release into
250
+ // a "wrong-repo image (bug 218b10e4 class)" failure — and simultaneously
251
+ // makes that signal useless for the one service it would be reporting on.
252
+ //
253
+ // release-contract-services.mjs's `ghRepo: "AskExe/exe-dashboard"` is a
254
+ // different field with a different meaning: it names the repo that OWNS the
255
+ // service in the migration table. Copying it into this provenance map is how
256
+ // the wrong value got here.
257
+ //
258
+ // When the extraction completes, the lane's `context` flips to `.` and moves
259
+ // to AskExe/exe-dashboard; flip this with it. A test in
260
+ // tests/scripts/image-provenance.test.ts reads that `context` and fails if
261
+ // the two disagree, so this cannot drift silently a second time.
262
+ {
263
+ imageName: "update.askexe.com/askexe/exe-dashboard",
264
+ ghRepo: "AskExe/exe-os"
232
265
  }
233
266
  ]);
234
267
 
@@ -370,6 +403,53 @@ async function ghRun(args) {
370
403
  const { stdout } = await execFile("gh", args);
371
404
  return stdout.trim();
372
405
  }
406
+ function isStrictSemverTag(tag) {
407
+ return /^v\d+\.\d+\.\d+$/.test(tag);
408
+ }
409
+ function compareSemver(a, b) {
410
+ const pa = a.split(".").map(Number);
411
+ const pb = b.split(".").map(Number);
412
+ for (let i = 0; i < 3; i++) {
413
+ const diff = (pa[i] ?? 0) - (pb[i] ?? 0);
414
+ if (diff !== 0) return diff;
415
+ }
416
+ return 0;
417
+ }
418
+ function higherSemver(a, b) {
419
+ return compareSemver(a, b) >= 0 ? a : b;
420
+ }
421
+ function parseRemoteTagNames(lsRemoteOutput) {
422
+ return lsRemoteOutput.split("\n").map((line) => line.trim()).filter(Boolean).map((line) => line.split(" ")[1] ?? "").filter((ref) => ref.startsWith("refs/tags/")).map((ref) => ref.slice("refs/tags/".length).replace(/\^\{\}$/, ""));
423
+ }
424
+ function highestReleasedVersion(tagNames) {
425
+ let best = null;
426
+ for (const tag of tagNames) {
427
+ if (!isStrictSemverTag(tag)) continue;
428
+ const version = tag.slice(1);
429
+ best = best === null ? version : higherSemver(best, version);
430
+ }
431
+ return best;
432
+ }
433
+ async function getRemoteReleaseTags(repoPath, gitRunner = git) {
434
+ try {
435
+ const out = await gitRunner(repoPath, "ls-remote", "--tags", "origin");
436
+ return parseRemoteTagNames(out);
437
+ } catch {
438
+ return [];
439
+ }
440
+ }
441
+ async function resolveVersionBasis(repoPath, packageVersion, gitRunner = git) {
442
+ const highestTag = highestReleasedVersion(await getRemoteReleaseTags(repoPath, gitRunner));
443
+ return highestTag ? higherSemver(packageVersion, highestTag) : packageVersion;
444
+ }
445
+ async function assertVersionNotAlreadyReleased(repoPath, tag, gitRunner = git) {
446
+ const out = await gitRunner(repoPath, "ls-remote", "--tags", "origin", `refs/tags/${tag}`);
447
+ if (out.trim().length > 0) {
448
+ throw new Error(
449
+ `refusing to cut ${tag}: this tag already exists on origin. package.json (and/or the computed bump basis) has drifted behind real release history \u2014 resync before releasing. (bug 343af002)`
450
+ );
451
+ }
452
+ }
373
453
  async function assertReleaseFreshness(opts) {
374
454
  const runGit = opts.gitRunner ?? git;
375
455
  const logFn = opts.log ?? log;
@@ -513,6 +593,14 @@ async function detectChanges(repos) {
513
593
  continue;
514
594
  }
515
595
  }
596
+ const basisVersion = await resolveVersionBasis(repo.localPath, currentVersion);
597
+ if (basisVersion !== currentVersion) {
598
+ log(
599
+ "warn",
600
+ `${repo.serviceKey}: package.json (${currentVersion}) is behind the highest release tag on origin \u2014 using ${basisVersion} as the bump basis`
601
+ );
602
+ currentVersion = basisVersion;
603
+ }
516
604
  const lastTag = await getLastTag(repo.localPath);
517
605
  if (!lastTag) {
518
606
  log("warn", `No tags found in ${repo.serviceKey} \u2014 skipping`);
@@ -560,6 +648,7 @@ async function bumpVersions(changes, mode, dryRun) {
560
648
  const newVersion = bumpVersion(change.currentVersion, mode);
561
649
  change.newVersion = newVersion;
562
650
  change.tag = `v${newVersion}`;
651
+ await assertVersionNotAlreadyReleased(change.repo.localPath, change.tag);
563
652
  if (dryRun) {
564
653
  log("dry", `${change.repo.serviceKey}: ${change.currentVersion} -> ${newVersion}`);
565
654
  continue;
@@ -602,6 +691,7 @@ async function bumpVersions(changes, mode, dryRun) {
602
691
  log("ok", `${change.repo.serviceKey}: bumped ${change.currentVersion} -> ${newVersion} (local commit, push deferred)`);
603
692
  }
604
693
  }
694
+ var RELEASE_PR_POLL_JQ = "[.state, .mergeable, .mergeStateStatus] | @tsv";
605
695
  async function landViaPR(repoPath, ghRepo, defaultBranch, branch, title) {
606
696
  const pushedSha = await git(repoPath, "rev-parse", "HEAD");
607
697
  await git(repoPath, "push", "--force-with-lease", "origin", `HEAD:refs/heads/${branch}`);
@@ -652,22 +742,30 @@ async function landViaPR(repoPath, ghRepo, defaultBranch, branch, title) {
652
742
  if (releasePr.state !== "MERGED") {
653
743
  await ghRun(["pr", "merge", String(releasePr.number), "--repo", ghRepo, "--auto", "--squash"]);
654
744
  }
745
+ let lastMergeable = "";
655
746
  for (; ; ) {
656
- const state = (await ghRun([
747
+ const observed = (await ghRun([
657
748
  "pr",
658
749
  "view",
659
750
  String(releasePr.number),
660
751
  "--repo",
661
752
  ghRepo,
662
753
  "--json",
663
- "state",
754
+ "state,mergeable,mergeStateStatus",
664
755
  "-q",
665
- ".state"
756
+ RELEASE_PR_POLL_JQ
666
757
  ])).trim();
758
+ const [state, mergeable = "", mergeStateStatus = ""] = observed.split(" ");
759
+ if (mergeable) lastMergeable = `mergeable=${mergeable} mergeStateStatus=${mergeStateStatus}`;
667
760
  if (state === "MERGED") break;
761
+ if (mergeable === "CONFLICTING") {
762
+ throw new Error(
763
+ `Release PR ${ghRepo}#${releasePr.number} (${branch} @ ${pushedSha.slice(0, 12)}) CONFLICTS with ${defaultBranch}. GitHub cannot compute a merge commit for it, so NO CI will run and auto-merge can never fire \u2014 waiting would not help. Rebase the release branch and re-run. Aborting release; ${defaultBranch} left untouched.`
764
+ );
765
+ }
668
766
  if (Date.now() > deadline) {
669
767
  throw new Error(
670
- `Release PR ${ghRepo}#${releasePr.number} (${branch} @ ${pushedSha.slice(0, 12)}) did not merge within 30m \u2014 required CI likely red. Aborting release; ${defaultBranch} left untouched.`
768
+ `Release PR ${ghRepo}#${releasePr.number} (${branch} @ ${pushedSha.slice(0, 12)}) did not merge within 30m (${lastMergeable || "mergeability never readable"}). Aborting release; ${defaultBranch} left untouched.`
671
769
  );
672
770
  }
673
771
  await sleep(3e4);
@@ -1236,7 +1334,11 @@ async function commitAndTagExeOs(newStackVersion, _exeOsChange, dryRun) {
1236
1334
  await git(EXE_OS_ROOT, "push", "origin", stackTag);
1237
1335
  log("ok", `Tagged exe-os ${stackTag}`);
1238
1336
  } catch (err) {
1239
- log("warn", `Failed to tag exe-os ${stackTag}: ${err instanceof Error ? err.message : String(err)}`);
1337
+ const message = err instanceof Error ? err.message : String(err);
1338
+ log("fail", `Failed to tag/push exe-os ${stackTag}: ${message}`);
1339
+ throw new Error(
1340
+ `Aborting: failed to tag/push exe-os ${stackTag}: ${message}. The manifest was committed but the stack-v tag that publishes it was not \u2014 customers will keep reading the previous manifest. Fix the cause and re-run; publishing is idempotent.`
1341
+ );
1240
1342
  }
1241
1343
  }
1242
1344
  function printSummary(changes, ciStatuses, newStackVersion, dryRun) {
@@ -1479,18 +1581,27 @@ async function runStackRelease(flags) {
1479
1581
  }
1480
1582
  }
1481
1583
  export {
1584
+ RELEASE_PR_POLL_JQ,
1482
1585
  assertCleanWorkingTree,
1483
1586
  assertReleaseFreshness,
1587
+ assertVersionNotAlreadyReleased,
1588
+ compareSemver,
1484
1589
  deriveCloneUrl,
1485
1590
  ensureRepoCloned,
1486
1591
  findPullRequestForHeadSha,
1487
1592
  findWorkflowRunForHeadSha,
1488
1593
  forceBuildRejection,
1594
+ getRemoteReleaseTags,
1595
+ higherSemver,
1596
+ highestReleasedVersion,
1489
1597
  imageRepoPath,
1490
1598
  isCloneTargetSafe,
1599
+ isStrictSemverTag,
1491
1600
  mayRebaseComponent,
1492
1601
  parseReleaseArgs,
1602
+ parseRemoteTagNames,
1493
1603
  printOpenPrGate,
1494
1604
  rebaseImageTag,
1605
+ resolveVersionBasis,
1495
1606
  runStackRelease
1496
1607
  };
@@ -1,5 +1,6 @@
1
1
  import {
2
2
  BUILTIN_STACK_MANIFEST_KEY_ID,
3
+ LIVE_ARTIFACT_MATCHES_MANIFEST_CHECK,
3
4
  MONITOR_HEALTH_BIN_ENV,
4
5
  MONITOR_IMAGE_TAG_ENV,
5
6
  ProgressReporter,
@@ -31,6 +32,7 @@ import {
31
32
  createStackUpdatePlan,
32
33
  defaultIngressReachabilityProbe,
33
34
  defaultStackPaths,
35
+ deriveDeviceId,
34
36
  detectDanglingVolumes,
35
37
  detectMissingRequiredEnvVars,
36
38
  expandComposeExpression,
@@ -38,14 +40,18 @@ import {
38
40
  expandEnvRefs,
39
41
  filterServicesBySelection,
40
42
  findLatestBackupEnvFile,
43
+ findSsoUngatedIngressHostnames,
44
+ findUnauditableIngressSyntax,
41
45
  findUnreachableIngressTargets,
42
46
  hardenHost,
43
47
  httpStatus,
48
+ hydrateEnv,
44
49
  imagePullRef,
45
50
  isCloudflaredLoopbackHost,
46
51
  isCloudflaredTunnelMisconfigured,
47
52
  isComposeNetworkHost,
48
53
  isExecFormMigration,
54
+ isFatalLiveArtifactFailure,
49
55
  isStrictDigestEnabled,
50
56
  isThirdPartyImage,
51
57
  isUnpinnedImageBreakGlassEnabled,
@@ -102,23 +108,26 @@ import {
102
108
  verifyIngressTargetsReachable,
103
109
  verifyManifestImagesAvailable,
104
110
  verifyReleaseHealth,
111
+ verifySsoGatedIngressRouting,
105
112
  verifyStackManifestSignature,
106
113
  waitForHttpOk,
107
114
  warnUnmanagedManifestServices
108
- } from "./chunk-NY74W3S4.js";
115
+ } from "./chunk-ZBPZDADW.js";
109
116
  import "./chunk-EC5H53YD.js";
110
117
  import "./chunk-C5HUMAA7.js";
111
118
  import "./chunk-L25OAFOU.js";
112
- import "./chunk-5DFE2NAF.js";
119
+ import "./chunk-LFUBEHFW.js";
120
+ import "./chunk-TNS63ATU.js";
113
121
  import "./chunk-A7XLR3K7.js";
114
- import "./chunk-O34F5EP5.js";
115
- import "./chunk-ZIG7VPJV.js";
116
- import "./chunk-HSGBZSCA.js";
122
+ import "./chunk-DZN7SDY2.js";
123
+ import "./chunk-MMS2HBRT.js";
117
124
  import "./chunk-RH4AH3YB.js";
125
+ import "./chunk-HSGBZSCA.js";
118
126
  import "./chunk-JKKZGDLP.js";
119
127
  import "./chunk-MLKGABMK.js";
120
128
  export {
121
129
  BUILTIN_STACK_MANIFEST_KEY_ID,
130
+ LIVE_ARTIFACT_MATCHES_MANIFEST_CHECK,
122
131
  MONITOR_HEALTH_BIN_ENV,
123
132
  MONITOR_IMAGE_TAG_ENV,
124
133
  ProgressReporter,
@@ -150,6 +159,7 @@ export {
150
159
  createStackUpdatePlan,
151
160
  defaultIngressReachabilityProbe,
152
161
  defaultStackPaths,
162
+ deriveDeviceId,
153
163
  detectDanglingVolumes,
154
164
  detectMissingRequiredEnvVars,
155
165
  expandComposeExpression,
@@ -157,14 +167,18 @@ export {
157
167
  expandEnvRefs,
158
168
  filterServicesBySelection,
159
169
  findLatestBackupEnvFile,
170
+ findSsoUngatedIngressHostnames,
171
+ findUnauditableIngressSyntax,
160
172
  findUnreachableIngressTargets,
161
173
  hardenHost,
162
174
  httpStatus,
175
+ hydrateEnv,
163
176
  imagePullRef,
164
177
  isCloudflaredLoopbackHost,
165
178
  isCloudflaredTunnelMisconfigured,
166
179
  isComposeNetworkHost,
167
180
  isExecFormMigration,
181
+ isFatalLiveArtifactFailure,
168
182
  isStrictDigestEnabled,
169
183
  isThirdPartyImage,
170
184
  isUnpinnedImageBreakGlassEnabled,
@@ -221,6 +235,7 @@ export {
221
235
  verifyIngressTargetsReachable,
222
236
  verifyManifestImagesAvailable,
223
237
  verifyReleaseHealth,
238
+ verifySsoGatedIngressRouting,
224
239
  verifyStackManifestSignature,
225
240
  waitForHttpOk,
226
241
  warnUnmanagedManifestServices
@@ -1,19 +1,19 @@
1
1
  import {
2
2
  StewardGate
3
- } from "./chunk-N4J5WHO2.js";
4
- import "./chunk-AY2U4NZ5.js";
3
+ } from "./chunk-ZT4LFTUJ.js";
4
+ import "./chunk-GL47M7NY.js";
5
5
  import "./chunk-BBMTVAE3.js";
6
6
  import "./chunk-TKDITWDN.js";
7
7
  import "./chunk-5YEUPUV4.js";
8
- import "./chunk-FU5O2REK.js";
8
+ import "./chunk-72V3S44T.js";
9
9
  import "./chunk-YYB5PMTK.js";
10
10
  import "./chunk-L5CGXEZC.js";
11
- import "./chunk-CL4J4757.js";
11
+ import "./chunk-QH5ZQ5SJ.js";
12
12
  import "./chunk-ZQEJ4IX2.js";
13
13
  import "./chunk-FXU7JOXK.js";
14
- import "./chunk-ZIG7VPJV.js";
15
- import "./chunk-HSGBZSCA.js";
14
+ import "./chunk-MMS2HBRT.js";
16
15
  import "./chunk-RH4AH3YB.js";
16
+ import "./chunk-HSGBZSCA.js";
17
17
  import "./chunk-JKKZGDLP.js";
18
18
  import "./chunk-MLKGABMK.js";
19
19
  export {
@@ -1,83 +1,84 @@
1
1
  import {
2
2
  buildEmployeeBootBrief
3
- } from "./chunk-ENN6DY4T.js";
3
+ } from "./chunk-RVO5O5SR.js";
4
4
  import "./chunk-HSFBNCNC.js";
5
- import "./chunk-VZT66WWP.js";
6
- import "./chunk-2YIB75UQ.js";
7
- import "./chunk-QV5CQLQH.js";
5
+ import "./chunk-4AAMFWJT.js";
6
+ import "./chunk-S26CV7BE.js";
7
+ import "./chunk-EIOGV75A.js";
8
8
  import "./chunk-QGGH7LOU.js";
9
- import "./chunk-TXTXC3QG.js";
10
- import "./chunk-C7H2D7LX.js";
9
+ import "./chunk-3RGTLZNO.js";
10
+ import "./chunk-M4XY4JRK.js";
11
11
  import "./chunk-VMHZSZQJ.js";
12
- import "./chunk-CO5ZVE3D.js";
13
- import "./chunk-ZEGEFBZV.js";
12
+ import "./chunk-UOPCVFVR.js";
13
+ import "./chunk-AWWDKF22.js";
14
14
  import "./chunk-CHCA3ZM2.js";
15
15
  import "./chunk-OTVEIJUQ.js";
16
- import "./chunk-M2B35MUK.js";
16
+ import "./chunk-VHHX4UCP.js";
17
17
  import {
18
18
  resolveAgentAttribution
19
- } from "./chunk-F6H7GP2O.js";
19
+ } from "./chunk-F4BBMIPG.js";
20
20
  import {
21
21
  tryMarkSubagentBriefInjected
22
- } from "./chunk-K4ESASPL.js";
22
+ } from "./chunk-MUCNYSJP.js";
23
23
  import "./chunk-5MOYSU5A.js";
24
- import "./chunk-5QCIWWFA.js";
24
+ import "./chunk-ELEGH4DX.js";
25
25
  import "./chunk-76CJBM36.js";
26
- import "./chunk-ZVBVPX4W.js";
27
- import "./chunk-JUKDL5MF.js";
28
- import "./chunk-SFFXAPYK.js";
29
- import "./chunk-UJWZYK46.js";
26
+ import "./chunk-7UHZBVP3.js";
27
+ import "./chunk-6BJCDWSM.js";
28
+ import "./chunk-JDDM6C57.js";
30
29
  import "./chunk-ZKGWHT56.js";
30
+ import "./chunk-QNZ4562V.js";
31
31
  import "./chunk-WT4RI36X.js";
32
32
  import "./chunk-E23LNUWJ.js";
33
33
  import "./chunk-TDF2XKLK.js";
34
34
  import "./chunk-EIKATSE4.js";
35
35
  import "./chunk-MJCSEIFI.js";
36
- import "./chunk-NPGV4MZ3.js";
36
+ import "./chunk-ALRHGEAJ.js";
37
+ import "./chunk-PUBA5B4M.js";
37
38
  import "./chunk-VI4ATC6I.js";
38
39
  import "./chunk-A27Q27CT.js";
39
- import "./chunk-BZ546I4Q.js";
40
- import "./chunk-VUOAPKPI.js";
41
- import "./chunk-XU57KFD6.js";
42
- import "./chunk-AZBJXATK.js";
43
- import "./chunk-GZOG2MAX.js";
40
+ import "./chunk-LSNBTGW4.js";
41
+ import "./chunk-T5SM4RXY.js";
42
+ import "./chunk-VJEJ7JNB.js";
43
+ import "./chunk-L5EPGGDP.js";
44
44
  import "./chunk-AM7S2TY6.js";
45
- import "./chunk-4CF5KUWH.js";
45
+ import "./chunk-BPVFZ6Q4.js";
46
46
  import "./chunk-CVYC6DUW.js";
47
- import "./chunk-WJC6AAJN.js";
48
- import "./chunk-4IK2K3B3.js";
49
- import "./chunk-ZKJ5S23O.js";
50
- import "./chunk-GPUOUUHA.js";
47
+ import "./chunk-ANVHWV2X.js";
48
+ import "./chunk-HME6ITKV.js";
49
+ import "./chunk-MFAOAIUE.js";
50
+ import "./chunk-PCV52RYM.js";
51
51
  import "./chunk-BTSWFMEH.js";
52
- import "./chunk-ZG62LIK3.js";
53
- import "./chunk-IMYGYIAI.js";
52
+ import "./chunk-CIPDQRFO.js";
54
53
  import "./chunk-NLEW62VC.js";
55
- import "./chunk-GPJIBLP4.js";
56
- import "./chunk-V3WLC5TJ.js";
57
- import "./chunk-22LNFCDF.js";
54
+ import "./chunk-IMYGYIAI.js";
55
+ import "./chunk-3DAEZILW.js";
56
+ import "./chunk-DRTJCG6B.js";
57
+ import "./chunk-UX2EO653.js";
58
58
  import "./chunk-HYZV25LY.js";
59
59
  import "./chunk-GJV3WDWM.js";
60
60
  import "./chunk-MP2AFCGL.js";
61
- import "./chunk-AY2U4NZ5.js";
61
+ import "./chunk-YRUZK2QA.js";
62
+ import "./chunk-GL47M7NY.js";
62
63
  import "./chunk-BBMTVAE3.js";
63
64
  import "./chunk-TKDITWDN.js";
64
65
  import "./chunk-5YEUPUV4.js";
65
- import "./chunk-FU5O2REK.js";
66
+ import "./chunk-72V3S44T.js";
66
67
  import "./chunk-YYB5PMTK.js";
67
68
  import "./chunk-L5CGXEZC.js";
68
- import "./chunk-CL4J4757.js";
69
+ import "./chunk-QH5ZQ5SJ.js";
69
70
  import "./chunk-ZQEJ4IX2.js";
70
71
  import "./chunk-FXU7JOXK.js";
71
72
  import "./chunk-WNBZJSQT.js";
72
- import "./chunk-AVMLC2MR.js";
73
- import "./chunk-5DFE2NAF.js";
73
+ import "./chunk-5U2IJBFV.js";
74
+ import "./chunk-TNS63ATU.js";
74
75
  import "./chunk-A7XLR3K7.js";
75
- import "./chunk-O34F5EP5.js";
76
+ import "./chunk-DZN7SDY2.js";
76
77
  import "./chunk-A7JYF4RG.js";
77
78
  import "./chunk-ARX6TAGN.js";
78
- import "./chunk-ZIG7VPJV.js";
79
- import "./chunk-HSGBZSCA.js";
79
+ import "./chunk-MMS2HBRT.js";
80
80
  import "./chunk-RH4AH3YB.js";
81
+ import "./chunk-HSGBZSCA.js";
81
82
  import "./chunk-JKKZGDLP.js";
82
83
  import "./chunk-MLKGABMK.js";
83
84
 
@@ -91,7 +92,7 @@ async function buildSubagentBootstrapContext(payload, options = {}) {
91
92
  return "";
92
93
  }
93
94
  try {
94
- const { fastDbInit } = await import("./fast-db-init-MGY6VCLG.js");
95
+ const { fastDbInit } = await import("./fast-db-init-W3NGKAEU.js");
95
96
  await fastDbInit({ caller: "hook" });
96
97
  } catch {
97
98
  }
@@ -99,7 +100,14 @@ async function buildSubagentBootstrapContext(payload, options = {}) {
99
100
  return await buildBrief({
100
101
  agentId: attribution.agentId,
101
102
  cwd: payload.cwd || process.cwd(),
102
- mode: "subagent"
103
+ mode: "subagent",
104
+ // Bug 24053c0c: `agent_id` is the harness's unique id for THIS subagent
105
+ // spawn, and it is the only thing that separates the several subagents
106
+ // that share one roster identity. It was already being captured by the
107
+ // spawn ledger above and then dropped one call short of the scratch path
108
+ // that needed it — so concurrent `tom`s all resolved one directory while
109
+ // being told it was private.
110
+ agentInstanceId: payload.agent_id
103
111
  });
104
112
  } catch {
105
113
  return "";