@askexenow/exe-os 0.9.409 → 0.9.411

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 +408 -1
  2. package/dist/.dist-verified.json +3 -3
  3. package/dist/{active-agent-5AKPW2N7.js → active-agent-3YCLS7GB.js} +4 -4
  4. package/dist/{active-agent-2AMJC3SC.js → active-agent-MHWQDMML.js} +4 -4
  5. package/dist/agent-defs-generator-DNXMO34I.js +32 -0
  6. package/dist/{agentic-ontology-6RS7A7KP.js → agentic-ontology-RA6CMND6.js} +1 -1
  7. package/dist/{artifact-backup-6O4FNYPS.js → artifact-backup-EETHNFFP.js} +3 -3
  8. package/dist/{backfill-metadata-6YX6LGPJ.js → backfill-metadata-WYT257VG.js} +7 -7
  9. package/dist/backup-verify-AG54CYGR.js +62 -0
  10. package/dist/{behavior-injection-NRXTNROW.js → behavior-injection-G7GAUHGO.js} +10 -10
  11. package/dist/{behavior-promotion-MW7OQ72V.js → behavior-promotion-I2DIUFUR.js} +9 -9
  12. package/dist/{behaviors-7AOK44QK.js → behaviors-SKVKPCRW.js} +8 -8
  13. package/dist/bin/agentic-ontology-backfill.js +8 -8
  14. package/dist/bin/agentic-reflection-backfill.js +9 -9
  15. package/dist/bin/agentic-semantic-label.js +8 -8
  16. package/dist/bin/backfill-conversations.js +7 -7
  17. package/dist/bin/backfill-responses.js +7 -7
  18. package/dist/bin/backfill-vectors.js +7 -7
  19. package/dist/bin/bulk-sync-postgres.js +16 -16
  20. package/dist/bin/cc-doctor.js +8 -8
  21. package/dist/bin/cleanup-stale-review-tasks.js +13 -16
  22. package/dist/bin/cli.js +24 -24
  23. package/dist/bin/deferred-daemon-restart.js +97 -97
  24. package/dist/bin/exe-actions.js +1 -1
  25. package/dist/bin/exe-agent-config.js +3 -3
  26. package/dist/bin/exe-agent.js +12 -12
  27. package/dist/bin/exe-assign.js +8 -8
  28. package/dist/bin/exe-boot.js +35 -38
  29. package/dist/bin/exe-call.js +9 -9
  30. package/dist/bin/exe-cloud.js +26 -22
  31. package/dist/bin/exe-config-dump.js +3 -3
  32. package/dist/bin/exe-dispatch.js +14 -17
  33. package/dist/bin/exe-doctor.js +5 -5
  34. package/dist/bin/exe-export-behaviors.js +12 -12
  35. package/dist/bin/exe-forget.js +12 -12
  36. package/dist/bin/exe-gateway.js +9 -9
  37. package/dist/bin/exe-grant.js +6 -6
  38. package/dist/bin/exe-healthcheck.js +8 -8
  39. package/dist/bin/exe-heartbeat.js +19 -22
  40. package/dist/bin/exe-kill.js +18 -21
  41. package/dist/bin/exe-launch-agent.js +264 -110
  42. package/dist/bin/exe-mcp.js +5 -5
  43. package/dist/bin/exe-memory-reads.js +7 -7
  44. package/dist/bin/exe-new-employee.js +11 -11
  45. package/dist/bin/exe-os-mcp-proxy.js +5 -5
  46. package/dist/bin/exe-pending-messages.js +14 -17
  47. package/dist/bin/exe-pending-notifications.js +13 -16
  48. package/dist/bin/exe-pending-reviews.js +14 -17
  49. package/dist/bin/exe-rename.js +7 -7
  50. package/dist/bin/exe-review.js +17 -20
  51. package/dist/bin/exe-search.js +11 -11
  52. package/dist/bin/exe-session-cleanup.js +18 -21
  53. package/dist/bin/exe-settings.js +16 -16
  54. package/dist/bin/exe-start-codex.js +37 -19
  55. package/dist/bin/exe-start-opencode.js +35 -17
  56. package/dist/bin/exe-status.js +15 -18
  57. package/dist/bin/exe-support.js +3 -3
  58. package/dist/bin/exe-team.js +5 -5
  59. package/dist/bin/git-sweep.js +15 -17
  60. package/dist/bin/graph-backfill.js +8 -8
  61. package/dist/bin/graph-export.js +8 -8
  62. package/dist/bin/hooks-cli.js +1 -1
  63. package/dist/bin/import-history.js +11 -11
  64. package/dist/bin/install.js +99 -99
  65. package/dist/bin/intercom-check.js +5 -5
  66. package/dist/bin/mcp-sessions.js +2 -2
  67. package/dist/bin/orchestration-metrics.js +5 -5
  68. package/dist/bin/postgres-agentic-reflection-backfill.js +2 -2
  69. package/dist/bin/postgres-agentic-semantic-backfill.js +1 -1
  70. package/dist/bin/pre-publish.js +1 -1
  71. package/dist/bin/reconcile-backlog.js +2 -2
  72. package/dist/bin/registry-proxy.js +1 -1
  73. package/dist/bin/repair-document-chunks.js +7 -7
  74. package/dist/bin/scan-tasks.js +14 -17
  75. package/dist/bin/setup.js +2 -2
  76. package/dist/bin/shard-migrate.js +8 -8
  77. package/dist/bin/stack-update.js +4 -4
  78. package/dist/bin/vps-health-gate.js +1 -1
  79. package/dist/{boot-generation-HG6LLZLY.js → boot-generation-RPJVFAQJ.js} +4 -4
  80. package/dist/{boot-review-sections-STZ5EAIL.js → boot-review-sections-FOPPZTJI.js} +12 -15
  81. package/dist/{bug-landed-reconciler-EO72HUI2.js → bug-landed-reconciler-FN5KPBRK.js} +6 -6
  82. package/dist/build-info.json +3 -3
  83. package/dist/build-manifest.json +997 -987
  84. package/dist/{capability-cards-C3SMHB2E.js → capability-cards-YQWBEG7A.js} +3 -3
  85. package/dist/{capacity-monitor-UI553HRL.js → capacity-monitor-7SMEJHYG.js} +14 -17
  86. package/dist/{catchup-brief-VE2X4HML.js → catchup-brief-IBQ26LEB.js} +21 -23
  87. package/dist/{chunk-6ZW6BRI4.js → chunk-27NG2NTG.js} +2 -2
  88. package/dist/{chunk-EIM7OGTD.js → chunk-2BOLFLAU.js} +4 -2
  89. package/dist/{chunk-DM4VTXM6.js → chunk-2EYVXUGA.js} +4 -4
  90. package/dist/{chunk-LMF2YC5C.js → chunk-2YFMBXUU.js} +4 -4
  91. package/dist/{chunk-C426MZMD.js → chunk-2YGBJHC2.js} +3 -3
  92. package/dist/{chunk-6EY6OFBC.js → chunk-353XF4LU.js} +2 -2
  93. package/dist/{chunk-VMHZSZQJ.js → chunk-3ARSKDHC.js} +52 -0
  94. package/dist/{chunk-ZYOIH5NY.js → chunk-3DXAJVXE.js} +6 -6
  95. package/dist/{chunk-HFSFWMID.js → chunk-3GGMHSY2.js} +3 -3
  96. package/dist/{chunk-BM467PZN.js → chunk-3N24FV22.js} +1 -1
  97. package/dist/{chunk-SY53PYLU.js → chunk-47YGEM4N.js} +1 -1
  98. package/dist/{chunk-NVM3SKJ4.js → chunk-4CN3EE6U.js} +27 -21
  99. package/dist/{chunk-KIJRAZWR.js → chunk-4J77TCTX.js} +1 -1
  100. package/dist/{chunk-NHQWPKX7.js → chunk-54STF27U.js} +2 -2
  101. package/dist/{chunk-Q4GS5VW7.js → chunk-5BWDUUMH.js} +3 -3
  102. package/dist/{chunk-VYKXRSHU.js → chunk-5ZMNFSHV.js} +1 -1
  103. package/dist/{chunk-HNGAM3U4.js → chunk-657I6PUF.js} +3 -3
  104. package/dist/{chunk-OE7TAEOG.js → chunk-6777GNWI.js} +1 -1
  105. package/dist/{chunk-HYZV25LY.js → chunk-67IVG6CB.js} +1 -11
  106. package/dist/{chunk-5N34MMKS.js → chunk-6APOLYIZ.js} +43 -3
  107. package/dist/{chunk-TBYWOHTE.js → chunk-6BD6JYR2.js} +1 -1
  108. package/dist/{chunk-JJYAETCO.js → chunk-6DMURUBY.js} +4 -4
  109. package/dist/{chunk-W5XAB2SW.js → chunk-6HJF7IA3.js} +273 -206
  110. package/dist/{chunk-HRKN3DQE.js → chunk-6J2J3VJS.js} +11 -11
  111. package/dist/{chunk-XFGS22VE.js → chunk-6PXFF6IV.js} +1 -1
  112. package/dist/{chunk-RZ23QQCI.js → chunk-7HLAYQRG.js} +4 -4
  113. package/dist/{chunk-IUBCS6TA.js → chunk-7KPZQ65I.js} +3 -3
  114. package/dist/{chunk-SYUJCVJG.js → chunk-7PDZBPGW.js} +1 -1
  115. package/dist/{chunk-VLAENYCN.js → chunk-7SHU5MOD.js} +1 -1
  116. package/dist/{chunk-6RRPVE5O.js → chunk-A5I2GYVQ.js} +3 -3
  117. package/dist/{chunk-X4V5ZLNX.js → chunk-A75TAU2I.js} +628 -4
  118. package/dist/{chunk-SGR4ZQAV.js → chunk-BE3UETW6.js} +3 -3
  119. package/dist/{chunk-GG73NHZD.js → chunk-BG6RAOCJ.js} +63 -9
  120. package/dist/{chunk-DMYJVGQM.js → chunk-BIPTWAEO.js} +1 -1
  121. package/dist/{chunk-B3ISLIKE.js → chunk-BLTXAUP6.js} +2 -2
  122. package/dist/{chunk-G2M7WQ2M.js → chunk-CBC3JCIF.js} +1 -1
  123. package/dist/{chunk-FJKUFMNF.js → chunk-CFFSHBQF.js} +1 -1
  124. package/dist/{chunk-WYNIWJRN.js → chunk-CJ6CS2IH.js} +5 -5
  125. package/dist/{chunk-7LTAA55U.js → chunk-CRW63CDI.js} +1 -1
  126. package/dist/{chunk-BHDDDNC6.js → chunk-CWHTUNJX.js} +2 -2
  127. package/dist/{chunk-FZT4VQP7.js → chunk-D6NZNUVH.js} +1 -1
  128. package/dist/{chunk-GKPPLIMJ.js → chunk-DHLJZDWI.js} +4 -4
  129. package/dist/{chunk-JR3GTBV3.js → chunk-DRHTRVDT.js} +1 -1
  130. package/dist/{chunk-GTRB6DGI.js → chunk-DWRULKB3.js} +2 -2
  131. package/dist/{chunk-DIKLSAJE.js → chunk-EOWJXCYC.js} +25 -7
  132. package/dist/{chunk-4W7Y67B5.js → chunk-EWDBWOCX.js} +1 -1
  133. package/dist/{chunk-EHILXBVT.js → chunk-FPF2PJFK.js} +3 -3
  134. package/dist/{chunk-BPBEJD7U.js → chunk-FSXMKIDO.js} +1 -1
  135. package/dist/{chunk-E2Z3F26R.js → chunk-FUDXITKX.js} +1 -1
  136. package/dist/{chunk-SFGFNJBR.js → chunk-FYV2CTKP.js} +1 -1
  137. package/dist/{chunk-4M24XCTI.js → chunk-GATAYYAF.js} +53 -7
  138. package/dist/{chunk-L5CPS34O.js → chunk-GHYHNHDL.js} +1 -1
  139. package/dist/{chunk-OISOA6NX.js → chunk-GL5ZG72X.js} +1 -1
  140. package/dist/{chunk-XAGIZVYI.js → chunk-GM4UEZDE.js} +181 -1625
  141. package/dist/{chunk-4O7OUBEX.js → chunk-GZVFHFO3.js} +27 -140
  142. package/dist/{chunk-M4N7I2H5.js → chunk-HA6BIZ6L.js} +5 -5
  143. package/dist/chunk-HDQAVAV6.js +248 -0
  144. package/dist/{chunk-IPANAGA3.js → chunk-HDV2V25K.js} +1 -1
  145. package/dist/{chunk-XGPBHKU3.js → chunk-HTFM7ZDD.js} +2 -2
  146. package/dist/{chunk-KPLMY2GT.js → chunk-HUHR5CKJ.js} +4 -4
  147. package/dist/{chunk-IPBNHPTE.js → chunk-IC2AONBH.js} +9 -9
  148. package/dist/{chunk-23XUZHB7.js → chunk-IHAXXDBH.js} +245 -36
  149. package/dist/{chunk-4S6H2NWS.js → chunk-IPUDXR67.js} +1 -1
  150. package/dist/{chunk-UXJAW4IQ.js → chunk-J6U4ZR77.js} +2 -2
  151. package/dist/{chunk-7I6KVKFF.js → chunk-JAIZCE6W.js} +3 -3
  152. package/dist/{chunk-SA66WRBT.js → chunk-JGBYZTWH.js} +1 -1
  153. package/dist/{chunk-HRYWB4TO.js → chunk-JJZZXEAN.js} +3 -3
  154. package/dist/{chunk-IZ24HRDC.js → chunk-JNULO6I5.js} +3 -3
  155. package/dist/{chunk-YVS77JPW.js → chunk-JTJP4JK7.js} +3 -3
  156. package/dist/{chunk-BIV4IHED.js → chunk-JW5NUXPN.js} +15 -28
  157. package/dist/{chunk-NFNM64A7.js → chunk-K2HIXAIF.js} +22 -18
  158. package/dist/{chunk-F5ZRHLG5.js → chunk-KEDZRQI3.js} +2 -2
  159. package/dist/{chunk-QPMKVSHU.js → chunk-KN5GAVCG.js} +2 -2
  160. package/dist/{chunk-3MDUKF3N.js → chunk-L5JFVK5T.js} +5 -4
  161. package/dist/{chunk-FBZ32BD4.js → chunk-LBSCOP25.js} +1 -1
  162. package/dist/{chunk-K7DAE2HO.js → chunk-LLZUL7M2.js} +19 -6
  163. package/dist/{chunk-PCFYNK7V.js → chunk-LQGLGSBY.js} +2 -2
  164. package/dist/{chunk-APVU4Q5B.js → chunk-LSHUX7P4.js} +16 -16
  165. package/dist/{chunk-GRAMRMWS.js → chunk-M6AX64J2.js} +2 -2
  166. package/dist/{chunk-52Z435PH.js → chunk-M6SUJLNP.js} +15 -10
  167. package/dist/{chunk-GPWXUU3L.js → chunk-MZNLQC6W.js} +1 -1
  168. package/dist/{chunk-G3ZYXXO7.js → chunk-N7POJZJT.js} +10 -10
  169. package/dist/{chunk-DE2V7547.js → chunk-NCNT2C2P.js} +2 -2
  170. package/dist/{chunk-HK7HIDXP.js → chunk-O3BLL6MY.js} +1 -1
  171. package/dist/{chunk-YLWKWEJJ.js → chunk-O6KQAJCC.js} +3 -3
  172. package/dist/{chunk-QUK3UDZV.js → chunk-OHHZNNUD.js} +1 -1
  173. package/dist/{chunk-6JLVCMKH.js → chunk-PDQGR5LZ.js} +1 -1
  174. package/dist/{chunk-LE3DIA25.js → chunk-PTF5TB6O.js} +3 -3
  175. package/dist/{chunk-KBHK2WNO.js → chunk-PYXXL7N7.js} +1 -1
  176. package/dist/{chunk-QK3Z4TKQ.js → chunk-Q6KUBP6R.js} +5 -5
  177. package/dist/{chunk-NDCW4G55.js → chunk-QJWLQXR7.js} +1 -1
  178. package/dist/{chunk-ME733Y2F.js → chunk-QOFQY7BJ.js} +37 -9
  179. package/dist/{chunk-HFXBL7XE.js → chunk-QSW5DHMZ.js} +1 -1
  180. package/dist/{chunk-OFT5KSBM.js → chunk-QV26G2BF.js} +1 -1
  181. package/dist/{chunk-LVEMYNYH.js → chunk-RHHEYC6H.js} +3 -3
  182. package/dist/{chunk-QYIR64RR.js → chunk-RHJOTGEU.js} +1 -1
  183. package/dist/{chunk-HUMNRJZE.js → chunk-RJIH7JXM.js} +4 -4
  184. package/dist/{chunk-6TB7UXCA.js → chunk-RMC2A6EE.js} +1 -1
  185. package/dist/{chunk-XCPD7NGP.js → chunk-RYMXD2NT.js} +1 -1
  186. package/dist/{chunk-W2VDJKTB.js → chunk-RYYFFCJG.js} +1 -1
  187. package/dist/{chunk-YUAOQJVV.js → chunk-SINIRUYZ.js} +101 -9
  188. package/dist/{chunk-R7QZXQPU.js → chunk-SXUABANK.js} +216 -147
  189. package/dist/{backup-verify-QIAQ63VC.js → chunk-T3AM52YT.js} +411 -90
  190. package/dist/{chunk-NK4JHJNP.js → chunk-TCBWHLKH.js} +4 -4
  191. package/dist/{chunk-R6CKQLEA.js → chunk-TS4LSNRI.js} +2 -2
  192. package/dist/{chunk-4Q7H3TO7.js → chunk-TVWYMOZ4.js} +1 -1
  193. package/dist/{chunk-TCV3WA5I.js → chunk-VAHQOIQY.js} +1 -1
  194. package/dist/{chunk-ZEHBSA25.js → chunk-VQQPYI4X.js} +1 -1
  195. package/dist/{chunk-PZDAPIQL.js → chunk-VS7V5HNO.js} +1 -1
  196. package/dist/{chunk-7R7KDRKV.js → chunk-W7VKGB42.js} +1 -1
  197. package/dist/{chunk-M7774YLB.js → chunk-WC44PNZU.js} +1 -1
  198. package/dist/{chunk-3AL2LO3L.js → chunk-WHUQ44F2.js} +1 -1
  199. package/dist/{chunk-4RQ62XXK.js → chunk-X2ZHCNNB.js} +5 -5
  200. package/dist/{chunk-T2PAFWRK.js → chunk-X4FHT6ST.js} +5 -5
  201. package/dist/{chunk-N3JEYUDV.js → chunk-XC5OASHV.js} +1 -1
  202. package/dist/{agent-defs-generator-QN3J6FVJ.js → chunk-XDOCXKHW.js} +61 -21
  203. package/dist/{chunk-OEHZ46WQ.js → chunk-XEAZJXMZ.js} +2 -2
  204. package/dist/{chunk-DACRR362.js → chunk-XQ7BIVLI.js} +6 -6
  205. package/dist/{chunk-7P2TDFZL.js → chunk-Z3LGAFMG.js} +1 -1
  206. package/dist/{chunk-GEQQGN3J.js → chunk-ZJ6AMC4Y.js} +7 -7
  207. package/dist/{chunk-IURGBN5B.js → chunk-ZZR2WRNW.js} +4 -4
  208. package/dist/{cleanup-graph-garbage-NKAJSCWZ.js → cleanup-graph-garbage-SYGPMPUM.js} +8 -8
  209. package/dist/{cli-shutdown-F3DFDCB5.js → cli-shutdown-JI7CASE4.js} +1 -1
  210. package/dist/{cloud-sync-command-3YBLSMAL.js → cloud-sync-command-ZV3P5FP6.js} +2 -2
  211. package/dist/{cloud-sync-db-init-JWSPAFKY.js → cloud-sync-db-init-RQIHWKV4.js} +1 -1
  212. package/dist/{cloud-sync-shutdown-4R6RIO67.js → cloud-sync-shutdown-V2N7VLD3.js} +3 -3
  213. package/dist/{co-activation-2ZRANV3Q.js → co-activation-SRE6DIRX.js} +3 -3
  214. package/dist/{co-occurrence-6EELW2L2.js → co-occurrence-F5TMSEQZ.js} +6 -6
  215. package/dist/{consent-passphrase-TDR263MC.js → consent-passphrase-MWZRHJRC.js} +2 -2
  216. package/dist/content-extractor-GWF2T7FK.js +13 -0
  217. package/dist/{conversation-entity-extractor-KUJN3MOH.js → conversation-entity-extractor-XMOUHGMT.js} +3 -3
  218. package/dist/{crdt-sync-IX43KVQ3.js → crdt-sync-FXEKABM7.js} +4 -4
  219. package/dist/{crm-webhook-GSCIW6CE.js → crm-webhook-D6IJOPRQ.js} +2 -2
  220. package/dist/{cto-delegation-gate-ZWD4EFRR.js → cto-delegation-gate-BU3JRCYN.js} +12 -15
  221. package/dist/{daemon-orchestration-WL6V4QL4.js → daemon-orchestration-K4NKFYXO.js} +19 -21
  222. package/dist/{destructive-data-guard-JDUJ2ULM.js → destructive-data-guard-3TGAAE7K.js} +77 -23
  223. package/dist/{doc-graph-extractor-NJ7ZZC2C.js → doc-graph-extractor-TVK2NGAR.js} +6 -6
  224. package/dist/{documents-O7WYZFFE.js → documents-MDZ4VB5X.js} +8 -8
  225. package/dist/{dreaming-TUESPDT3.js → dreaming-L24PSS35.js} +17 -20
  226. package/dist/{employee-boot-brief-UCP6QLN4.js → employee-boot-brief-GQVL3FQC.js} +23 -25
  227. package/dist/{entity-boost-TK43XT24.js → entity-boost-OMFA5QCG.js} +2 -2
  228. package/dist/{exe-drift-QD6LUZT2.js → exe-drift-JDDG3OPT.js} +4 -4
  229. package/dist/{exe-export-QIUNHFSS.js → exe-export-EEGIE3JP.js} +10 -10
  230. package/dist/{exe-import-3UFOLHEW.js → exe-import-UJNC5Q2L.js} +10 -10
  231. package/dist/{exe-key-D5NDKGHT.js → exe-key-TYEY4W4E.js} +97 -97
  232. package/dist/{exe-org-UWDJBOCV.js → exe-org-B3ICTTEV.js} +32 -32
  233. package/dist/{exe-snapshot-P6SFODEN.js → exe-snapshot-VBFBONYN.js} +20 -23
  234. package/dist/{fast-db-init-SD7JZSEC.js → fast-db-init-TFRTK6EH.js} +1 -1
  235. package/dist/{founder-context-QIXDZIJX.js → founder-context-3X4QUWKD.js} +2 -2
  236. package/dist/{founder-monitor-envelope-TLOC4UYG.js → founder-monitor-envelope-54UNZNY4.js} +4 -4
  237. package/dist/gateway/index.js +11 -11
  238. package/dist/{gateway-client-CQTSYJLP.js → gateway-client-OUDO5GGV.js} +1 -1
  239. package/dist/{git-staleness-JSQTHB4Z.js → git-staleness-73YZ5PGU.js} +3 -3
  240. package/dist/{global-procedures-T3RKI4QX.js → global-procedures-PYNE2BQG.js} +20 -6
  241. package/dist/{graph-auto-extract-V75GSTNX.js → graph-auto-extract-PGUMEEQB.js} +6 -6
  242. package/dist/{graph-query-VAQN2RK3.js → graph-query-7YA3YNKL.js} +1 -1
  243. package/dist/{graph-rag-GBA5E3QC.js → graph-rag-UWOTK4AQ.js} +3 -3
  244. package/dist/{hook-integrity-II6QK6Y4.js → hook-integrity-6MNEPT6W.js} +1 -1
  245. package/dist/{hook-prefetch-5EHPOYY3.js → hook-prefetch-JOF6YZSR.js} +13 -16
  246. package/dist/hooks/bug-report-worker.js +17 -20
  247. package/dist/hooks/codex-stop-task-finalizer.js +19 -22
  248. package/dist/hooks/commit-complete.js +16 -19
  249. package/dist/hooks/error-recall.js +14 -14
  250. package/dist/hooks/exe-heartbeat-hook.js +5 -5
  251. package/dist/hooks/ingest-worker.js +18 -20
  252. package/dist/hooks/ingest.js +16 -16
  253. package/dist/hooks/instructions-loaded.js +7 -7
  254. package/dist/hooks/manifest.json +20 -20
  255. package/dist/hooks/notification.js +6 -6
  256. package/dist/hooks/post-compact.js +5 -5
  257. package/dist/hooks/post-tool-combined.js +13 -13
  258. package/dist/hooks/pre-compact.js +16 -19
  259. package/dist/hooks/pre-tool-use.js +2 -2
  260. package/dist/hooks/prompt-submit.js +40 -39
  261. package/dist/hooks/session-end.js +21 -24
  262. package/dist/hooks/session-start.js +18 -18
  263. package/dist/hooks/stop.js +19 -22
  264. package/dist/hooks/subagent-stop.js +18 -21
  265. package/dist/hooks/summary-worker.js +20 -23
  266. package/dist/index.js +25 -28
  267. package/dist/{installer-XEEZSF3V.js → installer-34XZ7JMW.js} +7 -8
  268. package/dist/{installer-MPVQ5L22.js → installer-356RMQ2K.js} +7 -8
  269. package/dist/{installer-ILYC4LI5.js → installer-7TN36Z7T.js} +113 -30
  270. package/dist/{intercom-queue-QGHAW2KO.js → intercom-queue-ZJ3MNULM.js} +12 -15
  271. package/dist/lib/backup-verify-worker.js +157 -0
  272. package/dist/lib/cloud-sync.js +16 -20
  273. package/dist/lib/consolidation.js +9 -9
  274. package/dist/lib/crypto.js +3 -3
  275. package/dist/lib/database.js +3 -3
  276. package/dist/lib/db-backup.js +7 -3
  277. package/dist/lib/db-write-worker.js +3 -3
  278. package/dist/lib/db.js +3 -3
  279. package/dist/lib/device-registry.js +1 -1
  280. package/dist/lib/employee-templates.js +7 -7
  281. package/dist/lib/employees.js +3 -3
  282. package/dist/lib/error-detector.js +2 -2
  283. package/dist/lib/exe-daemon.js +89 -87
  284. package/dist/lib/hybrid-search.js +11 -11
  285. package/dist/lib/identity.js +5 -3
  286. package/dist/lib/keychain.js +1 -1
  287. package/dist/lib/license.js +2 -2
  288. package/dist/lib/messaging.js +13 -16
  289. package/dist/lib/post-tool-memory.js +16 -18
  290. package/dist/lib/registry-proxy.js +1 -1
  291. package/dist/lib/reminders.js +4 -4
  292. package/dist/lib/schedules.js +8 -8
  293. package/dist/lib/session-registry.js +5 -5
  294. package/dist/lib/skill-learning.js +9 -9
  295. package/dist/lib/store.js +7 -7
  296. package/dist/lib/task-router.js +4 -4
  297. package/dist/lib/tasks.js +14 -17
  298. package/dist/lib/tmux-routing.js +14 -41
  299. package/dist/lib/token-spend.js +4 -4
  300. package/dist/lib/ws-client.js +1 -1
  301. package/dist/{license-gate-CARN6AB6.js → license-gate-4BXUTHLB.js} +3 -3
  302. package/dist/{license-recheck-7Z3LS6YS.js → license-recheck-QFPUKISQ.js} +1 -1
  303. package/dist/{license-sync-PUQV3HSZ.js → license-sync-FDEDT4AC.js} +2 -2
  304. package/dist/mcp/register-tools.js +96 -96
  305. package/dist/mcp/server.js +96 -96
  306. package/dist/mcp/tools/complete-reminder.js +5 -5
  307. package/dist/mcp/tools/create-reminder.js +5 -5
  308. package/dist/mcp/tools/create-task.js +16 -19
  309. package/dist/mcp/tools/deactivate-behavior.js +10 -10
  310. package/dist/mcp/tools/list-reminders.js +5 -5
  311. package/dist/mcp/tools/list-tasks.js +16 -19
  312. package/dist/mcp/tools/send-message.js +15 -18
  313. package/dist/mcp/tools/update-task.js +15 -18
  314. package/dist/{mcp-http-config-RJKTZPHZ.js → mcp-http-config-GKP5QGAO.js} +5 -5
  315. package/dist/{mcp-session-identity-HN444A3G.js → mcp-session-identity-JHAGRB7B.js} +12 -15
  316. package/dist/{memory-cards-AT3QCCWU.js → memory-cards-O377ETAM.js} +8 -8
  317. package/dist/{memory-graph-extractor-B43UWGV5.js → memory-graph-extractor-4KJCCUOP.js} +7 -7
  318. package/dist/{memory-maintenance-WDLL3ZX3.js → memory-maintenance-RR5UPRW3.js} +1 -1
  319. package/dist/{memory-poisoning-defense-TS4WNW4S.js → memory-poisoning-defense-Y5TTKGOP.js} +3 -3
  320. package/dist/{memory-pressure-watchdog-6YH7S6W7.js → memory-pressure-watchdog-NGXTI4HR.js} +13 -16
  321. package/dist/{memory-reflection-N6NSYW6S.js → memory-reflection-EXNHRZL7.js} +8 -8
  322. package/dist/{memory-write-repository-D35RDO62.js → memory-write-repository-S4TX7WQB.js} +1 -1
  323. package/dist/{monitor-grants-FH4PNYN5.js → monitor-grants-57Q4NL25.js} +3 -3
  324. package/dist/{monitor-identity-LK5ZCCND.js → monitor-identity-3FQ52SYU.js} +2 -2
  325. package/dist/{notification-ledger-3WJYJGGS.js → notification-ledger-O6KQYYGK.js} +13 -16
  326. package/dist/{notifications-T5C2CVB3.js → notifications-6FCQCJ4P.js} +12 -15
  327. package/dist/{orchestration-events-73VEJT7Q.js → orchestration-events-2Z2BMMA5.js} +4 -4
  328. package/dist/{orchestrator-3O657734.js → orchestrator-AGOSKPHD.js} +14 -17
  329. package/dist/{org-brief-session-EGB35QLM.js → org-brief-session-WJHZVXXJ.js} +15 -15
  330. package/dist/{org-consent-policy-MSVSRI53.js → org-consent-policy-X43UGTHI.js} +5 -5
  331. package/dist/{org-join-4BK2XJJI.js → org-join-M3UTBMHC.js} +9 -9
  332. package/dist/{org-key-admin-EUSSGXQ3.js → org-key-admin-AA2DRHB2.js} +11 -11
  333. package/dist/{org-key-epoch-NMEWDT5L.js → org-key-epoch-Z5UIVUHT.js} +5 -5
  334. package/dist/{org-key-pin-HUSXGINB.js → org-key-pin-FE6YHEZ3.js} +3 -3
  335. package/dist/{org-membership-B74IWEM5.js → org-membership-3J2MIGE4.js} +4 -4
  336. package/dist/{org-partner-config-5FJTJABN.js → org-partner-config-5HATZYG4.js} +8 -8
  337. package/dist/{org-partner-runtime-GN4GFWI2.js → org-partner-runtime-UI35IHUC.js} +15 -15
  338. package/dist/{org-row-visibility-PBZ2TSCR.js → org-row-visibility-TRJERVYP.js} +1 -1
  339. package/dist/{pipeline-router-2IELBSVJ.js → pipeline-router-EKQ6D7ZA.js} +4 -4
  340. package/dist/{plan-limits-4GXK5PFT.js → plan-limits-3BGHIHX6.js} +6 -6
  341. package/dist/{platform-procedures-QP3W2NLH.js → platform-procedures-RXW46WNY.js} +1 -1
  342. package/dist/{pre-tool-use-impl-CY73PRJP.js → pre-tool-use-impl-7BT5TJVM.js} +35 -33
  343. package/dist/{project-name-337ERIAX.js → project-name-PGJGUEJY.js} +4 -4
  344. package/dist/{projection-worker-W476IG6V.js → projection-worker-3GEVFPAI.js} +2 -2
  345. package/dist/{prospective-memory-5INB7NUL.js → prospective-memory-GEN7CN7H.js} +3 -3
  346. package/dist/{push-notifications-YVOP4KGN.js → push-notifications-QW4BWRC7.js} +13 -16
  347. package/dist/{reproject-worktree-memories-OGBR3CMO.js → reproject-worktree-memories-DIULBEBD.js} +12 -15
  348. package/dist/{reranker-W7WCJH6Y.js → reranker-LQ6OPJOI.js} +1 -1
  349. package/dist/{retrieval-health-R6MGXLTP.js → retrieval-health-XDFYFEOP.js} +1 -1
  350. package/dist/{review-polling-TKAWVY6G.js → review-polling-ED33YLFT.js} +13 -16
  351. package/dist/runtime/index.js +20 -23
  352. package/dist/{session-events-HUCZ7TOR.js → session-events-7IJGTBVH.js} +13 -16
  353. package/dist/{session-kill-telemetry-RWRWOW4C.js → session-kill-telemetry-RUTEARJ3.js} +13 -16
  354. package/dist/{session-scope-5CDRHV75.js → session-scope-SSYA64L3.js} +12 -15
  355. package/dist/{setup-wizard-RBTJAZOP.js → setup-wizard-XD7FZVLJ.js} +2 -2
  356. package/dist/{shard-manager-LRPAAQA4.js → shard-manager-FH5JZRSE.js} +2 -2
  357. package/dist/{skill-refinement-MDXKDCY6.js → skill-refinement-UHD4E6GV.js} +4 -4
  358. package/dist/{skill-retrieval-OWY6MTCX.js → skill-retrieval-F6PAJ3I5.js} +11 -11
  359. package/dist/{skill-usage-GNV737U5.js → skill-usage-2MBTF7Y4.js} +4 -4
  360. package/dist/{stack-generate-manifest-S4SBLKBY.js → stack-generate-manifest-SU6OFFY7.js} +4 -4
  361. package/dist/{stack-promote-U4EZNLOV.js → stack-promote-MJF436JD.js} +4 -4
  362. package/dist/{stack-release-4VBGOYGK.js → stack-release-S37R57XC.js} +5 -5
  363. package/dist/{stack-update-C5YKHE7A.js → stack-update-XXDRKGGR.js} +3 -3
  364. package/dist/{steward-gate-QFPXQBUZ.js → steward-gate-EWG2BHYQ.js} +4 -4
  365. package/dist/{subagent-brief-injection-GDXO5WNS.js → subagent-brief-injection-YZGSWUEY.js} +25 -27
  366. package/dist/{support-bug-actions-4XEKXIIO.js → support-bug-actions-RU6WZ3UV.js} +3 -3
  367. package/dist/{support-inbox-Y7AFCOGM.js → support-inbox-A3S52SPS.js} +12 -12
  368. package/dist/{task-enforcement-CN3Q4PEH.js → task-enforcement-LVAS55AR.js} +13 -16
  369. package/dist/{task-request-inbox-AY3C6DND.js → task-request-inbox-2TN4ZUH2.js} +5 -5
  370. package/dist/{task-scope-AMR3Z3DJ.js → task-scope-NLKUVCP5.js} +12 -15
  371. package/dist/{tasks-crud-2GHKIZOM.js → tasks-crud-NQDPLHNZ.js} +14 -15
  372. package/dist/{tasks-notify-Z53446KM.js → tasks-notify-BDM2NEHP.js} +13 -16
  373. package/dist/{tasks-review-APRNSHMQ.js → tasks-review-3G7CAW2O.js} +12 -15
  374. package/dist/{telemetry-upload-5XR42SQN.js → telemetry-upload-6DR6AL3V.js} +8 -8
  375. package/dist/{token-budget-TTNJXI7W.js → token-budget-KNC2WGR7.js} +4 -4
  376. package/dist/{tool-telemetry-36ST422N.js → tool-telemetry-I3SEU5M5.js} +1 -1
  377. package/dist/tui/App.js +23 -26
  378. package/dist/{tui-data-AP5TPUOQ.js → tui-data-KJDWP4CB.js} +16 -19
  379. package/dist/{update-support-SFTI2PUD.js → update-support-UYDYMHVR.js} +11 -11
  380. package/dist/{whatsapp-5CXE3JHG.js → whatsapp-5EMPZHF5.js} +2 -2
  381. package/dist/{wiki-acl-N754BC2W.js → wiki-acl-M7BTQJBZ.js} +1 -1
  382. package/dist/{work-claims-OAICQBWO.js → work-claims-5CFMZTML.js} +4 -4
  383. package/dist/{work-state-heartbeat-MTTUGMPU.js → work-state-heartbeat-7IA2DZ2E.js} +1 -1
  384. package/dist/{workflow-engine-RID3QL2U.js → workflow-engine-S5JOE2YR.js} +2 -2
  385. package/dist/{worktree-XWVNDBRD.js → worktree-7V4ZMF3D.js} +5 -5
  386. package/dist/{worktree-sweep-6VEHGH7U.js → worktree-sweep-34MXJ7S6.js} +6 -6
  387. package/package.json +2 -1
  388. package/release-notes.json +25 -7
  389. package/stack.release.json +3 -3
  390. package/dist/chunk-ESO5JDOT.js +0 -70
  391. package/dist/chunk-KCRSJ3VU.js +0 -113
  392. package/dist/content-extractor-OVD7PTSN.js +0 -9
  393. /package/dist/{chunk-OLMLA377.js → chunk-542FBM5U.js} +0 -0
  394. /package/dist/{chunk-LDHJX4TZ.js → chunk-6D2O5SAH.js} +0 -0
  395. /package/dist/{chunk-33PG3KNY.js → chunk-6NRZLVK3.js} +0 -0
  396. /package/dist/{chunk-CLV7ALXV.js → chunk-CFO47VW4.js} +0 -0
  397. /package/dist/{chunk-FLO24BNN.js → chunk-EULAP6L6.js} +0 -0
  398. /package/dist/{chunk-PKM456D2.js → chunk-FYSKQPTE.js} +0 -0
  399. /package/dist/{chunk-WIDOLS7T.js → chunk-J4B4M5PH.js} +0 -0
  400. /package/dist/{chunk-YBB43SXC.js → chunk-J635FA7T.js} +0 -0
  401. /package/dist/{chunk-64UAHPXA.js → chunk-MOBZTIJQ.js} +0 -0
  402. /package/dist/{chunk-EZQ4W3WW.js → chunk-N45FAI6D.js} +0 -0
  403. /package/dist/{chunk-OEEHLATI.js → chunk-QDSNEGJE.js} +0 -0
  404. /package/dist/{chunk-YG4DZZ6J.js → chunk-SKSXROKP.js} +0 -0
  405. /package/dist/{chunk-FUZHMV7K.js → chunk-YVWXI2HM.js} +0 -0
  406. /package/dist/{core-memory-WR7I7DIP.js → core-memory-PZEO3OWH.js} +0 -0
  407. /package/dist/{memory-isolation-4RQJ5RCK.js → memory-isolation-MFNT2ITE.js} +0 -0
  408. /package/dist/{oauth-server-VBDMZIEV.js → oauth-server-CBGEWD6H.js} +0 -0
  409. /package/dist/{project-boot-G7T5WHO6.js → project-boot-VESAYDIH.js} +0 -0
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  routeTask
3
- } from "./chunk-7R7KDRKV.js";
3
+ } from "./chunk-W7VKGB42.js";
4
4
  import {
5
5
  createTaskCore,
6
6
  employeeSessionName,
@@ -9,11 +9,11 @@ import {
9
9
  isEmployeeAlive,
10
10
  sessionScopeFilter,
11
11
  updateTaskStatus
12
- } from "./chunk-XAGIZVYI.js";
12
+ } from "./chunk-GM4UEZDE.js";
13
13
  import {
14
14
  DEFAULT_COORDINATOR_TEMPLATE_NAME,
15
15
  getCoordinatorName
16
- } from "./chunk-3MDUKF3N.js";
16
+ } from "./chunk-L5JFVK5T.js";
17
17
 
