@askexenow/exe-os 0.9.145 → 0.9.147

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 (342) hide show
  1. package/dist/{active-agent-HUDSZRUG.js → active-agent-KMQCNXXD.js} +6 -6
  2. package/dist/{active-agent-GJOJUEMF.js → active-agent-NCZCDDZ2.js} +6 -6
  3. package/dist/{agent-context-HH7TL5ZP.js → agent-context-AZTTMUHP.js} +1 -1
  4. package/dist/agent-heartbeat-I5UPGXAU.js +60 -0
  5. package/dist/{agent-loop-OCJFYO72.js → agent-loop-NUIWAL3Z.js} +1 -1
  6. package/dist/{agentic-ontology-5PGUVMDP.js → agentic-ontology-SQR74CO7.js} +2 -2
  7. package/dist/{asana-BSDR6NW4.js → asana-MRQ2OQMJ.js} +1 -1
  8. package/dist/assets/wezterm.lua +68 -0
  9. package/dist/{backfill-metadata-ZDJ5B37R.js → backfill-metadata-KMDWLDXU.js} +7 -7
  10. package/dist/{background-jobs-4N4JSZVZ.js → background-jobs-IUB22CRF.js} +4 -4
  11. package/dist/{bash-X54PZMOG.js → bash-HOHKSOU3.js} +1 -1
  12. package/dist/{behaviors-TXLHEM5J.js → behaviors-4U2N5L4E.js} +6 -6
  13. package/dist/bin/age-ontology-load.js +4 -4
  14. package/dist/bin/agentic-ontology-backfill.js +9 -9
  15. package/dist/bin/agentic-reflection-backfill.js +10 -10
  16. package/dist/bin/agentic-semantic-label.js +9 -9
  17. package/dist/bin/backfill-conversations.js +9 -9
  18. package/dist/bin/backfill-responses.js +9 -9
  19. package/dist/bin/backfill-vectors.js +12 -14
  20. package/dist/bin/bulk-sync-postgres.js +10 -10
  21. package/dist/bin/cc-doctor.js +5 -5
  22. package/dist/bin/cleanup-stale-review-tasks.js +12 -11
  23. package/dist/bin/cli.js +19 -19
  24. package/dist/bin/customer-readiness.js +47 -0
  25. package/dist/bin/exe-agent-config.js +6 -6
  26. package/dist/bin/exe-agent.js +8 -8
  27. package/dist/bin/exe-assign.js +11 -11
  28. package/dist/bin/exe-boot.js +39 -32
  29. package/dist/bin/exe-call.js +9 -11
  30. package/dist/bin/exe-cloud.js +10 -12
  31. package/dist/bin/exe-dispatch.js +12 -11
  32. package/dist/bin/exe-doctor.js +2 -2
  33. package/dist/bin/exe-export-behaviors.js +10 -10
  34. package/dist/bin/exe-forget.js +9 -9
  35. package/dist/bin/exe-gateway.js +18 -18
  36. package/dist/bin/exe-healthcheck.js +5 -5
  37. package/dist/bin/exe-heartbeat.js +19 -14
  38. package/dist/bin/exe-kill.js +9 -9
  39. package/dist/bin/exe-launch-agent.js +16 -18
  40. package/dist/bin/exe-new-employee.js +11 -11
  41. package/dist/bin/exe-pending-messages.js +13 -12
  42. package/dist/bin/exe-pending-notifications.js +12 -11
  43. package/dist/bin/exe-pending-reviews.js +20 -13
  44. package/dist/bin/exe-rename.js +9 -11
  45. package/dist/bin/exe-review.js +14 -13
  46. package/dist/bin/exe-search.js +8 -10
  47. package/dist/bin/exe-session-cleanup.js +19 -19
  48. package/dist/bin/exe-settings.js +11 -13
  49. package/dist/bin/exe-start-codex.js +15 -15
  50. package/dist/bin/exe-start-opencode.js +11 -11
  51. package/dist/bin/exe-status.js +13 -12
  52. package/dist/bin/exe-support.js +5 -5
  53. package/dist/bin/exe-team.js +6 -6
  54. package/dist/bin/git-sweep.js +12 -11
  55. package/dist/bin/graph-backfill.js +10 -10
  56. package/dist/bin/graph-export.js +8 -8
  57. package/dist/bin/graph-layer-benchmark.js +1 -1
  58. package/dist/bin/install.js +38 -12
  59. package/dist/bin/intercom-check.js +14 -8
  60. package/dist/bin/list-providers.js +1 -1
  61. package/dist/bin/postgres-agentic-reflection-backfill.js +6 -6
  62. package/dist/bin/postgres-agentic-semantic-backfill.js +5 -5
  63. package/dist/bin/pre-publish.js +2 -2
  64. package/dist/bin/registry-proxy.js +1 -1
  65. package/dist/bin/scan-tasks.js +48 -49
  66. package/dist/bin/setup.js +6 -5
  67. package/dist/bin/shard-migrate.js +8 -8
  68. package/dist/bin/stack-update.js +66 -10
  69. package/dist/bin/update.js +1 -1
  70. package/dist/{branding-52J2ILJX.js → branding-EHDA3CCK.js} +4 -6
  71. package/dist/{capacity-monitor-HWN2JX5W.js → capacity-monitor-Q5M5SVRC.js} +13 -12
  72. package/dist/{catchup-brief-UERCIVM5.js → catchup-brief-IPNSW7RQ.js} +14 -13
  73. package/dist/{chunk-GK5VMHSN.js → chunk-26UVGP3I.js} +1 -1
  74. package/dist/{chunk-CDDRSIGK.js → chunk-2BPO7VQF.js} +80 -70
  75. package/dist/{chunk-7PTII6F4.js → chunk-2OATM2JZ.js} +1 -1
  76. package/dist/{chunk-AJ2XDY27.js → chunk-3FIWKONP.js} +10 -12
  77. package/dist/{chunk-53VUIKOE.js → chunk-3MLGUSKS.js} +1 -1
  78. package/dist/{chunk-OYCQ6PFC.js → chunk-4EINMZNO.js} +6 -6
  79. package/dist/{chunk-JUITBJ7J.js → chunk-4GLEFA2X.js} +1 -1
  80. package/dist/{chunk-BY4OTURZ.js → chunk-4MN44ORL.js} +1 -1
  81. package/dist/{chunk-MUVPQCQA.js → chunk-6HFZ2KUC.js} +1 -3
  82. package/dist/{chunk-F7JVVLGH.js → chunk-6YUACQQA.js} +2 -4
  83. package/dist/{chunk-UVH6FA5E.js → chunk-7B5DQGXG.js} +1 -1
  84. package/dist/{chunk-XEA6DSLR.js → chunk-AERGE6GC.js} +4 -6
  85. package/dist/{chunk-NQAZ2CP7.js → chunk-AGFWOII2.js} +11 -11
  86. package/dist/{chunk-RWJY7KMP.js → chunk-ARGBV4PP.js} +46 -13
  87. package/dist/{chunk-VRD452MQ.js → chunk-B4HAUSVQ.js} +2 -2
  88. package/dist/{chunk-VX4X2O6J.js → chunk-CGQ5PWS3.js} +6 -6
  89. package/dist/{chunk-RNN4MZDN.js → chunk-DBXKWFTK.js} +3 -3
  90. package/dist/{chunk-Y2VVTK2E.js → chunk-DTLASDQM.js} +1 -1
  91. package/dist/{chunk-K3PSCQLK.js → chunk-DW6P7UVY.js} +4 -6
  92. package/dist/{chunk-B6Q6WAD7.js → chunk-EHNSK2Y4.js} +1 -1
  93. package/dist/{chunk-7PEYIW53.js → chunk-EHXOWGQG.js} +2 -2
  94. package/dist/{chunk-6BUUY7FG.js → chunk-EOO32RJZ.js} +2 -4
  95. package/dist/{chunk-MFGARIVE.js → chunk-EYQIEK5M.js} +2 -4
  96. package/dist/{chunk-NT6R4ATM.js → chunk-FG4Z2XFU.js} +1 -1
  97. package/dist/{chunk-32LFUJVG.js → chunk-FNMNKYVH.js} +221 -110
  98. package/dist/{chunk-CWPE6QVM.js → chunk-GNHN5HRQ.js} +2 -4
  99. package/dist/{chunk-WLEVAIL5.js → chunk-GP6G6EQI.js} +1 -1
  100. package/dist/{chunk-KLRP6ZG3.js → chunk-HHMHL4FB.js} +251 -96
  101. package/dist/{chunk-O7YD7JYE.js → chunk-I7AW4237.js} +18 -4
  102. package/dist/{chunk-TFZZL3QF.js → chunk-ICKEGWWP.js} +2 -4
  103. package/dist/{chunk-SR6D65DA.js → chunk-IFACD7E6.js} +3 -3
  104. package/dist/{chunk-I4WAKJ6W.js → chunk-J4RAXKTC.js} +3 -3
  105. package/dist/{chunk-65UQ7H5U.js → chunk-JF3Q5YKI.js} +4 -6
  106. package/dist/{chunk-RWURKLS3.js → chunk-JH7Z2AZ7.js} +1 -1
  107. package/dist/{chunk-5WTYETQO.js → chunk-K4KAPZC7.js} +4 -8
  108. package/dist/{chunk-G3VR3MJI.js → chunk-KIUU4PNX.js} +4 -8
  109. package/dist/{chunk-4F56OUR7.js → chunk-LC53LVOT.js} +2 -2
  110. package/dist/{chunk-W7NQE65M.js → chunk-LJML7HT2.js} +1 -1
  111. package/dist/{chunk-V4O2APMI.js → chunk-LL5EY6OQ.js} +1 -1
  112. package/dist/{chunk-DCJ42FEN.js → chunk-LWJ4AMMY.js} +2 -4
  113. package/dist/{chunk-GCMT6RWI.js → chunk-LYH5HE24.js} +3 -14
  114. package/dist/{chunk-63UVIM7S.js → chunk-MBA4NNTS.js} +2 -4
  115. package/dist/{chunk-7KR5PV4P.js → chunk-MKPSMRVX.js} +1 -1
  116. package/dist/{chunk-C4EVFN7J.js → chunk-MKUVEDUE.js} +2 -2
  117. package/dist/chunk-MLKGABMK.js +9 -0
  118. package/dist/chunk-MLXJ5EZG.js +90 -0
  119. package/dist/{chunk-BXCJOACQ.js → chunk-NFHFNPTN.js} +3 -5
  120. package/dist/{chunk-2R3N4DQY.js → chunk-NJKERRSG.js} +3 -3
  121. package/dist/{chunk-I5VJNTDL.js → chunk-NNT2ZNMC.js} +5 -7
  122. package/dist/{chunk-O7CTVDC3.js → chunk-ODEGQCWW.js} +8 -8
  123. package/dist/{chunk-H4YONWQX.js → chunk-ONMRBKAX.js} +229 -108
  124. package/dist/{chunk-NE6RPW5C.js → chunk-PMWDO5FR.js} +1 -1
  125. package/dist/{chunk-IPSFAUK5.js → chunk-QB66MH2V.js} +4 -4
  126. package/dist/{chunk-XAHIVBTU.js → chunk-QHQJ7DLL.js} +6 -6
  127. package/dist/{chunk-NA3MXUU6.js → chunk-TH6HTK2L.js} +17 -15
  128. package/dist/{chunk-H4KUTL2T.js → chunk-TKEDF7KV.js} +1 -1
  129. package/dist/{chunk-KHV55ME4.js → chunk-TOWAZ5IV.js} +95 -118
  130. package/dist/{chunk-IBVB2NGY.js → chunk-TOXHEZN5.js} +47 -4
  131. package/dist/{chunk-H6OEU54G.js → chunk-UJMDHPIN.js} +91 -39
  132. package/dist/{chunk-UWBU44UP.js → chunk-UPL5FEZY.js} +1 -1
  133. package/dist/{chunk-ER3UJ2VL.js → chunk-UPMKSFBU.js} +2 -2
  134. package/dist/{chunk-X7DJ2QZW.js → chunk-V4MKR32F.js} +4 -6
  135. package/dist/{chunk-HV75RBMK.js → chunk-VB23RNNI.js} +1 -1
  136. package/dist/{chunk-56T5TMNK.js → chunk-VK2AWQ6D.js} +2 -2
  137. package/dist/{chunk-UXDQ4ERA.js → chunk-VNTDQUOG.js} +21 -18
  138. package/dist/{chunk-KQTGSD23.js → chunk-VYVESELG.js} +13 -9
  139. package/dist/{chunk-S465RWY7.js → chunk-W6SKR3HZ.js} +3 -5
  140. package/dist/{chunk-CQCURHDV.js → chunk-X2XE65WV.js} +12 -10
  141. package/dist/{chunk-XQ2ZBOAD.js → chunk-XK7VZFCC.js} +22 -9
  142. package/dist/{chunk-5F3EXHT7.js → chunk-XMRDT4PB.js} +2 -4
  143. package/dist/{chunk-MPXPPKJ4.js → chunk-XWQKCCCO.js} +3 -3
  144. package/dist/{chunk-7APRWURX.js → chunk-Y6TS42WD.js} +10 -12
  145. package/dist/{chunk-WTJS6PCC.js → chunk-YOG7TWMO.js} +1 -1
  146. package/dist/{chunk-QSSABSCM.js → chunk-YPSN64BU.js} +6 -6
  147. package/dist/{chunk-WJW564IP.js → chunk-ZBA74MMX.js} +2 -2
  148. package/dist/{chunk-VXQDZH5T.js → chunk-ZMJHXDZR.js} +3 -3
  149. package/dist/{chunk-BHV7PX5V.js → chunk-ZUAXTH6Z.js} +2 -2
  150. package/dist/{chunk-K6MMN6AW.js → chunk-ZZLTJXKR.js} +3 -5
  151. package/dist/{code-context-index-SRTAWCZQ.js → code-context-index-I5A7I4JQ.js} +7 -7
  152. package/dist/{content-extractor-H4IPL533.js → content-extractor-M7ISRONU.js} +1 -1
  153. package/dist/{conversation-entity-extractor-IZ3ECP4A.js → conversation-entity-extractor-EYSI4DKM.js} +3 -3
  154. package/dist/{conversation-wiki-populator-K4BQXHHO.js → conversation-wiki-populator-RSJ44BRO.js} +2 -2
  155. package/dist/{core-memory-JZ34WT5R.js → core-memory-C3JLISAU.js} +1 -1
  156. package/dist/{crdt-sync-4TOVD4QN.js → crdt-sync-XMC6LT2Q.js} +2 -2
  157. package/dist/{crm-bridge-27QVOWPI.js → crm-bridge-4QZRMOF7.js} +1 -1
  158. package/dist/{crm-webhook-77XHBWL7.js → crm-webhook-QMHD5YYQ.js} +3 -3
  159. package/dist/{cto-delegation-gate-AWENA4VT.js → cto-delegation-gate-BTZWAA4E.js} +11 -10
  160. package/dist/{daemon-auth-Z7O3LO23.js → daemon-auth-F47P6HTC.js} +4 -4
  161. package/dist/{daemon-orchestration-BG4NPWOK.js → daemon-orchestration-HFODCB52.js} +14 -13
  162. package/dist/{daemon-protocol-N7MOJ4U3.js → daemon-protocol-XW2OLNBS.js} +1 -1
  163. package/dist/{db-backup-E34JMBZD.js → db-backup-W56YOLMC.js} +4 -4
  164. package/dist/{devtools-ZL5NCINM.js → devtools-5PEATRYE.js} +1 -1
  165. package/dist/{discord-QOFQKX6S.js → discord-LMZKIYWB.js} +1 -1
  166. package/dist/dispatch-ack-JYCKAWKZ.js +13 -0
  167. package/dist/{email-NY5HB4WA.js → email-UENAIKRN.js} +1 -1
  168. package/dist/{entity-boost-V6KSRGG4.js → entity-boost-LIBVNNXO.js} +2 -2
  169. package/dist/{exe-drift-YFWCC26O.js → exe-drift-SED6KQTZ.js} +6 -6
  170. package/dist/{exe-export-YRACBEUY.js → exe-export-ADSWDE5U.js} +9 -9
  171. package/dist/{exe-import-DY57L2OI.js → exe-import-WFLNGJZP.js} +9 -9
  172. package/dist/{exe-key-U2JJH4MO.js → exe-key-4L32R46F.js} +5 -7
  173. package/dist/{exe-org-45OTYZZJ.js → exe-org-OOO7KJVZ.js} +4 -4
  174. package/dist/{factory-2PB537KA.js → factory-CTFAGZUA.js} +1 -1
  175. package/dist/fast-db-init-HVAVS35N.js +7 -0
  176. package/dist/{file-edit-GSXUFUDC.js → file-edit-AZAJPCA3.js} +1 -1
  177. package/dist/{file-read-Z3F3PUCK.js → file-read-VACF23NC.js} +1 -1
  178. package/dist/{file-write-X77JXZ2C.js → file-write-B2RPT5U7.js} +1 -1
  179. package/dist/gateway/index.js +10 -10
  180. package/dist/{gateway-client-IPKKEYKY.js → gateway-client-5EUMMEZZ.js} +2 -2
  181. package/dist/{git-staleness-I662R7RL.js → git-staleness-BY4ZK6MW.js} +5 -5
  182. package/dist/{git-task-sweep-XWFCP2HA.js → git-task-sweep-RSRASAHB.js} +12 -11
  183. package/dist/{glob-2PWAXTZ2.js → glob-7PWH7WKL.js} +1 -1
  184. package/dist/{global-procedures-IEIJBCAH.js → global-procedures-EKYSVONR.js} +7 -7
  185. package/dist/graph-auto-extract-HWZ5GVXZ.js +161 -0
  186. package/dist/{graph-query-NCDYOT4Y.js → graph-query-SE6T5XC4.js} +1 -1
  187. package/dist/{graph-rag-2YLGRBW5.js → graph-rag-G3EG5Q6L.js} +3 -3
  188. package/dist/{grep-GTV6WAZ4.js → grep-HWIDXHRC.js} +1 -1
  189. package/dist/{hook-integrity-LLPJPAXW.js → hook-integrity-PR4BPZBT.js} +2 -2
  190. package/dist/hooks/bug-report-worker.js +13 -12
  191. package/dist/hooks/codex-stop-task-finalizer.js +16 -13
  192. package/dist/hooks/commit-complete.js +14 -13
  193. package/dist/hooks/error-recall.js +9 -12
  194. package/dist/hooks/exe-heartbeat-hook.js +6 -6
  195. package/dist/hooks/ingest-worker.js +9 -9
  196. package/dist/hooks/ingest.js +16 -19
  197. package/dist/hooks/instructions-loaded.js +7 -7
  198. package/dist/hooks/notification.js +12 -10
  199. package/dist/hooks/post-compact.js +13 -12
  200. package/dist/hooks/post-tool-combined.js +6 -6
  201. package/dist/hooks/pre-compact.js +18 -17
  202. package/dist/hooks/pre-tool-use.js +19 -20
  203. package/dist/hooks/prompt-submit.js +78 -39
  204. package/dist/hooks/session-end.js +22 -21
  205. package/dist/hooks/session-start.js +31 -25
  206. package/dist/hooks/stop.js +20 -22
  207. package/dist/hooks/subagent-stop.js +13 -12
  208. package/dist/hooks/summary-worker.js +21 -20
  209. package/dist/{hooks-UK2AYRCA.js → hooks-LDCFYHDF.js} +1 -1
  210. package/dist/{imessage-LINH4V4D.js → imessage-6UOZB5VN.js} +1 -1
  211. package/dist/index.js +19 -18
  212. package/dist/{installer-PB63JTTG.js → installer-RLKOACKG.js} +9 -9
  213. package/dist/{installer-SSR2OOLO.js → installer-W4NY3OBF.js} +13 -11
  214. package/dist/{installer-ZONYB3XK.js → installer-X5FEYJIA.js} +9 -9
  215. package/dist/{intercom-queue-MMZT2MA2.js → intercom-queue-K3DVKSPJ.js} +1 -1
  216. package/dist/{key-backup-status-4WKIQOAS.js → key-backup-status-ORNMJEEA.js} +4 -6
  217. package/dist/lib/agent-config.js +4 -4
  218. package/dist/lib/cloud-sync.js +8 -8
  219. package/dist/lib/cloudflare-dns.js +1 -1
  220. package/dist/lib/config.js +3 -5
  221. package/dist/lib/consolidation.js +8 -8
  222. package/dist/lib/crypto.js +1 -1
  223. package/dist/lib/database.js +5 -5
  224. package/dist/lib/db-daemon-client.js +5 -5
  225. package/dist/lib/db.js +5 -5
  226. package/dist/lib/device-registry.js +4 -6
  227. package/dist/lib/embedder.js +6 -6
  228. package/dist/lib/employee-templates.js +8 -8
  229. package/dist/lib/employees.js +7 -5
  230. package/dist/lib/error-detector.js +1 -1
  231. package/dist/lib/exe-daemon-client.js +5 -5
  232. package/dist/lib/exe-daemon.js +143 -52
  233. package/dist/lib/file-grep.js +1 -1
  234. package/dist/lib/hybrid-search.js +8 -8
  235. package/dist/lib/identity-templates.js +1 -1
  236. package/dist/lib/identity.js +5 -5
  237. package/dist/lib/keychain.js +1 -1
  238. package/dist/lib/license.js +4 -4
  239. package/dist/lib/messaging.js +12 -11
  240. package/dist/lib/post-tool-memory.js +3 -3
  241. package/dist/lib/registry-proxy.js +1 -1
  242. package/dist/lib/reminders.js +6 -6
  243. package/dist/lib/runtime-table.js +1 -1
  244. package/dist/lib/schedules.js +8 -8
  245. package/dist/lib/session-registry.js +1 -1
  246. package/dist/lib/session-wrappers.js +1 -1
  247. package/dist/lib/skill-learning.js +7 -7
  248. package/dist/lib/status-brief.js +1 -1
  249. package/dist/lib/store.js +7 -7
  250. package/dist/lib/task-router.js +6 -6
  251. package/dist/lib/tasks.js +14 -11
  252. package/dist/lib/tmux-routing.js +11 -10
  253. package/dist/lib/tmux-status.js +1 -1
  254. package/dist/lib/tmux-transport.js +1 -1
  255. package/dist/lib/token-spend.js +6 -6
  256. package/dist/lib/transport.js +1 -1
  257. package/dist/lib/ws-auth.js +1 -1
  258. package/dist/lib/ws-client.js +2 -2
  259. package/dist/license-gate-J5YN264E.js +14 -0
  260. package/dist/mcp/register-tools.js +63 -62
  261. package/dist/mcp/server.js +65 -64
  262. package/dist/mcp/tools/complete-reminder.js +7 -7
  263. package/dist/mcp/tools/create-reminder.js +7 -7
  264. package/dist/mcp/tools/create-task.js +15 -13
  265. package/dist/mcp/tools/deactivate-behavior.js +8 -8
  266. package/dist/mcp/tools/list-reminders.js +7 -7
  267. package/dist/mcp/tools/list-tasks.js +14 -14
  268. package/dist/mcp/tools/send-message.js +14 -13
  269. package/dist/mcp/tools/update-task.js +13 -12
  270. package/dist/{mcp-diagnostics-CWMVPHVC.js → mcp-diagnostics-TSBY62UQ.js} +1 -1
  271. package/dist/{mcp-disconnect-tracker-RM3GEERR.js → mcp-disconnect-tracker-MB23DRS6.js} +1 -1
  272. package/dist/{mcp-http-config-PDGSOYNQ.js → mcp-http-config-6YLW4PFG.js} +6 -6
  273. package/dist/{memory-cards-OLE6MGO7.js → memory-cards-UAQCO4QR.js} +5 -5
  274. package/dist/{memory-poisoning-defense-OOHJIXIX.js → memory-poisoning-defense-VWITZ4WO.js} +5 -7
  275. package/dist/{memory-queue-TGWXMENR.js → memory-queue-NYIGZNCG.js} +4 -4
  276. package/dist/memory-queue-client-YJOLYALV.js +15 -0
  277. package/dist/{memory-reflection-Z7CT6JLY.js → memory-reflection-JQC4ZSUD.js} +5 -5
  278. package/dist/{message-queue-client-TWIA2GIH.js → message-queue-client-NTLKYGVO.js} +1 -1
  279. package/dist/{notifications-SREXGSAQ.js → notifications-YDOKTVCH.js} +11 -10
  280. package/dist/{oauth-server-NSWGKLLA.js → oauth-server-TOWAZR4K.js} +1 -1
  281. package/dist/{orchestration-phase-WLQMEP4M.js → orchestration-phase-FXKZYK6R.js} +4 -4
  282. package/dist/{orchestrator-CHQURQSC.js → orchestrator-BZ2D6ZM6.js} +13 -12
  283. package/dist/{permission-presets-3XKJNM6N.js → permission-presets-E3DZK46K.js} +1 -1
  284. package/dist/{permissions-EZH3ULLD.js → permissions-6MCWUDCD.js} +1 -1
  285. package/dist/{pg-ssl-4ZNXKUNH.js → pg-ssl-7JXQFL4I.js} +1 -1
  286. package/dist/{plan-limits-7L75PB33.js → plan-limits-KUTODKG6.js} +7 -7
  287. package/dist/{preferences-K2GKUQSJ.js → preferences-ERXO6SMJ.js} +3 -3
  288. package/dist/{project-name-OBIDABHE.js → project-name-EWG5KAZP.js} +1 -1
  289. package/dist/{projection-worker-HSGE44JA.js → projection-worker-UY7R2EQJ.js} +85 -8
  290. package/dist/{push-notifications-EOTMKJ6B.js → push-notifications-KDYFOJRI.js} +4 -4
  291. package/dist/{reranker-ME4CK2ZQ.js → reranker-OMADCS3D.js} +4 -4
  292. package/dist/{review-gate-M3U2YAW6.js → review-gate-IUNS6GQU.js} +1 -1
  293. package/dist/{review-polling-DQCN4TNM.js → review-polling-DORNZ2KI.js} +12 -11
  294. package/dist/runtime/index.js +14 -13
  295. package/dist/{self-query-router-TRPHL54X.js → self-query-router-37VB3PKQ.js} +1 -1
  296. package/dist/{session-events-ZZBFYL5Z.js → session-events-5WR5RVDK.js} +12 -12
  297. package/dist/{session-kill-telemetry-MUFET632.js → session-kill-telemetry-DHSQV2CI.js} +6 -6
  298. package/dist/{session-scope-QUUDZM2L.js → session-scope-D4Q62ZOZ.js} +13 -13
  299. package/dist/setup-wizard-QVNTI3T4.js +12 -0
  300. package/dist/{shard-manager-VYMJM7NR.js → shard-manager-SP4YL5JQ.js} +4 -4
  301. package/dist/{signal-C263RUND.js → signal-7UIRTYGZ.js} +1 -1
  302. package/dist/{slack-N7PL6QMX.js → slack-GCOYBZUK.js} +1 -1
  303. package/dist/{task-enforcement-WJ3S6JTL.js → task-enforcement-OYCQXBBC.js} +11 -10
  304. package/dist/{task-scanner-YHWRG4ZJ.js → task-scanner-QEM5CO2Y.js} +1 -1
  305. package/dist/{task-scope-V2CTRHG7.js → task-scope-WWRNU2LU.js} +11 -10
  306. package/dist/{tasks-crud-W2XPUGKK.js → tasks-crud-75AUVZPO.js} +13 -10
  307. package/dist/{tasks-review-BR2SBSYG.js → tasks-review-UMZN5ZPQ.js} +11 -10
  308. package/dist/{telegram-B54FFOXD.js → telegram-RGVD4LUY.js} +1 -1
  309. package/dist/{telemetry-7IQCPV4Q.js → telemetry-43X3GT3R.js} +1 -1
  310. package/dist/{token-budget-H2XSWO4D.js → token-budget-62TYDIMI.js} +5 -5
  311. package/dist/{tool-capability-index-5X2CCGIK.js → tool-capability-index-OBZXORBP.js} +2 -2
  312. package/dist/{tool-gates-SGFMDREY.js → tool-gates-3IC7DK4R.js} +1 -1
  313. package/dist/{tool-gates-3DNTD7G3.js → tool-gates-GXSYBVK4.js} +1 -1
  314. package/dist/{tool-registry-2VUAZXTW.js → tool-registry-5XN3FUYL.js} +1 -1
  315. package/dist/{tool-telemetry-NVPSPRYP.js → tool-telemetry-JL6NY3KP.js} +2 -2
  316. package/dist/tui/App.js +44 -43
  317. package/dist/{tui-data-QN4O565C.js → tui-data-C5I2YU4C.js} +11 -10
  318. package/dist/{update-check-ERUKV2G6.js → update-check-MKHO7H6B.js} +1 -1
  319. package/dist/{webhook-L5FGAUPJ.js → webhook-LCW7UP4L.js} +1 -1
  320. package/dist/{webhook-pipe-B7GJCJAI.js → webhook-pipe-PJOFVBD3.js} +1 -1
  321. package/dist/{whatsapp-7FK2PRWO.js → whatsapp-SILL4V64.js} +1 -1
  322. package/dist/{whatsapp-accounts-VIHRSLGB.js → whatsapp-accounts-BWRZUY23.js} +1 -1
  323. package/dist/{wiki-acl-R4IIHICT.js → wiki-acl-5EC5VNYG.js} +1 -1
  324. package/dist/{wiki-client-EUDJA7O2.js → wiki-client-MMVRPTPK.js} +1 -1
  325. package/dist/{worker-gate-3KDXLIJC.js → worker-gate-Q5Y6B5N7.js} +4 -4
  326. package/dist/{workflow-engine-GISKRYSO.js → workflow-engine-KAKVU7NC.js} +3 -3
  327. package/dist/{worktree-B3FHAHEM.js → worktree-OMPQEJH7.js} +1 -1
  328. package/package.json +2 -2
  329. package/release-notes.json +126 -126
  330. package/src/commands/exe/setup.md +1 -1
  331. package/dist/chunk-PNKVD2UK.js +0 -26
  332. package/dist/fast-db-init-67TQTHWT.js +0 -7
  333. package/dist/license-gate-JY2KFIKO.js +0 -14
  334. package/dist/memory-queue-client-RZP5F4EA.js +0 -15
  335. package/dist/setup-wizard-NXWCEK63.js +0 -12
  336. package/dist/{chunk-D5MPHVWH.js → chunk-524VLFFY.js} +0 -0
  337. package/dist/{chunk-HIQ5RDA7.js → chunk-A3A2E42I.js} +0 -0
  338. package/dist/{chunk-APRP5D27.js → chunk-H6ADW3YC.js} +0 -0
  339. package/dist/{chunk-AAVODJ4F.js → chunk-J2OPV5FE.js} +0 -0
  340. package/dist/{chunk-DBLBWWFS.js → chunk-S6DA6UKC.js} +3 -3
  341. /package/dist/{chunk-F3ULERRZ.js → chunk-TSCZMB3P.js} +0 -0
  342. /package/dist/{chunk-2HV2EQW2.js → chunk-WRU72I4S.js} +0 -0
