@askexenow/exe-os 0.9.340 → 0.9.342

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 (417) hide show
  1. package/README.md +159 -196
  2. package/deploy/compose/.env.customer.example +1 -0
  3. package/deploy/compose/.env.example +1 -0
  4. package/deploy/compose/docker-compose.yml +13 -4
  5. package/deploy/compose/generate-env.ts +4 -0
  6. package/dist/{active-agent-EC6M7KTX.js → active-agent-PVGE57FY.js} +5 -5
  7. package/dist/{active-agent-WHIUCHLA.js → active-agent-TNIO6IY3.js} +5 -5
  8. package/dist/{agentic-ontology-RNSXGXW4.js → agentic-ontology-3FXYMHKW.js} +1 -1
  9. package/dist/{backfill-gate-J7UXFNXU.js → backfill-gate-65LSYVE5.js} +3 -3
  10. package/dist/{backfill-metadata-MFY6BHKE.js → backfill-metadata-ZSMZC45J.js} +8 -8
  11. package/dist/{background-jobs-STURKDCS.js → background-jobs-EXR5RVGG.js} +3 -3
  12. package/dist/backup-verify-3Y2FHGZU.js +425 -0
  13. package/dist/{behaviors-HLZUJSMP.js → behaviors-KYRB3NGJ.js} +9 -9
  14. package/dist/bin/age-ontology-load.js +3 -3
  15. package/dist/bin/agentic-ontology-backfill.js +10 -10
  16. package/dist/bin/agentic-reflection-backfill.js +11 -11
  17. package/dist/bin/agentic-semantic-label.js +10 -10
  18. package/dist/bin/backfill-conversations.js +10 -10
  19. package/dist/bin/backfill-responses.js +10 -10
  20. package/dist/bin/backfill-vectors.js +14 -14
  21. package/dist/bin/bulk-sync-postgres.js +19 -19
  22. package/dist/bin/cc-doctor.js +10 -8
  23. package/dist/bin/cleanup-stale-review-tasks.js +26 -24
  24. package/dist/bin/cli.js +111 -25
  25. package/dist/bin/customer-readiness.js +1 -1
  26. package/dist/bin/deferred-daemon-restart.js +97 -90
  27. package/dist/bin/exe-agent-config.js +9 -8
  28. package/dist/bin/exe-agent.js +20 -20
  29. package/dist/bin/exe-assign.js +12 -12
  30. package/dist/bin/exe-boot.js +201 -68
  31. package/dist/bin/exe-call.js +7 -7
  32. package/dist/bin/exe-cloud.js +20 -20
  33. package/dist/bin/exe-config-dump.js +9 -8
  34. package/dist/bin/exe-dispatch.js +26 -24
  35. package/dist/bin/exe-doctor.js +10 -6
  36. package/dist/bin/exe-export-behaviors.js +11 -11
  37. package/dist/bin/exe-forget.js +12 -10
  38. package/dist/bin/exe-gateway.js +15 -10
  39. package/dist/bin/exe-grant.js +5 -5
  40. package/dist/bin/exe-healthcheck.js +14 -8
  41. package/dist/bin/exe-heartbeat.js +29 -28
  42. package/dist/bin/exe-kill.js +31 -29
  43. package/dist/bin/exe-launch-agent.js +129 -68
  44. package/dist/bin/exe-memory-reads.js +257 -0
  45. package/dist/bin/exe-new-employee.js +12 -11
  46. package/dist/bin/exe-pending-messages.js +27 -25
  47. package/dist/bin/exe-pending-notifications.js +26 -24
  48. package/dist/bin/exe-pending-reviews.js +26 -24
  49. package/dist/bin/exe-rename.js +7 -7
  50. package/dist/bin/exe-review.js +30 -28
  51. package/dist/bin/exe-search.js +11 -9
  52. package/dist/bin/exe-session-cleanup.js +116 -86
  53. package/dist/bin/exe-settings.js +24 -23
  54. package/dist/bin/exe-start-codex.js +163 -41
  55. package/dist/bin/exe-start-opencode.js +15 -15
  56. package/dist/bin/exe-status.js +27 -25
  57. package/dist/bin/exe-support.js +5 -5
  58. package/dist/bin/exe-team.js +5 -5
  59. package/dist/bin/exe-timers.js +32 -213
  60. package/dist/bin/exe-watchdog.js +6 -5
  61. package/dist/bin/git-sweep.js +27 -25
  62. package/dist/bin/graph-backfill.js +9 -9
  63. package/dist/bin/graph-export.js +9 -9
  64. package/dist/bin/import-history.js +11 -11
  65. package/dist/bin/install.js +102 -95
  66. package/dist/bin/intercom-check.js +4 -4
  67. package/dist/bin/mcp-sessions.js +2 -2
  68. package/dist/bin/orchestration-metrics.js +6 -6
  69. package/dist/bin/postgres-agentic-reflection-backfill.js +5 -5
  70. package/dist/bin/postgres-agentic-semantic-backfill.js +7 -7
  71. package/dist/bin/pre-publish.js +5 -3
  72. package/dist/bin/reconcile-backlog.js +484 -0
  73. package/dist/bin/registry-proxy.js +1 -1
  74. package/dist/bin/scan-tasks.js +26 -24
  75. package/dist/bin/setup.js +6 -5
  76. package/dist/bin/shard-migrate.js +9 -9
  77. package/dist/bin/stack-update.js +15 -9
  78. package/dist/bin/update.js +1 -1
  79. package/dist/bin/vps-health-gate.js +1 -1
  80. package/dist/boot-generation-BL2ISK4U.js +22 -0
  81. package/dist/boot-review-sections-DBMQJT5N.js +107 -0
  82. package/dist/branch-hygiene-TZWK6QCF.js +224 -0
  83. package/dist/{branding-JTEOF4ZV.js → branding-DVXBGVDH.js} +3 -3
  84. package/dist/{browser-session-store-CXQMOSEC.js → browser-session-store-B2NR3LIX.js} +2 -1
  85. package/dist/{capability-cards-YOKVMMOL.js → capability-cards-DN5UIKVN.js} +4 -4
  86. package/dist/{capacity-monitor-S54IOWRL.js → capacity-monitor-ZG5GGFR2.js} +27 -25
  87. package/dist/{catchup-brief-DRRQCMKA.js → catchup-brief-D6HH6DWS.js} +32 -29
  88. package/dist/{support-outbox-MGUVVGHT.js → chunk-25X4JD2V.js} +28 -12
  89. package/dist/{chunk-IYB2NIW3.js → chunk-2KZNGDSW.js} +1 -1
  90. package/dist/{chunk-FUIIVSW6.js → chunk-2WAVZ5UJ.js} +1 -1
  91. package/dist/{chunk-K5WFKEXQ.js → chunk-2ZYO73KO.js} +4 -3
  92. package/dist/{chunk-CLAYNAXC.js → chunk-3EUMUSLE.js} +1 -1
  93. package/dist/{chunk-BVV6NHKQ.js → chunk-3SW4OEHB.js} +5 -5
  94. package/dist/{task-enforcement-VI7L43DC.js → chunk-4CMVFVFC.js} +173 -69
  95. package/dist/{chunk-BU2QQWBQ.js → chunk-4J4PMPXZ.js} +3 -2
  96. package/dist/{chunk-JD5S5AAV.js → chunk-4N2NRGCM.js} +2 -2
  97. package/dist/chunk-4QCFFW2H.js +378 -0
  98. package/dist/{chunk-7EA7LYW4.js → chunk-4VSV5P4D.js} +4 -4
  99. package/dist/{chunk-52KNOQMK.js → chunk-4ZCD2UWW.js} +39 -10
  100. package/dist/{chunk-DZ6OQM67.js → chunk-5ERDIOV3.js} +2 -2
  101. package/dist/chunk-5H47VHB7.js +30 -0
  102. package/dist/{chunk-UCQITDLM.js → chunk-5TY4FPH6.js} +1 -1
  103. package/dist/{chunk-R44Z32O2.js → chunk-6CH3TPHR.js} +2 -2
  104. package/dist/{chunk-WYLV4S6A.js → chunk-6WQ3NNCE.js} +3 -3
  105. package/dist/{chunk-HHIBOU3P.js → chunk-6XWTQUO4.js} +1 -1
  106. package/dist/chunk-76CJBM36.js +88 -0
  107. package/dist/{chunk-H2L4PHGH.js → chunk-7CTRGNLW.js} +2 -2
  108. package/dist/{chunk-XUKPALWT.js → chunk-7V4JADD6.js} +2 -2
  109. package/dist/{chunk-RMOBQ6A5.js → chunk-AD2VCHSS.js} +1 -1
  110. package/dist/{chunk-QXSBB26A.js → chunk-AJYCFKJR.js} +1 -1
  111. package/dist/chunk-AM7S2TY6.js +54 -0
  112. package/dist/{chunk-HEPR6QTL.js → chunk-AOHXREB7.js} +334 -66
  113. package/dist/{chunk-FNZR3B7U.js → chunk-ASAFVDVR.js} +1 -1
  114. package/dist/{chunk-TALWBVZE.js → chunk-BUCXNV32.js} +1 -1
  115. package/dist/{chunk-SHIICYJW.js → chunk-BYTDMAGB.js} +4 -2
  116. package/dist/{chunk-32SXNM3G.js → chunk-C5QAPURN.js} +1 -1
  117. package/dist/{chunk-XCTGRD4S.js → chunk-CE7F6RHG.js} +587 -77
  118. package/dist/{chunk-7WPOJDTA.js → chunk-CNVBKDEY.js} +21 -15
  119. package/dist/{chunk-KPIN44GZ.js → chunk-CWXVH7WV.js} +1 -1
  120. package/dist/chunk-D74XYSA3.js +621 -0
  121. package/dist/{chunk-A47MXY2I.js → chunk-EQHQF5IM.js} +50 -32
  122. package/dist/{chunk-AOO77BDE.js → chunk-EUS4QUKP.js} +1 -1
  123. package/dist/{chunk-RLRT2BVM.js → chunk-EV46QTD3.js} +1 -1
  124. package/dist/{chunk-PAEXYFMY.js → chunk-F27XXN6C.js} +1 -1
  125. package/dist/{chunk-XQNNB5GY.js → chunk-F55P3H4S.js} +37 -2
  126. package/dist/{chunk-MWZFF3Q7.js → chunk-F5O7V7UK.js} +1 -1
  127. package/dist/{chunk-LMZISHSJ.js → chunk-FPFPLPUY.js} +6 -6
  128. package/dist/{chunk-7TS64TBG.js → chunk-G4RGKBCA.js} +8 -3
  129. package/dist/{chunk-4IYSBPX3.js → chunk-G5T6KDG4.js} +1 -1
  130. package/dist/{chunk-7WDXEKUL.js → chunk-GBTTBXAF.js} +4 -4
  131. package/dist/{chunk-6MRWJMI5.js → chunk-GDIJE6D7.js} +1 -1
  132. package/dist/{chunk-AVKXCSBI.js → chunk-GG5NDQNN.js} +2 -2
  133. package/dist/{chunk-I3XKO3KQ.js → chunk-GJ26DULE.js} +2 -2
  134. package/dist/chunk-GL57PO3K.js +104 -0
  135. package/dist/chunk-GWDSB25T.js +6 -0
  136. package/dist/{chunk-F55JF43M.js → chunk-H6BV5TKD.js} +39 -24
  137. package/dist/{chunk-HCJCW7X4.js → chunk-H7I47RS5.js} +34 -1
  138. package/dist/{chunk-65SVQELL.js → chunk-HA5R6USD.js} +31 -5
  139. package/dist/{chunk-VJHUVFIW.js → chunk-HAF2DJYV.js} +3 -3
  140. package/dist/chunk-HJ447YER.js +224 -0
  141. package/dist/chunk-HV4KESRY.js +395 -0
  142. package/dist/{chunk-B76TSEP3.js → chunk-I26FWCSP.js} +216 -9
  143. package/dist/{chunk-X2FHTDIU.js → chunk-IBYL4DHM.js} +1 -1
  144. package/dist/{chunk-JCBKARSK.js → chunk-IOEUAQWP.js} +1 -1
  145. package/dist/{chunk-MW2GJJ53.js → chunk-JGIPOUIK.js} +3 -3
  146. package/dist/{chunk-2233TQCA.js → chunk-JLZ4RYSD.js} +2 -2
  147. package/dist/{chunk-Q7L6G6KV.js → chunk-JMYHW3AL.js} +2 -2
  148. package/dist/{chunk-OJTJYEMX.js → chunk-JPUZPAAF.js} +4 -4
  149. package/dist/{chunk-XWHE4LZK.js → chunk-JTBIS4R5.js} +21 -2
  150. package/dist/{chunk-5Z5NATNS.js → chunk-K7KFGDWF.js} +1 -1
  151. package/dist/{chunk-UIV2WPBT.js → chunk-KGWRTRKC.js} +2 -2
  152. package/dist/{chunk-KTPG4XKI.js → chunk-KP3U5QGJ.js} +1 -1
  153. package/dist/{chunk-TLYAEISW.js → chunk-KW2SD2FL.js} +2 -2
  154. package/dist/{chunk-X7H3HMFH.js → chunk-KWZMQACA.js} +11 -7
  155. package/dist/{chunk-OFX5B2S7.js → chunk-L2R3LN2P.js} +1 -1
  156. package/dist/{chunk-T4KZ2Z2N.js → chunk-L4A5DL6Z.js} +3 -3
  157. package/dist/{chunk-X425OEYF.js → chunk-LU2FALL6.js} +3 -3
  158. package/dist/{chunk-6M36JFFD.js → chunk-MKYFAKDW.js} +4 -4
  159. package/dist/{chunk-I5RLNOFK.js → chunk-MOPUCPXK.js} +12 -4
  160. package/dist/{chunk-ZIVEA3NB.js → chunk-MR6LHP4F.js} +1 -1
  161. package/dist/chunk-MVYB76QG.js +341 -0
  162. package/dist/{chunk-2SG2UGCH.js → chunk-MZM6EJCU.js} +4 -4
  163. package/dist/{chunk-ZREGOV2Q.js → chunk-N7QJKQMX.js} +258 -14
  164. package/dist/{chunk-QLFRCA6I.js → chunk-NBZL5CGA.js} +93 -12
  165. package/dist/{chunk-QFPTDSY2.js → chunk-NN2B2QKU.js} +1 -1
  166. package/dist/chunk-NX5INHHG.js +40 -0
  167. package/dist/{chunk-B75BOKEI.js → chunk-NXUSDL37.js} +2 -2
  168. package/dist/{chunk-TPHCZDE3.js → chunk-O5V57XYE.js} +1 -1
  169. package/dist/chunk-O7LWR36Z.js +269 -0
  170. package/dist/{chunk-ATOU6CYR.js → chunk-OLMQ4UOF.js} +57 -11
  171. package/dist/{chunk-6HBURYON.js → chunk-OTF44GXL.js} +4 -4
  172. package/dist/{chunk-DILD54TU.js → chunk-OZEBAGKR.js} +277 -137
  173. package/dist/{chunk-DADMPMYX.js → chunk-P5HIWY2E.js} +1 -1
  174. package/dist/{chunk-EIF2LQHZ.js → chunk-PDWS3E22.js} +55 -4
  175. package/dist/{chunk-KTY7I7UH.js → chunk-PPCDBE6Z.js} +1 -1
  176. package/dist/{chunk-XACL67CS.js → chunk-PQIDGXSG.js} +13 -4
  177. package/dist/chunk-PWUFMX75.js +186 -0
  178. package/dist/{chunk-UPWE5NOG.js → chunk-QDGZJ653.js} +3 -3
  179. package/dist/{chunk-MQRFKSLI.js → chunk-QOO5RW3K.js} +6 -5
  180. package/dist/{chunk-KCC5A7YL.js → chunk-QQ4E2RYW.js} +95 -18
  181. package/dist/{chunk-BPC5LZ6Y.js → chunk-QRYVCDWS.js} +2 -2
  182. package/dist/{chunk-Z42MXYWW.js → chunk-QWVXN224.js} +110 -28
  183. package/dist/{chunk-542EWGY3.js → chunk-QYZJHTNE.js} +26 -27
  184. package/dist/{chunk-I7Z6KTGF.js → chunk-R2NN3JKH.js} +43 -6
  185. package/dist/{chunk-3OBWSCJN.js → chunk-RACAOE2Z.js} +14 -14
  186. package/dist/{chunk-5RACW3LX.js → chunk-RAXVPNMR.js} +1 -1
  187. package/dist/{chunk-2HZY3ECT.js → chunk-RHWZUUS4.js} +6 -6
  188. package/dist/{chunk-RNAYCUNM.js → chunk-S3THSOWV.js} +1 -1
  189. package/dist/{chunk-W7DHFGCB.js → chunk-S7QUM2UK.js} +2 -2
  190. package/dist/{chunk-SSTLTIF3.js → chunk-SKGMF2SO.js} +25 -2
  191. package/dist/{chunk-GN45PBWI.js → chunk-SQKXKV2Y.js} +2 -2
  192. package/dist/{chunk-QZLIZAS7.js → chunk-TLT7NZCW.js} +4 -4
  193. package/dist/chunk-TTCUG2CF.js +91 -0
  194. package/dist/chunk-UEA3LXOB.js +40 -0
  195. package/dist/{chunk-DRCRZIIJ.js → chunk-UNXQBELK.js} +1 -1
  196. package/dist/{chunk-PLRIJALF.js → chunk-UP75Z5X7.js} +921 -176
  197. package/dist/{chunk-TNJRWUCE.js → chunk-USSB56WK.js} +1 -1
  198. package/dist/{chunk-KMBEL7VB.js → chunk-UUEKJDK6.js} +90 -10
  199. package/dist/{chunk-XJI7Z6LZ.js → chunk-UUQBZPJJ.js} +1 -1
  200. package/dist/{chunk-RRWDYOQS.js → chunk-V3EEVY4L.js} +1 -1
  201. package/dist/{chunk-N5I7RL3I.js → chunk-VPZHJCKW.js} +2 -2
  202. package/dist/chunk-VRAQTFD6.js +265 -0
  203. package/dist/{chunk-H37HHX3E.js → chunk-VSRPS3J7.js} +14 -14
  204. package/dist/{chunk-5ZNY7IZI.js → chunk-WMESXBJM.js} +37 -3
  205. package/dist/{chunk-54QCG45Y.js → chunk-WOYADZF5.js} +56 -5
  206. package/dist/{chunk-7Y5UDEVM.js → chunk-WZHZCDDO.js} +6 -5
  207. package/dist/{chunk-3NGZ4PL7.js → chunk-X2Q5NLUL.js} +11 -2
  208. package/dist/{chunk-YE7NH53A.js → chunk-X33NYQYJ.js} +2 -2
  209. package/dist/{chunk-UXBD22CD.js → chunk-XHK3FS3W.js} +3 -2
  210. package/dist/{chunk-3QDSCJ3F.js → chunk-XZXBB3TN.js} +2 -2
  211. package/dist/{chunk-JSKBHUR7.js → chunk-YCANDMI2.js} +2 -2
  212. package/dist/{chunk-JBSCL2XT.js → chunk-YLXTKI6M.js} +1 -1
  213. package/dist/{chunk-G7WO77Z2.js → chunk-YTCFACP4.js} +812 -896
  214. package/dist/{chunk-LTVCRHHD.js → chunk-Z6RSN7KS.js} +7 -6
  215. package/dist/{cleanup-graph-garbage-KUABW6LS.js → cleanup-graph-garbage-XWUFAMFO.js} +6 -6
  216. package/dist/{co-activation-XMPHKGHR.js → co-activation-ZCHPLLP6.js} +4 -4
  217. package/dist/{co-occurrence-SHKSJ6CV.js → co-occurrence-KG3LKALN.js} +4 -4
  218. package/dist/{code-context-index-EXXDY3QZ.js → code-context-index-WSOJQ72R.js} +5 -5
  219. package/dist/{content-extractor-RHITF2KM.js → content-extractor-NXYNEF5K.js} +2 -2
  220. package/dist/{conversation-wiki-populator-WU4HEQ7C.js → conversation-wiki-populator-WQN3IUU6.js} +1 -1
  221. package/dist/{crdt-sync-UJELKSNX.js → crdt-sync-4PFGPZXV.js} +8 -1
  222. package/dist/{crm-webhook-HHNBS7LY.js → crm-webhook-II7Z45Q6.js} +2 -2
  223. package/dist/cto-delegation-gate-JWWOJPNC.js +669 -0
  224. package/dist/{daemon-auth-7IFSV5FG.js → daemon-auth-3FEAHFWC.js} +5 -3
  225. package/dist/{daemon-orchestration-7QB6QOXT.js → daemon-orchestration-FX4XZDR5.js} +46 -27
  226. package/dist/{daemon-ready-5XI5BIJD.js → daemon-ready-4JTSFKAY.js} +1 -1
  227. package/dist/{daemon-ready-signal-E7VMIQ6I.js → daemon-ready-signal-LPAZWQOV.js} +5 -1
  228. package/dist/daemon-restart-circuit-breaker-PEGEIP6H.js +35 -0
  229. package/dist/daemon-timer-report-NM44WQRH.js +25 -0
  230. package/dist/{db-backup-DLD4QZBO.js → db-backup-W2QFSYQC.js} +15 -5
  231. package/dist/{db-restore-events-JVEEP52Z.js → db-restore-events-MQ2DBGEQ.js} +2 -2
  232. package/dist/dispatch-ack-VYH3ONSS.js +27 -0
  233. package/dist/{doc-graph-extractor-3TRLGD7M.js → doc-graph-extractor-F6ODFIID.js} +4 -4
  234. package/dist/{documents-FHIBU7KJ.js → documents-23WX2FPQ.js} +12 -12
  235. package/dist/dreaming-NWD22UQ5.js +46 -0
  236. package/dist/{exe-drift-KY2KHZEL.js → exe-drift-CW72FBGE.js} +5 -5
  237. package/dist/{exe-export-SP6G3QF6.js → exe-export-AUJ7CV7G.js} +11 -11
  238. package/dist/{exe-import-KJU7FBVQ.js → exe-import-JX4I52VE.js} +11 -11
  239. package/dist/{exe-key-M6TYHNUW.js → exe-key-2N6LY2BU.js} +241 -226
  240. package/dist/{exe-org-BGZNNE4H.js → exe-org-X4CSNCKS.js} +3 -3
  241. package/dist/{exe-snapshot-ZNPGUKRZ.js → exe-snapshot-XZ7FVCYZ.js} +31 -29
  242. package/dist/{fast-db-init-QQB6IVWV.js → fast-db-init-4CWHSOOR.js} +1 -1
  243. package/dist/{founder-context-PQR3BUS7.js → founder-context-7L3CFPYN.js} +4 -4
  244. package/dist/gateway/index.js +14 -14
  245. package/dist/{gateway-client-GRBOJQYC.js → gateway-client-7LMZKHTH.js} +1 -1
  246. package/dist/git-main-guard-UZP3KXYI.js +39 -0
  247. package/dist/{git-staleness-UGB5J3K7.js → git-staleness-CI2R4QOJ.js} +4 -4
  248. package/dist/{global-procedures-R7KRREEK.js → global-procedures-XQX3LUH6.js} +6 -6
  249. package/dist/{graph-auto-extract-LKIQ57PL.js → graph-auto-extract-OURWMGBS.js} +4 -4
  250. package/dist/{hook-integrity-WURH6DS3.js → hook-integrity-XY47IM7G.js} +1 -1
  251. package/dist/hook-prefetch-PHRRKY4C.js +137 -0
  252. package/dist/hooks/bug-report-worker.js +32 -28
  253. package/dist/hooks/codex-stop-task-finalizer.js +32 -28
  254. package/dist/hooks/commit-complete.js +29 -27
  255. package/dist/hooks/error-recall.js +12 -11
  256. package/dist/hooks/exe-heartbeat-hook.js +6 -6
  257. package/dist/hooks/ingest-worker.js +11 -11
  258. package/dist/hooks/ingest.js +18 -18
  259. package/dist/hooks/instructions-loaded.js +7 -7
  260. package/dist/hooks/manifest.json +20 -20
  261. package/dist/hooks/notification.js +7 -7
  262. package/dist/hooks/post-compact.js +28 -26
  263. package/dist/hooks/post-tool-combined.js +12 -12
  264. package/dist/hooks/pre-compact.js +29 -27
  265. package/dist/hooks/pre-tool-use.js +180 -47
  266. package/dist/hooks/prompt-submit.js +324 -273
  267. package/dist/hooks/session-end.js +35 -33
  268. package/dist/hooks/session-start.js +28 -21
  269. package/dist/hooks/stop.js +35 -33
  270. package/dist/hooks/subagent-stop.js +28 -26
  271. package/dist/hooks/summary-worker.js +36 -34
  272. package/dist/index.js +39 -37
  273. package/dist/{installer-SB2N5NKH.js → installer-G3JAO3NT.js} +9 -9
  274. package/dist/{installer-MZWWBXM6.js → installer-JND3RJ6Q.js} +9 -9
  275. package/dist/{installer-MNPXDLGG.js → installer-L7EVH5U5.js} +9 -9
  276. package/dist/{intercom-queue-VU2G6F5R.js → intercom-queue-ZFEQALR3.js} +25 -23
  277. package/dist/{key-backup-status-TNEHXA2X.js → key-backup-status-LOSMVATJ.js} +2 -2
  278. package/dist/lib/agent-config.js +4 -3
  279. package/dist/lib/cloud-sync.js +19 -19
  280. package/dist/lib/config.js +2 -2
  281. package/dist/lib/consolidation.js +9 -9
  282. package/dist/lib/crypto.js +3 -3
  283. package/dist/lib/database.js +6 -4
  284. package/dist/lib/db-daemon-client.js +5 -5
  285. package/dist/lib/db-read-worker-client.js +9 -3
  286. package/dist/lib/db.js +6 -4
  287. package/dist/lib/device-registry.js +3 -3
  288. package/dist/lib/embed-worker.js +2 -2
  289. package/dist/lib/embedder.js +5 -5
  290. package/dist/lib/employee-templates.js +7 -7
  291. package/dist/lib/employees.js +10 -4
  292. package/dist/lib/exe-daemon-client.js +4 -4
  293. package/dist/lib/exe-daemon.js +651 -158
  294. package/dist/lib/hybrid-search.js +11 -9
  295. package/dist/lib/identity.js +4 -4
  296. package/dist/lib/keychain.js +1 -1
  297. package/dist/lib/license.js +4 -4
  298. package/dist/lib/messaging.js +28 -24
  299. package/dist/lib/post-tool-memory.js +3 -3
  300. package/dist/lib/registry-proxy.js +1 -1
  301. package/dist/lib/reminders.js +15 -7
  302. package/dist/lib/schedules.js +9 -9
  303. package/dist/lib/session-registry.js +6 -6
  304. package/dist/lib/skill-learning.js +10 -10
  305. package/dist/lib/status-brief.js +4 -4
  306. package/dist/lib/store.js +8 -8
  307. package/dist/lib/task-router.js +5 -5
  308. package/dist/lib/tasks.js +29 -25
  309. package/dist/lib/tmux-routing.js +56 -25
  310. package/dist/lib/tmux-status.js +9 -3
  311. package/dist/lib/tmux-transport.js +1 -1
  312. package/dist/lib/token-spend.js +5 -5
  313. package/dist/lib/transport.js +2 -2
  314. package/dist/lib/ws-client.js +1 -1
  315. package/dist/{license-gate-BYDMFMFT.js → license-gate-QTRQHV4F.js} +5 -5
  316. package/dist/{license-sync-N3RNYVP2.js → license-sync-N3UJFWAW.js} +4 -4
  317. package/dist/mcp/register-tools.js +96 -89
  318. package/dist/mcp/server.js +98 -91
  319. package/dist/mcp/tools/complete-reminder.js +6 -6
  320. package/dist/mcp/tools/create-reminder.js +6 -6
  321. package/dist/mcp/tools/create-task.js +37 -28
  322. package/dist/mcp/tools/deactivate-behavior.js +11 -11
  323. package/dist/mcp/tools/list-reminders.js +6 -6
  324. package/dist/mcp/tools/list-tasks.js +35 -29
  325. package/dist/mcp/tools/send-message.js +28 -26
  326. package/dist/mcp/tools/update-task.js +34 -28
  327. package/dist/{mcp-http-config-EMAVS2JI.js → mcp-http-config-BDL36JZ3.js} +6 -6
  328. package/dist/{mcp-port-config-FFAMMLLE.js → mcp-port-config-6HYY6J7K.js} +2 -2
  329. package/dist/mcp-session-identity-T7H2EKFQ.js +177 -0
  330. package/dist/{memory-cards-TQRLZI4D.js → memory-cards-ZRDW7QBX.js} +8 -8
  331. package/dist/{memory-graph-extractor-IWGNVAFU.js → memory-graph-extractor-QLXDMHRS.js} +5 -5
  332. package/dist/{memory-poisoning-defense-T4ITBGSG.js → memory-poisoning-defense-HJTXYCWH.js} +4 -4
  333. package/dist/{memory-pressure-watchdog-RRIAXPXQ.js → memory-pressure-watchdog-HN5X7AVN.js} +76 -37
  334. package/dist/{memory-queue-X2CSEAKE.js → memory-queue-2UOOF27L.js} +5 -3
  335. package/dist/{memory-queue-client-BKQHTYTH.js → memory-queue-client-O5U6F6XP.js} +6 -6
  336. package/dist/{memory-reflection-6N4J2FL7.js → memory-reflection-WVNFBJAA.js} +4 -4
  337. package/dist/{monitor-grants-RZOVSYVO.js → monitor-grants-E3ELDEWD.js} +5 -5
  338. package/dist/{monitor-identity-MOXISYNG.js → monitor-identity-GLFZSEAH.js} +2 -2
  339. package/dist/notification-ledger-SZEPGJQ7.js +409 -0
  340. package/dist/{notifications-KONB3C62.js → notifications-4UT53CDG.js} +25 -23
  341. package/dist/{orchestration-events-5SIJOE4H.js → orchestration-events-WV4NWKZH.js} +5 -5
  342. package/dist/{orchestration-phase-CXRCBCK7.js → orchestration-phase-AWBXPO52.js} +3 -3
  343. package/dist/orchestrator-UAC3RW2T.js +47 -0
  344. package/dist/{pipeline-router-O6HU7DKH.js → pipeline-router-LM53NMWJ.js} +5 -5
  345. package/dist/{plan-limits-GRNBOBB3.js → plan-limits-2FEY2GOS.js} +7 -7
  346. package/dist/platform-procedures-X5DFJFV7.js +13 -0
  347. package/dist/{preferences-TYTGDXQZ.js → preferences-TWIXZBKS.js} +2 -2
  348. package/dist/{project-boot-SD7GM24K.js → project-boot-4NUH5FRU.js} +2 -2
  349. package/dist/{projection-worker-ZVOFHTXT.js → projection-worker-FZ7YSN3G.js} +5 -5
  350. package/dist/{prospective-memory-W6S67LZZ.js → prospective-memory-6D2ASWM3.js} +4 -4
  351. package/dist/{push-notifications-W5JRXLKJ.js → push-notifications-U6FIBQRW.js} +3 -3
  352. package/dist/{reranker-QATGTAPC.js → reranker-GYYRPANK.js} +3 -3
  353. package/dist/{retrieval-health-TWHKYCRK.js → retrieval-health-4Z242P3B.js} +1 -1
  354. package/dist/{review-polling-PCMD5BFN.js → review-polling-HXAFJZDA.js} +26 -24
  355. package/dist/runtime/index.js +37 -35
  356. package/dist/{session-events-3LCVQEL7.js → session-events-O3BV56ZX.js} +26 -24
  357. package/dist/{session-kill-telemetry-CZSPN5V6.js → session-kill-telemetry-AELE4JDK.js} +26 -24
  358. package/dist/session-mcp-config-YKNXG5DW.js +50 -0
  359. package/dist/{session-scope-CFHVSVAQ.js → session-scope-5EAPUT45.js} +25 -23
  360. package/dist/setup-wizard-NB6R4QVS.js +14 -0
  361. package/dist/{shard-manager-MBWQEYNG.js → shard-manager-35PWFR3B.js} +3 -3
  362. package/dist/{skill-refinement-74T6VDFM.js → skill-refinement-DVSYXBBP.js} +5 -5
  363. package/dist/stack-promote-RSOWO6EY.js +130 -0
  364. package/dist/{stack-release-XXMV7SPX.js → stack-release-HGFFFCGC.js} +112 -22
  365. package/dist/{stack-update-E2TKHHSQ.js → stack-update-ATCJFOEK.js} +7 -5
  366. package/dist/{steward-gate-WT7WXQIE.js → steward-gate-3GQ5XKMJ.js} +5 -5
  367. package/dist/support-inbox-4L62P4EP.js +33 -0
  368. package/dist/support-outbox-WHGPUYL2.js +16 -0
  369. package/dist/task-enforcement-IPIZX2MM.js +90 -0
  370. package/dist/{task-scope-CQEG5SSJ.js → task-scope-FOIW25HR.js} +27 -23
  371. package/dist/{tasks-crud-UGK5A25L.js → tasks-crud-HBDKE6C5.js} +35 -23
  372. package/dist/tasks-notify-G2U2U2YA.js +53 -0
  373. package/dist/{tasks-review-JKBRACII.js → tasks-review-27SFX5XN.js} +27 -23
  374. package/dist/{telemetry-upload-7LBYGPCB.js → telemetry-upload-ZOXHRWR5.js} +9 -9
  375. package/dist/tmux-command-guard-KSJKIX3C.js +117 -0
  376. package/dist/{token-budget-QBRJR4M5.js → token-budget-5Y4YPDO3.js} +5 -5
  377. package/dist/{tool-capability-index-Q6YQDL7I.js → tool-capability-index-VYF5GNJ2.js} +1 -1
  378. package/dist/{tool-telemetry-ULIDUK3P.js → tool-telemetry-KBXSBDTK.js} +1 -1
  379. package/dist/tui/App.js +40 -38
  380. package/dist/{tui-data-NPTGKT37.js → tui-data-NLFMBIQI.js} +25 -23
  381. package/dist/{update-check-HFO4VHO4.js → update-check-3FHAWIG2.js} +7 -3
  382. package/dist/update-support-UVUSZG7R.js +355 -0
  383. package/dist/{whatsapp-accounts-BWRZUY23.js → whatsapp-accounts-BFIOXYW5.js} +1 -1
  384. package/dist/{whatsapp-config-GOSELKTE.js → whatsapp-config-FAX6EA5K.js} +20 -13
  385. package/dist/{worker-gate-MXUQUG4M.js → worker-gate-3KUBAU32.js} +3 -3
  386. package/dist/{workflow-engine-EWCOLD47.js → workflow-engine-YITHXZR5.js} +2 -2
  387. package/dist/{working-memory-PY4AG577.js → working-memory-NUVB5SFV.js} +1 -1
  388. package/dist/worktree-LL62PLQB.js +47 -0
  389. package/dist/{worktree-sweep-ZAG3V24E.js → worktree-sweep-WTK3MTKH.js} +7 -7
  390. package/package.json +3 -2
  391. package/release-notes.json +86 -76
  392. package/dist/branch-hygiene-R5NVTRAY.js +0 -138
  393. package/dist/chunk-6IRVGOUL.js +0 -30
  394. package/dist/chunk-HMP5VT6A.js +0 -118
  395. package/dist/chunk-PVYR4FCQ.js +0 -113
  396. package/dist/chunk-UFAXZ2PY.js +0 -138
  397. package/dist/chunk-Y25OJWOQ.js +0 -45
  398. package/dist/chunk-YGAAZN3E.js +0 -47
  399. package/dist/cto-delegation-gate-DXNF5HVW.js +0 -290
  400. package/dist/dispatch-ack-4S44HBWB.js +0 -15
  401. package/dist/dreaming-OMFUEUCQ.js +0 -44
  402. package/dist/orchestrator-DUUX7FQV.js +0 -45
  403. package/dist/setup-wizard-TOFEJPLF.js +0 -13
  404. package/dist/tasks-notify-SMLDFBWM.js +0 -50
  405. package/dist/worktree-GVF2I5FP.js +0 -31
  406. /package/dist/{chunk-FLNSJ2TC.js → chunk-GIBYNT6W.js} +0 -0
  407. /package/dist/{chunk-NQBRGXYR.js → chunk-JRM4TAGS.js} +0 -0
  408. /package/dist/{chunk-WHRTDN5J.js → chunk-MGGOSFCR.js} +0 -0
  409. /package/dist/{chunk-D3QASX2W.js → chunk-QIFYLIUF.js} +0 -0
  410. /package/dist/{chunk-OADURIIN.js → chunk-WTH4CSAP.js} +0 -0
  411. /package/dist/{core-memory-VO5ZIBKH.js → core-memory-GAC6EWOQ.js} +0 -0
  412. /package/dist/{entity-boost-DNI4A5I7.js → entity-boost-NT6UO2Z3.js} +0 -0
  413. /package/dist/{message-queue-client-Q5BW3O5W.js → message-queue-client-4EOQRUXW.js} +0 -0
  414. /package/dist/{oauth-server-ROQFOEMM.js → oauth-server-67YBDP32.js} +0 -0
  415. /package/dist/{webhook-pipe-FZYLO6RR.js → webhook-pipe-LEXMUQ5B.js} +0 -0
  416. /package/dist/{wiki-acl-JA5UCQZ4.js → wiki-acl-74BLWG6J.js} +0 -0
  417. /package/dist/{wiki-client-VNDOBK63.js → wiki-client-EAN7F5LV.js} +0 -0