18
18
  // src/runtime/orchestrator.ts
19
19
  var STALE_THRESHOLD_MS = 2 * 60 * 60 * 1e3;
@@ -1,13 +1,19 @@
1
1
  import {
2
2
  behaviorTruncationNotice
3
- } from "./chunk-YVS77JPW.js";
3
+ } from "./chunk-JTJP4JK7.js";
4
4
  import {
5
5
  countActiveBehaviors,
6
6
  listBehaviors
7
- } from "./chunk-F5ZRHLG5.js";
7
+ } from "./chunk-KEDZRQI3.js";
8
+ import {
9
+ isInitialized
10
+ } from "./chunk-L5JFVK5T.js";
8
11
  import {
9
12
  loadConfigSync
10
13
  } from "./chunk-MMS2HBRT.js";
14
+ import {
15
+ atomicWriteSync
16
+ } from "./chunk-HSGBZSCA.js";
11
17
 
12
18
  // src/lib/behaviors-export.ts
13
19
  import os from "os";
@@ -17,8 +23,7 @@ import {
17
23
  mkdirSync,
18
24
  readdirSync,
19
25
  statSync,
20
- unlinkSync,
21
- writeFileSync
26
+ unlinkSync
22
27
  } from "fs";
23
28
  var BEHAVIORS_EXPORT_DIR = path.join(
24
29
  os.homedir(),
@@ -35,6 +40,19 @@ function getBehaviorLimit() {
35
40
  return DEFAULT_BEHAVIOR_LIMIT;
36
41
  }
37
42
  }
