@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
@@ -10,7 +10,7 @@ import {
10
10
  } from "./chunk-SSC7EKY2.js";
11
11
  import {
12
12
  computeDegradations
13
- } from "./chunk-ME733Y2F.js";
13
+ } from "./chunk-QOFQY7BJ.js";
14
14
  import {
15
15
  inventoryLocalSecretResidue,
16
16
  redactResiduePathForDisplay
@@ -41,13 +41,17 @@ import {
41
41
  } from "./chunk-BYP3DOUU.js";
42
42
  import {
43
43
  mcpHttpPort
44
- } from "./chunk-6ZW6BRI4.js";
44
+ } from "./chunk-27NG2NTG.js";
45
45
  import {
46
46
  isWithin
47
47
  } from "./chunk-YRUZK2QA.js";
48
+ import {
49
+ eventLoopHeartbeatPath,
50
+ exeDir
51
+ } from "./chunk-ZQEJ4IX2.js";
48
52
  import {
49
53
  inspectKeyCustodySync
50
- } from "./chunk-KIJRAZWR.js";
54
+ } from "./chunk-4J77TCTX.js";
51
55
  import {
52
56
  checkSingleGotrueInstance
53
57
  } from "./chunk-FTZET5YX.js";
@@ -61,15 +65,186 @@ import {
61
65
  // src/bin/exe-healthcheck.ts
62
66
  import { existsSync as existsSync2, readFileSync as readFileSync2, readdirSync } from "fs";
63
67
  import os2 from "os";
64
- import path2 from "path";
68
+ import path3 from "path";
65
69
  import { execSync, spawnSync } from "child_process";
66
70
  import { fileURLToPath } from "url";
67
71
 
72
+ // src/lib/daemon-serving-probe.ts
73
+ import { appendFileSync, closeSync, mkdirSync, openSync, readSync, statSync, writeFileSync } from "fs";
74
+ import { appendFile as appendAsync, mkdir, open as openAsync, stat as statAsync, writeFile } from "fs/promises";
75
+ import net from "net";
76
+ import path from "path";
77
+ var DEFAULT_DAEMON_HTTP_PORT = 48739;
78
+ var HEALTH_TIMEOUT_MS = 3e3;
79
+ var CONNECT_TIMEOUT_MS = 750;
80
+ var STALL_CAPTURE_LOG_TAIL_LINES = 200;
81
+ var STALL_CAPTURE_TAIL_MAX_BYTES = 256 * 1024;
82
+ var STALL_LOG_MAX_BYTES = 1024 * 1024;
83
+ var STALL_LOG_KEEP_BYTES = 512 * 1024;
84
+ function classifyServingEvidence(portOpen, healthAnswered) {
85
+ if (!portOpen) return "down";
86
+ return healthAnswered ? "healthy" : "stalled";
87
+ }
88
+ function stalledMessage() {
89
+ return "STALLED: port listening but /health not answering (event loop blocked?)";
90
+ }
91
+ function tcpConnectProbe(port, timeoutMs) {
92
+ return new Promise((resolve) => {
93
+ let settled = false;
94
+ const finish = (r) => {
95
+ if (settled) return;
96
+ settled = true;
97
+ try {
98
+ sock.destroy();
99
+ } catch {
100
+ }
101
+ resolve(r);
102
+ };
103
+ const sock = net.connect({ host: "127.0.0.1", port });
104
+ sock.once("connect", () => finish("open"));
105
+ sock.once("error", (err) => {
106
+ finish(err?.code === "ECONNREFUSED" ? "refused" : "timeout");
107
+ });
108
+ sock.setTimeout(timeoutMs, () => finish("timeout"));
109
+ });
110
+ }
111
+ async function probeDaemonServing(opts = {}) {
112
+ const port = opts.port ?? DEFAULT_DAEMON_HTTP_PORT;
113
+ const healthTimeoutMs = opts.healthTimeoutMs ?? HEALTH_TIMEOUT_MS;
114
+ const connectTimeoutMs = opts.connectTimeoutMs ?? CONNECT_TIMEOUT_MS;
115
+ const doFetch = opts.fetchImpl ?? fetch;
116
+ const doConnect = opts.connectImpl ?? tcpConnectProbe;
117
+ const connect = await doConnect(port, connectTimeoutMs);
118
+ if (connect === "refused") {
119
+ return { state: "down", portOpen: false, detail: "daemon not listening \u2014 connection refused" };
120
+ }
121
+ if (connect === "timeout") {
122
+ return { state: "stalled", portOpen: true, detail: `${stalledMessage()} (TCP connect timed out \u2014 listen backlog saturated?)` };
123
+ }
124
+ try {
125
+ const res = await doFetch(`http://127.0.0.1:${port}/health`, {
126
+ signal: AbortSignal.timeout(healthTimeoutMs)
127
+ });
128
+ return {
129
+ state: "healthy",
130
+ portOpen: true,
131
+ healthStatus: res.status,
132
+ detail: `/health answered (HTTP ${res.status})`
133
+ };
134
+ } catch {
135
+ return { state: "stalled", portOpen: true, detail: stalledMessage() };
136
+ }
137
+ }
138
+ function daemonStallsLogPath(dir) {
139
+ return path.join(dir ?? path.join(exeDir(), "logs"), "daemon-stalls.log");
140
+ }
141
+ function launchdLogPath(dir) {
142
+ return path.join(dir ?? path.join(exeDir(), "logs"), "exed-launchd.log");
143
+ }
144
+ function readTailSync(filePath, maxBytes) {
145
+ let fd;
146
+ try {
147
+ fd = openSync(filePath, "r");
148
+ const size = statSync(filePath).size;
149
+ const len = Math.min(size, maxBytes);
150
+ const buf = Buffer.alloc(len);
151
+ readSync(fd, buf, 0, len, Math.max(0, size - len));
152
+ return buf.toString("utf8");
153
+ } catch {
154
+ return "";
155
+ } finally {
156
+ if (fd !== void 0) {
157
+ try {
158
+ closeSync(fd);
159
+ } catch {
160
+ }
161
+ }
162
+ }
163
+ }
164
+ async function readTailAsync(filePath, maxBytes) {
165
+ let fh;
166
+ try {
167
+ fh = await openAsync(filePath, "r");
168
+ const { size } = await fh.stat();
169
+ const len = Math.min(size, maxBytes);
170
+ const buf = Buffer.alloc(len);
171
+ await fh.read(buf, 0, len, Math.max(0, size - len));
172
+ return buf.toString("utf8");
173
+ } catch {
174
+ return "";
175
+ } finally {
176
+ try {
177
+ await fh?.close();
178
+ } catch {
179
+ }
180
+ }
181
+ }
182
+ function heartbeatAgeMs(now) {
183
+ try {
184
+ const age = now() - statSync(eventLoopHeartbeatPath()).mtimeMs;
185
+ return age >= 0 ? Math.round(age) : 0;
186
+ } catch {
187
+ return null;
188
+ }
189
+ }
190
+ function buildRecord(probe, opts) {
191
+ const now = opts.now ?? Date.now;
192
+ const tailLines = opts.tailLines ?? STALL_CAPTURE_LOG_TAIL_LINES;
193
+ const ts = new Date(now()).toISOString();
194
+ const hbAge = heartbeatAgeMs(now);
195
+ const tail = readTailSync(launchdLogPath(opts.dir), STALL_CAPTURE_TAIL_MAX_BYTES).split("\n").slice(-tailLines).join("\n").trimEnd();
196
+ const lines = [
197
+ `--- daemon stall ${ts} ---`,
198
+ `state: ${probe.state}`,
199
+ `detail: ${probe.detail}`,
200
+ `port_open: ${probe.portOpen}`,
201
+ `event_loop_heartbeat_age_ms: ${hbAge === null ? "unknown (no heartbeat file)" : String(hbAge)}`,
202
+ `exed-launchd.log tail (last ${tailLines} lines):`,
203
+ tail || "(log absent or empty)",
204
+ "",
205
+ ""
206
+ ];
207
+ return lines.join("\n");
208
+ }
209
+ function trimIfNeededSync(filePath, maxBytes = STALL_LOG_MAX_BYTES, keepBytes = STALL_LOG_KEEP_BYTES) {
210
+ try {
211
+ const size = statSync(filePath).size;
212
+ if (size <= maxBytes) return;
213
+ const keep = readTailSync(filePath, keepBytes);
214
+ writeFileSync(filePath, keep);
215
+ } catch {
216
+ }
217
+ }
218
+ function captureDaemonStallSync(probe, opts = {}) {
219
+ if (probe.state !== "stalled") return;
220
+ try {
221
+ const target = daemonStallsLogPath(opts.dir);
222
+ mkdirSync(path.dirname(target), { recursive: true });
223
+ appendFileSync(target, buildRecord(probe, opts), "utf8");
224
+ trimIfNeededSync(target, opts.maxBytes, opts.keepBytes);
225
+ } catch {
226
+ }
227
+ }
228
+ async function captureDaemonStall(probe, opts = {}) {
229
+ if (probe.state !== "stalled") return;
230
+ try {
231
+ const target = daemonStallsLogPath(opts.dir);
232
+ await mkdir(path.dirname(target), { recursive: true });
233
+ await appendAsync(target, buildRecord(probe, opts), "utf8");
234
+ const { size } = await statAsync(target);
235
+ if (size > (opts.maxBytes ?? STALL_LOG_MAX_BYTES)) {
236
+ const keep = await readTailAsync(target, opts.keepBytes ?? STALL_LOG_KEEP_BYTES);
237
+ await writeFile(target, keep, "utf8");
238
+ }
239
+ } catch {
240
+ }
241
+ }
242
+
68
243
  // src/lib/daemon-supervision.ts
69
244
  import { execFileSync } from "child_process";
70
245
  import { existsSync, readFileSync } from "fs";
71
246
  import os from "os";
72
- import path from "path";
247
+ import path2 from "path";
73
248
  function assessSupervision(i) {
74
249
  if (!i.supervisorConfigured) {
75
250
  return {
@@ -153,7 +328,7 @@ function readSystemdPid() {
153
328
  }
154
329
  }
155
330
  function readLiveDaemonPid() {
156
- const pidPath = process.env.EXE_DAEMON_PID ?? process.env.EXE_EMBED_PID ?? path.join(process.env.EXE_OS_DIR ?? process.env.EXE_MEM_DIR ?? path.join(os.homedir(), ".exe-os"), "exed.pid");
331
+ const pidPath = process.env.EXE_DAEMON_PID ?? process.env.EXE_EMBED_PID ?? path2.join(process.env.EXE_OS_DIR ?? process.env.EXE_MEM_DIR ?? path2.join(os.homedir(), ".exe-os"), "exed.pid");
157
332
  try {
158
333
  const pid = parseInt(readFileSync(pidPath, "utf8").trim(), 10);
159
334
  if (!Number.isFinite(pid) || pid <= 1) return null;
@@ -167,7 +342,7 @@ function readSupervisionState() {
167
342
  const platform = process.platform;
168
343
  const runningPid = readLiveDaemonPid();
169
344
  if (platform === "darwin") {
170
- const plist = path.join(os.homedir(), "Library", "LaunchAgents", "com.askexe.exed.plist");
345
+ const plist = path2.join(os.homedir(), "Library", "LaunchAgents", "com.askexe.exed.plist");
171
346
  const plistInstalled = existsSync(plist);
172
347
  const launchdPid = plistInstalled ? readLaunchdPid(process.getuid?.() ?? 501) : void 0;
173
348
  return assessSupervision({
@@ -197,17 +372,17 @@ var CC_NATIVE_ONLY_CUTOFF2 = CC_NATIVE_ONLY_CUTOFF;
197
372
  var compareSemver2 = compareSemver;
198
373
  var detectAutoupdaterVar2 = detectAutoupdaterVar;
199
374
  function findPackageRoot() {
200
- let dir = path2.dirname(fileURLToPath(import.meta.url));
201
- const { root } = path2.parse(dir);
375
+ let dir = path3.dirname(fileURLToPath(import.meta.url));
376
+ const { root } = path3.parse(dir);
202
377
  while (dir !== root) {
203
- if (existsSync2(path2.join(dir, "package.json"))) return dir;
204
- dir = path2.dirname(dir);
378
+ if (existsSync2(path3.join(dir, "package.json"))) return dir;
379
+ dir = path3.dirname(dir);
205
380
  }
206
381
  throw new Error("Cannot find package root");
207
382
  }
208
383
  function checkBuildIntegrity(pkgRoot) {
209
384
  const results = [];
210
- const tsupConfig = path2.join(pkgRoot, "tsup.config.ts");
385
+ const tsupConfig = path3.join(pkgRoot, "tsup.config.ts");
211
386
  if (!existsSync2(tsupConfig)) {
212
387
  return [{ name: "build/tsup-config", pass: false, detail: "tsup.config.ts not found" }];
213
388
  }
@@ -217,7 +392,7 @@ function checkBuildIntegrity(pkgRoot) {
217
392
  let total = 0;
218
393
  for (const match of entryMatches) {
219
394
  const outputKey = match[1];
220
- const expectedPath = path2.join(pkgRoot, "dist", `${outputKey}.js`);
395
+ const expectedPath = path3.join(pkgRoot, "dist", `${outputKey}.js`);
221
396
  total++;
222
397
  if (!existsSync2(expectedPath)) {
223
398
  missing.push(`dist/${outputKey}.js`);
@@ -241,7 +416,7 @@ function checkBuildIntegrity(pkgRoot) {
241
416
  }
242
417
  function checkEmbedPipeline(pkgRoot) {
243
418
  const results = [];
244
- const daemonPath = path2.join(pkgRoot, "dist", "lib", "exe-daemon.js");
419
+ const daemonPath = path3.join(pkgRoot, "dist", "lib", "exe-daemon.js");
245
420
  if (!existsSync2(daemonPath)) {
246
421
  results.push({
247
422
  name: "exed/daemon-exists",
@@ -253,17 +428,17 @@ function checkEmbedPipeline(pkgRoot) {
253
428
  results.push({ name: "exed/daemon-exists", pass: true, detail: "dist/lib/exe-daemon.js exists" });
254
429
  const entryDirs = ["dist/hooks", "dist/bin", "dist/mcp"];
255
430
  for (const dir of entryDirs) {
256
- const fullDir = path2.join(pkgRoot, dir);
431
+ const fullDir = path3.join(pkgRoot, dir);
257
432
  if (!existsSync2(fullDir)) continue;
258
433
  let walkDir = fullDir;
259
- const { root } = path2.parse(walkDir);
434
+ const { root } = path3.parse(walkDir);
260
435
  let foundRoot = null;
261
436
  while (walkDir !== root) {
262
- if (existsSync2(path2.join(walkDir, "package.json"))) {
437
+ if (existsSync2(path3.join(walkDir, "package.json"))) {
263
438
  foundRoot = walkDir;
264
439
  break;
265
440
  }
266
- walkDir = path2.dirname(walkDir);
441
+ walkDir = path3.dirname(walkDir);
267
442
  }
268
443
  if (!foundRoot) {
269
444
  results.push({
@@ -273,7 +448,7 @@ function checkEmbedPipeline(pkgRoot) {
273
448
  });
274
449
  continue;
275
450
  }
276
- const resolvedDaemon = path2.join(foundRoot, "dist", "lib", "exe-daemon.js");
451
+ const resolvedDaemon = path3.join(foundRoot, "dist", "lib", "exe-daemon.js");
277
452
  const reachable = existsSync2(resolvedDaemon);
278
453
  results.push({
279
454
  name: `exed/reachable-from-${dir}`,
@@ -284,8 +459,8 @@ function checkEmbedPipeline(pkgRoot) {
284
459
  return results;
285
460
  }
286
461
  function checkDaemonDrift(pkgRoot, opts) {
287
- const runningScript = resolveRunningDaemonScript(opts?.pidFile ?? path2.join(EXE_AI_DIR, "exed.pid"));
288
- const fallbackScript = path2.join(pkgRoot, "dist", "lib", "exe-daemon.js");
462
+ const runningScript = resolveRunningDaemonScript(opts?.pidFile ?? path3.join(EXE_AI_DIR, "exed.pid"));
463
+ const fallbackScript = path3.join(pkgRoot, "dist", "lib", "exe-daemon.js");
289
464
  const result = measureDaemonDrift({
290
465
  daemonScript: runningScript ?? (existsSync2(fallbackScript) ? fallbackScript : null),
291
466
  referenceRoot: pkgRoot
@@ -348,7 +523,7 @@ function checkRuntimeDrift(pkgRoot, opts) {
348
523
  const hookChecks = hookResults.map(
349
524
  (result, i) => formatDriftCheck(hookResults.length === 1 ? "exed/runtime-drift-hooks" : `exed/runtime-drift-hooks[${i + 1}]`, result)
350
525
  );
351
- const daemonScript = resolveRunningDaemonScript(opts?.pidFile ?? path2.join(EXE_AI_DIR, "exed.pid"));
526
+ const daemonScript = resolveRunningDaemonScript(opts?.pidFile ?? path3.join(EXE_AI_DIR, "exed.pid"));
352
527
  const daemonRoot = daemonScript ? checkoutRootFromScript(daemonScript) : null;
353
528
  const daemonRunning = daemonRoot ? readBuildIdentity(daemonRoot) : null;
354
529
  const daemonResult = compareRuntimeIdentity("daemon", daemonRunning, installed);
@@ -356,7 +531,7 @@ function checkRuntimeDrift(pkgRoot, opts) {
356
531
  }
357
532
  function checkTaskSystem(pkgRoot) {
358
533
  const results = [];
359
- const scannerPath = path2.join(pkgRoot, "dist", "bin", "scan-tasks.js");
534
+ const scannerPath = path3.join(pkgRoot, "dist", "bin", "scan-tasks.js");
360
535
  if (!existsSync2(scannerPath)) {
361
536
  results.push({ name: "tasks/scanner", pass: false, detail: "scan-tasks.js not found" });
362
537
  return results;
@@ -379,7 +554,7 @@ function checkTaskSystem(pkgRoot) {
379
554
  }
380
555
  function checkWorkerSpawning(pkgRoot) {
381
556
  const results = [];
382
- const workerPath = path2.join(pkgRoot, "dist", "hooks", "ingest-worker.js");
557
+ const workerPath = path3.join(pkgRoot, "dist", "hooks", "ingest-worker.js");
383
558
  if (!existsSync2(workerPath)) {
384
559
  results.push({ name: "workers/ingest-worker", pass: false, detail: "ingest-worker.js not found" });
385
560
  return results;
@@ -394,14 +569,14 @@ function checkWorkerSpawning(pkgRoot) {
394
569
  detail: `Parse error: ${err instanceof Error ? err.message.slice(0, 200) : String(err)}`
395
570
  });
396
571
  }
397
- const hooksDir = path2.join(pkgRoot, "dist", "hooks");
572
+ const hooksDir = path3.join(pkgRoot, "dist", "hooks");
398
573
  if (existsSync2(hooksDir)) {
399
574
  const hookFiles = readdirSync(hooksDir).filter((f) => f.endsWith(".js") && !f.endsWith(".js.map"));
400
575
  let hooksPassed = 0;
401
576
  const hooksFailed = [];
402
577
  for (const hook of hookFiles) {
403
578
  try {
404
- execSync(`node --check "${path2.join(hooksDir, hook)}" 2>&1`, { timeout: 1e4, encoding: "utf-8" });
579
+ execSync(`node --check "${path3.join(hooksDir, hook)}" 2>&1`, { timeout: 1e4, encoding: "utf-8" });
405
580
  hooksPassed++;
406
581
  } catch {
407
582
  hooksFailed.push(hook);
@@ -425,8 +600,8 @@ function checkWorkerSpawning(pkgRoot) {
425
600
  }
426
601
  function checkMcpTransport() {
427
602
  const results = [];
428
- const pidPath = path2.join(EXE_AI_DIR, "exed.pid");
429
- const tokenPath = path2.join(EXE_AI_DIR, "exed.token");
603
+ const pidPath = path3.join(EXE_AI_DIR, "exed.pid");
604
+ const tokenPath = path3.join(EXE_AI_DIR, "exed.token");
430
605
  let daemonAlive = false;
431
606
  if (existsSync2(pidPath)) {
432
607
  try {
@@ -468,6 +643,38 @@ function checkMcpTransport() {
468
643
  } else if (daemonAlive) {
469
644
  results.push({ name: "mcp/http-endpoint", pass: false, detail: "Daemon is alive but exed.token is missing; cannot probe MCP HTTP" });
470
645
  }
646
+ if (daemonAlive && existsSync2(tokenPath)) {
647
+ const port = /^\d+$/.test(mcpHttpPort()) ? mcpHttpPort() : "48739";
648
+ try {
649
+ const token = readFileSync2(tokenPath, "utf8").trim();
650
+ const code = execSync(
651
+ `curl -sS -o /dev/null -w "%{http_code}" -m 2 -H "Authorization: Bearer ${token}" http://127.0.0.1:${port}/health`,
652
+ { encoding: "utf8", timeout: 2500 }
653
+ ).trim();
654
+ const answered = /^\d{3}$/.test(code) && code !== "000";
655
+ results.push({
656
+ name: "mcp/serving-probe",
657
+ pass: answered,
658
+ detail: answered ? `Daemon serving /health (HTTP ${code})` : `${stalledMessage()} (curl code ${code} after 2s)`
659
+ });
660
+ if (!answered) {
661
+ captureDaemonStallSync({ state: "stalled", portOpen: true, detail: stalledMessage() });
662
+ }
663
+ } catch (err) {
664
+ const rawMsg = err instanceof Error ? err.message : String(err);
665
+ const msg = redactSecrets(rawMsg).text.slice(0, 180);
666
+ const refused = msg.includes("Failed to connect") || msg.includes("Connection refused");
667
+ const state = classifyServingEvidence(!refused, false);
668
+ results.push({
669
+ name: "mcp/serving-probe",
670
+ pass: false,
671
+ detail: state === "stalled" ? `${stalledMessage()} (probe error: ${msg})` : `Daemon not listening \u2014 connection refused (${msg})`
672
+ });
673
+ if (state === "stalled") {
674
+ captureDaemonStallSync({ state, portOpen: true, detail: stalledMessage() });
675
+ }
676
+ }
677
+ }
471
678
  const events = readMcpHttpEvents(200);
472
679
  const summary = summarizeMcpTransport(events);
473
680
  results.push({
@@ -478,7 +685,7 @@ function checkMcpTransport() {
478
685
  results.push({
479
686
  name: "mcp/monitor-summary",
480
687
  pass: true,
481
- detail: `Privacy-safe local monitor summary: ${path2.join(EXE_AI_DIR, "monitor", "mcp-transport-summary.json")}`
688
+ detail: `Privacy-safe local monitor summary: ${path3.join(EXE_AI_DIR, "monitor", "mcp-transport-summary.json")}`
482
689
  });
483
690
  return results;
484
691
  }
@@ -536,7 +743,7 @@ function checkClaudeCodeInstall() {
536
743
  detail: "Failed to check claude binary path"
537
744
  });
538
745
  }
539
- const versionsDir = path2.join(
746
+ const versionsDir = path3.join(
540
747
  process.env.HOME ?? process.env.USERPROFILE ?? "",
541
748
  ".local",
542
749
  "share",
@@ -632,13 +839,13 @@ function checkRetrievalHealth() {
632
839
  const results = [];
633
840
  let embedDaemon = "unavailable";
634
841
  try {
635
- const pidPath = path2.join(EXE_AI_DIR, "exed.pid");
842
+ const pidPath = path3.join(EXE_AI_DIR, "exed.pid");
636
843
  if (existsSync2(pidPath)) {
637
844
  const pid = parseInt(readFileSync2(pidPath, "utf8").trim(), 10);
638
845
  try {
639
846
  process.kill(pid, 0);
640
847
  try {
641
- const tokenPath = path2.join(EXE_AI_DIR, "exed.token");
848
+ const tokenPath = path3.join(EXE_AI_DIR, "exed.token");
642
849
  if (existsSync2(tokenPath)) {
643
850
  const token = readFileSync2(tokenPath, "utf8").trim();
644
851
  const port = /^\d+$/.test(mcpHttpPort()) ? mcpHttpPort() : "48739";
@@ -679,7 +886,7 @@ function checkRetrievalHealth() {
679
886
  });
680
887
  let configuredSearchMode = "hybrid";
681
888
  try {
682
- const configPath = path2.join(EXE_AI_DIR, "config.json");
889
+ const configPath = path3.join(EXE_AI_DIR, "config.json");
683
890
  if (existsSync2(configPath)) {
684
891
  const cfg = JSON.parse(readFileSync2(configPath, "utf8"));
685
892
  if (cfg.searchMode) configuredSearchMode = cfg.searchMode;
@@ -699,7 +906,7 @@ function checkRetrievalHealth() {
699
906
  }
700
907
  let queryRouter = "fallback";
701
908
  try {
702
- const configPath = path2.join(EXE_AI_DIR, "config.json");
909
+ const configPath = path3.join(EXE_AI_DIR, "config.json");
703
910
  if (existsSync2(configPath)) {
704
911
  const cfg = JSON.parse(readFileSync2(configPath, "utf8"));
705
912
  if (cfg.selfQueryRouter === false) {
@@ -753,7 +960,7 @@ function checkRetrievalHealth() {
753
960
  detail: queryRouter === "active" ? "\u{1F7E2} Query router: active (LLM-based)" : queryRouter === "disabled" ? "\u2139\uFE0F Query router: disabled by configuration" : `\u2139\uFE0F ${queryRouterDegradation?.message ?? "Query router: fallback (rule-based)"}`
754
961
  });
755
962
  try {
756
- const ledgerPath = path2.join(EXE_AI_DIR, "db-restore-events.json");
963
+ const ledgerPath = path3.join(EXE_AI_DIR, "db-restore-events.json");
757
964
  if (existsSync2(ledgerPath)) {
758
965
  const raw = JSON.parse(readFileSync2(ledgerPath, "utf8"));
759
966
  if (Array.isArray(raw) && raw.length > 0) {
@@ -859,7 +1066,7 @@ function healthcheckTimeoutMs() {
859
1066
  }
860
1067
  function resolveHealthcheckScript() {
861
1068
  try {
862
- const built = path2.join(findPackageRoot(), "dist", "bin", "exe-healthcheck.js");
1069
+ const built = path3.join(findPackageRoot(), "dist", "bin", "exe-healthcheck.js");
863
1070
  if (existsSync2(built)) return built;
864
1071
  } catch {
865
1072
  }
@@ -950,6 +1157,8 @@ if ((process.argv[1] ?? "").includes("exe-healthcheck")) {
950
1157
  }
951
1158
 
952
1159
  export {
1160
+ probeDaemonServing,
1161
+ captureDaemonStall,
953
1162
  readSupervisionState,
954
1163
  CC_NATIVE_ONLY_CUTOFF2 as CC_NATIVE_ONLY_CUTOFF,
955
1164
  compareSemver2 as compareSemver,
@@ -15,7 +15,7 @@ import {
15
15
  import {
16
16
  getMasterKey,
17
17
  setMasterKey
18
- } from "./chunk-KIJRAZWR.js";
18
+ } from "./chunk-4J77TCTX.js";
19
19
  import {
20
20
  WINDOWS_UNSUPPORTED_EXIT,
21
21
  isWSL,
@@ -3,11 +3,11 @@ import {
3
3
  } from "./chunk-CBPNZFSU.js";
4
4
  import {
5
5
  initStore
6
- } from "./chunk-APVU4Q5B.js";
6
+ } from "./chunk-LSHUX7P4.js";
7
7
  import {
8
8
  getClient,
9
9
  isInitialized
10
- } from "./chunk-3MDUKF3N.js";
10
+ } from "./chunk-L5JFVK5T.js";
11
11
 
12
12
  // src/lib/schedules.ts
13
13
  import crypto from "crypto";
@@ -4,14 +4,14 @@ import {
4
4
  } from "./chunk-EVMOKRBC.js";
5
5
  import {
6
6
  registerDaemonScopedQueryChokepoint
7
- } from "./chunk-QPMKVSHU.js";
7
+ } from "./chunk-KN5GAVCG.js";
8
8
  import {
9
9
  orgPartnerModeActive,
10
10
  requireOrgPartnerBinding,
11
11
  resolveOrgPartnerBindings,
12
12
  resolvePartnerIdentities,
13
13
  rosterKeyLookupFor
14
- } from "./chunk-WYNIWJRN.js";
14
+ } from "./chunk-CJ6CS2IH.js";
15
15
  import {
16
16
  createDerivedSeqStore,
17
17
  createMailboxOpener,
@@ -20,7 +20,7 @@ import {
20
20
  isConsentMacPrimed,
21
21
  primeTaskOriginMarkerKey,
22
22
  scopedQueryChokepointStatus
23
- } from "./chunk-DACRR362.js";
23
+ } from "./chunk-XQ7BIVLI.js";
24
24
  import {
25
25
  flushMailboxOutbox
26
26
  } from "./chunk-3FGBBJYM.js";
@@ -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/orchestration-events.ts
6
6
  import crypto from "crypto";
@@ -1,16 +1,16 @@
1
1
  import {
2
2
  PLATFORM_PROCEDURE_TITLES
3
- } from "./chunk-NVM3SKJ4.js";
3
+ } from "./chunk-4CN3EE6U.js";
4
4
  import {
5
5
  isGhostBehaviorRow
6
- } from "./chunk-F5ZRHLG5.js";
6
+ } from "./chunk-KEDZRQI3.js";
7
7
  import {
8
8
  IdentityConflictError,
9
9
  getClient,
10
10
  getIdentity,
11
11
  listIdentities,
12
12
  updateIdentity
13
- } from "./chunk-3MDUKF3N.js";
13
+ } from "./chunk-L5JFVK5T.js";
14
14
  import {
15
15
  atomicWriteJsonSync
16
16
  } from "./chunk-HSGBZSCA.js";
@@ -1,14 +1,14 @@
1
1
  import {
2
2
  resolveAuth,
3
3
  resolveEndpoint
4
- } from "./chunk-M4N7I2H5.js";
4
+ } from "./chunk-HA6BIZ6L.js";
5
5
  import {
6
6
  resolvePartnerIdentities
7
- } from "./chunk-WYNIWJRN.js";
7
+ } from "./chunk-CJ6CS2IH.js";
8
8
  import {
9
9
  displayFingerprint,
10
10
  ed25519PrivateKeyFromSeed
11
- } from "./chunk-GPWXUU3L.js";
11
+ } from "./chunk-MZNLQC6W.js";
12
12
 
13
13
  // src/lib/org-member-key.ts
14
14
  import { createHash, sign } from "crypto";
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  listBehaviors
3
- } from "./chunk-F5ZRHLG5.js";
3
+ } from "./chunk-KEDZRQI3.js";
4
4
  import {
5
5
  incrementSkillUsage
6
- } from "./chunk-FJKUFMNF.js";
6
+ } from "./chunk-CFFSHBQF.js";
7
7
 
8
8
  // src/lib/behavior-injection.ts
9
9
  import { appendFile } from "fs/promises";
@@ -349,7 +349,7 @@ async function injectBehaviors(opts) {
349
349
  `[behavior-injection] ${opts.assignedTo} <- ${selected.length}/${behaviors.length} behaviour(s) for "${opts.title.slice(0, 60)}": ` + selected.map((s) => `${s.behavior.id.slice(0, 8)}(${s.score.toFixed(2)})`).join(" ") + "\n"
350
350
  );
351
351
  await incrementSkillUsage(selected.map((s) => s.behavior));
352
- const { recordBehaviorsConsulted } = await import("./skill-usage-GNV737U5.js");
352
+ const { recordBehaviorsConsulted } = await import("./skill-usage-2MBTF7Y4.js");
353
353
  await recordBehaviorsConsulted(selected.map((s) => s.behavior.id));
354
354
  return selected;
355
355
  } catch (err) {