@askexenow/exe-os 0.9.339 → 0.9.341

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 (312) hide show
  1. package/dist/{active-agent-EC6M7KTX.js → active-agent-AIQP4DFL.js} +3 -3
  2. package/dist/{active-agent-WHIUCHLA.js → active-agent-LW45DSJ4.js} +3 -3
  3. package/dist/{agentic-ontology-RNSXGXW4.js → agentic-ontology-RVUNRCQY.js} +1 -1
  4. package/dist/{backfill-metadata-MFY6BHKE.js → backfill-metadata-ZSDJ4O2T.js} +5 -5
  5. package/dist/backup-verify-ZAJLEL4X.js +425 -0
  6. package/dist/{behaviors-HLZUJSMP.js → behaviors-EO7KCP3H.js} +6 -6
  7. package/dist/bin/agentic-ontology-backfill.js +6 -6
  8. package/dist/bin/agentic-reflection-backfill.js +7 -7
  9. package/dist/bin/agentic-semantic-label.js +6 -6
  10. package/dist/bin/backfill-conversations.js +6 -6
  11. package/dist/bin/backfill-responses.js +6 -6
  12. package/dist/bin/backfill-vectors.js +8 -8
  13. package/dist/bin/bulk-sync-postgres.js +12 -12
  14. package/dist/bin/cc-doctor.js +4 -4
  15. package/dist/bin/cleanup-stale-review-tasks.js +17 -17
  16. package/dist/bin/cli.js +50 -18
  17. package/dist/bin/deferred-daemon-restart.js +74 -73
  18. package/dist/bin/exe-agent-config.js +3 -3
  19. package/dist/bin/exe-agent.js +10 -10
  20. package/dist/bin/exe-assign.js +8 -8
  21. package/dist/bin/exe-boot.js +26 -26
  22. package/dist/bin/exe-call.js +4 -4
  23. package/dist/bin/exe-cloud.js +12 -12
  24. package/dist/bin/exe-config-dump.js +3 -3
  25. package/dist/bin/exe-dispatch.js +17 -17
  26. package/dist/bin/exe-doctor.js +4 -4
  27. package/dist/bin/exe-export-behaviors.js +8 -8
  28. package/dist/bin/exe-forget.js +7 -7
  29. package/dist/bin/exe-gateway.js +7 -7
  30. package/dist/bin/exe-healthcheck.js +4 -4
  31. package/dist/bin/exe-heartbeat.js +17 -17
  32. package/dist/bin/exe-kill.js +21 -21
  33. package/dist/bin/exe-launch-agent.js +27 -27
  34. package/dist/bin/exe-new-employee.js +8 -8
  35. package/dist/bin/exe-pending-messages.js +18 -18
  36. package/dist/bin/exe-pending-notifications.js +17 -17
  37. package/dist/bin/exe-pending-reviews.js +17 -17
  38. package/dist/bin/exe-rename.js +4 -4
  39. package/dist/bin/exe-review.js +20 -20
  40. package/dist/bin/exe-search.js +6 -6
  41. package/dist/bin/exe-session-cleanup.js +22 -22
  42. package/dist/bin/exe-settings.js +13 -13
  43. package/dist/bin/exe-start-codex.js +13 -13
  44. package/dist/bin/exe-start-opencode.js +9 -9
  45. package/dist/bin/exe-status.js +18 -18
  46. package/dist/bin/exe-support.js +3 -3
  47. package/dist/bin/exe-team.js +3 -3
  48. package/dist/bin/git-sweep.js +18 -18
  49. package/dist/bin/graph-backfill.js +7 -7
  50. package/dist/bin/graph-export.js +6 -6
  51. package/dist/bin/import-history.js +10 -10
  52. package/dist/bin/install.js +76 -75
  53. package/dist/bin/intercom-check.js +4 -4
  54. package/dist/bin/mcp-sessions.js +2 -2
  55. package/dist/bin/orchestration-metrics.js +4 -4
  56. package/dist/bin/postgres-agentic-reflection-backfill.js +2 -2
  57. package/dist/bin/postgres-agentic-semantic-backfill.js +1 -1
  58. package/dist/bin/reconcile-backlog.js +484 -0
  59. package/dist/bin/registry-proxy.js +1 -1
  60. package/dist/bin/scan-tasks.js +17 -17
  61. package/dist/bin/setup.js +1 -1
  62. package/dist/bin/shard-migrate.js +5 -5
  63. package/dist/bin/stack-update.js +13 -7
  64. package/dist/bin/vps-health-gate.js +1 -1
  65. package/dist/boot-generation-GSMPJOWM.js +22 -0
  66. package/dist/{capability-cards-YOKVMMOL.js → capability-cards-OBYQNAKZ.js} +2 -2
  67. package/dist/{capacity-monitor-S54IOWRL.js → capacity-monitor-MG3FTUD5.js} +18 -18
  68. package/dist/{catchup-brief-DIOMTEW5.js → catchup-brief-BVJOF3GL.js} +21 -21
  69. package/dist/{chunk-X425OEYF.js → chunk-2C455MU3.js} +2 -2
  70. package/dist/{chunk-N5I7RL3I.js → chunk-2IWBY7XK.js} +1 -1
  71. package/dist/{chunk-X7H3HMFH.js → chunk-2P4WJNN5.js} +3 -3
  72. package/dist/{chunk-MW2GJJ53.js → chunk-2UGGBIDL.js} +2 -2
  73. package/dist/{chunk-BPC5LZ6Y.js → chunk-2WMTTIAZ.js} +1 -1
  74. package/dist/{chunk-BU2QQWBQ.js → chunk-2YCFNBC4.js} +1 -1
  75. package/dist/{chunk-RRWDYOQS.js → chunk-32YHCHWW.js} +1 -1
  76. package/dist/{chunk-I5RLNOFK.js → chunk-3BRVLPPA.js} +8 -4
  77. package/dist/{chunk-KTY7I7UH.js → chunk-4FJZ6SO7.js} +1 -1
  78. package/dist/{chunk-XWHE4LZK.js → chunk-4LWV633D.js} +21 -2
  79. package/dist/{chunk-AVKXCSBI.js → chunk-4QSJVMMT.js} +1 -1
  80. package/dist/{chunk-I3XKO3KQ.js → chunk-6BQG7EKO.js} +1 -1
  81. package/dist/{chunk-RLRT2BVM.js → chunk-6D2PI4QD.js} +1 -1
  82. package/dist/{chunk-7EA7LYW4.js → chunk-6MVC43X7.js} +4 -4
  83. package/dist/chunk-6QW6JHRE.js +368 -0
  84. package/dist/{chunk-HHIBOU3P.js → chunk-7LF5DS3A.js} +1 -1
  85. package/dist/{chunk-XACL67CS.js → chunk-7SEC2AG5.js} +1 -1
  86. package/dist/{chunk-UFAXZ2PY.js → chunk-7YORGTXC.js} +1 -1
  87. package/dist/{chunk-3QDSCJ3F.js → chunk-AP455LBW.js} +1 -1
  88. package/dist/{chunk-OFX5B2S7.js → chunk-ATKW3SYL.js} +1 -1
  89. package/dist/{chunk-3OBWSCJN.js → chunk-B7CUBLF7.js} +10 -10
  90. package/dist/{chunk-UCQITDLM.js → chunk-BJ23BNED.js} +1 -1
  91. package/dist/{chunk-B76TSEP3.js → chunk-BJOBR6P2.js} +1 -1
  92. package/dist/{chunk-XCTGRD4S.js → chunk-BMHQPIJ2.js} +12 -12
  93. package/dist/{chunk-ZIVEA3NB.js → chunk-BR4423AS.js} +1 -1
  94. package/dist/{chunk-ATOU6CYR.js → chunk-BV6GBSRP.js} +16 -2
  95. package/dist/{chunk-DZ6OQM67.js → chunk-C445WRUX.js} +1 -1
  96. package/dist/{chunk-YE7NH53A.js → chunk-CCIEIRV2.js} +1 -1
  97. package/dist/{chunk-6IRVGOUL.js → chunk-CCPHEPLU.js} +1 -1
  98. package/dist/{chunk-2HZY3ECT.js → chunk-CMR64RYM.js} +18 -18
  99. package/dist/{chunk-MQRFKSLI.js → chunk-CYA5S5OD.js} +3 -3
  100. package/dist/{chunk-FNZR3B7U.js → chunk-DGGDUKH6.js} +1 -1
  101. package/dist/{chunk-QXSBB26A.js → chunk-DNVFWFYF.js} +1 -1
  102. package/dist/{chunk-QZLIZAS7.js → chunk-DPFQ2WQX.js} +2 -2
  103. package/dist/{chunk-H37HHX3E.js → chunk-EDH54E5A.js} +9 -9
  104. package/dist/{chunk-JD5S5AAV.js → chunk-EDOO23B2.js} +2 -2
  105. package/dist/{chunk-GQQHDEEM.js → chunk-FOV57K47.js} +10 -10
  106. package/dist/{chunk-65SVQELL.js → chunk-GFDGDFBF.js} +9 -0
  107. package/dist/{chunk-DILD54TU.js → chunk-GOGSWXNZ.js} +9 -9
  108. package/dist/{chunk-UPWE5NOG.js → chunk-GPW32HVB.js} +2 -2
  109. package/dist/{chunk-4IYSBPX3.js → chunk-HAZO7TRD.js} +1 -1
  110. package/dist/{chunk-52KNOQMK.js → chunk-HJX6NCJF.js} +3 -3
  111. package/dist/{chunk-UIV2WPBT.js → chunk-HNLXMD2V.js} +1 -1
  112. package/dist/{chunk-Z7OZP3ET.js → chunk-HSYJ6DZ2.js} +1 -1
  113. package/dist/{chunk-LTVCRHHD.js → chunk-HUSVERE6.js} +4 -4
  114. package/dist/{chunk-I7Z6KTGF.js → chunk-I7ECEP3W.js} +5 -5
  115. package/dist/{chunk-T4KZ2Z2N.js → chunk-IELUDZAA.js} +3 -3
  116. package/dist/{chunk-XUKPALWT.js → chunk-ITMEE7PQ.js} +3 -3
  117. package/dist/{chunk-KCC5A7YL.js → chunk-IXBIVKWZ.js} +6 -6
  118. package/dist/{chunk-GN45PBWI.js → chunk-J6SEDDOR.js} +2 -2
  119. package/dist/{chunk-UXBD22CD.js → chunk-K6KRBXQP.js} +1 -1
  120. package/dist/{chunk-PLRIJALF.js → chunk-KKOLHBNC.js} +33 -25
  121. package/dist/{chunk-OJTJYEMX.js → chunk-KP4PY2Z2.js} +3 -3
  122. package/dist/{chunk-VJHUVFIW.js → chunk-L2YGXJGF.js} +3 -3
  123. package/dist/{chunk-6MRWJMI5.js → chunk-LA2Z6RMS.js} +1 -1
  124. package/dist/{chunk-DEPZOCYD.js → chunk-LEJ25726.js} +321 -621
  125. package/dist/{chunk-2233TQCA.js → chunk-LLU6WZLK.js} +1 -1
  126. package/dist/{chunk-6M36JFFD.js → chunk-LOBCQXV5.js} +4 -4
  127. package/dist/{chunk-LMZISHSJ.js → chunk-MC4ATFJV.js} +5 -5
  128. package/dist/{chunk-EIF2LQHZ.js → chunk-MJB5ZFQM.js} +1 -1
  129. package/dist/{chunk-PAEXYFMY.js → chunk-N7A5D25S.js} +1 -1
  130. package/dist/{chunk-DADMPMYX.js → chunk-NDSNM5OH.js} +1 -1
  131. package/dist/{chunk-H2L4PHGH.js → chunk-NFBW7N4D.js} +2 -2
  132. package/dist/{chunk-VYRYY7TE.js → chunk-NTI22F3R.js} +1 -1
  133. package/dist/{chunk-TLYAEISW.js → chunk-OUEFW4RK.js} +2 -2
  134. package/dist/{chunk-K5WFKEXQ.js → chunk-PTJBWC77.js} +1 -1
  135. package/dist/{chunk-KMBEL7VB.js → chunk-PVIH3ZGV.js} +1 -1
  136. package/dist/{support-outbox-MGUVVGHT.js → chunk-Q5AIPSSC.js} +19 -7
  137. package/dist/chunk-RP5GETX5.js +140 -0
  138. package/dist/{chunk-HEPR6QTL.js → chunk-RWSLVYTE.js} +45 -5
  139. package/dist/{chunk-XJI7Z6LZ.js → chunk-T2PYVVZ5.js} +1 -1
  140. package/dist/{chunk-WYLV4S6A.js → chunk-TIXTHUVJ.js} +3 -3
  141. package/dist/{chunk-7WDXEKUL.js → chunk-TWXZM34M.js} +3 -3
  142. package/dist/{chunk-W7DHFGCB.js → chunk-U2MREVXQ.js} +1 -1
  143. package/dist/{chunk-6HBURYON.js → chunk-UIU2DGRV.js} +3 -3
  144. package/dist/{chunk-7TS64TBG.js → chunk-UU4UINUX.js} +6 -1
  145. package/dist/chunk-W6K4XB6G.js +40 -0
  146. package/dist/{chunk-R44Z32O2.js → chunk-WD55PEBM.js} +3 -3
  147. package/dist/{chunk-FUIIVSW6.js → chunk-WH7XN5ER.js} +1 -1
  148. package/dist/{chunk-Q7L6G6KV.js → chunk-WWNQFOSP.js} +2 -2
  149. package/dist/{chunk-542EWGY3.js → chunk-XSMRR4IW.js} +7 -7
  150. package/dist/{chunk-TNJRWUCE.js → chunk-Y3S4H77G.js} +1 -1
  151. package/dist/{chunk-AOO77BDE.js → chunk-YHUNDGVV.js} +1 -1
  152. package/dist/{chunk-JBSCL2XT.js → chunk-YIIME2OW.js} +1 -1
  153. package/dist/{chunk-QFPTDSY2.js → chunk-YLQXP7T7.js} +1 -1
  154. package/dist/{chunk-RDTZTLVQ.js → chunk-YWQMWFYR.js} +30 -14
  155. package/dist/{chunk-2SG2UGCH.js → chunk-ZNE6H2JO.js} +4 -4
  156. package/dist/{cleanup-graph-garbage-KUABW6LS.js → cleanup-graph-garbage-MXQ4Q2MA.js} +6 -6
  157. package/dist/{co-activation-XMPHKGHR.js → co-activation-QI5BK4RT.js} +2 -2
  158. package/dist/{co-occurrence-SHKSJ6CV.js → co-occurrence-BYSQNZSV.js} +4 -4
  159. package/dist/{code-context-index-EXXDY3QZ.js → code-context-index-BNBHDXHW.js} +2 -2
  160. package/dist/{content-extractor-RHITF2KM.js → content-extractor-JRJDNIHP.js} +2 -2
  161. package/dist/{conversation-entity-extractor-D3EFTLT4.js → conversation-entity-extractor-FPAMTL3C.js} +2 -2
  162. package/dist/{crdt-sync-UJELKSNX.js → crdt-sync-ETPKNBCU.js} +1 -1
  163. package/dist/{crm-webhook-HHNBS7LY.js → crm-webhook-M566ZMZS.js} +2 -2
  164. package/dist/{cto-delegation-gate-DXNF5HVW.js → cto-delegation-gate-S734XDXT.js} +16 -16
  165. package/dist/{daemon-orchestration-7QB6QOXT.js → daemon-orchestration-XV5GN73R.js} +20 -20
  166. package/dist/{daemon-ready-5XI5BIJD.js → daemon-ready-RKKB4P6K.js} +1 -1
  167. package/dist/{daemon-ready-signal-E7VMIQ6I.js → daemon-ready-signal-WKEJQNRA.js} +3 -1
  168. package/dist/{db-backup-DLD4QZBO.js → db-backup-MX2G3CEK.js} +1 -1
  169. package/dist/{doc-graph-extractor-3TRLGD7M.js → doc-graph-extractor-LR5KMPH7.js} +4 -4
  170. package/dist/{documents-FHIBU7KJ.js → documents-FA6N7QDA.js} +8 -8
  171. package/dist/{dreaming-OMFUEUCQ.js → dreaming-UKGTQT6I.js} +17 -17
  172. package/dist/{exe-drift-KY2KHZEL.js → exe-drift-TUKTCXZE.js} +3 -3
  173. package/dist/{exe-export-SP6G3QF6.js → exe-export-ZLHBXMZC.js} +7 -7
  174. package/dist/{exe-import-KJU7FBVQ.js → exe-import-VVKBZWSA.js} +7 -7
  175. package/dist/{exe-key-5RLFQMYP.js → exe-key-QJXFBF6G.js} +74 -73
  176. package/dist/{exe-snapshot-ZNPGUKRZ.js → exe-snapshot-JRLUO645.js} +21 -21
  177. package/dist/{fast-db-init-QQB6IVWV.js → fast-db-init-JKJEEHUI.js} +1 -1
  178. package/dist/{founder-context-PQR3BUS7.js → founder-context-HWPLMZVR.js} +2 -2
  179. package/dist/gateway/index.js +24 -24
  180. package/dist/{git-staleness-UGB5J3K7.js → git-staleness-X5XZONX3.js} +2 -2
  181. package/dist/{global-procedures-R7KRREEK.js → global-procedures-VIIVWB6R.js} +3 -3
  182. package/dist/{graph-auto-extract-LKIQ57PL.js → graph-auto-extract-HCQQF5AG.js} +4 -4
  183. package/dist/{graph-rag-JZZAB7PC.js → graph-rag-WAK2BRJH.js} +2 -2
  184. package/dist/hooks/bug-report-worker.js +19 -19
  185. package/dist/hooks/codex-stop-task-finalizer.js +19 -19
  186. package/dist/hooks/commit-complete.js +19 -19
  187. package/dist/hooks/error-recall.js +7 -7
  188. package/dist/hooks/exe-heartbeat-hook.js +3 -3
  189. package/dist/hooks/ingest-worker.js +5 -5
  190. package/dist/hooks/ingest.js +9 -9
  191. package/dist/hooks/instructions-loaded.js +4 -4
  192. package/dist/hooks/manifest.json +20 -20
  193. package/dist/hooks/notification.js +4 -4
  194. package/dist/hooks/post-compact.js +18 -18
  195. package/dist/hooks/post-tool-combined.js +9 -9
  196. package/dist/hooks/pre-compact.js +19 -19
  197. package/dist/hooks/pre-tool-use.js +22 -22
  198. package/dist/hooks/prompt-submit.js +36 -36
  199. package/dist/hooks/session-end.js +24 -24
  200. package/dist/hooks/session-start.js +14 -14
  201. package/dist/hooks/stop.js +25 -25
  202. package/dist/hooks/subagent-stop.js +18 -18
  203. package/dist/hooks/summary-worker.js +23 -23
  204. package/dist/index.js +29 -29
  205. package/dist/{installer-SB2N5NKH.js → installer-6IFVEQI4.js} +5 -5
  206. package/dist/{installer-MZWWBXM6.js → installer-NX2CLNV5.js} +5 -5
  207. package/dist/{installer-MNPXDLGG.js → installer-T2LGHZKL.js} +5 -5
  208. package/dist/{intercom-queue-VU2G6F5R.js → intercom-queue-KYHXXZCQ.js} +16 -16
  209. package/dist/lib/agent-config.js +1 -1
  210. package/dist/lib/cloud-sync.js +12 -12
  211. package/dist/lib/consolidation.js +8 -8
  212. package/dist/lib/database.js +2 -2
  213. package/dist/lib/db-daemon-client.js +2 -2
  214. package/dist/lib/db.js +2 -2
  215. package/dist/lib/device-registry.js +1 -1
  216. package/dist/lib/embedder.js +2 -2
  217. package/dist/lib/employee-templates.js +4 -4
  218. package/dist/lib/employees.js +2 -2
  219. package/dist/lib/exe-daemon-client.js +1 -1
  220. package/dist/lib/exe-daemon.js +123 -54
  221. package/dist/lib/hybrid-search.js +6 -6
  222. package/dist/lib/identity.js +2 -2
  223. package/dist/lib/license.js +2 -2
  224. package/dist/lib/messaging.js +17 -17
  225. package/dist/lib/post-tool-memory.js +3 -3
  226. package/dist/lib/registry-proxy.js +1 -1
  227. package/dist/lib/reminders.js +3 -3
  228. package/dist/lib/schedules.js +6 -6
  229. package/dist/lib/session-registry.js +4 -4
  230. package/dist/lib/skill-learning.js +7 -7
  231. package/dist/lib/store.js +5 -5
  232. package/dist/lib/task-router.js +3 -3
  233. package/dist/lib/tasks.js +18 -18
  234. package/dist/lib/tmux-routing.js +16 -16
  235. package/dist/lib/token-spend.js +3 -3
  236. package/dist/{license-gate-BYDMFMFT.js → license-gate-MGDR4YNI.js} +3 -3
  237. package/dist/{license-sync-N3RNYVP2.js → license-sync-UWE6GEB4.js} +2 -2
  238. package/dist/mcp/register-tools.js +73 -72
  239. package/dist/mcp/server.js +74 -73
  240. package/dist/mcp/tools/complete-reminder.js +4 -4
  241. package/dist/mcp/tools/create-reminder.js +4 -4
  242. package/dist/mcp/tools/create-task.js +20 -20
  243. package/dist/mcp/tools/deactivate-behavior.js +8 -8
  244. package/dist/mcp/tools/list-reminders.js +4 -4
  245. package/dist/mcp/tools/list-tasks.js +20 -20
  246. package/dist/mcp/tools/send-message.js +19 -19
  247. package/dist/mcp/tools/update-task.js +19 -19
  248. package/dist/{mcp-http-config-EMAVS2JI.js → mcp-http-config-RQLYEPTL.js} +3 -3
  249. package/dist/{memory-cards-TQRLZI4D.js → memory-cards-VYQ5DPMR.js} +5 -5
  250. package/dist/{memory-graph-extractor-IWGNVAFU.js → memory-graph-extractor-GX2HNYLU.js} +5 -5
  251. package/dist/{memory-poisoning-defense-T4ITBGSG.js → memory-poisoning-defense-TX7627BD.js} +2 -2
  252. package/dist/{memory-pressure-watchdog-RRIAXPXQ.js → memory-pressure-watchdog-MLNNH26B.js} +17 -17
  253. package/dist/{memory-queue-client-BKQHTYTH.js → memory-queue-client-YRL6XTGU.js} +2 -2
  254. package/dist/{memory-reflection-6N4J2FL7.js → memory-reflection-KIGEFSI4.js} +2 -2
  255. package/dist/notification-ledger-B6AVEGMV.js +407 -0
  256. package/dist/{notifications-KONB3C62.js → notifications-DWXV7SVL.js} +16 -16
  257. package/dist/{orchestration-events-5SIJOE4H.js → orchestration-events-ZG7O4HRY.js} +3 -3
  258. package/dist/{orchestrator-DUUX7FQV.js → orchestrator-PGHJDUUT.js} +18 -18
  259. package/dist/{pipeline-router-O6HU7DKH.js → pipeline-router-RTLAGZTA.js} +3 -3
  260. package/dist/{plan-limits-GRNBOBB3.js → plan-limits-WLQZTCSF.js} +5 -5
  261. package/dist/{projection-worker-ZVOFHTXT.js → projection-worker-44SEKTZ5.js} +2 -2
  262. package/dist/{prospective-memory-W6S67LZZ.js → prospective-memory-UACFTYXK.js} +2 -2
  263. package/dist/{reranker-SSFBRWWD.js → reranker-NL4YAV6R.js} +1 -1
  264. package/dist/{retrieval-health-TWHKYCRK.js → retrieval-health-4C2PO6HH.js} +1 -1
  265. package/dist/{review-polling-PCMD5BFN.js → review-polling-W5AMHNLT.js} +17 -17
  266. package/dist/runtime/index.js +24 -24
  267. package/dist/{session-events-3LCVQEL7.js → session-events-PGL5GJEB.js} +17 -17
  268. package/dist/{session-kill-telemetry-CZSPN5V6.js → session-kill-telemetry-6YDGEF27.js} +17 -17
  269. package/dist/{session-scope-CFHVSVAQ.js → session-scope-3MEOO557.js} +16 -16
  270. package/dist/{setup-wizard-CJZMM43G.js → setup-wizard-CJIYDSSP.js} +1 -1
  271. package/dist/{skill-refinement-74T6VDFM.js → skill-refinement-EOROTBPX.js} +3 -3
  272. package/dist/stack-promote-RSOWO6EY.js +130 -0
  273. package/dist/{stack-release-XXMV7SPX.js → stack-release-PR2XKJ4Q.js} +24 -9
  274. package/dist/{stack-update-E2TKHHSQ.js → stack-update-LMDM27ZW.js} +5 -3
  275. package/dist/{steward-gate-WT7WXQIE.js → steward-gate-4A2XHYFD.js} +3 -3
  276. package/dist/support-inbox-Z77ACQUY.js +32 -0
  277. package/dist/support-outbox-GB5SQFRJ.js +16 -0
  278. package/dist/{task-enforcement-VI7L43DC.js → task-enforcement-X5QVL6RE.js} +17 -17
  279. package/dist/{task-scope-CQEG5SSJ.js → task-scope-EKYDCVUF.js} +16 -16
  280. package/dist/{tasks-crud-UGK5A25L.js → tasks-crud-6LBNU43G.js} +16 -16
  281. package/dist/{tasks-notify-SMLDFBWM.js → tasks-notify-TFJLSQ3B.js} +17 -17
  282. package/dist/{tasks-review-JKBRACII.js → tasks-review-PBIUYXAL.js} +16 -16
  283. package/dist/{telemetry-upload-7LBYGPCB.js → telemetry-upload-WQDFABTF.js} +7 -7
  284. package/dist/{token-budget-QBRJR4M5.js → token-budget-KWGL5DY7.js} +3 -3
  285. package/dist/{tool-capability-index-Q6YQDL7I.js → tool-capability-index-EH3HQVHU.js} +1 -1
  286. package/dist/{tool-telemetry-ULIDUK3P.js → tool-telemetry-UC55LSIH.js} +1 -1
  287. package/dist/tui/App.js +24 -24
  288. package/dist/{tui-data-NPTGKT37.js → tui-data-M3RBSJL3.js} +16 -16
  289. package/dist/update-support-VPBD5SD2.js +355 -0
  290. package/dist/{worker-gate-MXUQUG4M.js → worker-gate-4QLLMXZM.js} +1 -1
  291. package/dist/{workflow-engine-EWCOLD47.js → workflow-engine-MMEHKUN4.js} +2 -2
  292. package/dist/{worktree-GVF2I5FP.js → worktree-YXBDRYOC.js} +4 -4
  293. package/dist/{worktree-sweep-ZAG3V24E.js → worktree-sweep-5WKBU7E6.js} +5 -5
  294. package/package.json +2 -2
  295. package/release-notes.json +35 -60
  296. package/dist/chunk-Y25OJWOQ.js +0 -45
  297. package/dist/{chunk-FLNSJ2TC.js → chunk-2KLAYDFB.js} +0 -0
  298. package/dist/{chunk-WHRTDN5J.js → chunk-3NCZKWPO.js} +0 -0
  299. package/dist/{chunk-IYB2NIW3.js → chunk-6MVI4QH2.js} +0 -0
  300. package/dist/{chunk-A4DVMPYB.js → chunk-7UMCQQWS.js} +3 -3
  301. /package/dist/{chunk-QLFRCA6I.js → chunk-AYLNJGCS.js} +0 -0
  302. /package/dist/{chunk-D3QASX2W.js → chunk-C2SRRCRK.js} +0 -0
  303. /package/dist/{chunk-KTPG4XKI.js → chunk-IB336P52.js} +0 -0
  304. /package/dist/{chunk-NQBRGXYR.js → chunk-MC6VPZKS.js} +0 -0
  305. /package/dist/{chunk-5Z5NATNS.js → chunk-PPZOWQHP.js} +0 -0
  306. /package/dist/{chunk-C2UO2I6K.js → chunk-WNKVKNOM.js} +0 -0
  307. /package/dist/{core-memory-VO5ZIBKH.js → core-memory-3IBWM4WR.js} +0 -0
  308. /package/dist/{entity-boost-DNI4A5I7.js → entity-boost-DWAWXFKN.js} +0 -0
  309. /package/dist/{message-queue-client-Q5BW3O5W.js → message-queue-client-3PTHPG5Q.js} +0 -0
  310. /package/dist/{oauth-server-ROQFOEMM.js → oauth-server-M5TGXT6D.js} +0 -0
  311. /package/dist/{project-boot-SD7GM24K.js → project-boot-6CGQ3EAH.js} +0 -0
  312. /package/dist/{wiki-acl-JA5UCQZ4.js → wiki-acl-7CROE3MJ.js} +0 -0
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  clearDaemonReady,
3
3
  writeDaemonReady