43
+ var SWEEPABLE_EXPORT_SHAPES = [
44
+ // Session-scoped export: `<agent>-<safeProject>-<sessionKey>.md` (exportFilePath
45
+ // with a sessionKey; safeProject may be empty, giving `<agent>--<key>.md`).
46
+ /^[a-z][a-z0-9]*-[A-Za-z0-9_-]*-.+\.md$/,
47
+ // Spawn-scoped boot snapshot written by exe-launch-agent: `<agent>-boot.md`.
48
+ /^[a-z][a-z0-9]*-boot\.md$/,
49
+ // Orphaned atomic-write temp file (crash between write and rename):
50
+ // `<name>.tmp.<pid>.<uuid>`, see atomicWriteSync.
51
+ /\.tmp\.\d+\.[0-9a-f-]{36}$/
52
+ ];
53
+ function isSweepableBehaviorExport(entry) {
54
+ return SWEEPABLE_EXPORT_SHAPES.some((re) => re.test(entry));
55
+ }
38
56
  function sweepStaleBehaviorExports(now = Date.now()) {
39
57
  if (!existsSync(BEHAVIORS_EXPORT_DIR)) return;
40
58
  let entries;
@@ -44,6 +62,7 @@ function sweepStaleBehaviorExports(now = Date.now()) {
44
62
  return;
45
63
  }
46
64
  for (const entry of entries) {
65
+ if (!isSweepableBehaviorExport(entry)) continue;
47
66
  const filePath = path.join(BEHAVIORS_EXPORT_DIR, entry);
48
67
  try {
49
68
  const stat = statSync(filePath);
@@ -87,19 +106,54 @@ function exportFilePath(agentId, projectName, sessionKey) {
87
106
  `${agentId}-${safeProject}-${sessionKey}.md`
88
107
  );
89
108
  }
109
+ function existingExport(target) {
110
+ try {
111
+ return existsSync(target) && statSync(target).size > 0 ? target : null;
112
+ } catch {
113
+ return null;
114
+ }
115
+ }
90
116
  async function exportBehaviorsForAgent(agentId, projectName, sessionKey) {
91
117
  mkdirSync(BEHAVIORS_EXPORT_DIR, { recursive: true });
92
- sweepStaleBehaviorExports();
93
- const behaviors = await listBehaviors(agentId, projectName, getBehaviorLimit());
94
- if (behaviors.length === 0) return null;
118
+ const target = exportFilePath(agentId, projectName, sessionKey);
119
+ let behaviors;
120
+ try {
121
+ if (!isInitialized()) {
122
+ throw new Error(
123
+ "no DB client is registered in this process: the exe-os daemon did not answer in time (fastDbInit degraded to its no-op client rather than open the encrypted DB as a second writer, bug 96a28cf2) or the store was never initialised. Retry once the daemon is responsive (`exe-os daemon status`), or set EXE_DB_DIRECT=1 to force a direct open"
124
+ );
125
+ }
126
+ behaviors = await listBehaviors(agentId, projectName, getBehaviorLimit());
127
+ } catch (err) {
128
+ const reason = err instanceof Error ? err.message : String(err);
129
+ const cached = existingExport(target);
130
+ if (cached) {
131
+ process.stderr.write(
132
+ `[behaviors-export] STALE: could not refresh behaviors for ${agentId} (${reason}); keeping the previous export at ${cached}.
133
+ `
134
+ );
135
+ return cached;
136
+ }
137
+ throw new Error(
138
+ `behaviors unavailable for ${agentId}: ${reason}. No cached export exists at ${target}, so this session boots without behaviors.`
139
+ );
140
+ }
141
+ if (behaviors.length === 0) {
142
+ try {
143
+ if (existsSync(target)) unlinkSync(target);
144
+ } catch {
145
+ }
146
+ sweepStaleBehaviorExports();
147
+ return null;
148
+ }
95
149
  let counts = { total: behaviors.length, p0: 0 };
96
150
  try {
97
151
  counts = await countActiveBehaviors(agentId, projectName);
98
152
  } catch {
99
153
  }
100
154
  const body = renderBehaviorExport(behaviors, counts);
101
- const target = exportFilePath(agentId, projectName, sessionKey);
102
- writeFileSync(target, body, "utf-8");
155
+ atomicWriteSync(target, body, "utf-8");
156
+ sweepStaleBehaviorExports();
103
157
  return target;
104
158
  }
105
159
 
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  isManagementRole
3
- } from "./chunk-3MDUKF3N.js";
3
+ } from "./chunk-L5JFVK5T.js";
4
4
 
