@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,16 +1,16 @@
1
1
  import {
2
2
  isPaneBusy
3
- } from "./chunk-KPLMY2GT.js";
3
+ } from "./chunk-HUHR5CKJ.js";
4
4
  import {
5
5
  recordSessionKill
6
- } from "./chunk-HFSFWMID.js";
6
+ } from "./chunk-3GGMHSY2.js";
7
7
  import {
8
8
  buildMergedPrCache,
9
9
  getBranchLandedState
10
- } from "./chunk-PZDAPIQL.js";
10
+ } from "./chunk-VS7V5HNO.js";
11
11
  import {
12
12
  updateTask
13
- } from "./chunk-IPBNHPTE.js";
13
+ } from "./chunk-IC2AONBH.js";
14
14
  import {
15
15
  BUSY_PATTERN,
16
16
  countPendingReviews,
@@ -29,14 +29,14 @@ import {
29
29
  sessionScopeFilter,
30
30
  strictSessionScopeFilter,
31
31
  writeNotification
32
- } from "./chunk-XAGIZVYI.js";
32
+ } from "./chunk-GM4UEZDE.js";
33
33
  import {
34
34
  LEASE_MINUTES,
35
35
  isLeaseExpired
36
36
  } from "./chunk-E23LNUWJ.js";
37
37
  import {
38
38
  listSessions
39
- } from "./chunk-HFXBL7XE.js";
39
+ } from "./chunk-QSW5DHMZ.js";
40
40
  import {
41
41
  getTransport
42
42
  } from "./chunk-VI4ATC6I.js";
@@ -51,7 +51,7 @@ import {
51
51
  } from "./chunk-6L4VIYLZ.js";
52
52
  import {
53
53
  recordOrchestrationEventBestEffort
54
- } from "./chunk-SA66WRBT.js";
54
+ } from "./chunk-JGBYZTWH.js";
55
55
  import {
56
56
  checkDispatchStatus,
57
57
  readTerminalLauncherFailure,
@@ -79,7 +79,7 @@ import {
79
79
  getCoordinatorName,
80
80
  isCoordinatorName,
81
81
  shouldAutoInstance
82
- } from "./chunk-3MDUKF3N.js";
82
+ } from "./chunk-L5JFVK5T.js";
83
83
  import {
84
84
  eventLoopBlockedMarkerPath
85
85
  } from "./chunk-ZQEJ4IX2.js";
@@ -3822,7 +3822,7 @@ function createMergedPrCacheMemo(lookup = buildMergedPrCache) {
3822
3822
  }
