@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
@@ -0,0 +1,368 @@
1
+ import {
2
+ sanitizedUpstreamBody
3
+ } from "./chunk-RP5GETX5.js";
4
+ import {
5
+ loadLicense,
6
+ readCachedLicenseToken
7
+ } from "./chunk-7SEC2AG5.js";
8
+
9
+ // src/mcp/tools/support-inbox.ts
10
+ import { z } from "zod";
11
+ import { readFileSync } from "fs";
12
+ import { join } from "path";
13
+ import { homedir } from "os";
14
+ var DEFAULT_ENDPOINT = "https://api.askexe.com/admin/support/bug-reports";
15
+ var DEFAULT_OWNER_ENDPOINT = "https://api.askexe.com/v1/support/bug-reports";
16
+ var STATUS = z.enum(["open", "triaged", "fixed", "closed", "wontfix"]);
17
+ function adminToken() {
18
+ if (process.env.ASKEXE_SUPPORT_ADMIN_TOKEN) return process.env.ASKEXE_SUPPORT_ADMIN_TOKEN;
19
+ if (process.env.EXE_SUPPORT_ADMIN_TOKEN) return process.env.EXE_SUPPORT_ADMIN_TOKEN;
20
+ try {
21
+ const configPath = join(process.env.EXE_OS_DIR ?? join(homedir(), ".exe-os"), "config.json");
22
+ const config = JSON.parse(readFileSync(configPath, "utf-8"));
23
+ return config.support?.adminToken || config.support?.admin_token;
24
+ } catch {
25
+ return void 0;
26
+ }
27
+ }
28
+ function endpoint() {
29
+ return (process.env.ASKEXE_SUPPORT_ADMIN_ENDPOINT || DEFAULT_ENDPOINT).replace(/\/+$/, "");
30
+ }
31
+ function ownerEndpoint() {
32
+ const routerUrl = process.env.API_ROUTER_URL?.replace(/\/+$/, "");
33
+ let configured;
34
+ try {
35
+ const configPath = join(process.env.EXE_OS_DIR ?? join(homedir(), ".exe-os"), "config.json");
36
+ const config = JSON.parse(readFileSync(configPath, "utf-8"));
37
+ configured = config.support?.bugReportEndpoint;
38
+ } catch {
39
+ }
40
+ const base = configured || process.env.EXE_BUG_REPORT_ENDPOINT || (routerUrl ? `${routerUrl}/v1/support/bug-reports` : DEFAULT_OWNER_ENDPOINT);
41
+ return base.replace(/\/+$/, "");
42
+ }
43
+ function ownerAuthHeaders() {
44
+ let cloudApiKey;
45
+ try {
46
+ const configPath = join(process.env.EXE_OS_DIR ?? join(homedir(), ".exe-os"), "config.json");
47
+ const config = JSON.parse(readFileSync(configPath, "utf-8"));
48
+ cloudApiKey = config.cloud?.apiKey;
49
+ } catch {
50
+ }
51
+ const licenseKey = loadLicense() || process.env.EXE_LICENSE_KEY || cloudApiKey;
52
+ const licenseToken = readCachedLicenseToken();
53
+ const headers = {};
54
+ if (licenseKey) {
55
+ headers["x-exe-license-key"] = licenseKey;
56
+ headers.authorization = `Bearer ${licenseKey}`;
57
+ }
58
+ if (licenseToken) headers["x-exe-license-token"] = licenseToken;
59
+ return headers;
60
+ }
61
+ function assertInternal() {
62
+ const token = adminToken();
63
+ if (!token) throw new Error("AskExe support admin token not configured");
64
+ return token;
65
+ }
66
+ async function requestJson(url, init) {
67
+ const token = assertInternal();
68
+ const res = await fetch(url, {
69
+ ...init,
70
+ headers: {
71
+ "content-type": "application/json",
72
+ authorization: `Bearer ${token}`,
73
+ ...init?.headers ?? {}
74
+ },
75
+ signal: AbortSignal.timeout(1e4)
76
+ });
77
+ const text = await res.text();
78
+ let data = text;
79
+ try {
80
+ data = text ? JSON.parse(text) : {};
81
+ } catch {
82
+ }
83
+ if (!res.ok) throw new Error(`HTTP ${res.status}: ${typeof data === "string" ? data : JSON.stringify(data)}`);
84
+ return data;
85
+ }
86
+ async function fetchJson(url, headers, init) {
87
+ const res = await fetch(url, {
88
+ ...init,
89
+ headers: { "content-type": "application/json", ...headers, ...init?.headers ?? {} },
90
+ signal: AbortSignal.timeout(1e4)
91
+ });
92
+ const text = await res.text();
93
+ let data = text;
94
+ try {
95
+ data = text ? JSON.parse(text) : {};
96
+ } catch {
97
+ }
98
+ if (!res.ok) throw new Error(`HTTP ${res.status}: ${typeof data === "string" ? data : JSON.stringify(data)}`);
99
+ return data;
100
+ }
101
+ async function commentRequestJson(bugId, init) {
102
+ const token = adminToken();
103
+ if (token) {
104
+ const url2 = `${endpoint()}/${encodeURIComponent(bugId)}/comments`;
105
+ return fetchJson(url2, { authorization: `Bearer ${token}` }, init);
106
+ }
107
+ const ownerHeaders = ownerAuthHeaders();
108
+ if (!ownerHeaders.authorization && !ownerHeaders["x-exe-license-token"]) {
109
+ throw new Error(
110
+ "Not authenticated for support comments. Run `exe-os login` (GoTrue) or set a license key, or configure an AskExe admin token (ASKEXE_SUPPORT_ADMIN_TOKEN)."
111
+ );
112
+ }
113
+ const url = `${ownerEndpoint()}/${encodeURIComponent(bugId)}/comments`;
114
+ return fetchJson(url, ownerHeaders, init);
115
+ }
116
+ function registerListBugReports(server) {
117
+ server.registerTool(
118
+ "list_bug_reports",
119
+ {
120
+ title: "List Bug Reports",
121
+ description: "AskExe-internal only: list incoming customer bug reports from the support inbox.",
122
+ inputSchema: {
123
+ status: z.enum(["all", "open", "triaged", "fixed", "closed", "wontfix"]).default("open"),
124
+ severity: z.enum(["p0", "p1", "p2", "p3"]).optional(),
125
+ limit: z.number().int().min(1).max(100).default(25)
126
+ }
127
+ },
128
+ async ({ status, severity, limit }) => {
129
+ const url = new URL(endpoint());
130
+ url.searchParams.set("status", status);
131
+ url.searchParams.set("limit", String(limit));
132
+ if (severity) url.searchParams.set("severity", severity);
133
+ const data = await requestJson(url.toString());
134
+ return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
135
+ }
136
+ );
137
+ }
138
+ function parseComments(row) {
139
+ if (!row || typeof row !== "object") return [];
140
+ const raw = row.progress_log;
141
+ if (typeof raw !== "string" || !raw.trim()) return [];
142
+ try {
143
+ const parsed = JSON.parse(raw);
144
+ return Array.isArray(parsed) ? parsed : [];
145
+ } catch {
146
+ return [];
147
+ }
148
+ }
149
+ function registerGetBugReport(server) {
150
+ server.registerTool(
151
+ "get_bug_report",
152
+ {
153
+ title: "Get Bug Report",
154
+ description: "AskExe-internal only: fetch one customer bug report with full markdown payload and comments thread.",
155
+ inputSchema: { id: z.string().min(8) }
156
+ },
157
+ async ({ id }) => {
158
+ const data = await requestJson(`${endpoint()}/${encodeURIComponent(id)}`);
159
+ const comments = parseComments(data);
160
+ const enriched = data && typeof data === "object" ? { ...data, comments } : { id, comments };
161
+ return { content: [{ type: "text", text: JSON.stringify(enriched, null, 2) }] };
162
+ }
163
+ );
164
+ }
165
+ function registerAddBugReportComment(server) {
166
+ server.registerTool(
167
+ "add_bug_report_comment",
168
+ {
169
+ title: "Add Bug Report Comment",
170
+ description: "AskExe-internal only: append a comment to a bug report's thread (POST /comments). Non-destructive \u2014 does not touch triage_notes or status.",
171
+ inputSchema: {
172
+ id: z.string().min(8),
173
+ comment: z.string().min(1).describe("Comment text to append to the bug report thread")
174
+ }
175
+ },
176
+ async ({ id, comment }) => {
177
+ const data = await commentRequestJson(id, {
178
+ method: "POST",
179
+ body: sanitizedUpstreamBody({ comment }, "support-inbox:add_comment")
180
+ });
181
+ return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
182
+ }
183
+ );
184
+ }
185
+ function registerGetBugReportComments(server) {
186
+ server.registerTool(
187
+ "get_bug_report_comments",
188
+ {
189
+ title: "Get Bug Report Comments",
190
+ description: "AskExe-internal only: list the comments thread on a bug report (GET /comments).",
191
+ inputSchema: { id: z.string().min(8) }
192
+ },
193
+ async ({ id }) => {
194
+ const data = await commentRequestJson(id);
195
+ return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
196
+ }
197
+ );
198
+ }
199
+ function registerTriageBugReport(server) {
200
+ server.registerTool(
201
+ "triage_bug_report",
202
+ {
203
+ title: "Triage Bug Report",
204
+ description: "AskExe-internal only: update bug report status and link task/commit/release metadata.",
205
+ inputSchema: {
206
+ id: z.string().min(8),
207
+ status: STATUS.optional(),
208
+ triage_notes: z.string().optional(),
209
+ add_note: z.string().optional().describe("Append a timestamped progress note without changing status or replacing triage_notes"),
210
+ linked_task_id: z.string().optional(),
211
+ linked_commit: z.string().optional(),
212
+ fixed_version: z.string().optional(),
213
+ product: z.string().optional().describe("Re-label this bug's product: exe-os, exe-create, exe-wiki, exe-gateway, exe-crm, exe-build, exe-chat, exe-auth, exe-monitor, exe-db, exe-erp")
214
+ }
215
+ },
216
+ async ({ id, status, triage_notes, add_note, linked_task_id, linked_commit, fixed_version, product }) => {
217
+ const effectiveStatus = fixed_version && !status ? "closed" : status;
218
+ const data = await requestJson(`${endpoint()}/${encodeURIComponent(id)}`, {
219
+ method: "PATCH",
220
+ body: sanitizedUpstreamBody({ status: effectiveStatus, triage_notes, add_note, linked_task_id, linked_commit, fixed_version, product }, "support-inbox:triage_bug")
221
+ });
222
+ return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
223
+ }
224
+ );
225
+ }
226
+ var FEATURE_STATUS = z.enum(["open", "planned", "in_progress", "shipped", "closed", "wontdo"]);
227
+ function featureEndpoint() {
228
+ return endpoint().replace(/\/bug-reports\/?$/, "/feature-requests");
229
+ }
230
+ function registerListFeatureRequests(server) {
231
+ server.registerTool(
232
+ "list_feature_requests",
233
+ {
234
+ title: "List Feature Requests",
235
+ description: "AskExe-internal only: list incoming customer feature requests from the support inbox.",
236
+ inputSchema: {
237
+ status: z.enum(["all", "open", "planned", "in_progress", "shipped", "closed", "wontdo"]).default("open"),
238
+ priority: z.enum(["p0", "p1", "p2", "p3"]).optional(),
239
+ limit: z.number().int().min(1).max(100).default(25)
240
+ }
241
+ },
242
+ async ({ status, priority, limit }) => {
243
+ const url = new URL(featureEndpoint());
244
+ url.searchParams.set("status", status);
245
+ url.searchParams.set("limit", String(limit));
246
+ if (priority) url.searchParams.set("priority", priority);
247
+ const data = await requestJson(url.toString());
248
+ return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
249
+ }
250
+ );
251
+ }
252
+ function registerGetFeatureRequest(server) {
253
+ server.registerTool(
254
+ "get_feature_request",
255
+ {
256
+ title: "Get Feature Request",
257
+ description: "AskExe-internal only: fetch one customer feature request with full payload.",
258
+ inputSchema: { id: z.string().min(8) }
259
+ },
260
+ async ({ id }) => {
261
+ const data = await requestJson(`${featureEndpoint()}/${encodeURIComponent(id)}`);
262
+ return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
263
+ }
264
+ );
265
+ }
266
+ function registerTriageFeatureRequest(server) {
267
+ server.registerTool(
268
+ "triage_feature_request",
269
+ {
270
+ title: "Triage Feature Request",
271
+ description: "AskExe-internal only: update feature request status, response notes, and version metadata.",
272
+ inputSchema: {
273
+ id: z.string().min(8),
274
+ status: FEATURE_STATUS.optional(),
275
+ response_notes: z.string().optional(),
276
+ add_note: z.string().optional().describe("Append a timestamped progress note without changing status or replacing response_notes"),
277
+ target_version: z.string().optional(),
278
+ shipped_version: z.string().optional()
279
+ }
280
+ },
281
+ async ({ id, status, response_notes, add_note, target_version, shipped_version }) => {
282
+ const effectiveStatus = shipped_version && !status ? "shipped" : status;
283
+ const data = await requestJson(`${featureEndpoint()}/${encodeURIComponent(id)}`, {
284
+ method: "PATCH",
285
+ body: sanitizedUpstreamBody({ status: effectiveStatus, response_notes, add_note, target_version, shipped_version }, "support-inbox:triage_feature")
286
+ });
287
+ return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
288
+ }
289
+ );
290
+ }
291
+ var REVIEW_STATUS = z.enum(["open", "in_review", "approved", "merged", "closed", "rejected"]);
292
+ function reviewEndpoint() {
293
+ return endpoint().replace(/\/bug-reports\/?$/, "/reviews");
294
+ }
295
+ function registerListReviews(server) {
296
+ server.registerTool(
297
+ "list_reviews",
298
+ {
299
+ title: "List Reviews",
300
+ description: "AskExe-internal only: list incoming review requests from the support inbox.",
301
+ inputSchema: {
302
+ status: z.enum(["all", "open", "in_review", "approved", "merged", "closed", "rejected"]).default("open"),
303
+ priority: z.enum(["p0", "p1", "p2", "p3"]).optional(),
304
+ limit: z.number().int().min(1).max(100).default(25)
305
+ }
306
+ },
307
+ async ({ status, priority, limit }) => {
308
+ const url = new URL(reviewEndpoint());
309
+ url.searchParams.set("status", status);
310
+ url.searchParams.set("limit", String(limit));
311
+ if (priority) url.searchParams.set("priority", priority);
312
+ const data = await requestJson(url.toString());
313
+ return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
314
+ }
315
+ );
316
+ }
317
+ function registerGetReview(server) {
318
+ server.registerTool(
319
+ "get_review",
320
+ {
321
+ title: "Get Review",
322
+ description: "AskExe-internal only: fetch one review with full payload.",
323
+ inputSchema: { id: z.string().min(8) }
324
+ },
325
+ async ({ id }) => {
326
+ const data = await requestJson(`${reviewEndpoint()}/${encodeURIComponent(id)}`);
327
+ return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
328
+ }
329
+ );
330
+ }
331
+ function registerTriageReview(server) {
332
+ server.registerTool(
333
+ "triage_review",
334
+ {
335
+ title: "Triage Review",
336
+ description: "AskExe-internal only: update review status, response notes, and resolution.",
337
+ inputSchema: {
338
+ id: z.string().min(8),
339
+ status: REVIEW_STATUS.optional(),
340
+ response_notes: z.string().optional(),
341
+ add_note: z.string().optional().describe("Append a timestamped progress note without changing status or replacing response_notes"),
342
+ resolution: z.string().optional(),
343
+ pr_url: z.string().optional()
344
+ }
345
+ },
346
+ async ({ id, status, response_notes, add_note, resolution, pr_url }) => {
347
+ const data = await requestJson(`${reviewEndpoint()}/${encodeURIComponent(id)}`, {
348
+ method: "PATCH",
349
+ body: sanitizedUpstreamBody({ status, response_notes, add_note, resolution, pr_url }, "support-inbox:triage_review")
350
+ });
351
+ return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
352
+ }
353
+ );
354
+ }
355
+
356
+ export {
357
+ registerListBugReports,
358
+ registerGetBugReport,
359
+ registerAddBugReportComment,
360
+ registerGetBugReportComments,
361
+ registerTriageBugReport,
362
+ registerListFeatureRequests,
363
+ registerGetFeatureRequest,
364
+ registerTriageFeatureRequest,
365
+ registerListReviews,
366
+ registerGetReview,
367
+ registerTriageReview
368
+ };
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  redactSecrets
3
- } from "./chunk-Y25OJWOQ.js";
3
+ } from "./chunk-RP5GETX5.js";
4
4
 
