@askexenow/exe-os 0.9.374 → 0.9.376

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 (455) hide show
  1. package/deploy/compose/.env.customer.example +16 -1
  2. package/deploy/compose/.env.example +16 -1
  3. package/deploy/compose/docker-compose.yml +80 -18
  4. package/deploy/compose/gateway-watchdog.sh +17 -0
  5. package/deploy/compose/generate-env.ts +41 -1
  6. package/deploy/compose/sso-edge/default.conf.template +59 -63
  7. package/deploy/compose/sso-edge/error-pages/404.html +129 -0
  8. package/deploy/compose/sso-edge/error-pages/500.html +129 -0
  9. package/deploy/compose/sso-edge/error-pages/503.html +118 -0
  10. package/deploy/compose/sso-edge/sso-redirect.conf +115 -92
  11. package/dist/.dist-verified.json +3 -3
  12. package/dist/{active-agent-ONPPEWQV.js → active-agent-BOBBUJ74.js} +6 -6
  13. package/dist/{active-agent-UJKMG7LJ.js → active-agent-GFGEGK2U.js} +6 -6
  14. package/dist/{agent-defs-generator-ZWI6DXOE.js → agent-defs-generator-OX6UFPRX.js} +5 -5
  15. package/dist/{agent-loop-OYHJKNYH.js → agent-loop-7ZRH56EX.js} +1 -1
  16. package/dist/{agentic-ontology-WHFJ3QFS.js → agentic-ontology-DT3VOXBT.js} +1 -1
  17. package/dist/{backfill-metadata-3OUSQD5V.js → backfill-metadata-VRP6PTPP.js} +9 -9
  18. package/dist/{backup-verify-ZKTUYLTA.js → backup-verify-LWHKGOOV.js} +1 -1
  19. package/dist/behavior-injection-GMZKZ3BT.js +83 -0
  20. package/dist/behavior-promotion-QPC4AQ24.js +62 -0
  21. package/dist/{behaviors-ZJ45TFBJ.js → behaviors-GPI4BLTC.js} +16 -14
  22. package/dist/bin/agentic-ontology-backfill.js +10 -10
  23. package/dist/bin/agentic-reflection-backfill.js +11 -11
  24. package/dist/bin/agentic-semantic-label.js +10 -10
  25. package/dist/bin/backfill-conversations.js +14 -12
  26. package/dist/bin/backfill-responses.js +14 -12
  27. package/dist/bin/backfill-vectors.js +16 -14
  28. package/dist/bin/bulk-sync-postgres.js +21 -19
  29. package/dist/bin/cc-doctor.js +19 -11
  30. package/dist/bin/cleanup-stale-review-tasks.js +27 -26
  31. package/dist/bin/cli.js +83 -109
  32. package/dist/bin/daemon-restart-handoff.js +2 -1
  33. package/dist/bin/deferred-daemon-restart.js +118 -110
  34. package/dist/bin/exe-actions.js +176 -0
  35. package/dist/bin/exe-agent-config.js +5 -5
  36. package/dist/bin/exe-agent.js +23 -23
  37. package/dist/bin/exe-assign.js +16 -14
  38. package/dist/bin/exe-boot.js +91 -71
  39. package/dist/bin/exe-call.js +8 -8
  40. package/dist/bin/exe-cicd.js +1210 -0
  41. package/dist/bin/exe-cloud.js +70 -37
  42. package/dist/bin/exe-config-dump.js +5 -5
  43. package/dist/bin/exe-dispatch.js +28 -27
  44. package/dist/bin/exe-doctor.js +12 -11
  45. package/dist/bin/exe-export-behaviors.js +20 -18
  46. package/dist/bin/exe-forget.js +11 -11
  47. package/dist/bin/exe-gateway.js +10 -10
  48. package/dist/bin/exe-healthcheck.js +22 -10
  49. package/dist/bin/exe-heartbeat.js +33 -32
  50. package/dist/bin/exe-kill.js +32 -31
  51. package/dist/bin/exe-launch-agent.js +76 -54
  52. package/dist/bin/exe-mcp.js +10 -6
  53. package/dist/bin/exe-memory-reads.js +9 -9
  54. package/dist/bin/exe-model-supervisor.js +138 -0
  55. package/dist/bin/exe-new-employee.js +14 -14
  56. package/dist/bin/exe-os-mcp-proxy.js +10 -6
  57. package/dist/bin/exe-pending-messages.js +28 -27
  58. package/dist/bin/exe-pending-notifications.js +27 -26
  59. package/dist/bin/exe-pending-reviews.js +28 -27
  60. package/dist/bin/exe-rename.js +9 -9
  61. package/dist/bin/exe-repo-truth.js +1 -1
  62. package/dist/bin/exe-review.js +31 -30
  63. package/dist/bin/exe-search.js +10 -10
  64. package/dist/bin/exe-session-cleanup.js +32 -31
  65. package/dist/bin/exe-settings.js +21 -19
  66. package/dist/bin/exe-start-codex.js +31 -25
  67. package/dist/bin/exe-start-opencode.js +24 -22
  68. package/dist/bin/exe-start.sh +11 -2
  69. package/dist/bin/exe-status.js +29 -28
  70. package/dist/bin/exe-support.js +3 -3
  71. package/dist/bin/exe-team.js +7 -7
  72. package/dist/bin/exe-timers.js +2 -1
  73. package/dist/bin/exe-watchdog.js +170 -16
  74. package/dist/bin/generate-hook-manifest.js +8 -41
  75. package/dist/bin/git-sweep.js +28 -27
  76. package/dist/bin/graph-backfill.js +11 -11
  77. package/dist/bin/graph-export.js +10 -10
  78. package/dist/bin/hooks-cli.js +289 -0
  79. package/dist/bin/import-history.js +14 -14
  80. package/dist/bin/install.js +130 -116
  81. package/dist/bin/intercom-check.js +5 -5
  82. package/dist/bin/mcp-sessions.js +2 -2
  83. package/dist/bin/orchestration-metrics.js +7 -7
  84. package/dist/bin/postgres-agentic-reflection-backfill.js +4 -4
  85. package/dist/bin/postgres-agentic-semantic-backfill.js +4 -4
  86. package/dist/bin/pre-publish.js +1 -1
  87. package/dist/bin/reconcile-backlog.js +2 -2
  88. package/dist/bin/registry-proxy.js +2 -2
  89. package/dist/bin/scan-tasks.js +52 -38
  90. package/dist/bin/setup.js +1 -1
  91. package/dist/bin/shard-migrate.js +9 -9
  92. package/dist/bin/stack-update.js +10 -5
  93. package/dist/bin/verify-stack.js +3 -1
  94. package/dist/bin/vps-health-gate.js +1 -1
  95. package/dist/{boot-generation-JKVZ4ZAT.js → boot-generation-BN6GKASY.js} +6 -6
  96. package/dist/{boot-review-sections-2M6BTG73.js → boot-review-sections-OQ5JGSOD.js} +26 -25
  97. package/dist/{branch-hygiene-U5GFRSTP.js → branch-hygiene-QLD77IMJ.js} +1 -1
  98. package/dist/build-manifest.json +1186 -1106
  99. package/dist/{capability-cards-5IMJT6J7.js → capability-cards-EDZ62HKG.js} +5 -5
  100. package/dist/{capacity-monitor-SAXCQK7O.js → capacity-monitor-6GMTVILS.js} +28 -27
  101. package/dist/{catchup-brief-U2TXBLHD.js → catchup-brief-SGGBMDUP.js} +32 -31
  102. package/dist/{cc-binary-detect-6TNIY5JX.js → cc-binary-detect-ZR6WNOUU.js} +1 -3
  103. package/dist/{chunk-NKETJCB5.js → chunk-2ODXCCMR.js} +18 -3
  104. package/dist/{hook-integrity-KGAV6ZC2.js → chunk-3L72UBUH.js} +28 -15
  105. package/dist/chunk-3OX5S7KZ.js +273 -0
  106. package/dist/{chunk-W75GTHR3.js → chunk-3SRZNJKD.js} +1 -1
  107. package/dist/{chunk-I4DNJFDR.js → chunk-42IFYZUN.js} +4 -4
  108. package/dist/{chunk-JHI5WMK5.js → chunk-473JUDCT.js} +5 -5
  109. package/dist/{chunk-ANLFH23R.js → chunk-4F5CNI65.js} +1 -1
  110. package/dist/{chunk-AWWKRZMB.js → chunk-4KVSCQND.js} +87 -14
  111. package/dist/{chunk-ZCERWHY2.js → chunk-4M6RXJEY.js} +33 -23
  112. package/dist/{chunk-YTSXPJUQ.js → chunk-4YJEEOYT.js} +3 -3
  113. package/dist/{chunk-6RKKVPYF.js → chunk-4YUGB637.js} +1 -1
  114. package/dist/{chunk-XXOPG4BW.js → chunk-4ZSOKEDY.js} +3 -3
  115. package/dist/{chunk-55BEFF4V.js → chunk-5DF4Y6EC.js} +1 -1
  116. package/dist/{chunk-4QCFFW2H.js → chunk-5QCIWWFA.js} +46 -0
  117. package/dist/{chunk-3UUX5OY4.js → chunk-5QKLWJ4Z.js} +1 -1
  118. package/dist/{chunk-YSLGFPWX.js → chunk-5UBWBXLF.js} +3 -3
  119. package/dist/chunk-5WA4DG2A.js +117 -0
  120. package/dist/{chunk-4EN3IZ3Q.js → chunk-64ODONK2.js} +67 -1
  121. package/dist/{chunk-TAMDAOCU.js → chunk-66CGXQUA.js} +239 -39
  122. package/dist/{chunk-QHJR7IMX.js → chunk-6F3FQCAQ.js} +3 -3
  123. package/dist/{chunk-WMEYJT4R.js → chunk-6FG34V6D.js} +15 -14
  124. package/dist/{chunk-NMH5ZQPU.js → chunk-6KQ6WMTI.js} +1 -1
  125. package/dist/{chunk-IRVOXUSK.js → chunk-6WKBTZVL.js} +10 -4
  126. package/dist/{chunk-NOKJCF27.js → chunk-7INEFMVU.js} +9 -3
  127. package/dist/{chunk-GSJLB6JI.js → chunk-7THUQU44.js} +34 -8
  128. package/dist/{chunk-HDLAB7W3.js → chunk-7UH2JWBF.js} +1 -1
  129. package/dist/{chunk-KTCXJWJG.js → chunk-7UNMSF5O.js} +1 -1
  130. package/dist/{chunk-JTVIANUB.js → chunk-AEUGIJDO.js} +3 -1
  131. package/dist/{chunk-DSJI76XL.js → chunk-AHNVFBVB.js} +113 -16
  132. package/dist/{chunk-IBS2FAI4.js → chunk-AUKRBHHZ.js} +4 -1
  133. package/dist/{chunk-AKLJ4JH3.js → chunk-BBK2TSK3.js} +1 -1
  134. package/dist/{chunk-ZL4AGWAH.js → chunk-BNWWVYRN.js} +6 -5
  135. package/dist/{chunk-PY3FOMRN.js → chunk-BQEZPRUC.js} +4 -4
  136. package/dist/{chunk-DIXXEE3S.js → chunk-BQXYXJYC.js} +721 -309
  137. package/dist/{chunk-ORM7ZFKC.js → chunk-BZ546I4Q.js} +32 -0
  138. package/dist/{chunk-3KDCORDO.js → chunk-C2UN464N.js} +1 -1
  139. package/dist/{chunk-75H4R62K.js → chunk-CBPNZFSU.js} +0 -2
  140. package/dist/{chunk-YLXTKI6M.js → chunk-CHO5SNWR.js} +1 -1
  141. package/dist/{chunk-MXPNVSXI.js → chunk-CIEVY5TD.js} +11 -11
  142. package/dist/{chunk-UBK7HK3J.js → chunk-CKLJT2DH.js} +2 -2
  143. package/dist/{chunk-MOGA4Q7F.js → chunk-CKOJP7JI.js} +1 -1
  144. package/dist/{chunk-V3W3SATA.js → chunk-CL4J4757.js} +1 -1
  145. package/dist/{chunk-XNNECNDL.js → chunk-CQFWTWC6.js} +13 -13
  146. package/dist/{chunk-PDVXWXTL.js → chunk-CROVXJ4S.js} +3 -3
  147. package/dist/{chunk-WJG344NC.js → chunk-CWSLTSL6.js} +8 -8
  148. package/dist/{chunk-VMTZ4RUW.js → chunk-DDMGQ5Q3.js} +60 -26
  149. package/dist/{chunk-YKC7QDZH.js → chunk-DN24VTS5.js} +31 -6
  150. package/dist/{chunk-IN6CAM4F.js → chunk-EHAN752X.js} +7 -7
  151. package/dist/{chunk-EXTZSNWL.js → chunk-EPHSISMT.js} +2 -2
  152. package/dist/{chunk-6EZQUNE6.js → chunk-FCMQVEVL.js} +36 -3
  153. package/dist/{chunk-3L2QU5ZF.js → chunk-FS7XF7SE.js} +1 -1
  154. package/dist/{chunk-LGS2V2XD.js → chunk-FUKVP54K.js} +66 -19
  155. package/dist/{chunk-44TLJZJ5.js → chunk-FX2QRSRT.js} +1 -1
  156. package/dist/{chunk-PWRC5XZO.js → chunk-FXZ6VGFW.js} +16 -8
  157. package/dist/{chunk-NT7W4RXD.js → chunk-GKDAQL45.js} +1 -1
  158. package/dist/{chunk-EKE37MO4.js → chunk-GOT5ZHPX.js} +3 -3
  159. package/dist/{chunk-SLLLOOEI.js → chunk-GPJIBLP4.js} +1 -0
  160. package/dist/{chunk-EKYYMIVT.js → chunk-GPUOUUHA.js} +10 -1
  161. package/dist/{chunk-PB5S7YOF.js → chunk-GXNBPTPJ.js} +1 -1
  162. package/dist/{chunk-4SJ4LK4V.js → chunk-HE34XVD5.js} +5 -5
  163. package/dist/{chunk-6VHOQ3IM.js → chunk-HHAKXIKX.js} +12 -9
  164. package/dist/{chunk-TFKCERAK.js → chunk-HHT527PV.js} +38 -41
  165. package/dist/{chunk-ZSODLMFV.js → chunk-HIVOLPLD.js} +1 -40
  166. package/dist/{chunk-UCFC2AEI.js → chunk-I3LDTSWU.js} +1 -1
  167. package/dist/{chunk-Q3AXXKDF.js → chunk-IKXH4BFC.js} +5 -5
  168. package/dist/chunk-IMYGYIAI.js +23 -0
  169. package/dist/{chunk-GS7LIT34.js → chunk-IPHLUZ37.js} +1 -1
  170. package/dist/{chunk-M4IRPXSZ.js → chunk-IZA7XW2Q.js} +3 -3
  171. package/dist/{chunk-SEQIPGLU.js → chunk-IZLML47J.js} +1 -1
  172. package/dist/{chunk-4HKTO2SV.js → chunk-JRMHGO5B.js} +1 -1
  173. package/dist/{chunk-U73AC5AN.js → chunk-JSTTPYL3.js} +16 -16
  174. package/dist/{chunk-6SCGLHJ7.js → chunk-JVWLHBAV.js} +4 -4
  175. package/dist/{chunk-OVEQE6YS.js → chunk-K7UNIEB4.js} +254 -48
  176. package/dist/{chunk-HNWS7YHN.js → chunk-KBR5LIWD.js} +1 -1
  177. package/dist/{chunk-AKLQSC6W.js → chunk-KI7O64XV.js} +328 -98
  178. package/dist/{chunk-XXFKSJYA.js → chunk-KK3MIY5C.js} +5 -5
  179. package/dist/{chunk-U6SUKSZR.js → chunk-KO3OHI6V.js} +3 -3
  180. package/dist/{chunk-NJFJWQNN.js → chunk-L5CGXEZC.js} +27 -22
  181. package/dist/{chunk-NBXDXKLC.js → chunk-LK3XQDBP.js} +1 -1
  182. package/dist/{chunk-T3QUKNLI.js → chunk-LM443ORV.js} +1 -1
  183. package/dist/{chunk-BBSIEYF5.js → chunk-LNAFLXL7.js} +12 -4
  184. package/dist/{chunk-32YV32VA.js → chunk-LTUA5EYI.js} +122 -11
  185. package/dist/{chunk-23MVDXLY.js → chunk-MAXD5JQL.js} +11 -10
  186. package/dist/{chunk-GNUAL43X.js → chunk-MFASHRJ6.js} +5 -5
  187. package/dist/chunk-MFYMDGE7.js +37 -0
  188. package/dist/{chunk-VKJGHAZT.js → chunk-MGVILAYU.js} +57 -13
  189. package/dist/{chunk-DB55JZHU.js → chunk-MSLWRWTI.js} +1 -1
  190. package/dist/{chunk-C2L622QJ.js → chunk-NB5IRTC4.js} +52 -44
  191. package/dist/{chunk-2ZOEC4KC.js → chunk-ND75TGPR.js} +2 -2
  192. package/dist/{chunk-VRTCVZND.js → chunk-NE34MWVL.js} +142 -16
  193. package/dist/{chunk-S2WBS6BG.js → chunk-NMOFLWDY.js} +1 -1
  194. package/dist/{chunk-CRCB5S7I.js → chunk-NPXKGBVZ.js} +140 -23
  195. package/dist/{chunk-JSMDRKPJ.js → chunk-NRBGUIPE.js} +1 -1
  196. package/dist/{chunk-4LWBC7CM.js → chunk-NY6SBR4O.js} +1 -1
  197. package/dist/{chunk-UCUOGVDX.js → chunk-O3K2C22L.js} +13 -1
  198. package/dist/{chunk-R522MWAR.js → chunk-OATET4BV.js} +2 -2
  199. package/dist/chunk-OOZU5H3T.js +86 -0
  200. package/dist/{chunk-XFTEX77S.js → chunk-OQ4FNDRG.js} +28 -6
  201. package/dist/{chunk-VYQ7B7DI.js → chunk-OWVX52XF.js} +4 -4
  202. package/dist/{chunk-AETLDRZB.js → chunk-PEAAX6UA.js} +1 -1
  203. package/dist/{chunk-UM3N6VND.js → chunk-PFAVHC5N.js} +5 -5
  204. package/dist/chunk-PMVVUIHH.js +85 -0
  205. package/dist/chunk-PPMGQFLJ.js +2317 -0
  206. package/dist/{chunk-7TSBV3SD.js → chunk-PTY2N23C.js} +310 -2
  207. package/dist/{chunk-UKLN57Q5.js → chunk-PZ5SKYK6.js} +4 -4
  208. package/dist/{chunk-636LKCKE.js → chunk-Q6ZLQMP2.js} +1 -1
  209. package/dist/{chunk-N7VEP5B3.js → chunk-QFR5EKZG.js} +29 -7
  210. package/dist/{chunk-YMP2QSOP.js → chunk-QN56VQ6Z.js} +1 -1
  211. package/dist/{chunk-6YVUR3OU.js → chunk-QR3BUMOS.js} +2 -2
  212. package/dist/{chunk-XZ65ST2I.js → chunk-QV5CQLQH.js} +2 -2
  213. package/dist/{chunk-DJOIMFKV.js → chunk-REZIGNA6.js} +2 -2
  214. package/dist/{chunk-UQGSBM3U.js → chunk-RFPMXR6B.js} +11 -0
  215. package/dist/{chunk-DN4YVV4Z.js → chunk-RSABKW6B.js} +1 -1
  216. package/dist/{chunk-LP4GB656.js → chunk-RZNP35SI.js} +2 -2
  217. package/dist/{chunk-NUTZJZKW.js → chunk-SKTAZGFI.js} +10 -42
  218. package/dist/{chunk-TQAZTRQ3.js → chunk-SVXUT2DN.js} +4 -4
  219. package/dist/{chunk-DJ7YXOTU.js → chunk-T7EF5CQO.js} +3 -3
  220. package/dist/{chunk-QAEWWYHL.js → chunk-TDF2XKLK.js} +5 -1
  221. package/dist/{chunk-ZGYNKA3O.js → chunk-TT5BBVLX.js} +29 -31
  222. package/dist/{chunk-5H47VHB7.js → chunk-UWX6MMCX.js} +1 -1
  223. package/dist/{chunk-XL5MFGMR.js → chunk-V4YNN7PA.js} +10 -3
  224. package/dist/{chunk-SL6KQYDU.js → chunk-V5DDXXMP.js} +7 -7
  225. package/dist/{chunk-DZKPOSFD.js → chunk-VH6SPPNA.js} +1 -1
  226. package/dist/{chunk-LDNYSMPZ.js → chunk-VJUUI2VT.js} +1 -1
  227. package/dist/{chunk-CBCGDEJA.js → chunk-VN5WOOAQ.js} +42 -6
  228. package/dist/{chunk-EXDW3E2R.js → chunk-VPHJ2LUI.js} +165 -15
  229. package/dist/{chunk-GOMQ7PVQ.js → chunk-WJC6AAJN.js} +1 -1
  230. package/dist/{chunk-GJI77VDO.js → chunk-WVBVUVZB.js} +6 -5
  231. package/dist/{chunk-A6PDF4BO.js → chunk-XTQ7R2PA.js} +2 -2
  232. package/dist/{chunk-L6RXG36J.js → chunk-Y2HD2YB7.js} +1 -1
  233. package/dist/{chunk-KTU3EAWK.js → chunk-YAACLBZ7.js} +5 -5
  234. package/dist/{chunk-7GE2EQ23.js → chunk-YGVAKKGJ.js} +11 -6
  235. package/dist/chunk-YLHACCCB.js +166 -0
  236. package/dist/{chunk-PLZSZOZN.js → chunk-YP6UGVEY.js} +3 -3
  237. package/dist/{chunk-ULIBLJ6W.js → chunk-YYC553FO.js} +5 -5
  238. package/dist/{chunk-T35RCQFE.js → chunk-YZPEQW7H.js} +9 -8
  239. package/dist/{chunk-KI5PFRG6.js → chunk-ZKGWHT56.js} +60 -2
  240. package/dist/{chunk-NUK7EEN5.js → chunk-ZKJ5S23O.js} +33 -13
  241. package/dist/chunk-ZLPS3GR7.js +146 -0
  242. package/dist/{chunk-XH7YL7JM.js → chunk-ZMX22HSS.js} +50 -6
  243. package/dist/{chunk-JY5GAZYC.js → chunk-ZQEJ4IX2.js} +4 -0
  244. package/dist/{chunk-R4CBHKZ2.js → chunk-ZS5JO6QV.js} +7 -6
  245. package/dist/{cleanup-graph-garbage-DPJGO52H.js → cleanup-graph-garbage-LAPIZGFX.js} +12 -12
  246. package/dist/{cloud-sync-command-JPNTT4OQ.js → cloud-sync-command-QAZ2NWRA.js} +11 -2
  247. package/dist/{cloud-sync-db-init-V2LWIUQU.js → cloud-sync-db-init-HAGVF32Y.js} +1 -1
  248. package/dist/{cloud-sync-shutdown-BNALPWGX.js → cloud-sync-shutdown-DAEPCFVK.js} +5 -5
  249. package/dist/{co-activation-CMNSWS6B.js → co-activation-523TKQPZ.js} +5 -5
  250. package/dist/{co-occurrence-WRI2NAN6.js → co-occurrence-PQUCTENN.js} +36 -17
  251. package/dist/{code-context-index-NOJSHLPN.js → code-context-index-LIDOFKOR.js} +6 -4
  252. package/dist/{code-context-watcher-VZNZU3BO.js → code-context-watcher-4F7K2N3U.js} +6 -4
  253. package/dist/{content-extractor-NXYNEF5K.js → content-extractor-DJM5EUDA.js} +2 -2
  254. package/dist/{conversation-entity-extractor-74252CAO.js → conversation-entity-extractor-THGKQ5RD.js} +5 -5
  255. package/dist/{crdt-sync-B3JN6AIV.js → crdt-sync-32B55NOJ.js} +1 -1
  256. package/dist/{crm-webhook-GYWQRFET.js → crm-webhook-FHRISFYQ.js} +2 -2
  257. package/dist/{cto-delegation-gate-LQHVLEMW.js → cto-delegation-gate-O6XPGECP.js} +27 -26
  258. package/dist/{daemon-auth-QZHEO7IQ.js → daemon-auth-PNKHERLV.js} +6 -1
  259. package/dist/daemon-drift-N2GKUBAO.js +15 -0
  260. package/dist/{daemon-orchestration-5HIQALZH.js → daemon-orchestration-BWLSJG2X.js} +33 -30
  261. package/dist/{daemon-ready-P2BR2XP5.js → daemon-ready-BN6EZLTQ.js} +1 -1
  262. package/dist/{daemon-ready-signal-CKXPUMJ2.js → daemon-ready-signal-PNDMVKPJ.js} +3 -1
  263. package/dist/{daemon-restart-circuit-breaker-SMTWFX27.js → daemon-restart-circuit-breaker-CD4VMCU7.js} +1 -1
  264. package/dist/daemon-restart-report-FIO5HZTJ.js +15 -0
  265. package/dist/{daemon-timer-report-TNJH5SFY.js → daemon-timer-report-6UK5PSDP.js} +2 -1
  266. package/dist/{db-integrity-events-2DTFO37N.js → db-integrity-events-GYGANKZV.js} +1 -1
  267. package/dist/{destructive-data-guard-BVFWPPIS.js → destructive-data-guard-HHWUBIGS.js} +1 -1
  268. package/dist/{doc-graph-extractor-PQHDHQPQ.js → doc-graph-extractor-HOKOV7BE.js} +10 -10
  269. package/dist/{documents-C4SSPJMC.js → documents-HWEJMONR.js} +16 -14
  270. package/dist/{dreaming-XAO3FCBV.js → dreaming-FMNDODG2.js} +31 -30
  271. package/dist/{employee-boot-brief-W4OHUMRQ.js → employee-boot-brief-DBFROOQJ.js} +35 -34
  272. package/dist/{entity-boost-3UWGXG5O.js → entity-boost-5V4W6NFA.js} +1 -1
  273. package/dist/{exe-drift-AG2KMKD5.js → exe-drift-V55UAYRT.js} +6 -6
  274. package/dist/{exe-export-IC5BT335.js → exe-export-LHN42ZUS.js} +18 -16
  275. package/dist/{exe-import-A35ZLDPG.js → exe-import-M536BEZC.js} +18 -16
  276. package/dist/{exe-key-TCMJNYLA.js → exe-key-37XIR22X.js} +111 -107
  277. package/dist/{exe-org-JXCR3JYZ.js → exe-org-7TDIRNTE.js} +14 -14
  278. package/dist/{exe-snapshot-SV6SRIG6.js → exe-snapshot-EOUBCIQK.js} +34 -33
  279. package/dist/{fast-db-init-L2RGKJWH.js → fast-db-init-GWUZ746B.js} +1 -1
  280. package/dist/{founder-context-D4HFIESJ.js → founder-context-6LQKET4A.js} +2 -2
  281. package/dist/{fts-integrity-4YB34KWX.js → fts-integrity-PLAL6NMG.js} +1 -1
  282. package/dist/gateway/index.js +17 -17
  283. package/dist/{git-main-guard-VTW4N3CM.js → git-main-guard-BGICS25C.js} +1 -1
  284. package/dist/{git-staleness-TN7CYGFG.js → git-staleness-QNNXJK3W.js} +5 -5
  285. package/dist/{global-procedures-YFDEIOG7.js → global-procedures-NMQGF54V.js} +7 -7
  286. package/dist/{gotrue-session-ODZ2ERJX.js → gotrue-session-U4H3UGHL.js} +1 -3
  287. package/dist/{graph-auto-extract-3YR3TYRW.js → graph-auto-extract-7POGAKHM.js} +10 -10
  288. package/dist/{graph-query-AP5R6ZHO.js → graph-query-ZEDO4BDF.js} +1 -1
  289. package/dist/{graph-rag-Z2KCJTPK.js → graph-rag-JA7XN7NO.js} +5 -5
  290. package/dist/hook-integrity-6NLSNTXD.js +15 -0
  291. package/dist/{hook-prefetch-K5DN3TOQ.js → hook-prefetch-4KH3D4YU.js} +28 -26
  292. package/dist/hook-tamper-log-Z4PWC7N4.js +90 -0
  293. package/dist/hooks/bug-report-worker.js +31 -30
  294. package/dist/hooks/codex-stop-task-finalizer.js +33 -32
  295. package/dist/hooks/commit-complete.js +30 -29
  296. package/dist/hooks/error-recall.js +12 -12
  297. package/dist/hooks/exe-heartbeat-hook.js +7 -7
  298. package/dist/hooks/ingest-worker.js +17 -15
  299. package/dist/hooks/ingest.js +20 -20
  300. package/dist/hooks/instructions-loaded.js +9 -9
  301. package/dist/hooks/manifest.json +20 -20
  302. package/dist/hooks/notification.js +8 -8
  303. package/dist/hooks/post-compact.js +7 -7
  304. package/dist/hooks/post-tool-combined.js +14 -14
  305. package/dist/hooks/pre-compact.js +30 -29
  306. package/dist/hooks/pre-tool-use.js +303 -489
  307. package/dist/hooks/prompt-submit.js +61 -54
  308. package/dist/hooks/session-end.js +35 -34
  309. package/dist/hooks/session-start.js +18 -18
  310. package/dist/hooks/stop.js +36 -35
  311. package/dist/hooks/subagent-stop.js +32 -31
  312. package/dist/hooks/summary-worker.js +36 -35
  313. package/dist/index.js +39 -38
  314. package/dist/{installer-LK35OX6R.js → installer-M34Q7LAS.js} +25 -10
  315. package/dist/{installer-54HTN5RE.js → installer-POV6TDQ5.js} +12 -8
  316. package/dist/{installer-LLWKZI2S.js → installer-S624ZOMB.js} +12 -8
  317. package/dist/{intercom-queue-5NOT2RKI.js → intercom-queue-MKDWAEUV.js} +26 -25
  318. package/dist/lib/cloud-sync.js +27 -19
  319. package/dist/lib/consolidation.js +12 -12
  320. package/dist/lib/database.js +5 -5
  321. package/dist/lib/db-backup.js +7 -1
  322. package/dist/lib/db-daemon-client.js +8 -6
  323. package/dist/lib/db-write-worker.js +4 -4
  324. package/dist/lib/db.js +5 -5
  325. package/dist/lib/device-registry.js +1 -1
  326. package/dist/lib/embedder.js +6 -4
  327. package/dist/lib/employee-templates.js +8 -8
  328. package/dist/lib/employees.js +5 -5
  329. package/dist/lib/exe-daemon-client.js +5 -3
  330. package/dist/lib/exe-daemon.js +333 -262
  331. package/dist/lib/hybrid-search.js +10 -10
  332. package/dist/lib/identity-templates.js +1 -1
  333. package/dist/lib/identity.js +17 -7
  334. package/dist/lib/license.js +2 -2
  335. package/dist/lib/messaging.js +27 -26
  336. package/dist/lib/post-tool-memory.js +9 -9
  337. package/dist/lib/registry-proxy.js +3 -1
  338. package/dist/lib/reminders.js +6 -6
  339. package/dist/lib/schedules.js +11 -11
  340. package/dist/lib/session-registry.js +11 -7
  341. package/dist/lib/session-wrappers.js +1 -1
  342. package/dist/lib/skill-learning.js +17 -15
  343. package/dist/lib/status-brief.js +2 -1
  344. package/dist/lib/store.js +9 -9
  345. package/dist/lib/task-router.js +6 -6
  346. package/dist/lib/tasks.js +28 -27
  347. package/dist/lib/tmux-routing.js +26 -25
  348. package/dist/lib/tmux-status.js +5 -1
  349. package/dist/lib/token-spend.js +6 -6
  350. package/dist/{license-gate-JVMB6OFD.js → license-gate-2QNMBAZU.js} +3 -3
  351. package/dist/{license-sync-5VYS2F2W.js → license-sync-FEDKH5MD.js} +2 -2
  352. package/dist/{mailbox-inbox-4MEUOL3J.js → mailbox-inbox-XE72D3AX.js} +2 -2
  353. package/dist/{mailbox-outbox-J6WIF3UY.js → mailbox-outbox-DNDDP2HW.js} +1 -1
  354. package/dist/mcp/register-tools.js +110 -106
  355. package/dist/mcp/server.js +113 -109
  356. package/dist/mcp/tools/complete-reminder.js +7 -7
  357. package/dist/mcp/tools/create-reminder.js +7 -7
  358. package/dist/mcp/tools/create-task.js +30 -29
  359. package/dist/mcp/tools/deactivate-behavior.js +18 -16
  360. package/dist/mcp/tools/list-reminders.js +7 -7
  361. package/dist/mcp/tools/list-tasks.js +30 -29
  362. package/dist/mcp/tools/send-message.js +33 -30
  363. package/dist/mcp/tools/update-task.js +29 -28
  364. package/dist/{mcp-child-registry-OTG4MWO7.js → mcp-child-registry-DVHYAHPW.js} +2 -2
  365. package/dist/{mcp-health-HNVSWKFA.js → mcp-health-B5EKRCZG.js} +2 -2
  366. package/dist/{mcp-http-config-DQWL7U2Z.js → mcp-http-config-ZJ7XHWT7.js} +10 -6
  367. package/dist/{mcp-session-identity-277GASTQ.js → mcp-session-identity-PEVM7VIP.js} +26 -25
  368. package/dist/{memory-cards-3S2ZQPR7.js → memory-cards-VN5DEWPD.js} +9 -9
  369. package/dist/{memory-graph-extractor-A6DFEFIN.js → memory-graph-extractor-TMEB6WLA.js} +11 -11
  370. package/dist/{memory-poisoning-defense-ZVP4H6DY.js → memory-poisoning-defense-DYHARQ2G.js} +5 -5
  371. package/dist/{memory-pressure-watchdog-6W5F6R7H.js → memory-pressure-watchdog-J6Q3SIBL.js} +27 -26
  372. package/dist/{memory-queue-client-ADSDP6OX.js → memory-queue-client-QC2OTMJB.js} +6 -4
  373. package/dist/{memory-reflection-BKB2YOE6.js → memory-reflection-ZYJUOSFX.js} +9 -9
  374. package/dist/{message-queue-client-XQN7QABL.js → message-queue-client-OEQCGSWC.js} +1 -25
  375. package/dist/{notification-ledger-CLGM7ODF.js → notification-ledger-TG6EFYBP.js} +29 -28
  376. package/dist/{notifications-MACUZPYP.js → notifications-LGYY22W5.js} +26 -25
  377. package/dist/{orchestration-events-N7LYMUGA.js → orchestration-events-JPHB6NPY.js} +6 -6
  378. package/dist/{orchestrator-4X24EWHV.js → orchestrator-IC4WGP6L.js} +28 -27
  379. package/dist/{org-brief-session-FZOFMO5U.js → org-brief-session-DEPHWCQR.js} +9 -9
  380. package/dist/{org-consent-policy-O5E6HXBL.js → org-consent-policy-T27AO5OJ.js} +2 -2
  381. package/dist/{org-join-POWUG25F.js → org-join-A3YXC5RB.js} +2 -2
  382. package/dist/{org-key-admin-E7EMDOZZ.js → org-key-admin-SQFHCVP2.js} +3 -3
  383. package/dist/{org-partner-runtime-FODONVTM.js → org-partner-runtime-L7L2WWGN.js} +10 -10
  384. package/dist/{org-row-visibility-VX4AVV5Q.js → org-row-visibility-M54Z6ZH3.js} +1 -1
  385. package/dist/{pipeline-router-6GGT2ZW3.js → pipeline-router-NKYAUR3Y.js} +6 -6
  386. package/dist/{plan-limits-FUN76LYY.js → plan-limits-ISRRGF23.js} +8 -8
  387. package/dist/{platform-procedures-7YSCLF4Z.js → platform-procedures-Z7ZGBJWN.js} +1 -1
  388. package/dist/{project-boot-3Q65LCIP.js → project-boot-BLYGVUJH.js} +4 -1
  389. package/dist/{project-name-LJVFMYTQ.js → project-name-WKSNNKXK.js} +6 -6
  390. package/dist/{projection-worker-4OANGP5K.js → projection-worker-RNYPE46G.js} +2 -2
  391. package/dist/{prospective-memory-KR3P4T6N.js → prospective-memory-GEO6E3UL.js} +5 -5
  392. package/dist/{push-notifications-NCZLH6DI.js → push-notifications-EY6BXZUY.js} +27 -26
  393. package/dist/{reproject-worktree-memories-PWYKPB2U.js → reproject-worktree-memories-DAA5GWMH.js} +28 -27
  394. package/dist/{reranker-6V3C2AO4.js → reranker-7OADQPMG.js} +1 -1
  395. package/dist/{retrieval-health-5D7O6VH6.js → retrieval-health-FCEDWN2P.js} +2 -2
  396. package/dist/{review-polling-QW3LJ4KN.js → review-polling-G52BR4MC.js} +27 -26
  397. package/dist/runtime/index.js +39 -38
  398. package/dist/{session-events-T45SSTMF.js → session-events-P6E2373E.js} +27 -26
  399. package/dist/{session-kill-telemetry-QSPVJGBF.js → session-kill-telemetry-OHNJMIVT.js} +27 -26
  400. package/dist/{session-mcp-config-SC5BLWZG.js → session-mcp-config-WFZAH6R5.js} +2 -1
  401. package/dist/{session-scope-KRWE54C4.js → session-scope-DKOHPQPJ.js} +26 -25
  402. package/dist/{setup-wizard-GP3TBTPF.js → setup-wizard-RNU3RFBE.js} +1 -1
  403. package/dist/{skill-refinement-C7JTMLJG.js → skill-refinement-AKJTHFXC.js} +6 -6
  404. package/dist/{stack-generate-manifest-MFMDWRUP.js → stack-generate-manifest-7WJZWSPK.js} +163 -15
  405. package/dist/{stack-promote-EKSCYY63.js → stack-promote-OP2URGFF.js} +4 -4
  406. package/dist/{stack-release-2GZAAFO4.js → stack-release-MY6U2QIO.js} +31 -8
  407. package/dist/{stack-update-J6JXSTAZ.js → stack-update-QSHSLUTZ.js} +3 -3
  408. package/dist/{steward-gate-BFCCMCSW.js → steward-gate-KMLS5ECC.js} +6 -6
  409. package/dist/{subagent-brief-injection-ED36PLYY.js → subagent-brief-injection-HCKZQZBF.js} +37 -36
  410. package/dist/{support-inbox-YW47SYJF.js → support-inbox-UBXU5RKV.js} +11 -11
  411. package/dist/{support-outbox-HFJWG52M.js → support-outbox-G2NG2U5K.js} +2 -2
  412. package/dist/{sweep-budget-KMPJ7O5Z.js → sweep-budget-YGLCNXZZ.js} +9 -3
  413. package/dist/{task-enforcement-CECTQX4U.js → task-enforcement-2GR7HU6V.js} +27 -26
  414. package/dist/{task-request-inbox-Q5T4N5K7.js → task-request-inbox-ANCVK2VG.js} +2 -2
  415. package/dist/{task-scope-ERVEUEYU.js → task-scope-QANJJXXB.js} +30 -29
  416. package/dist/{tasks-crud-ZRQNJXQ2.js → tasks-crud-45WOIMIM.js} +44 -25
  417. package/dist/{tasks-notify-MIZH4C2O.js → tasks-notify-ZJS4MA3S.js} +29 -26
  418. package/dist/{tasks-review-Z7J2P6DG.js → tasks-review-ZVPKY47Z.js} +26 -25
  419. package/dist/{telemetry-upload-LVQUQYFP.js → telemetry-upload-VY3UWAEL.js} +10 -10
  420. package/dist/{token-budget-BU4NOVZF.js → token-budget-XHX6XFEC.js} +6 -6
  421. package/dist/{tool-capability-index-7F42MOJT.js → tool-capability-index-6HLZU437.js} +1 -1
  422. package/dist/{tool-telemetry-O27EVMBR.js → tool-telemetry-GBDI4AXR.js} +1 -1
  423. package/dist/tui/App.js +36 -35
  424. package/dist/{tui-data-TPWWBIUQ.js → tui-data-IQFE3UW3.js} +30 -29
  425. package/dist/{typed-messages-RCMPEKJN.js → typed-messages-P2HLLA62.js} +1 -1
  426. package/dist/{update-support-F2F5537B.js → update-support-BDN5AK4R.js} +25 -22
  427. package/dist/{work-claims-B73X5NE7.js → work-claims-PDQNLE5K.js} +7 -7
  428. package/dist/{work-state-heartbeat-P4YX6E2R.js → work-state-heartbeat-CH6BLQKV.js} +1 -1
  429. package/dist/{worker-gate-BEEIIVWA.js → worker-gate-NUUSQMBT.js} +1 -3
  430. package/dist/{workflow-engine-5X46PFCW.js → workflow-engine-RZ7QEI3Z.js} +2 -2
  431. package/dist/{worktree-W47CIMJ6.js → worktree-Q25PZST6.js} +11 -7
  432. package/dist/worktree-ownership-guard-4LKMW6PW.js +421 -0
  433. package/dist/{worktree-sweep-BNBD4RFX.js → worktree-sweep-EV5YQ2OB.js} +8 -8
  434. package/package.json +15 -3
  435. package/release-notes.json +5 -5
  436. package/src/commands/exe.md +16 -16
  437. package/stack.release.json +9 -8
  438. package/dist/behavior-injection-M6UYZCMW.js +0 -63
  439. package/dist/chunk-BJ7AVSY6.js +0 -50
  440. package/dist/daemon-restart-report-EIVD6WDJ.js +0 -10
  441. package/dist/worktree-ownership-guard-OUWJROW2.js +0 -88
  442. /package/dist/{chunk-GQOEWNVM.js → chunk-4EG4DT4F.js} +0 -0
  443. /package/dist/{chunk-AISULNGL.js → chunk-BRAIWGMF.js} +0 -0
  444. /package/dist/{chunk-NRG7KZIP.js → chunk-HQEAZDAC.js} +0 -0
  445. /package/dist/{chunk-VZAFWPAY.js → chunk-IK4344V5.js} +0 -0
  446. /package/dist/{chunk-GM7TLYOK.js → chunk-K3VDF6II.js} +0 -0
  447. /package/dist/{chunk-2AJGV5UL.js → chunk-KM7DAG5J.js} +0 -0
  448. /package/dist/{chunk-YO4BO2CL.js → chunk-QIEYJ4KZ.js} +0 -0
  449. /package/dist/{chunk-WSQASFLP.js → chunk-VCTK5HRA.js} +0 -0
  450. /package/dist/{chunk-KQ6RJWRW.js → chunk-VPT6VMBG.js} +0 -0
  451. /package/dist/{chunk-6WIFPD2P.js → chunk-YZ4AEMR7.js} +0 -0
  452. /package/dist/{core-memory-7I7RE2SJ.js → core-memory-UIZKCY4L.js} +0 -0
  453. /package/dist/{memory-isolation-2TUZ7Z4K.js → memory-isolation-3GJ6WLYX.js} +0 -0
  454. /package/dist/{oauth-server-AYM37SQ4.js → oauth-server-ZRHXIRXQ.js} +0 -0
  455. /package/dist/{wiki-acl-IBQLLBTS.js → wiki-acl-MFOYK5F4.js} +0 -0
