@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
@@ -4,7 +4,7 @@ import {
4
4
  import {
5
5
  isClientConnected,
6
6
  sendDaemonRequest
7
- } from "./chunk-7TS64TBG.js";
7
+ } from "./chunk-UU4UINUX.js";
8
8
 
9
9
  // src/lib/memory-queue-client.ts
10
10
  async function writeMemoryViaDaemon(entry) {
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  embed
3
- } from "./chunk-3QDSCJ3F.js";
3
+ } from "./chunk-AP455LBW.js";
4
4
  import {
5
5
  reserveVersions,
6
6
  vectorToBlob
7
- } from "./chunk-H37HHX3E.js";
7
+ } from "./chunk-EDH54E5A.js";
8
8
  import {
9
9
  getClient
10
- } from "./chunk-HEPR6QTL.js";
10
+ } from "./chunk-RWSLVYTE.js";
11
11
 
12
12
  // src/lib/documents.ts
13
13
  import crypto from "crypto";
@@ -270,7 +270,7 @@ async function ingestDocument(input) {
270
270
  await client.batch([documentStmt, ...chunkStmts], "write");
271
271
  const embedded = vectors.filter((v) => v !== null).length;
272
272
  const originalTexts = input.chunks.map((c) => c.text);
273
- import("./doc-graph-extractor-3TRLGD7M.js").then(
273
+ import("./doc-graph-extractor-LR5KMPH7.js").then(
274
274
  ({ extractAndStoreDocumentGraph }) => extractAndStoreDocumentGraph(documentId, originalTexts)
275
275
  ).catch((err) => {
276
276
  process.stderr.write(
@@ -1,24 +1,24 @@
1
1
  import {
2
2
  recordSessionKill
3
- } from "./chunk-T4KZ2Z2N.js";
3
+ } from "./chunk-IELUDZAA.js";
4
4
  import {
5
5
  sessionScopeFilter,
6
6
  verifyPaneAtCapacity,
7
7
  writeNotification
8
- } from "./chunk-PLRIJALF.js";
8
+ } from "./chunk-KKOLHBNC.js";
9
9
  import {
10
10
  listSessions
11
- } from "./chunk-UIV2WPBT.js";
11
+ } from "./chunk-HNLXMD2V.js";
12
12
  import {
13
13
  getTransport
14
14
  } from "./chunk-RMOBQ6A5.js";
15
15
  import {
16
16
  recordOrchestrationEventBestEffort
17
- } from "./chunk-FUIIVSW6.js";
17
+ } from "./chunk-WH7XN5ER.js";
18
18
  import {
19
19
  getClient,
20
20
  isCoordinatorName
21
- } from "./chunk-HEPR6QTL.js";
21
+ } from "./chunk-RWSLVYTE.js";
22
22
 
23
23
  // src/lib/capacity-monitor.ts
24
24
  var CAPACITY_PATTERNS = [
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  mcpHttpPort
3
- } from "./chunk-AVKXCSBI.js";
3
+ } from "./chunk-4QSJVMMT.js";
4
4
  import {
5
5
  checkCpuStealSync
6
6
  } from "./chunk-SSC7EKY2.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  completeReminder
3
- } from "./chunk-KMBEL7VB.js";
3
+ } from "./chunk-PVIH3ZGV.js";
4
4
 
5
5
  // src/mcp/tools/complete-reminder.ts
6
6
  import { z } from "zod";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  checkLicense,
3
3
  loadLicense
4
- } from "./chunk-XACL67CS.js";
4
+ } from "./chunk-7SEC2AG5.js";
5
5
 
6
6
  // src/lib/license-gate.ts
7
7
  var _cachedLicense = null;
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  sessionScopeFilter
3
- } from "./chunk-PLRIJALF.js";
3
+ } from "./chunk-KKOLHBNC.js";
4
4
 
5
5
  // src/lib/git-task-sweep.ts
6
6
  import { execSync } from "child_process";
@@ -238,7 +238,7 @@ async function sweepTasks(projectName, options = {}) {
238
238
  }