3823
3823
  async function createWorktreeReaperRealDeps() {
3824
3824
  const { getPaneCwdAsync } = await import("./lib/tmux-status.js");
3825
- const { getGitRootAsync, isWorktreeDirtyAsync, GIT_CRYPT_SMUDGE_BYPASS_ARGS } = await import("./worktree-XWVNDBRD.js");
3825
+ const { getGitRootAsync, isWorktreeDirtyAsync, GIT_CRYPT_SMUDGE_BYPASS_ARGS } = await import("./worktree-7V4ZMF3D.js");
3826
3826
  const { statSync: statSync3 } = await import("fs");
3827
3827
  const { basename: basename2 } = await import("path");
3828
3828
  const { promisify: promisify2 } = await import("util");
@@ -4070,7 +4070,7 @@ function shouldNotifyTaskGroupViaIntercom(executionMode) {
4070
4070
  }
4071
4071
  async function pollTaskGroupBarriers() {
4072
4072
  try {
4073
- const { checkAndFireBarriers } = await import("./tasks-crud-2GHKIZOM.js");
4073
+ const { checkAndFireBarriers } = await import("./tasks-crud-NQDPLHNZ.js");
4074
4074
  const firedGroupIds = await checkAndFireBarriers();
4075
4075
  if (firedGroupIds.length === 0) return 0;
4076
4076
  const { getClient } = await import("./lib/database.js");
@@ -3,10 +3,10 @@ import {
3
3
  } from "./chunk-VGMACSEV.js";
4
4
  import {
5
5
  storeBehavior
6
- } from "./chunk-F5ZRHLG5.js";
6
+ } from "./chunk-KEDZRQI3.js";
7
7
  import {
8
8
  getClient
9
- } from "./chunk-3MDUKF3N.js";
9
+ } from "./chunk-L5JFVK5T.js";
10
10
  import {
11
11
  loadConfig
12
12
  } from "./chunk-MMS2HBRT.js";
@@ -4,7 +4,7 @@ import {
4
4
  import {
5
5
  flushBatch,
6
6
  writeMemory
7
- } from "./chunk-APVU4Q5B.js";
7
+ } from "./chunk-LSHUX7P4.js";
8
8
  import {
9
9
  SUPPORT_PRODUCTS,
10
10
  isWellFormedCommit,
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  withScopedReadWindow
3
- } from "./chunk-QPMKVSHU.js";
3
+ } from "./chunk-KN5GAVCG.js";
4
4
  import {
5
5
  requireOrgPartnerBinding,
6
6
  resolvePartnerIdentities
7
- } from "./chunk-WYNIWJRN.js";
7
+ } from "./chunk-CJ6CS2IH.js";
8
8
  import {
9
9
  allocateOutboundSeq,
10
10
  approveBriefManually,
@@ -22,7 +22,7 @@ import {
22
22
  sealMailboxEnvelope,
23
23
  unrecordedText,
24
24
  verifyManifest
25
- } from "./chunk-DACRR362.js";
25
+ } from "./chunk-XQ7BIVLI.js";
26
26
  import {
27
27
  queueMailboxDeposit
28
28
  } from "./chunk-3FGBBJYM.js";
@@ -10,7 +10,7 @@ import {
10
10
  import {
11
11
  loadLicense,
12
12
  readCachedLicenseToken
13
- } from "./chunk-DIKLSAJE.js";
13
+ } from "./chunk-EOWJXCYC.js";
14
14
  import {
15
15
  EXE_AI_DIR,
16
16
  loadConfig
@@ -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/token-budget.ts
6
6
  var WARN_THRESHOLD = 0.8;
@@ -7,10 +7,10 @@ import {
7
7
  import {
8
8
  createCRMWebhookHandler,
9
9
  parseTwentyWebhook
10
- } from "./chunk-QYIR64RR.js";
10
+ } from "./chunk-RHJOTGEU.js";
11
11
  import {
12
12
  WhatsAppAdapter
13
- } from "./chunk-BM467PZN.js";
13
+ } from "./chunk-3N24FV22.js";
14
14
  import {
15
15
  SignalAdapter
16
16
  } from "./chunk-RJT7H2KR.js";
@@ -42,7 +42,7 @@ import {
42
42
  retryWithBackoff,
43
43
  routeMessage,
44
44
  validateGatewayConfig
45
- } from "./chunk-OEHZ46WQ.js";
45
+ } from "./chunk-XEAZJXMZ.js";
46
46
  import {
47
47
  OllamaProvider
48
48
  } from "./chunk-FWFFZGSC.js";
@@ -22,7 +22,7 @@ var OrgOriginProvenanceError = class extends Error {
22
22
  async function mintOrgOriginStamp(input) {
23
23
  if (!input.orgId) throw new OrgOriginProvenanceError("An org-origin stamp requires a non-empty org_id (\xA71.5)");
24
24
  if (!input.requestId) throw new OrgOriginProvenanceError("An org-origin stamp requires a request id");
25
- const { getTaskRequest } = await import("./task-request-inbox-AY3C6DND.js");
25
+ const { getTaskRequest } = await import("./task-request-inbox-2TN4ZUH2.js");
26
26
  const req = getTaskRequest(input.orgId, input.requestId);
27
27
  if (!req) {
28
28
  throw new OrgOriginProvenanceError(
@@ -1,24 +1,24 @@
1
1
  import {
2
2
  recordSessionKill
3
- } from "./chunk-HFSFWMID.js";
3
+ } from "./chunk-3GGMHSY2.js";
4
4
  import {
5
5
  sessionScopeFilter,
6
6
  verifyPaneAtCapacity,
7
7
  writeNotification
8
- } from "./chunk-XAGIZVYI.js";
8
+ } from "./chunk-GM4UEZDE.js";
9
9
  import {
10
10
  listSessions
11
- } from "./chunk-HFXBL7XE.js";
11
+ } from "./chunk-QSW5DHMZ.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
  getClient,
20
20
  isCoordinatorName
21
- } from "./chunk-3MDUKF3N.js";
21
+ } from "./chunk-L5JFVK5T.js";
22
22
 
