@askexenow/exe-os 0.9.396 → 0.9.397

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 (409) hide show
  1. package/deploy/stack-manifests/v0.9.json +134 -1
  2. package/dist/.dist-verified.json +3 -3
  3. package/dist/{active-agent-6CIFLMKA.js → active-agent-GHNUSBYO.js} +4 -4
  4. package/dist/{active-agent-7OKWCTDR.js → active-agent-GOCTWSHD.js} +4 -4
  5. package/dist/{agent-defs-generator-PZJGE6PL.js → agent-defs-generator-KKXWCDQR.js} +3 -3
  6. package/dist/{agentic-ontology-JTPDKIML.js → agentic-ontology-5JFHYHEN.js} +1 -1
  7. package/dist/{artifact-backup-Q7T3GQFO.js → artifact-backup-FDU7UQ5Z.js} +3 -3
  8. package/dist/{backfill-metadata-7QLL3FSG.js → backfill-metadata-OIVQN3GF.js} +7 -7
  9. package/dist/{background-jobs-V3DZRFKU.js → background-jobs-DXZXRPSE.js} +5 -1
  10. package/dist/{backup-verify-SCFVPBZH.js → backup-verify-ZKTVXYOK.js} +5 -5
  11. package/dist/{behavior-injection-CHSQWES4.js → behavior-injection-S2NBCHRK.js} +10 -10
  12. package/dist/{behavior-promotion-TCYWUNKR.js → behavior-promotion-WZIKTD3C.js} +9 -9
  13. package/dist/{behaviors-5FRO36HG.js → behaviors-T2N3VJS3.js} +8 -8
  14. package/dist/bin/age-ontology-load.js +1 -1
  15. package/dist/bin/agentic-ontology-backfill.js +9 -9
  16. package/dist/bin/agentic-reflection-backfill.js +10 -10
  17. package/dist/bin/agentic-semantic-label.js +9 -9
  18. package/dist/bin/backfill-conversations.js +7 -7
  19. package/dist/bin/backfill-responses.js +7 -7
  20. package/dist/bin/backfill-vectors.js +8 -8
  21. package/dist/bin/bulk-sync-postgres.js +17 -17
  22. package/dist/bin/cc-doctor.js +9 -9
  23. package/dist/bin/cleanup-stale-review-tasks.js +18 -18
  24. package/dist/bin/cli.js +28 -28
  25. package/dist/bin/deferred-daemon-restart.js +101 -100
  26. package/dist/bin/exe-actions.js +1 -1
  27. package/dist/bin/exe-agent-config.js +3 -3
  28. package/dist/bin/exe-agent.js +11 -11
  29. package/dist/bin/exe-assign.js +8 -8
  30. package/dist/bin/exe-boot.js +38 -38
  31. package/dist/bin/exe-call.js +8 -8
  32. package/dist/bin/exe-cloud.js +18 -18
  33. package/dist/bin/exe-config-dump.js +3 -3
  34. package/dist/bin/exe-dispatch.js +19 -19
  35. package/dist/bin/exe-doctor.js +6 -6
  36. package/dist/bin/exe-export-behaviors.js +12 -12
  37. package/dist/bin/exe-forget.js +10 -10
  38. package/dist/bin/exe-gateway.js +9 -9
  39. package/dist/bin/exe-grant.js +6 -6
  40. package/dist/bin/exe-healthcheck.js +9 -9
  41. package/dist/bin/exe-heartbeat.js +24 -24
  42. package/dist/bin/exe-kill.js +23 -23
  43. package/dist/bin/exe-launch-agent.js +31 -31
  44. package/dist/bin/exe-mcp.js +5 -5
  45. package/dist/bin/exe-memory-reads.js +7 -7
  46. package/dist/bin/exe-new-employee.js +11 -11
  47. package/dist/bin/exe-os-mcp-proxy.js +5 -5
  48. package/dist/bin/exe-pending-messages.js +19 -19
  49. package/dist/bin/exe-pending-notifications.js +18 -18
  50. package/dist/bin/exe-pending-reviews.js +19 -19
  51. package/dist/bin/exe-rename.js +6 -6
  52. package/dist/bin/exe-review.js +22 -22
  53. package/dist/bin/exe-search.js +9 -9
  54. package/dist/bin/exe-session-cleanup.js +24 -24
  55. package/dist/bin/exe-settings.js +17 -17
  56. package/dist/bin/exe-start-codex.js +18 -18
  57. package/dist/bin/exe-start-opencode.js +16 -16
  58. package/dist/bin/exe-status.js +20 -20
  59. package/dist/bin/exe-support.js +4 -4
  60. package/dist/bin/exe-team.js +5 -5
  61. package/dist/bin/git-sweep.js +22 -22
  62. package/dist/bin/graph-backfill.js +9 -9
  63. package/dist/bin/graph-export.js +8 -8
  64. package/dist/bin/hooks-cli.js +1 -1
  65. package/dist/bin/import-history.js +11 -11
  66. package/dist/bin/install.js +105 -104
  67. package/dist/bin/intercom-check.js +5 -5
  68. package/dist/bin/mcp-sessions.js +2 -2
  69. package/dist/bin/orchestration-metrics.js +5 -5
  70. package/dist/bin/postgres-agentic-reflection-backfill.js +3 -3
  71. package/dist/bin/postgres-agentic-semantic-backfill.js +2 -2
  72. package/dist/bin/reconcile-backlog.js +2 -2
  73. package/dist/bin/registry-proxy.js +1 -1
  74. package/dist/bin/repair-document-chunks.js +7 -7
  75. package/dist/bin/scan-tasks.js +19 -19
  76. package/dist/bin/setup.js +2 -2
  77. package/dist/bin/shard-migrate.js +8 -8
  78. package/dist/bin/stack-update.js +8 -8
  79. package/dist/bin/verify-stack.js +1 -1
  80. package/dist/bin/vps-health-gate.js +1 -1
  81. package/dist/{boot-generation-HBXSYBPC.js → boot-generation-SJQ7JNY7.js} +4 -4
  82. package/dist/{boot-review-sections-66P5JMRV.js → boot-review-sections-G33ATPSN.js} +17 -17
  83. package/dist/{bug-landed-reconciler-QIOAKAPY.js → bug-landed-reconciler-C4UHLQKA.js} +7 -7
  84. package/dist/build-manifest.json +943 -938
  85. package/dist/{capability-cards-6BANN36W.js → capability-cards-KD4UW5DR.js} +3 -3
  86. package/dist/{capacity-monitor-TIKUMNDU.js → capacity-monitor-RKLRCGOG.js} +19 -19
  87. package/dist/{catchup-brief-EVJS7D6C.js → catchup-brief-UHPPUIRL.js} +24 -24
  88. package/dist/{chunk-UALXBUDX.js → chunk-2DDXCN4A.js} +3 -3
  89. package/dist/{chunk-LVFD2DVI.js → chunk-2QF657OK.js} +3 -3
  90. package/dist/{chunk-H4QZCG4C.js → chunk-2SDTYPJ5.js} +1 -1
  91. package/dist/{chunk-SXBLRCQY.js → chunk-2WMPGRZV.js} +4 -4
  92. package/dist/{chunk-OGJCUMSM.js → chunk-2YESHX5N.js} +1 -1
  93. package/dist/{chunk-XOPIR34P.js → chunk-36WZEH4Z.js} +1 -1
  94. package/dist/{chunk-G7BVAQVT.js → chunk-3MK5RGIP.js} +1 -1
  95. package/dist/{chunk-ZTFNKVOM.js → chunk-3ODUTQG5.js} +2 -2
  96. package/dist/{chunk-WFKZZSEB.js → chunk-3QYMH77Q.js} +1 -1
  97. package/dist/{chunk-A7XLR3K7.js → chunk-3R7UDPVR.js} +1 -2
  98. package/dist/{chunk-Y7BP2MO2.js → chunk-44FX5OK6.js} +1 -1
  99. package/dist/{chunk-T6C6RT6R.js → chunk-4BC5DUD7.js} +3 -3
  100. package/dist/{chunk-7UCCSSJO.js → chunk-4MFPPHG4.js} +1 -1
  101. package/dist/{chunk-K3EU7B72.js → chunk-4Y5EKT3D.js} +5 -5
  102. package/dist/{chunk-IVGAATAY.js → chunk-5523XPQ5.js} +4 -4
  103. package/dist/{chunk-PGLASTLI.js → chunk-5BCJKGB3.js} +5 -5
  104. package/dist/{chunk-5RDMJ325.js → chunk-5DFDHMOD.js} +5 -5
  105. package/dist/{chunk-U4GMOT4M.js → chunk-5TAJDCZY.js} +49 -12
  106. package/dist/{chunk-55M4DF76.js → chunk-5UC27XF6.js} +2 -2
  107. package/dist/{chunk-3OG5LZRK.js → chunk-62MT4SAM.js} +1 -1
  108. package/dist/{chunk-EHFPSOLD.js → chunk-6G7CTQBF.js} +4 -4
  109. package/dist/{chunk-L2AUCHHJ.js → chunk-7KMFHVKB.js} +9 -9
  110. package/dist/{chunk-K6NJ7FAZ.js → chunk-ABDYYZSP.js} +33 -8
  111. package/dist/{chunk-JKUCAMV4.js → chunk-AFDVI6KB.js} +1 -1
  112. package/dist/{chunk-MOQBMEMW.js → chunk-AFYSK7BX.js} +4 -4
  113. package/dist/{chunk-BX336WRX.js → chunk-AMSNTFS4.js} +1 -1
  114. package/dist/{chunk-YQJC5ETC.js → chunk-AQZ3WYPU.js} +2 -2
  115. package/dist/{chunk-WUQSEZWR.js → chunk-AUZ4VPKO.js} +1 -1
  116. package/dist/{chunk-XFF6SPWG.js → chunk-AXGHNNOO.js} +1 -1
  117. package/dist/{chunk-TFVMRQCZ.js → chunk-AZRKNXMB.js} +4 -4
  118. package/dist/{chunk-BREDG6EG.js → chunk-BIHUXE5T.js} +9 -5
  119. package/dist/{chunk-GHCF7J4Q.js → chunk-BLZ2LEZF.js} +3 -3
  120. package/dist/{chunk-4CGMGUDL.js → chunk-BMGX4GUS.js} +28 -8
  121. package/dist/{chunk-Q7WMOEKA.js → chunk-BNLXWJLD.js} +39 -21
  122. package/dist/{chunk-RPOIKNJZ.js → chunk-C44UWID5.js} +1 -1
  123. package/dist/{chunk-HHNGQIP3.js → chunk-D73NQPRC.js} +6 -6
  124. package/dist/{chunk-FJPCVXQX.js → chunk-DFIH6ZZF.js} +1 -1
  125. package/dist/{chunk-VN27TCZE.js → chunk-DFNCYH7G.js} +2 -2
  126. package/dist/{chunk-RFIAHXTF.js → chunk-DNCEIP3G.js} +1 -1
  127. package/dist/{chunk-V5KLIBUV.js → chunk-DOMITJOC.js} +1 -1
  128. package/dist/{chunk-BKKZN3DJ.js → chunk-DQQTUIQJ.js} +7 -7
  129. package/dist/{chunk-CEKNYT2D.js → chunk-E7IALVOP.js} +12 -12
  130. package/dist/{chunk-656JZVNV.js → chunk-EK5EYX37.js} +3 -3
  131. package/dist/{chunk-WEW4TRBL.js → chunk-EPKJANA5.js} +1 -1
  132. package/dist/{chunk-M7DI6JWD.js → chunk-EZ2JLFDT.js} +169 -169
  133. package/dist/{chunk-G3KSUXEA.js → chunk-F63FRP7L.js} +1 -1
  134. package/dist/{chunk-I4DBM5ME.js → chunk-F6OV7JP2.js} +1 -1
  135. package/dist/{chunk-7WDLUCHN.js → chunk-FQMLNMUZ.js} +3 -3
  136. package/dist/{chunk-QQJI7JGN.js → chunk-FZPJBU3F.js} +4 -4
  137. package/dist/{chunk-DXQIIZQC.js → chunk-GAUMGWSQ.js} +12 -12
  138. package/dist/{chunk-LEA7VKPU.js → chunk-GGSXOKK6.js} +10 -10
  139. package/dist/{chunk-6VMVQ3G7.js → chunk-GTW56AUB.js} +57 -12
  140. package/dist/{chunk-X5FCZYWK.js → chunk-GUZOREJ4.js} +2 -2
  141. package/dist/{chunk-D2ZII4AG.js → chunk-GW67QP3K.js} +6 -6
  142. package/dist/{chunk-LNCTMU7Y.js → chunk-HNVYH2WE.js} +2 -2
  143. package/dist/{chunk-4NOGWIBA.js → chunk-HSEBRWE2.js} +3 -3
  144. package/dist/{chunk-B6CBN6EF.js → chunk-HWP3WCLC.js} +51 -4
  145. package/dist/{chunk-KBCUHYHP.js → chunk-I3MPYHFM.js} +2 -2
  146. package/dist/{chunk-Y5ZD4CTB.js → chunk-ITV2CEFW.js} +1 -1
  147. package/dist/{chunk-BJ3ZQAIL.js → chunk-IV63ZWK6.js} +1 -1
  148. package/dist/{chunk-6FWHAROQ.js → chunk-JI7TFGJY.js} +3 -3
  149. package/dist/{chunk-EHDAWQ5P.js → chunk-JO7ZJTFL.js} +1 -1
  150. package/dist/{chunk-5BUJW46U.js → chunk-K5FSX6H6.js} +104 -10
  151. package/dist/{chunk-LRAMTS6U.js → chunk-KAY2CDFK.js} +7 -7
  152. package/dist/{chunk-ZEYBEJBX.js → chunk-KDRYMX6M.js} +11 -11
  153. package/dist/{chunk-DXIMITSY.js → chunk-KOOURQVV.js} +3 -3
  154. package/dist/{chunk-5UUHXDX6.js → chunk-KPDKZEVT.js} +2 -2
  155. package/dist/{chunk-DSZM7OHM.js → chunk-M65DE5CO.js} +1 -1
  156. package/dist/{chunk-WDLJZKJK.js → chunk-M7P6GCXS.js} +3 -3
  157. package/dist/{chunk-LGNDHTDP.js → chunk-MB3XK7YW.js} +1 -1
  158. package/dist/{chunk-MGPEY7I2.js → chunk-MKHUI5UB.js} +1 -1
  159. package/dist/{chunk-JSOXH5HW.js → chunk-NW6XAQLN.js} +2 -2
  160. package/dist/{chunk-5AGOX2XD.js → chunk-O22YLZXQ.js} +1 -1
  161. package/dist/{chunk-WAPCTGGB.js → chunk-O2INE7WD.js} +1 -1
  162. package/dist/{chunk-6Q3M7KZE.js → chunk-OJ2OGGK2.js} +3 -3
  163. package/dist/{chunk-UWLWYGJJ.js → chunk-P25NNTN3.js} +1 -1
  164. package/dist/{chunk-V4JWFJZR.js → chunk-P4C3BX2L.js} +16 -16
  165. package/dist/{chunk-EG4ZUF4A.js → chunk-PAYDZ6J3.js} +2 -2
  166. package/dist/{chunk-ONYDMXRV.js → chunk-PSB3QGYL.js} +1 -1
  167. package/dist/{chunk-4CB4VETH.js → chunk-PTI2NYAM.js} +2 -2
  168. package/dist/{chunk-2NW4LRDU.js → chunk-QIMM3CSI.js} +92 -12
  169. package/dist/{chunk-OODTK35C.js → chunk-QKH64COS.js} +5 -5
  170. package/dist/{chunk-JVK6JYR4.js → chunk-QR7VJ5WB.js} +1 -1
  171. package/dist/{chunk-KM7M4LKN.js → chunk-QRWGGJAA.js} +3 -3
  172. package/dist/{chunk-F5VP7K3C.js → chunk-QTVEBBQT.js} +59 -12
  173. package/dist/{chunk-SUZWRZE5.js → chunk-RAPFF7J7.js} +1 -1
  174. package/dist/{chunk-TQJMG65I.js → chunk-RC6Q5KSW.js} +2 -2
  175. package/dist/{chunk-ONMKHJJL.js → chunk-RGPEUXOE.js} +7 -4
  176. package/dist/{chunk-45R4367S.js → chunk-ROOST7ZU.js} +1 -1
  177. package/dist/{chunk-GHIMWZN4.js → chunk-ROQ6R3FV.js} +1 -1
  178. package/dist/{chunk-YG6MHFUP.js → chunk-RWDU3OKM.js} +2 -2
  179. package/dist/{chunk-TQEW3RJ3.js → chunk-SC3QNY3H.js} +2 -2
  180. package/dist/{chunk-INLY2LLN.js → chunk-SDYIUXW7.js} +1 -1
  181. package/dist/{chunk-PAJ7FUTI.js → chunk-SH5IEP2Q.js} +1 -1
  182. package/dist/{chunk-RPV6CHKA.js → chunk-SKWDDWHT.js} +4 -4
  183. package/dist/{chunk-W6W6ED2D.js → chunk-T4LKMZKF.js} +1 -1
  184. package/dist/{chunk-PE7RXZQE.js → chunk-TFKVXWVG.js} +5 -5
  185. package/dist/{chunk-NTWCFT5X.js → chunk-TM2BQ6PS.js} +3 -3
  186. package/dist/{chunk-V7NXFHZM.js → chunk-TQDEHRVD.js} +1 -1
  187. package/dist/{chunk-S2Q2RXYQ.js → chunk-TRBSWP2V.js} +1 -1
  188. package/dist/{chunk-UW5KXM4D.js → chunk-TTHUPNBU.js} +1 -1
  189. package/dist/{chunk-VH4IRABX.js → chunk-TWHPVYBU.js} +4 -4
  190. package/dist/{chunk-JC3LUYW6.js → chunk-U67KLIPZ.js} +1 -1
  191. package/dist/{chunk-UVEDFARJ.js → chunk-UBFKX2AN.js} +13 -13
  192. package/dist/{chunk-7INEFMVU.js → chunk-UNFHKOTF.js} +44 -15
  193. package/dist/{chunk-B2P6OX3V.js → chunk-VESYCD2K.js} +3 -3
  194. package/dist/{chunk-VV7D7KEX.js → chunk-VRPXCQV6.js} +1 -1
  195. package/dist/{chunk-X2X3IGZU.js → chunk-W4H2MZAS.js} +17 -5
  196. package/dist/{chunk-FNVZAK4C.js → chunk-WO6KY2SP.js} +6 -6
  197. package/dist/{chunk-SLRKZRLC.js → chunk-WOG5XT2P.js} +1 -1
  198. package/dist/{chunk-4UOEKQF3.js → chunk-XG7OHNPA.js} +6 -6
  199. package/dist/{chunk-5YAXBLZR.js → chunk-XHSCV3BM.js} +1 -1
  200. package/dist/{chunk-DDYKAJMS.js → chunk-XJRF26L5.js} +1 -1
  201. package/dist/{chunk-3CAKKEEY.js → chunk-XWOEPR2Q.js} +2 -2
  202. package/dist/{chunk-7C4YKCUK.js → chunk-XYB7GHGV.js} +1 -1
  203. package/dist/{chunk-V4RIHICU.js → chunk-Y2DTTZCV.js} +26 -26
  204. package/dist/{chunk-GPB6X2OI.js → chunk-YBUSK4GH.js} +1 -1
  205. package/dist/{chunk-5M4UNU6O.js → chunk-YLY66VLU.js} +3 -3
  206. package/dist/{chunk-ZSFFCRVI.js → chunk-YPSS2SHD.js} +2 -2
  207. package/dist/{chunk-SSGIMXA6.js → chunk-YYPHTYOV.js} +3 -3
  208. package/dist/{chunk-OWPOJ6OG.js → chunk-ZBUUFS5G.js} +1 -1
  209. package/dist/{chunk-6OQ2TRZK.js → chunk-ZFDQJVKH.js} +8 -2
  210. package/dist/{cleanup-graph-garbage-AXNCBW5B.js → cleanup-graph-garbage-EPZIDN7L.js} +8 -8
  211. package/dist/{cli-shutdown-HIZRMWKR.js → cli-shutdown-DM5YVHIP.js} +1 -1
  212. package/dist/{cloud-sync-command-XYKKRYHG.js → cloud-sync-command-FNOSXKNT.js} +2 -2
  213. package/dist/{cloud-sync-db-init-GJ322ZNM.js → cloud-sync-db-init-5DIULXS2.js} +1 -1
  214. package/dist/{cloud-sync-shutdown-K4XBDTDB.js → cloud-sync-shutdown-RTTZ3C53.js} +3 -3
  215. package/dist/{co-activation-AQXLWFBQ.js → co-activation-7D34HSWC.js} +3 -3
  216. package/dist/{co-occurrence-O67PD32I.js → co-occurrence-7JJMQ3GI.js} +6 -6
  217. package/dist/{consent-passphrase-DTOZ7LIP.js → consent-passphrase-ZNB3GYWB.js} +2 -2
  218. package/dist/{conversation-entity-extractor-VRL2EEZQ.js → conversation-entity-extractor-YSNOVYBN.js} +3 -3
  219. package/dist/{crdt-sync-RPCGSGIE.js → crdt-sync-MHQ6XSMO.js} +4 -4
  220. package/dist/{crm-webhook-4QADMY7C.js → crm-webhook-WLFDORDH.js} +2 -2
  221. package/dist/{cto-delegation-gate-6N2R2VA2.js → cto-delegation-gate-KD5POZYX.js} +17 -17
  222. package/dist/{daemon-orchestration-ASCAZ63R.js → daemon-orchestration-3LRZCT6E.js} +25 -22
  223. package/dist/{daemon-restart-circuit-breaker-CD4VMCU7.js → daemon-restart-circuit-breaker-PY2MZL7Z.js} +1 -1
  224. package/dist/{db-integrity-events-7NKWS5MT.js → db-integrity-events-6363LLDT.js} +1 -1
  225. package/dist/{db-restore-events-XYL6CGPC.js → db-restore-events-R5S7XTHX.js} +47 -11
  226. package/dist/{doc-graph-extractor-VVSMYOR3.js → doc-graph-extractor-KNX2SMZH.js} +6 -6
  227. package/dist/{documents-5WNSGY3Q.js → documents-2QWQETQJ.js} +8 -8
  228. package/dist/{dreaming-2TPLO3TO.js → dreaming-AQHABHGO.js} +22 -22
  229. package/dist/{employee-boot-brief-MYXATLSU.js → employee-boot-brief-XJDE3JSJ.js} +26 -26
  230. package/dist/{entity-boost-BW62CICZ.js → entity-boost-T6WZN7UG.js} +1 -1
  231. package/dist/{exe-drift-PFFRJJTZ.js → exe-drift-NRQ36UMA.js} +4 -4
  232. package/dist/{exe-export-LL5SV6P2.js → exe-export-ET4SWQ3K.js} +9 -9
  233. package/dist/{exe-import-LSQMDFDX.js → exe-import-DSMF6Z6O.js} +9 -9
  234. package/dist/{exe-key-266A5GJN.js → exe-key-UUMREJEU.js} +101 -100
  235. package/dist/{exe-org-T5DQXHGZ.js → exe-org-GV72LHO5.js} +36 -36
  236. package/dist/{exe-snapshot-LMMGFX7O.js → exe-snapshot-EQG3R45R.js} +25 -25
  237. package/dist/{fast-db-init-6MQDCHEB.js → fast-db-init-YRCNKGFD.js} +1 -1
  238. package/dist/{founder-context-6Q6OU7Q7.js → founder-context-3X5JFEQQ.js} +3 -3
  239. package/dist/{founder-monitor-envelope-RBSOSB6K.js → founder-monitor-envelope-OYRYJZBS.js} +4 -4
  240. package/dist/{fts-integrity-PHCKKOBC.js → fts-integrity-PL7TKYTM.js} +1 -1
  241. package/dist/gateway/index.js +21 -21
  242. package/dist/{gateway-client-4GHRSWHK.js → gateway-client-R3XZHUNA.js} +1 -1
  243. package/dist/{git-staleness-APYCKV4V.js → git-staleness-JWTUU3B7.js} +3 -3
  244. package/dist/{global-procedures-HYFE2UTQ.js → global-procedures-GUCIJGTG.js} +5 -5
  245. package/dist/{graph-auto-extract-LFXYAEY5.js → graph-auto-extract-SGRQ37NU.js} +6 -6
  246. package/dist/{graph-query-4F4D4NDH.js → graph-query-ABAIG6YK.js} +1 -1
  247. package/dist/{graph-rag-YZNY6Z3H.js → graph-rag-DB5SXSJ6.js} +3 -3
  248. package/dist/{hook-integrity-KNCDGZUD.js → hook-integrity-AGQSJJGP.js} +1 -1
  249. package/dist/{hook-prefetch-ZBUCJBJB.js → hook-prefetch-GUBRFD5N.js} +18 -18
  250. package/dist/hooks/bug-report-worker.js +22 -22
  251. package/dist/hooks/codex-stop-task-finalizer.js +24 -24
  252. package/dist/hooks/commit-complete.js +22 -22
  253. package/dist/hooks/error-recall.js +11 -11
  254. package/dist/hooks/exe-heartbeat-hook.js +5 -5
  255. package/dist/hooks/ingest-worker.js +7 -7
  256. package/dist/hooks/ingest.js +13 -13
  257. package/dist/hooks/instructions-loaded.js +7 -7
  258. package/dist/hooks/manifest.json +20 -20
  259. package/dist/hooks/notification.js +6 -6
  260. package/dist/hooks/post-compact.js +5 -5
  261. package/dist/hooks/post-tool-combined.js +13 -13
  262. package/dist/hooks/pre-compact.js +21 -21
  263. package/dist/hooks/pre-tool-use.js +2 -2
  264. package/dist/hooks/prompt-submit.js +39 -39
  265. package/dist/hooks/session-end.js +26 -26
  266. package/dist/hooks/session-start.js +18 -18
  267. package/dist/hooks/stop.js +24 -24
  268. package/dist/hooks/subagent-stop.js +23 -23
  269. package/dist/hooks/summary-worker.js +25 -25
  270. package/dist/index.js +29 -29
  271. package/dist/{installer-TNTAEKCO.js → installer-IRALYZ4O.js} +7 -7
  272. package/dist/{installer-MABZRBTF.js → installer-KC5BRKQD.js} +7 -7
  273. package/dist/{installer-ZWGREGIY.js → installer-W2REG4OT.js} +7 -7
  274. package/dist/{intercom-queue-UHL4MXLB.js → intercom-queue-WJ52Y7ZM.js} +17 -17
  275. package/dist/lib/cloud-sync.js +17 -17
  276. package/dist/lib/consolidation.js +9 -9
  277. package/dist/lib/crypto.js +3 -3
  278. package/dist/lib/database.js +3 -3
  279. package/dist/lib/db-backup.js +1 -1
  280. package/dist/lib/db-write-worker.js +3 -3
  281. package/dist/lib/db.js +3 -3
  282. package/dist/lib/device-registry.js +1 -1
  283. package/dist/lib/employee-templates.js +6 -6
  284. package/dist/lib/employees.js +3 -3
  285. package/dist/lib/exe-daemon.js +90 -90
  286. package/dist/lib/hybrid-search.js +9 -9
  287. package/dist/lib/identity.js +3 -3
  288. package/dist/lib/keychain.js +1 -1
  289. package/dist/lib/license.js +3 -3
  290. package/dist/lib/messaging.js +18 -18
  291. package/dist/lib/post-tool-memory.js +5 -5
  292. package/dist/lib/registry-proxy.js +1 -1
  293. package/dist/lib/reminders.js +4 -4
  294. package/dist/lib/schedules.js +8 -8
  295. package/dist/lib/session-registry.js +5 -5
  296. package/dist/lib/skill-learning.js +9 -9
  297. package/dist/lib/store.js +7 -7
  298. package/dist/lib/task-router.js +4 -4
  299. package/dist/lib/tasks.js +19 -19
  300. package/dist/lib/tmux-routing.js +17 -17
  301. package/dist/lib/token-spend.js +4 -4
  302. package/dist/lib/workflow-drift.js +270 -0
  303. package/dist/lib/ws-client.js +1 -1
  304. package/dist/{license-gate-PJVMRJFR.js → license-gate-YAA3BFTG.js} +4 -4
  305. package/dist/{license-recheck-5PXGSCSR.js → license-recheck-WOVNBY54.js} +1 -1
  306. package/dist/{license-sync-YCV3GMHN.js → license-sync-4GBRQ3NQ.js} +3 -3
  307. package/dist/mcp/register-tools.js +100 -99
  308. package/dist/mcp/server.js +100 -99
  309. package/dist/mcp/tools/complete-reminder.js +5 -5
  310. package/dist/mcp/tools/create-reminder.js +5 -5
  311. package/dist/mcp/tools/create-task.js +21 -21
  312. package/dist/mcp/tools/deactivate-behavior.js +10 -10
  313. package/dist/mcp/tools/list-reminders.js +5 -5
  314. package/dist/mcp/tools/list-tasks.js +21 -21
  315. package/dist/mcp/tools/send-message.js +20 -20
  316. package/dist/mcp/tools/update-task.js +20 -20
  317. package/dist/{mcp-http-config-TZLMIQDV.js → mcp-http-config-JJFHT7EU.js} +5 -5
  318. package/dist/{mcp-session-identity-FQUOB5SF.js → mcp-session-identity-AA24Y7M7.js} +17 -17
  319. package/dist/{memory-cards-BH53SM42.js → memory-cards-FE7CH766.js} +7 -7
  320. package/dist/{memory-graph-extractor-I6WXM5IC.js → memory-graph-extractor-XALPE33I.js} +7 -7
  321. package/dist/{memory-maintenance-CD2PUBDK.js → memory-maintenance-42VRD746.js} +1 -1
  322. package/dist/{memory-poisoning-defense-CC6RGH6M.js → memory-poisoning-defense-R7T4ZQBO.js} +3 -3
  323. package/dist/{memory-pressure-watchdog-CDEOMXDR.js → memory-pressure-watchdog-YR7OOVNY.js} +18 -18
  324. package/dist/{memory-reflection-VXFXG55L.js → memory-reflection-SU57VEBT.js} +7 -7
  325. package/dist/{memory-write-repository-NLQLH4UL.js → memory-write-repository-AZFMYNFE.js} +1 -1
  326. package/dist/{monitor-grants-6VWM3J3S.js → monitor-grants-EQOXKY44.js} +3 -3
  327. package/dist/{monitor-identity-YPFRT4AT.js → monitor-identity-QO7YCJ45.js} +2 -2
  328. package/dist/{notification-ledger-2GIT6AZ7.js → notification-ledger-BYBU427R.js} +18 -18
  329. package/dist/{notifications-LHDV4WKP.js → notifications-7EBPEORY.js} +17 -17
  330. package/dist/{orchestration-events-ABHTWWN4.js → orchestration-events-UWSAFL25.js} +4 -4
  331. package/dist/{orchestrator-N7FCY6H2.js → orchestrator-T3LSQK7S.js} +19 -19
  332. package/dist/{org-brief-session-O6YNFSX3.js → org-brief-session-4VXN7UFY.js} +15 -15
  333. package/dist/{org-consent-policy-FJH3KTAL.js → org-consent-policy-X4ZEAHIR.js} +5 -5
  334. package/dist/{org-join-55WN6YRL.js → org-join-2GRVJWCW.js} +11 -11
  335. package/dist/{org-key-admin-FFMICGMY.js → org-key-admin-Q54ZASNY.js} +13 -13
  336. package/dist/{org-key-epoch-RKOF3H2A.js → org-key-epoch-F3XYALXK.js} +5 -5
  337. package/dist/{org-key-pin-SMZS3GE3.js → org-key-pin-3ZKOEYQS.js} +3 -3
  338. package/dist/{org-membership-7VBJJBGO.js → org-membership-3EHM5TDB.js} +4 -4
  339. package/dist/{org-partner-config-7LOXIBW5.js → org-partner-config-N32CQSIW.js} +8 -8
  340. package/dist/{org-partner-runtime-CIFSQNOI.js → org-partner-runtime-S7Q4W5I5.js} +15 -15
  341. package/dist/{org-row-visibility-EBN7EI6C.js → org-row-visibility-IUOZSB56.js} +1 -1
  342. package/dist/{pipeline-router-VETNF3MF.js → pipeline-router-GCAJZN4H.js} +4 -4
  343. package/dist/{plan-limits-7NDDDRHR.js → plan-limits-N5TAWTKK.js} +7 -7
  344. package/dist/{pre-tool-use-impl-GIVQWE6Q.js → pre-tool-use-impl-VCHU3RAP.js} +33 -33
  345. package/dist/{project-name-5D6ZQNAY.js → project-name-2GN2XXVD.js} +4 -4
  346. package/dist/{projection-worker-4BB4ZN3S.js → projection-worker-3GKE4WEE.js} +2 -2
  347. package/dist/{prospective-memory-WUK4ZEVR.js → prospective-memory-TYA3TWQD.js} +3 -3
  348. package/dist/{push-notifications-UZQLJGEY.js → push-notifications-NKOXRWUY.js} +18 -18
  349. package/dist/{reproject-worktree-memories-XFUKN3ZC.js → reproject-worktree-memories-OPUWR2K2.js} +17 -17
  350. package/dist/{reranker-6F6Y7QHA.js → reranker-IYVEMKHW.js} +1 -1
  351. package/dist/{retrieval-health-SCFZCV7Q.js → retrieval-health-BIGTBGIP.js} +2 -2
  352. package/dist/{review-polling-CFDLKJE4.js → review-polling-ZLIBMKW4.js} +18 -18
  353. package/dist/runtime/index.js +21 -21
  354. package/dist/{seat-benefit-VDQJYJOB.js → seat-benefit-YEUQBNCS.js} +2 -2
  355. package/dist/{session-events-4SCVQUMA.js → session-events-H5T2UBTK.js} +18 -18
  356. package/dist/{session-kill-telemetry-OBBCVT3O.js → session-kill-telemetry-AHUOYQEM.js} +18 -18
  357. package/dist/{session-scope-LDRY5PBO.js → session-scope-KVIRKTX7.js} +17 -17
  358. package/dist/{setup-wizard-LS6BNHYK.js → setup-wizard-5VRFHYUR.js} +2 -2
  359. package/dist/{shard-manager-7X42DNFE.js → shard-manager-TPRWCONR.js} +2 -2
  360. package/dist/{skill-refinement-B4EGDBE2.js → skill-refinement-2IOY2TOP.js} +4 -4
  361. package/dist/{skill-retrieval-2ZHX6EQZ.js → skill-retrieval-55KMSROF.js} +11 -11
  362. package/dist/{skill-usage-DO6M6W5E.js → skill-usage-JCSBXOM6.js} +4 -4
  363. package/dist/{stack-generate-manifest-H2YBCYRW.js → stack-generate-manifest-HDZZ5ZRU.js} +5 -5
  364. package/dist/{stack-promote-WOATPAGM.js → stack-promote-OLIJI4GI.js} +5 -5
  365. package/dist/{stack-release-BAD4BTHF.js → stack-release-QBLVY2ZF.js} +6 -11
  366. package/dist/{stack-update-H3YXPL7Z.js → stack-update-JHPGK6AM.js} +4 -4
  367. package/dist/{steward-gate-T2XM2NE4.js → steward-gate-2YQ6DOO3.js} +4 -4
  368. package/dist/{subagent-brief-injection-5B2XWRZI.js → subagent-brief-injection-BKSHRUTQ.js} +28 -28
  369. package/dist/{support-bug-actions-GQYF373N.js → support-bug-actions-G2I77EPX.js} +4 -4
  370. package/dist/{support-inbox-WYWKDLFI.js → support-inbox-FP44VIA4.js} +14 -14
  371. package/dist/{task-enforcement-IIWZPEHF.js → task-enforcement-MJSY7ZZF.js} +18 -18
  372. package/dist/{task-request-inbox-GYK2XLSB.js → task-request-inbox-AZUGPSW6.js} +5 -5
  373. package/dist/{task-scope-YHXKRO2Y.js → task-scope-NF7JKUD7.js} +17 -17
  374. package/dist/{tasks-crud-BHG6IQ5Z.js → tasks-crud-SRP4GIL2.js} +17 -17
  375. package/dist/{tasks-notify-PX22TSMC.js → tasks-notify-VP3ZRTKA.js} +18 -18
  376. package/dist/{tasks-review-6BPGUXJB.js → tasks-review-ASOST3JT.js} +17 -17
  377. package/dist/{telemetry-upload-HCV4KRB6.js → telemetry-upload-KIMFENPR.js} +9 -9
  378. package/dist/{token-budget-YVIX2L2Y.js → token-budget-47HHAV2D.js} +4 -4
  379. package/dist/{tool-telemetry-JWI2CHI3.js → tool-telemetry-D6DUOQHB.js} +1 -1
  380. package/dist/tui/App.js +27 -27
  381. package/dist/{tui-data-E5EA34WJ.js → tui-data-3Y2DUC57.js} +21 -21
  382. package/dist/{update-support-JCUIC5J2.js → update-support-5G5P4ZGV.js} +12 -12
  383. package/dist/{whatsapp-XRTRUPFR.js → whatsapp-KGOFKMVE.js} +2 -2
  384. package/dist/{wiki-acl-PKJLSR6U.js → wiki-acl-CXFMQHKZ.js} +1 -1
  385. package/dist/{work-claims-BB6S6QU5.js → work-claims-O2WSV3EK.js} +4 -4
  386. package/dist/{work-state-heartbeat-O2SS2VWD.js → work-state-heartbeat-EPJZICCW.js} +1 -1
  387. package/dist/{workflow-engine-XWQS7VBY.js → workflow-engine-MVMZIOEQ.js} +2 -2
  388. package/dist/{worktree-F3TKPS5Z.js → worktree-DIXUIFXS.js} +5 -5
  389. package/dist/{worktree-sweep-OF4ST7IR.js → worktree-sweep-ZKPAO5EG.js} +10 -6
  390. package/package.json +2 -1
  391. package/release-notes.json +27 -7
  392. package/stack.release.json +3 -3
  393. /package/dist/{chunk-PKPJ62VF.js → chunk-3JRVKBF2.js} +0 -0
  394. /package/dist/{chunk-CEPUA7JC.js → chunk-BTIXHM2F.js} +0 -0
  395. /package/dist/{chunk-W3DHPCFX.js → chunk-FMCLWB6A.js} +0 -0
  396. /package/dist/{chunk-XDZWSK3F.js → chunk-GASLH556.js} +0 -0
  397. /package/dist/{chunk-MQNHXT54.js → chunk-GZL3DOGB.js} +0 -0
  398. /package/dist/{chunk-4D7SDPAB.js → chunk-MBZXKIG3.js} +0 -0
  399. /package/dist/{chunk-KY5XPFMA.js → chunk-OJ7SLC5P.js} +0 -0
  400. /package/dist/{chunk-CULFTILF.js → chunk-ONXR3HDH.js} +0 -0
  401. /package/dist/{chunk-MFRU5TLH.js → chunk-RICCASG5.js} +0 -0
  402. /package/dist/{chunk-I3F7MGSI.js → chunk-RYXW24OR.js} +0 -0
  403. /package/dist/{chunk-GNFWZ2MA.js → chunk-TXMGX6U2.js} +0 -0
  404. /package/dist/{chunk-NRR6VAG2.js → chunk-X7VWZ4ZI.js} +0 -0
  405. /package/dist/{chunk-W7S7AEVC.js → chunk-ZZBQO44I.js} +0 -0
  406. /package/dist/{core-memory-Z4FUMYA6.js → core-memory-LDOO2QBB.js} +0 -0
  407. /package/dist/{memory-isolation-PDFRPDVY.js → memory-isolation-JVIFSPYK.js} +0 -0
  408. /package/dist/{oauth-server-TM5XWRX3.js → oauth-server-N22SJWOH.js} +0 -0
  409. /package/dist/{project-boot-VFW3KDOY.js → project-boot-46E2KI2Y.js} +0 -0