@@ -1,30 +1,30 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  exportBehaviorsForAgent
4
- } from "../chunk-YE7NH53A.js";
4
+ } from "../chunk-X33NYQYJ.js";
5
5
  import {
6
6
  resolveClaudeBinaryPath
7
7
  } from "../chunk-75H4R62K.js";
8
8
  import {
9
9
  getSessionPrompt
10
- } from "../chunk-UXBD22CD.js";
11
- import "../chunk-I3XKO3KQ.js";
12
- import "../chunk-A47MXY2I.js";
13
- import "../chunk-TLYAEISW.js";
10
+ } from "../chunk-XHK3FS3W.js";
11
+ import "../chunk-GJ26DULE.js";
12
+ import "../chunk-EQHQF5IM.js";
13
+ import "../chunk-KW2SD2FL.js";
14
14
  import {
15
15
  retryOnDaemonTransportError
16
- } from "../chunk-UCQITDLM.js";
16
+ } from "../chunk-5TY4FPH6.js";
17
17
  import "../chunk-QGGH7LOU.js";
18
18
  import {
19
19
  fastDbInit
20
- } from "../chunk-UFAXZ2PY.js";
20
+ } from "../chunk-PWUFMX75.js";
21
21
  import {
22
22
  disposeStore
23
- } from "../chunk-H37HHX3E.js";
23
+ } from "../chunk-VSRPS3J7.js";
24
24
  import "../chunk-CHCA3ZM2.js";