5
5
  // src/lib/transcript-sidechain.ts
6
6
  import { readFileSync } from "fs";
@@ -10,7 +10,7 @@ import {
10
10
  } from "./chunk-BTSWFMEH.js";
11
11
  import {
12
12
  getClient
13
- } from "./chunk-3MDUKF3N.js";
13
+ } from "./chunk-L5JFVK5T.js";
14
14
 
15
15
  // src/lib/work-claims.ts
16
16
  var CLAIM_TTL_MINUTES = 90;
@@ -306,7 +306,7 @@ async function heartbeatClaims(holderSession, ttlMinutes = CLAIM_TTL_MINUTES) {
306
306
  }
307
307
  async function recordClaimEvent(eventType, sessionScope, agentId, payload, severity) {
308
308
  try {
309
- const { recordOrchestrationEventBestEffort } = await import("./orchestration-events-73VEJT7Q.js");
309
+ const { recordOrchestrationEventBestEffort } = await import("./orchestration-events-2Z2BMMA5.js");
310
310
  recordOrchestrationEventBestEffort({
311
311
  eventType,
312
312
  source: "work-claims",
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  isExeMcpTool
3
- } from "./chunk-HYZV25LY.js";
3
+ } from "./chunk-67IVG6CB.js";
4
4
 
5
5
  // src/lib/error-detector.ts
6
6
  import crypto from "crypto";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getClient
3
- } from "./chunk-3MDUKF3N.js";
3
+ } from "./chunk-L5JFVK5T.js";
4
4
 