@@ -1,14 +1,14 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  writeSignedStackManifest
4
- } from "./chunk-3UUX5OY4.js";
5
- import "./chunk-ZGYNKA3O.js";
4
+ } from "./chunk-5QKLWJ4Z.js";
5
+ import "./chunk-TT5BBVLX.js";
6
6
  import "./chunk-GHR4ZPJ7.js";
7
7
  import "./chunk-C5HUMAA7.js";
8
8
  import "./chunk-L25OAFOU.js";
9
- import "./chunk-L6RXG36J.js";
9
+ import "./chunk-Y2HD2YB7.js";
10
10
  import "./chunk-A7XLR3K7.js";
11
- import "./chunk-GQOEWNVM.js";
11
+ import "./chunk-4EG4DT4F.js";
12
12
  import "./chunk-ZIG7VPJV.js";
13
13
  import "./chunk-HSGBZSCA.js";
14
14
  import "./chunk-RH4AH3YB.js";
@@ -305,10 +305,11 @@ function evaluateService(spec, facts = {}, options = {}) {
305
305
  if (facts.deployed?.ref) {
306
306
  const deployedTag = tagOf(facts.deployed.ref);
307
307
  const deployedVersion = facts.deployed.versionLabel?.trim();
308
- if (!deployedTag || !deployedVersion) {
308
+ const identifiable = Boolean(deployedTag) || isDigestPinned(facts.deployed.ref);
309
+ if (!identifiable || !deployedVersion) {
309
310
  const missing = [
310
311
  !deployedVersion ? "no org.opencontainers.image.version label" : null,
311
- !deployedTag ? "matches no release tag (bare digest)" : null
312
+ !identifiable ? "is neither tag- nor digest-referenced (unattributable)" : null
312
313
  ].filter(Boolean).join(" and ");
313
314
  return refuse(
314
315
  `deployed image ${facts.deployed.ref} has ${missing}; provenance unresolved. Trace the running image and cut a real release before ${spec.key} can be manifest-governed. Re-pinning it to a tag we cannot prove it came from would be a change of unknown scope.`
@@ -357,6 +358,31 @@ function evaluateService(spec, facts = {}, options = {}) {
357
358
  `could not resolve ${spec.ghRepo}@${facts.latestTag} to a commit. Provenance is anchored to the COMMIT a tag names, never to the tag string, so an unresolvable tag cannot be pinned.`
358
359
  );
359
360
  }
361
+ if (facts.deployed?.ref) {
362
+ const deployedRef = facts.deployed.ref;
363
+ const deployedTag = tagOf(deployedRef);
364
+ if (deployedTag && facts.deployedTagExistsInGit !== true) {
365
+ return refuse(
366
+ facts.deployedTagExistsInGit !== false ? `could not verify that ${deployedTag} is an AskExe release tag in ${spec.ghRepo}, so the image production is running cannot be attributed to a release. An unverifiable tag is not a verified tag \u2014 fail closed.` : facts.deployedTagIsNotARelease ? `FLOATING DEPLOYMENT: production runs ${deployedRef}, whose tag "${deployedTag}" is not a release tag at all \u2014 it is a moving reference. Its bytes change under it without the manifest, the stack version, or anyone's review changing, so there is no version this deployment can be said to BE. A version label on the image does not fix that: the label records what the build called itself, not what was released. Deploy a released \`:vX.Y.Z\` tag before ${spec.key} can be manifest-governed.` : facts.deployedTagUpstreamOwned ? `UPSTREAM TAG, NOT OURS: production runs ${deployedRef}, and ${deployedTag} does exist in ${spec.ghRepo} \u2014 but it was created by an UPSTREAM identity, not by AskExe. ${spec.ghRepo} is a hard fork that inherited upstream's tag namespace, so a tag being present there is no evidence that WE released these bytes. Do not "fix" this by trusting the tag; cut a real AskExe release at a version upstream has not used.` : `UNTAGGED RELEASE: production runs ${deployedRef}, but ${deployedTag} does not exist as a git tag in ${spec.ghRepo}. The image wears a release name that was never released \u2014 no reviewed commit corresponds to the bytes that are serving traffic, so this pin cannot be traced back to source. Push the real tag (which builds the image through the tag-triggered release workflow) instead of publishing a version-tagged image beside it.`
367
+ );
368
+ }
369
+ const deployedRevision = facts.deployed.revisionLabel?.trim();
370
+ if (!deployedRevision) {
371
+ return refuse(
372
+ `deployed image ${deployedRef} carries no org.opencontainers.image.revision label, so there is nothing to check against ${spec.ghRepo}'s history. An image that cannot name its own source commit is an unreproducible build.`
373
+ );
374
+ }
375
+ if (facts.deployedRevisionReleaseTag !== void 0 && facts.deployedRevisionReleaseTag === null) {
376
+ return refuse(
377
+ `UNRELEASED CODE IN PRODUCTION: ${deployedRef} says it was built from commit ${deployedRevision}, but no release tag in ${spec.ghRepo} contains that commit \u2014 it is not in any released history. Production is running code that was built, pushed and deployed without ever being tagged.`
378
+ );
379
+ }
380
+ if (facts.deployedRevisionReleaseTag === void 0) {
381
+ return refuse(
382
+ `could not determine whether any release tag in ${spec.ghRepo} contains commit ${deployedRevision} (the revision ${deployedRef} claims). Unverifiable provenance fails closed.`
383
+ );
384
+ }
385
+ }
360
386
  const resolvedDigest = facts.digestByCommit ?? facts.digestByTag;
361
387
  if (!resolvedDigest || !/^sha256:[0-9a-f]{64}$/i.test(resolvedDigest)) {
362
388
  return refuse(
@@ -615,6 +641,55 @@ async function resolveTagCommit(ghRepo, tag) {
615
641
  const deref = await run("gh", ["api", `repos/${ghRepo}/git/tags/${sha}`, "--jq", ".object.sha"]);
616
642
  return deref.ok && deref.stdout.trim() !== "" ? deref.stdout.trim() : void 0;
617
643
  }
644
+ async function fetchReleaseTags(ghRepo) {
645
+ const { inReleaseNamespace } = await import("./ref-provenance-gate-M4AQO4OT.js");
646
+ const res = await run("gh", [
647
+ "api",
648
+ `repos/${ghRepo}/git/refs/tags`,
649
+ "--paginate",
650
+ "--jq",
651
+ ".[].ref"
652
+ ]);
653
+ if (!res.ok) return void 0;
654
+ return res.stdout.split("\n").map((r) => r.trim().replace(/^refs\/tags\//, "")).filter((t) => t !== "" && inReleaseNamespace(t) && !t.startsWith("stack-v")).sort((a, b) => compareVersionTags(a, b) ?? 0).reverse();
655
+ }
656
+ async function isOurAskExeTag(ghRepo, tag) {
657
+ const { isOurIdentity } = await import("./ref-provenance-gate-M4AQO4OT.js");
658
+ return isOurIdentity(await tagCreatorEmail(ghRepo, tag));
659
+ }
660
+ async function deployedTagIsOurRelease(ghRepo, deployedTag, releaseTags) {
661
+ if (!releaseTags) return void 0;
662
+ if (!releaseTags.includes(deployedTag)) return false;
663
+ return isOurAskExeTag(ghRepo, deployedTag);
664
+ }
665
+ var MAX_CONTAINMENT_PROBES = 25;
666
+ var MAX_IDENTITY_SCAN = 120;
667
+ async function releaseTagContaining(ghRepo, commit, tags, knownOurTag) {
668
+ const from = knownOurTag ? tags.indexOf(knownOurTag) : -1;
669
+ const candidates = from >= 0 ? tags.slice(from) : tags;
670
+ const probes = [];
671
+ let scanned = 0;
672
+ for (const tag of candidates) {
673
+ if (probes.length >= MAX_CONTAINMENT_PROBES || scanned >= MAX_IDENTITY_SCAN) break;
674
+ scanned++;
675
+ if (await isOurAskExeTag(ghRepo, tag)) probes.push(tag);
676
+ }
677
+ if (probes.length === 0) return void 0;
678
+ let anyAnswered = false;
679
+ for (const tag of probes) {
680
+ const contains = await commitIsAncestorOfTag(ghRepo, commit, tag);
681
+ if (contains === true) return tag;
682
+ if (contains === false) anyAnswered = true;
683
+ }
684
+ if (!anyAnswered) return void 0;
685
+ if (candidates.length > scanned) {
686
+ process.stderr.write(
687
+ `[stack-generate-manifest] probed the ${probes.length} newest ASKEXE release tag(s) of ${ghRepo}; none contains ${commit} (${candidates.length - scanned} older candidate tag(s) not scanned \u2014 non-linear release history?)
688
+ `
689
+ );
690
+ }
691
+ return null;
692
+ }
618
693
  async function commitIsAncestorOfTag(ghRepo, commit, tag) {
619
694
  const res = await run("gh", [
620
695
  "api",
@@ -649,10 +724,21 @@ function loadDeployedState(filePath) {
649
724
  }
650
725
  return JSON.parse(readFileSync(filePath, "utf8"));
651
726
  }
727
+ function unsampledPinnedServices(specs, deployed) {
728
+ return specs.filter((spec) => spec.origin !== "upstream-pinned" && spec.ghRepo && spec.releaseLane !== "none").filter((spec) => {
729
+ const entry = deployed[spec.key];
730
+ if (entry?.ref) return false;
731
+ if (entry?.absent) return false;
732
+ return true;
733
+ }).map((spec) => spec.key);
734
+ }
652
735
  async function gatherFacts(spec, previous, deployed) {
653
736
  const facts = {
654
737
  previousImageRef: previous[spec.key],
655
- deployed: deployed[spec.key]
738
+ // An `{ absent: true }` marker records that the host is NOT running this
739
+ // service. It is an answer to the coverage question, not an image, so it
740
+ // must not flow into the deployed-provenance guards as one.
741
+ deployed: deployed[spec.key]?.ref ? deployed[spec.key] : void 0
656
742
  };
657
743
  if (spec.origin === "upstream-pinned" || !spec.ghRepo || spec.releaseLane === "none") return facts;
658
744
  facts.latestTag = await fetchLatestTag(spec.ghRepo);
@@ -669,11 +755,25 @@ async function gatherFacts(spec, previous, deployed) {
669
755
  `${facts.digestByCommit ? commitSource : source}@${resolved}`
670
756
  );
671
757
  facts.imageCommit = facts.labels["org.exe.git_sha"] ?? facts.labels["org.opencontainers.image.revision"];
672
- facts.commitIsAncestorOfTag = await commitIsAncestorOfTag(
673
- spec.ghRepo,
674
- facts.tagCommit,
675
- facts.latestTag
676
- );
758
+ facts.commitIsAncestorOfTag = facts.imageCommit ? await commitIsAncestorOfTag(spec.ghRepo, facts.imageCommit, facts.latestTag) : void 0;
759
+ if (facts.deployed?.ref) {
760
+ const releaseTags = await fetchReleaseTags(spec.ghRepo);
761
+ const deployedTag = tagOf(facts.deployed.ref);
762
+ const { inReleaseNamespace } = await import("./ref-provenance-gate-M4AQO4OT.js");
763
+ if (deployedTag && inReleaseNamespace(deployedTag)) {
764
+ facts.deployedTagExistsInGit = await deployedTagIsOurRelease(
765
+ spec.ghRepo,
766
+ deployedTag,
767
+ releaseTags
768
+ );
769
+ facts.deployedTagUpstreamOwned = facts.deployedTagExistsInGit === false && (releaseTags?.includes(deployedTag) ?? false);
770
+ } else {
771
+ facts.deployedTagExistsInGit = false;
772
+ facts.deployedTagIsNotARelease = true;
773
+ }
774
+ const revision = facts.deployed.revisionLabel?.trim();
775
+ facts.deployedRevisionReleaseTag = revision && releaseTags ? await releaseTagContaining(spec.ghRepo, revision, releaseTags, facts.latestTag) : void 0;
776
+ }
677
777
  return facts;
678
778
  }
679
779
  function printUsage() {
@@ -688,8 +788,9 @@ Options:
688
788
  --manifest <path> Manifest to update (default deploy/stack-manifests/v0.9.json)
689
789
  --compose <path> Compose file whose deployed surface must be fully covered
690
790
  --stack-version <x.y.z> Version for the new entry (default: patch-bump of latest)
691
- --deployed-state <path> JSON snapshot of what production runs (enables the
692
- deployed-provenance guard)
791
+ --deployed-state <path> JSON snapshot of what production runs. REQUIRED to
792
+ write; produce it with
793
+ scripts/capture-deployed-state.mjs > deployed.json
693
794
  --allow-downgrade <svc> Explicitly permit ONE named service to move backwards.
694
795
  Repeatable. The only override \u2014 it cannot manufacture
695
796
  provenance for a missing repo, label, or digest.
@@ -702,6 +803,13 @@ FAIL-CLOSED: the run REFUSES (and writes nothing) when a repo has no published
702
803
  release, a release has no published image, a digest cannot be resolved, an image
703
804
  lacks org.opencontainers.image.version/.revision, a candidate is LOWER than the
704
805
  current pin, or compose deploys a service the roster does not govern.
806
+
807
+ It also refuses when the image PRODUCTION IS RUNNING cannot be traced to source:
808
+ its release tag does not exist as a git tag in that service's repo, or no release
809
+ tag contains the commit the image says it was built from (bug 2c9bf186 \u2014
810
+ ghcr.io/askexe/exe-erp:v0.3.4 was serving traffic while git held only v0.3.1).
811
+ Those checks read the --deployed-state snapshot, which is why writing requires
812
+ one; unverifiable is treated as failing, never as passing.
705
813
  `);
706
814
  }
707
815
  async function runStackGenerateManifestCli(argv) {
@@ -725,6 +833,18 @@ async function runStackGenerateManifestCli(argv) {
725
833
  } else {
726
834
  console.warn(`[stack-generate-manifest] compose file not found (${opts.composePath}) \u2014 coverage NOT verified.`);
727
835
  }
836
+ if (!opts.dryRun && !opts.deployedStatePath) {
837
+ console.error(
838
+ `[stack-generate-manifest] REFUSED: --deployed-state is required to write a manifest.
839
+ Without a snapshot of what production runs, the deployed-provenance guards cannot run \u2014
840
+ and those are the guards that catch an image wearing a release tag that exists in no git
841
+ history (bug 2c9bf186: ghcr.io/askexe/exe-erp:v0.3.4 was live while git had only v0.3.1).
842
+ Capture one from the host:
843
+ EXE_STACK_SSH_HOST=<host> node scripts/capture-deployed-state.mjs > deployed.json
844
+ then re-run with --deployed-state deployed.json. Use --dry-run to resolve without writing.`
845
+ );
846
+ return 1;
847
+ }
728
848
  const previous = previousImageRefs(manifest);
729
849
  let deployed;
730
850
  try {
@@ -734,6 +854,29 @@ async function runStackGenerateManifestCli(argv) {
734
854
  return 1;
735
855
  }
736
856
  const specs = stackServiceSpecs(STACK_SERVICE_SPECS);
857
+ if (!opts.dryRun && Object.keys(deployed).length === 0) {
858
+ console.error(
859
+ `[stack-generate-manifest] REFUSED: the --deployed-state snapshot ${opts.deployedStatePath} describes no services.
860
+ An empty snapshot passes the flag check and then silently skips every deployed-provenance
861
+ guard \u2014 production would go unexamined and the manifest would be signed anyway.
862
+ Re-capture it against the real host:
863
+ EXE_STACK_SSH_HOST=<host> node scripts/capture-deployed-state.mjs > deployed.json`
864
+ );
865
+ return 1;
866
+ }
867
+ const unsampled = unsampledPinnedServices(specs, deployed);
868
+ if (!opts.dryRun && unsampled.length > 0) {
869
+ console.error(
870
+ `[stack-generate-manifest] REFUSED: the --deployed-state snapshot says nothing about: ${unsampled.join(", ")}.
871
+ Their deployed-provenance guards would silently not run, and the manifest would be signed
872
+ as if production had been checked. A real capture records every service it covers \u2014
873
+ one the host is not running appears as {"absent": true}, which is an answer. An entry that
874
+ is missing or empty is not.
875
+ Re-capture against the host (do not hand-edit the file):
876
+ EXE_STACK_SSH_HOST=<host> node scripts/capture-deployed-state.mjs > deployed.json`
877
+ );
878
+ return 1;
879
+ }
737
880
  const factsByKey = {};
738
881
  for (const spec of specs) {
739
882
  process.stderr.write(`[stack-generate-manifest] resolving ${spec.key}\u2026
@@ -799,12 +942,17 @@ if (isMainModule(import.meta.url) && process.argv[1]?.includes("stack-generate-m
799
942
  }
800
943
  export {
801
944
  commitIsAncestorOfTag,
945
+ deployedTagIsOurRelease,
802
946
  fetchLatestTag,
947
+ fetchReleaseTags,
803
948
  gatherFacts,
949
+ isOurAskExeTag,
804
950
  loadDeployedState,
805
951
  parseGenerateArgs,
806
952
  readProvenanceLabels,
953
+ releaseTagContaining,
807
954
  resolveImageDigest,
808
955
  resolveTagCommit,
809
- runStackGenerateManifestCli
956
+ runStackGenerateManifestCli,
957
+ unsampledPinnedServices
810
958
  };
@@ -1,14 +1,14 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  writeSignedStackManifest
4
- } from "./chunk-3UUX5OY4.js";
5
- import "./chunk-ZGYNKA3O.js";
4
+ } from "./chunk-5QKLWJ4Z.js";
5
+ import "./chunk-TT5BBVLX.js";
6
6
  import "./chunk-GHR4ZPJ7.js";
7
7
  import "./chunk-C5HUMAA7.js";
8
8
  import "./chunk-L25OAFOU.js";
9
- import "./chunk-L6RXG36J.js";
9
+ import "./chunk-Y2HD2YB7.js";
10
10
  import "./chunk-A7XLR3K7.js";
11
- import "./chunk-GQOEWNVM.js";
11
+ import "./chunk-4EG4DT4F.js";
12
12
  import "./chunk-ZIG7VPJV.js";
13
13
  import "./chunk-HSGBZSCA.js";
14
14
  import "./chunk-RH4AH3YB.js";
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  writeSignedStackManifest
4
- } from "./chunk-3UUX5OY4.js";
5
- import "./chunk-ZGYNKA3O.js";
4
+ } from "./chunk-5QKLWJ4Z.js";
5
+ import "./chunk-TT5BBVLX.js";
6
6
  import "./chunk-GHR4ZPJ7.js";
7
7
  import {
8
8
  assertPreflightGate,
@@ -10,9 +10,9 @@ import {
10
10
  } from "./chunk-LLZNPOGB.js";
11
11
  import "./chunk-C5HUMAA7.js";
12
12
  import "./chunk-L25OAFOU.js";
13
- import "./chunk-L6RXG36J.js";
13
+ import "./chunk-Y2HD2YB7.js";
14
14
  import "./chunk-A7XLR3K7.js";
15
- import "./chunk-GQOEWNVM.js";
15
+ import "./chunk-4EG4DT4F.js";
16
16
  import "./chunk-ZIG7VPJV.js";
17
17
  import "./chunk-HSGBZSCA.js";
18
18
  import "./chunk-RH4AH3YB.js";
@@ -328,7 +328,9 @@ function parseReleaseArgs(argv) {
328
328
  return flags;
329
329
  }
330
330
  async function git(repoPath, ...args) {
331
- const { stdout } = await execFile("git", ["-C", repoPath, ...args]);
331
+ const { stdout } = await execFile("git", ["-C", repoPath, ...args], {
332
+ env: { ...process.env, GIT_TERMINAL_PROMPT: "0" }
333
+ });
332
334
  return stdout.trim();
333
335
  }
334
336
  async function assertCleanWorkingTree(opts) {
@@ -471,7 +473,9 @@ function isCloneTargetSafe(targetPath, parentDir) {
471
473
  return resolvedTarget === resolvedParent || resolvedTarget.startsWith(resolvedParent + path2.sep);
472
474
  }
473
475
  var defaultCloneRunner = async (url, targetPath) => {
474
- await execFile("git", ["clone", url, targetPath]);
476
+ await execFile("git", ["clone", url, targetPath], {
477
+ env: { ...process.env, GIT_TERMINAL_PROMPT: "0" }
478
+ });
475
479
  };
476
480
  async function ensureRepoCloned(repo, parentDir = PARENT_DIR, runClone = defaultCloneRunner) {
477
481
  if (hasPackageJson(repo)) return false;
@@ -538,6 +542,19 @@ function rebaseImageTag(image, newVersion) {
538
542
  }
539
543
  return `${image}:v${newVersion}`;
540
544
  }
545
+ function imageRepoPath(image) {
546
+ const withoutDigest = image.split("@")[0] ?? image;
547
+ const lastColon = withoutDigest.lastIndexOf(":");
548
+ const lastSlash = withoutDigest.lastIndexOf("/");
549
+ return lastColon > lastSlash ? withoutDigest.slice(0, lastColon) : withoutDigest;
550
+ }
551
+ function mayRebaseComponent(component, componentImage, ownImage) {
552
+ if (component && typeof component === "object" && component.versionLockstep === true) {
553
+ return true;
554
+ }
555
+ if (typeof ownImage !== "string" || ownImage.length === 0) return false;
556
+ return imageRepoPath(componentImage) === imageRepoPath(ownImage);
557
+ }
541
558
  async function bumpVersions(changes, mode, dryRun) {
542
559
  for (const change of changes) {
543
560
  const newVersion = bumpVersion(change.currentVersion, mode);
@@ -558,15 +575,18 @@ async function bumpVersions(changes, mode, dryRun) {
558
575
  if (typeof srf.image === "string") {
559
576
  srf.image = rebaseImageTag(srf.image, newVersion);
560
577
  }
578
+ const ownImage = typeof srf.image === "string" ? srf.image : void 0;
561
579
  if (srf.components && typeof srf.components === "object") {
562
580
  const components = srf.components;
563
581
  for (const key of Object.keys(components)) {
564
582
  const val = components[key];
565
583
  if (typeof val === "string") {
566
- components[key] = rebaseImageTag(val, newVersion);
584
+ if (mayRebaseComponent(val, val, ownImage)) {
585
+ components[key] = rebaseImageTag(val, newVersion);
586
+ }
567
587
  } else if (val && typeof val === "object" && "image" in val) {
568
588
  const obj = val;
569
- if (typeof obj.image === "string") {
589
+ if (typeof obj.image === "string" && mayRebaseComponent(obj, obj.image, ownImage)) {
570
590
  obj.image = rebaseImageTag(obj.image, newVersion);
571
591
  }
572
592
  }
@@ -1466,8 +1486,11 @@ export {
1466
1486
  findPullRequestForHeadSha,
1467
1487
  findWorkflowRunForHeadSha,
1468
1488
  forceBuildRejection,
1489
+ imageRepoPath,
1469
1490
  isCloneTargetSafe,
1491
+ mayRebaseComponent,
1470
1492
  parseReleaseArgs,
1471
1493
  printOpenPrGate,
1494
+ rebaseImageTag,
1472
1495
  runStackRelease
1473
1496
  };
@@ -105,13 +105,13 @@ import {
105
105
  verifyStackManifestSignature,
106
106
  waitForHttpOk,
107
107
  warnUnmanagedManifestServices
108
- } from "./chunk-ZGYNKA3O.js";
108
+ } from "./chunk-TT5BBVLX.js";
109
109
  import "./chunk-GHR4ZPJ7.js";
110
110
  import "./chunk-C5HUMAA7.js";
111
111
  import "./chunk-L25OAFOU.js";
112
- import "./chunk-L6RXG36J.js";
112
+ import "./chunk-Y2HD2YB7.js";
113
113
  import "./chunk-A7XLR3K7.js";
114
- import "./chunk-GQOEWNVM.js";
114
+ import "./chunk-4EG4DT4F.js";
115
115
  import "./chunk-ZIG7VPJV.js";
116
116
  import "./chunk-HSGBZSCA.js";
117
117
  import "./chunk-RH4AH3YB.js";
@@ -1,15 +1,15 @@
1
1
  import {
2
2
  StewardGate
3
- } from "./chunk-SEQIPGLU.js";
4
- import "./chunk-TAMDAOCU.js";
3
+ } from "./chunk-IZLML47J.js";
4
+ import "./chunk-66CGXQUA.js";
5
5
  import "./chunk-BBMTVAE3.js";
6
6
  import "./chunk-TKDITWDN.js";
7
7
  import "./chunk-5YEUPUV4.js";
8
- import "./chunk-DSJI76XL.js";
8
+ import "./chunk-AHNVFBVB.js";
9
9
  import "./chunk-YYB5PMTK.js";
10
- import "./chunk-NJFJWQNN.js";
11
- import "./chunk-V3W3SATA.js";
12
- import "./chunk-JY5GAZYC.js";
10
+ import "./chunk-L5CGXEZC.js";
11
+ import "./chunk-CL4J4757.js";
12
+ import "./chunk-ZQEJ4IX2.js";
13
13
  import "./chunk-FXU7JOXK.js";
14
14
  import "./chunk-ZIG7VPJV.js";
15
15
  import "./chunk-HSGBZSCA.js";
@@ -1,76 +1,77 @@
1
1
  import {
2
2
  buildEmployeeBootBrief
3
- } from "./chunk-6VHOQ3IM.js";
3
+ } from "./chunk-HHAKXIKX.js";
4
4
  import "./chunk-HSFBNCNC.js";
5
- import "./chunk-32YV32VA.js";
6
- import "./chunk-WMEYJT4R.js";
7
- import "./chunk-XZ65ST2I.js";
5
+ import "./chunk-LTUA5EYI.js";
6
+ import "./chunk-6FG34V6D.js";
7
+ import "./chunk-QV5CQLQH.js";
8
8
  import "./chunk-QGGH7LOU.js";
9
- import "./chunk-TFKCERAK.js";
9
+ import "./chunk-HHT527PV.js";
10
10
  import "./chunk-VMHZSZQJ.js";
11
- import "./chunk-MXPNVSXI.js";
12
- import "./chunk-VZAFWPAY.js";
11
+ import "./chunk-CIEVY5TD.js";
12
+ import "./chunk-IK4344V5.js";
13
13
  import "./chunk-CHCA3ZM2.js";
14
14
  import "./chunk-OTVEIJUQ.js";
15
- import "./chunk-DN4YVV4Z.js";
15
+ import "./chunk-RSABKW6B.js";
16
16
  import {
17
17
  resolveAgentAttribution
18
- } from "./chunk-55BEFF4V.js";
18
+ } from "./chunk-5DF4Y6EC.js";
19
19
  import {
20
20
  tryMarkSubagentBriefInjected
21
21
  } from "./chunk-K4ESASPL.js";
22
22
  import "./chunk-5MOYSU5A.js";
23
- import "./chunk-4QCFFW2H.js";
23
+ import "./chunk-5QCIWWFA.js";
24
24
  import "./chunk-76CJBM36.js";
25
- import "./chunk-AKLQSC6W.js";
26
- import "./chunk-BTSWFMEH.js";
27
- import "./chunk-6RKKVPYF.js";
28
- import "./chunk-4EN3IZ3Q.js";
29
- import "./chunk-KI5PFRG6.js";
30
- import "./chunk-3KDCORDO.js";
25
+ import "./chunk-KI7O64XV.js";
26
+ import "./chunk-4YUGB637.js";
27
+ import "./chunk-64ODONK2.js";
28
+ import "./chunk-C2UN464N.js";
29
+ import "./chunk-ZKGWHT56.js";
31
30
  import "./chunk-WT4RI36X.js";
32
- import "./chunk-E23LNUWJ.js";
33
- import "./chunk-QAEWWYHL.js";
31
+ import "./chunk-TDF2XKLK.js";
34
32
  import "./chunk-EIKATSE4.js";
35
33
  import "./chunk-MJCSEIFI.js";
36
- import "./chunk-XH7YL7JM.js";
37
- import "./chunk-ORM7ZFKC.js";
34
+ import "./chunk-E23LNUWJ.js";
35
+ import "./chunk-ZMX22HSS.js";
38
36
  import "./chunk-VI4ATC6I.js";
39
37
  import "./chunk-A27Q27CT.js";
40
- import "./chunk-W75GTHR3.js";
38
+ import "./chunk-BZ546I4Q.js";
39
+ import "./chunk-3SRZNJKD.js";
41
40
  import "./chunk-AJIXH5JF.js";
42
- import "./chunk-7GE2EQ23.js";
41
+ import "./chunk-YGVAKKGJ.js";
43
42
  import "./chunk-GZOG2MAX.js";
44
43
  import "./chunk-AM7S2TY6.js";
45
- import "./chunk-6YVUR3OU.js";
44
+ import "./chunk-QR3BUMOS.js";
46
45
  import "./chunk-CVYC6DUW.js";
47
- import "./chunk-GOMQ7PVQ.js";
46
+ import "./chunk-WJC6AAJN.js";
48
47
  import "./chunk-4IK2K3B3.js";
49
- import "./chunk-NUK7EEN5.js";
48
+ import "./chunk-ZKJ5S23O.js";
49
+ import "./chunk-GPUOUUHA.js";
50
+ import "./chunk-BTSWFMEH.js";
50
51
  import "./chunk-ZG62LIK3.js";
51
- import "./chunk-EKYYMIVT.js";
52
+ import "./chunk-IMYGYIAI.js";
52
53
  import "./chunk-NLEW62VC.js";
53
- import "./chunk-SLLLOOEI.js";
54
+ import "./chunk-GPJIBLP4.js";
54
55
  import "./chunk-V3WLC5TJ.js";
55
- import "./chunk-JTVIANUB.js";
56
+ import "./chunk-AEUGIJDO.js";
56
57
  import "./chunk-HYZV25LY.js";
57
58
  import "./chunk-GJV3WDWM.js";
58
59
  import "./chunk-MP2AFCGL.js";
59
- import "./chunk-TAMDAOCU.js";
60
+ import "./chunk-66CGXQUA.js";
60
61
  import "./chunk-BBMTVAE3.js";
61
62
  import "./chunk-TKDITWDN.js";
62
63
  import "./chunk-5YEUPUV4.js";
63
- import "./chunk-DSJI76XL.js";
64
+ import "./chunk-AHNVFBVB.js";
64
65
  import "./chunk-YYB5PMTK.js";
65
- import "./chunk-NJFJWQNN.js";
66
- import "./chunk-V3W3SATA.js";
67
- import "./chunk-JY5GAZYC.js";
66
+ import "./chunk-L5CGXEZC.js";
67
+ import "./chunk-CL4J4757.js";
68
+ import "./chunk-ZQEJ4IX2.js";
68
69
  import "./chunk-FXU7JOXK.js";
69
70
  import "./chunk-WNBZJSQT.js";
70
71
  import "./chunk-HPXFKUGU.js";
71
- import "./chunk-L6RXG36J.js";
72
+ import "./chunk-Y2HD2YB7.js";
72
73
  import "./chunk-A7XLR3K7.js";
73
- import "./chunk-GQOEWNVM.js";
74
+ import "./chunk-4EG4DT4F.js";
74
75
  import "./chunk-A7JYF4RG.js";
75
76
  import "./chunk-ARX6TAGN.js";
76
77
  import "./chunk-ZIG7VPJV.js";
@@ -89,7 +90,7 @@ async function buildSubagentBootstrapContext(payload, options = {}) {
89
90
  return "";
90
91
  }
91
92
  try {
92
- const { fastDbInit } = await import("./fast-db-init-L2RGKJWH.js");
93
+ const { fastDbInit } = await import("./fast-db-init-GWUZ746B.js");
93
94
  await fastDbInit({ caller: "hook" });
94
95
  } catch {
95
96
  }
@@ -10,27 +10,27 @@ import {
10
10
  registerTriageBugReport,
11
11
  registerTriageFeatureRequest,
12
12
  registerTriageReview
13
- } from "./chunk-ZL4AGWAH.js";
14
- import "./chunk-5H47VHB7.js";
13
+ } from "./chunk-BNWWVYRN.js";
14
+ import "./chunk-UWX6MMCX.js";
15
15
  import "./chunk-4YNA3CM6.js";
16
- import "./chunk-55BEFF4V.js";
16
+ import "./chunk-5DF4Y6EC.js";
17
17
  import "./chunk-K4ESASPL.js";
18
- import "./chunk-4QCFFW2H.js";
18
+ import "./chunk-5QCIWWFA.js";
19
19
  import "./chunk-CVYC6DUW.js";
20
20
  import "./chunk-GJV3WDWM.js";
21
- import "./chunk-TAMDAOCU.js";
21
+ import "./chunk-66CGXQUA.js";
22
22
  import "./chunk-BBMTVAE3.js";
23
23
  import "./chunk-TKDITWDN.js";
24
24
  import "./chunk-5YEUPUV4.js";
25
- import "./chunk-DSJI76XL.js";
25
+ import "./chunk-AHNVFBVB.js";
26
26
  import "./chunk-YYB5PMTK.js";
27
- import "./chunk-NJFJWQNN.js";
28
- import "./chunk-V3W3SATA.js";
29
- import "./chunk-JY5GAZYC.js";
27
+ import "./chunk-L5CGXEZC.js";
28
+ import "./chunk-CL4J4757.js";
29
+ import "./chunk-ZQEJ4IX2.js";
30
30
  import "./chunk-FXU7JOXK.js";
31
- import "./chunk-L6RXG36J.js";
31
+ import "./chunk-Y2HD2YB7.js";
32
32
  import "./chunk-A7XLR3K7.js";
33
- import "./chunk-GQOEWNVM.js";
33
+ import "./chunk-4EG4DT4F.js";
34
34
  import "./chunk-ZIG7VPJV.js";
35
35
  import "./chunk-HSGBZSCA.js";
36
36
  import "./chunk-RH4AH3YB.js";
@@ -3,9 +3,9 @@ import {
3
3
  getOutboxStatus,
4
4
  queueSupportStatusUpdateSync,
5
5
  reconcileUpstreamStatus
6
- } from "./chunk-GSJLB6JI.js";
6
+ } from "./chunk-7THUQU44.js";
7
7
  import "./chunk-MMRUBN3I.js";
8
- import "./chunk-4QCFFW2H.js";
8
+ import "./chunk-5QCIWWFA.js";
9
9
  import "./chunk-MLKGABMK.js";
10
10
  export {
11
11
  flushSupportOutbox as flushBugReportOutbox,
@@ -2,20 +2,26 @@ import {
2
2
  DEFAULT_SWEEP_BUDGET_MS,
3
3
  DEFAULT_SWEEP_RESCHEDULE_DELAY_MS,
4
4
  createTimerPauseAccounting,
5
+ currentPauseStartMs,
6
+ isTimerPausedNow,
5
7
  recordTimerPauseMs,
6
8
  runBudgetedSweep,
7
9
  runWithTimerPauseAccounting,
8
10
  sweepPauseTotalMs,
9
- sweepTickBudgetMs
10
- } from "./chunk-KI5PFRG6.js";
11
+ sweepTickBudgetMs,
12
+ timerPauseIntervalsSince
13
+ } from "./chunk-ZKGWHT56.js";
11
14
  import "./chunk-MLKGABMK.js";
12
15
  export {
13
16
  DEFAULT_SWEEP_BUDGET_MS,
14
17
  DEFAULT_SWEEP_RESCHEDULE_DELAY_MS,
15
18
  createTimerPauseAccounting,
19
+ currentPauseStartMs,
20
+ isTimerPausedNow,
16
21
  recordTimerPauseMs,
17
22
  runBudgetedSweep,
18
23
  runWithTimerPauseAccounting,
19
24
  sweepPauseTotalMs,
20
- sweepTickBudgetMs
25
+ sweepTickBudgetMs,
26
+ timerPauseIntervalsSince
21
27
  };