23
23
  // src/lib/capacity-monitor.ts
24
24
  var CAPACITY_PATTERNS = [
@@ -2,7 +2,7 @@ import {
2
2
  deleteKeychainSecret,
3
3
  getKeychainSecret,
4
4
  setKeychainSecret
5
- } from "./chunk-KIJRAZWR.js";
5
+ } from "./chunk-4J77TCTX.js";
6
6
 
7
7
  // src/lib/consent-passphrase.ts
8
8
  import crypto from "crypto";
@@ -85,7 +85,7 @@ async function getRetrievalHealth() {
85
85
  totalMemories = Number(totalRes.rows[0]?.cnt ?? 0);
86
86
  memoriesWithVectors = Number(vectorRes.rows[0]?.cnt ?? 0);
87
87
  try {
88
- const { getGraphStats } = await import("./graph-query-VAQN2RK3.js");
88
+ const { getGraphStats } = await import("./graph-query-7YA3YNKL.js");
89
89
  const stats = await getGraphStats(client);
90
90
  entities = stats.entities;
91
91
  relationships = stats.relationships;
@@ -111,10 +111,12 @@ async function getRetrievalHealth() {
111
111
  ledgerReadFailures["db-restore"] = err instanceof Error ? err.message : String(err);
112
112
  }
113
113
  let dbIntegrity = NO_INTEGRITY_EVENTS;
114
+ let backupFailedDetails = [];
114
115
  try {
115
- const { getDbIntegrityHealth } = await import("./db-integrity-events-6363LLDT.js");
116
+ const { getDbIntegrityHealth, listDbIntegrityEvents } = await import("./db-integrity-events-6363LLDT.js");
116
117
  dbIntegrity = getDbIntegrityHealth();
117
118
  if (dbIntegrity.readFailure) ledgerReadFailures["db-integrity"] = dbIntegrity.readFailure;
119
+ backupFailedDetails = listDbIntegrityEvents().filter((e) => e.kind === "backup-failed").map((e) => e.detail ?? "");
118
120
  } catch (err) {
119
121
  ledgerReadFailures["db-integrity"] = err instanceof Error ? err.message : String(err);
120
122
  }
@@ -138,7 +140,8 @@ async function getRetrievalHealth() {
138
140
  },
139
141
  dbRestore,
140
142
  dbIntegrity,
141
- ledgerReadFailures
143
+ ledgerReadFailures,
144
+ backupFailedDetails
142
145
  };
143
146
  return {
144
147
  ...summary,
@@ -146,6 +149,8 @@ async function getRetrievalHealth() {
146
149
  };
147
150
  }
148
151
  var NO_INTEGRITY_EVENTS = NO_DB_INTEGRITY_EVENTS;
152
+ var BACKUP_ARTIFACT_FAILURE = /ARTIFACT is unreadable|dirty-WAL backup could not be manifested/;
153
+ var BACKUP_ARTIFACT_FAILURE_SOURCE_VERIFIED = /backup ARTIFACT is unreadable while the source check said "verified"/;
149
154
  function computeDegradations(h) {
150
155
  const out = [];
151
156
  for (const [ledger, reason] of Object.entries(h.ledgerReadFailures ?? {})) {
@@ -224,12 +229,35 @@ function computeDegradations(h) {
224
229
  }
225
230
  const gi = h.dbIntegrity ?? NO_INTEGRITY_EVENTS;
226
231
  if (gi.failedBackups > 0) {
227
- out.push({
228
- code: "backup_source_corrupt",
229
- severity: "critical",
230
- message: `${gi.failedBackups} backup(s) failed their source integrity check \u2014 the database itself did not verify`,
231
- remediation: "Do NOT trust recent backups. Run `exe-os doctor` to confirm, and restore from the newest backup that carries a `backup-verified` ledger entry."
232
- });
232
+ const details = h.backupFailedDetails ?? [];
233
+ const artifactFailures = details.filter((d) => BACKUP_ARTIFACT_FAILURE.test(d)).length;
234
+ const verifiedSourceArtifactFailures = details.filter(
235
+ (d) => BACKUP_ARTIFACT_FAILURE_SOURCE_VERIFIED.test(d)
236
+ ).length;
237
+ const unknownSourceArtifactFailures = artifactFailures - verifiedSourceArtifactFailures;
238
+ const sourceFailures = gi.failedBackups - artifactFailures;
239
+ if (sourceFailures > 0) {
240
+ out.push({
241
+ code: "backup_source_corrupt",
242
+ severity: "critical",
243
+ message: `${sourceFailures} backup(s) failed their source integrity check \u2014 the database itself did not verify`,
244
+ remediation: "Do NOT trust recent backups. Run `exe-os doctor` to confirm, and restore from the newest backup that carries a `backup-verified` ledger entry."
245
+ });
246
+ } else if (unknownSourceArtifactFailures > 0) {
247
+ out.push({
248
+ code: "backup_artifact_source_unknown",
249
+ severity: "warn",
250
+ message: `${unknownSourceArtifactFailures} backup ARTIFACT(s) failed after capture without a successful source check on record \u2014 the live database's integrity is UNKNOWN (neither proven clean nor proven corrupt)`,
251
+ remediation: "Do not assume the live DB is clean and do not restore over it on this evidence alone. Run `exe-os doctor` (or take a fresh backup and confirm its `backup-verified` event) to establish the live DB's integrity; the failed copies were quarantined and are not valid backups."
252
+ });
253
+ } else {
254
+ out.push({
255
+ code: "backup_artifact_unreadable",
256
+ severity: "warn",
257
+ message: `${gi.failedBackups} backup ARTIFACT(s) were unreadable after capture \u2014 the live database itself PASSED its integrity check`,
258
+ remediation: "The live DB is NOT corrupt \u2014 do NOT restore. The unreadable copies were quarantined and are not valid backups; the next scheduled backup replaces them. Run `exe-os doctor` to confirm."
259
+ });
260
+ }
233
261
  }
234
262
  if (gi.lastProvenBackupOnDisk && !postCaptureReverifyEnabled()) {
235
263
  out.push({
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  recordOrchestrationEventBestEffort
3
- } from "./chunk-SA66WRBT.js";
3
+ } from "./chunk-JGBYZTWH.js";
4
4
  import {
5
5
  atomicWriteJsonSync
6
6
  } from "./chunk-HSGBZSCA.js";
@@ -22,7 +22,7 @@ import {
22
22
  import {
23
23
  getCachedMonitorIdentity,
24
24
  recomputeEnvelopeWrapKey
25
- } from "./chunk-VLAENYCN.js";
25
+ } from "./chunk-7SHU5MOD.js";
26
26
 
27
27
  // src/lib/crypto.ts
28
28
  import crypto from "crypto";
@@ -4,10 +4,10 @@ import {
4
4
  extractIdentifiers,
5
5
  isGarbageEntity,
6
6
  normalizeEntityName
7
- } from "./chunk-XGPBHKU3.js";
7
+ } from "./chunk-HTFM7ZDD.js";
8
8
  import {
9
9
  getClient
10
- } from "./chunk-3MDUKF3N.js";
10
+ } from "./chunk-L5JFVK5T.js";
11
11
 
12
12
  // src/lib/memory-graph-extractor.ts
13
13
  function relationshipId(sourceId, targetId, relType) {
@@ -432,7 +432,7 @@ async function upsertMemoryGraph(result, memoryId, opts) {
432
432
  });
433
433
  }
434
434
  try {
435
- const { createCoOccurrenceEdges } = await import("./co-occurrence-6EELW2L2.js");
435
+ const { createCoOccurrenceEdges } = await import("./co-occurrence-F5TMSEQZ.js");
436
436
  await createCoOccurrenceEdges(result.entities, memoryId, { linkOnly });
437
437
  } catch {
438
438
  }
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  processCRMEvent
3
- } from "./chunk-CLV7ALXV.js";
3
+ } from "./chunk-CFO47VW4.js";
4
4
 