25
25
  import "../chunk-OTVEIJUQ.js";
26
- import "../chunk-HHIBOU3P.js";
27
- import "../chunk-Y25OJWOQ.js";
26
+ import "../chunk-6XWTQUO4.js";
27
+ import "../chunk-4QCFFW2H.js";
28
28
  import {
29
29
  DEFAULT_PROVIDER,
30
30
  PROVIDER_TABLE,
@@ -32,32 +32,33 @@ import {
32
32
  _resetCcHelpCache,
33
33
  claudeSupportsAgentFlag,
34
34
  getCcHelpOutputCached
35
- } from "../chunk-PLRIJALF.js";
36
- import "../chunk-OFX5B2S7.js";
37
- import "../chunk-B76TSEP3.js";
38
- import "../chunk-RLRT2BVM.js";
35
+ } from "../chunk-UP75Z5X7.js";
36
+ import "../chunk-L2R3LN2P.js";
37
+ import "../chunk-I26FWCSP.js";
38
+ import "../chunk-EV46QTD3.js";
39
+ import "../chunk-E23LNUWJ.js";
39
40
  import "../chunk-4JERP7NT.js";
40
41
  import "../chunk-EIKATSE4.js";
41
- import "../chunk-E23LNUWJ.js";
42
- import "../chunk-UIV2WPBT.js";
43
- import "../chunk-SSTLTIF3.js";
44
- import "../chunk-RMOBQ6A5.js";
45
- import "../chunk-54QCG45Y.js";
46
- import "../chunk-FUIIVSW6.js";
42
+ import "../chunk-KGWRTRKC.js";
43
+ import "../chunk-AD2VCHSS.js";
44
+ import "../chunk-WOYADZF5.js";
45
+ import "../chunk-SKGMF2SO.js";
46
+ import "../chunk-2WAVZ5UJ.js";
47
47
  import {
48
48
  getAgentRuntime,
49
49
  loadAgentConfig,
50
50
  normalizeCcModelName
51
- } from "../chunk-65SVQELL.js";
52
- import "../chunk-NGP6LSV2.js";
53
- import "../chunk-MW2GJJ53.js";
51
+ } from "../chunk-HA5R6USD.js";
52
+ import "../chunk-AM7S2TY6.js";
53
+ import "../chunk-JGIPOUIK.js";
54
+ import "../chunk-GWDSB25T.js";
54
55
  import "../chunk-CVYC6DUW.js";
