@askexenow/exe-os 0.9.396 → 0.9.398

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 +400 -1
  2. package/dist/.dist-verified.json +3 -3
  3. package/dist/{active-agent-7OKWCTDR.js → active-agent-5DC75ZP3.js} +4 -4
  4. package/dist/{active-agent-6CIFLMKA.js → active-agent-Q7AOGCY5.js} +4 -4
  5. package/dist/{agent-defs-generator-PZJGE6PL.js → agent-defs-generator-TBR4P3XR.js} +3 -3
  6. package/dist/{agentic-ontology-JTPDKIML.js → agentic-ontology-UFSQDLCW.js} +1 -1
  7. package/dist/{artifact-backup-Q7T3GQFO.js → artifact-backup-VWQ6EYNO.js} +3 -3
  8. package/dist/{backfill-metadata-7QLL3FSG.js → backfill-metadata-BVW4KXY3.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-6UIMP3QY.js} +5 -5
  11. package/dist/{behavior-injection-CHSQWES4.js → behavior-injection-MVL5PXIH.js} +10 -10
  12. package/dist/{behavior-promotion-TCYWUNKR.js → behavior-promotion-ZQSQLBNO.js} +9 -9
  13. package/dist/{behaviors-5FRO36HG.js → behaviors-S6ANWJTO.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-ASJLGXK2.js} +4 -4
  82. package/dist/{boot-review-sections-66P5JMRV.js → boot-review-sections-B34SK4LE.js} +17 -17
  83. package/dist/{bug-landed-reconciler-QIOAKAPY.js → bug-landed-reconciler-P53SGWZG.js} +7 -7
  84. package/dist/build-manifest.json +968 -963
  85. package/dist/{capability-cards-6BANN36W.js → capability-cards-WMK2P2O2.js} +3 -3
  86. package/dist/{capacity-monitor-TIKUMNDU.js → capacity-monitor-WSRFY3UK.js} +19 -19
  87. package/dist/{catchup-brief-EVJS7D6C.js → catchup-brief-CE3FP6SL.js} +24 -24
  88. package/dist/{chunk-BKKZN3DJ.js → chunk-2CGKFJ3Q.js} +7 -7
  89. package/dist/{chunk-T6C6RT6R.js → chunk-2FMLMHJE.js} +3 -3
  90. package/dist/{chunk-GHCF7J4Q.js → chunk-2YLN5M5K.js} +3 -3
  91. package/dist/{chunk-M7DI6JWD.js → chunk-33D76SCE.js} +169 -169
  92. package/dist/{chunk-LGNDHTDP.js → chunk-342X5YQB.js} +1 -1
  93. package/dist/{chunk-KM7M4LKN.js → chunk-3HV3TRBB.js} +3 -3
  94. package/dist/{chunk-RFIAHXTF.js → chunk-3QGQG2CR.js} +1 -1
  95. package/dist/{chunk-A7XLR3K7.js → chunk-3R7UDPVR.js} +1 -2
  96. package/dist/{chunk-L2AUCHHJ.js → chunk-4VD4CIHX.js} +9 -9
  97. package/dist/{chunk-JSOXH5HW.js → chunk-5ID4DJ2E.js} +2 -2
  98. package/dist/{chunk-QQJI7JGN.js → chunk-5OG5UQKP.js} +4 -4
  99. package/dist/{chunk-U4GMOT4M.js → chunk-5TAJDCZY.js} +49 -12
  100. package/dist/{chunk-656JZVNV.js → chunk-5VZDXC7N.js} +3 -3
  101. package/dist/{chunk-WAPCTGGB.js → chunk-6X4TCYMU.js} +1 -1
  102. package/dist/{chunk-SLRKZRLC.js → chunk-6YJKBKSI.js} +1 -1
  103. package/dist/{chunk-LVFD2DVI.js → chunk-7ECQZXUE.js} +3 -3
  104. package/dist/{chunk-TQEW3RJ3.js → chunk-7PNTI56G.js} +2 -2
  105. package/dist/{chunk-V4RIHICU.js → chunk-7QYXNSKT.js} +26 -26
  106. package/dist/{chunk-5BUJW46U.js → chunk-A6GDEHRQ.js} +104 -10
  107. package/dist/{chunk-Q7WMOEKA.js → chunk-AIOP4BF6.js} +39 -21
  108. package/dist/{chunk-4NOGWIBA.js → chunk-AWERP5SW.js} +3 -3
  109. package/dist/{chunk-G3KSUXEA.js → chunk-B4OZKTIS.js} +1 -1
  110. package/dist/{chunk-V4JWFJZR.js → chunk-B7T7I5BK.js} +16 -16
  111. package/dist/{chunk-TQJMG65I.js → chunk-BI6SK67J.js} +2 -2
  112. package/dist/{chunk-B2P6OX3V.js → chunk-BTN6AEKU.js} +3 -3
  113. package/dist/{chunk-OGJCUMSM.js → chunk-C3CRGIS4.js} +1 -1
  114. package/dist/{chunk-5UUHXDX6.js → chunk-C4OMBSRB.js} +2 -2
  115. package/dist/{chunk-PAJ7FUTI.js → chunk-CBLI4ANF.js} +1 -1
  116. package/dist/{chunk-CEKNYT2D.js → chunk-CBUFW5J2.js} +12 -12
  117. package/dist/{chunk-JVK6JYR4.js → chunk-CIFHEPMI.js} +1 -1
  118. package/dist/{chunk-G7BVAQVT.js → chunk-CIRZLORZ.js} +1 -1
  119. package/dist/{chunk-YG6MHFUP.js → chunk-CN7IOETW.js} +2 -2
  120. package/dist/{chunk-DSZM7OHM.js → chunk-CTMEIRJQ.js} +1 -1
  121. package/dist/{chunk-PGLASTLI.js → chunk-DKD6JKIQ.js} +5 -5
  122. package/dist/{chunk-BJ3ZQAIL.js → chunk-DTUQGAD4.js} +1 -1
  123. package/dist/{chunk-HHNGQIP3.js → chunk-DUPQMNK6.js} +6 -6
  124. package/dist/{chunk-5RDMJ325.js → chunk-DVFVOT42.js} +5 -5
  125. package/dist/{chunk-UWLWYGJJ.js → chunk-E72V3JWD.js} +1 -1
  126. package/dist/{chunk-Y7BP2MO2.js → chunk-EI53C646.js} +1 -1
  127. package/dist/{chunk-5M4UNU6O.js → chunk-ENEYMKL6.js} +3 -3
  128. package/dist/{chunk-VV7D7KEX.js → chunk-F4C3X66B.js} +1 -1
  129. package/dist/{chunk-DDYKAJMS.js → chunk-FCQK3CNA.js} +1 -1
  130. package/dist/{chunk-K6NJ7FAZ.js → chunk-GER43BIE.js} +257 -15
  131. package/dist/{chunk-7C4YKCUK.js → chunk-GOQ5EE67.js} +1 -1
  132. package/dist/{chunk-KBCUHYHP.js → chunk-HRLCAV2S.js} +2 -2
  133. package/dist/{chunk-B6CBN6EF.js → chunk-HWP3WCLC.js} +51 -4
  134. package/dist/{chunk-OWPOJ6OG.js → chunk-HWZZNUJJ.js} +1 -1
  135. package/dist/{chunk-55M4DF76.js → chunk-I3OXYKU7.js} +2 -2
  136. package/dist/{chunk-BX336WRX.js → chunk-IACMGMGW.js} +1 -1
  137. package/dist/{chunk-MGPEY7I2.js → chunk-ICAGVBZ4.js} +1 -1
  138. package/dist/{chunk-V5KLIBUV.js → chunk-IDFOZ6YH.js} +1 -1
  139. package/dist/{chunk-MOQBMEMW.js → chunk-J54BOM4G.js} +4 -4
  140. package/dist/{chunk-SSGIMXA6.js → chunk-JDRIUUMY.js} +3 -3
  141. package/dist/{chunk-WUQSEZWR.js → chunk-JK5XB7Z5.js} +1 -1
  142. package/dist/{chunk-ZEYBEJBX.js → chunk-JWA3Y6PE.js} +11 -11
  143. package/dist/{chunk-7UCCSSJO.js → chunk-KUJODN4N.js} +1 -1
  144. package/dist/{chunk-EHDAWQ5P.js → chunk-L5TOPOTW.js} +1 -1
  145. package/dist/{chunk-RPOIKNJZ.js → chunk-LGP67CBT.js} +1 -1
  146. package/dist/{chunk-LEA7VKPU.js → chunk-LHNMKY7N.js} +10 -10
  147. package/dist/{chunk-Y5ZD4CTB.js → chunk-MBF7NXKP.js} +1 -1
  148. package/dist/{chunk-ONYDMXRV.js → chunk-MT3P3B2L.js} +1 -1
  149. package/dist/{chunk-EHFPSOLD.js → chunk-MYGXI2UC.js} +4 -4
  150. package/dist/{chunk-5YAXBLZR.js → chunk-NCKHGVDK.js} +1 -1
  151. package/dist/{chunk-SUZWRZE5.js → chunk-NITCVCRV.js} +1 -1
  152. package/dist/{chunk-DXIMITSY.js → chunk-NJG3YVZI.js} +3 -3
  153. package/dist/{chunk-I4DBM5ME.js → chunk-NQG5CD3V.js} +1 -1
  154. package/dist/{chunk-3OG5LZRK.js → chunk-NUHCZF6C.js} +1 -1
  155. package/dist/{chunk-4CGMGUDL.js → chunk-OLRMWNOW.js} +28 -8
  156. package/dist/{chunk-6FWHAROQ.js → chunk-OSLT3VAE.js} +3 -3
  157. package/dist/{chunk-EG4ZUF4A.js → chunk-OURGAT7A.js} +2 -2
  158. package/dist/{chunk-VN27TCZE.js → chunk-OZMKDFJU.js} +2 -2
  159. package/dist/{chunk-ZTFNKVOM.js → chunk-P47UW3N5.js} +2 -2
  160. package/dist/{chunk-WDLJZKJK.js → chunk-POMZGFDP.js} +3 -3
  161. package/dist/{chunk-SXBLRCQY.js → chunk-PSWYKWKN.js} +4 -4
  162. package/dist/{chunk-RPV6CHKA.js → chunk-PTAJKZBG.js} +4 -4
  163. package/dist/{chunk-FJPCVXQX.js → chunk-Q6X5EVH5.js} +1 -1
  164. package/dist/{chunk-LNCTMU7Y.js → chunk-Q7YT7RGZ.js} +2 -2
  165. package/dist/{chunk-2NW4LRDU.js → chunk-QIMM3CSI.js} +92 -12
  166. package/dist/{chunk-UALXBUDX.js → chunk-QJI5LPRJ.js} +3 -3
  167. package/dist/{chunk-S2Q2RXYQ.js → chunk-QX7FJJBT.js} +1 -1
  168. package/dist/{chunk-H4QZCG4C.js → chunk-R7F3UARN.js} +1 -1
  169. package/dist/{chunk-NTWCFT5X.js → chunk-R7JQKULM.js} +3 -3
  170. package/dist/{chunk-UW5KXM4D.js → chunk-RCMXCNMC.js} +1 -1
  171. package/dist/{chunk-ONMKHJJL.js → chunk-RGPEUXOE.js} +7 -4
  172. package/dist/{chunk-3CAKKEEY.js → chunk-RSOHC3JR.js} +2 -2
  173. package/dist/{chunk-XOPIR34P.js → chunk-RUAEYGEH.js} +1 -1
  174. package/dist/{chunk-GHIMWZN4.js → chunk-SQE2PHXK.js} +1 -1
  175. package/dist/{chunk-FNVZAK4C.js → chunk-SVORDFGR.js} +6 -6
  176. package/dist/{chunk-PE7RXZQE.js → chunk-SZHPUFK7.js} +5 -5
  177. package/dist/{chunk-LRAMTS6U.js → chunk-TLAW77QU.js} +7 -7
  178. package/dist/{chunk-VH4IRABX.js → chunk-TRH6E2HV.js} +4 -4
  179. package/dist/{chunk-GPB6X2OI.js → chunk-UAPWTGRP.js} +1 -1
  180. package/dist/{chunk-4CB4VETH.js → chunk-UI2MRWQC.js} +2 -2
  181. package/dist/{chunk-WFKZZSEB.js → chunk-UI5HQJK5.js} +1 -1
  182. package/dist/{chunk-45R4367S.js → chunk-ULBPH7SD.js} +1 -1
  183. package/dist/{chunk-X5FCZYWK.js → chunk-ULORKGXX.js} +2 -2
  184. package/dist/{chunk-D2ZII4AG.js → chunk-UMXUJTSQ.js} +6 -6
  185. package/dist/{chunk-7INEFMVU.js → chunk-UNFHKOTF.js} +44 -15
  186. package/dist/{chunk-7WDLUCHN.js → chunk-UOZBM4LO.js} +3 -3
  187. package/dist/{chunk-WEW4TRBL.js → chunk-UPGKO5UD.js} +1 -1
  188. package/dist/{chunk-JKUCAMV4.js → chunk-UQDCXE5D.js} +1 -1
  189. package/dist/{chunk-DXQIIZQC.js → chunk-UYU25KCR.js} +12 -12
  190. package/dist/{chunk-V7NXFHZM.js → chunk-UZZSM36C.js} +1 -1
  191. package/dist/{chunk-6Q3M7KZE.js → chunk-V5C7NLBF.js} +3 -3
  192. package/dist/{chunk-YQJC5ETC.js → chunk-V6EIR7QO.js} +2 -2
  193. package/dist/{chunk-XFF6SPWG.js → chunk-VFVF3FHG.js} +1 -1
  194. package/dist/{chunk-F5VP7K3C.js → chunk-VRTBRPRO.js} +59 -12
  195. package/dist/{chunk-6VMVQ3G7.js → chunk-VX7I5XT6.js} +55 -11
  196. package/dist/{chunk-K3EU7B72.js → chunk-VXYXKN6Z.js} +5 -5
  197. package/dist/{chunk-4UOEKQF3.js → chunk-W2SNTOQE.js} +6 -6
  198. package/dist/{chunk-X2X3IGZU.js → chunk-W4H2MZAS.js} +17 -5
  199. package/dist/{chunk-6OQ2TRZK.js → chunk-WHQADJV7.js} +8 -2
  200. package/dist/{chunk-INLY2LLN.js → chunk-XMQE5IBD.js} +1 -1
  201. package/dist/{chunk-ZSFFCRVI.js → chunk-XQH5BKEC.js} +2 -2
  202. package/dist/{chunk-IVGAATAY.js → chunk-YQ7V5UGG.js} +4 -4
  203. package/dist/{chunk-JC3LUYW6.js → chunk-YUMZXMKO.js} +1 -1
  204. package/dist/{chunk-BREDG6EG.js → chunk-Z25GSJ55.js} +9 -5
  205. package/dist/{chunk-5AGOX2XD.js → chunk-ZFJ2KQNY.js} +1 -1
  206. package/dist/{chunk-UVEDFARJ.js → chunk-ZGILZG4X.js} +13 -13
  207. package/dist/{chunk-W6W6ED2D.js → chunk-ZHENW7C3.js} +1 -1
  208. package/dist/{chunk-OODTK35C.js → chunk-ZK645I2O.js} +5 -5
  209. package/dist/{chunk-TFVMRQCZ.js → chunk-ZPMKJS7L.js} +4 -4
  210. package/dist/{cleanup-graph-garbage-AXNCBW5B.js → cleanup-graph-garbage-4PGUCD7L.js} +8 -8
  211. package/dist/{cli-shutdown-HIZRMWKR.js → cli-shutdown-TWBTAIJX.js} +1 -1
  212. package/dist/{cloud-sync-command-XYKKRYHG.js → cloud-sync-command-GLTTBKWO.js} +2 -2
  213. package/dist/{cloud-sync-db-init-GJ322ZNM.js → cloud-sync-db-init-GCR22YII.js} +1 -1
  214. package/dist/{cloud-sync-shutdown-K4XBDTDB.js → cloud-sync-shutdown-YMLKOH3D.js} +3 -3
  215. package/dist/{co-activation-AQXLWFBQ.js → co-activation-MTMCPMZ7.js} +3 -3
  216. package/dist/{co-occurrence-O67PD32I.js → co-occurrence-USGUH6Q4.js} +6 -6
  217. package/dist/{consent-passphrase-DTOZ7LIP.js → consent-passphrase-47T2T7AI.js} +2 -2
  218. package/dist/{conversation-entity-extractor-VRL2EEZQ.js → conversation-entity-extractor-NMXN4MFL.js} +3 -3
  219. package/dist/{crdt-sync-RPCGSGIE.js → crdt-sync-MKLAGQ44.js} +4 -4
  220. package/dist/{crm-webhook-4QADMY7C.js → crm-webhook-5XPG7KVJ.js} +2 -2
  221. package/dist/{cto-delegation-gate-6N2R2VA2.js → cto-delegation-gate-MPD4NXN2.js} +17 -17
  222. package/dist/{daemon-orchestration-ASCAZ63R.js → daemon-orchestration-3PQVCRII.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-N4ROA5Y6.js} +6 -6
  227. package/dist/{documents-5WNSGY3Q.js → documents-MB6ZBMFN.js} +8 -8
  228. package/dist/{dreaming-2TPLO3TO.js → dreaming-J44REYEX.js} +22 -22
  229. package/dist/{employee-boot-brief-MYXATLSU.js → employee-boot-brief-XGGQIUWH.js} +26 -26
  230. package/dist/{entity-boost-BW62CICZ.js → entity-boost-EF4ZVOAL.js} +1 -1
  231. package/dist/{exe-drift-PFFRJJTZ.js → exe-drift-BG7P4MPD.js} +4 -4
  232. package/dist/{exe-export-LL5SV6P2.js → exe-export-JGIBEZ6Y.js} +9 -9
  233. package/dist/{exe-import-LSQMDFDX.js → exe-import-WLFLUY3Y.js} +9 -9
  234. package/dist/{exe-key-266A5GJN.js → exe-key-VST55TOI.js} +101 -100
  235. package/dist/{exe-org-T5DQXHGZ.js → exe-org-FRBL3DFL.js} +36 -36
  236. package/dist/{exe-snapshot-LMMGFX7O.js → exe-snapshot-RYI5ECPA.js} +25 -25
  237. package/dist/{fast-db-init-6MQDCHEB.js → fast-db-init-SIDYVAXH.js} +1 -1
  238. package/dist/{founder-context-6Q6OU7Q7.js → founder-context-2NDDWGSH.js} +3 -3
  239. package/dist/{founder-monitor-envelope-RBSOSB6K.js → founder-monitor-envelope-KZCFNWMB.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-KABOHP62.js} +1 -1
  243. package/dist/{git-staleness-APYCKV4V.js → git-staleness-2CLU6VTA.js} +3 -3
  244. package/dist/{global-procedures-HYFE2UTQ.js → global-procedures-W3G63OIF.js} +5 -5
  245. package/dist/{graph-auto-extract-LFXYAEY5.js → graph-auto-extract-3UV2CVSW.js} +6 -6
  246. package/dist/{graph-query-4F4D4NDH.js → graph-query-6HLVU6K6.js} +1 -1
  247. package/dist/{graph-rag-YZNY6Z3H.js → graph-rag-5AMI2SXI.js} +3 -3
  248. package/dist/{hook-integrity-KNCDGZUD.js → hook-integrity-OYI2N5RC.js} +1 -1
  249. package/dist/{hook-prefetch-ZBUCJBJB.js → hook-prefetch-JV5HG7BJ.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-MABZRBTF.js → installer-LY3KOTTY.js} +7 -7
  272. package/dist/{installer-ZWGREGIY.js → installer-X3WJPT5P.js} +7 -7
  273. package/dist/{installer-TNTAEKCO.js → installer-Y5OURERO.js} +7 -7
  274. package/dist/{intercom-queue-UHL4MXLB.js → intercom-queue-5LBDKW7T.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-ZENWFXPR.js} +4 -4
  305. package/dist/{license-recheck-5PXGSCSR.js → license-recheck-J2I5LOY6.js} +1 -1
  306. package/dist/{license-sync-YCV3GMHN.js → license-sync-Y5JLOYTI.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-CQDHUBEL.js} +5 -5
  318. package/dist/{mcp-session-identity-FQUOB5SF.js → mcp-session-identity-5P4KAHTQ.js} +17 -17
  319. package/dist/{memory-cards-BH53SM42.js → memory-cards-XYZQ5J5T.js} +7 -7
  320. package/dist/{memory-graph-extractor-I6WXM5IC.js → memory-graph-extractor-K57UAS52.js} +7 -7
  321. package/dist/{memory-maintenance-CD2PUBDK.js → memory-maintenance-BF6DEY23.js} +1 -1
  322. package/dist/{memory-poisoning-defense-CC6RGH6M.js → memory-poisoning-defense-DRJOUPIL.js} +3 -3
  323. package/dist/{memory-pressure-watchdog-CDEOMXDR.js → memory-pressure-watchdog-6EVWGJ6K.js} +18 -18
  324. package/dist/{memory-reflection-VXFXG55L.js → memory-reflection-3TX3U2RP.js} +7 -7
  325. package/dist/{memory-write-repository-NLQLH4UL.js → memory-write-repository-IXUYUMAK.js} +1 -1
  326. package/dist/{monitor-grants-6VWM3J3S.js → monitor-grants-BTAWMLRU.js} +3 -3
  327. package/dist/{monitor-identity-YPFRT4AT.js → monitor-identity-VZDTHQDS.js} +2 -2
  328. package/dist/{notification-ledger-2GIT6AZ7.js → notification-ledger-FQ5FE6H2.js} +18 -18
  329. package/dist/{notifications-LHDV4WKP.js → notifications-4NV4X5US.js} +17 -17
  330. package/dist/{orchestration-events-ABHTWWN4.js → orchestration-events-J6MGN7BL.js} +4 -4
  331. package/dist/{orchestrator-N7FCY6H2.js → orchestrator-3RAP4BIW.js} +19 -19
  332. package/dist/{org-brief-session-O6YNFSX3.js → org-brief-session-S5TVA7ZS.js} +15 -15
  333. package/dist/{org-consent-policy-FJH3KTAL.js → org-consent-policy-EBTTGC7A.js} +5 -5
  334. package/dist/{org-join-55WN6YRL.js → org-join-WLATMHMH.js} +11 -11
  335. package/dist/{org-key-admin-FFMICGMY.js → org-key-admin-KJBO4TMT.js} +13 -13
  336. package/dist/{org-key-epoch-RKOF3H2A.js → org-key-epoch-5E7OFFY5.js} +5 -5
  337. package/dist/{org-key-pin-SMZS3GE3.js → org-key-pin-YHWVAB4F.js} +3 -3
  338. package/dist/{org-membership-7VBJJBGO.js → org-membership-PGATG3HH.js} +4 -4
  339. package/dist/{org-partner-config-7LOXIBW5.js → org-partner-config-I6RTWJYD.js} +8 -8
  340. package/dist/{org-partner-runtime-CIFSQNOI.js → org-partner-runtime-CSKMXXHT.js} +15 -15
  341. package/dist/{org-row-visibility-EBN7EI6C.js → org-row-visibility-ZK3OLJ67.js} +1 -1
  342. package/dist/{pipeline-router-VETNF3MF.js → pipeline-router-A3LVNWB6.js} +4 -4
  343. package/dist/{plan-limits-7NDDDRHR.js → plan-limits-3XZY7F72.js} +7 -7
  344. package/dist/{pre-tool-use-impl-GIVQWE6Q.js → pre-tool-use-impl-DNACKCTW.js} +33 -33
  345. package/dist/{project-name-5D6ZQNAY.js → project-name-2TTGTGEQ.js} +4 -4
  346. package/dist/{projection-worker-4BB4ZN3S.js → projection-worker-WW7T7QN2.js} +2 -2
  347. package/dist/{prospective-memory-WUK4ZEVR.js → prospective-memory-44J6PINA.js} +3 -3
  348. package/dist/{push-notifications-UZQLJGEY.js → push-notifications-XXJDSJA6.js} +18 -18
  349. package/dist/{reproject-worktree-memories-XFUKN3ZC.js → reproject-worktree-memories-DVAR2CSE.js} +17 -17
  350. package/dist/{reranker-6F6Y7QHA.js → reranker-4LFGA2X5.js} +1 -1
  351. package/dist/{retrieval-health-SCFZCV7Q.js → retrieval-health-OMOG6DVF.js} +2 -2
  352. package/dist/{review-polling-CFDLKJE4.js → review-polling-EX2WCR5V.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-Z5XJD4R3.js} +18 -18
  356. package/dist/{session-kill-telemetry-OBBCVT3O.js → session-kill-telemetry-UYQ5H3XQ.js} +18 -18
  357. package/dist/{session-scope-LDRY5PBO.js → session-scope-NUWMURJ7.js} +17 -17
  358. package/dist/{setup-wizard-LS6BNHYK.js → setup-wizard-BP4FM3SE.js} +2 -2
  359. package/dist/{shard-manager-7X42DNFE.js → shard-manager-FIMZLYAN.js} +2 -2
  360. package/dist/{skill-refinement-B4EGDBE2.js → skill-refinement-YRTPOCTT.js} +4 -4
  361. package/dist/{skill-retrieval-2ZHX6EQZ.js → skill-retrieval-WEGXROXO.js} +11 -11
  362. package/dist/{skill-usage-DO6M6W5E.js → skill-usage-7HHQGIMF.js} +4 -4
  363. package/dist/{stack-generate-manifest-H2YBCYRW.js → stack-generate-manifest-NWBAQUC6.js} +5 -5
  364. package/dist/{stack-promote-WOATPAGM.js → stack-promote-NV2ZQEVL.js} +5 -5
  365. package/dist/{stack-release-BAD4BTHF.js → stack-release-IPOLLLJH.js} +6 -11
  366. package/dist/{stack-update-H3YXPL7Z.js → stack-update-5LT2U7IP.js} +4 -4
  367. package/dist/{steward-gate-T2XM2NE4.js → steward-gate-BY7R6PJI.js} +4 -4
  368. package/dist/{subagent-brief-injection-5B2XWRZI.js → subagent-brief-injection-MHQEC6VS.js} +28 -28
  369. package/dist/{support-bug-actions-GQYF373N.js → support-bug-actions-QIJETJW5.js} +4 -4
  370. package/dist/{support-inbox-WYWKDLFI.js → support-inbox-YGGVORLU.js} +14 -14
  371. package/dist/{task-enforcement-IIWZPEHF.js → task-enforcement-IRFSPSN3.js} +18 -18
  372. package/dist/{task-request-inbox-GYK2XLSB.js → task-request-inbox-3JRUEHQ5.js} +5 -5
  373. package/dist/{task-scope-YHXKRO2Y.js → task-scope-Q4GALTXQ.js} +17 -17
  374. package/dist/{tasks-crud-BHG6IQ5Z.js → tasks-crud-EPCTLLQ3.js} +17 -17
  375. package/dist/{tasks-notify-PX22TSMC.js → tasks-notify-B6ORX32W.js} +18 -18
  376. package/dist/{tasks-review-6BPGUXJB.js → tasks-review-6MXUAHHW.js} +17 -17
  377. package/dist/{telemetry-upload-HCV4KRB6.js → telemetry-upload-HQEFD3C5.js} +9 -9
  378. package/dist/{token-budget-YVIX2L2Y.js → token-budget-WD3O2E67.js} +4 -4
  379. package/dist/{tool-telemetry-JWI2CHI3.js → tool-telemetry-WRQUOLQX.js} +1 -1
  380. package/dist/tui/App.js +27 -27
  381. package/dist/{tui-data-E5EA34WJ.js → tui-data-F4MEUKAG.js} +21 -21
  382. package/dist/{update-support-JCUIC5J2.js → update-support-UXAVIPYK.js} +12 -12
  383. package/dist/{whatsapp-XRTRUPFR.js → whatsapp-OXW4DIHE.js} +2 -2
  384. package/dist/{wiki-acl-PKJLSR6U.js → wiki-acl-J564J7MH.js} +1 -1
  385. package/dist/{work-claims-BB6S6QU5.js → work-claims-AURJKQOJ.js} +4 -4
  386. package/dist/{work-state-heartbeat-O2SS2VWD.js → work-state-heartbeat-KS3XNIJW.js} +1 -1
  387. package/dist/{workflow-engine-XWQS7VBY.js → workflow-engine-TSLIUTU2.js} +2 -2
  388. package/dist/{worktree-F3TKPS5Z.js → worktree-4YARVREJ.js} +5 -5
  389. package/dist/{worktree-sweep-OF4ST7IR.js → worktree-sweep-XMESZYDA.js} +10 -6
  390. package/package.json +2 -1
  391. package/release-notes.json +34 -7
  392. package/stack.release.json +3 -3
  393. /package/dist/{chunk-GNFWZ2MA.js → chunk-2WJDZ7ZL.js} +0 -0
  394. /package/dist/{chunk-W3DHPCFX.js → chunk-5RIIZINL.js} +0 -0
  395. /package/dist/{chunk-CULFTILF.js → chunk-7SQPOOQI.js} +0 -0
  396. /package/dist/{chunk-NRR6VAG2.js → chunk-A65MJS3O.js} +0 -0
  397. /package/dist/{chunk-4D7SDPAB.js → chunk-CZ3RYFNL.js} +0 -0
  398. /package/dist/{chunk-XDZWSK3F.js → chunk-DTQF6UBE.js} +0 -0
  399. /package/dist/{chunk-MFRU5TLH.js → chunk-IPJRMBYC.js} +0 -0
  400. /package/dist/{chunk-MQNHXT54.js → chunk-J6UCIUPI.js} +0 -0
  401. /package/dist/{chunk-I3F7MGSI.js → chunk-JCV4UPMD.js} +0 -0
  402. /package/dist/{chunk-W7S7AEVC.js → chunk-K2ETALNO.js} +0 -0
  403. /package/dist/{chunk-KY5XPFMA.js → chunk-OJG6S5OI.js} +0 -0
  404. /package/dist/{chunk-CEPUA7JC.js → chunk-R75Z5WXN.js} +0 -0
  405. /package/dist/{chunk-PKPJ62VF.js → chunk-ZXMOTEQE.js} +0 -0
  406. /package/dist/{core-memory-Z4FUMYA6.js → core-memory-SKTPW67X.js} +0 -0
  407. /package/dist/{memory-isolation-PDFRPDVY.js → memory-isolation-XXQUEA6Z.js} +0 -0
  408. /package/dist/{oauth-server-TM5XWRX3.js → oauth-server-XD33YOXG.js} +0 -0
  409. /package/dist/{project-boot-VFW3KDOY.js → project-boot-H2RD4NGX.js} +0 -0
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getGlobalProceduresBlock
3
- } from "./chunk-X5FCZYWK.js";
3
+ } from "./chunk-ULORKGXX.js";
4
4
  import {
5
5
  writePlatformReferenceFile
6
6
  } from "./chunk-IZWMWJZT.js";