5
5
  // src/lib/skill-refinement.ts
6
6
  import crypto from "crypto";
@@ -1,23 +1,23 @@
1
1
  import {
2
2
  derivePartnerSealIdentity
3
- } from "./chunk-BHDDDNC6.js";
3
+ } from "./chunk-CWHTUNJX.js";
4
4
  import {
5
5
  pinMismatchReason,
6
6
  pinnedOrgKeyEpochs,
7
7
  readOrgKeyPin
8
- } from "./chunk-XFGS22VE.js";
8
+ } from "./chunk-6PXFF6IV.js";
9
9
  import {
10
10
  derivePartnerSignIdentity,
11
11
  displayFingerprint,
12
12
  signKeyFingerprint
13
- } from "./chunk-GPWXUU3L.js";
13
+ } from "./chunk-MZNLQC6W.js";
14
14
  import {
15
15
  orgMembershipPresent,
16
16
  readActiveOrgMemberships
17
- } from "./chunk-K7DAE2HO.js";
17
+ } from "./chunk-LLZUL7M2.js";
18
18
  import {
19
19
  isValidX25519Recipient
20
- } from "./chunk-VLAENYCN.js";
20
+ } from "./chunk-7SHU5MOD.js";
21
21
 
22
22
  // src/lib/org-partner-config.ts
