@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,24 +1,24 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  generateStatusBrief
4
- } from "../chunk-5ZNY7IZI.js";
4
+ } from "../chunk-WMESXBJM.js";
5
5
  import {
6
6
  DEFAULT_EXE,
7
7
  getSessionPrompt
8
- } from "../chunk-UXBD22CD.js";
9
- import "../chunk-I3XKO3KQ.js";
10
- import "../chunk-A47MXY2I.js";
8
+ } from "../chunk-XHK3FS3W.js";
9
+ import "../chunk-GJ26DULE.js";
10
+ import "../chunk-EQHQF5IM.js";
11
11
  import {
12
12
  initStore
13
- } from "../chunk-H37HHX3E.js";
13
+ } from "../chunk-VSRPS3J7.js";
14
14
  import "../chunk-CHCA3ZM2.js";
15
15
  import "../chunk-OTVEIJUQ.js";
16
- import "../chunk-HHIBOU3P.js";
16
+ import "../chunk-6XWTQUO4.js";
17
17
  import {
18
18
  cleanupSessionMarkers,
19
19
  writeActiveAgent
20
- } from "../chunk-DZ6OQM67.js";
21
- import "../chunk-Y25OJWOQ.js";
20
+ } from "../chunk-5ERDIOV3.js";
21
+ import "../chunk-4QCFFW2H.js";
22
22
  import {
23
23
  cleanupOldNotifications,
24
24
  getMySession,
@@ -29,31 +29,32 @@ import {
29
29
  resolveExeSession,
30
30
  sessionScopeFilter,
31
31
  updateTaskStatus
32
- } from "../chunk-PLRIJALF.js";
33
- import "../chunk-OFX5B2S7.js";
34
- import "../chunk-B76TSEP3.js";
35
- import "../chunk-RLRT2BVM.js";
32
+ } from "../chunk-UP75Z5X7.js";
33
+ import "../chunk-L2R3LN2P.js";
34
+ import "../chunk-I26FWCSP.js";
35
+ import "../chunk-EV46QTD3.js";
36
+ import "../chunk-E23LNUWJ.js";
36
37
  import "../chunk-4JERP7NT.js";
37
38
  import "../chunk-EIKATSE4.js";
38
- import "../chunk-E23LNUWJ.js";
39
39
  import {
40
40
  pruneStaleSessions,
41
41
  registerSession
42
- } from "../chunk-UIV2WPBT.js";
43
- import "../chunk-SSTLTIF3.js";
44
- import "../chunk-RMOBQ6A5.js";
45
- import "../chunk-54QCG45Y.js";
46
- import "../chunk-FUIIVSW6.js";
47
- import "../chunk-65SVQELL.js";
48
- import "../chunk-NGP6LSV2.js";
49
- import "../chunk-MW2GJJ53.js";
42
+ } from "../chunk-KGWRTRKC.js";
43
+ import "../chunk-AD2VCHSS.js";
44
+ import "../chunk-WOYADZF5.js";
45
+ import "../chunk-SKGMF2SO.js";
46
+ import "../chunk-2WAVZ5UJ.js";
47
+ import "../chunk-HA5R6USD.js";
48
+ import "../chunk-AM7S2TY6.js";
49
+ import "../chunk-JGIPOUIK.js";
50
+ import "../chunk-GWDSB25T.js";
50
51
  import "../chunk-CVYC6DUW.js";
51
- import "../chunk-2233TQCA.js";
52
- import "../chunk-HCJCW7X4.js";
52
+ import "../chunk-JLZ4RYSD.js";
53
+ import "../chunk-H7I47RS5.js";
53
54
  import "../chunk-OPU3NYOO.js";
54
- import "../chunk-7TS64TBG.js";
55
+ import "../chunk-G4RGKBCA.js";
55
56
  import "../chunk-AFNRE2RV.js";
56
- import "../chunk-3NGZ4PL7.js";
57
+ import "../chunk-X2Q5NLUL.js";
57
58
  import "../chunk-NLEW62VC.js";
58
59
  import "../chunk-HYZV25LY.js";
59
60
  import "../chunk-GJV3WDWM.js";
@@ -65,23 +66,24 @@ import {
65
66
  isCoordinatorName,
66
67
  loadEmployees,
67
68
  saveEmployees
68
- } from "../chunk-HEPR6QTL.js";
69
+ } from "../chunk-AOHXREB7.js";
69
70
  import "../chunk-2I23RPSI.js";