239
239
  if (!dryRun) {
240
240
  try {
241
- const { updateTaskStatus } = await import("./tasks-crud-UGK5A25L.js");
241
+ const { updateTaskStatus } = await import("./tasks-crud-6LBNU43G.js");
242
242
  await updateTaskStatus({
243
243
  taskId: task.id,
244
244
  status: "needs_review",
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-WCGNCH3Q.js";
4
4
  import {
5
5
  registerAllTools
6
- } from "./chunk-DEPZOCYD.js";
6
+ } from "./chunk-LEJ25726.js";
7
7
 
8
8
  // src/mcp/mcp-surface-hash.ts
9
9
  function computeMcpSurfaceHash() {
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  vectorToSqlLiteral
3
- } from "./chunk-H37HHX3E.js";
3
+ } from "./chunk-EDH54E5A.js";
4
4
  import {
5
5
  blobToVector
6
6
  } from "./chunk-OTVEIJUQ.js";
7
7
  import {
8
8
  getClient
9
- } from "./chunk-HEPR6QTL.js";
9
+ } from "./chunk-RWSLVYTE.js";
10
10
 
11
11
  // src/lib/behaviors.ts
12
12
  import crypto from "crypto";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  getGitRoot,
3
3
  isWorktreeDirty
4
- } from "./chunk-B76TSEP3.js";
4
+ } from "./chunk-BJOBR6P2.js";
5
5
 
6
6
  // src/lib/worktree-sweep.ts
7
7
  import { execFile } from "child_process";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getClient
3
- } from "./chunk-HEPR6QTL.js";
3
+ } from "./chunk-RWSLVYTE.js";
4
4
  import {
5
5
  loadConfig
6
6
  } from "./chunk-7Y5UDEVM.js";
@@ -2,7 +2,10 @@ import {
2
2
  SUPPORT_REPORT_SENT_MARKER,
3
3
  markSupportReportSentSync
4
4
  } from "./chunk-MMRUBN3I.js";
5
- import "./chunk-MLKGABMK.js";
5
+ import {
6
+ isTelemetryRedactionEnabled,
7
+ sanitizeUpstreamPayload
8
+ } from "./chunk-RP5GETX5.js";
6
9
 
7
10
  // src/lib/support-outbox.ts
8
11
  import { mkdirSync, readdirSync, readFileSync, writeFileSync, existsSync } from "fs";
@@ -350,6 +353,13 @@ ${DUPLICATE_MARKER}: ${dedupeHash}
350
353
  skipped++;
351
354
  continue;
352
355
  }
356
+ let outboundBody;
357
+ if (isTelemetryRedactionEnabled()) {
358
+ outboundBody = JSON.stringify(sanitizeUpstreamPayload(payload).payload);
359
+ } else {
360
+ console.error("[support-outbox] WARNING: EXE_TELEMETRY_REDACT=off \u2014 sending UNREDACTED payload upstream");
361
+ outboundBody = JSON.stringify(payload);
362
+ }
353
363
  try {
354
364
  const resp = await fetch(endpoint, {
355
365
  method: "POST",
@@ -363,7 +373,7 @@ ${DUPLICATE_MARKER}: ${dedupeHash}
363
373
  ...!gotrueAuth && licenseToken ? { "x-exe-license-token": licenseToken } : {},
364
374
  ...adminToken ? { "x-askexe-admin-token": adminToken } : {}
365
375
  },
366
- body: JSON.stringify(payload),
376
+ body: outboundBody,
367
377
  signal: AbortSignal.timeout(5e3)
368
378
  });
369
379
  if (resp.ok || resp.status === 409) {
@@ -396,7 +406,9 @@ async function sendStatusUpdateRecord(record, filePath, licenseKey, licenseToken
396
406
  ...!adminToken && !gotrueAuth && licenseKey ? { "x-exe-license-key": licenseKey } : {},
397
407
  ...!adminToken && !gotrueAuth && licenseToken ? { "x-exe-license-token": licenseToken } : {}
398
408
  },
399
- body: JSON.stringify(record.payload),
409
+ // Egress redaction gate — queued status updates may contain free-text
410
+ // notes/comments; redact before the retry PATCH reaches the network.
411
+ body: isTelemetryRedactionEnabled() ? JSON.stringify(sanitizeUpstreamPayload(record.payload).payload) : JSON.stringify(record.payload),
400
412
  signal: AbortSignal.timeout(5e3)
401
413
  });
402
414
  if (resp.ok) {
@@ -590,10 +602,10 @@ function scanStatusDir(dir) {
590
602
  }
591
603
  return { total: files.length, unsent, oldest };
592
604
  }