23
23
  function pickString(rec, ...keys) {
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getClient
3
- } from "./chunk-3MDUKF3N.js";
3
+ } from "./chunk-L5JFVK5T.js";
4
4
  import {
5
5
  loadConfigSync
6
6
  } from "./chunk-MMS2HBRT.js";
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  exportRawPublicKey,
3
3
  privateKeyFromScalar
4
- } from "./chunk-VLAENYCN.js";
4
+ } from "./chunk-7SHU5MOD.js";
5
5
  import {
6
6
  getMasterKey
7
- } from "./chunk-KIJRAZWR.js";
7
+ } from "./chunk-4J77TCTX.js";
8
8
 
9
9
  // src/lib/partner-seal-identity.ts
10
10
  import crypto from "crypto";
@@ -2,7 +2,7 @@ import {
2
2
  getClient,
3
3
  isCoordinatorName,
4
4
  loadEmployeesSync
5
- } from "./chunk-3MDUKF3N.js";
5
+ } from "./chunk-L5JFVK5T.js";
6
6
 
7
7
  // src/lib/steward-gate.ts
8
8
  import crypto from "crypto";
@@ -8,13 +8,13 @@ import {
8
8
  queryTaskRows,
9
9
  resolveExeSession,
10
10
  sendIntercom
11
- } from "./chunk-XAGIZVYI.js";
11
+ } from "./chunk-GM4UEZDE.js";
12
12
  import {
13
13
  getTransport
14
14
  } from "./chunk-VI4ATC6I.js";