70
- import "../chunk-ATOU6CYR.js";
71
+ import "../chunk-OLMQ4UOF.js";
71
72
  import "../chunk-PNQDP3OA.js";
72
73
  import "../chunk-H73TUI4Y.js";
73
74
  import "../chunk-7HLWBYH7.js";
74
75
  import "../chunk-FXU7JOXK.js";
75
- import "../chunk-TPHCZDE3.js";
76
- import "../chunk-Z42MXYWW.js";
77
- import "../chunk-XACL67CS.js";
78
- import "../chunk-5Z5NATNS.js";
76
+ import "../chunk-O5V57XYE.js";
77
+ import "../chunk-QWVXN224.js";
78
+ import "../chunk-NGP6LSV2.js";
79
+ import "../chunk-PQIDGXSG.js";
80
+ import "../chunk-K7KFGDWF.js";
79
81
  import {
80
82
  EXE_AI_DIR,
81
83
  loadConfig,
82
84
  loadConfigSync
83
- } from "../chunk-7Y5UDEVM.js";
84
- import "../chunk-SHIICYJW.js";
85
+ } from "../chunk-WZHZCDDO.js";
86
+ import "../chunk-BYTDMAGB.js";
85
87
  import {
86
88
  isMainModule
87
89
  } from "../chunk-6Y4B3QF6.js";
@@ -90,8 +92,9 @@ import "../chunk-MLKGABMK.js";
90
92
  // src/bin/exe-boot.ts
91
93
  import path from "path";
92
94
  import { mkdir, writeFile } from "fs/promises";
93
- import { existsSync, readFileSync, readdirSync, unlinkSync } from "fs";
95
+ import { existsSync, readFileSync, readdirSync, unlinkSync, writeFileSync, mkdirSync } from "fs";
94
96
  import { execSync } from "child_process";
97
+ import { createHash } from "crypto";
95
98
  import os from "os";