@@ -7,12 +7,12 @@ import {
7
7
  pingDaemon,
8
8
  sendDaemonRequest,
9
9
  sendIngestRequest
10
- } from "../chunk-S465RWY7.js";
10
+ } from "../chunk-W6SKR3HZ.js";
11
11
  import "../chunk-3H4VU65X.js";
12
- import "../chunk-5WTYETQO.js";
13
- import "../chunk-KHV55ME4.js";
14
- import "../chunk-GCMT6RWI.js";
15
- import "../chunk-PNKVD2UK.js";
12
+ import "../chunk-K4KAPZC7.js";
13
+ import "../chunk-TOWAZ5IV.js";
14
+ import "../chunk-LYH5HE24.js";
15
+ import "../chunk-MLKGABMK.js";
16
16
  export {
17
17
  connectEmbedDaemon,
18
18
  disconnectClient,
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  pushNotifyAsync
3
- } from "../chunk-CQCURHDV.js";
3
+ } from "../chunk-X2XE65WV.js";
4
4
  import {
5
5
  deserializeArgs,
6
6
  serializeResultSet
@@ -9,33 +9,32 @@ import {
9
9
  getMcpToolFamily,
10
10
  inferMcpRuntime,
11
11
  recordMcpHttpEvent
12
- } from "../chunk-DCJ42FEN.js";
12
+ } from "../chunk-LWJ4AMMY.js";
13
13
  import {
14
14
  logRestartEvent
15
15
  } from "../chunk-3H4VU65X.js";