4
- } from "../chunk-I5RLNOFK.js";
4
+ } from "../chunk-3BRVLPPA.js";
5
5
  import {
6
6
  pushNotifyAsync
7
7
  } from "../chunk-BVV6NHKQ.js";
@@ -21,8 +21,8 @@ import {
21
21
  findScopedDuplicate,
22
22
  governMemoryRecord,
23
23
  schedulePostWriteMemoryHygiene
24
- } from "../chunk-HHIBOU3P.js";
25
- import "../chunk-Y25OJWOQ.js";
24
+ } from "../chunk-7LF5DS3A.js";
25
+ import "../chunk-RP5GETX5.js";
26
26
  import {
27
27
  attributeSignalSource,
28
28
  consumeRestartIntentDetail,
@@ -1438,7 +1438,7 @@ async function loadModel() {
1438
1438
  void (async () => {
1439
1439
  try {
1440
1440
  if (_storeInitialized) {
1441
- const { writeNotification } = await import("../notifications-KONB3C62.js");
1441
+ const { writeNotification } = await import("../notifications-DWXV7SVL.js");
1442
1442
  await writeNotification({
1443
1443
  agentId: "exe",
1444
1444
  agentRole: "system",
@@ -1554,7 +1554,7 @@ function disableEmbeddingsForInferenceTimeouts() {
1554
1554
  void (async () => {
1555
1555
  try {
1556
1556
  if (_storeInitialized) {
1557
- const { writeNotification } = await import("../notifications-KONB3C62.js");
1557
+ const { writeNotification } = await import("../notifications-DWXV7SVL.js");
1558
1558
  await writeNotification({
1559
1559
  agentId: "exe",
1560
1560
  agentRole: "system",
@@ -1765,7 +1765,7 @@ async function shutdown(exitCode = 0) {
1765
1765
  }
1766
1766
  }
1767
1767
  try {
1768
- const { createBackupAsync, enforceRetention, hasRecentBackup } = await import("../db-backup-DLD4QZBO.js");
1768
+ const { createBackupAsync, enforceRetention, hasRecentBackup } = await import("../db-backup-MX2G3CEK.js");
1769
1769
  const PRE_RESTART_DEDUP_MS = 2 * 60 * 1e3;
1770
1770
  if (hasRecentBackup("pre-restart", PRE_RESTART_DEDUP_MS)) {
1771
1771
  const deleted = enforceRetention("pre-restart");
@@ -1796,7 +1796,7 @@ async function shutdown(exitCode = 0) {
1796
1796
  `);
1797
1797
  }
1798
1798
  try {
1799
- const { stopProjectionWorker } = await import("../projection-worker-ZVOFHTXT.js");
1799
+ const { stopProjectionWorker } = await import("../projection-worker-44SEKTZ5.js");
1800
1800
  stopProjectionWorker();
1801
1801
  } catch {
1802
1802
  }
@@ -1862,7 +1862,7 @@ async function handleHealthCheck(socket, requestId) {
1862
1862
  let pipelineStatus = "unknown";
1863
1863
  if (dbConnected) {
1864
1864
  try {
1865
- await import("../pipeline-router-O6HU7DKH.js");
1865
+ await import("../pipeline-router-RTLAGZTA.js");
1866
1866
  pipelineStatus = "ok";
1867
1867
  } catch {
1868
1868
  pipelineStatus = "unavailable";
@@ -2258,7 +2258,7 @@ async function _writeMemoryRecordInner(entry) {
2258
2258
  const vRow = await client.execute({ sql: "SELECT version FROM memories WHERE id = ?", args: [id] });
2259
2259
  const version = Number(vRow.rows[0]?.version) || 0;
2260
2260
  try {
2261
- const { insertOntologyForMemory } = await import("../agentic-ontology-RNSXGXW4.js");
2261
+ const { insertOntologyForMemory } = await import("../agentic-ontology-RVUNRCQY.js");
2262
2262
  await insertOntologyForMemory({
2263
2263
  id,
2264
2264
  agent_id: record.agent_id,
@@ -2348,7 +2348,7 @@ function startMessageQueueDrain() {
2348
2348
  fired("message_queue_drain");
2349
2349
  if (!await ensureStoreForPolling()) return;
2350
2350
  try {
2351
- const { claimMessageQueue, ackMessageQueue } = await import("../message-queue-client-Q5BW3O5W.js");
2351
+ const { claimMessageQueue, ackMessageQueue } = await import("../message-queue-client-3PTHPG5Q.js");
2352
2352
  const lease = claimMessageQueue();
2353
2353
  if (!lease || lease.entries.length === 0) return;
2354
2354
  acted("message_queue_drain");
@@ -2994,7 +2994,7 @@ async function startMcpHttpServer() {
2994
2994
  process.stderr.write("[exed] MCP HTTP: DB ready\n");
2995
2995
  setBootPhase("db_ready");
2996
2996
  _storeInitialized = true;
2997
- const { initLicenseGate, getCachedLicenseGate } = await import("../license-gate-BYDMFMFT.js");
2997
+ const { initLicenseGate, getCachedLicenseGate } = await import("../license-gate-MGDR4YNI.js");
2998
2998
  const gateResult = await initLicenseGate();
2999
2999
  if (!gateResult.hasKey) {
3000
3000
  process.stderr.write(
@@ -3009,13 +3009,13 @@ async function startMcpHttpServer() {
3009
3009
  let _cachedWrapTelemetry = null;
3010
3010
  async function getWrapTelemetry() {
3011
3011
  if (!_cachedWrapTelemetry) {
3012
- const { wrapServerWithTelemetry } = await import("../tool-telemetry-ULIDUK3P.js");
3012
+ const { wrapServerWithTelemetry } = await import("../tool-telemetry-UC55LSIH.js");
3013
3013
  _cachedWrapTelemetry = wrapServerWithTelemetry;
3014
3014
  }
3015
3015
  return _cachedWrapTelemetry;
3016
3016
  }
3017
3017
  Promise.all([
3018
- import("../tool-capability-index-Q6YQDL7I.js"),
3018
+ import("../tool-capability-index-EH3HQVHU.js"),
3019
3019
  import("../tool-gates-3IC7DK4R.js")
3020
3020
  ]).then(async ([{ getToolCapabilityIndex }, { TOOL_CATEGORIES }]) => {
3021
3021
  const gateState = getCachedLicenseGate();
@@ -3079,7 +3079,7 @@ async function startMcpHttpServer() {
3079
3079
  if (!token || token === header) return false;
3080
3080
  if (token === _daemonToken) return true;
3081
3081
  try {
3082
- const { verifyAccessToken } = await import("../oauth-server-ROQFOEMM.js");
3082
+ const { verifyAccessToken } = await import("../oauth-server-M5TGXT6D.js");
3083
3083
  const result = verifyAccessToken(token);
3084
3084
  return result.valid;
3085
3085
  } catch {
@@ -3324,7 +3324,7 @@ async function startMcpHttpServer() {
3324
3324
  return;
3325
3325
  }
3326
3326
  try {
3327
- const { handleOAuthRoute } = await import("../oauth-server-ROQFOEMM.js");
3327
+ const { handleOAuthRoute } = await import("../oauth-server-M5TGXT6D.js");
3328
3328
  const handled = await handleOAuthRoute(req, res, url, MCP_HTTP_PORT);
3329
3329
  if (handled) return;
3330
3330
  } catch (err) {
@@ -3452,7 +3452,7 @@ async function startMcpHttpServer() {
3452
3452
  contextPct: body.context_pct
3453
3453
  });
3454
3454
  if (body.context_pct !== void 0 && body.context_pct > 70) {
3455
- void import("../orchestration-events-5SIJOE4H.js").then(({ recordOrchestrationEventBestEffort: recordOE }) => {
3455
+ void import("../orchestration-events-ZG7O4HRY.js").then(({ recordOrchestrationEventBestEffort: recordOE }) => {
3456
3456
  recordOE({
3457
3457
  eventType: "context.pressure",
3458
3458
  source: "exe-daemon.heartbeat",
@@ -4046,6 +4046,20 @@ async function ensureStoreForPolling() {
4046
4046
  }
4047
4047
  await initDatabase({ dbPath: config.dbPath, encryptionKey: masterKey.toString("hex") });
4048
4048
  await ensureSchema();
4049
+ try {
4050
+ const { isLedgerEnabled } = await import("../notification-ledger-B6AVEGMV.js");
4051
+ if (isLedgerEnabled()) {
4052
+ const { bumpBootGeneration } = await import("../boot-generation-GSMPJOWM.js");
4053
+ const { setDaemonReadyGeneration } = await import("../daemon-ready-signal-WKEJQNRA.js");
4054
+ const generation = await bumpBootGeneration();
4055
+ setDaemonReadyGeneration(generation);
4056
+ process.stderr.write(`[exed] notification ledger enabled \u2014 boot generation ${generation}
4057
+ `);
4058
+ }
4059
+ } catch (e) {
4060
+ process.stderr.write(`[exed] boot-generation bump failed (non-fatal): ${e instanceof Error ? e.message : String(e)}
4061
+ `);
4062
+ }
4049
4063
  try {
4050
4064
  const { spawnDbReadWorker } = await import("./db-read-worker-client.js");
4051
4065
  spawnDbReadWorker(config.dbPath, masterKey.toString("hex"));
@@ -4065,13 +4079,13 @@ async function ensureStoreForPolling() {
4065
4079
  }
4066
4080
  }
4067
4081
  async function startReviewPolling() {
4068
- const polling = await import("../review-polling-PCMD5BFN.js");
4082
+ const polling = await import("../review-polling-W5AMHNLT.js");
4069
4083
  const state = {
4070
4084
  lastIntercomSent: /* @__PURE__ */ new Map(),
4071
4085
  lastNudgeSent: /* @__PURE__ */ new Map(),
4072
4086
  intervalMs: REVIEW_POLL_INTERVAL_MS
4073
4087
  };
4074
- const { pollReviewNudge, createReviewNudgeRealDeps, loadNudgeState } = await import("../daemon-orchestration-7QB6QOXT.js");
4088
+ const { pollReviewNudge, createReviewNudgeRealDeps, loadNudgeState } = await import("../daemon-orchestration-XV5GN73R.js");
4075
4089
  const nudgeState = loadNudgeState();
4076
4090
  const tick = async () => traceDaemonTimer("review_polling", async () => {
4077
4091
  fired("review_polling");
@@ -4116,7 +4130,7 @@ function startSessionTTL() {
4116
4130
  if (inPostRestartDestructiveGrace("session_ttl")) return;
4117
4131
  try {
4118
4132
  const { getClient } = await import("./database.js");
4119
- const { checkSessionTTL, createSessionTTLRealDeps } = await import("../daemon-orchestration-7QB6QOXT.js");
4133
+ const { checkSessionTTL, createSessionTTLRealDeps } = await import("../daemon-orchestration-XV5GN73R.js");
4120
4134
  const deps = createSessionTTLRealDeps(getClient);
4121
4135
  const killed = await checkSessionTTL(deps);
4122
4136
  if (killed.length > 0) acted("session_ttl");
@@ -4165,7 +4179,7 @@ function startIdleKill() {
4165
4179
  const cfg = await getCachedConfig();
4166
4180
  if (!cfg) return;
4167
4181
  const { getClient } = await import("./database.js");
4168
- const { pollIdleKill, createIdleKillRealDeps } = await import("../daemon-orchestration-7QB6QOXT.js");
4182
+ const { pollIdleKill, createIdleKillRealDeps } = await import("../daemon-orchestration-XV5GN73R.js");
4169
4183
  const { sessions: liveSessions, paneCache, aliveSessions } = await getSharedOrchestrationCaches();
4170
4184
  const realDeps = createIdleKillRealDeps(
4171
4185
  getClient,
@@ -4238,7 +4252,7 @@ function startConsolidation() {
4238
4252
  `);
4239
4253
  }
4240
4254
  try {
4241
- const { createBackupAsync, enforceRetention } = await import("../db-backup-DLD4QZBO.js");
4255
+ const { createBackupAsync, enforceRetention } = await import("../db-backup-MX2G3CEK.js");
4242
4256
  const p = await createBackupAsync("pre-consolidation");
4243
4257
  if (p) enforceRetention("pre-consolidation");
4244
4258
  } catch (e) {
@@ -4471,7 +4485,7 @@ function startSkillRefinement() {
4471
4485
  if (!shouldRunHeavyJob("skill_refinement")) return;
4472
4486
  try {
4473
4487
  if (!await ensureStoreForPolling()) return;
4474
- const { runSkillRefinement } = await import("../skill-refinement-74T6VDFM.js");
4488
+ const { runSkillRefinement } = await import("../skill-refinement-EOROTBPX.js");
4475
4489
  const result = await runSkillRefinement();
4476
4490
  if (result.reviewed > 0) {
4477
4491
  acted("skill_refinement");
@@ -4497,7 +4511,7 @@ function startStaleBranchSweep() {
4497
4511
  const tick = async () => {
4498
4512
  fired("stale_branch_sweep");
4499
4513
  try {
4500
- const { discoverRepoPaths } = await import("../worktree-sweep-ZAG3V24E.js");
4514
+ const { discoverRepoPaths } = await import("../worktree-sweep-5WKBU7E6.js");
4501
4515
  const { scanUnmergedBranches } = await import("../branch-hygiene-R5NVTRAY.js");
4502
4516
  const today = (/* @__PURE__ */ new Date()).toISOString().slice(0, 10);
4503
4517
  for (const k of _staleBranchAlertedToday) {
@@ -4525,7 +4539,7 @@ function startStaleBranchSweep() {
4525
4539
  if (!_storeInitialized) continue;
4526
4540
  const stale = scan.branches.filter((b) => b.ageHours >= STALE_BRANCH_HOURS).slice(0, 5).map((b) => `${b.name} (+${b.ahead} commits, ${(b.ageHours / 24).toFixed(1)}d)`).join("; ");
4527
4541
  try {
4528
- const { writeNotification } = await import("../notifications-KONB3C62.js");
4542
+ const { writeNotification } = await import("../notifications-DWXV7SVL.js");
4529
4543
  await writeNotification({
4530
4544
  agentId: "exe",
4531
4545
  agentRole: "system",
@@ -4564,7 +4578,7 @@ function startGraphExtraction() {
4564
4578
  if (!await ensureStoreForPolling()) return;
4565
4579
  const { getClient } = await import("./database.js");
4566
4580
  const client = getClient();
4567
- const { extractBatch } = await import("../graph-rag-JZZAB7PC.js");
4581
+ const { extractBatch } = await import("../graph-rag-WAK2BRJH.js");
4568
4582
  const result = await extractBatch(client, 50, config.selfQueryModel);
4569
4583
  if (result.processed > 0) {
4570
4584
  acted("graph_extraction");
@@ -4982,7 +4996,7 @@ function startReflectionSweep() {
4982
4996
  );
4983
4997
  let runReflection;
4984
4998
  try {
4985
- ({ runReflection } = await import("../memory-reflection-6N4J2FL7.js"));
4999
+ ({ runReflection } = await import("../memory-reflection-KIGEFSI4.js"));
4986
5000
  } catch (importErr) {
4987
5001
  _reflectionImportFailed = true;
4988
5002
  process.stderr.write(`[exed] Reflection module unavailable (stale chunk hash?) \u2014 disabled until daemon restart: ${importErr instanceof Error ? importErr.message : String(importErr)}
@@ -5023,7 +5037,7 @@ function startReflectionSweep() {
5023
5037
  if (memories > 100 && cards < memories * 0.1) {
5024
5038
  process.stderr.write(`[exed] Memory cards sparse (${cards} cards / ${memories} memories) \u2014 running backfill...
5025
5039
  `);
5026
- const { insertMemoryCardsForBatch } = await import("../memory-cards-TQRLZI4D.js");
5040
+ const { insertMemoryCardsForBatch } = await import("../memory-cards-VYQ5DPMR.js");
5027
5041
  const batchSize = 500;
5028
5042
  let offset = 0;
5029
5043
  let totalCards = 0;
@@ -5068,7 +5082,7 @@ function startDatabaseBackup() {
5068
5082
  fired("db_backup");
5069
5083
  if (!shouldRunHeavyJob("db_backup")) return;
5070
5084
  try {
5071
- const { createBackupAsync, enforceRetention, hasBackupToday } = await import("../db-backup-DLD4QZBO.js");
5085
+ const { createBackupAsync, enforceRetention, hasBackupToday } = await import("../db-backup-MX2G3CEK.js");
5072
5086
  if (hasBackupToday("daily")) return;
5073
5087
  const backupPath = await createBackupAsync("daily");
5074
5088
  if (backupPath) {
@@ -5078,6 +5092,22 @@ function startDatabaseBackup() {
5078
5092
  `[exed] DB backup: ${backupPath.split("/").pop()}${deleted > 0 ? ` (rotated ${deleted} old)` : ""}
5079
5093
  `
5080
5094
  );
5095
+ try {
5096
+ const { maybeVerifyDailyBackup } = await import("../backup-verify-ZAJLEL4X.js");
5097
+ const verdict = await maybeVerifyDailyBackup(backupPath);
5098
+ if (verdict && !verdict.ok) {
5099
+ process.stderr.write(
5100
+ `[exed] DB backup VERIFY FAIL: ${verdict.backup} \u2014 ${verdict.reason}${verdict.detail ? `: ${verdict.detail}` : ""}
5101
+ `
5102
+ );
5103
+ } else if (verdict) {
5104
+ process.stderr.write(`[exed] DB backup verified OK (${verdict.source})
5105
+ `);
5106
+ }
5107
+ } catch (verr) {
5108
+ process.stderr.write(`[exed] DB backup verify skipped: ${verr instanceof Error ? verr.message : String(verr)}
5109
+ `);
5110
+ }
5081
5111
  }
5082
5112
  } catch (err) {
5083
5113
  process.stderr.write(`[exed] DB backup error: ${err instanceof Error ? err.message : String(err)}
@@ -5138,7 +5168,7 @@ function startSessionEventsRetention() {
5138
5168
  if (!await ensureStoreForPolling()) return;
5139
5169
  try {
5140
5170
  const { getClient } = await import("./database.js");
5141
- const { sweepExpiredSessionEvents, DEFAULT_SESSION_EVENTS_RETENTION_DAYS } = await import("../session-events-3LCVQEL7.js");
5171
+ const { sweepExpiredSessionEvents, DEFAULT_SESSION_EVENTS_RETENTION_DAYS } = await import("../session-events-PGL5GJEB.js");
5142
5172
  const days = SESSION_EVENTS_RETENTION_DAYS ?? DEFAULT_SESSION_EVENTS_RETENTION_DAYS;
5143
5173
  const count = await sweepExpiredSessionEvents(getClient(), days);
5144
5174
  if (count > 0) {
@@ -5169,7 +5199,7 @@ function startIntercomQueueDrain() {
5169
5199
  const tick = async () => traceDaemonTimer("intercom_queue_drain", async () => {
5170
5200
  fired("intercom_queue_drain");
5171
5201
  try {
5172
- const { drainQueueAsync, readQueue } = await import("../intercom-queue-VU2G6F5R.js");
5202
+ const { drainQueueAsync, readQueue } = await import("../intercom-queue-KYHXXZCQ.js");
5173
5203
  const {
5174
5204
  sendIntercomAsync: centralSendIntercomAsync,
5175
5205
  decideQueuedNudgeDrain,
@@ -5253,12 +5283,50 @@ function startIntercomQueueDrain() {
5253
5283
  process.stderr.write(`[exed] Intercom queue drain started (every ${QUEUE_DRAIN_INTERVAL_MS / 1e3}s)
5254
5284
  `);
5255
5285
  }
5286
+ function startLedgerDrain() {
5287
+ const tick = async () => traceDaemonTimer("ledger_drain", async () => {
5288
+ fired("ledger_drain");
5289
+ try {
5290
+ const { isLedgerEnabled, drainLedger } = await import("../notification-ledger-B6AVEGMV.js");
5291
+ if (!isLedgerEnabled()) return;
5292
+ const result = await drainLedger({
5293
+ // Shadow "would-deliver": idle target = would-deliver, busy = retry.
5294
+ // No real send here — the legacy intercom path owns actual delivery.
5295
+ attemptDelivery: async (row) => {
5296
+ const session = row.targetSession;
5297
+ if (!session) return false;
5298
+ const state = classifyPaneState(await capturePaneAsync(session, 5));
5299
+ const busy = state === "thinking" || state === "tool";
5300
+ if (busy) return false;
5301
+ process.stderr.write(
5302
+ `[exed] ledger(shadow) WOULD deliver ${row.kind} \u2192 ${session} (id ${row.id}, retries ${row.retryCount})
5303
+ `
5304
+ );
5305
+ return true;
5306
+ }
5307
+ });
5308
+ if (result.delivered || result.retried || result.expired || result.escalated) {
5309
+ acted("ledger_drain");
5310
+ process.stderr.write(
5311
+ `[exed] Ledger(shadow): ${result.delivered} would-deliver, ${result.retried} retry, ${result.expired} expired, ${result.escalated} escalated
5312
+ `
5313
+ );
5314
+ }
5315
+ } catch (e) {
5316
+ process.stderr.write("[exe-daemon] ledger drain: " + (e instanceof Error ? e.message : String(e)) + "\n");
5317
+ }
5318
+ });
5319
+ const timer = setInterval(tick, QUEUE_DRAIN_INTERVAL_MS);
5320
+ timer.unref();
5321
+ process.stderr.write(`[exed] Notification ledger drain started (shadow, every ${QUEUE_DRAIN_INTERVAL_MS / 1e3}s)
5322
+ `);
5323
+ }
5256
5324
  var ORPHAN_REAP_INTERVAL_MS = 5 * 60 * 1e3;
5257
5325
  function startOrphanReaper() {
5258
5326
  const tick = async () => traceDaemonTimer("orphan_reaper", async () => {
5259
5327
  fired("orphan_reaper");
5260
5328
  try {
5261
- const { reapOrphanedMcpProcesses, createOrphanReaperRealDepsAsync } = await import("../daemon-orchestration-7QB6QOXT.js");
5329
+ const { reapOrphanedMcpProcesses, createOrphanReaperRealDepsAsync } = await import("../daemon-orchestration-XV5GN73R.js");
5262
5330
  const deps = await createOrphanReaperRealDepsAsync();
5263
5331
  const reaped = await reapOrphanedMcpProcesses(deps);
5264
5332
  if (reaped.length > 0) acted("orphan_reaper");
@@ -5283,7 +5351,7 @@ function startZombieAgentReaper() {
5283
5351
  const tick = async () => traceDaemonTimer("zombie_agent_reaper", async () => {
5284
5352
  fired("zombie_agent_reaper");
5285
5353
  try {
5286
- const { reapZombieAgentProcesses, createZombieAgentReaperRealDepsAsync } = await import("../daemon-orchestration-7QB6QOXT.js");
5354
+ const { reapZombieAgentProcesses, createZombieAgentReaperRealDepsAsync } = await import("../daemon-orchestration-XV5GN73R.js");
5287
5355
  const deps = await createZombieAgentReaperRealDepsAsync();
5288
5356
  const reaped = reapZombieAgentProcesses(deps);
5289
5357
  if (reaped.length > 0) acted("zombie_agent_reaper");
@@ -5307,7 +5375,7 @@ async function startDaemonMemoryPressureWatchdog() {
5307
5375
  try {
5308
5376
  const cfg = await getCachedConfig();
5309
5377
  if (!cfg) return;
5310
- const { startMemoryPressureWatchdog: startWatchdog, MEMORY_PRESSURE_WATCHDOG_DEFAULTS } = await import("../memory-pressure-watchdog-RRIAXPXQ.js");
5378
+ const { startMemoryPressureWatchdog: startWatchdog, MEMORY_PRESSURE_WATCHDOG_DEFAULTS } = await import("../memory-pressure-watchdog-MLNNH26B.js");
5311
5379
  const watchdogCfg = {
5312
5380
  ...MEMORY_PRESSURE_WATCHDOG_DEFAULTS,
5313
5381
  ...cfg.memoryPressureWatchdog ?? {}
@@ -5338,7 +5406,7 @@ function startWorktreeReaper() {
5338
5406
  const tick = async () => traceDaemonTimer("worktree_reaper", async () => {
5339
5407
  fired("worktree_reaper");
5340
5408
  try {
5341
- const { reapOrphanedWorktrees, createWorktreeReaperRealDeps } = await import("../daemon-orchestration-7QB6QOXT.js");
5409
+ const { reapOrphanedWorktrees, createWorktreeReaperRealDeps } = await import("../daemon-orchestration-XV5GN73R.js");
5342
5410
  const deps = await createWorktreeReaperRealDeps();
5343
5411
  const result = await reapOrphanedWorktrees(deps);
5344
5412
  if (result.pruned.length > 0) {
@@ -5378,8 +5446,8 @@ function startWorktreeReaper() {
5378
5446
  }
5379
5447
  continue;
5380
5448
  }
5381
- const { cleanupAgentWorktree } = await import("../worktree-sweep-ZAG3V24E.js");
5382
- const { getMainRepoRoot } = await import("../worktree-GVF2I5FP.js");
5449
+ const { cleanupAgentWorktree } = await import("../worktree-sweep-5WKBU7E6.js");
5450
+ const { getMainRepoRoot } = await import("../worktree-YXBDRYOC.js");
5383
5451
  const repoRoot = getMainRepoRoot(signal.worktreePath);
5384
5452
  if (repoRoot && signal.agentId) {
5385
5453
  const notes = await cleanupAgentWorktree(repoRoot, signal.agentId);
@@ -5412,7 +5480,7 @@ function startAutoWake() {
5412
5480
  if (!await ensureStoreForPolling()) return;
5413
5481
  try {
5414
5482
  const { getClient } = await import("./database.js");
5415
- const { pollOrphanedTasks, createAutoWakeRealDeps } = await import("../daemon-orchestration-7QB6QOXT.js");
5483
+ const { pollOrphanedTasks, createAutoWakeRealDeps } = await import("../daemon-orchestration-XV5GN73R.js");
5416
5484
  const deps = createAutoWakeRealDeps(getClient, process.cwd(), getTmuxSessionsAsync);
5417
5485
  const woken = await pollOrphanedTasks(deps);
5418
5486
  if (woken.length > 0) acted("auto_wake");
@@ -5463,7 +5531,7 @@ function startAutoWake() {
5463
5531
  if (age > 60 * 60 * 1e3) {
5464
5532
  try {
5465
5533
  unlinkSync2(signalPath);
5466
- void import("../orchestration-events-5SIJOE4H.js").then(({ recordOrchestrationEventBestEffort: recordOE }) => {
5534
+ void import("../orchestration-events-ZG7O4HRY.js").then(({ recordOrchestrationEventBestEffort: recordOE }) => {
5467
5535
  recordOE({ eventType: "signal.stale", source: "exe-daemon.autoWake", severity: "warn", payload: { file, ageMinutes: Math.round(age / 6e4) } });
5468
5536
  }).catch(() => {
5469
5537
  });
@@ -5523,7 +5591,7 @@ function startWalCheckpoint() {
5523
5591
  try {
5524
5592
  const { getClient, runWalCheckpoint } = await import("./database.js");
5525
5593
  const client = getClient();
5526
- const { findActiveDb } = await import("../db-backup-DLD4QZBO.js");
5594
+ const { findActiveDb } = await import("../db-backup-MX2G3CEK.js");
5527
5595
  const dbPath = findActiveDb();
5528
5596
  const started = Date.now();
5529
5597
  const result = await runWalCheckpoint(client, dbPath, true);
@@ -5601,7 +5669,7 @@ function startStuckTaskRelease() {
5601
5669
  createStuckTaskRealDeps,
5602
5670
  escalateStuckBlockedTasks,
5603
5671
  createStuckBlockedRealDeps
5604
- } = await import("../daemon-orchestration-7QB6QOXT.js");
5672
+ } = await import("../daemon-orchestration-XV5GN73R.js");
5605
5673
  const deps = createStuckTaskRealDeps(getClient);
5606
5674
  const released = await releaseStuckTasks(deps);
5607
5675
  if (released.length > 0) {
@@ -5796,12 +5864,12 @@ function startTaskEnforcementScanner() {
5796
5864
  const tick = async () => traceDaemonTimer("task_enforcement", async () => {
5797
5865
  fired("task_enforcement");
5798
5866
  try {
5799
- const { runTaskEnforcementTick } = await import("../task-enforcement-VI7L43DC.js");
5867
+ const { runTaskEnforcementTick } = await import("../task-enforcement-X5QVL6RE.js");
5800
5868
  const { getTransport } = await import("./transport.js");
5801
5869
  const { loadAgentConfig } = await import("./agent-config.js");
5802
5870
  const { getClient } = await import("./database.js");
5803
5871
  const { loadEmployeesSync } = await import("./employees.js");
5804
- const { sessionScopeFilter } = await import("../task-scope-CQEG5SSJ.js");
5872
+ const { sessionScopeFilter } = await import("../task-scope-EKYDCVUF.js");
5805
5873
  const transport = getTransport();
5806
5874
  const { sessions: allSessions, paneCache, aliveSessions } = await getSharedOrchestrationCaches();
5807
5875
  await yieldToEventLoop();
@@ -5812,10 +5880,10 @@ function startTaskEnforcementScanner() {
5812
5880
  sendKeysLiteral: transport.sendKeysLiteral?.bind(transport),
5813
5881
  isAlive: (session) => aliveSessions.has(session)
5814
5882
  };
5815
- const { checkAutoWakeGates } = await import("../daemon-orchestration-7QB6QOXT.js");
5883
+ const { checkAutoWakeGates } = await import("../daemon-orchestration-XV5GN73R.js");
5816
5884
  const { ensureEmployeeAsync, employeeSessionName } = await import("./tmux-routing.js");
5817
5885
  const { shouldAutoInstance } = await import("./employees.js");
5818
- const { recordOrchestrationEventBestEffort } = await import("../orchestration-events-5SIJOE4H.js");
5886
+ const { recordOrchestrationEventBestEffort } = await import("../orchestration-events-ZG7O4HRY.js");
5819
5887
  const projectDir = process.cwd();
5820
5888
  await runTaskEnforcementTick({
5821
5889
  transport: enforcementTransport,
@@ -6531,7 +6599,7 @@ if (process.platform === "darwin") {
6531
6599
  logBoot({ socketPath: SOCKET_PATH, pidPath: PID_PATH });
6532
6600
  void (async () => {
6533
6601
  try {
6534
- const { cleanupCrashDebris } = await import("../db-backup-DLD4QZBO.js");
6602
+ const { cleanupCrashDebris } = await import("../db-backup-MX2G3CEK.js");
6535
6603
  const removed = cleanupCrashDebris();
6536
6604
  if (removed > 0) {
6537
6605
  process.stderr.write(`[exed] Startup cleanup: pruned ${removed} crash-debris file(s) (backups/quarantine).
@@ -6707,7 +6775,7 @@ function startEventLoopLagDetector() {
6707
6775
  const msg = `[exed] EVENT LOOP BLOCKED ${(lag / 1e3).toFixed(1)}s \u2014 MCP UNRESPONSIVE. Sessions will die.`;
6708
6776
  process.stderr.write(msg + "\n");
6709
6777
  logDaemonHealth({ event: "event_loop_blocked", pid: process.pid, message: msg, data: { lagMs: lag } });
6710
- void import("../orchestration-events-5SIJOE4H.js").then(({ recordOrchestrationEventBestEffort: recordOE }) => {
6778
+ void import("../orchestration-events-ZG7O4HRY.js").then(({ recordOrchestrationEventBestEffort: recordOE }) => {
6711
6779
  recordOE({ eventType: "daemon.event_loop_blocked", source: "exe-daemon.lagDetector", severity: "error", durationMs: lag });
6712
6780
  }).catch(() => {
6713
6781
  });
@@ -6889,7 +6957,7 @@ function startTaskFileResync() {
6889
6957
  });
6890
6958
  if (Number(res.rowsAffected ?? 0) > 0) {
6891
6959
  synced++;
6892
- void import("../orchestration-events-5SIJOE4H.js").then(({ recordOrchestrationEventBestEffort: recordOE }) => {
6960
+ void import("../orchestration-events-ZG7O4HRY.js").then(({ recordOrchestrationEventBestEffort: recordOE }) => {
6893
6961
  recordOE({
6894
6962
  eventType: "task_file.resynced",
6895
6963
  source: "exe-daemon.taskFileResync",
@@ -6926,7 +6994,7 @@ function startTaskGroupBarriers() {
6926
6994
  fired("task_group_barriers");
6927
6995
  if (!await ensureStoreForPolling()) return;
6928
6996
  try {
6929
- const { pollTaskGroupBarriers } = await import("../daemon-orchestration-7QB6QOXT.js");
6997
+ const { pollTaskGroupBarriers } = await import("../daemon-orchestration-XV5GN73R.js");
6930
6998
  const firedCount = await pollTaskGroupBarriers();
6931
6999
  if (firedCount > 0) {
6932
7000
  acted("task_group_barriers");
@@ -6948,7 +7016,7 @@ function startCheckpointGc() {
6948
7016
  fired("checkpoint_gc");
6949
7017
  if (!await ensureStoreForPolling()) return;
6950
7018
  try {
6951
- const { gcStaleCheckpoints } = await import("../daemon-orchestration-7QB6QOXT.js");
7019
+ const { gcStaleCheckpoints } = await import("../daemon-orchestration-XV5GN73R.js");
6952
7020
  const cleared = await gcStaleCheckpoints();
6953
7021
  if (cleared > 0) {
6954
7022
  acted("checkpoint_gc");
@@ -6988,14 +7056,14 @@ function startDispatchAckCleanup() {
6988
7056
  function startProjectionWorkerDeferred() {
6989
7057
  setTimeout(async () => {
6990
7058
  try {
6991
- const { startProjectionWorker } = await import("../projection-worker-ZVOFHTXT.js");
7059
+ const { startProjectionWorker } = await import("../projection-worker-44SEKTZ5.js");
6992
7060
  startProjectionWorker();
6993
7061
  } catch {
6994
7062
  }
6995
7063
  }, 2e4);
6996
7064
  }
6997
7065
  async function startToolTelemetry() {
6998
- const { startToolTelemetryFlush } = await import("../tool-telemetry-ULIDUK3P.js");
7066
+ const { startToolTelemetryFlush } = await import("../tool-telemetry-UC55LSIH.js");
6999
7067
  startToolTelemetryFlush();
7000
7068
  process.stderr.write("[exed] Tool telemetry started (flush every 5m)\n");
7001
7069
  }
@@ -7026,6 +7094,7 @@ function startLocalFirstTimers() {
7026
7094
  setTimeout(() => void retryPendingMessages(), 15e3);
7027
7095
  void drainIngestOutbox();
7028
7096
  startIntercomQueueDrain();
7097
+ startLedgerDrain();
7029
7098
  startReviewPolling();
7030
7099
  startSessionTTL();
7031
7100
  startTaskEnforcementScanner();
@@ -7160,7 +7229,7 @@ function startLocalFirstTimers() {
7160
7229
  fired("orphan_task_cleanup");
7161
7230
  try {
7162
7231
  if (!await ensureStoreForPolling()) return;
7163
- const { cleanOrphanedTaskFiles } = await import("../tasks-crud-UGK5A25L.js");
7232
+ const { cleanOrphanedTaskFiles } = await import("../tasks-crud-6LBNU43G.js");
7164
7233
  const count = await cleanOrphanedTaskFiles();
7165
7234
  if (count > 0) {
7166
7235
  acted("orphan_task_cleanup");
@@ -7176,7 +7245,7 @@ function startLocalFirstTimers() {
7176
7245
  fired("task_file_consistency");
7177
7246
  try {
7178
7247
  if (!await ensureStoreForPolling()) return;
7179
- const { checkTaskFileConsistency } = await import("../tasks-crud-UGK5A25L.js");
7248
+ const { checkTaskFileConsistency } = await import("../tasks-crud-6LBNU43G.js");
7180
7249
  const mismatches = await checkTaskFileConsistency();
7181
7250
  if (mismatches > 0) {
7182
7251
  acted("task_file_consistency");
@@ -7195,7 +7264,7 @@ function startLocalFirstTimers() {
7195
7264
  const TELEMETRY_DAILY_MS = 24 * 60 * 60 * 1e3;
7196
7265
  const telemetryDaily = async () => {
7197
7266
  try {
7198
- const { sendTelemetry, isTelemetryEnabled } = await import("../telemetry-upload-7LBYGPCB.js");
7267
+ const { sendTelemetry, isTelemetryEnabled } = await import("../telemetry-upload-WQDFABTF.js");
7199
7268
  if (!isTelemetryEnabled()) return;
7200
7269
  const { upstream } = await sendTelemetry(24);
7201
7270
  if (upstream.startsWith("sent")) {
@@ -5,17 +5,17 @@ import {
5
5
  recentRecords,
6
6
  rrfMerge,
7
7
  rrfMergeMulti
8
- } from "../chunk-GQQHDEEM.js";
8
+ } from "../chunk-FOV57K47.js";
9
9
  import "../chunk-AB4PAQYK.js";
10
- import "../chunk-H37HHX3E.js";
10
+ import "../chunk-EDH54E5A.js";
11
11
  import "../chunk-CHCA3ZM2.js";
12
12
  import "../chunk-OTVEIJUQ.js";
13
- import "../chunk-HHIBOU3P.js";
14
- import "../chunk-Y25OJWOQ.js";
13
+ import "../chunk-7LF5DS3A.js";
14
+ import "../chunk-RP5GETX5.js";
15
15
  import "../chunk-MP2AFCGL.js";
16
- import "../chunk-HEPR6QTL.js";
16
+ import "../chunk-RWSLVYTE.js";
17
17
  import "../chunk-2I23RPSI.js";
18
- import "../chunk-ATOU6CYR.js";
18
+ import "../chunk-BV6GBSRP.js";
19
19
  import "../chunk-PNQDP3OA.js";
20
20
  import "../chunk-H73TUI4Y.js";
21
21
  import "../chunk-7HLWBYH7.js";
@@ -4,9 +4,9 @@ import {
4
4
  identityPath,
5
5
  listIdentities,
6
6
  updateIdentity
7
- } from "../chunk-HEPR6QTL.js";
7
+ } from "../chunk-RWSLVYTE.js";
8
8
  import "../chunk-2I23RPSI.js";
9
- import "../chunk-ATOU6CYR.js";
9
+ import "../chunk-BV6GBSRP.js";
10
10
  import "../chunk-PNQDP3OA.js";
11
11
  import "../chunk-H73TUI4Y.js";
12
12
  import "../chunk-7HLWBYH7.js";
@@ -17,8 +17,8 @@ import {
17
17
  startLicenseRevalidation,
18
18
  stopLicenseRevalidation,
19
19
  validateLicense
20
- } from "../chunk-XACL67CS.js";
21
- import "../chunk-5Z5NATNS.js";
20
+ } from "../chunk-7SEC2AG5.js";
21
+ import "../chunk-PPZOWQHP.js";
22
22
  import "../chunk-7Y5UDEVM.js";
23
23
  import "../chunk-SHIICYJW.js";
24
24
  import "../chunk-MLKGABMK.js";
@@ -15,42 +15,42 @@ import {
15
15
  sendMessage,
16
16
  sendTypedMessage,
17
17
  setWsClientSend
18
- } from "../chunk-X7H3HMFH.js";
19
- import "../chunk-PLRIJALF.js";
20
- import "../chunk-OFX5B2S7.js";
21
- import "../chunk-B76TSEP3.js";
22
- import "../chunk-RLRT2BVM.js";
18
+ } from "../chunk-2P4WJNN5.js";
19
+ import "../chunk-KKOLHBNC.js";
20
+ import "../chunk-ATKW3SYL.js";
21
+ import "../chunk-BJOBR6P2.js";
22
+ import "../chunk-6D2PI4QD.js";
23
+ import "../chunk-E23LNUWJ.js";
23
24
  import "../chunk-4JERP7NT.js";
24
25
  import "../chunk-EIKATSE4.js";
25
- import "../chunk-E23LNUWJ.js";
26
- import "../chunk-UIV2WPBT.js";
27
- import "../chunk-SSTLTIF3.js";
26
+ import "../chunk-HNLXMD2V.js";
28
27
  import "../chunk-RMOBQ6A5.js";
29
28
  import "../chunk-54QCG45Y.js";
30
- import "../chunk-FUIIVSW6.js";
31
- import "../chunk-65SVQELL.js";
29
+ import "../chunk-SSTLTIF3.js";
30
+ import "../chunk-WH7XN5ER.js";
31
+ import "../chunk-GFDGDFBF.js";
32
32
  import "../chunk-NGP6LSV2.js";
33
- import "../chunk-MW2GJJ53.js";
33
+ import "../chunk-2UGGBIDL.js";
34
34
  import "../chunk-CVYC6DUW.js";
35
- import "../chunk-2233TQCA.js";
35
+ import "../chunk-LLU6WZLK.js";
36
36
  import "../chunk-HCJCW7X4.js";
37
37
  import "../chunk-OPU3NYOO.js";
38
- import "../chunk-7TS64TBG.js";
38
+ import "../chunk-UU4UINUX.js";
39
39
  import "../chunk-AFNRE2RV.js";
40
40
  import "../chunk-3NGZ4PL7.js";
41
41
  import "../chunk-NLEW62VC.js";
42
42
  import "../chunk-HYZV25LY.js";
43
43
  import "../chunk-GJV3WDWM.js";
44
44
  import "../chunk-MP2AFCGL.js";
45
- import "../chunk-HEPR6QTL.js";
45
+ import "../chunk-RWSLVYTE.js";
46
46
  import "../chunk-2I23RPSI.js";
47
- import "../chunk-ATOU6CYR.js";
47
+ import "../chunk-BV6GBSRP.js";
48
48
  import "../chunk-PNQDP3OA.js";
49
49
  import "../chunk-H73TUI4Y.js";
50
50
  import "../chunk-7HLWBYH7.js";
51
51
  import "../chunk-FXU7JOXK.js";
52
- import "../chunk-XACL67CS.js";
53
- import "../chunk-5Z5NATNS.js";
52
+ import "../chunk-7SEC2AG5.js";
53
+ import "../chunk-PPZOWQHP.js";
54
54
  import "../chunk-7Y5UDEVM.js";
55
55
  import "../chunk-SHIICYJW.js";
56
56
  import "../chunk-MLKGABMK.js";