15
15
  import {
16
16
  recordOrchestrationEventBestEffort
17
- } from "./chunk-SA66WRBT.js";
17
+ } from "./chunk-JGBYZTWH.js";
18
18
  import {
19
19
  releaseDispatchClaim,
20
20
  tryAcquireDispatchClaim
@@ -29,7 +29,7 @@ import {
29
29
  isCoordinatorName,
30
30
  isMultiInstance,
31
31
  shouldAutoInstance
32
- } from "./chunk-3MDUKF3N.js";
32
+ } from "./chunk-L5JFVK5T.js";
33
33
 
34
34
  // src/lib/tasks-notify.ts
35
35
  var VERIFY_DELAY_MS = 1e4;
@@ -91,7 +91,7 @@ async function dispatchTaskToEmployee(input) {
91
91
  let crossProject = false;
92
92
  if (input.projectName) {
93
93
  try {
94
- const { assertSessionScope } = await import("./session-scope-5CDRHV75.js");
94
+ const { assertSessionScope } = await import("./session-scope-SSYA64L3.js");
95
95
  const check = assertSessionScope("dispatch_task", input.projectName);
96
96
  if (check.reason === "cross_session_denied") {
97
97
  crossProject = true;
@@ -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-C5YKHE7A.js");
215
+ const { rollbackStackUpdate, defaultStackPaths } = await import("./stack-update-XXDRKGGR.js");
216
216
  const paths = defaultStackPaths();
217
217
  await rollbackStackUpdate({
218
218
  manifestRef: paths.manifestRef,
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  sessionScopeFilter
3
- } from "./chunk-XAGIZVYI.js";
3
+ } from "./chunk-GM4UEZDE.js";
4
4
  import {
5
5
  leaseExpiryIso
6
6
  } from "./chunk-E23LNUWJ.js";
7
7
  import {
8
8
  getProjectName
9
- } from "./chunk-4Q7H3TO7.js";
9
+ } from "./chunk-TVWYMOZ4.js";
10
10
 
11
11
  // src/lib/subagent-observability.ts
12
12
  var MAX_RESULT_DIGEST_CHARS = 200;
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-3R7UDPVR.js";
4
4
  import {
5
5
  getDeviceInfo
6
- } from "./chunk-LDHJX4TZ.js";
6
+ } from "./chunk-6D2O5SAH.js";
7
7
  import {
8
8
  EXE_AI_DIR
9
9
  } from "./chunk-MMS2HBRT.js";
@@ -15,6 +15,29 @@ import { createHash, randomUUID } from "crypto";
15
15
  import os from "os";
16
16
  import path from "path";
17
17
  import { jwtVerify, importSPKI } from "jose";
18
+
19
+ // src/lib/license-offline-window.ts
20
+ var MAX_OFFLINE_TRUST_DAYS = 7;
21
+ var OFFLINE_GRACE_CLAIM = "offline_grace_s";
22
+ function offlineTrustWindowMs(payload, maxDays) {
23
+ const local = maxDays * 24 * 60 * 60 * 1e3;
24
+ if (!payload || !(OFFLINE_GRACE_CLAIM in payload)) return local;
25
+ const claim = payload[OFFLINE_GRACE_CLAIM];
26
+ if (typeof claim !== "number" || !Number.isFinite(claim) || claim < 0) return 0;
27
+ return Math.min(local, claim * 1e3);
28
+ }
29
+ function withinOfflineTrustWindow(payload, maxDays) {
30
+ const iat = payload?.iat;
31
+ if (typeof iat !== "number" || !Number.isFinite(iat)) {
32
+ return !(payload && OFFLINE_GRACE_CLAIM in payload);
33
+ }
34
+ return Date.now() < iat * 1e3 + offlineTrustWindowMs(payload, maxDays);
35
+ }
36
+ function proofWithinOfflineTrust(payload) {
37
+ return withinOfflineTrustWindow(payload, MAX_OFFLINE_TRUST_DAYS);
38
+ }
39
+
40
+ // src/lib/license.ts
18
41
  var LICENSE_PATH = path.join(EXE_AI_DIR, "license.key");
19
42
  var GRANDFATHER_PATH = path.join(EXE_AI_DIR, "personal-free-grandfather.json");
20
43
  var PENDING_LICENSE_PATH = path.join(EXE_AI_DIR, "license.key.pending");
@@ -44,12 +67,6 @@ oR8NJBuiITKaerulCXiSiJMX1HP0+h5dHBVfCWQfIVk5BMdsheAMaP806w==
44
67
  -----END PUBLIC KEY-----`;
45
68
  var LICENSE_PUBLIC_KEYS = [LICENSE_PUBLIC_KEY_PEM_2026_06_17, LICENSE_PUBLIC_KEY_PEM, LICENSE_PUBLIC_KEY_PEM_PREV];
46
69
  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
- }
53
70
  function suppliedNumber(value) {
54
71
  return typeof value === "number" && Number.isFinite(value) ? value : null;
55
72
  }
@@ -997,6 +1014,7 @@ function stopLicenseRevalidation() {
997
1014
  }
998
1015
 
999
1016
  export {
1017
+ proofWithinOfflineTrust,
1000
1018
  LICENSE_PUBLIC_KEY_PEM,
1001
1019
  resolveClientLimits,
1002
1020
  markPersonalFreeGrandfather,
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  completeReminder,
3
3
  formatAmbiguousReminder
4
- } from "./chunk-W2VDJKTB.js";
4
+ } from "./chunk-RYYFFCJG.js";
5
5
 
6
6
  // src/mcp/tools/complete-reminder.ts
7
7
  import { z } from "zod";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getClient
3
- } from "./chunk-3MDUKF3N.js";
3
+ } from "./chunk-L5JFVK5T.js";
4
4
 
5
5
  // src/lib/pipeline-router.ts
6
6
  import crypto from "crypto";
@@ -140,8 +140,8 @@ Agent response: ${agentResponse}` : ""
140
140
  }
141
141
  async function sinkEntityExtraction(msg, agentResponse, agentName) {
142
142
  try {
143
- const { extractFromConversation } = await import("./conversation-entity-extractor-KUJN3MOH.js");
144
- const { storeExtraction } = await import("./graph-rag-GBA5E3QC.js");
143
+ const { extractFromConversation } = await import("./conversation-entity-extractor-XMOUHGMT.js");
144
+ const { storeExtraction } = await import("./graph-rag-UWOTK4AQ.js");
145
145
  if ((msg.text?.length ?? 0) < 20) return false;
146
146
  if (msg.isHistorical) return false;
147
147
  const extraction = await extractFromConversation(msg, agentResponse, agentName);
@@ -2,7 +2,7 @@ import {
2
2
  decryptSyncBlob,
3
3
  encryptSyncBlob,
4
4
  isSyncCryptoInitialized
5
- } from "./chunk-OFT5KSBM.js";
5
+ } from "./chunk-QV26G2BF.js";
6
6
 
7
7
  // src/lib/crdt-sync.ts
8
8
  import * as Y from "yjs";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  listReminders
3
- } from "./chunk-W2VDJKTB.js";
3
+ } from "./chunk-RYYFFCJG.js";
4
4
 