5
5
  // src/lib/memory-write-governor.ts
6
6
  import { createHash } from "crypto";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getDeviceInfo
3
- } from "./chunk-5Z5NATNS.js";
3
+ } from "./chunk-PPZOWQHP.js";
4
4
  import {
5
5
  EXE_AI_DIR
6
6
  } from "./chunk-7Y5UDEVM.js";
@@ -52,7 +52,7 @@ async function fastDbInit(opts) {
52
52
  }
53
53
  }
54
54
  if (effectiveDaemonOnly) {
55
- const { isDaemonReady } = await import("./daemon-ready-signal-E7VMIQ6I.js");
55
+ const { isDaemonReady } = await import("./daemon-ready-signal-WKEJQNRA.js");
56
56
  if (!isDaemonReady()) return makeNoopClient();
57
57
  }
58
58
  const forceDirect = process.env.EXE_DB_DIRECT === "1" || process.env.EXE_DB_READONLY === "1" || process.env.EXE_SKIP_DAEMON === "1";
@@ -2,7 +2,7 @@ import {
2
2
  connectEmbedDaemon,
3
3
  disconnectClient,
4
4
  embedViaClient
5
- } from "./chunk-7TS64TBG.js";
5
+ } from "./chunk-UU4UINUX.js";
6
6
  import {
7
7
  EMBEDDING_DIM
8
8
  } from "./chunk-FXU7JOXK.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  loadEmployees