55
- import "../chunk-2233TQCA.js";
56
- import "../chunk-HCJCW7X4.js";
56
+ import "../chunk-JLZ4RYSD.js";
57
+ import "../chunk-H7I47RS5.js";
57
58
  import "../chunk-OPU3NYOO.js";
58
- import "../chunk-7TS64TBG.js";
59
+ import "../chunk-G4RGKBCA.js";
59
60
  import "../chunk-AFNRE2RV.js";
60
- import "../chunk-3NGZ4PL7.js";
61
+ import "../chunk-X2Q5NLUL.js";
61
62
  import "../chunk-NLEW62VC.js";
62
63
  import "../chunk-HYZV25LY.js";
63
64
  import "../chunk-GJV3WDWM.js";
@@ -68,28 +69,30 @@ import {
68
69
  loadEmployees,
69
70
  loadEmployeesSync,
70
71
  normalizeRole
71
- } from "../chunk-HEPR6QTL.js";
72
+ } from "../chunk-AOHXREB7.js";
72
73
  import "../chunk-2I23RPSI.js";
73
- import "../chunk-ATOU6CYR.js";
74
+ import "../chunk-OLMQ4UOF.js";
74
75
  import "../chunk-PNQDP3OA.js";
75
76
  import "../chunk-H73TUI4Y.js";