16
16
  import {
17
17
  ensureDaemonToken
18
- } from "../chunk-5WTYETQO.js";
18
+ } from "../chunk-K4KAPZC7.js";
19
19
  import {
20
20
  findScopedDuplicate,
21
21
  governMemoryRecord,
22
22
  schedulePostWriteMemoryHygiene
23
- } from "../chunk-D5MPHVWH.js";
23
+ } from "../chunk-524VLFFY.js";
24
24
  import {
25
25
  getClient,
26
26
  isInitialized
27
- } from "../chunk-NA3MXUU6.js";
28
- import "../chunk-6BUUY7FG.js";
27
+ } from "../chunk-TH6HTK2L.js";
28
+ import "../chunk-EOO32RJZ.js";
29
29
  import {
30
30
  EMBEDDING_DIM
31
31
  } from "../chunk-FXU7JOXK.js";
32
32
  import {
33
33
  EXE_AI_DIR,
34
- MODELS_DIR,
35
- init_config
36
- } from "../chunk-KHV55ME4.js";
37
- import "../chunk-GCMT6RWI.js";
38
- import "../chunk-PNKVD2UK.js";
34
+ MODELS_DIR
35
+ } from "../chunk-TOWAZ5IV.js";
36
+ import "../chunk-LYH5HE24.js";
37
+ import "../chunk-MLKGABMK.js";
39
38
 