96
99
  async function boot(options) {
97
100
  const briefOnly = options?.briefOnly ?? false;
@@ -126,7 +129,7 @@ async function boot(options) {
126
129
  const coordinatorEmployee = getCoordinatorEmployee(employees) ?? DEFAULT_EXE;
127
130
  const coordinatorName = coordinatorEmployee.name;
128
131
  try {
129
- const { fastDbInit } = await import("../fast-db-init-QQB6IVWV.js");
132
+ const { fastDbInit } = await import("../fast-db-init-4CWHSOOR.js");
130
133
  await fastDbInit();
131
134
  } catch {
132
135
  await initStore();
@@ -228,12 +231,14 @@ async function boot(options) {
228
231
  } catch {
229
232
  }
230
233
  try {
231
- const { readdirSync: readdirSync2, readFileSync: readFs } = await import("fs");
234
+ const { readdirSync: readdirSync2, readFileSync: readFs, statSync } = await import("fs");
232
235
  const { STATUS_RE, PRIORITY_RE, TITLE_RE } = await import("../task-scanner-QEM5CO2Y.js");
233
236
  const { getProjectName } = await import("../project-name-EWG5KAZP.js");
237
+ const defaultProjectName = getProjectName(process.cwd());
234
238
  const exeDir = "exe";
235
239
  const entries = readdirSync2(exeDir, { withFileTypes: true });
236
240
  const employeeDirs = entries.filter((e) => e.isDirectory() && !["output", "research"].includes(e.name));
241
+ const taskFiles = [];
237
242
  for (const dir of employeeDirs) {
238
243
  const employee = dir.name;
239
244
  const taskDir = path.join(exeDir, employee);
@@ -244,10 +249,32 @@ async function boot(options) {
244
249
  continue;
245
250
  }
246
251
  for (const file of files) {
247
- const taskFilePath = `exe/${employee}/${file}`;
252
+ const absPath = path.join(taskDir, file);
253
+ let mtimeMs = 0;
254
+ try {
255
+ mtimeMs = statSync(absPath).mtimeMs;
256
+ } catch {
257
+ continue;
258
+ }
259
+ taskFiles.push({ employee, file, taskFilePath: `exe/${employee}/${file}`, absPath, mtimeMs });
260
+ }
261
+ }
262
+ let dbTaskFileCount = -1;
263
+ try {
264
+ const countRes = await client.execute("SELECT COUNT(*) AS c FROM tasks WHERE task_file IS NOT NULL");
265
+ dbTaskFileCount = Number(countRes.rows[0]?.c ?? -1);
266
+ } catch {
267
+ }
268
+ const signature = reconcileSignature(
269
+ taskFiles.map((t) => ({ path: t.taskFilePath, mtimeMs: t.mtimeMs })),
270
+ dbTaskFileCount
271
+ );
272
+ if (dbTaskFileCount < 0 || readReconcileStamp() !== signature) {
273
+ const existingByFile = await fetchTasksByFile(client, taskFiles.map((t) => t.taskFilePath));
274
+ for (const { employee, file, taskFilePath, absPath } of taskFiles) {
248
275
  let content;
249
276
  try {
250
- content = readFs(path.join(taskDir, file), "utf8");
277
+ content = readFs(absPath, "utf8");
251
278
  } catch {
252
279
  continue;
253
280
  }
@@ -260,12 +287,9 @@ async function boot(options) {
260
287
  const assignedByMatch = content.match(/^\*\*Assigned by:\*\*\s*(\w+)/m);
261
288
  const assignedBy = assignedByMatch?.[1] ?? coordinatorName;
262
289
  const projMatch = content.match(/^\*\*Project:\*\*\s*(.+)/m);
263
- const projectName = projMatch?.[1]?.trim() ?? getProjectName(process.cwd());
264
- const existing = await client.execute({
265
- sql: "SELECT id, status FROM tasks WHERE task_file = ?",
266
- args: [taskFilePath]
267
- });
268
- if (existing.rows.length === 0) {
290
+ const projectName = projMatch?.[1]?.trim() ?? defaultProjectName;
291
+ const existing = existingByFile.get(taskFilePath);
292
+ if (!existing) {
269
293
  const { createTask } = await import("../lib/tasks.js");
270
294
  await createTask({
271
295
  title,
@@ -278,7 +302,7 @@ async function boot(options) {
278
302
  skipDispatch: true
279
303
  });
280
304
  } else {
281
- const dbStatus = String(existing.rows[0].status);
305
+ const dbStatus = existing.status;
282
306
  const STATUS_RANK = {
283
307
  open: 0,
284
308
  in_progress: 1,
@@ -301,6 +325,7 @@ async function boot(options) {
301
325
  }
302
326
  }
303
327
  }
328
+ writeReconcileStamp(signature);
304
329
  }
305
330
  } catch (e) {
306
331
  process.stderr.write("[exe-boot] task reconciliation: " + (e instanceof Error ? e.message : String(e)) + "\n");
@@ -918,15 +943,17 @@ async function boot(options) {
918
943
  try {
919
944
  const backfillFlagPath = path.join(EXE_AI_DIR, "session-cache", "needs-backfill");
920
945
  const isBackfillNeeded = () => existsSync(backfillFlagPath);
921
- const coverageResult = await client.execute({
922
- sql: `SELECT COUNT(*) as total,
923
- SUM(CASE WHEN vector IS NOT NULL THEN 1 ELSE 0 END) as with_vectors
924
- FROM memories`,
946
+ const totalResult = await client.execute({
947
+ sql: "SELECT COUNT(*) as total FROM memories",
925
948
  args: []
926
949
  });
927
- const totalMemories = Number(coverageResult.rows[0]?.total) || 0;
928
- const memoriesWithVectors = Number(coverageResult.rows[0]?.with_vectors) || 0;
929
- const nullCount = totalMemories - memoriesWithVectors;
950
+ const nullResult = await client.execute({
951
+ sql: "SELECT COUNT(*) as nulls FROM memories WHERE vector IS NULL",
952
+ args: []
953
+ });
954
+ const totalMemories = Number(totalResult.rows[0]?.total) || 0;
955
+ const nullCount = Number(nullResult.rows[0]?.nulls) || 0;
956
+ const memoriesWithVectors = totalMemories - nullCount;
930
957
  const recentResult = await client.execute({
931
958
  sql: `SELECT COUNT(*) as total,
932
959
  SUM(CASE WHEN vector IS NOT NULL THEN 1 ELSE 0 END) as with_vec
@@ -1018,11 +1045,11 @@ async function boot(options) {
1018
1045
  const { loadConfigSync: loadCfgForEmbed } = await import("../lib/config.js");
1019
1046
  const embedCfg = loadCfgForEmbed();
1020
1047
  const embeddingsOn = resolveEmbed(process.env.EXE_EMBEDDINGS, embedCfg);
1021
- const { backfillKillSwitchEnabled, countActionableNullVectors } = await import("../backfill-gate-J7UXFNXU.js");
1048
+ const { backfillKillSwitchEnabled, countActionableNullVectors } = await import("../backfill-gate-65LSYVE5.js");
1022
1049
  const actionableNullCount = nullCount > 0 ? await countActionableNullVectors(client) : 0;
1023
1050
  if (actionableNullCount > 0 && embeddingsOn && !backfillKillSwitchEnabled()) {
1024
1051
  try {
1025
- const { tryAcquireWorkerSlot, registerWorkerPid } = await import("../worker-gate-MXUQUG4M.js");
1052
+ const { tryAcquireWorkerSlot, registerWorkerPid } = await import("../worker-gate-3KUBAU32.js");
1026
1053
  if (!tryAcquireWorkerSlot()) {
1027
1054
  process.stderr.write("[exe-boot] Backfill needed but worker gate full \u2014 skipping\n");
1028
1055
  } else {
@@ -1093,9 +1120,9 @@ async function boot(options) {
1093
1120
  } catch {
1094
1121
  }
1095
1122
  try {
1096
- const { scanUnmergedBranches } = await import("../branch-hygiene-R5NVTRAY.js");
1123
+ const { scanUnmergedBranchesCached } = await import("../branch-hygiene-TZWK6QCF.js");
1097
1124
  const STALE_HOURS = 24;
1098
- const scan = await scanUnmergedBranches(process.cwd(), { staleHours: STALE_HOURS });
1125
+ const scan = await scanUnmergedBranchesCached(process.cwd(), { staleHours: STALE_HOURS });
1099
1126
  if (scan.total > 0) {
1100
1127
  briefData.unmergedBranches = {
1101
1128
  total: scan.total,
@@ -1112,6 +1139,18 @@ async function boot(options) {
1112
1139
  }
1113
1140
  } catch {
1114
1141
  }
1142
+ try {
1143
+ const { getLocalMainAheadInfo } = await import("../git-main-guard-UZP3KXYI.js");
1144
+ const ahead = getLocalMainAheadInfo(process.cwd());
1145
+ if (ahead) {
1146
+ briefData.localMainAhead = {
1147
+ branch: ahead.branch,
1148
+ ahead: ahead.ahead,
1149
+ commits: ahead.commits
1150
+ };
1151
+ }
1152
+ } catch {
1153
+ }
1115
1154
  try {
1116
1155
  const { fileURLToPath } = await import("url");
1117
1156
  const thisFile = fileURLToPath(import.meta.url);
@@ -1129,7 +1168,7 @@ async function boot(options) {
1129
1168
  } catch {
1130
1169
  }
1131
1170
  try {
1132
- const { countKillsSince } = await import("../session-kill-telemetry-CZSPN5V6.js");
1171
+ const { countKillsSince } = await import("../session-kill-telemetry-AELE4JDK.js");
1133
1172
  const { listSessions: listRegistrySessions } = await import("../lib/session-registry.js");
1134
1173
  const todayStart = /* @__PURE__ */ new Date();
1135
1174
  todayStart.setHours(0, 0, 0, 0);
@@ -1146,8 +1185,14 @@ async function boot(options) {
1146
1185
  const brief = await generateStatusBrief(employees, briefData);
1147
1186
  let ccWarning = null;
1148
1187
  try {
1149
- const { ccNativeBinaryWarningLine } = await import("../cc-binary-detect-6TNIY5JX.js");
1150
- ccWarning = ccNativeBinaryWarningLine();
1188
+ const cached = readProbeCache("probe-cc-native.json", PROBE_CACHE_TTL_MS);
1189
+ if (cached !== void 0) {
1190
+ ccWarning = cached;
1191
+ } else {
1192
+ const { ccNativeBinaryWarningLine } = await import("../cc-binary-detect-6TNIY5JX.js");
1193
+ ccWarning = ccNativeBinaryWarningLine();
1194
+ writeProbeCache("probe-cc-native.json", ccWarning);
1195
+ }
1151
1196
  } catch {
1152
1197
  }
1153
1198
  if (briefOnly) {
@@ -1168,6 +1213,17 @@ ${ccWarning}`);
1168
1213
 
1169
1214
  ${brief}`;
1170
1215
  await writeFile(path.join(sessionDir, "CLAUDE.md"), claudeMdContent, "utf-8");
1216
+ try {
1217
+ const { getPlatformReferenceMarkdown } = await import("../platform-procedures-X5DFJFV7.js");
1218
+ const referenceDir = path.join(EXE_AI_DIR, "reference");
1219
+ await mkdir(referenceDir, { recursive: true });
1220
+ await writeFile(
1221
+ path.join(referenceDir, "platform-reference.md"),
1222
+ getPlatformReferenceMarkdown(),
1223
+ "utf-8"
1224
+ );
1225
+ } catch {
1226
+ }
1171
1227
  const notificationSessionScope = resolveExeSession();
1172
1228
  const unread = await readUnreadNotifications(void 0, notificationSessionScope);
1173
1229
  if (unread.length > 0) {
@@ -1227,7 +1283,7 @@ async function updateIdleKillSuspectStreak(client, killsToday, liveSessions, tod
1227
1283
  IDLE_KILL_STREAK_META_KEY,
1228
1284
  computeIdleKillSuspectStreak,
1229
1285
  parseStreakState
1230
- } = await import("../session-kill-telemetry-CZSPN5V6.js");
1286
+ } = await import("../session-kill-telemetry-AELE4JDK.js");
1231
1287
  const prevResult = await client.execute({
1232
1288
  sql: "SELECT value FROM sync_meta WHERE key = ?",
1233
1289
  args: [IDLE_KILL_STREAK_META_KEY]
@@ -1249,18 +1305,93 @@ async function updateIdleKillSuspectStreak(client, killsToday, liveSessions, tod
1249
1305
  return false;
1250
1306
  }
1251
1307
  }
1308
+ async function fetchTasksByFile(client, taskFilePaths) {
1309
+ const found = /* @__PURE__ */ new Map();
1310
+ const IN_CHUNK = 500;
1311
+ for (let i = 0; i < taskFilePaths.length; i += IN_CHUNK) {
1312
+ const chunk = taskFilePaths.slice(i, i + IN_CHUNK);
1313
+ if (chunk.length === 0) continue;
1314
+ const placeholders = chunk.map(() => "?").join(",");
1315
+ const res = await client.execute({
1316
+ // session_scope: intentionally unscoped (see above — reconciliation by file key).
1317
+ sql: `SELECT task_file, id, status FROM tasks WHERE task_file IN (${placeholders})`,
1318
+ args: chunk
1319
+ });
1320
+ for (const row of res.rows) {
1321
+ const tf = row.task_file == null ? "" : String(row.task_file);
1322
+ if (!tf) continue;
1323
+ found.set(tf, { id: String(row.id), status: String(row.status) });
1324
+ }
1325
+ }
1326
+ return found;
1327
+ }
1328
+ function reconcileSignature(files, dbTaskFileCount) {
1329
+ const h = createHash("sha256");
1330
+ h.update(`db:${dbTaskFileCount}
1331
+ `);
1332
+ for (const f of [...files].sort((a, b) => a.path < b.path ? -1 : a.path > b.path ? 1 : 0)) {
1333
+ h.update(`${f.path}\0${Math.round(f.mtimeMs)}
1334
+ `);
1335
+ }
1336
+ return h.digest("hex");
1337
+ }
1338
+ function reconcileStampPath() {
1339
+ const key = createHash("sha256").update(process.cwd()).digest("hex").slice(0, 16);
1340
+ return path.join(EXE_AI_DIR, "session-cache", `boot-reconcile-${key}`);
1341
+ }
1342
+ function readReconcileStamp() {
1343
+ try {
1344
+ return readFileSync(reconcileStampPath(), "utf8").trim() || null;
1345
+ } catch {
1346
+ return null;
1347
+ }
1348
+ }
1349
+ function writeReconcileStamp(signature) {
1350
+ try {
1351
+ mkdirSync(path.join(EXE_AI_DIR, "session-cache"), { recursive: true });
1352
+ writeFileSync(reconcileStampPath(), signature, "utf8");
1353
+ } catch {
1354
+ }
1355
+ }
1356
+ function readProbeCache(name, ttlMs) {
1357
+ try {
1358
+ const raw = JSON.parse(readFileSync(path.join(EXE_AI_DIR, "session-cache", name), "utf8"));
1359
+ if (typeof raw.ts !== "number" || Date.now() - raw.ts > ttlMs) return void 0;
1360
+ return raw.value;
1361
+ } catch {
1362
+ return void 0;
1363
+ }
1364
+ }
1365
+ function writeProbeCache(name, value) {
1366
+ try {
1367
+ mkdirSync(path.join(EXE_AI_DIR, "session-cache"), { recursive: true });
1368
+ writeFileSync(
1369
+ path.join(EXE_AI_DIR, "session-cache", name),
1370
+ JSON.stringify({ ts: Date.now(), value }),
1371
+ "utf8"
1372
+ );
1373
+ } catch {
1374
+ }
1375
+ }
1376
+ var PROBE_CACHE_TTL_MS = 12 * 60 * 60 * 1e3;
1252
1377
  function runSplash() {
1253
1378
  try {
1254
1379
  const config = loadConfigSync();
1255
1380
  if (!config.splashEffect) return;
1256
- try {
1257
- execSync("python3 -c 'import terminaltexteffects'", {
1258
- stdio: "ignore",
1259
- timeout: 3e3
1260
- });
1261
- } catch {
1262
- return;
1381
+ let hasTte = readProbeCache("probe-tte.json", PROBE_CACHE_TTL_MS);
1382
+ if (hasTte === void 0) {
1383
+ try {
1384
+ execSync("python3 -c 'import terminaltexteffects'", {
1385
+ stdio: "ignore",
1386
+ timeout: 3e3
1387
+ });
1388
+ hasTte = true;
1389
+ } catch {
1390
+ hasTte = false;
1391
+ }
1392
+ writeProbeCache("probe-tte.json", hasTte);
1263
1393
  }
1394
+ if (!hasTte) return;
1264
1395
  execSync(
1265
1396
  'echo "EXE OS" | python3 -m terminaltexteffects decrypt --typing-speed 2 --ciphertext-colors 6B4C9A F5D76E --final-gradient-stops F5D76E F0EDE8 --final-gradient-direction vertical',
1266
1397
  { stdio: "inherit", timeout: 5e3 }
@@ -1282,5 +1413,7 @@ if (isMainModule(import.meta.url)) {
1282
1413
  });
1283
1414
  }
1284
1415
  export {
1285
- boot
1416
+ boot,
1417
+ fetchTasksByFile,
1418
+ reconcileSignature
1286
1419
  };
@@ -1,25 +1,25 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  getSessionPrompt
4
- } from "../chunk-UXBD22CD.js";
5
- import "../chunk-I3XKO3KQ.js";
6
- import "../chunk-A47MXY2I.js";
4
+ } from "../chunk-XHK3FS3W.js";
5
+ import "../chunk-GJ26DULE.js";
6
+ import "../chunk-EQHQF5IM.js";
7
7
  import {
8
8
  DEFAULT_COORDINATOR_TEMPLATE_NAME,
9
9
  getCoordinatorName,
10
10
  getEmployee,
11
11
  loadEmployees
12
- } from "../chunk-HEPR6QTL.js";
12
+ } from "../chunk-AOHXREB7.js";
13
13
  import "../chunk-2I23RPSI.js";
14
- import "../chunk-ATOU6CYR.js";
14
+ import "../chunk-OLMQ4UOF.js";
15
15
  import "../chunk-PNQDP3OA.js";
16
16
  import "../chunk-H73TUI4Y.js";
17
17
  import "../chunk-7HLWBYH7.js";
18
18
  import "../chunk-FXU7JOXK.js";
19
19
  import {
20
20
  EXE_AI_DIR
21
- } from "../chunk-7Y5UDEVM.js";
22
- import "../chunk-SHIICYJW.js";
21
+ } from "../chunk-WZHZCDDO.js";
22
+ import "../chunk-BYTDMAGB.js";
23
23
  import {
24
24
  isMainModule
25
25
  } from "../chunk-6Y4B3QF6.js";
@@ -6,27 +6,27 @@ import {
6
6
  } from "../chunk-6KFICEAT.js";
7
7
  import {
8
8
  assertSecureEndpoint
9
- } from "../chunk-7WPOJDTA.js";
10
- import "../chunk-B75BOKEI.js";
11
- import "../chunk-QLFRCA6I.js";
12
- import "../chunk-TLYAEISW.js";
13
- import "../chunk-RNAYCUNM.js";
14
- import "../chunk-JCBKARSK.js";
15
- import "../chunk-UCQITDLM.js";
9
+ } from "../chunk-CNVBKDEY.js";
10
+ import "../chunk-NXUSDL37.js";
11
+ import "../chunk-NBZL5CGA.js";
12
+ import "../chunk-KW2SD2FL.js";
13
+ import "../chunk-S3THSOWV.js";
14
+ import "../chunk-IOEUAQWP.js";
15
+ import "../chunk-5TY4FPH6.js";
16
16
  import "../chunk-QGGH7LOU.js";
17
- import "../chunk-H37HHX3E.js";
17
+ import "../chunk-VSRPS3J7.js";
18
18
  import "../chunk-CHCA3ZM2.js";
19
19
  import "../chunk-OTVEIJUQ.js";
20
- import "../chunk-HHIBOU3P.js";
21
- import "../chunk-Y25OJWOQ.js";
22
- import "../chunk-7TS64TBG.js";
20
+ import "../chunk-6XWTQUO4.js";
21
+ import "../chunk-4QCFFW2H.js";
22
+ import "../chunk-G4RGKBCA.js";
23
23
  import "../chunk-AFNRE2RV.js";
24
- import "../chunk-3NGZ4PL7.js";
24
+ import "../chunk-X2Q5NLUL.js";
25
25
  import "../chunk-NLEW62VC.js";
26
26
  import "../chunk-MP2AFCGL.js";
27
- import "../chunk-HEPR6QTL.js";
27
+ import "../chunk-AOHXREB7.js";
28
28
  import "../chunk-2I23RPSI.js";
29
- import "../chunk-ATOU6CYR.js";
29
+ import "../chunk-OLMQ4UOF.js";
30
30
  import "../chunk-PNQDP3OA.js";
31
31
  import "../chunk-H73TUI4Y.js";
32
32
  import "../chunk-7HLWBYH7.js";
@@ -37,14 +37,14 @@ import {
37
37
  getMasterKey,
38
38
  importMnemonic,
39
39
  setMasterKey
40
- } from "../chunk-Z42MXYWW.js";
41
- import "../chunk-XACL67CS.js";
42
- import "../chunk-5Z5NATNS.js";
40
+ } from "../chunk-QWVXN224.js";
41
+ import "../chunk-PQIDGXSG.js";
42
+ import "../chunk-K7KFGDWF.js";
43
43
  import {
44
44
  loadConfig,
45
45
  saveConfig
46
- } from "../chunk-7Y5UDEVM.js";
47
- import "../chunk-SHIICYJW.js";
46
+ } from "../chunk-WZHZCDDO.js";
47
+ import "../chunk-BYTDMAGB.js";
48
48
  import {
49
49
  isMainModule
50
50
  } from "../chunk-6Y4B3QF6.js";
@@ -330,7 +330,7 @@ async function linkMode() {
330
330
  if (showFull) {
331
331
  console.log(` ${mnemonic}
332
332
  `);
333
- const { markKeyBackupConfirmed } = await import("../key-backup-status-TNEHXA2X.js");
333
+ const { markKeyBackupConfirmed } = await import("../key-backup-status-LOSMVATJ.js");
334
334
  markKeyBackupConfirmed("exe-os cloud link --show-full");
335
335
  } else {
336
336
  const words = mnemonic.split(" ");
@@ -6,28 +6,29 @@ import {
6
6
  import {
7
7
  AGENT_CONFIG_PATH,
8
8
  loadAgentConfig
9
- } from "../chunk-65SVQELL.js";
10
- import {
11
- DEFAULT_RUNTIME
12
- } from "../chunk-NGP6LSV2.js";
9
+ } from "../chunk-HA5R6USD.js";
10
+ import "../chunk-AM7S2TY6.js";
13
11
  import {
14
12
  EMPLOYEES_PATH,
15
13
  loadEmployeesSync
16
- } from "../chunk-HEPR6QTL.js";
14
+ } from "../chunk-AOHXREB7.js";
17
15
  import "../chunk-2I23RPSI.js";
18
- import "../chunk-ATOU6CYR.js";
16
+ import "../chunk-OLMQ4UOF.js";
19
17
  import "../chunk-PNQDP3OA.js";
20
18
  import "../chunk-H73TUI4Y.js";
21
19
  import "../chunk-7HLWBYH7.js";
22
20
  import "../chunk-FXU7JOXK.js";
21
+ import {
22
+ DEFAULT_RUNTIME
23
+ } from "../chunk-NGP6LSV2.js";
23
24
  import {
24
25
  CONFIG_PATH,
25
26
  DB_PATH,
26
27
  EXE_AI_DIR,
27
28
  MODELS_DIR,
28
29
  loadConfigSync
29
- } from "../chunk-7Y5UDEVM.js";
30
- import "../chunk-SHIICYJW.js";
30
+ } from "../chunk-WZHZCDDO.js";
31
+ import "../chunk-BYTDMAGB.js";
31
32
  import {
32
33
  isMainModule
33
34
  } from "../chunk-6Y4B3QF6.js";
@@ -1,33 +1,34 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  fastDbInit
4
- } from "../chunk-UFAXZ2PY.js";
4
+ } from "../chunk-PWUFMX75.js";
5
5
  import {
6
6
  createTaskCore,
7
7
  ensureEmployee,
8
8
  resolveExeSession
9
- } from "../chunk-PLRIJALF.js";
10
- import "../chunk-OFX5B2S7.js";
11
- import "../chunk-B76TSEP3.js";
12
- import "../chunk-RLRT2BVM.js";
9
+ } from "../chunk-UP75Z5X7.js";
10
+ import "../chunk-L2R3LN2P.js";
11
+ import "../chunk-I26FWCSP.js";
12
+ import "../chunk-EV46QTD3.js";
13
+ import "../chunk-E23LNUWJ.js";
13
14
  import "../chunk-4JERP7NT.js";
14
15
  import "../chunk-EIKATSE4.js";
15
- import "../chunk-E23LNUWJ.js";
16
- import "../chunk-UIV2WPBT.js";
17
- import "../chunk-SSTLTIF3.js";
18
- import "../chunk-RMOBQ6A5.js";
19
- import "../chunk-54QCG45Y.js";
20
- import "../chunk-FUIIVSW6.js";
21
- import "../chunk-65SVQELL.js";
22
- import "../chunk-NGP6LSV2.js";
23
- import "../chunk-MW2GJJ53.js";
16
+ import "../chunk-KGWRTRKC.js";
17
+ import "../chunk-AD2VCHSS.js";
18
+ import "../chunk-WOYADZF5.js";
19
+ import "../chunk-SKGMF2SO.js";
20
+ import "../chunk-2WAVZ5UJ.js";
21
+ import "../chunk-HA5R6USD.js";
22
+ import "../chunk-AM7S2TY6.js";
23
+ import "../chunk-JGIPOUIK.js";
24
+ import "../chunk-GWDSB25T.js";
24
25
  import "../chunk-CVYC6DUW.js";
25
- import "../chunk-2233TQCA.js";
26
- import "../chunk-HCJCW7X4.js";
26
+ import "../chunk-JLZ4RYSD.js";
27
+ import "../chunk-H7I47RS5.js";
27
28
  import "../chunk-OPU3NYOO.js";
28
- import "../chunk-7TS64TBG.js";
29
+ import "../chunk-G4RGKBCA.js";
29
30
  import "../chunk-AFNRE2RV.js";
30
- import "../chunk-3NGZ4PL7.js";
31
+ import "../chunk-X2Q5NLUL.js";
31
32
  import "../chunk-NLEW62VC.js";
32
33
  import "../chunk-HYZV25LY.js";
33
34
  import "../chunk-GJV3WDWM.js";
@@ -37,17 +38,18 @@ import {
37
38
  getEmployee,
38
39
  isCoordinatorName,
39
40
  loadEmployeesSync
40
- } from "../chunk-HEPR6QTL.js";
41
+ } from "../chunk-AOHXREB7.js";
41
42
  import "../chunk-2I23RPSI.js";
42
- import "../chunk-ATOU6CYR.js";
43
+ import "../chunk-OLMQ4UOF.js";
43
44
  import "../chunk-PNQDP3OA.js";
44
45
  import "../chunk-H73TUI4Y.js";
45
46
  import "../chunk-7HLWBYH7.js";
46
47
  import "../chunk-FXU7JOXK.js";
47
- import "../chunk-XACL67CS.js";
48
- import "../chunk-5Z5NATNS.js";
49
- import "../chunk-7Y5UDEVM.js";
50
- import "../chunk-SHIICYJW.js";
48
+ import "../chunk-NGP6LSV2.js";
49
+ import "../chunk-PQIDGXSG.js";
50
+ import "../chunk-K7KFGDWF.js";
51
+ import "../chunk-WZHZCDDO.js";
52
+ import "../chunk-BYTDMAGB.js";
51
53
  import "../chunk-MLKGABMK.js";
52
54
 
53
55
  // src/bin/exe-dispatch.ts