@@ -24,6 +24,12 @@ function ensureDirs() {
24
24
  function now() {
25
25
  return (/* @__PURE__ */ new Date()).toISOString();
26
26
  }
27
+ function sleepSyncMs(ms) {
28
+ try {
29
+ Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, ms);
30
+ } catch {
31
+ }
32
+ }
27
33
  function isAlive(pid) {
28
34
  if (!pid || pid <= 0) return false;
29
35
  try {
@@ -33,15 +39,32 @@ function isAlive(pid) {
33
39
  return false;
34
40
  }
35
41
  }
42
+ var jobsFileReaderForTests = null;
43
+ function __setJobsFileReaderForTests(fn) {
44
+ jobsFileReaderForTests = fn;
45
+ }
46
+ var activeJobHeartbeatsForTests = /* @__PURE__ */ new Map();
47
+ function __triggerHeartbeatForTests(id) {
48
+ return activeJobHeartbeatsForTests.get(id)?.();
49
+ }
36
50
  function readJobsRaw() {
37
51
  ensureDirs();
38
52
  if (!existsSync(JOBS_FILE)) return [];
53
+ let raw;
39
54
  try {
40
- const parsed = JSON.parse(readFileSync(JOBS_FILE, "utf8"));
41
- return Array.isArray(parsed) ? parsed : [];
42
- } catch {
43
- return [];
55
+ raw = (jobsFileReaderForTests ?? ((p) => readFileSync(p, "utf8")))(JOBS_FILE);
56
+ } catch (err) {
57
+ if (err.code === "ENOENT") return [];
58
+ throw err;
44
59
  }
60
+ const parsed = JSON.parse(raw);
61
+ if (!Array.isArray(parsed)) {
62
+ throw new Error(`[background-jobs] ${JOBS_FILE} did not parse to an array of job records`);
63
+ }
64
+ return parsed;
65
+ }
66
+ function unreadableJobsNote(err) {
67
+ return `[background-jobs] ${JOBS_FILE} exists but could not be read (${err instanceof Error ? err.message : String(err)})`;
45
68
  }
46
69
  function writeJobsRaw(jobs) {
47
70
  ensureDirs();
@@ -126,7 +149,16 @@ function startManagedJob(options) {
126
149
  lowPriority
127
150
  };
128
151
  const upsert = (patch) => {
129
- const jobs = readJobsRaw().filter((j) => j.id !== id);
152
+ let jobs;
153
+ try {
154
+ jobs = readJobsRaw().filter((j) => j.id !== id);
155
+ } catch (err) {
156
+ process.stderr.write(
157
+ `${unreadableJobsNote(err)}; skipping this job-registry update rather than rewriting the file with only this job.
158
+ `
159
+ );
160
+ return false;
161
+ }
130
162
  Object.assign(record, patch, { updatedAt: now() });
131
163
  writeJobsRaw([...jobs, record]);
132
164
  const file = lockPath(options.type);
@@ -134,14 +166,46 @@ function startManagedJob(options) {
134
166
  writeFileSync(file, JSON.stringify({ pid: process.pid, jobId: id, updatedAt: record.updatedAt }, null, 2) + "\n");
135
167
  } catch {
136
168
  }
169
+ return true;
170
+ };
171
+ const isTerminalStatus = (s) => s !== "running" && s !== "stale";
172
+ let finalized = false;
173
+ const finalize = () => {
174
+ if (finalized) return;
175
+ finalized = true;
176
+ clearInterval(timer);
177
+ activeJobHeartbeatsForTests.delete(id);
178
+ releaseJobLock(options.type);
179
+ };
180
+ const heartbeatTick = () => {
181
+ const wrote = upsert({ lastHeartbeatAt: now() });
182
+ if (wrote && isTerminalStatus(record.status)) finalize();
183
+ return wrote;
137
184
  };
138
185
  upsert({});
139
- const timer = setInterval(() => upsert({ lastHeartbeatAt: now() }), 3e4);
186
+ const timer = setInterval(() => {
187
+ heartbeatTick();
188
+ }, 3e4);
140
189
  timer.unref?.();
190
+ activeJobHeartbeatsForTests.set(id, heartbeatTick);
191
+ const TERMINAL_WRITE_MAX_ATTEMPTS = 5;
192
+ const TERMINAL_WRITE_BACKOFF_MS = 30;
141
193
  const cleanup = (status, error) => {
142
- clearInterval(timer);
143
- upsert({ status, error, lastHeartbeatAt: now() });
144
- releaseJobLock(options.type);
194
+ let wrote = false;
195
+ for (let attempt = 0; attempt < TERMINAL_WRITE_MAX_ATTEMPTS && !wrote; attempt++) {
196
+ if (attempt > 0) sleepSyncMs(TERMINAL_WRITE_BACKOFF_MS * attempt);
197
+ wrote = upsert({ status, error, lastHeartbeatAt: now() });
198
+ }
199
+ if (!wrote) {
200
+ record.status = status;
201
+ if (error !== void 0) record.error = error;
202
+ process.stderr.write(
203
+ `[background-jobs] terminal status "${status}" for job ${id} could not be persisted after ${TERMINAL_WRITE_MAX_ATTEMPTS} attempts; leaving the heartbeat running so a later tick retries it.
204
+ `
205
+ );
206
+ return;
207
+ }
208
+ finalize();
145
209
  };
146
210
  process.once("SIGTERM", () => {
147
211
  cleanup("cancelled");
@@ -151,7 +215,7 @@ function startManagedJob(options) {
151
215
  cleanup("cancelled");
152
216
  process.exit(130);
153
217
  });
154
- process.once("exit", () => releaseJobLock(options.type));
218
+ process.once("exit", finalize);
155
219
  return {
156
220
  id,
157
221
  update(progress) {
@@ -248,7 +312,14 @@ function enforceBackgroundJobGuardrails(options = {}) {
248
312
  const cancelAt = options.cancelCpuPercent ?? 180;
249
313
  const cancelAfter = options.cancelAfterStrikes ?? 2;
250
314
  const staleAfter = options.heartbeatStaleMs ?? 5 * 6e4;
251
- const jobs = readJobsRaw();
315
+ let jobs;
316
+ try {
317
+ jobs = readJobsRaw();
318
+ } catch (err) {
319
+ process.stderr.write(`${unreadableJobsNote(err)}; no guardrail actions taken this pass.
320
+ `);
321
+ return [];
322
+ }
252
323
  const actions = [];
253
324
  let changed = false;
254
325
  const ts = now();
@@ -306,7 +377,14 @@ async function enforceBackgroundJobGuardrailsAsync(options = {}) {
306
377
  const cancelAt = options.cancelCpuPercent ?? 180;
307
378
  const cancelAfter = options.cancelAfterStrikes ?? 2;
308
379
  const staleAfter = options.heartbeatStaleMs ?? 5 * 6e4;
309
- const jobs = readJobsRaw();
380
+ let jobs;
381
+ try {
382
+ jobs = readJobsRaw();
383
+ } catch (err) {
384
+ process.stderr.write(`${unreadableJobsNote(err)}; no guardrail actions taken this pass.
385
+ `);
386
+ return [];
387
+ }
310
388
  const actions = [];
311
389
  let changed = false;
312
390
  const ts = now();
@@ -368,6 +446,8 @@ async function enforceBackgroundJobGuardrailsAsync(options = {}) {
368
446
  }
369
447
 
370
448
  export {
449
+ __setJobsFileReaderForTests,
450
+ __triggerHeartbeatForTests,
371
451
  listBackgroundJobs,
372
452
  acquireJobLock,
373
453
  releaseJobLock,
@@ -1,24 +1,24 @@
1
1
  import {
2
2
  recordSessionKill
3
- } from "./chunk-5M4UNU6O.js";
3
+ } from "./chunk-YLY66VLU.js";
4
4
  import {
5
5
  sessionScopeFilter,
6
6
  verifyPaneAtCapacity,
7
7
  writeNotification
8
- } from "./chunk-V4RIHICU.js";
8
+ } from "./chunk-Y2DTTZCV.js";
9
9
  import {
10
10
  listSessions
11
- } from "./chunk-FJPCVXQX.js";
11
+ } from "./chunk-DFIH6ZZF.js";
12
12
  import {
13
13
  getTransport
14
14
  } from "./chunk-VI4ATC6I.js";
15
15
  import {
16
16
  recordOrchestrationEventBestEffort
17
- } from "./chunk-OGJCUMSM.js";
17
+ } from "./chunk-2YESHX5N.js";
18
18
  import {
19
19
  getClient,
20
20
  isCoordinatorName
21
- } from "./chunk-DXQIIZQC.js";
21
+ } from "./chunk-GAUMGWSQ.js";
22
22
 
23
23
  // src/lib/capacity-monitor.ts
24
24
  var CAPACITY_PATTERNS = [
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  listReminders
3
- } from "./chunk-S2Q2RXYQ.js";
3
+ } from "./chunk-TRBSWP2V.js";
4
4
 
5
5
  // src/mcp/tools/list-reminders.ts
6
6
  import { z } from "zod";
@@ -3,16 +3,16 @@ import {
3
3
  getClient,
4
4
  isInitialized,
5
5
  loadEmployees
6
- } from "./chunk-DXQIIZQC.js";
6
+ } from "./chunk-GAUMGWSQ.js";
7
7
  import {
8
8
  checkLicense,
9
9
  isFeatureAllowed,
10
10
  readPersonalFreeGrandfatherState,
11
11
  resolveClientLimits
12
- } from "./chunk-6VMVQ3G7.js";
12
+ } from "./chunk-GTW56AUB.js";
13
13
  import {
14
14
  PLAN_LIMITS
15
- } from "./chunk-A7XLR3K7.js";
15
+ } from "./chunk-3R7UDPVR.js";
16
16
  import {
17
17
  EXE_AI_DIR
18
18
  } from "./chunk-MMS2HBRT.js";