76
77
  import "../chunk-7HLWBYH7.js";
77
78
  import "../chunk-FXU7JOXK.js";
78
- import "../chunk-Z42MXYWW.js";
79
- import "../chunk-XACL67CS.js";
80
- import "../chunk-5Z5NATNS.js";
81
- import "../chunk-7Y5UDEVM.js";
79
+ import "../chunk-QWVXN224.js";
80
+ import "../chunk-NGP6LSV2.js";
81
+ import "../chunk-PQIDGXSG.js";
82
+ import "../chunk-K7KFGDWF.js";
83
+ import "../chunk-WZHZCDDO.js";
82
84
  import {
83
85
  atomicWriteJsonSync,
84
86
  atomicWriteSync
85
- } from "../chunk-SHIICYJW.js";
87
+ } from "../chunk-BYTDMAGB.js";
86
88
  import "../chunk-MLKGABMK.js";
87
89
 
88
90
  // src/bin/exe-launch-agent.ts
89
91
  import os from "os";
90
92
  import path from "path";
91
93
  import { createHash } from "crypto";
92
- import { existsSync, readFileSync, mkdirSync, readdirSync } from "fs";
94
+ import { existsSync, readFileSync, mkdirSync, readdirSync, statSync } from "fs";
95
+ import { fileURLToPath } from "url";
93
96
  import { spawn as spawnAsync } from "child_process";