40
39
  // src/lib/exe-daemon.ts
41
40
  import os2 from "os";
@@ -44,11 +43,9 @@ import { createServer as createHttpServer } from "http";
44
43
  import { randomUUID } from "crypto";
45
44
  import { writeFileSync as writeFileSync2, unlinkSync, mkdirSync as mkdirSync2, existsSync as existsSync3, readFileSync as readFileSync2, chmodSync } from "fs";
46
45
  import { execFileSync as execFileSyncNode, execSync as execSyncNode } from "child_process";
47
- init_config();
48
46
  import path3 from "path";
49
47
 
50
48
  // src/lib/orchestration-metrics.ts
51
- init_config();
52
49
  import { writeFileSync, readFileSync, existsSync } from "fs";
53
50
  import path from "path";
54
51
  var METRICS_PATH = path.join(EXE_AI_DIR, "orchestration-metrics.json");
@@ -491,12 +488,33 @@ async function loadModel() {
491
488
  process.stderr.write("[exed] Running without embeddings \u2014 memories will have null vectors.\n");
492
489
  }
493
490
  }
491
+ var RSS_BACKPRESSURE_HIGH = 0.8;
492
+ var RSS_BACKPRESSURE_LOW = 0.7;
493
+ var _lowQueuePaused = false;
494
+ function isRssOverThreshold(fraction) {
495
+ try {
496
+ return process.memoryUsage.rss() > RSS_RESTART_BYTES * fraction;
497
+ } catch {
498
+ return false;
499
+ }
500
+ }
494
501
  async function processQueue() {
495
502
  if (_processing) return;
496
503
  _processing = true;
497
504
  try {
498
505
  while (highQueue.length > 0 || lowQueue.length > 0) {
499
- const entry = highQueue.shift() ?? lowQueue.shift();
506
+ if (!_lowQueuePaused && isRssOverThreshold(RSS_BACKPRESSURE_HIGH)) {
507
+ _lowQueuePaused = true;
508
+ process.stderr.write(
509
+ `[exed] RSS backpressure: pausing low-priority queue (RSS > ${(RSS_BACKPRESSURE_HIGH * 100).toFixed(0)}% of restart limit). Low queue depth: ${lowQueue.length}
510
+ `
511
+ );
512
+ global.gc?.();
513
+ } else if (_lowQueuePaused && !isRssOverThreshold(RSS_BACKPRESSURE_LOW)) {
514
+ _lowQueuePaused = false;
515
+ process.stderr.write("[exed] RSS backpressure: resuming low-priority queue.\n");
516
+ }
517
+ const entry = highQueue.shift() ?? (_lowQueuePaused ? void 0 : lowQueue.shift());
500
518
  if (!entry) break;
501
519
  if (entry.socket.destroyed) continue;
502
520
  try {
@@ -525,6 +543,8 @@ async function processQueue() {
525
543
  error: err instanceof Error ? err.message : String(err)
526
544
  });
527
545
  }
546
+ global.gc?.();
547
+ await new Promise((r) => setTimeout(r, 0));
528
548
  }
529
549
  } finally {
530
550
  _processing = false;
@@ -566,6 +586,22 @@ async function shutdown() {
566
586
  logRestartEvent("daemon_shutdown_start", { uptime_s: Math.floor((Date.now() - _startedAt2) / 1e3), active_writes: _activeWrites, active_connections: _activeConnections });
567
587
  resetIdleTimer();
568
588
  flushToDisk();
589
+ if (process.platform === "darwin" && _llama && isRssOverThreshold(RSS_BACKPRESSURE_HIGH)) {
590
+ process.stderr.write(
591
+ `[exed] RSS CRITICAL during shutdown \u2014 fast Metal exit (skipping WAL/backup/shards).
592
+ `
593
+ );
594
+ try {
595
+ unlinkSync(SOCKET_PATH);
596
+ } catch {
597
+ }
598
+ try {
599
+ unlinkSync(PID_PATH);
600
+ } catch {
601
+ }
602
+ process.kill(process.pid, "SIGKILL");
603
+ process.exit(0);
604
+ }
569
605
  if (_activeWrites > 0) {
570
606
  process.stderr.write(`[exed] Draining ${_activeWrites} active write(s)...
571
607
  `);
@@ -581,7 +617,7 @@ async function shutdown() {
581
617
  }
582
618
  }
583
619
  try {
584
- const { createBackup } = await import("../db-backup-E34JMBZD.js");
620
+ const { createBackup } = await import("../db-backup-W56YOLMC.js");
585
621
  const backupPath = createBackup("pre-restart");
586
622
  if (backupPath) {
587
623
  process.stderr.write(`[exed] Pre-restart backup: ${backupPath}
@@ -601,12 +637,12 @@ async function shutdown() {
601
637
  `);
602
638
  }
603
639
  try {
604
- const { stopProjectionWorker } = await import("../projection-worker-HSGE44JA.js");
640
+ const { stopProjectionWorker } = await import("../projection-worker-UY7R2EQJ.js");
605
641
  stopProjectionWorker();
606
642
  } catch {
607
643
  }
608
644
  try {
609
- const { disposeShards } = await import("../shard-manager-VYMJM7NR.js");
645
+ const { disposeShards } = await import("../shard-manager-SP4YL5JQ.js");
610
646
  disposeShards();
611
647
  } catch {
612
648
  }
@@ -947,7 +983,7 @@ async function _writeMemoryRecordInner(entry) {
947
983
  const vRow = await client.execute({ sql: "SELECT version FROM memories WHERE id = ?", args: [id] });
948
984
  const version = Number(vRow.rows[0]?.version) || 0;
949
985
  try {
950
- const { insertOntologyForMemory } = await import("../agentic-ontology-5PGUVMDP.js");
986
+ const { insertOntologyForMemory } = await import("../agentic-ontology-SQR74CO7.js");
951
987
  await insertOntologyForMemory({
952
988
  id,
953
989
  agent_id: record.agent_id,
@@ -975,7 +1011,7 @@ function startMemoryQueueDrain() {
975
1011
  fired("memory_queue_drain");
976
1012
  if (!await ensureStoreForPolling()) return;
977
1013
  try {
978
- const { ackQueue, claimQueue, retryQueueEntries } = await import("../memory-queue-TGWXMENR.js");
1014
+ const { ackQueue, claimQueue, retryQueueEntries } = await import("../memory-queue-NYIGZNCG.js");
979
1015
  const lease = claimQueue();
980
1016
  if (!lease || lease.entries.length === 0) return;
981
1017
  acted("memory_queue_drain");
@@ -1021,7 +1057,7 @@ function startMessageQueueDrain() {
1021
1057
  fired("message_queue_drain");
1022
1058
  if (!await ensureStoreForPolling()) return;
1023
1059
  try {
1024
- const { claimMessageQueue, ackMessageQueue } = await import("../message-queue-client-TWIA2GIH.js");
1060
+ const { claimMessageQueue, ackMessageQueue } = await import("../message-queue-client-NTLKYGVO.js");
1025
1061
  const lease = claimMessageQueue();
1026
1062
  if (!lease || lease.entries.length === 0) return;
1027
1063
  acted("message_queue_drain");
@@ -1324,7 +1360,7 @@ async function startMcpHttpServer() {
1324
1360
  throw new Error("[exed] registerAllTools not injected \u2014 call injectRegisterAllTools() before starting daemon");
1325
1361
  }
1326
1362
  const registerAllTools = _injectedRegisterAllTools;
1327
- const { runWithAgent } = await import("../agent-context-HH7TL5ZP.js");
1363
+ const { runWithAgent } = await import("../agent-context-AZTTMUHP.js");
1328
1364
  process.stderr.write("[exed] MCP HTTP: SDK imports done, initializing DB...\n");
1329
1365
  const dbReady = await ensureStoreForPolling();
1330
1366
  if (!dbReady) {
@@ -1334,7 +1370,7 @@ async function startMcpHttpServer() {
1334
1370
  return;
1335
1371
  }
1336
1372
  process.stderr.write("[exed] MCP HTTP: DB ready\n");
1337
- const { initLicenseGate, getCachedLicenseGate } = await import("../license-gate-JY2KFIKO.js");
1373
+ const { initLicenseGate, getCachedLicenseGate } = await import("../license-gate-J5YN264E.js");
1338
1374
  const gateResult = await initLicenseGate();
1339
1375
  if (!gateResult.hasKey) {
1340
1376
  process.stderr.write(
@@ -1347,8 +1383,8 @@ async function startMcpHttpServer() {
1347
1383
  );
1348
1384
  }
1349
1385
  Promise.all([
1350
- import("../tool-capability-index-5X2CCGIK.js"),
1351
- import("../tool-gates-SGFMDREY.js")
1386
+ import("../tool-capability-index-OBZXORBP.js"),
1387
+ import("../tool-gates-3IC7DK4R.js")
1352
1388
  ]).then(async ([{ getToolCapabilityIndex }, { TOOL_CATEGORIES }]) => {
1353
1389
  const gateState = getCachedLicenseGate();
1354
1390
  const index = getToolCapabilityIndex();
@@ -1399,7 +1435,7 @@ async function startMcpHttpServer() {
1399
1435
  }
1400
1436
  const url = new URL(req.url || "/", `http://127.0.0.1:${MCP_HTTP_PORT}`);
1401
1437
  try {
1402
- const { handleOAuthRoute } = await import("../oauth-server-NSWGKLLA.js");
1438
+ const { handleOAuthRoute } = await import("../oauth-server-TOWAZR4K.js");
1403
1439
  const handled = await handleOAuthRoute(req, res, url, MCP_HTTP_PORT);
1404
1440
  if (handled) return;
1405
1441
  } catch (err) {
@@ -1417,7 +1453,7 @@ async function startMcpHttpServer() {
1417
1453
  for await (const chunk of req) chunks.push(typeof chunk === "string" ? Buffer.from(chunk) : chunk);
1418
1454
  const rawBody = Buffer.concat(chunks);
1419
1455
  try {
1420
- const { loadWebhookConfig, verifyHmac, processWebhook } = await import("../webhook-pipe-B7GJCJAI.js");
1456
+ const { loadWebhookConfig, verifyHmac, processWebhook } = await import("../webhook-pipe-PJOFVBD3.js");
1421
1457
  const webhookConfig = await loadWebhookConfig();
1422
1458
  const serviceConfig = webhookConfig[serviceName];
1423
1459
  if (!serviceConfig) {
@@ -1465,6 +1501,30 @@ async function startMcpHttpServer() {
1465
1501
  }
1466
1502
  return;
1467
1503
  }
1504
+ if (url.pathname === "/v1/heartbeat" && req.method === "POST") {
1505
+ try {
1506
+ const chunks = [];
1507
+ for await (const chunk of req) chunks.push(typeof chunk === "string" ? Buffer.from(chunk) : chunk);
1508
+ const body = JSON.parse(Buffer.concat(chunks).toString("utf-8"));
1509
+ if (!body.agent_id || !body.session_name) {
1510
+ res.writeHead(400, { "Content-Type": "application/json" });
1511
+ res.end(JSON.stringify({ error: "agent_id and session_name are required" }));
1512
+ return;
1513
+ }
1514
+ const { recordHeartbeat } = await import("../agent-heartbeat-I5UPGXAU.js");
1515
+ recordHeartbeat(body.agent_id, body.session_name, {
1516
+ taskId: body.task_id,
1517
+ status: body.status,
1518
+ contextPct: body.context_pct
1519
+ });
1520
+ res.writeHead(200, { "Content-Type": "application/json" });
1521
+ res.end(JSON.stringify({ ok: true }));
1522
+ } catch (e) {
1523
+ res.writeHead(500, { "Content-Type": "application/json" });
1524
+ res.end(JSON.stringify({ error: e instanceof Error ? e.message : String(e) }));
1525
+ }
1526
+ return;
1527
+ }
1468
1528
  if (url.pathname !== "/mcp") {
1469
1529
  res.writeHead(404, { "Content-Type": "application/json" });
1470
1530
  res.end(JSON.stringify({ error: "not_found" }));
@@ -1487,7 +1547,7 @@ async function startMcpHttpServer() {
1487
1547
  let authed = token === _daemonToken;
1488
1548
  if (!authed) {
1489
1549
  try {
1490
- const { verifyAccessToken } = await import("../oauth-server-NSWGKLLA.js");
1550
+ const { verifyAccessToken } = await import("../oauth-server-TOWAZR4K.js");
1491
1551
  const result = verifyAccessToken(token);
1492
1552
  authed = result.valid;
1493
1553
  } catch {
@@ -1646,7 +1706,7 @@ async function startMcpHttpServer() {
1646
1706
  };
1647
1707
  const sessionMcp = new McpServer({ name: "exe-os", version: "1.3.0" });
1648
1708
  const gateState = getCachedLicenseGate();
1649
- const { wrapServerWithTelemetry } = await import("../tool-telemetry-NVPSPRYP.js");
1709
+ const { wrapServerWithTelemetry } = await import("../tool-telemetry-JL6NY3KP.js");
1650
1710
  const wrappedMcp = wrapServerWithTelemetry(sessionMcp);
1651
1711
  registerAllTools(wrappedMcp, gateState.license, gateState.hasKey);
1652
1712
  await sessionMcp.connect(transport);
@@ -1718,7 +1778,7 @@ async function startMcpHttpServer() {
1718
1778
  });
1719
1779
  const sessionMcp = new McpServer({ name: "exe-os", version: "1.3.0" });
1720
1780
  const gateState = getCachedLicenseGate();
1721
- const { wrapServerWithTelemetry } = await import("../tool-telemetry-NVPSPRYP.js");
1781
+ const { wrapServerWithTelemetry } = await import("../tool-telemetry-JL6NY3KP.js");
1722
1782
  const wrappedMcp = wrapServerWithTelemetry(sessionMcp);
1723
1783
  registerAllTools(wrappedMcp, gateState.license, gateState.hasKey);
1724
1784
  await sessionMcp.connect(transport);
@@ -1740,7 +1800,7 @@ async function startMcpHttpServer() {
1740
1800
  const toolName = parsedRequest?.method === "tools/call" ? parsedRequest.params?.name : void 0;
1741
1801
  if (toolName && agentRole) {
1742
1802
  try {
1743
- const { TOOL_CATEGORIES, TOOL_GATES } = await import("../tool-gates-SGFMDREY.js");
1803
+ const { TOOL_CATEGORIES, TOOL_GATES } = await import("../tool-gates-3IC7DK4R.js");
1744
1804
  const registerName = `register${toolName.charAt(0).toUpperCase()}${toolName.slice(1)}`;
1745
1805
  const category = TOOL_CATEGORIES[registerName] || TOOL_CATEGORIES[toolName];
1746
1806
  if (category) {
@@ -1905,7 +1965,7 @@ async function ensureStoreForPolling() {
1905
1965
  }
1906
1966
  }
1907
1967
  async function startReviewPolling() {
1908
- const polling = await import("../review-polling-DQCN4TNM.js");
1968
+ const polling = await import("../review-polling-DORNZ2KI.js");
1909
1969
  const state = {
1910
1970
  lastIntercomSent: /* @__PURE__ */ new Map(),
1911
1971
  lastNudgeSent: /* @__PURE__ */ new Map(),
@@ -1940,7 +2000,7 @@ function startSessionTTL() {
1940
2000
  if (!await ensureStoreForPolling()) return;
1941
2001
  try {
1942
2002
  const { getClient: getClient2 } = await import("./database.js");
1943
- const { checkSessionTTL, createSessionTTLRealDeps } = await import("../daemon-orchestration-BG4NPWOK.js");
2003
+ const { checkSessionTTL, createSessionTTLRealDeps } = await import("../daemon-orchestration-HFODCB52.js");
1944
2004
  const deps = createSessionTTLRealDeps(getClient2);
1945
2005
  const killed = await checkSessionTTL(deps);
1946
2006
  if (killed.length > 0) acted("session_ttl");
@@ -1969,7 +2029,7 @@ function startCooAutoRestart() {
1969
2029
  _cooLastSeen = Date.now();
1970
2030
  try {
1971
2031
  const { getClient: getClient2 } = await import("./database.js");
1972
- const { pollCoordinatorContextRestart, createCoordinatorRestartRealDeps } = await import("../daemon-orchestration-BG4NPWOK.js");
2032
+ const { pollCoordinatorContextRestart, createCoordinatorRestartRealDeps } = await import("../daemon-orchestration-HFODCB52.js");
1973
2033
  const deps = createCoordinatorRestartRealDeps(getClient2);
1974
2034
  const restarted = await pollCoordinatorContextRestart(deps, process.cwd());
1975
2035
  if (restarted.length > 0) {
@@ -1987,7 +2047,7 @@ function startCooAutoRestart() {
1987
2047
  if (Date.now() - _cooLastSeen < COO_RESTART_COOLDOWN_MS) return;
1988
2048
  process.stderr.write("[exed] COO session died \u2014 auto-restarting\n");
1989
2049
  acted("coo_restart");
1990
- const { pushNotifyAsync: pushNotifyAsync2 } = await import("../push-notifications-EOTMKJ6B.js");
2050
+ const { pushNotifyAsync: pushNotifyAsync2 } = await import("../push-notifications-KDYFOJRI.js");
1991
2051
  const { listSessions } = await import("./session-registry.js");
1992
2052
  const allSessions = listSessions();
1993
2053
  const lastCoo = allSessions.filter((s) => isExeSession(s.windowName)).sort((a, b) => (b.registeredAt ?? "").localeCompare(a.registeredAt ?? ""))[0];
@@ -2059,11 +2119,35 @@ function startIdleKill() {
2059
2119
  const tick = async () => {
2060
2120
  fired("idle_kill");
2061
2121
  if (!await ensureStoreForPolling()) return;
2122
+ try {
2123
+ const signalDir = path3.join(os2.homedir(), ".exe-os", "task-signals");
2124
+ if (existsSync3(signalDir)) {
2125
+ const files = (await import("fs")).readdirSync(signalDir).filter((f) => f.endsWith(".terminate"));
2126
+ for (const file of files) {
2127
+ const agentId = file.replace(".terminate", "");
2128
+ const signalPath = path3.join(signalDir, file);
2129
+ try {
2130
+ const sessions = execSyncNode("tmux list-sessions -F '#{session_name}' 2>/dev/null", { encoding: "utf8", timeout: 2e3 }).trim().split("\n");
2131
+ const match = sessions.find((s) => s.startsWith(`${agentId}-`) || s.startsWith(`${agentId}2-`) || s.startsWith(`${agentId}3-`));
2132
+ if (match) {
2133
+ execSyncNode(`tmux kill-session -t ${match} 2>/dev/null`, { timeout: 2e3 });
2134
+ process.stderr.write(`[exed] Auto-terminate: killed ${match} (agent ${agentId}, empty queue)
2135
+ `);
2136
+ acted("idle_kill");
2137
+ }
2138
+ unlinkSync(signalPath);
2139
+ } catch {
2140
+ unlinkSync(signalPath);
2141
+ }
2142
+ }
2143
+ }
2144
+ } catch {
2145
+ }
2062
2146
  try {
2063
2147
  const { loadConfigSync } = await import("./config.js");
2064
2148
  const cfg = loadConfigSync();
2065
2149
  const { getClient: getClient2 } = await import("./database.js");
2066
- const { pollIdleKill, createIdleKillRealDeps } = await import("../daemon-orchestration-BG4NPWOK.js");
2150
+ const { pollIdleKill, createIdleKillRealDeps } = await import("../daemon-orchestration-HFODCB52.js");
2067
2151
  const deps = createIdleKillRealDeps(
2068
2152
  getClient2,
2069
2153
  cfg.sessionLifecycle.idleKillIntercomAckWindowMs
@@ -2122,7 +2206,7 @@ function startConsolidation() {
2122
2206
  `);
2123
2207
  }
2124
2208
  try {
2125
- const { createBackup } = await import("../db-backup-E34JMBZD.js");
2209
+ const { createBackup } = await import("../db-backup-W56YOLMC.js");
2126
2210
  createBackup("pre-consolidation");
2127
2211
  } catch (e) {
2128
2212
  process.stderr.write("[exe-daemon] pre-consolidation backup: " + (e instanceof Error ? e.message : String(e)) + "\n");
@@ -2273,7 +2357,7 @@ function startGraphExtraction() {
2273
2357
  if (!await ensureStoreForPolling()) return;
2274
2358
  const { getClient: getClient2 } = await import("./database.js");
2275
2359
  const client = getClient2();
2276
- const { extractBatch } = await import("../graph-rag-2YLGRBW5.js");
2360
+ const { extractBatch } = await import("../graph-rag-G3EG5Q6L.js");
2277
2361
  const result = await extractBatch(client, 50, config.selfQueryModel);
2278
2362
  if (result.processed > 0) {
2279
2363
  acted("graph_extraction");
@@ -2413,7 +2497,7 @@ function startReflectionSweep() {
2413
2497
  for (const row of agents.rows) {
2414
2498
  const agentId = row.agent_id;
2415
2499
  try {
2416
- const { runReflection } = await import("../memory-reflection-Z7CT6JLY.js");
2500
+ const { runReflection } = await import("../memory-reflection-JQC4ZSUD.js");
2417
2501
  const result = await runReflection(agentId);
2418
2502
  totalInsights += result.contradictions + result.patterns + result.summaries;
2419
2503
  } catch (e) {
@@ -2442,7 +2526,7 @@ function startReflectionSweep() {
2442
2526
  if (memories > 100 && cards < memories * 0.1) {
2443
2527
  process.stderr.write(`[exed] Memory cards sparse (${cards} cards / ${memories} memories) \u2014 running backfill...
2444
2528
  `);
2445
- const { insertMemoryCardsForBatch } = await import("../memory-cards-OLE6MGO7.js");
2529
+ const { insertMemoryCardsForBatch } = await import("../memory-cards-UAQCO4QR.js");
2446
2530
  const batchSize = 500;
2447
2531
  let offset = 0;
2448
2532
  let totalCards = 0;
@@ -2485,7 +2569,7 @@ function startDatabaseBackup() {
2485
2569
  const tick = async () => {
2486
2570
  fired("db_backup");
2487
2571
  try {
2488
- const { createBackup, rotateBackups, hasBackupToday } = await import("../db-backup-E34JMBZD.js");
2572
+ const { createBackup, rotateBackups, hasBackupToday } = await import("../db-backup-W56YOLMC.js");
2489
2573
  if (hasBackupToday("daily")) return;
2490
2574
  const backupPath = createBackup("daily");
2491
2575
  if (backupPath) {
@@ -2547,7 +2631,7 @@ function startIntercomQueueDrain() {
2547
2631
  const tick = async () => {
2548
2632
  fired("intercom_queue_drain");
2549
2633
  try {
2550
- const { drainQueue } = await import("../intercom-queue-MMZT2MA2.js");
2634
+ const { drainQueue } = await import("../intercom-queue-K3DVKSPJ.js");
2551
2635
  const { isSessionBusy } = await import("./tmux-routing.js");
2552
2636
  const { sendIntercom: centralSendIntercom } = await import("./tmux-routing.js");
2553
2637
  const result = drainQueue(
@@ -2583,7 +2667,7 @@ function startOrphanReaper() {
2583
2667
  const tick = async () => {
2584
2668
  fired("orphan_reaper");
2585
2669
  try {
2586
- const { reapOrphanedMcpProcesses, createOrphanReaperRealDeps } = await import("../daemon-orchestration-BG4NPWOK.js");
2670
+ const { reapOrphanedMcpProcesses, createOrphanReaperRealDeps } = await import("../daemon-orchestration-HFODCB52.js");
2587
2671
  const deps = createOrphanReaperRealDeps();
2588
2672
  const reaped = await reapOrphanedMcpProcesses(deps);
2589
2673
  if (reaped.length > 0) acted("orphan_reaper");
@@ -2610,7 +2694,7 @@ function startAutoWake() {
2610
2694
  if (!await ensureStoreForPolling()) return;
2611
2695
  try {
2612
2696
  const { getClient: getClient2 } = await import("./database.js");
2613
- const { pollOrphanedTasks, createAutoWakeRealDeps } = await import("../daemon-orchestration-BG4NPWOK.js");
2697
+ const { pollOrphanedTasks, createAutoWakeRealDeps } = await import("../daemon-orchestration-HFODCB52.js");
2614
2698
  const deps = createAutoWakeRealDeps(getClient2, process.cwd());
2615
2699
  const woken = await pollOrphanedTasks(deps);
2616
2700
  if (woken.length > 0) acted("auto_wake");
@@ -2683,7 +2767,7 @@ function startStuckTaskRelease() {
2683
2767
  if (!await ensureStoreForPolling()) return;
2684
2768
  try {
2685
2769
  const { getClient: getClient2 } = await import("./database.js");
2686
- const { releaseStuckTasks, createStuckTaskRealDeps } = await import("../daemon-orchestration-BG4NPWOK.js");
2770
+ const { releaseStuckTasks, createStuckTaskRealDeps } = await import("../daemon-orchestration-HFODCB52.js");
2687
2771
  const deps = createStuckTaskRealDeps(getClient2);
2688
2772
  const released = await releaseStuckTasks(deps);
2689
2773
  if (released.length > 0) {
@@ -2704,19 +2788,19 @@ function startStuckTaskRelease() {
2704
2788
  var TOTAL_MEM_GB = os2.totalmem() / 1024 ** 3;
2705
2789
  var RSS_WARN_BYTES = Number(process.env.EXE_RSS_WARN_MB) * 1024 * 1024 || (TOTAL_MEM_GB >= 64 ? 6 * 1024 ** 3 : TOTAL_MEM_GB >= 32 ? 4 * 1024 ** 3 : TOTAL_MEM_GB >= 16 ? 2.5 * 1024 ** 3 : 1.5 * 1024 ** 3);
2706
2790
  var RSS_RESTART_BYTES = Number(process.env.EXE_RSS_RESTART_MB) * 1024 * 1024 || (TOTAL_MEM_GB >= 64 ? 8 * 1024 ** 3 : TOTAL_MEM_GB >= 32 ? 6 * 1024 ** 3 : TOTAL_MEM_GB >= 16 ? 4 * 1024 ** 3 : 3 * 1024 ** 3);
2707
- var RSS_CHECK_INTERVAL_MS = 30 * 1e3;
2791
+ var RSS_CHECK_INTERVAL_MS = 10 * 1e3;
2708
2792
  var _rssWarned = false;
2709
2793
  var TASK_ENFORCEMENT_INTERVAL_MS = 6e4;
2710
2794
  function startTaskEnforcementScanner() {
2711
2795
  const tick = async () => {
2712
2796
  fired("task_enforcement");
2713
2797
  try {
2714
- const { runTaskEnforcementTick } = await import("../task-enforcement-WJ3S6JTL.js");
2798
+ const { runTaskEnforcementTick } = await import("../task-enforcement-OYCQXBBC.js");
2715
2799
  const { getTransport } = await import("./transport.js");
2716
2800
  const { loadAgentConfig } = await import("./agent-config.js");
2717
2801
  const { getClient: getClient2 } = await import("./database.js");
2718
2802
  const { loadEmployeesSync } = await import("./employees.js");
2719
- const { sessionScopeFilter } = await import("../task-scope-V2CTRHG7.js");
2803
+ const { sessionScopeFilter } = await import("../task-scope-WWRNU2LU.js");
2720
2804
  await runTaskEnforcementTick({
2721
2805
  transport: getTransport(),
2722
2806
  agentConfig: loadAgentConfig(),
@@ -2852,7 +2936,7 @@ function startBackgroundJobGuardrails() {
2852
2936
  const tick = async () => {
2853
2937
  fired("background_job_guardrails");
2854
2938
  try {
2855
- const { enforceBackgroundJobGuardrails } = await import("../background-jobs-4N4JSZVZ.js");
2939
+ const { enforceBackgroundJobGuardrails } = await import("../background-jobs-IUB22CRF.js");
2856
2940
  const actions = enforceBackgroundJobGuardrails();
2857
2941
  if (actions.length > 0) {
2858
2942
  acted("background_job_guardrails");
@@ -3061,7 +3145,7 @@ function startAutoUpdateCheck() {
3061
3145
  const config = await loadConfig();
3062
3146
  const { checkIntervalMs, autoInstall } = config.autoUpdate;
3063
3147
  if (!autoInstall && !config.autoUpdate.checkOnBoot) return;
3064
- const { checkForUpdate } = await import("../update-check-ERUKV2G6.js");
3148
+ const { checkForUpdate } = await import("../update-check-MKHO7H6B.js");
3065
3149
  const packageRoot = new URL("../..", import.meta.url).pathname;
3066
3150
  const result = checkForUpdate(packageRoot);
3067
3151
  if (!result.updateAvailable) return;
@@ -3215,7 +3299,7 @@ try {
3215
3299
  fired("orphan_task_cleanup");
3216
3300
  try {
3217
3301
  if (!await ensureStoreForPolling()) return;
3218
- const { cleanOrphanedTaskFiles } = await import("../tasks-crud-W2XPUGKK.js");
3302
+ const { cleanOrphanedTaskFiles } = await import("../tasks-crud-75AUVZPO.js");
3219
3303
  const count = await cleanOrphanedTaskFiles();
3220
3304
  if (count > 0) {
3221
3305
  acted("orphan_task_cleanup");
@@ -3237,10 +3321,17 @@ try {
3237
3321
  message: "MCP HTTP server bound and ready",
3238
3322
  data: { port: 48739 }
3239
3323
  });
3240
- const { startToolTelemetryFlush } = await import("../tool-telemetry-NVPSPRYP.js");
3324
+ setInterval(async () => {
3325
+ try {
3326
+ const { cleanStaleDispatchAcks } = await import("../dispatch-ack-JYCKAWKZ.js");
3327
+ cleanStaleDispatchAcks();
3328
+ } catch {
3329
+ }
3330
+ }, 15 * 60 * 1e3);
3331
+ const { startToolTelemetryFlush } = await import("../tool-telemetry-JL6NY3KP.js");
3241
3332
  startToolTelemetryFlush();
3242
3333
  process.stderr.write("[exed] Tool telemetry started (flush every 5m)\n");
3243
- const { startProjectionWorker } = await import("../projection-worker-HSGE44JA.js");
3334
+ const { startProjectionWorker } = await import("../projection-worker-UY7R2EQJ.js");
3244
3335
  startProjectionWorker();
3245
3336
  try {
3246
3337
  const { loadConfig } = await import("./config.js");
@@ -1,4 +1,4 @@
1
- import "../chunk-PNKVD2UK.js";
1
+ import "../chunk-MLKGABMK.js";
2
2
 
3
3
  // src/lib/file-grep.ts
4
4
  import { execFileSync, spawnSync } from "child_process";
@@ -5,17 +5,17 @@ import {
5
5
  recentRecords,
6
6
  rrfMerge,
7
7
  rrfMergeMulti
8
- } from "../chunk-NQAZ2CP7.js";
9
- import "../chunk-7APRWURX.js";
10
- import "../chunk-D5MPHVWH.js";
8
+ } from "../chunk-AGFWOII2.js";
9
+ import "../chunk-Y6TS42WD.js";
10
+ import "../chunk-524VLFFY.js";
11
11
  import "../chunk-MP2AFCGL.js";
12
- import "../chunk-NA3MXUU6.js";
13
- import "../chunk-6BUUY7FG.js";
12
+ import "../chunk-TH6HTK2L.js";
13
+ import "../chunk-EOO32RJZ.js";
14
14
  import "../chunk-FXU7JOXK.js";
15
15
  import "../chunk-6D23UNXU.js";
16
- import "../chunk-KHV55ME4.js";
17
- import "../chunk-GCMT6RWI.js";
18
- import "../chunk-PNKVD2UK.js";
16
+ import "../chunk-TOWAZ5IV.js";
17
+ import "../chunk-LYH5HE24.js";
18
+ import "../chunk-MLKGABMK.js";
19
19
  export {
20
20
  estimateCardinality,
21
21
  hybridSearch,
@@ -1,4 +1,4 @@
1
- import "../chunk-PNKVD2UK.js";
1
+ import "../chunk-MLKGABMK.js";
2
2
 
3
3
  // src/lib/identity-templates.ts
4
4
  var PLAN_MODE_COMPAT = `
@@ -4,12 +4,12 @@ import {
4
4
  identityPath,
5
5
  listIdentities,
6
6
  updateIdentity
7
- } from "../chunk-NA3MXUU6.js";
8
- import "../chunk-6BUUY7FG.js";
7
+ } from "../chunk-TH6HTK2L.js";
8
+ import "../chunk-EOO32RJZ.js";
9
9
  import "../chunk-FXU7JOXK.js";
10
- import "../chunk-KHV55ME4.js";
11
- import "../chunk-GCMT6RWI.js";
12
- import "../chunk-PNKVD2UK.js";
10
+ import "../chunk-TOWAZ5IV.js";
11
+ import "../chunk-LYH5HE24.js";
12
+ import "../chunk-MLKGABMK.js";
13
13
  export {
14
14
  getIdentity,
15
15
  getIdentityInjection,
@@ -6,7 +6,7 @@ import {
6
6
  importMnemonic,
7
7
  setMasterKey
8
8
  } from "../chunk-6D23UNXU.js";
9
- import "../chunk-PNKVD2UK.js";
9
+ import "../chunk-MLKGABMK.js";
10
10
  export {
11
11
  deleteMasterKey,
12
12
  exportMnemonic,
@@ -13,10 +13,10 @@ import {
13
13
  startLicenseRevalidation,
14
14
  stopLicenseRevalidation,
15
15
  validateLicense
16
- } from "../chunk-I5VJNTDL.js";
17
- import "../chunk-KHV55ME4.js";
18
- import "../chunk-GCMT6RWI.js";
19
- import "../chunk-PNKVD2UK.js";
16
+ } from "../chunk-NNT2ZNMC.js";
17
+ import "../chunk-TOWAZ5IV.js";
18
+ import "../chunk-LYH5HE24.js";
19
+ import "../chunk-MLKGABMK.js";
20
20
  export {
21
21
  LICENSE_PUBLIC_KEY_PEM,
22
22
  PLAN_LIMITS,
@@ -12,8 +12,8 @@ import {
12
12
  retryPendingMessages,
13
13
  sendMessage,
14
14
  setWsClientSend
15
- } from "../chunk-4F56OUR7.js";
16
- import "../chunk-H4YONWQX.js";
15
+ } from "../chunk-LC53LVOT.js";
16
+ import "../chunk-ONMRBKAX.js";
17
17
  import "../chunk-LOQCOHEW.js";
18
18
  import "../chunk-TXSJ2L5O.js";
19
19
  import "../chunk-64WZEXXA.js";
@@ -21,21 +21,22 @@ import "../chunk-3TXOH3SJ.js";
21
21
  import "../chunk-RLCZBSUB.js";
22
22
  import "../chunk-GZIAQYGI.js";
23
23
  import "../chunk-ZQX6UOP6.js";
24
- import "../chunk-G3VR3MJI.js";
24
+ import "../chunk-KIUU4PNX.js";
25
25
  import "../chunk-NGP6LSV2.js";
26
- import "../chunk-XEA6DSLR.js";
26
+ import "../chunk-AERGE6GC.js";
27
+ import "../chunk-OPU3NYOO.js";
27
28
  import "../chunk-CVYC6DUW.js";
28
29
  import "../chunk-GJV3WDWM.js";
29
30
  import "../chunk-MP2AFCGL.js";
30
- import "../chunk-Y2VVTK2E.js";
31
+ import "../chunk-DTLASDQM.js";
31
32
  import "../chunk-HYZV25LY.js";
32
- import "../chunk-NA3MXUU6.js";
33
- import "../chunk-6BUUY7FG.js";
33
+ import "../chunk-TH6HTK2L.js";
34
+ import "../chunk-EOO32RJZ.js";
34
35
  import "../chunk-FXU7JOXK.js";
35
- import "../chunk-I5VJNTDL.js";
36
- import "../chunk-KHV55ME4.js";
37
- import "../chunk-GCMT6RWI.js";
38
- import "../chunk-PNKVD2UK.js";
36
+ import "../chunk-NNT2ZNMC.js";
37
+ import "../chunk-TOWAZ5IV.js";
38
+ import "../chunk-LYH5HE24.js";
39
+ import "../chunk-MLKGABMK.js";
39
40
  export {
40
41
  deliverLocalMessage,
41
42
  getFailedMessages,