@@ -4,7 +4,7 @@ import {
4
4
  getGitRootAsync,
5
5
  isWorktreeDirty,
6
6
  isWorktreeDirtyAsync
7
- } from "./chunk-UW5KXM4D.js";
7
+ } from "./chunk-TTHUPNBU.js";
8
8
 
9
9
  // src/lib/worktree-sweep.ts
10
10
  import { execFile } from "child_process";
@@ -193,17 +193,63 @@ async function detectMainBranch(repoRoot) {
193
193
  }
194
194
  return null;
195
195
  }
196
- async function isBranchMerged(repoRoot, branch, into) {
196
+ var MERGED_PR_BULK_LIMIT = 500;
197
+ async function ghBulkPrLookup(repoRoot, mainBranch) {
197
198
  try {
198
- const { stdout: merged } = await execFileAsync("git", ["branch", "--merged", into], {
199
+ const { stdout } = await execFileAsync(
200
+ "gh",
201
+ [
202
+ "pr",
203
+ "list",
204
+ "--state",
205
+ "merged",
206
+ "--base",
207
+ mainBranch,
208
+ "--json",
209
+ "headRefName,headRefOid,mergedAt,baseRefName",
210
+ "--limit",
211
+ String(MERGED_PR_BULK_LIMIT)
212
+ ],
213
+ { cwd: repoRoot, encoding: "utf8", timeout: GIT_TIMEOUT_MS }
214
+ );
215
+ return JSON.parse(stdout);
216
+ } catch {
217
+ return null;
218
+ }
219
+ }
220
+ async function buildMergedPrCache(repoRoot, mainBranch, lookup = ghBulkPrLookup) {
221
+ const records = await lookup(repoRoot, mainBranch);
222
+ if (records === null) return null;
223
+ const cache = /* @__PURE__ */ new Map();
224
+ for (const record of records) {
225
+ if (record.baseRefName !== mainBranch) continue;
226
+ const existing = cache.get(record.headRefName);
227
+ if (!existing || (record.mergedAt ?? "") >= (existing.mergedAt ?? "")) {
228
+ cache.set(record.headRefName, record);
229
+ }
230
+ }
231
+ return cache;
232
+ }
233
+ async function currentBranchTip(repoRoot, branch) {
234
+ try {
235
+ const { stdout } = await execFileAsync("git", ["rev-parse", "--verify", `refs/heads/${branch}^{commit}`], {
199
236
  cwd: repoRoot,
200
237
  encoding: "utf8",
201
238
  timeout: GIT_TIMEOUT_MS
202
239
  });
203
- return merged.split("\n").map((l) => l.replace(/^[*+]?\s+/, "").trim()).includes(branch);
240
+ return stdout.trim() || null;
204
241
  } catch {
205
- return false;
242
+ return null;
243
+ }
244
+ }
245
+ async function getBranchLandedState(repoRoot, branch, mainBranch, prCache = null) {
246
+ const record = prCache?.get(branch);
247
+ if (!record || record.baseRefName !== mainBranch) return "unknown";
248
+ const tip = await currentBranchTip(repoRoot, branch);
249
+ if (tip && record.headRefOid === tip) {
250
+ return "merged";
206
251
  }
252
+ return "unknown";
207
253
  }
208
254
  async function hasLiveTmuxSession(agentName) {
209
255
  try {
@@ -370,6 +416,7 @@ Archived by worktree-sweep after ${DIRTY_ORPHAN_MAX_AGE_MS / 864e5}-day dirty or
370
416
  async function sweepWorktrees(options = {}) {
371
417
  const dryRun = options.dryRun ?? false;
372
418
  const repoPaths = options.repoPaths ?? discoverRepoPaths();
419
+ const prLookup = options.prLookup;
373
420
  const result = {
374
421
  reposScanned: 0,
375
422
  removed: [],
@@ -384,6 +431,7 @@ async function sweepWorktrees(options = {}) {
384
431
  result.reposScanned++;
385
432
  const repoName = path.basename(repoRoot);
386
433
  const mainBranch = await detectMainBranch(repoRoot);
434
+ const prCache = mainBranch ? await buildMergedPrCache(repoRoot, mainBranch, prLookup) : null;
387
435
  if (!dryRun) {
388
436
  await pruneWorktreeRegistry(repoRoot);
389
437
  }
@@ -460,14 +508,11 @@ async function sweepWorktrees(options = {}) {
460
508
  });
461
509
  continue;
462
510
  }
463
- const isMerged = mainBranch ? await isBranchMerged(repoRoot, wt.branch, mainBranch) : false;
511
+ const landedState = mainBranch ? await getBranchLandedState(repoRoot, wt.branch, mainBranch, prCache) : "unknown";
512
+ const isMerged = landedState === "merged";
464
513
  if (dryRun) {
465
514
  result.removed.push({ repo: repoName, worktree: wtName, branch: wt.branch });
466
- if (isMerged || !mainBranch) {
467
- result.branchesDeleted.push({ repo: repoName, branch: wt.branch, remote: true });
468
- } else {
469
- result.branchesDeleted.push({ repo: repoName, branch: wt.branch, remote: false });
470
- }
515
+ result.branchesDeleted.push({ repo: repoName, branch: wt.branch, remote: isMerged });
471
516
  continue;
472
517
  }
473
518
  const removed = await removeWorktree(repoRoot, wt.path);
@@ -480,7 +525,7 @@ async function sweepWorktrees(options = {}) {
480
525
  `);
481
526
  const localDeleted = await deleteBranch(repoRoot, wt.branch);
482
527
  let remoteDeleted = false;
483
- if (localDeleted) {
528
+ if (localDeleted && isMerged) {
484
529
  remoteDeleted = await deleteRemoteBranch(repoRoot, wt.branch);
485
530
  }
486
531
  if (localDeleted) {
@@ -548,6 +593,8 @@ async function getWorktreeBranch(repoRoot, wtPath) {
548
593
  export {
549
594
  discoverRepoPaths,
550
595
  discoverRepoPathsAsync,
596
+ buildMergedPrCache,
597
+ getBranchLandedState,
551
598
  isWorktreePathOccupiedByCwd,
552
599
  sweepWorktrees,
553
600
  cleanupAgentWorktree
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  isCoordinatorRole
3
- } from "./chunk-DXQIIZQC.js";
3
+ } from "./chunk-GAUMGWSQ.js";
4
4
 
5
5
  // src/lib/task-router.ts
6
6
  import { randomUUID } from "crypto";
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  exportRawPublicKey,
3
3
  privateKeyFromScalar
4
- } from "./chunk-I4DBM5ME.js";
4
+ } from "./chunk-F6OV7JP2.js";
5
5
  import {
6
6
  getMasterKey
7
- } from "./chunk-5AGOX2XD.js";
7
+ } from "./chunk-O22YLZXQ.js";
8
8
 
9
9
  // src/lib/partner-seal-identity.ts
10
10
  import crypto from "crypto";
@@ -411,7 +411,7 @@ function assessObservation(raw) {
411
411
  if (observation.length < MIN_OBSERVATION_CHARS) {
412
412
  return deny2(
413
413
  "manual_observation_too_thin",
414
- "verification requires an observation describing the defect's absence"
414
+ "verification requires verification_observation describing the defect's absence"
415
415
  );
416
416
  }
417
417
  if (VERDICT_ONLY_OBSERVATION.test(observation) || HEDGED_OBSERVATION.test(observation)) {
@@ -530,6 +530,9 @@ function assessVerificationArtifact(raw, context = {}) {
530
530
  if (!str3(artifact.test_id)) {
531
531
  return deny2(
532
532
  "test_fix_missing_assertion",
533
+ // Bug 7dc91bf6: already fixed on main (this message names regression_test_id,
534
+ // the MCP tool parameter, instead of the wire artifact's internal `test_id`
535
+ // field) — kept as-is here rather than re-litigated.
533
536
  "defect_layer=test_harness requires regression_test_id \u2014 name the test whose behaviour is the evidence"
534
537
  );
535
538
  }
@@ -575,7 +578,7 @@ function assessVerificationArtifact(raw, context = {}) {
575
578
  const verifierResult = assessVerifier(artifact.verifier, context);
576
579
  if (!verifierResult.ok) return verifierResult;
577
580
  if (!str3(artifact.method)) {
578
- return deny2("artifact_malformed", "manual verification requires a method");
581
+ return deny2("artifact_malformed", "manual verification requires verification_method");
579
582
  }
580
583
  const observationResult = assessObservation(artifact.observation);
581
584
  if (!observationResult.ok) return observationResult;
@@ -1018,7 +1021,7 @@ function buildVerificationArtifact(request, context = {}) {
1018
1021
  );
1019
1022
  }
1020
1023
  const testId = (request.test_id ?? "").trim();
1021
- if (!testId) return fail("artifact_malformed", "regression_test requires test_id (e.g. 'tests/foo.test.ts::rejects empty scope')");
1024
+ if (!testId) return fail("artifact_malformed", "regression_test requires regression_test_id (e.g. 'tests/foo.test.ts::rejects empty scope')");
1022
1025
  const parentResult = (request.parent_result ?? "").trim();
1023
1026
  const fixResult = (request.fix_result ?? "").trim();
1024
1027
  if (parentResult !== "fail" && parentResult !== "pass" && parentResult !== "error") {
@@ -1046,7 +1049,7 @@ function buildVerificationArtifact(request, context = {}) {
1046
1049
  if (!verifierCheck.ok) return verifierCheck.result;
1047
1050
  const verifier = verifierCheck.verifier;
1048
1051
  const method = (request.method ?? "").trim();
1049
- if (!method) return fail("artifact_malformed", "manual verification requires a method someone else could repeat");
1052
+ if (!method) return fail("artifact_malformed", "manual verification requires verification_method \u2014 a method someone else could repeat");
1050
1053
  const observation = (request.observation ?? "").replace(/\s+/g, " ").trim();
1051
1054
  if (LOW_CONTENT_OBSERVATION.test(observation)) {
1052
1055
  return fail(
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getGlobalProceduresBlock
3
- } from "./chunk-X5FCZYWK.js";
3
+ } from "./chunk-GUZOREJ4.js";
4
4
  import {
5
5
  writePlatformReferenceFile
6
6
  } from "./chunk-IZWMWJZT.js";
@@ -6,7 +6,7 @@ import {
6
6
  baseAgentName,
7
7
  getEmployee,
8
8
  loadEmployeesSync
9
- } from "./chunk-DXQIIZQC.js";
9
+ } from "./chunk-GAUMGWSQ.js";
10
10
 
11
11
  // src/lib/project-name.ts
12
12
  import { execSync } from "child_process";
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  behaviorTruncationNotice
3
- } from "./chunk-DXIMITSY.js";
3
+ } from "./chunk-KOOURQVV.js";
4
4
  import {
5
5
  countActiveBehaviors,
6
6
  listBehaviors
7
- } from "./chunk-LNCTMU7Y.js";
7
+ } from "./chunk-HNVYH2WE.js";
8
8
  import {
9
9
  loadConfigSync
10
10
  } from "./chunk-MMS2HBRT.js";
@@ -3,14 +3,14 @@ import {
3
3
  } from "./chunk-IZWMWJZT.js";
4
4
  import {
5
5
  isGhostBehaviorRow
6
- } from "./chunk-LNCTMU7Y.js";
6
+ } from "./chunk-HNVYH2WE.js";
7
7
  import {
8
8
  IdentityConflictError,
9
9
  getClient,
10
10
  getIdentity,
11
11
  listIdentities,
12
12
  updateIdentity
13
- } from "./chunk-DXQIIZQC.js";
13
+ } from "./chunk-GAUMGWSQ.js";
14
14
  import {
15
15
  atomicWriteJsonSync
16
16
  } from "./chunk-HSGBZSCA.js";
@@ -2,7 +2,7 @@ import {
2
2
  grantsRegistryStatus,
3
3
  listGrants,
4
4
  revokeGrant
5
- } from "./chunk-7UCCSSJO.js";
5
+ } from "./chunk-4MFPPHG4.js";
6
6
  import {
7
7
  resolveExeDataDir
8
8
  } from "./chunk-NPXIS2RY.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  canonicalizeStackManifest
3
- } from "./chunk-6OQ2TRZK.js";
3
+ } from "./chunk-ZFDQJVKH.js";
4
4
 
5
5
  // src/lib/stack-manifest-write.ts
6
6
  import { readFileSync, statSync, writeFileSync } from "fs";
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  shutdownCli
3
- } from "./chunk-4D7SDPAB.js";
3
+ } from "./chunk-MBZXKIG3.js";
4
4
  import {
5
5
  fastDbInit
6
- } from "./chunk-NRR6VAG2.js";
6
+ } from "./chunk-X7VWZ4ZI.js";
7
7
  import {
8
8
  sessionScopeFilter
9
- } from "./chunk-V4RIHICU.js";
9
+ } from "./chunk-Y2DTTZCV.js";
10
10
  import {
11
11
  formatStatusAll,
12
12
  formatStatusDeep,
@@ -17,7 +17,7 @@ import {
17
17
  getClient,
18
18
  isCoordinatorRole,
19
19
  loadEmployees
20
- } from "./chunk-DXQIIZQC.js";
20
+ } from "./chunk-GAUMGWSQ.js";
21
21
  import {
22
22
  isMainModule
23
23
  } from "./chunk-6Y4B3QF6.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  processCRMEvent
3
- } from "./chunk-XDZWSK3F.js";
3
+ } from "./chunk-GASLH556.js";
4
4
 
5
5
  // src/gateway/adapters/crm-webhook.ts
6
6
  function parseTwentyWebhook(payload) {
@@ -21,7 +21,7 @@ import {
21
21
  import {
22
22
  formatDegradations,
23
23
  getRetrievalHealth
24
- } from "./chunk-4CGMGUDL.js";
24
+ } from "./chunk-BMGX4GUS.js";
25
25
  import {
26
26
  resolveAnthropicAuth
27
27
  } from "./chunk-VGMACSEV.js";
@@ -31,7 +31,7 @@ import {
31
31
  import {
32
32
  offloadReadIfMain,
33
33
  repairFtsTable
34
- } from "./chunk-DXQIIZQC.js";
34
+ } from "./chunk-GAUMGWSQ.js";
35
35
 
36
36
  // src/bin/exe-doctor.ts
37
37
  import os from "os";
@@ -680,7 +680,7 @@ function auditHookOwnership() {
680
680
  }
681
681
  async function auditShards() {
682
682
  try {
683
- const { auditShardHealth } = await import("./shard-manager-7X42DNFE.js");
683
+ const { auditShardHealth } = await import("./shard-manager-TPRWCONR.js");
684
684
  const report = await auditShardHealth();
685
685
  return {
686
686
  total: report.total,
@@ -1265,7 +1265,7 @@ function shouldFixShards(shards) {
1265
1265
  return shards.unreadable > 0 || shards.schemaMismatches > 0;
1266
1266
  }
1267
1267
  async function fixShards(dryRun) {
1268
- const { auditShardHealth } = await import("./shard-manager-7X42DNFE.js");
1268
+ const { auditShardHealth } = await import("./shard-manager-TPRWCONR.js");
1269
1269
  const report = await auditShardHealth({ repair: true, dryRun });
1270
1270
  return {
1271
1271
  total: report.total,
@@ -1340,7 +1340,7 @@ async function main(argv = process.argv.slice(2)) {
1340
1340
  console.log(formatRestartReport(restartReport));
1341
1341
  return emptyAuditReport();
1342
1342
  }
1343
- const { fastDbInit } = await import("./fast-db-init-6MQDCHEB.js");
1343
+ const { fastDbInit } = await import("./fast-db-init-YRCNKGFD.js");
1344
1344
  const client = await fastDbInit();
1345
1345
  const report = await runAudit(client, flags);
1346
1346
  console.log(formatReport(report, flags));
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  withScopedReadWindow
3
- } from "./chunk-YQJC5ETC.js";
3
+ } from "./chunk-AQZ3WYPU.js";
4
4
  import {
5
5
  requireOrgPartnerBinding,
6
6
  resolvePartnerIdentities
7
- } from "./chunk-K3EU7B72.js";
7
+ } from "./chunk-4Y5EKT3D.js";
8
8
  import {
9
9
  allocateOutboundSeq,
10
10
  approveBriefManually,
@@ -22,7 +22,7 @@ import {
22
22
  sealMailboxEnvelope,
23
23
  unrecordedText,
24
24
  verifyManifest
25
- } from "./chunk-HHNGQIP3.js";
25
+ } from "./chunk-D73NQPRC.js";
26
26
  import {
27
27
  queueMailboxDeposit
28
28
  } from "./chunk-3FGBBJYM.js";
@@ -2,7 +2,7 @@ import {
2
2
  deleteKeychainSecret,
3
3
  getKeychainSecret,
4
4
  setKeychainSecret
5
- } from "./chunk-5AGOX2XD.js";
5
+ } from "./chunk-O22YLZXQ.js";
6
6
 
7
7
  // src/lib/consent-passphrase.ts
8
8
  import crypto from "crypto";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getClient
3
- } from "./chunk-DXQIIZQC.js";
3
+ } from "./chunk-GAUMGWSQ.js";
4
4
  import {
5
5
  loadConfig
6
6
  } from "./chunk-MMS2HBRT.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  recordOrchestrationEventBestEffort
3
- } from "./chunk-OGJCUMSM.js";
3
+ } from "./chunk-2YESHX5N.js";
4
4
 
5
5
  // src/lib/worktree.ts
6
6
  import { execFile, execFileSync, execSync } from "child_process";
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  buildSystemStateMemoryTypeExclusion
3
- } from "./chunk-V4JWFJZR.js";
3
+ } from "./chunk-P4C3BX2L.js";
4
4
  import {
5
5
  sessionScopeFilter
6
- } from "./chunk-V4RIHICU.js";
6
+ } from "./chunk-Y2DTTZCV.js";
7
7
  import {
8
8
  getClient,
9
9
  getIdentity
10
- } from "./chunk-DXQIIZQC.js";
10
+ } from "./chunk-GAUMGWSQ.js";
11
11
  import {
12
12
  getEmotionalBaseline
13
13
  } from "./chunk-WAAGVFFN.js";
@@ -646,7 +646,7 @@ var DreamingEngine = class {
646
646
  }
647
647
  let overdueProspective = [];
648
648
  try {
649
- const { getOverdueProspective, completeProspective } = await import("./prospective-memory-WUK4ZEVR.js");
649
+ const { getOverdueProspective, completeProspective } = await import("./prospective-memory-TYA3TWQD.js");
650
650
  const overdue = await getOverdueProspective(agentId);
651
651
  overdueProspective = overdue.map((o) => ({
652
652
  id: o.id,
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  executeAction,
3
3
  substituteTemplate
4
- } from "./chunk-XDZWSK3F.js";
4
+ } from "./chunk-GASLH556.js";
5
5
 
6
6
  // src/automation/workflow-engine.ts
7
7
  import { randomUUID } from "crypto";