94
97
  import { execSync } from "child_process";
95
98
  function getKnownAgents() {
@@ -189,7 +192,12 @@ function leanMcpEnabled() {
189
192
  const value = process.env.EXE_OS_ENABLE_LEAN_MCP?.trim().toLowerCase();
190
193
  return value === "1" || value === "true" || value === "yes";
191
194
  }
195
+ var _mcpServerCache = null;
196
+ function _resetMcpServerCache() {
197
+ _mcpServerCache = null;
198
+ }
192
199
  function collectAllMcpServers() {
200
+ if (_mcpServerCache) return _mcpServerCache;
193
201
  const servers = {};
194
202
  const sources = [
195
203
  path.join(os.homedir(), ".claude.json"),
@@ -207,6 +215,7 @@ function collectAllMcpServers() {
207
215
  } catch {
208
216
  }
209
217
  }
218
+ _mcpServerCache = servers;
210
219
  return servers;
211
220
  }
212
221
  function generateLeanMcpConfig(agent, role) {
@@ -425,6 +434,63 @@ ${identityContent}`;
425
434
  }
426
435
  return { command: "claude", args };
427
436
  }
437
+ function behaviorsExportDir() {
438
+ return path.join(os.homedir(), ".exe-os", "behaviors-export");
439
+ }
440
+ function behaviorsExportPathFor(agent) {
441
+ return path.join(behaviorsExportDir(), `${agent}.md`);
442
+ }
443
+ function spawnBehaviorsRefresh(agent) {
444
+ if (process.env.EXE_SKIP_BEHAVIORS_REFRESH === "1") return;
445
+ try {
446
+ const sibling = fileURLToPath(new URL("./exe-export-behaviors.js", import.meta.url));
447
+ const hasSibling = existsSync(sibling);
448
+ const child = spawnAsync(
449
+ hasSibling ? process.execPath : "exe-export-behaviors",
450
+ hasSibling ? [sibling, agent, ""] : [agent, ""],
451
+ { detached: true, stdio: "ignore" }
452
+ );
453
+ child.unref();
454
+ } catch {
455
+ }
456
+ }
457
+ async function resolveBehaviorsPath(agent) {
458
+ const stable = behaviorsExportPathFor(agent);
459
+ let cached = null;
460
+ try {
461
+ if (existsSync(stable) && statSync(stable).size > 0) cached = stable;
462
+ } catch {
463
+ }
464
+ if (cached) {
465
+ let spawnPath = cached;
466
+ try {
467
+ const snapshot = path.join(behaviorsExportDir(), `${agent}-boot.md`);
468
+ atomicWriteSync(snapshot, readFileSync(cached, "utf-8"));
469
+ spawnPath = snapshot;
470
+ } catch {
471
+ }
472
+ spawnBehaviorsRefresh(agent);
473
+ return spawnPath;
474
+ }
475
+ try {
476
+ await fastDbInit();
477
+ return await retryOnDaemonTransportError(
478
+ () => exportBehaviorsForAgent(agent, ""),
479
+ { attempts: 2 }
480
+ );
481
+ } catch (err) {
482
+ process.stderr.write(
483
+ `[exe-launch-agent] behaviors export failed for ${agent}: ${err instanceof Error ? err.message : String(err)}
484
+ `
485
+ );
486
+ return null;
487
+ } finally {
488
+ try {
489
+ await disposeStore();
490
+ } catch {
491
+ }
492
+ }
493
+ }
428
494
  async function buildTaskBootPrompt(agentId, role) {
429
495
  if (isCoordinatorRole(role)) return null;
430
496
  try {
@@ -537,23 +603,7 @@ async function main() {
537
603
  );
538
604
  return 2;
539
605
  }
540
- let behaviorsPath = null;
541
- try {
542
- await fastDbInit();
543
- behaviorsPath = await retryOnDaemonTransportError(
544
- () => exportBehaviorsForAgent(agent, "")
545
- );
546
- } catch (err) {
547
- process.stderr.write(
548
- `[exe-launch-agent] behaviors export failed for ${agent}: ${err instanceof Error ? err.message : String(err)}
549
- `
550
- );
551
- } finally {
552
- try {
553
- await disposeStore();
554
- } catch {
555
- }
556
- }
606
+ const behaviorsPath = await resolveBehaviorsPath(agent);
557
607
  _resetCcAgentSupportCache();
558
608
  const hasAgentFlag = claudeSupportsAgentFlag();
559
609
  if (hasAgentFlag) {
@@ -619,9 +669,9 @@ async function main() {
619
669
  if (sessionName && ccSupportsFlag("--mcp-config")) {
620
670
  try {
621
671
  const allServers = collectAllMcpServers();
672
+ const { readOrCreateDaemonToken, mcpHttpUrl } = await import("../mcp-http-config-BDL36JZ3.js");
622
673
  let currentDaemonToken = null;
623
674
  try {
624
- const { readOrCreateDaemonToken } = await import("../mcp-http-config-EMAVS2JI.js");
625
675
  currentDaemonToken = readOrCreateDaemonToken();
626
676
  } catch (e) {
627
677
  process.stderr.write(
@@ -629,24 +679,27 @@ async function main() {
629
679
  `
630
680
  );
631
681
  }