605
+
593
606
  export {
594
- flushSupportOutbox as flushBugReportOutbox,
595
- flushSupportOutbox,
596
- getOutboxStatus,
597
607
  queueSupportStatusUpdateSync,
598
- reconcileUpstreamStatus
608
+ flushSupportOutbox,
609
+ reconcileUpstreamStatus,
610
+ getOutboxStatus
599
611
  };
@@ -0,0 +1,140 @@
1
+ // src/lib/secret-redaction.ts
2
+ import { validateMnemonic, wordlists } from "bip39";
3
+ var SECRET_PATTERNS = [
4
+ { name: "openai_key", pattern: /\bsk-[A-Za-z0-9_-]{20,}\b/g },
5
+ { name: "anthropic_key", pattern: /\bsk-ant-[A-Za-z0-9_-]{20,}\b/g },
6
+ { name: "exe_license_key", pattern: /\bexe_sk_[A-Za-z0-9_-]{8,}\b/g },
7
+ { name: "aws_access_key", pattern: /\bAKIA[0-9A-Z]{16}\b/g },
8
+ { name: "github_token", pattern: /\bgh[pousr]_[A-Za-z0-9_]{30,}\b/g },
9
+ { name: "bearer_token", pattern: /\bBearer\s+[A-Za-z0-9._~+/=-]{20,}\b/gi },
10
+ { name: "jwt", pattern: /\beyJ[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}\b/g },
11
+ { name: "private_key", pattern: /-----BEGIN (?:OPENSSH|RSA|DSA|EC|PGP)? ?PRIVATE KEY-----[\s\S]*?-----END (?:OPENSSH|RSA|DSA|EC|PGP)? ?PRIVATE KEY-----/g },
12
+ { name: "db_url_password", pattern: /\b(postgres(?:ql)?|mysql|mongodb|redis):\/\/([^:\s/@]+):([^@\s]+)@/gi },
13
+ { name: "assignment_secret", pattern: /\b(api[_-]?key|secret|token|password|passwd|pwd|private[_-]?key|access[_-]?key)\s*[:=]\s*(['\"]?)[^\s'"]{8,}\2/gi },
14
+ { name: "env_secret", pattern: /\b[A-Z0-9_]*(?:API_KEY|SECRET|TOKEN|PASSWORD|PASSWD|PRIVATE_KEY|ACCESS_KEY)[A-Z0-9_]*\s*=\s*['\"]?[^'"\s]{8,}/g }
15
+ ];
16
+ var MNEMONIC_LENGTHS = [24, 21, 18, 15, 12];
17
+ var BIP39_WORDS = new Set(wordlists.english);
18
+ var WORD_TOKEN_RE = /\b[A-Za-z]{3,8}\b/g;
19
+ function redactMnemonics(input) {
20
+ const tokens = [];
21
+ let m;
22
+ WORD_TOKEN_RE.lastIndex = 0;
23
+ while ((m = WORD_TOKEN_RE.exec(input)) !== null) {
24
+ const lower = m[0].toLowerCase();
25
+ tokens.push({ start: m.index, end: m.index + m[0].length, lower, isWordlist: BIP39_WORDS.has(lower) });
26
+ }
27
+ if (tokens.length < 12) return { text: input, count: 0 };
28
+ const spans = [];
29
+ let count = 0;
30
+ let segment = [];
31
+ const flushSegment = () => {
32
+ if (segment.length >= 12) {
33
+ let i = 0;
34
+ while (i < segment.length) {
35
+ let matchedLen = 0;
36
+ for (const len of MNEMONIC_LENGTHS) {
37
+ if (i + len > segment.length) continue;
38
+ const phrase = segment.slice(i, i + len).map((t) => t.lower).join(" ");
39
+ if (validateMnemonic(phrase)) {
40
+ matchedLen = len;
41
+ break;
42
+ }
43
+ }
44
+ if (matchedLen > 0) {
45
+ spans.push({ start: segment[i].start, end: segment[i + matchedLen - 1].end });
46
+ count++;
47
+ i += matchedLen;
48
+ } else {
49
+ i += 1;
50
+ }
51
+ }
52
+ }
53
+ segment = [];
54
+ };
55
+ for (const tok of tokens) {
56
+ if (!tok.isWordlist) {
57
+ flushSegment();
58
+ continue;
59
+ }
60
+ if (segment.length > 0) {
61
+ const gap = input.slice(segment[segment.length - 1].end, tok.start);
62
+ if (/[A-Za-z]/.test(gap)) flushSegment();
63
+ }
64
+ segment.push(tok);
65
+ }
66
+ flushSegment();
67
+ if (spans.length === 0) return { text: input, count: 0 };
68
+ let text = input;
69
+ for (let s = spans.length - 1; s >= 0; s--) {
70
+ text = text.slice(0, spans[s].start) + "[REDACTED:recovery_phrase]" + text.slice(spans[s].end);
71
+ }
72
+ return { text, count };
73
+ }
74
+ function redactSecrets(input) {
75
+ let text = input;
76
+ let redactedCount = 0;
77
+ for (const { name, pattern } of SECRET_PATTERNS) {
78
+ text = text.replace(pattern, (_match, ...args) => {
79
+ redactedCount++;
80
+ if (name === "db_url_password" && typeof args[0] === "string" && typeof args[1] === "string") {
81
+ return `${args[0]}://${args[1]}:[REDACTED:${name}]@`;
82
+ }
83
+ return `[REDACTED:${name}]`;
84
+ });
85
+ }
86
+ const mnemonic = redactMnemonics(text);
87
+ text = mnemonic.text;
88
+ redactedCount += mnemonic.count;
89
+ return { text, redactedCount };
90
+ }
91
+ var UPSTREAM_ATTACHMENT_MAX_CHARS = 4096;
92
+ function sanitizeUpstreamPayload(payload) {
93
+ let redactedCount = 0;
94
+ let truncatedCount = 0;
95
+ const walk = (value, keyHint) => {
96
+ if (typeof value === "string") {
97
+ const r = redactSecrets(value);
98
+ redactedCount += r.redactedCount;
99
+ let out = r.text;
100
+ if (keyHint === "content" && out.length > UPSTREAM_ATTACHMENT_MAX_CHARS) {
101
+ out = out.slice(0, UPSTREAM_ATTACHMENT_MAX_CHARS) + `
102
+ ... [truncated, ${out.length} chars total]`;
103
+ truncatedCount++;
104
+ }
105
+ return out;
106
+ }
107
+ if (Array.isArray(value)) {
108
+ return value.map((item) => walk(item, keyHint));
109
+ }
110
+ if (value && typeof value === "object") {
111
+ const out = {};
112
+ for (const [k, v] of Object.entries(value)) {
113
+ out[k] = walk(v, k);
114
+ }
115
+ return out;
116
+ }
117
+ return value;
118
+ };
119
+ const sanitized = walk(payload);
120
+ return { payload: sanitized, redactedCount, truncatedCount };
121
+ }
122
+ function isTelemetryRedactionEnabled(env = process.env) {
123
+ const raw = (env.EXE_TELEMETRY_REDACT ?? "").trim().toLowerCase();
124
+ return !(raw === "off" || raw === "0" || raw === "false");
125
+ }
126
+ function sanitizedUpstreamBody(payload, label = "support") {
127
+ if (!isTelemetryRedactionEnabled()) {
128
+ console.error(`[${label}] WARNING: EXE_TELEMETRY_REDACT=off \u2014 sending UNREDACTED payload upstream`);
129
+ return JSON.stringify(payload);
130
+ }
131
+ return JSON.stringify(sanitizeUpstreamPayload(payload).payload);
132
+ }
133
+
134
+ export {
135
+ redactSecrets,
136
+ UPSTREAM_ATTACHMENT_MAX_CHARS,
137
+ sanitizeUpstreamPayload,
138
+ isTelemetryRedactionEnabled,
139
+ sanitizedUpstreamBody
140
+ };
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-2I23RPSI.js";
4
4
  import {
5
5
  listBackups
6
- } from "./chunk-ATOU6CYR.js";
6
+ } from "./chunk-BV6GBSRP.js";
7
7
  import {
8
8
  getEmotionalBaseline,
9
9
  renderEmotionalBaselineSection
@@ -1119,7 +1119,7 @@ async function migrateReflectionDedup(client) {
1119
1119
  "ALTER TABLE memory_reflections ADD COLUMN dedup_key TEXT",
1120
1120
  "migration add memory_reflections.dedup_key"
1121
1121
  );
1122
- const { reflectionDedupKey } = await import("./memory-reflection-6N4J2FL7.js");
1122
+ const { reflectionDedupKey } = await import("./memory-reflection-KIGEFSI4.js");
1123
1123
  const keyForRow = (row) => {
1124
1124
  let sources = [];
1125
1125
  try {
@@ -1459,7 +1459,7 @@ async function _attemptBackupRestore(config) {
1459
1459
  } catch {
1460
1460
  }
1461
1461
  try {
1462
- const { pruneCorruptQuarantine } = await import("./db-backup-DLD4QZBO.js");
1462
+ const { pruneCorruptQuarantine } = await import("./db-backup-MX2G3CEK.js");
1463
1463
  pruneCorruptQuarantine();
1464
1464
  } catch {
1465
1465
  }
@@ -1744,7 +1744,7 @@ async function sweepExpiredSoftDeletedMemories(client, options = {}) {
1744
1744
  const purgeArchived = archDays !== void 0;
1745
1745
  const BATCH_SIZE = 2e3;
1746
1746
  const MAX_BATCHES = 500;
1747
- const { cleanupCardsForMemories, cleanupGraphLinksForMemories } = await import("./graph-rag-JZZAB7PC.js");
1747
+ const { cleanupCardsForMemories, cleanupGraphLinksForMemories } = await import("./graph-rag-WAK2BRJH.js");
1748
1748
  const softCutoff = `-${softDays} days`;
1749
1749
  const selectArgsBase = [softCutoff];
1750
1750
  let predicate = `status = 'deleted' AND COALESCE(deleted_at, timestamp) < datetime('now', ?)`;
@@ -1865,7 +1865,7 @@ function getRawClient() {
1865
1865
  function tryGetRawClient() {
1866
1866
  return _client;
1867
1867
  }
1868
- var CURRENT_SCHEMA_VERSION = 10;
1868
+ var CURRENT_SCHEMA_VERSION = 12;
1869
1869
  var _migrationBlockRuns = 0;
1870
1870
  function _getMigrationBlockRuns() {
1871
1871
  return _migrationBlockRuns;
@@ -2312,6 +2312,46 @@ async function ensureSchema() {
2312
2312
  CREATE INDEX IF NOT EXISTS idx_messages_target_scope_status
2313
2313
  ON messages(target_agent, session_scope, status, created_at);
2314
2314
  `);
2315
+ await client.executeMultiple(`
2316
+ CREATE TABLE IF NOT EXISTS notification_ledger (
2317
+ id TEXT PRIMARY KEY,
2318
+ session_scope TEXT,
2319
+ project TEXT,
2320
+ target_agent TEXT NOT NULL,
2321
+ target_role TEXT NOT NULL DEFAULT 'employee',
2322
+ target_session TEXT,
2323
+ kind TEXT NOT NULL,
2324
+ intercom_reason TEXT,
2325
+ task_id TEXT,
2326
+ task_file TEXT,
2327
+ payload_json TEXT,
2328
+ dedup_key TEXT,
2329
+ delivery_state TEXT NOT NULL DEFAULT 'pending',
2330
+ ack_state TEXT NOT NULL DEFAULT 'unacked',
2331
+ retry_count INTEGER NOT NULL DEFAULT 0,
2332
+ max_retries INTEGER NOT NULL DEFAULT 10,
2333
+ next_retry_at TEXT,
2334
+ boot_generation INTEGER,
2335
+ created_at TEXT NOT NULL,
2336
+ delivered_at TEXT,
2337
+ acked_at TEXT,
2338
+ expires_at TEXT,
2339
+ last_error TEXT
2340
+ );
2341
+
2342
+ CREATE INDEX IF NOT EXISTS idx_nledger_scope_state
2343
+ ON notification_ledger(session_scope, delivery_state, next_retry_at);
2344
+
2345
+ CREATE INDEX IF NOT EXISTS idx_nledger_target
2346
+ ON notification_ledger(target_agent, session_scope, delivery_state);
2347
+
2348
+ CREATE INDEX IF NOT EXISTS idx_nledger_task
2349
+ ON notification_ledger(task_id);
2350
+
2351
+ CREATE UNIQUE INDEX IF NOT EXISTS idx_nledger_dedup
2352
+ ON notification_ledger(session_scope, dedup_key)
2353
+ WHERE dedup_key IS NOT NULL AND delivery_state IN ('pending', 'delivered');
2354
+ `);
2315
2355
  try {
2316
2356
  await client.execute({
2317
2357
  sql: `UPDATE memories SET project_name = 'exe-create' WHERE project_name = 'web'`,
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  getIdentity,
3
3
  loadEmployeesSync
4
- } from "./chunk-HEPR6QTL.js";
4
+ } from "./chunk-RWSLVYTE.js";
5
5
 
6
6
  // src/lib/drift-probes.ts
7
7
  var DRIFT_THRESHOLD = 80;
@@ -1,16 +1,16 @@
1
1
  import {
2
2
  extractMemoryGraph
3
- } from "./chunk-XUKPALWT.js";
3
+ } from "./chunk-ITMEE7PQ.js";
4
4
  import {
5
5
  flushBatch,
6
6
  writeMemory
7
- } from "./chunk-H37HHX3E.js";
7
+ } from "./chunk-EDH54E5A.js";
8
8
  import {
9
9
  extractKeywords
10
10
  } from "./chunk-CHCA3ZM2.js";
11
11
  import {
12
12
  getActiveAgent
13
- } from "./chunk-DZ6OQM67.js";
13
+ } from "./chunk-C445WRUX.js";
14
14
 
15
15
  // src/mcp/tools/import-conversations.ts
16
16
  import { z } from "zod";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getClient
3
- } from "./chunk-HEPR6QTL.js";
3
+ } from "./chunk-RWSLVYTE.js";
4
4
 
5
5
  // src/lib/pipeline-router.ts
6
6
  import crypto from "crypto";
@@ -140,8 +140,8 @@ Agent response: ${agentResponse}` : ""
140
140
  }
141
141
  async function sinkEntityExtraction(msg, agentResponse, agentName) {
142
142
  try {
143
- const { extractFromConversation } = await import("./conversation-entity-extractor-D3EFTLT4.js");
144
- const { storeExtraction } = await import("./graph-rag-JZZAB7PC.js");
143
+ const { extractFromConversation } = await import("./conversation-entity-extractor-FPAMTL3C.js");
144
+ const { storeExtraction } = await import("./graph-rag-WAK2BRJH.js");
145
145
  if ((msg.text?.length ?? 0) < 20) return false;
146
146
  if (msg.isHistorical) return false;
147
147
  const extraction = await extractFromConversation(msg, agentResponse, agentName);
@@ -7,7 +7,7 @@ import {
7
7
  import {
8
8
  connectEmbedDaemon,
9
9
  embedBatchViaClient
10
- } from "./chunk-7TS64TBG.js";
10
+ } from "./chunk-UU4UINUX.js";
11
11
  import {
12
12
  EXE_AI_DIR
13
13
  } from "./chunk-7Y5UDEVM.js";
@@ -8,7 +8,7 @@ import {
8
8
  import {
9
9
  loadLicense,
10
10
  readCachedLicenseToken
11
- } from "./chunk-XACL67CS.js";
11
+ } from "./chunk-7SEC2AG5.js";
12
12
  import {
13
13
  EXE_AI_DIR,
14
14
  loadConfig
@@ -275,7 +275,7 @@ function nextForPostFailure(status) {
275
275
  return "Run `exe-os support health`; if it passes, send this output to AskExe.";
276
276
  }
277
277
  async function runFlush(json) {
278
- const { flushSupportOutbox } = await import("./support-outbox-MGUVVGHT.js");
278
+ const { flushSupportOutbox } = await import("./support-outbox-GB5SQFRJ.js");
279
279
  const result = await flushSupportOutbox({ maxPerFlush: 10 });
280
280
  if (json) {
281
281
  console.log(JSON.stringify(result, null, 2));
@@ -298,7 +298,7 @@ async function runFlush(json) {
298
298
  console.log("");
299
299
  }
300
300
  async function runStatus(json) {
301
- const { getOutboxStatus } = await import("./support-outbox-MGUVVGHT.js");
301
+ const { getOutboxStatus } = await import("./support-outbox-GB5SQFRJ.js");
302
302
  const status = await getOutboxStatus();
303
303
  if (json) {
304
304
  console.log(JSON.stringify(status, null, 2));
@@ -42,6 +42,7 @@ function isBootFast() {
42
42
  var _socket = null;
43
43
  var _connected = false;
44
44
  var _autoReconnecting = false;
45
+ var _intentionalDisconnect = false;
45
46
  var _autoReconnectTimer = null;
46
47
  var _buffer = "";
47
48
  var _requestCount = 0;
@@ -359,6 +360,7 @@ function connectToSocket() {
359
360
  _socket = socket;
360
361
  _connected = true;
361
362
  _buffer = "";
363
+ _intentionalDisconnect = false;
362
364
  socket.on("data", handleData);
363
365
  socket.on("close", () => {
364
366
  _connected = false;
@@ -368,7 +370,9 @@ function connectToSocket() {
368
370
  _pending.delete(id);
369
371
  entry.resolve({ error: "Connection closed" });
370
372
  }
371
- if (!_autoReconnecting && !isBootFast()) {
373
+ const wasIntentional = _intentionalDisconnect;
374
+ _intentionalDisconnect = false;
375
+ if (!wasIntentional && !_autoReconnecting && !isBootFast()) {
372
376
  startAutoReconnectLoop();
373
377
  }
374
378
  });
@@ -586,6 +590,7 @@ async function embedBatchViaClient(texts, priority = "high") {
586
590
  function disconnectClient() {
587
591
  clearAutoReconnectTimer();
588
592
  _autoReconnecting = false;
593
+ _intentionalDisconnect = true;
589
594
  if (_socket) {
590
595
  _socket.destroy();
591
596
  _socket = null;
@@ -0,0 +1,40 @@
1
+ import {
2
+ getClient
3
+ } from "./chunk-RWSLVYTE.js";
4
+
5
+ // src/lib/boot-generation.ts
6
+ var SYNC_META_KEY = "daemon_boot_generation";
7
+ var _cachedGeneration;
8
+ async function bumpBootGeneration(client = getClient()) {
9
+ const result = await client.execute({
10
+ sql: `INSERT INTO sync_meta (key, value) VALUES (?, '1')
11
+ ON CONFLICT(key) DO UPDATE SET value = CAST(CAST(value AS INTEGER) + 1 AS TEXT)
12
+ RETURNING value`,
13
+ args: [SYNC_META_KEY]
14
+ });
15
+ const value = Number(result.rows[0]?.value ?? 1);
16
+ _cachedGeneration = Number.isFinite(value) && value > 0 ? value : 1;
17
+ return _cachedGeneration;
18
+ }
19
+ async function getBootGeneration(client = getClient()) {
20
+ const result = await client.execute({
21
+ sql: `SELECT value FROM sync_meta WHERE key = ?`,
22
+ args: [SYNC_META_KEY]
23
+ });
24
+ const raw = result.rows[0]?.value;
25
+ const value = Number(raw ?? 0);
26
+ return Number.isFinite(value) && value >= 0 ? value : 0;
27
+ }
28
+ function getCachedBootGeneration() {
29
+ return _cachedGeneration;
30
+ }
31
+ function _resetBootGenerationCache() {
32
+ _cachedGeneration = void 0;
33
+ }
34
+
35
+ export {
36
+ bumpBootGeneration,
37
+ getBootGeneration,
38
+ getCachedBootGeneration,
39
+ _resetBootGenerationCache
40
+ };
@@ -1,20 +1,20 @@
1
1
  import {
2
2
  cleanupCardsForMemories,
3
3
  cleanupGraphLinksForMemories
4
- } from "./chunk-A4DVMPYB.js";
4
+ } from "./chunk-7UMCQQWS.js";
5
5
  import {
6
6
  resolveAnthropicAuth
7
7
  } from "./chunk-VGMACSEV.js";
8
8
  import {
9
9
  vectorToBlob
10
- } from "./chunk-H37HHX3E.js";
10
+ } from "./chunk-EDH54E5A.js";
11
11
  import {
12
12
  extractKeywords,
13
13
  keywordsToString
14
14
  } from "./chunk-CHCA3ZM2.js";
15
15
  import {
16
16
  isCoordinatorName
17
- } from "./chunk-HEPR6QTL.js";
17
+ } from "./chunk-RWSLVYTE.js";
18
18
 
19
19
  // src/lib/consolidation.ts
20
20
  import { randomUUID } from "crypto";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getClient
3
- } from "./chunk-HEPR6QTL.js";
3
+ } from "./chunk-RWSLVYTE.js";
4
4
 
5
5
  // src/lib/orchestration-events.ts
6
6
  import crypto from "crypto";
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  sendMessage
3
- } from "./chunk-X7H3HMFH.js";
3
+ } from "./chunk-2P4WJNN5.js";
4
4
  import {
5
5
  getActiveAgent
6
- } from "./chunk-DZ6OQM67.js";
6
+ } from "./chunk-C445WRUX.js";
7
7
 
8
8
  // src/mcp/tools/send-message.ts
9
9
  import { z } from "zod";