3
- } from "./chunk-HEPR6QTL.js";
3
+ } from "./chunk-RWSLVYTE.js";
4
4
 
5
5
  // src/lib/agent-symlinks.ts
6
6
  import os from "os";
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  MultiAgentOrchestrator
3
- } from "./chunk-52KNOQMK.js";
3
+ } from "./chunk-HJX6NCJF.js";
4
4
  import {
5
5
  createTokenBudgetMiddleware
6
- } from "./chunk-RRWDYOQS.js";
6
+ } from "./chunk-32YHCHWW.js";
7
7
  import {
8
8
  createQuietRenderer,
9
9
  createTerminalRenderer,
@@ -18,6 +18,10 @@ import {
18
18
  checkReadPathSafety,
19
19
  containsPathTraversal
20
20
  } from "./chunk-NGVOA6ZQ.js";
21
+ import {
22
+ composeHooks,
23
+ createDefaultHooks
24
+ } from "./chunk-O377P7GM.js";
21
25
  import {
22
26
  ContextManager,
23
27
  agentLoop,
@@ -49,10 +53,6 @@ import {
49
53
  matchInputPattern,
50
54
  matchToolPattern
51
55
  } from "./chunk-HF25XPZE.js";
52
- import {
53
- composeHooks,
54
- createDefaultHooks
55
- } from "./chunk-O377P7GM.js";
56
56
  import {
57
57
  StateBus,
58
58
  orgBus
@@ -209,7 +209,7 @@ function createExeOSHooks(config) {
209
209
  );
210
210
  }
211
211
  try {
212
- const { listBehaviors } = await import("./behaviors-HLZUJSMP.js");
212
+ const { listBehaviors } = await import("./behaviors-EO7KCP3H.js");
213
213
  const behaviors = await listBehaviors(config.agentId, config.projectName, 12);
214
214
  if (behaviors.length > 0) {
215
215
  process.stderr.write(
@@ -247,7 +247,7 @@ function createExeOSHooks(config) {
247
247
  const ALLOWED_RE = /^(Bash|Edit|Write|Read|Glob|Grep|Agent|mcp__.*)$/;
248
248
  if (!ALLOWED_RE.test(toolName)) return;
249
249
  try {
250
- const { extractSemanticText } = await import("./content-extractor-RHITF2KM.js");
250
+ const { extractSemanticText } = await import("./content-extractor-JRJDNIHP.js");
251
251
  const { writeMemory } = await import("./lib/store.js");
252
252
  const toolInput = block.input ?? {};
253
253
  const toolResponse = result.isError ? { error: result.content } : { output: result.content };
@@ -330,7 +330,7 @@ function createExeOSHooks(config) {
330
330
  async onSubagentStop(_reason) {
331
331
  try {
332
332
  const { getClient } = await import("./lib/database.js");
333
- const { sessionScopeFilter } = await import("./task-scope-CQEG5SSJ.js");
333
+ const { sessionScopeFilter } = await import("./task-scope-EKYDCVUF.js");
334
334
  const client = getClient();
335
335
  const ehScope = sessionScopeFilter();
336
336
  const tasks = await client.execute({
@@ -422,7 +422,7 @@ function createExeOSHooks(config) {
422
422
  try {
423
423
  const { writeMemory, flushBatch } = await import("./lib/store.js");
424
424
  const { getClient } = await import("./lib/database.js");
425
- const { sessionScopeFilter: cpScopeFilter } = await import("./task-scope-CQEG5SSJ.js");
425
+ const { sessionScopeFilter: cpScopeFilter } = await import("./task-scope-EKYDCVUF.js");
426
426
  const client = getClient();
427
427
  const cpScope = cpScopeFilter();
428
428
  const tasks = await client.execute({
@@ -6,7 +6,7 @@ import {
6
6
  connectEmbedDaemon,
7
7
  isClientConnected,
8
8
  sendDaemonRequest
9
- } from "./chunk-7TS64TBG.js";
9
+ } from "./chunk-UU4UINUX.js";
10
10
 
11
11
  // src/lib/db-daemon-client.ts
12
12
  function normalizeStatement(stmt) {
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  recordOrchestrationEventBestEffort
3
- } from "./chunk-FUIIVSW6.js";
3
+ } from "./chunk-WH7XN5ER.js";
4
4
 
5
5
  // src/lib/worktree.ts
6
6
  import { execSync } from "child_process";
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  recordSessionKill
3
- } from "./chunk-T4KZ2Z2N.js";
3
+ } from "./chunk-IELUDZAA.js";
4
4
  import {
5
5
  updateTask
6
- } from "./chunk-542EWGY3.js";
6
+ } from "./chunk-XSMRR4IW.js";
7
7
  import {
8
8
  countPendingReviews,
9
9
  ensureEmployeeAsync,
@@ -16,32 +16,32 @@ import {
16
16
  sessionScopeFilter,
17
17
  strictSessionScopeFilter,
18
18
  writeNotification
19
- } from "./chunk-PLRIJALF.js";
19
+ } from "./chunk-KKOLHBNC.js";
20
20
  import {
21
21
  isLeaseExpired
22
22
  } from "./chunk-E23LNUWJ.js";
23
23
  import {
24
24
  listSessions
25
- } from "./chunk-UIV2WPBT.js";
25
+ } from "./chunk-HNLXMD2V.js";
26
+ import {
27
+ getTransport
28
+ } from "./chunk-RMOBQ6A5.js";
26
29
  import {
27
30
  listTmuxSessions,
28
31
  parseContextPercentage
29
32
  } from "./chunk-SSTLTIF3.js";
30
- import {
31
- getTransport
32
- } from "./chunk-RMOBQ6A5.js";
33
33
  import {
34
34
  recordOrchestrationEventBestEffort
35
- } from "./chunk-FUIIVSW6.js";
35
+ } from "./chunk-WH7XN5ER.js";
36
36
  import {
37
37
  getAgentRuntime
38
- } from "./chunk-65SVQELL.js";
38
+ } from "./chunk-GFDGDFBF.js";
39
39
  import {
40
40
  baseAgentName,
41
41
  getCoordinatorName,
42
42
  isCoordinatorName,
43
43
  shouldAutoInstance
44
- } from "./chunk-HEPR6QTL.js";
44
+ } from "./chunk-RWSLVYTE.js";
45
45
  import {
46
46
  loadConfigSync
47
47
  } from "./chunk-7Y5UDEVM.js";
@@ -2456,7 +2456,7 @@ async function reapOrphanedWorktrees(deps, nowMs = Date.now()) {
2456
2456
  }
2457
2457
  async function createWorktreeReaperRealDeps() {
2458
2458
  const { getPaneCwdAsync } = await import("./lib/tmux-status.js");
2459
- const { getGitRoot, isWorktreeDirty: isDirty } = await import("./worktree-GVF2I5FP.js");
2459
+ const { getGitRoot, isWorktreeDirty: isDirty } = await import("./worktree-YXBDRYOC.js");
2460
2460
  const { statSync: statSync3 } = await import("fs");
2461
2461
  const { basename: basename2 } = await import("path");
2462
2462
  const { promisify: promisify2 } = await import("util");
@@ -2671,7 +2671,7 @@ async function gcStaleCheckpoints() {
2671
2671
  }
2672
2672
  async function pollTaskGroupBarriers() {
2673
2673
  try {
2674
- const { checkAndFireBarriers } = await import("./tasks-crud-UGK5A25L.js");
2674
+ const { checkAndFireBarriers } = await import("./tasks-crud-6LBNU43G.js");
2675
2675
  const firedGroupIds = await checkAndFireBarriers();
2676
2676
  if (firedGroupIds.length === 0) return 0;
2677
2677
  const { getClient } = await import("./lib/database.js");
@@ -263,7 +263,7 @@ async function runRegistryProxy(options = registryProxyOptionsFromEnv()) {
263
263
  await new Promise((resolve) => server.listen(options.port, options.host, resolve));
264
264
  console.log(`exe-registry-proxy listening on ${options.host ?? "0.0.0.0"}:${options.port}`);
265
265
  console.log(`proxying /v2/${options.allowedNamespace ?? "askexe"}/* -> ${options.upstream ?? "https://ghcr.io"}`);
266
- const { licenseSyncConfigFromEnv, startLicenseSyncScheduler } = await import("./license-sync-N3RNYVP2.js");
266
+ const { licenseSyncConfigFromEnv, startLicenseSyncScheduler } = await import("./license-sync-UWE6GEB4.js");
267
267
  const syncConfig = licenseSyncConfigFromEnv();
268
268
  if (syncConfig) {
269
269
  startLicenseSyncScheduler(syncConfig);
@@ -138,6 +138,13 @@ async function createBackupAsync(reason = "manual", opts = {}) {
138
138
  } catch {
139
139
  }
140
140
  }
141
+ try {
142
+ const { manifestWriteEnabled, writeBackupManifest } = await import("./backup-verify-ZAJLEL4X.js");
143
+ if (manifestWriteEnabled()) {
144
+ await writeBackupManifest(backupPath, dbName);
145
+ }
146
+ } catch {
147
+ }
141
148
  try {
142
149
  enforceRetention(reason);
143
150
  } catch {
@@ -159,6 +166,13 @@ function rotateBackups(keepDays = DEFAULT_KEEP_DAYS) {
159
166
  if (stat.mtimeMs < cutoff) {
160
167
  unlinkSync(filePath);
161
168
  deleted++;
169
+ if (file.endsWith(".db")) {
170
+ try {
171
+ const mf = filePath + ".manifest.json";
172
+ if (existsSync(mf)) unlinkSync(mf);
173
+ } catch {
174
+ }
175
+ }
162
176
  }
163
177
  } catch {
164
178
  }
@@ -249,7 +263,7 @@ function rotateBackupsByReason(reason, keep) {
249
263
  }
250
264
  }
251
265
  for (const target of selectBackupsToDelete(matches, keep)) {
252
- for (const p of [target, target + "-wal", target + "-shm"]) {
266
+ for (const p of [target, target + "-wal", target + "-shm", target + ".manifest.json"]) {
253
267
  try {
254
268
  if (existsSync(p)) {
255
269
  unlinkSync(p);
@@ -327,7 +341,7 @@ function pruneCorruptQuarantine(keep = QUARANTINE_KEEP) {
327
341
  }
328
342
  }
329
343
  for (const target of selectBackupsToDelete(matches, keep)) {
330
- for (const p of [target, target + "-wal", target + "-shm"]) {
344
+ for (const p of [target, target + "-wal", target + "-shm", target + ".manifest.json"]) {
331
345
  try {
332
346
  if (existsSync(p)) {
333
347
  unlinkSync(p);
@@ -9,7 +9,7 @@ import {
9
9
  getCoordinatorEmployee,
10
10
  getEmployee,
11
11
  loadEmployeesSync
12
- } from "./chunk-HEPR6QTL.js";
12
+ } from "./chunk-RWSLVYTE.js";
13
13
  import {
14
14
  EXE_AI_DIR
15
15
  } from "./chunk-7Y5UDEVM.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  listBehaviors
3
- } from "./chunk-TLYAEISW.js";
3
+ } from "./chunk-OUEFW4RK.js";
4
4
  import {
5
5
  loadConfigSync
6
6
  } from "./chunk-7Y5UDEVM.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  createReminder
3
- } from "./chunk-KMBEL7VB.js";
3
+ } from "./chunk-PVIH3ZGV.js";
4
4
 
5
5
  // src/mcp/tools/create-reminder.ts
6
6
  import { z } from "zod";