5
5
  // src/gateway/adapters/crm-webhook.ts
6
6
  function parseTwentyWebhook(payload) {
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  sendMessage
3
- } from "./chunk-IUBCS6TA.js";
3
+ } from "./chunk-7KPZQ65I.js";
4
4
  import {
5
5
  getActiveAgent
6
- } from "./chunk-OISOA6NX.js";
6
+ } from "./chunk-GL5ZG72X.js";
7
7
  import {
8
8
  resolveExeSession
9
- } from "./chunk-XAGIZVYI.js";
9
+ } from "./chunk-GM4UEZDE.js";
10
10
  import {
11
11
  getDispatcherSession
12
12
  } from "./chunk-PCV52RYM.js";
@@ -16,7 +16,7 @@ import {
16
16
  import {
17
17
  getCoordinatorName,
18
18
  isCoordinatorName
19
- } from "./chunk-3MDUKF3N.js";
19
+ } from "./chunk-L5JFVK5T.js";
20
20
 
21
21
  // src/mcp/tools/send-message.ts
22
22
  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/boot-generation.ts
6
6
  var SYNC_META_KEY = "daemon_boot_generation";
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-WCGNCH3Q.js";
4
4
  import {
5
5
  registerAllTools
6
- } from "./chunk-W5XAB2SW.js";
6
+ } from "./chunk-6HJF7IA3.js";
7
7
 