@@ -4,10 +4,10 @@ import {
4
4
  } from "./chunk-IZWMWJZT.js";
5
5
  import {
6
6
  fastDbInit
7
- } from "./chunk-NRR6VAG2.js";
7
+ } from "./chunk-A65MJS3O.js";
8
8
  import {
9
9
  getClient
10
- } from "./chunk-DXQIIZQC.js";
10
+ } from "./chunk-UYU25KCR.js";
11
11
 
12
12
  // src/lib/global-procedures.ts
13
13
  import { randomUUID } from "crypto";
@@ -4,10 +4,10 @@ import {
4
4
  import {
5
5
  reserveVersions,
6
6
  vectorToBlob
7
- } from "./chunk-V4JWFJZR.js";
7
+ } from "./chunk-B7T7I5BK.js";
8
8
  import {
9
9
  getClient
10
- } from "./chunk-DXQIIZQC.js";
10
+ } from "./chunk-UYU25KCR.js";
11
11
 
12
12
  // src/lib/documents.ts
13
13
  import crypto from "crypto";
@@ -85,7 +85,7 @@ async function resolveWorkspace(slug_or_id, name, ownerAgentId) {
85
85
  }
86
86
  if (owner) {
87
87
  try {
88
- const { grantWikiAccess } = await import("./wiki-acl-PKJLSR6U.js");
88
+ const { grantWikiAccess } = await import("./wiki-acl-J564J7MH.js");
89
89
  await grantWikiAccess(owner, id, "admin", owner);
90
90
  } catch {
91
91
  }
@@ -111,7 +111,7 @@ async function resolveDefaultWorkspaceId(cwd) {
111
111
  const client = getClient();
112
112
  let projectName;
113
113
  try {
114
- const { getProjectName } = await import("./project-name-5D6ZQNAY.js");
114
+ const { getProjectName } = await import("./project-name-2TTGTGEQ.js");
115
115
  projectName = getProjectName(cwd);
116
116
  } catch {
117
117
  return null;
@@ -230,7 +230,7 @@ async function ingestDocument(input) {
230
230
  }
231
231
  let ingestingIdentity = null;
232
232
  try {
233
- const { getActiveAgent } = await import("./active-agent-7OKWCTDR.js");
233
+ const { getActiveAgent } = await import("./active-agent-5DC75ZP3.js");
234
234
  ingestingIdentity = getActiveAgent().agentId || null;
235
235
  } catch {
236
236
  }
@@ -308,7 +308,7 @@ async function ingestDocument(input) {
308
308
  await client.batch([documentStmt, ...chunkStmts], "write");
309
309
  const embedded = vectors.filter((v) => v !== null).length;
310
310
  const originalTexts = input.chunks.map((c) => c.text);
311
- import("./doc-graph-extractor-VVSMYOR3.js").then(
311
+ import("./doc-graph-extractor-N4ROA5Y6.js").then(
312
312
  ({ extractAndStoreDocumentGraph }) => extractAndStoreDocumentGraph(documentId, originalTexts)
313
313
  ).catch((err) => {
314
314
  process.stderr.write(
@@ -175,25 +175,47 @@ function evaluateRestartBreaker(prev, now, bootClass, windowMs = RESTART_BREAKER
175
175
  };
176
176
  }
177
177
  function loadStateEntries(deps) {
178
+ let raw;
178
179
  try {
179
- if (!deps.exists(deps.statePath)) return [];
180
- const parsed = JSON.parse(deps.read(deps.statePath));
180
+ if (!deps.exists(deps.statePath)) return { entries: [], readable: true };
181
+ raw = deps.read(deps.statePath);
182
+ } catch (err) {
183
+ process.stderr.write(
184
+ `[exed] Restart-breaker state file unreadable \u2014 FAILING OPEN for this boot (treating as empty, will not trip) but PRESERVING the file on disk so the crash window is not erased: ${err instanceof Error ? err.message : String(err)}
185
+ `
186
+ );
187
+ return { entries: [], readable: false };
188
+ }
189
+ try {
190
+ const parsed = JSON.parse(raw);
181
191
  if (!Array.isArray(parsed.restarts)) throw new Error("restarts is not an array");
182
- return parsed.restarts.map((e) => {
192
+ const entries = parsed.restarts.map((e) => {
183
193
  if (typeof e === "number" && Number.isFinite(e)) return { t: e, c: "x" };
184
194
  if (e && typeof e.t === "number") {
185
- const raw = e.c;
186
- const c = raw === "s" ? "s" : raw === "r" ? "r" : "x";
195
+ const raw2 = e.c;
196
+ const c = raw2 === "s" ? "s" : raw2 === "r" ? "r" : "x";
187
197
  return { t: e.t, c };
188
198
  }
189
199
  return null;
190
200
  }).filter((e) => e !== null);
201
+ return { entries, readable: true };
191
202
  } catch (err) {
192
- process.stderr.write(
193
- `[exed] Restart-breaker state file unreadable \u2014 FAILING OPEN (treating as empty, will not trip): ${err instanceof Error ? err.message : String(err)}
203
+ const quarantinePath = `${deps.statePath}.corrupt-${deps.now()}`;
204
+ try {
205
+ deps.write(quarantinePath, raw);
206
+ deps.remove(deps.statePath);
207
+ process.stderr.write(
208
+ `[exed] Restart-breaker state file was malformed JSON \u2014 quarantined corrupt bytes to ${quarantinePath} and reset restart tracking to a fresh empty state so crash tracking resumes: ${err instanceof Error ? err.message : String(err)}
194
209
  `
195
- );
196
- return [];
210
+ );
211
+ return { entries: [], readable: true };
212
+ } catch (quarantineErr) {
213
+ process.stderr.write(
214
+ `[exed] Restart-breaker state file malformed AND could not be quarantined \u2014 FAILING OPEN for this boot (treating as empty, will not trip), original file left in place: ${quarantineErr instanceof Error ? quarantineErr.message : String(quarantineErr)}
215
+ `
216
+ );
217
+ return { entries: [], readable: false };
218
+ }
197
219
  }
198
220
  }
199
221
  function readLastExit(deps) {
@@ -220,7 +242,8 @@ function readLastExit(deps) {
220
242
  function recordDaemonRestart(deps = REAL_DEPS, gap, priorRestartIntent) {
221
243
  const lastExit = readLastExit(deps);
222
244
  const now = deps.now();
223
- const prevEntries = loadStateEntries(deps);
245
+ const prevState = loadStateEntries(deps);
246
+ const prevEntries = prevState.entries;
224
247
  const priorCrashesInWindow = prevEntries.filter(
225
248
  (e) => e.c === "x" && now - e.t < RESTART_BREAKER_WINDOW_MS
226
249
  ).length;
@@ -239,9 +262,15 @@ function recordDaemonRestart(deps = REAL_DEPS, gap, priorRestartIntent) {
239
262
  RESTART_BREAKER_THRESHOLD,
240
263
  recoverable
241
264
  );
242
- try {
243
- deps.write(deps.statePath, JSON.stringify({ restarts: ev.entries }));
244
- } catch {
265
+ if (prevState.readable) {
266
+ try {
267
+ deps.write(deps.statePath, JSON.stringify({ restarts: ev.entries }));
268
+ } catch {
269
+ }
270
+ } else {
271
+ process.stderr.write(
272
+ "[exed] Restart-breaker state NOT persisted this boot \u2014 the existing file could not be read and overwriting it would erase the crash window the breaker trips on.\n"
273
+ );
245
274
  }
246
275
  const decision = {
247
276
  trip: ev.trip,
@@ -320,11 +349,11 @@ function selfHealStormAlertPath() {
320
349
  }
321
350
  function crashBootsInWindow(deps = REAL_DEPS, windowMs = RESTART_BREAKER_WINDOW_MS) {
322
351
  const now = deps.now();
323
- return loadStateEntries(deps).filter((e) => e.c === "x" && now - e.t < windowMs).length;
352
+ return loadStateEntries(deps).entries.filter((e) => e.c === "x" && now - e.t < windowMs).length;
324
353
  }
325
354
  function restartBootsInWindow(deps = REAL_DEPS, windowMs = RESTART_BREAKER_WINDOW_MS) {
326
355
  const now = deps.now();
327
- return loadStateEntries(deps).filter((e) => now - e.t < windowMs).length;
356
+ return loadStateEntries(deps).entries.filter((e) => now - e.t < windowMs).length;
328
357
  }
329
358
  function writeBreakerAlert(decision, lastExit, deps = REAL_DEPS) {
330
359
  const windowMin = Math.round(RESTART_BREAKER_WINDOW_MS / 6e4);
@@ -1,15 +1,15 @@
1
1
  import {
2
2
  getActiveAgent
3
- } from "./chunk-RPOIKNJZ.js";
3
+ } from "./chunk-LGP67CBT.js";
4
4
  import {
5
5
  listTasks
6
- } from "./chunk-V4RIHICU.js";
6
+ } from "./chunk-7QYXNSKT.js";
7
7
  import {
8
8
  getAgentContext
9
9
  } from "./chunk-GJV3WDWM.js";
10
10
  import {
11
11
  isCoordinatorName
12
- } from "./chunk-DXQIIZQC.js";
12
+ } from "./chunk-UYU25KCR.js";
13
13
 
14
14
  // src/mcp/tools/list-tasks.ts
15
15
  import { z } from "zod";
@@ -212,7 +212,7 @@ async function main(args) {
212
212
  console.log("[health-gate] Starting rollback...");
213
213
  restorePreDeployBackup();
214
214
  try {
215
- const { rollbackStackUpdate, defaultStackPaths } = await import("./stack-update-H3YXPL7Z.js");
215
+ const { rollbackStackUpdate, defaultStackPaths } = await import("./stack-update-5LT2U7IP.js");
216
216
  const paths = defaultStackPaths();
217
217
  await rollbackStackUpdate({
218
218
  manifestRef: paths.manifestRef,
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getClient
3
- } from "./chunk-DXQIIZQC.js";
3
+ } from "./chunk-UYU25KCR.js";
4
4
 
5
5
  // src/lib/skill-refinement.ts
6
6
  import crypto from "crypto";
@@ -4,20 +4,20 @@ import {
4
4
  import {
5
5
  assertValidDbPath
6
6
  } from "./chunk-TKDITWDN.js";
7
+ import {
8
+ listBackups,
9
+ preBackupCheckpoint
10
+ } from "./chunk-2CGKFJ3Q.js";
7
11
  import {
8
12
  MEMORY_PROJECTION_OUTBOX_INDEX_SQL,
9
13
  MEMORY_PROJECTION_OUTBOX_TABLE_SQL,
10
14
  MEMORY_PROJECTION_OUTBOX_UNIQUE_INDEX_SQL,
11
15
  PROJECTION_CHECKPOINT_TABLE_SQL,
12
16
  ensureMemoryWriteIndex
13
- } from "./chunk-EHDAWQ5P.js";
17
+ } from "./chunk-L5TOPOTW.js";
14
18
  import {
15
19
  recordDbOpen
16
20
  } from "./chunk-5YEUPUV4.js";
17
- import {
18
- listBackups,
19
- preBackupCheckpoint
20
- } from "./chunk-BKKZN3DJ.js";
21
21
  import {
22
22
  isPostgresBackendEnabled
23
23
  } from "./chunk-YYB5PMTK.js";
@@ -1515,7 +1515,7 @@ async function migrateReflectionDedup(client) {
1515
1515
  "ALTER TABLE memory_reflections ADD COLUMN dedup_key TEXT",
1516
1516
  "migration add memory_reflections.dedup_key"
1517
1517
  );
1518
- const { reflectionDedupKey } = await import("./memory-reflection-VXFXG55L.js");
1518
+ const { reflectionDedupKey } = await import("./memory-reflection-3TX3U2RP.js");
1519
1519
  const keyForRow = (row) => {
1520
1520
  let sources = [];
1521
1521
  try {
@@ -2035,7 +2035,7 @@ async function _attemptBackupRestore(config) {
2035
2035
  `
2036
2036
  );
2037
2037
  try {
2038
- const { recordDbRestoreEvent } = await import("./db-restore-events-XYL6CGPC.js");
2038
+ const { recordDbRestoreEvent } = await import("./db-restore-events-R5S7XTHX.js");
2039
2039
  recordDbRestoreEvent({
2040
2040
  kind: "auto-restore",
2041
2041
  restoredFrom: backup.name,
@@ -2078,7 +2078,7 @@ async function _attemptBackupRestore(config) {
2078
2078
  `
2079
2079
  );
2080
2080
  try {
2081
- const { recordDbRestoreEvent } = await import("./db-restore-events-XYL6CGPC.js");
2081
+ const { recordDbRestoreEvent } = await import("./db-restore-events-R5S7XTHX.js");
2082
2082
  recordDbRestoreEvent({
2083
2083
  kind: "restore-failed",
2084
2084
  quarantinePath: corruptPath,
@@ -2337,7 +2337,7 @@ async function initDatabase(config) {
2337
2337
  `
2338
2338
  );
2339
2339
  try {
2340
- const { recordDbRestoreEvent } = await import("./db-restore-events-XYL6CGPC.js");
2340
+ const { recordDbRestoreEvent } = await import("./db-restore-events-R5S7XTHX.js");
2341
2341
  recordDbRestoreEvent({
2342
2342
  kind: "wal-recovery",
2343
2343
  quarantinePath: backupPath,
@@ -2351,7 +2351,7 @@ async function initDatabase(config) {
2351
2351
  `
2352
2352
  );
2353
2353
  try {
2354
- const { recordDbRestoreEvent } = await import("./db-restore-events-XYL6CGPC.js");
2354
+ const { recordDbRestoreEvent } = await import("./db-restore-events-R5S7XTHX.js");
2355
2355
  recordDbRestoreEvent({
2356
2356
  kind: "zeroed-no-wal",
2357
2357
  detail: "DB was 0 bytes at startup with no WAL available \u2014 data may be lost"
@@ -2573,7 +2573,7 @@ async function sweepExpiredSoftDeletedMemories(client, options = {}) {
2573
2573
  const purgeArchived = archDays !== void 0;
2574
2574
  const BATCH_SIZE = 2e3;
2575
2575
  const MAX_BATCHES = 500;
2576
- const { cleanupCardsForMemories, cleanupGraphLinksForMemories } = await import("./graph-rag-YZNY6Z3H.js");
2576
+ const { cleanupCardsForMemories, cleanupGraphLinksForMemories } = await import("./graph-rag-5AMI2SXI.js");
2577
2577
  const softCutoff = `-${softDays} days`;
2578
2578
  const selectArgsBase = [softCutoff];
2579
2579
  let predicate = `status = 'deleted' AND COALESCE(deleted_at, timestamp) < datetime('now', ?)`;
@@ -2959,7 +2959,7 @@ async function ensureSchema() {
2959
2959
  }
2960
2960
  }
2961
2961
  try {
2962
- const { checkAndRepairFtsIndexOnce } = await import("./fts-integrity-PHCKKOBC.js");
2962
+ const { checkAndRepairFtsIndexOnce } = await import("./fts-integrity-PL7TKYTM.js");
2963
2963
  await checkAndRepairFtsIndexOnce(client);
2964
2964
  } catch (ftsErr) {
2965
2965
  process.stderr.write(
@@ -2,7 +2,7 @@ import {
2
2
  deleteKeychainSecret,
3
3
  getKeychainSecret,
4
4
  setKeychainSecret
5
- } from "./chunk-5AGOX2XD.js";
5
+ } from "./chunk-ZFJ2KQNY.js";
6
6
 
7
7
  // src/lib/consent-passphrase.ts
8
8
  import crypto from "crypto";
@@ -14,10 +14,10 @@ import {
14
14
  import {
15
15
  buildClaudeHttpMcpEntry,
16
16
  buildClaudeStdioProxyMcpEntry
17
- } from "./chunk-5UUHXDX6.js";
17
+ } from "./chunk-C4OMBSRB.js";
18
18
  import {
19
19
  ensureAllAgentSymlinks
20
- } from "./chunk-BJ3ZQAIL.js";
20
+ } from "./chunk-DTUQGAD4.js";
21
21
  import {
22
22
  MCP_LEGACY_KEY,
23
23
  MCP_PRIMARY_KEY
@@ -977,7 +977,7 @@ async function runInstaller(homeDir) {
977
977
  );
978
978
  }
979
979
  try {
980
- const { generateAgentDefs, summarizeAgentDefResults } = await import("./agent-defs-generator-PZJGE6PL.js");
980
+ const { generateAgentDefs, summarizeAgentDefResults } = await import("./agent-defs-generator-TBR4P3XR.js");
981
981
  const defResults = generateAgentDefs({ homeDir: resolvedHome });
982
982
  process.stderr.write(`Agent definitions: ${summarizeAgentDefResults(defResults)}
983
983
  `);
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  registerScopedQueryChokepoint,
3
3
  scopedQueryChokepointStatus
4
- } from "./chunk-HHNGQIP3.js";
4
+ } from "./chunk-DUPQMNK6.js";
5
5
  import {
6
6
  getClient
7
- } from "./chunk-DXQIIZQC.js";
7
+ } from "./chunk-UYU25KCR.js";
8
8
 
9
9
  // src/lib/org-scoped-rows.ts
10
10
  var SCOPED_QUERY_MAX_LIMIT = 200;
@@ -10,7 +10,7 @@ import {
10
10
  import {
11
11
  loadLicense,
12
12
  readCachedLicenseToken
13
- } from "./chunk-6VMVQ3G7.js";
13
+ } from "./chunk-VX7I5XT6.js";
14
14
  import {
15
15
  loadConfig
16
16
  } 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-RCMXCNMC.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,9 +1,9 @@
1
1
  import {
2
2
  PLAN_LIMITS
3
- } from "./chunk-A7XLR3K7.js";
3
+ } from "./chunk-3R7UDPVR.js";
4
4
  import {
5
5
  getDeviceInfo
6
- } from "./chunk-PKPJ62VF.js";
6
+ } from "./chunk-ZXMOTEQE.js";
7
7
  import {
8
8
  EXE_AI_DIR
9
9
  } from "./chunk-MMS2HBRT.js";
@@ -44,6 +44,12 @@ oR8NJBuiITKaerulCXiSiJMX1HP0+h5dHBVfCWQfIVk5BMdsheAMaP806w==
44
44
  -----END PUBLIC KEY-----`;
45
45
  var LICENSE_PUBLIC_KEYS = [LICENSE_PUBLIC_KEY_PEM_2026_06_17, LICENSE_PUBLIC_KEY_PEM, LICENSE_PUBLIC_KEY_PEM_PREV];
46
46
  var LICENSE_JWT_ALG = "ES256";
47
+ var MAX_OFFLINE_TRUST_DAYS = 7;
48
+ function withinOfflineTrustWindow(payload, maxDays) {
49
+ const iat = payload?.iat;
50
+ if (typeof iat !== "number" || !Number.isFinite(iat)) return true;
51
+ return Date.now() < iat * 1e3 + maxDays * 24 * 60 * 60 * 1e3;
52
+ }
47
53
  function suppliedNumber(value) {
48
54
  return typeof value === "number" && Number.isFinite(value) ? value : null;
49
55
  }
@@ -55,6 +61,15 @@ function resolveClientLimits(plan, supplied) {
55
61
  memoryLimit: suppliedNumber(supplied?.memories) ?? fallback.memories
56
62
  };
57
63
  }
64
+ function subscriptionEndClaim(payload) {
65
+ if (!payload) return null;
66
+ for (const name of ["license_expires_at", "subscription_ends_at", "subscriptionEndsAt", "sub_exp", "current_period_end"]) {
67
+ const raw = payload[name];
68
+ if (typeof raw === "string" && raw.trim()) return raw;
69
+ if (typeof raw === "number" && Number.isFinite(raw)) return new Date(raw * 1e3).toISOString();
70
+ }
71
+ return null;
72
+ }
58
73
  function limitsClaim(payload) {
59
74
  const claim = payload?.limits;
60
75
  if (!claim || typeof claim !== "object") return null;
@@ -247,7 +262,12 @@ async function verifyLicenseJwt(token) {
247
262
  valid: true,
248
263
  plan,
249
264
  email,
250
- expiresAt: payload.exp ? new Date(payload.exp * 1e3).toISOString() : null,
265
+ // Bug f855bcbe: `exp` is this TOKEN's lifetime, not the customer's
266
+ // subscription. Only a claim that actually means "the subscription ends
267
+ // then" may fill `expiresAt`; the token's own TTL is reported as what it
268
+ // is, and nothing renders it as an expiry date.
269
+ expiresAt: subscriptionEndClaim(payload),
270
+ proofExpiresAt: payload.exp ? new Date(payload.exp * 1e3).toISOString() : null,
251
271
  ...limits
252
272
  };
253
273
  } catch {
@@ -262,6 +282,7 @@ async function getCachedLicense(expectedKey) {
262
282
  const raw = JSON.parse(readFileSync(CACHE_PATH, "utf8"));
263
283
  if (!raw.token || typeof raw.token !== "string") return null;
264
284
  if (!cacheVouchesForKey(raw, expectedKey)) return null;
285
+ if (!withinOfflineTrustWindow(readTokenClaims(raw.token), MAX_OFFLINE_TRUST_DAYS)) return null;
265
286
  return await verifyLicenseJwt(raw.token);
266
287
  } catch {
267
288
  return null;
@@ -269,15 +290,14 @@ async function getCachedLicense(expectedKey) {
269
290
  }
270
291
  async function getGraceVerifiedLicense(graceDays = 7, expectedKey) {
271
292
  try {
272
- if (expectedKey) {
273
- const rawCache = readCacheFile();
274
- if (!rawCache || !cacheVouchesForKey(rawCache, expectedKey)) return null;
275
- }
293
+ const rawCache = readCacheFile();
294
+ if (!rawCache || !cacheVouchesForKey(rawCache, expectedKey)) return null;
276
295
  const token = readCachedLicenseToken();
277
296
  if (!token) return null;
278
297
  const payloadB64 = token.split(".")[1];
279
298
  if (!payloadB64) return null;
280
299
  const payload = JSON.parse(Buffer.from(payloadB64, "base64url").toString());
300
+ if (!withinOfflineTrustWindow(payload, graceDays)) return null;
281
301
  const expMs = (payload.exp ?? 0) * 1e3;
282
302
  if (Date.now() >= expMs + graceDays * 24 * 60 * 60 * 1e3) return null;
283
303
  let verified = null;
@@ -305,13 +325,23 @@ async function getGraceVerifiedLicense(graceDays = 7, expectedKey) {
305
325
  valid: true,
306
326
  plan,
307
327
  email: verified.sub ?? "",
308
- expiresAt: verified.exp ? new Date(verified.exp * 1e3).toISOString() : null,
328
+ expiresAt: subscriptionEndClaim(verified),
329
+ proofExpiresAt: verified.exp ? new Date(verified.exp * 1e3).toISOString() : null,
309
330
  ...limits
310
331
  };
311
332
  } catch {
312
333
  return null;
313
334
  }
314
335
  }
336
+ function readTokenClaims(token) {
337
+ try {
338
+ const payloadB64 = token.split(".")[1];
339
+ if (!payloadB64) return void 0;
340
+ return JSON.parse(Buffer.from(payloadB64, "base64url").toString());
341
+ } catch {
342
+ return void 0;
343
+ }
344
+ }
315
345
  function readCacheFile() {
316
346
  try {
317
347
  if (!existsSync(CACHE_PATH)) return null;
@@ -336,9 +366,23 @@ function licenseKeyFingerprint(apiKey) {
336
366
  return createHash("sha256").update(apiKey.trim(), "utf8").digest("hex");
337
367
  }
338
368
  function cacheVouchesForKey(raw, expectedKey) {
339
- if (!expectedKey) return true;
369
+ const bound = expectedKey ?? licenseKeyOnDisk();
340
370
  if (typeof raw.keyFp !== "string" || !raw.keyFp) return true;
341
- return raw.keyFp === licenseKeyFingerprint(expectedKey);
371
+ if (!bound) return false;
372
+ return raw.keyFp === licenseKeyFingerprint(bound);
373
+ }
374
+ function licenseKeyOnDisk() {
375
+ const key = loadLicense();
376
+ if (key) return key;
377
+ try {
378
+ const configPath = path.join(EXE_AI_DIR, "config.json");
379
+ if (!existsSync(configPath)) return null;
380
+ const raw = JSON.parse(readFileSync(configPath, "utf8"));
381
+ const mirrored = raw.cloud?.apiKey;
382
+ return mirrored && mirrored.trim() ? mirrored.trim() : null;
383
+ } catch {
384
+ return null;
385
+ }
342
386
  }
343
387
  function cacheResponse(token, apiKey) {
344
388
  try {
@@ -844,7 +888,7 @@ function isFeatureAllowed(license, feature) {
844
888
  case "wiki":
845
889
  return license.plan !== "free";
846
890
  case "unlimited_employees":
847
- return license.plan === "team" || license.plan === "agency" || license.plan === "enterprise";
891
+ return license.employeeLimit === -1;
848
892
  }
849
893
  }
850
894
  function mirrorLicenseKey(apiKey) {
@@ -1,23 +1,23 @@
1
1
  import {
2
2
  derivePartnerSealIdentity
3
- } from "./chunk-TQJMG65I.js";
3
+ } from "./chunk-BI6SK67J.js";
4
4
  import {
5
5
  pinMismatchReason,
6
6
  pinnedOrgKeyEpochs,
7
7
  readOrgKeyPin
8
- } from "./chunk-VV7D7KEX.js";
8
+ } from "./chunk-F4C3X66B.js";
9
9
  import {
10
10
  derivePartnerSignIdentity,
11
11
  displayFingerprint,
12
12
  signKeyFingerprint
13
- } from "./chunk-LGNDHTDP.js";
13
+ } from "./chunk-342X5YQB.js";
14
14
  import {
15
15
  orgMembershipPresent,
16
16
  readActiveOrgMemberships
17
- } from "./chunk-INLY2LLN.js";
17
+ } from "./chunk-XMQE5IBD.js";
18
18
  import {
19
19
  isValidX25519Recipient
20
- } from "./chunk-I4DBM5ME.js";
20
+ } from "./chunk-NQG5CD3V.js";
21
21
 
22
22
  // src/lib/org-partner-config.ts
23
23
  function pickString(rec, ...keys) {