5
5
  // src/mcp/tools/list-reminders.ts
6
6
  import { z } from "zod";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  isExeSession
3
- } from "./chunk-XAGIZVYI.js";
3
+ } from "./chunk-GM4UEZDE.js";
4
4
  import {
5
5
  loadConfigSync
6
6
  } from "./chunk-MMS2HBRT.js";
@@ -7,7 +7,7 @@ import {
7
7
  supportProductSchema,
8
8
  supportTaskIdSchema,
9
9
  supportVersionSchema
10
- } from "./chunk-HK7HIDXP.js";
10
+ } from "./chunk-O3BLL6MY.js";
11
11
  import {
12
12
  queueSupportStatusUpdateSync
13
13
  } from "./chunk-L4ISXVC5.js";
@@ -37,11 +37,11 @@ import {
37
37
  } from "./chunk-BYP3DOUU.js";
38
38
  import {
39
39
  getActiveAgent
40
- } from "./chunk-OISOA6NX.js";
40
+ } from "./chunk-GL5ZG72X.js";
41
41
  import {
42
42
  loadLicense,
43
43
  readCachedLicenseToken
44
- } from "./chunk-DIKLSAJE.js";
44
+ } from "./chunk-EOWJXCYC.js";
45
45
  import {
46
46
  EXE_AI_DIR,
47
47
  loadConfig
@@ -52,7 +52,7 @@ import { z as z3 } from "zod";
52
52
  import { readFileSync } from "fs";
53
53
  import { readFile as readFile2 } from "fs/promises";
54
54
  import { join as join2 } from "path";
55
- import { homedir as homedir2 } from "os";
55
+ import { homedir as homedir2, hostname } from "os";
56
56
 
57
57
  // src/mcp/tools/update-bug-report.ts
58
58
  import { z as z2 } from "zod";
@@ -1482,6 +1482,31 @@ function assertInternal() {
1482
1482
  if (!token) throw new Error("AskExe support admin token not configured");
1483
1483
  return token;
1484
1484
  }
1485
+ async function githubLeaseRequest(bugUrl, init) {
1486
+ const token = assertInternal();
1487
+ return fetch(`${bugUrl}/github-lease`, {
1488
+ ...init,
1489
+ headers: { "content-type": "application/json", authorization: `Bearer ${token}`, ...init.headers ?? {} },
1490
+ signal: AbortSignal.timeout(1e4)
1491
+ });
1492
+ }
1493
+ async function acquireGithubLease(bugUrl, holder) {
1494
+ const res = await githubLeaseRequest(bugUrl, { method: "POST", body: JSON.stringify({ holder }) });
1495
+ if (res.ok) {
1496
+ const data = JSON.parse(await res.text());
1497
+ if (typeof data.token === "string" && data.token) return { token: data.token, expires_at: data.expires_at ?? "" };
1498
+ throw new Error(`Lease acquire returned no token: HTTP ${res.status}`);
1499
+ }
1500
+ if (res.status === 409) return "held";
1501
+ if (res.status === 404 || res.status === 405) return "unsupported";
1502
+ throw new Error(`HTTP ${res.status}: ${await res.text()}`);
1503
+ }
1504
+ async function releaseGithubLease(bugUrl, token) {
1505
+ try {
1506
+ await githubLeaseRequest(bugUrl, { method: "DELETE", body: JSON.stringify({ token }) });
1507
+ } catch {
1508
+ }
1509
+ }
1485
1510
  async function requestJson(url, init) {
1486
1511
  const token = assertInternal();
1487
1512
  const res = await fetch(url, {
@@ -1855,7 +1880,7 @@ function registerTriageBugReport(server) {
1855
1880
  const bugUrl = `${endpoint()}/${encodeURIComponent(sanitizeUpstreamId(id))}`;
1856
1881
  const wantsGithubPush = status === "triaged" && push_to_github !== false;
1857
1882
  const errorResult = (text) => ({ isError: true, content: [{ type: "text", text }] });
1858
- const finishClose = async (effectiveStatus, verificationFinal, githubPush) => {
1883
+ const finishClose = async (effectiveStatus, verificationFinal, githubPush, githubLeaseToken) => {
1859
1884
  const attestsByIdentity = verificationFinal.verification_kind === "manual" || verificationFinal.verification_kind === "ops_transcript" || verificationFinal.disposition !== void 0 && verificationFinal.disposition !== "fixed" && verificationFinal.disposition !== "migrated";
1860
1885
  let authorIdentities = [];
1861
1886
  if (isVerifiedStatus(effectiveStatus) && attestsByIdentity) {
@@ -1901,7 +1926,10 @@ function registerTriageBugReport(server) {
1901
1926
  superseded_coverage: verificationFinal.superseded_coverage,
1902
1927
  github_issue_url: verificationFinal.github_issue_url,
1903
1928
  symptoms: verificationFinal.symptoms,
1904
- attribution: resolved.attribution
1929
+ attribution: resolved.attribution,
1930
+ // Bug 33f670b1: proof this PATCH is the live lease holder — the
1931
+ // server refuses a github_issue_url write from anyone else.
1932
+ github_lease_token: githubLeaseToken
1905
1933
  }, "support-inbox:triage_bug")
1906
1934
  });
1907
1935
  let response = fixed_version && !status ? withStatusNotice(
@@ -1953,6 +1981,22 @@ function registerTriageBugReport(server) {
1953
1981
  if (!precheckDelivery.ok) {
1954
1982
  return errorResult(precheckDelivery.message);
1955
1983
  }
1984
+ let lease;
1985
+ const leaseHolder = `${hostname()}#${process.pid}`;
1986
+ let leaseOutcome;
1987
+ try {
1988
+ leaseOutcome = await acquireGithubLease(bugUrl, leaseHolder);
1989
+ } catch (err) {
1990
+ return errorResult(
1991
+ `Could not push bug ${id} to GitHub: failed to acquire the per-bug migration lease (${err instanceof Error ? err.message : String(err)}). Nothing was changed \u2014 retry, or pass push_to_github: false.`
1992
+ );
1993
+ }
1994
+ if (leaseOutcome === "held") {
1995
+ return errorResult(
1996
+ `Could not push bug ${id} to GitHub: another host currently holds this bug's migration lease (it is mid-push). Nothing was changed here \u2014 retry once it finishes, or pass push_to_github: false.`
1997
+ );
1998
+ }
1999
+ if (leaseOutcome !== "unsupported") lease = leaseOutcome;
1956
2000
  try {
1957
2001
  return await withBugGithubLock(canonicalId, async () => {
1958
2002
  let row2;
@@ -2000,13 +2044,15 @@ function registerTriageBugReport(server) {
2000
2044
  const finalVerification = { ...verification };
2001
2045
  finalVerification.disposition = "migrated";
2002
2046
  finalVerification.github_issue_url = githubPush.issueUrl;
2003
- return finishClose("closed", finalVerification, githubPush);
2047
+ return finishClose("closed", finalVerification, githubPush, lease?.token);
2004
2048
  });
2005
2049
  } catch (err) {
2006
2050
  if (err instanceof GithubLockTimeoutError) {
2007
2051
  return errorResult(err.message);
2008
2052
  }
2009
2053
  throw err;
2054
+ } finally {
2055
+ if (lease) void releaseGithubLease(bugUrl, lease.token);
2010
2056
  }
2011
2057
  }
2012
2058
  );
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  executeAction,
3
3
  substituteTemplate
4
- } from "./chunk-CLV7ALXV.js";
4
+ } from "./chunk-CFO47VW4.js";
5
5
 
6
6
  // src/automation/workflow-engine.ts
7
7
  import { randomUUID } from "crypto";
@@ -14,7 +14,7 @@ import {
14
14
  getEmployee,
15
15
  isCoordinatorRole,
16
16
  loadEmployeesSync
17
- } from "./chunk-3MDUKF3N.js";
17
+ } from "./chunk-L5JFVK5T.js";
18
18
  import {
19
19
  EXE_AI_DIR
20
20
  } from "./chunk-MMS2HBRT.js";