8
8
  // src/mcp/mcp-surface-hash.ts
9
9
  function computeMcpSurfaceHash() {
@@ -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
  loadConfig
6
6
  } from "./chunk-MMS2HBRT.js";
@@ -6,7 +6,7 @@ import {
6
6
  } from "./chunk-MMS2HBRT.js";
7
7
 
8
8
  // src/lib/db-backup.ts
9
- import { existsSync, readdirSync, unlinkSync, statSync, statfsSync, appendFileSync, writeFileSync } from "fs";
9
+ import { existsSync, readdirSync, unlinkSync, statSync, statfsSync, appendFileSync, writeFileSync, readFileSync } from "fs";
10
10
  import { copyFile, mkdir, unlink, rename } from "fs/promises";
11
11
  import { randomBytes } from "crypto";
12
12
  import path from "path";
@@ -35,6 +35,28 @@ function clearBackupInFlight(backupPath) {
35
35
  } catch {
36
36
  }
37
37
  }
38
+ function sweepStaleInflightMarkers(now = Date.now()) {
39
+ let removed = 0;
40
+ let files;
41
+ try {
42
+ files = readdirSync(BACKUP_DIR);
43
+ } catch {
44
+ return 0;
45
+ }
46
+ for (const file of files) {
47
+ if (!file.endsWith(INFLIGHT_MARKER_SUFFIX)) continue;
48
+ const backupPath = path.join(BACKUP_DIR, file.slice(0, -INFLIGHT_MARKER_SUFFIX.length));
49
+ if (activeBackupPaths.has(backupPath)) continue;
50
+ const marker = path.join(BACKUP_DIR, file);
51
+ try {
52
+ if (now - statSync(marker).mtimeMs < INFLIGHT_MARKER_STALE_MS) continue;
53
+ unlinkSync(marker);
54
+ removed++;
55
+ } catch {
56
+ }
57
+ }
58
+ return removed;
59
+ }
38
60
  function isBackupInFlight(backupPath) {
39
61
  if (activeBackupPaths.has(backupPath)) return true;
40
62
  try {
@@ -206,7 +228,48 @@ async function preBackupCheckpoint(dbPath, checkpointMode) {
206
228
  `);
207
229
  }
208
230
  }
209
- async function quickCheckBackupSourceAfterCopy(reason, backupPath) {
231
+ async function offloadedSourceQuickCheck(dbPath) {
232
+ try {
233
+ const { backupVerifyOffloadEnabled, runInBackupVerifyWorker, reportBackupVerifyWorkerMissing } = await import("./backup-verify-AG54CYGR.js");
234
+ if (!backupVerifyOffloadEnabled()) return null;
235
+ if (!backupOffloadCreds || path.resolve(backupOffloadCreds.dbPath) !== path.resolve(dbPath)) {
236
+ process.stderr.write(
237
+ `[db-backup] off-loop source quick_check skipped: backup offload is ${backupOffloadCreds ? "registered for a different db" : "not registered yet"}; running the source quick_check on the main thread.
238
+ `
239
+ );
240
+ return null;
241
+ }
242
+ const run = await runInBackupVerifyWorker({
243
+ op: "source",
244
+ dbPath,
245
+ keyHex: backupOffloadCreds.encryptionKeyHex ?? null
246
+ });
247
+ if (run.ok && run.response.op === "source") {
248
+ if (run.response.verdict.toLowerCase() === "ok") return "ok";
249
+ process.stderr.write(
250
+ `[db-backup] off-loop source quick_check returned "${run.response.verdict.slice(0, 200)}"; re-checking on the trusted main-thread connection before acting on it.
251
+ `
252
+ );
253
+ return null;
254
+ }
255
+ if (!run.ok && run.unavailable) {
256
+ reportBackupVerifyWorkerMissing("backup source quick_check", run.reason);
257
+ return null;
258
+ }
259
+ process.stderr.write(
260
+ `[db-backup] off-loop source quick_check did not complete (${run.ok ? "unexpected reply" : run.reason}); falling back to the main-thread check.
261
+ `
262
+ );
263
+ return null;
264
+ } catch (err) {
265
+ process.stderr.write(
266
+ `[db-backup] off-loop source quick_check failed (${err instanceof Error ? err.message : String(err)}); falling back to the main-thread check.
267
+ `
268
+ );
269
+ return null;
270
+ }
271
+ }
272
+ async function quickCheckBackupSourceAfterCopy(reason, backupPath, dbPath) {
210
273
  const route = await (async () => {
211
274
  try {
212
275
  const { isDbReadWorkerReady } = await import("./lib/db-read-worker-client.js");
@@ -238,8 +301,14 @@ async function quickCheckBackupSourceAfterCopy(reason, backupPath) {
238
301
  if (!await canTrustIntegrityVerdict(client)) {
239
302
  return markUnverified("connection is query_only; an FTS5 verdict from it is not trustworthy");
240
303
  }
241
- const chk = await client.execute("PRAGMA quick_check;");
242
- const result = String(chk.rows[0]?.quick_check ?? chk.rows[0]?.[0] ?? "").trim();
304
+ const offloaded = await offloadedSourceQuickCheck(dbPath);
305
+ let result;
306
+ if (offloaded === "ok") {
307
+ result = "ok";
308
+ } else {
309
+ const chk = await client.execute("PRAGMA quick_check;");
310
+ result = String(chk.rows[0]?.quick_check ?? chk.rows[0]?.[0] ?? "").trim();
311
+ }
243
312
  if (result && result !== "ok") {
244
313
  process.stderr.write(`[db-backup] CRITICAL: backup source failed quick_check (${reason}): ${result}
245
314
  `);
@@ -417,6 +486,16 @@ async function createBackupAsync(reason = "manual", opts = {}) {
417
486
  const dbPath = findActiveDb();
418
487
  if (!dbPath) return null;
419
488
  await mkdir(BACKUP_DIR, { recursive: true });
489
+ if (!opts.skipRetention && reason !== "pre-restore") {
490
+ try {
491
+ enforceSizeRetention();
492
+ } catch {
493
+ }
494
+ try {
495
+ enforceKeepOneRetention();
496
+ } catch {
497
+ }
498
+ }
420
499
  let lowDisk = null;
421
500
  try {
422
501
  let dbSize = 0;
@@ -476,7 +555,7 @@ async function createBackupAsync(reason = "manual", opts = {}) {
476
555
  markBackupInFlight(backupPath);
477
556
  try {
478
557
  await promoteTmpBackup(tmpBackupPath, backupPath, bytePreservingSidecars);
479
- const sourceStatus = preserveForRestore ? null : await quickCheckBackupSourceAfterCopy(reason, backupPath);
558
+ const sourceStatus = preserveForRestore ? null : await quickCheckBackupSourceAfterCopy(reason, backupPath, dbPath);
480
559
  if (sourceStatus === "failed") return null;
481
560
  if (sourceStatus === "repaired") {
482
561
  if (opts._retriedAfterFtsRepair) {
@@ -497,7 +576,7 @@ async function createBackupAsync(reason = "manual", opts = {}) {
497
576
  let artifactState = "not-checked";
498
577
  let artifactDetail = "artifact read-back did not run";
499
578
  try {
500
- const { manifestWriteEnabled, readBackBackupArtifact, manifestPathFor } = await import("./backup-verify-QIAQ63VC.js");
579
+ const { manifestWriteEnabled, readBackBackupArtifact, manifestPathFor } = await import("./backup-verify-AG54CYGR.js");
501
580
  if (manifestWriteEnabled()) {
502
581
  const readback = await readBackBackupArtifact(backupPath, dbName, { keyHex: encryptionKey });
503
582
  artifactState = readback.artifact;
@@ -737,7 +816,7 @@ function recordMissedBackup(entry) {
737
816
  function alertMissedBackup(message, skipped) {
738
817
  void (async () => {
739
818
  try {
740
- const { pushNotifyAsync } = await import("./push-notifications-YVOP4KGN.js");
819
+ const { pushNotifyAsync } = await import("./push-notifications-QW4BWRC7.js");
741
820
  pushNotifyAsync({
742
821
  event: "backup_failed",
743
822
  title: skipped ? "Backup SKIPPED \u2014 disk full" : "Backup FAILED \u2014 disk full",
@@ -878,14 +957,21 @@ function backupSizeCapBytes() {
878
957
  return Math.max(3 * currentDbSize, DEFAULT_BACKUP_SIZE_CAP_FLOOR_BYTES);
879
958
  }
880
959
  function backupVerifiedProbe(backupPath) {
960
+ let raw;
881
961
  try {
882
- statSync(backupPath + ".manifest.json");
883
- return true;
962
+ raw = readFileSync(backupPath + ".manifest.json", "utf-8");
884
963
  } catch (err) {
885
964
  const code = err.code;
886
965
  if (code === "ENOENT" || code === "ENOTDIR") return false;
887
966
  return null;
888
967
  }
968
+ if (raw.trim() === "") return false;
969
+ try {
970
+ const parsed = JSON.parse(raw);
971
+ return parsed !== null && typeof parsed === "object" && !Array.isArray(parsed);
972
+ } catch {
973
+ return false;
974
+ }
889
975
  }
890
976
  function enforceSizeRetention() {
891
977
  if (!existsSync(BACKUP_DIR)) return 0;
@@ -975,6 +1061,10 @@ function tryUnlinkInBackupDir(p) {
975
1061
  function enforceKeepOneRetention() {
976
1062
  if (!existsSync(BACKUP_DIR)) return 0;
977
1063
  let deleted = 0;
1064
+ try {
1065
+ sweepStaleInflightMarkers();
1066
+ } catch {
1067
+ }
978
1068
  try {
979
1069
  const files = readdirSync(BACKUP_DIR);
980
1070
  const candidates = [];
@@ -1258,6 +1348,7 @@ function getBackupDir() {
1258
1348
  }
1259
1349
 
1260
1350
  export {
1351
+ sweepStaleInflightMarkers,
1261
1352
  isBackupInFlight,
1262
1353
  findActiveDb,
1263
1354
  registerBackupOffload,
@@ -1289,6 +1380,7 @@ export {
1289
1380
  reasonFromBackupName,
1290
1381
  discoverBackupReasons,
1291
1382
  enforceRetention,
1383
+ backupVerifiedProbe,
1292
1384
  enforceSizeRetention,
1293
1385
  keepVerifiedCount,
1294
1386
  selectKeepOneRetentionDeletions,