632
- for (const key of ["exe-mem", "exe-os"]) {
633
- const entry = allServers[key];
634
- if (entry && entry.type === "http") {
635
- const headers = entry.headers ?? {};
636
- headers["X-Agent-Id"] = memoryAgent;
637
- headers["X-Agent-Role"] = empRole;
638
- headers["X-Exe-Session"] = coordinatorSession || sessionName;
639
- headers["X-Exe-Session-Name"] = sessionName;
640
- if (currentDaemonToken) headers["Authorization"] = `Bearer ${currentDaemonToken}`;
641
- entry.headers = headers;
642
- }
682
+ const { buildSessionMcpServers, sessionMcpConfigFilename } = await import("../session-mcp-config-YKNXG5DW.js");
683
+ const built = buildSessionMcpServers(allServers, {
684
+ agentId: memoryAgent,
685
+ agentRole: empRole,
686
+ sessionName,
687
+ coordinatorSession,
688
+ daemonToken: currentDaemonToken,
689
+ daemonUrl: mcpHttpUrl()
690
+ });
691
+ if (built.synthesizedKey) {
692
+ process.stderr.write(
693
+ `[exe-launch-agent] WARN: no exe-os HTTP MCP entry found in Claude config \u2014 synthesized "${built.synthesizedKey}" with session identity headers (session=${sessionName})
694
+ `
695
+ );
643
696
  }
644
697
  const configDir = path.join(os.homedir(), ".exe-os", "mcp-configs");
645
698
  mkdirSync(configDir, { recursive: true });
646
- sessionMcpConfig = path.join(configDir, `${memoryAgent}-${sessionName}.json`);
647
- atomicWriteJsonSync(sessionMcpConfig, { mcpServers: allServers });
699
+ sessionMcpConfig = path.join(configDir, sessionMcpConfigFilename(sessionName));
700
+ atomicWriteJsonSync(sessionMcpConfig, { mcpServers: built.servers });
648
701
  process.stderr.write(
649
- `[exe-launch-agent] session MCP config: ${sessionMcpConfig} (${Object.keys(allServers).length} servers, session=${sessionName}, coordinator=${coordinatorSession})
702
+ `[exe-launch-agent] session MCP config: ${sessionMcpConfig} (${Object.keys(built.servers).length} servers, session=${sessionName}, coordinator=${coordinatorSession})
650
703
  `
651
704
  );
652
705
  } catch (err) {
@@ -656,6 +709,11 @@ async function main() {
656
709
  );
657
710
  sessionMcpConfig = null;
658
711
  }
712
+ } else if (sessionName) {
713
+ process.stderr.write(
714
+ `[exe-launch-agent] WARN: installed claude does not support --mcp-config \u2014 cannot attach session identity headers for ${sessionName}; MCP scope will be ambiguous when parallel ${memoryAgent} sessions exist. Upgrade Claude Code.
715
+ `
716
+ );
659
717
  }
660
718
  const plan = buildLaunchPlan(agent, behaviorsPath, passthrough, hasAgentFlag, provider);
661
719
  if (sessionMcpConfig) {
@@ -681,7 +739,7 @@ async function main() {
681
739
  process.env.EXE_RUNTIME = "claude";
682
740
  process.env.AGENT_ROLE = empRole;
683
741
  try {
684
- const { writeActiveAgent } = await import("../active-agent-EC6M7KTX.js");
742
+ const { writeActiveAgent } = await import("../active-agent-PVGE57FY.js");
685
743
  writeActiveAgent(memoryAgent, empRole);
686
744
  } catch {
687
745
  }
@@ -743,11 +801,14 @@ export {
743
801
  DEFAULT_PROVIDER,
744
802
  PROVIDER_TABLE,
745
803
  _resetCcHelpCache,
804
+ _resetMcpServerCache,
746
805
  applyProviderEnv,
806
+ behaviorsExportPathFor,
747
807
  buildLaunchPlan,
748
808
  ccSupportsFlag,
749
809
  generateLeanMcpConfig,
750
810
  parseBasename,
751
811
  resolveAgent,
812
+ resolveBehaviorsPath,
752
813
  resolveClaudeBin
753
814
  };
@@ -0,0 +1,257 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ initStore
4
+ } from "../chunk-VSRPS3J7.js";
5
+ import "../chunk-CHCA3ZM2.js";
6
+ import "../chunk-OTVEIJUQ.js";
7
+ import "../chunk-6XWTQUO4.js";
8
+ import "../chunk-4QCFFW2H.js";
9
+ import "../chunk-MP2AFCGL.js";
10
+ import {
11
+ getClient
12
+ } from "../chunk-AOHXREB7.js";
13
+ import "../chunk-2I23RPSI.js";
14
+ import "../chunk-OLMQ4UOF.js";
15
+ import "../chunk-PNQDP3OA.js";
16
+ import "../chunk-H73TUI4Y.js";
17
+ import "../chunk-7HLWBYH7.js";
18
+ import "../chunk-FXU7JOXK.js";
19
+ import "../chunk-QWVXN224.js";
20
+ import "../chunk-WZHZCDDO.js";
21
+ import "../chunk-BYTDMAGB.js";
22
+ import {
23
+ isMainModule
24
+ } from "../chunk-6Y4B3QF6.js";
25
+ import "../chunk-MLKGABMK.js";
26
+
27
+ // src/lib/memory-reads-read.ts
28
+ var SUCCESS_STATUSES = /* @__PURE__ */ new Set(["done", "closed", "needs_review"]);
29
+ function toRow(r) {
30
+ return {
31
+ id: String(r.id),
32
+ memory_id: String(r.memory_id),
33
+ agent_id: r.agent_id === null ? null : String(r.agent_id),
34
+ task_id: r.task_id === null ? null : String(r.task_id),
35
+ session_scope: r.session_scope === null ? null : String(r.session_scope),
36
+ source: String(r.source),
37
+ query: r.query === null ? null : String(r.query),
38
+ rank_position: Number(r.rank_position),
39
+ timestamp: String(r.timestamp)
40
+ };
41
+ }
42
+ async function getReadsForTask(taskId) {
43
+ const res = await getClient().execute({
44
+ sql: `SELECT id, memory_id, agent_id, task_id, session_scope, source, query, rank_position, timestamp
45
+ FROM memory_reads
46
+ WHERE task_id = ?
47
+ ORDER BY timestamp ASC, rank_position ASC`,
48
+ args: [taskId]
49
+ });
50
+ return res.rows.map((r) => toRow(r));
51
+ }
52
+ async function getTaskOutcomeJoin(options) {
53
+ const args = [];
54
+ let sql = `SELECT r.id, r.memory_id, r.agent_id, r.task_id, r.session_scope, r.source,
55
+ r.query, r.rank_position, r.timestamp,
56
+ t.status AS task_status, t.title AS task_title
57
+ FROM memory_reads r
58
+ LEFT JOIN tasks t ON t.id = r.task_id
59
+ WHERE r.task_id IS NOT NULL`;
60
+ if (options?.since) {
61
+ sql += " AND r.timestamp >= ?";
62
+ args.push(options.since);
63
+ }
64
+ if (options?.agentId) {
65
+ sql += " AND r.agent_id = ?";
66
+ args.push(options.agentId);
67
+ }
68
+ sql += " ORDER BY r.timestamp DESC LIMIT ?";
69
+ args.push(options?.limit ?? 1e3);
70
+ const res = await getClient().execute({ sql, args });
71
+ return res.rows.map((raw) => {
72
+ const r = raw;
73
+ const status = r.task_status === null || r.task_status === void 0 ? null : String(r.task_status);
74
+ return {
75
+ ...toRow(r),
76
+ task_status: status,
77
+ task_title: r.task_title === null || r.task_title === void 0 ? null : String(r.task_title),
78
+ succeeded: status !== null && SUCCESS_STATUSES.has(status)
79
+ };
80
+ });
81
+ }
82
+ async function getPrecisionAtK(options) {
83
+ const k = options?.k ?? 5;
84
+ const args = [k];
85
+ let filter = "";
86
+ if (options?.since) {
87
+ filter = " AND r.timestamp >= ?";
88
+ args.push(options.since);
89
+ }
90
+ const sql = `
91
+ WITH topk AS (
92
+ SELECT r.task_id, r.memory_id, COUNT(*) AS hits
93
+ FROM memory_reads r
94
+ WHERE r.task_id IS NOT NULL AND r.rank_position <= ?${filter}
95
+ GROUP BY r.task_id, r.memory_id
96
+ )
97
+ SELECT topk.task_id,
98
+ t.status AS task_status,
99
+ COUNT(*) AS retrieved,
100
+ SUM(CASE WHEN topk.hits > 1 THEN 1 ELSE 0 END) AS reused
101
+ FROM topk
102
+ LEFT JOIN tasks t ON t.id = topk.task_id
103
+ GROUP BY topk.task_id, t.status
104
+ ORDER BY retrieved DESC
105
+ LIMIT ?`;
106
+ args.push(options?.limit ?? 100);
107
+ const res = await getClient().execute({ sql, args });
108
+ return res.rows.map((raw) => {
109
+ const r = raw;
110
+ const retrieved = Number(r.retrieved ?? 0);
111
+ const reused = Number(r.reused ?? 0);
112
+ return {
113
+ task_id: String(r.task_id),
114
+ task_status: r.task_status === null || r.task_status === void 0 ? null : String(r.task_status),
115
+ retrieved,
116
+ reused,
117
+ precision: retrieved > 0 ? reused / retrieved : 0
118
+ };
119
+ });
120
+ }
121
+ async function getReadCountsByMemory(options) {
122
+ const args = [];
123
+ let filter = "";
124
+ if (options?.since) {
125
+ filter = " WHERE r.timestamp >= ?";
126
+ args.push(options.since);
127
+ }
128
+ const statuses = [...SUCCESS_STATUSES].map((s) => `'${s}'`).join(",");
129
+ const sql = `
130
+ SELECT r.memory_id,
131
+ COUNT(*) AS reads,
132
+ COUNT(DISTINCT r.task_id) AS tasks,
133
+ COUNT(DISTINCT CASE WHEN t.status IN (${statuses}) THEN r.task_id END) AS successful_tasks
134
+ FROM memory_reads r
135
+ LEFT JOIN tasks t ON t.id = r.task_id
136
+ ${filter}
137
+ GROUP BY r.memory_id
138
+ ORDER BY reads DESC
139
+ LIMIT ?`;
140
+ args.push(options?.limit ?? 100);
141
+ const res = await getClient().execute({ sql, args });
142
+ return res.rows.map((raw) => {
143
+ const r = raw;
144
+ return {
145
+ memory_id: String(r.memory_id),
146
+ reads: Number(r.reads ?? 0),
147
+ tasks: Number(r.tasks ?? 0),
148
+ successful_tasks: Number(r.successful_tasks ?? 0)
149
+ };
150
+ });
151
+ }
152
+
153
+ // src/bin/exe-memory-reads.ts
154
+ function parseArgs(argv) {
155
+ const flag = (name) => {
156
+ const i = argv.indexOf(name);
157
+ return i !== -1 && argv[i + 1] ? argv[i + 1] : void 0;
158
+ };
159
+ const k = Number(flag("--k"));
160
+ return {
161
+ json: argv.includes("--json"),
162
+ task: flag("--task"),
163
+ outcomes: argv.includes("--outcomes"),
164
+ k: Number.isFinite(k) && k > 0 ? Math.floor(k) : 5,
165
+ since: flag("--since")
166
+ };
167
+ }
168
+ function pad(s, n) {
169
+ return s.length > n ? s.slice(0, n - 1) + "\u2026" : s.padEnd(n);
170
+ }
171
+ async function main() {
172
+ const args = parseArgs(process.argv.slice(2));
173
+ await initStore();
174
+ if (args.task) {
175
+ const reads = await getReadsForTask(args.task);
176
+ if (args.json) {
177
+ console.log(JSON.stringify(reads, null, 2));
178
+ return;
179
+ }
180
+ if (reads.length === 0) {
181
+ console.log(`No memory reads logged for task ${args.task}.`);
182
+ console.log("Reads are logged unless EXE_READ_LOG=0.");
183
+ return;
184
+ }
185
+ console.log(`Memory reads for task ${args.task} (${reads.length})
186
+ `);
187
+ console.log(`${pad("RANK", 6)}${pad("SOURCE", 8)}${pad("MEMORY", 38)}QUERY`);
188
+ for (const r of reads) {
189
+ console.log(
190
+ `${pad(String(r.rank_position), 6)}${pad(r.source, 8)}${pad(r.memory_id, 38)}${(r.query ?? "").slice(0, 50)}`
191
+ );
192
+ }
193
+ return;
194
+ }
195
+ if (args.outcomes) {
196
+ const rows = await getTaskOutcomeJoin({ since: args.since, limit: 200 });
197
+ if (args.json) {
198
+ console.log(JSON.stringify(rows, null, 2));
199
+ return;
200
+ }
201
+ if (rows.length === 0) {
202
+ console.log("No task-attributed reads yet.");
203
+ return;
204
+ }
205
+ console.log(`Reads joined to task outcome (${rows.length})
206
+ `);
207
+ console.log(`${pad("OK", 4)}${pad("STATUS", 14)}${pad("RANK", 6)}${pad("MEMORY", 38)}TASK`);
208
+ for (const r of rows) {
209
+ const ok = r.succeeded ? "\u{1F7E2}" : "\u{1F534}";
210
+ console.log(
211
+ `${pad(ok, 4)}${pad(r.task_status ?? "-", 14)}${pad(String(r.rank_position), 6)}${pad(r.memory_id, 38)}${(r.task_title ?? r.task_id ?? "").slice(0, 40)}`
212
+ );
213
+ }
214
+ return;
215
+ }
216
+ const precision = await getPrecisionAtK({ k: args.k, since: args.since, limit: 25 });
217
+ const topRead = await getReadCountsByMemory({ since: args.since, limit: 15 });
218
+ if (args.json) {
219
+ console.log(JSON.stringify({ k: args.k, precision, topRead }, null, 2));
220
+ return;
221
+ }
222
+ if (precision.length === 0 && topRead.length === 0) {
223
+ console.log("No memory reads logged yet.");
224
+ console.log("Reads are logged on every recall unless EXE_READ_LOG=0.");
225
+ return;
226
+ }
227
+ console.log(`Retrieval telemetry \u2014 precision@${args.k} by task
228
+ `);
229
+ console.log(
230
+ "NOTE: 'used' is a PROXY \u2014 a memory re-read by a later search in the same\ntask. exe-os has no explicit citation signal. Treat as implicit feedback.\n"
231
+ );
232
+ console.log(`${pad("PRECISION", 11)}${pad("RETRIEVED", 11)}${pad("REUSED", 8)}${pad("STATUS", 14)}TASK`);
233
+ for (const p of precision) {
234
+ const bar = p.precision >= 0.5 ? "\u{1F7E2}" : p.precision >= 0.2 ? "\u{1F7E0}" : "\u{1F534}";
235
+ console.log(
236
+ `${pad(`${bar} ${(p.precision * 100).toFixed(0)}%`, 11)}${pad(String(p.retrieved), 11)}${pad(String(p.reused), 8)}${pad(p.task_status ?? "-", 14)}${p.task_id.slice(0, 40)}`
237
+ );
238
+ }
239
+ console.log(`
240
+ Most-read memories
241
+ `);
242
+ console.log(`${pad("READS", 7)}${pad("TASKS", 7)}${pad("OK-TASKS", 10)}MEMORY`);
243
+ for (const m of topRead) {
244
+ console.log(
245
+ `${pad(String(m.reads), 7)}${pad(String(m.tasks), 7)}${pad(String(m.successful_tasks), 10)}${m.memory_id}`
246
+ );
247
+ }
248
+ }
249
+ if (isMainModule(import.meta.url) && process.argv[1]?.includes("exe-memory-reads")) {
250
+ main().then(() => process.exit(0)).catch((err) => {
251
+ process.stderr.write(
252
+ `[exe-memory-reads] FATAL: ${err instanceof Error ? err.message : String(err)}
253
+ `
254
+ );
255
+ process.exit(1);
256
+ });
257
+ }
@@ -7,28 +7,28 @@ import {
7
7
  buildCustomEmployeePrompt,
8
8
  getTemplate,
9
9
  personalizePrompt
10
- } from "../chunk-UXBD22CD.js";
11
- import "../chunk-I3XKO3KQ.js";
12
- import "../chunk-A47MXY2I.js";
10
+ } from "../chunk-XHK3FS3W.js";
11
+ import "../chunk-GJ26DULE.js";
12
+ import "../chunk-EQHQF5IM.js";
13
13
  import {
14
14
  PlanLimitError,
15
15
  assertEmployeeLimit
16
- } from "../chunk-MW2GJJ53.js";
16
+ } from "../chunk-JGIPOUIK.js";
17
17
  import {
18
18
  hireEmployee,
19
19
  registerBinSymlinks,
20
20
  validateEmployeeName
21
- } from "../chunk-HEPR6QTL.js";
21
+ } from "../chunk-AOHXREB7.js";
22
22
  import "../chunk-2I23RPSI.js";
23
- import "../chunk-ATOU6CYR.js";
23
+ import "../chunk-OLMQ4UOF.js";
24
24
  import "../chunk-PNQDP3OA.js";
25
25
  import "../chunk-H73TUI4Y.js";
26
26
  import "../chunk-7HLWBYH7.js";
27
27
  import "../chunk-FXU7JOXK.js";
28
- import "../chunk-XACL67CS.js";
29
- import "../chunk-5Z5NATNS.js";
30
- import "../chunk-7Y5UDEVM.js";
31
- import "../chunk-SHIICYJW.js";
28
+ import "../chunk-PQIDGXSG.js";
29
+ import "../chunk-K7KFGDWF.js";
30
+ import "../chunk-WZHZCDDO.js";
31
+ import "../chunk-BYTDMAGB.js";
32
32
  import {
33
33
  isMainModule
34
34
  } from "../chunk-6Y4B3QF6.js";
@@ -53,6 +53,7 @@ async function main() {
53
53
  console.error("Usage: exe-new-employee <name> [--role <template>]");
54
54
  process.exit(1);
55
55
  }
56
+ name = name.toLowerCase();
56
57
  const validation = validateEmployeeName(name);
57
58
  if (!validation.valid) {
58
59
  console.error(`Invalid name: ${validation.error}`);
@@ -146,7 +147,7 @@ ${rolePrompt}${emotionalSection}`;
146
147
  console.error(`Warning: some launchers failed: ${bins.errors.join("; ")}`);
147
148
  }
148
149
  try {
149
- const { resolvePackageRoot } = await import("../installer-MNPXDLGG.js");
150
+ const { resolvePackageRoot } = await import("../installer-L7EVH5U5.js");
150
151
  const { homedir } = await import("os");
151
152
  const pkgRoot = resolvePackageRoot();
152
153
  const wrapResult = generateSessionWrappers(pkgRoot);