@askexenow/exe-os 0.9.341 → 0.9.343

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 (435) 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-LW45DSJ4.js → active-agent-MDGDKGCL.js} +5 -5
  7. package/dist/{active-agent-AIQP4DFL.js → active-agent-SNVSJFI5.js} +5 -5
  8. package/dist/{agentic-ontology-RVUNRCQY.js → agentic-ontology-SCG6UUHK.js} +1 -1
  9. package/dist/{backfill-gate-J7UXFNXU.js → backfill-gate-HARARX5F.js} +3 -3
  10. package/dist/{backfill-metadata-ZSDJ4O2T.js → backfill-metadata-SCQ5FPDR.js} +8 -8
  11. package/dist/{background-jobs-STURKDCS.js → background-jobs-KKRO3QRO.js} +3 -3
  12. package/dist/{backup-verify-ZAJLEL4X.js → backup-verify-KDLOT4RP.js} +4 -4
  13. package/dist/{behaviors-EO7KCP3H.js → behaviors-MICGF3H3.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 +19 -19
  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 +27 -24
  24. package/dist/bin/cli.js +79 -25
  25. package/dist/bin/customer-readiness.js +1 -1
  26. package/dist/bin/daemon-restart-handoff.js +27 -0
  27. package/dist/bin/deferred-daemon-restart.js +132 -99
  28. package/dist/bin/exe-agent-config.js +9 -8
  29. package/dist/bin/exe-agent.js +19 -19
  30. package/dist/bin/exe-assign.js +12 -12
  31. package/dist/bin/exe-boot.js +202 -68
  32. package/dist/bin/exe-call.js +7 -7
  33. package/dist/bin/exe-cloud.js +20 -20
  34. package/dist/bin/exe-config-dump.js +9 -8
  35. package/dist/bin/exe-dispatch.js +27 -24
  36. package/dist/bin/exe-doctor.js +10 -6
  37. package/dist/bin/exe-export-behaviors.js +13 -13
  38. package/dist/bin/exe-forget.js +14 -12
  39. package/dist/bin/exe-gateway.js +15 -10
  40. package/dist/bin/exe-grant.js +5 -5
  41. package/dist/bin/exe-healthcheck.js +14 -8
  42. package/dist/bin/exe-heartbeat.js +30 -28
  43. package/dist/bin/exe-kill.js +34 -31
  44. package/dist/bin/exe-launch-agent.js +146 -70
  45. package/dist/bin/exe-memory-reads.js +257 -0
  46. package/dist/bin/exe-new-employee.js +12 -11
  47. package/dist/bin/exe-os-mcp-proxy.js +365 -0
  48. package/dist/bin/exe-pending-messages.js +28 -25
  49. package/dist/bin/exe-pending-notifications.js +27 -24
  50. package/dist/bin/exe-pending-reviews.js +27 -24
  51. package/dist/bin/exe-rename.js +7 -7
  52. package/dist/bin/exe-review.js +33 -30
  53. package/dist/bin/exe-search.js +11 -9
  54. package/dist/bin/exe-session-cleanup.js +117 -86
  55. package/dist/bin/exe-settings.js +24 -23
  56. package/dist/bin/exe-start-codex.js +163 -41
  57. package/dist/bin/exe-start-opencode.js +15 -15
  58. package/dist/bin/exe-status.js +28 -25
  59. package/dist/bin/exe-support.js +5 -5
  60. package/dist/bin/exe-team.js +5 -5
  61. package/dist/bin/exe-timers.js +32 -213
  62. package/dist/bin/exe-watchdog.js +6 -5
  63. package/dist/bin/git-sweep.js +28 -25
  64. package/dist/bin/graph-backfill.js +11 -11
  65. package/dist/bin/graph-export.js +11 -11
  66. package/dist/bin/import-history.js +13 -13
  67. package/dist/bin/install.js +106 -99
  68. package/dist/bin/intercom-check.js +4 -4
  69. package/dist/bin/mcp-sessions.js +2 -2
  70. package/dist/bin/orchestration-metrics.js +6 -6
  71. package/dist/bin/postgres-agentic-reflection-backfill.js +5 -5
  72. package/dist/bin/postgres-agentic-semantic-backfill.js +7 -7
  73. package/dist/bin/pre-publish.js +5 -3
  74. package/dist/bin/reconcile-backlog.js +2 -2
  75. package/dist/bin/registry-proxy.js +1 -1
  76. package/dist/bin/scan-tasks.js +27 -24
  77. package/dist/bin/setup.js +6 -5
  78. package/dist/bin/shard-migrate.js +9 -9
  79. package/dist/bin/stack-update.js +6 -6
  80. package/dist/bin/update.js +1 -1
  81. package/dist/bin/vps-health-gate.js +1 -1
  82. package/dist/{boot-generation-GSMPJOWM.js → boot-generation-CFA5NKSK.js} +5 -5
  83. package/dist/boot-review-sections-FX2FYZJQ.js +108 -0
  84. package/dist/branch-hygiene-PILXQQDF.js +224 -0
  85. package/dist/{branding-JTEOF4ZV.js → branding-ZSC6YN63.js} +3 -3
  86. package/dist/{browser-session-store-CXQMOSEC.js → browser-session-store-B2NR3LIX.js} +2 -1
  87. package/dist/{capability-cards-OBYQNAKZ.js → capability-cards-O27UB3J5.js} +4 -4
  88. package/dist/{capacity-monitor-MG3FTUD5.js → capacity-monitor-5DVZY3SM.js} +28 -25
  89. package/dist/{catchup-brief-BVJOF3GL.js → catchup-brief-3GYI6AKV.js} +33 -29
  90. package/dist/{chunk-LEJ25726.js → chunk-25ORSHR7.js} +660 -444
  91. package/dist/{chunk-Q5AIPSSC.js → chunk-25X4JD2V.js} +10 -6
  92. package/dist/{chunk-MJB5ZFQM.js → chunk-2F7WGH5K.js} +57 -6
  93. package/dist/{chunk-LLU6WZLK.js → chunk-2VZMLKNS.js} +2 -2
  94. package/dist/{chunk-YWQMWFYR.js → chunk-2YPCD2UH.js} +24 -18
  95. package/dist/{chunk-L2YGXJGF.js → chunk-34RULPS2.js} +3 -3
  96. package/dist/{chunk-CLAYNAXC.js → chunk-3EUMUSLE.js} +1 -1
  97. package/dist/{chunk-KP4PY2Z2.js → chunk-3MLSM77R.js} +4 -4
  98. package/dist/{chunk-4LWV633D.js → chunk-3OO34BOT.js} +1 -1
  99. package/dist/{chunk-IELUDZAA.js → chunk-3OR54BBE.js} +3 -3
  100. package/dist/{chunk-Y3S4H77G.js → chunk-3PFP7GV2.js} +1 -1
  101. package/dist/{chunk-DPFQ2WQX.js → chunk-4AA2HRIM.js} +4 -4
  102. package/dist/{chunk-7SEC2AG5.js → chunk-4E3SZEEI.js} +13 -4
  103. package/dist/chunk-4EI5AHHR.js +37 -0
  104. package/dist/{chunk-7LF5DS3A.js → chunk-4MLSFZLY.js} +20 -9
  105. package/dist/{chunk-EDOO23B2.js → chunk-4N2NRGCM.js} +2 -2
  106. package/dist/chunk-4QCFFW2H.js +378 -0
  107. package/dist/{chunk-DNVFWFYF.js → chunk-4UIYLTA3.js} +1 -1
  108. package/dist/{chunk-BJOBR6P2.js → chunk-4VUAG6DN.js} +216 -9
  109. package/dist/{chunk-32YHCHWW.js → chunk-54O2FWRM.js} +1 -1
  110. package/dist/chunk-5DSVWSL5.js +91 -0
  111. package/dist/{chunk-2YCFNBC4.js → chunk-5ERB3AWT.js} +3 -2
  112. package/dist/{chunk-J6SEDDOR.js → chunk-5GDTZOVS.js} +2 -2
  113. package/dist/chunk-5H47VHB7.js +30 -0
  114. package/dist/{chunk-NTI22F3R.js → chunk-5HQHHQUR.js} +1 -1
  115. package/dist/chunk-5MLYU6I2.js +76 -0
  116. package/dist/{chunk-3NGZ4PL7.js → chunk-5VV2YMMB.js} +11 -2
  117. package/dist/{chunk-AP455LBW.js → chunk-62MYX7G4.js} +2 -2
  118. package/dist/{chunk-CCIEIRV2.js → chunk-6CYVBLZW.js} +2 -2
  119. package/dist/{chunk-6BQG7EKO.js → chunk-6IK2ME5X.js} +2 -2
  120. package/dist/{chunk-HJX6NCJF.js → chunk-6JMRRJD6.js} +39 -10
  121. package/dist/{chunk-A47MXY2I.js → chunk-6L6SXVTP.js} +58 -24
  122. package/dist/{chunk-BR4423AS.js → chunk-6ST7ZWTV.js} +1 -1
  123. package/dist/{chunk-5ZNY7IZI.js → chunk-6TJLBXR5.js} +66 -7
  124. package/dist/{chunk-4FJZ6SO7.js → chunk-6XKIMGHA.js} +1 -1
  125. package/dist/{chunk-AYLNJGCS.js → chunk-735SUAT4.js} +93 -12
  126. package/dist/chunk-76CJBM36.js +88 -0
  127. package/dist/{chunk-C445WRUX.js → chunk-7M5AWCR3.js} +2 -2
  128. package/dist/{chunk-LOBCQXV5.js → chunk-7MESPFOK.js} +4 -4
  129. package/dist/{chunk-B7CUBLF7.js → chunk-7S3A4TOL.js} +12 -12
  130. package/dist/{chunk-2C455MU3.js → chunk-7UNIYLGV.js} +29 -5
  131. package/dist/{chunk-RMOBQ6A5.js → chunk-AD2VCHSS.js} +1 -1
  132. package/dist/{chunk-FOV57K47.js → chunk-AGHKOBA6.js} +258 -14
  133. package/dist/chunk-AM7S2TY6.js +54 -0
  134. package/dist/{chunk-GOGSWXNZ.js → chunk-B4LOFZLB.js} +277 -137
  135. package/dist/{chunk-LA2Z6RMS.js → chunk-BUI2CHLQ.js} +1 -1
  136. package/dist/{chunk-WWNQFOSP.js → chunk-BVURFD5R.js} +2 -2
  137. package/dist/{chunk-ITMEE7PQ.js → chunk-BXSC34Y2.js} +3 -3
  138. package/dist/{chunk-SHIICYJW.js → chunk-BYTDMAGB.js} +4 -2
  139. package/dist/{chunk-JSKBHUR7.js → chunk-BZA4N43B.js} +2 -2
  140. package/dist/{chunk-GPW32HVB.js → chunk-C24F7SOO.js} +4 -4
  141. package/dist/{chunk-BJ23BNED.js → chunk-CBD64QQG.js} +1 -1
  142. package/dist/chunk-D74XYSA3.js +621 -0
  143. package/dist/{chunk-2WMTTIAZ.js → chunk-DHW4DIGK.js} +2 -2
  144. package/dist/{chunk-6MVI4QH2.js → chunk-DLGEQJ6E.js} +1 -1
  145. package/dist/{chunk-TWXZM34M.js → chunk-DT6LX4SV.js} +6 -6
  146. package/dist/{chunk-I7ECEP3W.js → chunk-E4FGXPHB.js} +43 -6
  147. package/dist/{chunk-XQNNB5GY.js → chunk-F55P3H4S.js} +37 -2
  148. package/dist/{chunk-W6K4XB6G.js → chunk-FCKYJSVY.js} +1 -1
  149. package/dist/{chunk-MC4ATFJV.js → chunk-FQEBVYVE.js} +6 -6
  150. package/dist/{chunk-RWSLVYTE.js → chunk-GD7FA6IP.js} +356 -124
  151. package/dist/{chunk-TIXTHUVJ.js → chunk-GGQMX4IU.js} +3 -3
  152. package/dist/chunk-GL57PO3K.js +104 -0
  153. package/dist/chunk-GWDSB25T.js +6 -0
  154. package/dist/{chunk-HSYJ6DZ2.js → chunk-H6BVQIAF.js} +39 -24
  155. package/dist/{chunk-KPIN44GZ.js → chunk-H6WLWIPN.js} +1 -1
  156. package/dist/{chunk-KKOLHBNC.js → chunk-HDL7CXQ4.js} +958 -215
  157. package/dist/{chunk-CMR64RYM.js → chunk-HENPNYGY.js} +13 -13
  158. package/dist/{chunk-32SXNM3G.js → chunk-HRBTW62M.js} +1 -1
  159. package/dist/{chunk-BV6GBSRP.js → chunk-IKAGAKAI.js} +249 -28
  160. package/dist/{chunk-JCBKARSK.js → chunk-IOEUAQWP.js} +1 -1
  161. package/dist/{chunk-PVIH3ZGV.js → chunk-IPB5QM4S.js} +90 -10
  162. package/dist/{chunk-B75BOKEI.js → chunk-IRUWKANS.js} +2 -2
  163. package/dist/{chunk-YHUNDGVV.js → chunk-JBMIIBPS.js} +1 -1
  164. package/dist/{chunk-2IWBY7XK.js → chunk-JLLJ3ER3.js} +2 -2
  165. package/dist/{chunk-N7A5D25S.js → chunk-JMMF3PPQ.js} +1 -1
  166. package/dist/{chunk-WNKVKNOM.js → chunk-K2G3VDCV.js} +1 -1
  167. package/dist/{chunk-BVV6NHKQ.js → chunk-KIUNO3JP.js} +5 -5
  168. package/dist/{chunk-OUEFW4RK.js → chunk-KRRZNASS.js} +2 -2
  169. package/dist/{chunk-IB336P52.js → chunk-L5GFREAH.js} +1 -1
  170. package/dist/{chunk-6QW6JHRE.js → chunk-LSAH73QD.js} +59 -32
  171. package/dist/chunk-LUQ57SRM.js +127 -0
  172. package/dist/{sweep-budget-WB2FKPYN.js → chunk-M6DZYWZH.js} +8 -3
  173. package/dist/{chunk-2UGGBIDL.js → chunk-MNIA3IOU.js} +3 -3
  174. package/dist/{chunk-3BRVLPPA.js → chunk-MOPUCPXK.js} +4 -0
  175. package/dist/{chunk-K6KRBXQP.js → chunk-MTFSD6DH.js} +3 -2
  176. package/dist/{chunk-PTJBWC77.js → chunk-MVWFY7IO.js} +4 -3
  177. package/dist/chunk-MVYB76QG.js +341 -0
  178. package/dist/{chunk-DGGDUKH6.js → chunk-NDJASAXP.js} +1 -1
  179. package/dist/{chunk-PPZOWQHP.js → chunk-NG2ABIDX.js} +1 -1
  180. package/dist/{chunk-TPHCZDE3.js → chunk-NPFU2NPG.js} +1 -1
  181. package/dist/{chunk-T2PYVVZ5.js → chunk-NUVP4CCD.js} +1 -1
  182. package/dist/chunk-O5VMAZZH.js +40 -0
  183. package/dist/chunk-O7LWR36Z.js +269 -0
  184. package/dist/{chunk-7Y5UDEVM.js → chunk-OL4JFQ2T.js} +7 -5
  185. package/dist/{chunk-HUSVERE6.js → chunk-OZUQJZYO.js} +7 -6
  186. package/dist/{chunk-NDSNM5OH.js → chunk-PAYVSTF2.js} +1 -1
  187. package/dist/chunk-PWRC5XZO.js +161 -0
  188. package/dist/{chunk-ZNE6H2JO.js → chunk-PXPBF2JZ.js} +4 -4
  189. package/dist/{chunk-ATKW3SYL.js → chunk-QFBT7CJH.js} +1 -1
  190. package/dist/{chunk-WH7XN5ER.js → chunk-QTKDGDR5.js} +1 -1
  191. package/dist/{chunk-Z42MXYWW.js → chunk-QWVXN224.js} +110 -28
  192. package/dist/{chunk-UU4UINUX.js → chunk-R3QDXB55.js} +13 -3
  193. package/dist/{chunk-IXBIVKWZ.js → chunk-RZZ66LSS.js} +98 -21
  194. package/dist/chunk-S3FIQCSM.js +232 -0
  195. package/dist/{chunk-RNAYCUNM.js → chunk-S3THSOWV.js} +1 -1
  196. package/dist/{chunk-HAZO7TRD.js → chunk-SA7GZU3U.js} +1 -1
  197. package/dist/{chunk-NFBW7N4D.js → chunk-SIGS6D5R.js} +2 -2
  198. package/dist/chunk-SJN5ZEDI.js +265 -0
  199. package/dist/{chunk-SSTLTIF3.js → chunk-SKGMF2SO.js} +25 -2
  200. package/dist/{chunk-CYA5S5OD.js → chunk-SLK3DPYU.js} +6 -5
  201. package/dist/{chunk-MWZFF3Q7.js → chunk-SXKMH4JX.js} +1 -1
  202. package/dist/{chunk-WD55PEBM.js → chunk-T3EJIMDX.js} +4 -4
  203. package/dist/{chunk-2P4WJNN5.js → chunk-TI2XFHRQ.js} +11 -7
  204. package/dist/{chunk-UIU2DGRV.js → chunk-TR73G4GH.js} +4 -4
  205. package/dist/{task-enforcement-X5QVL6RE.js → chunk-UC37QPSR.js} +173 -69
  206. package/dist/chunk-UU4FHMON.js +186 -0
  207. package/dist/{chunk-HNLXMD2V.js → chunk-UZ2LYBY5.js} +2 -2
  208. package/dist/{chunk-6D2PI4QD.js → chunk-V7AGCRLI.js} +1 -1
  209. package/dist/chunk-VIIHBYIP.js +335 -0
  210. package/dist/{chunk-54QCG45Y.js → chunk-WOYADZF5.js} +56 -5
  211. package/dist/{chunk-GFDGDFBF.js → chunk-WYRZEMRU.js} +22 -5
  212. package/dist/{chunk-BMHQPIJ2.js → chunk-WZTWA4G4.js} +585 -75
  213. package/dist/chunk-X4Z5DPOC.js +54 -0
  214. package/dist/{chunk-6MVC43X7.js → chunk-XZTTLTPG.js} +4 -4
  215. package/dist/{chunk-U2MREVXQ.js → chunk-YCPZTX7V.js} +2 -2
  216. package/dist/{chunk-YIIME2OW.js → chunk-YLXTKI6M.js} +1 -1
  217. package/dist/{chunk-4QSJVMMT.js → chunk-YYCKKORY.js} +13 -20
  218. package/dist/{chunk-YLQXP7T7.js → chunk-Z5VL7YBR.js} +1 -1
  219. package/dist/{chunk-XSMRR4IW.js → chunk-ZCLVPTZU.js} +26 -27
  220. package/dist/{chunk-5RACW3LX.js → chunk-ZUBUP66T.js} +1 -1
  221. package/dist/{chunk-EDH54E5A.js → chunk-ZYLKX3KB.js} +14 -14
  222. package/dist/{cleanup-graph-garbage-MXQ4Q2MA.js → cleanup-graph-garbage-DDVPSPI4.js} +8 -8
  223. package/dist/{co-activation-QI5BK4RT.js → co-activation-HLCAD44L.js} +4 -4
  224. package/dist/{co-occurrence-BYSQNZSV.js → co-occurrence-I5U2PCPX.js} +6 -6
  225. package/dist/{code-context-index-BNBHDXHW.js → code-context-index-FSYP5VF2.js} +5 -5
  226. package/dist/{content-extractor-JRJDNIHP.js → content-extractor-NXYNEF5K.js} +2 -2
  227. package/dist/{conversation-entity-extractor-FPAMTL3C.js → conversation-entity-extractor-D3EFTLT4.js} +2 -2
  228. package/dist/{conversation-wiki-populator-WU4HEQ7C.js → conversation-wiki-populator-YVT5AYSK.js} +1 -1
  229. package/dist/{crdt-sync-ETPKNBCU.js → crdt-sync-EMV5EZ4J.js} +8 -1
  230. package/dist/{crm-webhook-M566ZMZS.js → crm-webhook-XJ6UOBHR.js} +2 -2
  231. package/dist/cto-delegation-gate-5NNZWP2M.js +670 -0
  232. package/dist/{daemon-auth-7IFSV5FG.js → daemon-auth-TIE7HSWF.js} +5 -3
  233. package/dist/{daemon-orchestration-XV5GN73R.js → daemon-orchestration-GGSRCXR3.js} +47 -27
  234. package/dist/{daemon-ready-RKKB4P6K.js → daemon-ready-A7R6XZRF.js} +1 -1
  235. package/dist/{daemon-ready-signal-WKEJQNRA.js → daemon-ready-signal-LPAZWQOV.js} +3 -1
  236. package/dist/daemon-restart-circuit-breaker-5V6B6NLS.js +35 -0
  237. package/dist/daemon-timer-report-NM44WQRH.js +25 -0
  238. package/dist/{db-restore-events-JVEEP52Z.js → db-restore-events-GQGQSYHV.js} +2 -2
  239. package/dist/dispatch-ack-VYH3ONSS.js +27 -0
  240. package/dist/{doc-graph-extractor-LR5KMPH7.js → doc-graph-extractor-3OXUTEKS.js} +6 -6
  241. package/dist/{documents-FA6N7QDA.js → documents-M7UI6SZ6.js} +12 -12
  242. package/dist/dreaming-CYQWRJA5.js +47 -0
  243. package/dist/{exe-drift-TUKTCXZE.js → exe-drift-DPDRG3OM.js} +5 -5
  244. package/dist/{exe-export-ZLHBXMZC.js → exe-export-SZVIC6KI.js} +11 -11
  245. package/dist/{exe-import-VVKBZWSA.js → exe-import-Q6TCHQ6P.js} +11 -11
  246. package/dist/{exe-key-QJXFBF6G.js → exe-key-EVMVLB3Y.js} +244 -229
  247. package/dist/{exe-org-BGZNNE4H.js → exe-org-3Y3RWGIU.js} +3 -3
  248. package/dist/{exe-snapshot-JRLUO645.js → exe-snapshot-UX5CFSDX.js} +32 -29
  249. package/dist/{fast-db-init-JKJEEHUI.js → fast-db-init-O62SMAQL.js} +1 -1
  250. package/dist/{founder-context-HWPLMZVR.js → founder-context-FCVTBCWI.js} +4 -4
  251. package/dist/gateway/index.js +21 -21
  252. package/dist/{gateway-client-GRBOJQYC.js → gateway-client-7LMZKHTH.js} +1 -1
  253. package/dist/git-main-guard-UZP3KXYI.js +39 -0
  254. package/dist/{git-staleness-X5XZONX3.js → git-staleness-AFBXWNTZ.js} +4 -4
  255. package/dist/{global-procedures-VIIVWB6R.js → global-procedures-BDREAJSZ.js} +6 -6
  256. package/dist/{graph-auto-extract-HCQQF5AG.js → graph-auto-extract-JJ5OGNGJ.js} +6 -6
  257. package/dist/{graph-rag-WAK2BRJH.js → graph-rag-JZZAB7PC.js} +2 -2
  258. package/dist/{hook-integrity-WURH6DS3.js → hook-integrity-IKKZ6HBC.js} +1 -1
  259. package/dist/hook-prefetch-HLCCAOSZ.js +138 -0
  260. package/dist/hooks/bug-report-worker.js +33 -28
  261. package/dist/hooks/codex-stop-task-finalizer.js +33 -28
  262. package/dist/hooks/commit-complete.js +30 -27
  263. package/dist/hooks/error-recall.js +16 -15
  264. package/dist/hooks/exe-heartbeat-hook.js +6 -6
  265. package/dist/hooks/ingest-worker.js +11 -11
  266. package/dist/hooks/ingest.js +23 -23
  267. package/dist/hooks/instructions-loaded.js +7 -7
  268. package/dist/hooks/manifest.json +20 -20
  269. package/dist/hooks/notification.js +7 -7
  270. package/dist/hooks/post-compact.js +29 -26
  271. package/dist/hooks/post-tool-combined.js +25 -12
  272. package/dist/hooks/pre-compact.js +30 -27
  273. package/dist/hooks/pre-tool-use.js +181 -47
  274. package/dist/hooks/prompt-submit.js +343 -279
  275. package/dist/hooks/session-end.js +36 -33
  276. package/dist/hooks/session-start.js +28 -21
  277. package/dist/hooks/stop.js +36 -33
  278. package/dist/hooks/subagent-stop.js +29 -26
  279. package/dist/hooks/summary-worker.js +37 -34
  280. package/dist/index.js +39 -36
  281. package/dist/{installer-T2LGHZKL.js → installer-BZ3QV7DJ.js} +9 -9
  282. package/dist/{installer-NX2CLNV5.js → installer-HADQQZIU.js} +9 -9
  283. package/dist/{installer-6IFVEQI4.js → installer-OJ7XKSAR.js} +9 -9
  284. package/dist/{intercom-queue-KYHXXZCQ.js → intercom-queue-NFOLOBTT.js} +26 -23
  285. package/dist/{key-backup-status-TNEHXA2X.js → key-backup-status-TTO2UUYP.js} +2 -2
  286. package/dist/lib/agent-config.js +4 -3
  287. package/dist/lib/cloud-sync.js +19 -19
  288. package/dist/lib/config.js +2 -2
  289. package/dist/lib/consolidation.js +11 -11
  290. package/dist/lib/crypto.js +3 -3
  291. package/dist/lib/database.js +6 -4
  292. package/dist/{db-backup-MX2G3CEK.js → lib/db-backup.js} +28 -6
  293. package/dist/lib/db-checkpoint-worker.js +57 -0
  294. package/dist/lib/db-daemon-client.js +5 -5
  295. package/dist/lib/db-read-worker-client.js +9 -3
  296. package/dist/lib/db-write-worker-client.js +17 -0
  297. package/dist/lib/db-write-worker.js +216 -0
  298. package/dist/lib/db.js +6 -4
  299. package/dist/lib/device-registry.js +3 -3
  300. package/dist/lib/embed-worker.js +2 -2
  301. package/dist/lib/embedder.js +5 -5
  302. package/dist/lib/employee-templates.js +7 -7
  303. package/dist/lib/employees.js +10 -4
  304. package/dist/lib/exe-daemon-client.js +4 -4
  305. package/dist/lib/exe-daemon.js +1292 -363
  306. package/dist/lib/hybrid-search.js +11 -9
  307. package/dist/lib/identity.js +4 -4
  308. package/dist/lib/keychain.js +1 -1
  309. package/dist/lib/license.js +4 -4
  310. package/dist/lib/messaging.js +29 -24
  311. package/dist/lib/post-tool-memory.js +3 -3
  312. package/dist/lib/registry-proxy.js +1 -1
  313. package/dist/lib/reminders.js +15 -7
  314. package/dist/lib/schedules.js +9 -9
  315. package/dist/lib/session-registry.js +6 -6
  316. package/dist/lib/skill-learning.js +10 -10
  317. package/dist/lib/status-brief.js +4 -4
  318. package/dist/lib/store.js +8 -8
  319. package/dist/lib/task-router.js +5 -5
  320. package/dist/lib/tasks.js +30 -25
  321. package/dist/lib/tmux-routing.js +57 -25
  322. package/dist/lib/tmux-status.js +9 -3
  323. package/dist/lib/tmux-transport.js +1 -1
  324. package/dist/lib/token-spend.js +5 -5
  325. package/dist/lib/transport.js +2 -2
  326. package/dist/lib/ws-client.js +1 -1
  327. package/dist/{license-gate-MGDR4YNI.js → license-gate-3KPSNYVA.js} +5 -5
  328. package/dist/{license-sync-UWE6GEB4.js → license-sync-CQ42HDBA.js} +4 -4
  329. package/dist/mcp/register-tools.js +99 -92
  330. package/dist/mcp/server.js +102 -95
  331. package/dist/mcp/tools/complete-reminder.js +6 -6
  332. package/dist/mcp/tools/create-reminder.js +6 -6
  333. package/dist/mcp/tools/create-task.js +38 -28
  334. package/dist/mcp/tools/deactivate-behavior.js +11 -11
  335. package/dist/mcp/tools/list-reminders.js +6 -6
  336. package/dist/mcp/tools/list-tasks.js +36 -29
  337. package/dist/mcp/tools/send-message.js +29 -26
  338. package/dist/mcp/tools/update-task.js +35 -28
  339. package/dist/{mcp-http-config-RQLYEPTL.js → mcp-http-config-BHAM376G.js} +9 -7
  340. package/dist/mcp-port-config-PA3W3BJK.js +16 -0
  341. package/dist/mcp-session-identity-S7GSVRR6.js +178 -0
  342. package/dist/mcp-session-persist-PS7BIG44.js +62 -0
  343. package/dist/mcp-stale-flag-ZM23XRSJ.js +11 -0
  344. package/dist/{memory-cards-VYQ5DPMR.js → memory-cards-47NYPFC3.js} +8 -8
  345. package/dist/{memory-graph-extractor-GX2HNYLU.js → memory-graph-extractor-IH7YBZ6U.js} +7 -7
  346. package/dist/{memory-poisoning-defense-TX7627BD.js → memory-poisoning-defense-MZQFCQ2G.js} +4 -4
  347. package/dist/{memory-pressure-watchdog-MLNNH26B.js → memory-pressure-watchdog-PSVJ5BCF.js} +77 -37
  348. package/dist/{memory-queue-X2CSEAKE.js → memory-queue-ZI7DX44D.js} +5 -3
  349. package/dist/{memory-queue-client-YRL6XTGU.js → memory-queue-client-6IPZTWZA.js} +6 -6
  350. package/dist/{memory-reflection-KIGEFSI4.js → memory-reflection-3VPYJS2G.js} +4 -4
  351. package/dist/{monitor-grants-RZOVSYVO.js → monitor-grants-OXKZ75TH.js} +5 -5
  352. package/dist/{monitor-identity-MOXISYNG.js → monitor-identity-GLFZSEAH.js} +2 -2
  353. package/dist/{notification-ledger-B6AVEGMV.js → notification-ledger-A6MYLQAN.js} +27 -24
  354. package/dist/{notifications-DWXV7SVL.js → notifications-6XCSUTJW.js} +26 -23
  355. package/dist/{orchestration-events-ZG7O4HRY.js → orchestration-events-5XDNVNR2.js} +5 -5
  356. package/dist/{orchestration-phase-CXRCBCK7.js → orchestration-phase-6DJUSFMV.js} +3 -3
  357. package/dist/orchestrator-2RQBNMZL.js +48 -0
  358. package/dist/{pipeline-router-RTLAGZTA.js → pipeline-router-N2LDNFJ5.js} +5 -5
  359. package/dist/{plan-limits-WLQZTCSF.js → plan-limits-7BUMNQOI.js} +7 -7
  360. package/dist/platform-procedures-VDW2R65H.js +13 -0
  361. package/dist/{preferences-TYTGDXQZ.js → preferences-TWIXZBKS.js} +2 -2
  362. package/dist/{project-boot-6CGQ3EAH.js → project-boot-RXCHF3S7.js} +2 -2
  363. package/dist/{projection-worker-44SEKTZ5.js → projection-worker-CKC2E22U.js} +5 -5
  364. package/dist/{prospective-memory-UACFTYXK.js → prospective-memory-Q7ZUCAS4.js} +4 -4
  365. package/dist/{push-notifications-W5JRXLKJ.js → push-notifications-VCSZYVD5.js} +3 -3
  366. package/dist/{reranker-NL4YAV6R.js → reranker-L3GLRUDY.js} +3 -3
  367. package/dist/{retrieval-health-4C2PO6HH.js → retrieval-health-DPLY6O6P.js} +1 -1
  368. package/dist/{review-polling-W5AMHNLT.js → review-polling-DLPMK3QW.js} +27 -24
  369. package/dist/runtime/index.js +34 -31
  370. package/dist/{session-events-PGL5GJEB.js → session-events-N5VRC6IT.js} +27 -24
  371. package/dist/{session-kill-telemetry-6YDGEF27.js → session-kill-telemetry-76ZVQ525.js} +27 -24
  372. package/dist/session-mcp-config-YKNXG5DW.js +50 -0
  373. package/dist/{session-scope-3MEOO557.js → session-scope-B3BEHGHO.js} +26 -23
  374. package/dist/setup-wizard-5SIRITVN.js +14 -0
  375. package/dist/{shard-manager-MBWQEYNG.js → shard-manager-OETALPDW.js} +3 -3
  376. package/dist/{skill-refinement-EOROTBPX.js → skill-refinement-ACXLAK2G.js} +5 -5
  377. package/dist/{stack-release-PR2XKJ4Q.js → stack-release-HGFFFCGC.js} +90 -15
  378. package/dist/{stack-update-LMDM27ZW.js → stack-update-YVFP65NY.js} +5 -5
  379. package/dist/{steward-gate-4A2XHYFD.js → steward-gate-2M66UU6A.js} +5 -5
  380. package/dist/{support-inbox-Z77ACQUY.js → support-inbox-5W2GMJGV.js} +7 -6
  381. package/dist/{support-outbox-GB5SQFRJ.js → support-outbox-WHGPUYL2.js} +2 -2
  382. package/dist/sweep-budget-LQYBMDTK.js +15 -0
  383. package/dist/task-enforcement-C7MMJTKX.js +91 -0
  384. package/dist/{task-scope-EKYDCVUF.js → task-scope-DK666AKV.js} +28 -23
  385. package/dist/{tasks-crud-6LBNU43G.js → tasks-crud-DFPIAAEC.js} +38 -23
  386. package/dist/tasks-notify-4R5YIPZN.js +54 -0
  387. package/dist/{tasks-review-PBIUYXAL.js → tasks-review-GOYSZEZA.js} +28 -23
  388. package/dist/{telemetry-upload-WQDFABTF.js → telemetry-upload-Y5F6WYLD.js} +9 -9
  389. package/dist/tmux-command-guard-KSJKIX3C.js +117 -0
  390. package/dist/{token-budget-KWGL5DY7.js → token-budget-BAM5QDFV.js} +5 -5
  391. package/dist/{tool-capability-index-EH3HQVHU.js → tool-capability-index-QOFFCWDS.js} +1 -1
  392. package/dist/{tool-telemetry-UC55LSIH.js → tool-telemetry-4MF2HIWR.js} +1 -1
  393. package/dist/tui/App.js +41 -38
  394. package/dist/{tui-data-M3RBSJL3.js → tui-data-WMYZNTBR.js} +26 -23
  395. package/dist/{update-check-HFO4VHO4.js → update-check-3FHAWIG2.js} +7 -3
  396. package/dist/{update-support-VPBD5SD2.js → update-support-44SGQUA4.js} +93 -93
  397. package/dist/{whatsapp-accounts-BWRZUY23.js → whatsapp-accounts-BFIOXYW5.js} +1 -1
  398. package/dist/{whatsapp-config-GOSELKTE.js → whatsapp-config-FAX6EA5K.js} +20 -13
  399. package/dist/{worker-gate-4QLLMXZM.js → worker-gate-7OK7ZRJL.js} +3 -3
  400. package/dist/{workflow-engine-MMEHKUN4.js → workflow-engine-EDZGGHAI.js} +2 -2
  401. package/dist/{working-memory-PY4AG577.js → working-memory-NUVB5SFV.js} +1 -1
  402. package/dist/worktree-VDCY44ZP.js +47 -0
  403. package/dist/{worktree-sweep-5WKBU7E6.js → worktree-sweep-VSL7TRQK.js} +7 -7
  404. package/package.json +5 -3
  405. package/release-notes.json +86 -54
  406. package/dist/branch-hygiene-R5NVTRAY.js +0 -138
  407. package/dist/chunk-2KLAYDFB.js +0 -23
  408. package/dist/chunk-7YORGTXC.js +0 -138
  409. package/dist/chunk-CCPHEPLU.js +0 -30
  410. package/dist/chunk-HCJCW7X4.js +0 -190
  411. package/dist/chunk-HMP5VT6A.js +0 -118
  412. package/dist/chunk-PVYR4FCQ.js +0 -113
  413. package/dist/chunk-RP5GETX5.js +0 -140
  414. package/dist/chunk-X2FHTDIU.js +0 -34
  415. package/dist/chunk-YGAAZN3E.js +0 -47
  416. package/dist/cto-delegation-gate-S734XDXT.js +0 -290
  417. package/dist/dispatch-ack-4S44HBWB.js +0 -15
  418. package/dist/dreaming-UKGTQT6I.js +0 -44
  419. package/dist/mcp-port-config-FFAMMLLE.js +0 -10
  420. package/dist/orchestrator-PGHJDUUT.js +0 -45
  421. package/dist/setup-wizard-CJIYDSSP.js +0 -13
  422. package/dist/tasks-notify-TFJLSQ3B.js +0 -50
  423. package/dist/worktree-YXBDRYOC.js +0 -31
  424. package/dist/{chunk-7UMCQQWS.js → chunk-A4DVMPYB.js} +3 -3
  425. /package/dist/{chunk-3NCZKWPO.js → chunk-CIG7FSD5.js} +0 -0
  426. /package/dist/{chunk-MC6VPZKS.js → chunk-DFCSGPNZ.js} +0 -0
  427. /package/dist/{chunk-C2SRRCRK.js → chunk-EBTWNNAS.js} +0 -0
  428. /package/dist/{chunk-OADURIIN.js → chunk-WTH4CSAP.js} +0 -0
  429. /package/dist/{core-memory-3IBWM4WR.js → core-memory-VOBMIFRX.js} +0 -0
  430. /package/dist/{entity-boost-DWAWXFKN.js → entity-boost-N4NAK4WA.js} +0 -0
  431. /package/dist/{message-queue-client-3PTHPG5Q.js → message-queue-client-WMIO5FL5.js} +0 -0
  432. /package/dist/{oauth-server-M5TGXT6D.js → oauth-server-HPQCBLZQ.js} +0 -0
  433. /package/dist/{webhook-pipe-FZYLO6RR.js → webhook-pipe-HH7XXXYC.js} +0 -0
  434. /package/dist/{wiki-acl-7CROE3MJ.js → wiki-acl-NEM3L4LK.js} +0 -0
  435. /package/dist/{wiki-client-VNDOBK63.js → wiki-client-WREIYJLY.js} +0 -0
package/README.md CHANGED
@@ -1,243 +1,206 @@
1
- # Exe OS
1
+ # exe-os
2
2
 
3
- ![CI](https://github.com/AskExe/exe-os/actions/workflows/ci.yml/badge.svg) ![npm version](https://img.shields.io/npm/v/@askexenow/exe-os.svg) ![License: Proprietary](https://img.shields.io/badge/license-proprietary-blue.svg) ![Node.js](https://img.shields.io/badge/node-%3E%3D20.0.0-brightgreen.svg)
3
+ AI employee operating system for AskExe: local-first memory, identity, task orchestration, and runtime glue for managing AI teammates through Claude Code, Codex, OpenCode, and the emerging desktop/runtime stack.
4
4
 
5
- **Hire the team you couldn't afford.** AI employee operating system with persistent memory, identity, and multi-agent orchestration.
5
+ Current npm package: `@askexenow/exe-os` v0.9.341. Node.js `>=20` required.
6
6
 
7
- Run 5-10 AI employees as a real organization. Each employee has persistent memory across sessions, a permanent identity, and a task queue. You talk to your COO. Your COO coordinates everyone else.
7
+ ## What this repo is for
8
8
 
9
- ---
9
+ exe-os lets a founder run an AI org instead of a single chat session:
10
10
 
11
- ## Install
11
+ - A coordinator agent owns the founder conversation and delegates through tracked tasks.
12
+ - Specialists run in isolated tmux/worktree sessions with persistent identity, behaviors, and memory.
13
+ - The local daemon, MCP server, hooks, and CLI keep sessions, reminders, reviews, cloud sync, and diagnostics connected.
14
+ - Customer data stays local-first and encrypted; cloud sync is end-to-end encrypted when enabled.
12
15
 
13
- ```bash
14
- npm install -g @askexenow/exe-os
15
- exe-os setup
16
- ```
17
-
18
- Two commands. Encryption key generated, embedding model downloaded, team created, and Claude Code MCP/hooks/launchers installed.
19
-
20
- ---
16
+ Hard constraints for every change:
21
17
 
22
- ## Two Ways to Work
18
+ - **MCP is the only data interface.** Never access the SQLCipher DB directly.
19
+ - **Preserve customer data sovereignty.** Updates must not overwrite identities, behaviors, procedures, rosters, local memory, or user config.
20
+ - **No secrets in code, logs, tests, telemetry, or bug reports.**
21
+ - **No `require()` in runtime ESM TypeScript** under `src/lib`, `src/mcp`, or `src/tui`; use ESM imports.
22
+ - **Every task/review/message/notification query must filter by `session_scope`.**
23
+ - **No hardcoded employee names.** Use role/config resolution, not AskExe's local roster.
23
24
 
24
- ### Mode 1: Claude Code
25
+ ## Architecture at a glance
25
26
 
26
- Use your existing Claude Code subscription. `exe-os setup` wires Claude Code once; then type your COO's name in the terminal.
27
+ ```text
28
+ User / founder
29
+ -> coordinator agent session
30
+ -> managers / specialists via task DB + tmux sessions
27
31
 
28
- ```bash
29
- exe # talk to your COO
32
+ Claude Code / Codex / OpenCode
33
+ -> hooks + MCP tools
34
+ -> exe daemon
35
+ -> encrypted local memory/tasks/identity/behavior store
36
+ -> optional E2EE cloud sync
37
+ -> gateway / stack integrations
30
38
  ```
31
39
 
32
- Best for: developers who live in the terminal.
33
-
34
- ### Mode 2: Dashboard
35
-
36
- Visual terminal UI with sidebar, team view, tasks, and metrics.
40
+ Key pieces:
41
+
42
+ - **MCP server (`src/mcp`)** exposes the supported tool surface for memory, tasks, identity, behavior, support, diagnostics, config, documents, CRM/raw data, and gateway actions.
43
+ - **Daemon (`src/lib`, `src/services`)** supervises sessions, timers, task enforcement, intercom delivery, sync, diagnostics, and local state.
44
+ - **Adapters (`src/adapters`)** integrate with Claude Code, Codex, and OpenCode through hooks and launcher behavior.
45
+ - **CLI commands (`src/bin`, `src/commands`)** install, launch, diagnose, update, release, preflight, sync, and operate the stack.
46
+ - **Runtime/TUI (`src/runtime`, `src/tui`)** are legacy/current terminal runtime surfaces; the architecture doc notes the legacy Ink TUI is frozen while the product direction moves toward the native exe-build/desktop chat runtime.
47
+ - **Stack deploy (`deploy`)** contains compose, manifests, observability, registry proxy, nginx, migrations, and customer VPS deployment assets.
48
+
49
+ Cognition layers used by agents:
50
+
51
+ 1. Company procedures: org-wide rules.
52
+ 2. Identity: role definition and non-negotiables.
53
+ 3. Behaviors/expertise: learned corrections and skills.
54
+ 4. Experience/memory: searchable history and decisions.
55
+ 5. Prospective items: future-condition memory/reminders surfaced at boot.
56
+
57
+ ## Repo map
58
+
59
+ | Path | Purpose |
60
+ |---|---|
61
+ | `src/lib/` | Core daemon/runtime libraries: memory, tasks, identity, behaviors, search, sync, config, orchestration. |
62
+ | `src/mcp/` | Consolidated MCP server and tool implementations. This is the supported data/control boundary. |
63
+ | `src/adapters/` | Claude/Codex/OpenCode integration hooks and adapter glue. |
64
+ | `src/bin/` | CLI entrypoints published through `package.json#bin`. |
65
+ | `src/commands/` | Command implementations for `exe-os`, setup/update/release flows, diagnostics, etc. |
66
+ | `src/runtime/` | Agent runtime/tool registry pieces. |
67
+ | `src/tui/` | Legacy Ink TUI surface; avoid new product investment unless explicitly tasked. |
68
+ | `src/gateway/` | Gateway/provider adapters and external messaging integration code. |
69
+ | `deploy/` | Customer stack compose files, manifests, migrations, nginx, observability, registry proxy, Ansible. |
70
+ | `deploy/stack-manifests/` | Customer-facing stack manifests; images must be digest-pinned. |
71
+ | `packages/` | Shared UI/theme/health/error-page packages. |
72
+ | `tests/` | Vitest suites, smoke tests, deploy tests, integration tests, orchestration tests. |
73
+ | `scripts/` | Build locks, guards, schema checks, stack simulation, preflight helpers. |
74
+ | `.planning/ARCHITECTURE.md` | Source of truth for current architecture and shipped progress. Future roadmap belongs in MCP support feature records, not markdown. |
75
+ | `release-notes.json` | Current npm release notes shown after updates. |
76
+ | `stack.release.json` | Stack release descriptor for customer/VPS participation. |
77
+
78
+ ## Key commands
79
+
80
+ Customer/operator commands published by this package:
81
+
82
+ | Command | Use |
83
+ |---|---|
84
+ | `exe` | Launch the configured coordinator agent. |
85
+ | `exe-os` | Main CLI/dashboard entry. |
86
+ | `exe-os setup` | First-time setup wizard: encryption, license, team, hooks, MCP, daemon. |
87
+ | `exe-os update` | Recommended interactive update path for installed systems. |
88
+ | `exe-os healthcheck` / `exe-healthcheck` | Health check for daemon, memory, cloud/sync, retrieval, and runtime state. |
89
+ | `exe-doctor` | Deeper diagnostics. |
90
+ | `exe-pending-reviews` | Show review queue; use before claiming work is idle/done. |
91
+ | `exe-pending-messages` | Show pending inter-agent messages. |
92
+ | `exe-config-dump` | Read-only effective config dump with secret redaction. |
93
+ | `exe-timers` | Timer health dashboard. |
94
+ | `exe-search-quality` | Retrieval quality/latency telemetry. |
95
+ | `exe-stack-update` | Customer stack image update flow. Run only with explicit approval. |
96
+ | `exe-preflight` | Stack/client production preflight checks. |
97
+ | `exe-cloud` | Cloud sync/linking commands. Never print recovery phrases in agent output. |
98
+
99
+ Useful local checks:
37
100
 
38
101
  ```bash
39
- exe-os # launch the dashboard
102
+ npm run typecheck
103
+ npm run lint
104
+ npm test
105
+ npm run test:daemon-smoke
106
+ npm run test:stack-sim
107
+ npm run guard:esm-require
108
+ npm run check:schema-version
109
+ npm run build
40
110
  ```
41
111
 
42
- Best for: managing multiple projects and employees.
112
+ ## Development workflow
43
113
 
44
- **Both modes share the same memory, employees, and data. Switch anytime.**
45
-
46
- ---
47
-
48
- ## What You Get
49
-
50
- | Feature | What it does |
51
- |---------|-------------|
52
- | **Persistent memory** | Every interaction stored in encrypted SQLCipher + vector search. Searchable across sessions. |
53
- | **Four-layer cognition** | Company Procedures (org-wide rules) + Identity (who you are) + Expertise (what you've learned) + Experience (what you remember) |
54
- | **Multi-agent orchestration** | COO coordinates CTO, CMO, engineers. Parallel task execution via tmux. |
55
- | **Task system** | Create, assign, review, chain tasks. Auto-dispatch. Review pipeline with cascading approval. |
56
- | **Company procedures** | Org-wide rules that every employee follows. Set once, cascades everywhere. |
57
- | **Identity injection** | Each employee gets a permanent identity doc. Claude Code's `--agent` flag replaces the default system prompt. |
58
- | **Skill learning** | Agents learn procedures from repeated patterns. Corrections become permanent behaviors. |
59
- | **Cloud sync** | End-to-end encrypted memory sync across devices. Your key, your data. |
60
- | **License activation** | `exe-os --activate <key>` to unlock CTO + CMO. Free tier: 1 employee (COO only). |
61
-
62
- ---
63
-
64
- ## How It Works
65
-
66
- ```
67
- You
68
- |
69
- v
70
- Your COO (exe)
71
- ├── CTO ──> architecture, code reviews, tech decisions
72
- │ └── Engineer ──> implementation, tests, commits
73
- ├── CMO ──> design, content, SEO, branding
74
- │ └── Content specialist ──> video, images, production
75
- └── AI specialist ──> AI tools, research, evaluation
76
- ```
77
-
78
- You talk to your COO. Your COO delegates. Each employee has:
79
- - **Persistent memory** — remembers past work, decisions, patterns
80
- - **Identity** — permanent role doc that defines who they are
81
- - **Task queue** — auto-chains through assigned work
82
- - **Behavioral expertise** — corrections accumulate as permanent rules
83
- - **Company procedures** — org-wide rules that cascade to every employee
84
-
85
- ---
86
-
87
- ## Setup Walkthrough
88
-
89
- ### 1. Install
114
+ Install dependencies:
90
115
 
91
116
  ```bash
92
- # macOS
93
- xcode-select --install && brew install tmux
94
- npm install -g @askexenow/exe-os
95
-
96
- # Linux / WSL2
97
- sudo apt install -y tmux git cmake g++ libsecret-1-dev curl
98
- npm install -g @askexenow/exe-os
99
-
100
- # Windows — must use WSL2 (native Windows not supported)
101
- # Run `wsl --install` in PowerShell first, then follow Linux steps inside WSL2
117
+ npm install
102
118
  ```
103
119
 
104
- Requires Node.js 20+ and tmux. See **[docs/install.md](docs/install.md)** for full platform-specific instructions and **[docs/quickstart.md](docs/quickstart.md)** for the 5-minute getting started guide.
105
-
106
- ### 2. Run Setup
107
-
108
- ```bash
109
- exe-os setup
110
- ```
120
+ Before coding:
111
121
 
112
- This runs the setup wizard:
113
- - Generates 256-bit encryption key (stored in system keychain)
114
- - Optional embeddings (off by default — graph + keyword search is the default); the embedding model, if enabled, runs locally
115
- - Names your COO (default: exe)
116
- - Shows your team (CTO, CMO) and pricing tiers
117
- - Optionally activates a license key
118
- - Installs Claude Code MCP, hooks, launchers, and daemon supervision
122
+ 1. Read the task brief and source docs.
123
+ 2. Use code-context/MCP search when available before broad manual grep.
124
+ 3. Keep diffs surgical; do not reformat unrelated files.
125
+ 4. Do not touch customer-local data, identities, behaviors, procedures, or rosters.
119
126
 
120
- ### 3. Choose Your Mode
121
-
122
- **Mode 1 — Claude Code:**
127
+ Standard validation:
123
128
 
124
129
  ```bash
125
- exe # launch your COO (or whatever you named them)
130
+ npm run typecheck
131
+ npm test
132
+ npm run build
126
133
  ```
127
134
 
128
- **Mode 2 Dashboard:**
135
+ Targeted validation is acceptable for small changes, but release/merge gates require the relevant full checks. For runtime/daemon-critical work, also run:
129
136
 
130
137
  ```bash
131
- exe-os # launch the TUI dashboard
138
+ npm run guard:esm-require
139
+ npm run test:daemon-smoke
132
140
  ```
133
141
 
134
- ---
135
-
136
- ## Pricing
137
-
138
- | Plan | Price | Employees | Memories | Devices |
139
- |------|-------|-----------|----------|---------|
140
- | Free | $0 | 1 (COO) | 50,000 | 1 |
141
- | Solopreneur | $97/mo | 5 | 250,000 | 2 |
142
- | Company | $297/mo | 20 | 1,000,000 | 10 |
143
- | Agency | $497/mo | 100 | 10,000,000 | 50 |
144
- | Enterprise | Custom | Unlimited | Unlimited | Unlimited |
142
+ Build details:
145
143
 
146
- Activate: `exe-os --activate <key>` or paste during `exe-os setup`.
144
+ - `npm run build` uses `scripts/build-lock.sh`, then copies runtime assets into `dist/` and generates hook manifests when possible.
145
+ - `npm run deploy` builds, installs this checkout globally, and restarts/re-registers pieces. It disrupts active MCP sessions; do not run it casually.
146
+ - `postinstall` runs command-only install behavior so global installs expose CLIs without overwriting customer data.
147
147
 
148
- Purchase at [askexe.com](https://askexe.com).
148
+ ## Test and CI notes
149
149
 
150
- ---
150
+ - Main test runner: `vitest run`.
151
+ - `test:publish` is the required publish gate subset plus selected serialized stress/gateway tests.
152
+ - Tests that touch support/bug/feature upstream paths must mock `fetch`; never create live support records from tests.
153
+ - Docker/live-DB tests may be quarantined in `test:publish`; read the script comments before assuming a missing test is accidental.
154
+ - CI must be green on the exact commit before merge/release.
151
155
 
152
- ## Employee Templates
153
-
154
- Create employees with built-in templates:
155
-
156
- ```bash
157
- exe-new-employee atlas --role <template>
158
- ```
156
+ ## Publish and release
159
157
 
160
- Or create custom employees:
158
+ NPM publish gate:
161
159
 
162
160
  ```bash
163
- exe-new-employee alex # custom specialist
161
+ npm run prepublishOnly
164
162
  ```
165
163
 
166
- Each employee gets an identity doc at `~/.exe-os/identity/{name}.md`, a task folder, and launcher commands.
167
-
168
- ---
169
-
170
- ## For Agencies
171
-
172
- See [docs/Agency-Playbook.md](docs/Agency-Playbook.md) for multi-client VPS deployment:
173
- - One VPS, multiple clients, full data isolation
174
- - Per-client wiki workspaces
175
- - Cross-client querying for agency owners
176
- - Config-driven white-label theming via `branding.json`
177
-
178
- ---
179
-
180
- ## Commands
164
+ That runs typecheck, build, orphan chunk pruning, ESM `require()` guard, schema version check, customer-readiness, and pre-publish checks.
181
165
 
182
- | Command | What it does |
183
- |---------|-------------|
184
- | `exe-os` | Launch TUI dashboard (Mode 2) |
185
- | `exe-os setup` | Run setup wizard |
186
- | `exe-os claude` | Install hooks + MCP into Claude Code (Mode 1) |
187
- | `exe-os --activate <key>` | Activate a license key |
188
- | `exe` | Launch your COO in Claude Code |
189
- | `exe-new-employee <name>` | Create a new employee |
190
- | `/exe` | Boot your COO (inside Claude Code) |
191
- | `/exe-team` | Show employee roster |
192
- | `/exe-search <query>` | Search memories |
166
+ Normal local package update path for users:
193
167
 
194
- ---
195
-
196
- ## Architecture
197
-
198
- ```
199
- exe-os/
200
- src/
201
- lib/ # Core: memory, tasks, identity, behaviors, search, sync, encryption
202
- mcp/ # MCP server (100+ tools for Claude Code integration)
203
- adapters/ # Claude Code hooks (ingest, session-start, pre-tool-use, etc.)
204
- tui/ # Ink-based terminal dashboard (Mode 2)
205
- runtime/ # Agent loop, tool registry, permissions (Mode 2 standalone)
206
- gateway/ # External messaging (WhatsApp, Telegram, Discord, webhook)
207
- deploy/
208
- compose/ # Docker Compose for VPS deployment (CRM + wiki + gateway + daemon)
209
- Dockerfile* # Per-service Docker images
210
- docs/
211
- Agency-Playbook.md # Multi-client VPS guide
168
+ ```bash
169
+ npm install -g @askexenow/exe-os@latest
170
+ # or use the interactive path
171
+ exe-os update
212
172
  ```
213
173
 
214
- **Three runtime modes:**
215
-
216
- | Mode | Entry | What you see |
217
- |------|-------|-------------|
218
- | Mode 1: Claude Code | `exe` | Claude Code terminal with COO identity |
219
- | Mode 2: TUI Dashboard | `exe-os` | Terminal dashboard with sidebar + team view |
220
- | Mode 3: Desktop | `exe-os desktop` | Tauri native app (coming soon) |
221
-
222
- **Storage:** SQLCipher (encrypted SQLite) + optional local embeddings (1024-dim, off by default). No data leaves your machine unless you opt into Exe Cloud (E2EE).
223
-
224
- ---
225
-
226
- ## Requirements
227
-
228
- - **Node.js 20+**
229
- - **tmux** for multi-agent session management
230
- - **Claude Code** subscription (Mode 1) or API key (Mode 2)
231
-
232
- | Platform | Quick Install |
233
- |----------|-------------|
234
- | macOS | `brew install tmux node` + Xcode CLI Tools |
235
- | Linux | `apt install tmux git cmake g++ libsecret-1-dev` + Node.js 20+ |
236
- | Windows | WSL2 required (`wsl --install`), then follow Linux steps |
237
-
238
- Full guide: **[docs/install.md](docs/install.md)**
239
-
240
- ---
174
+ Customer stack releases are separate from npm package releases:
175
+
176
+ - `release-notes.json` currently tracks npm v0.9.341.
177
+ - `stack.release.json` currently describes stack/source v0.9.312 and includes TODO notes for private GHCR app image digest resolution.
178
+ - Customer stack manifests/images must be SHA256 digest-pinned. Do not promote tag-only app images to customer releases.
179
+ - Production stack updates must preserve named Docker volumes and customer state; never use `docker compose down -v` or remove data volumes.
180
+ - Stack image release should go through the documented `exe-os release --stack` flow, Bob/customer-readiness audit, preflight, pinned images, and health verification.
181
+
182
+ ## Operational gotchas
183
+
184
+ - **MCP only.** If MCP is disconnected, reconnect it; do not bypass with direct DB reads or ad-hoc scripts against SQLCipher.
185
+ - **Session scope matters.** Cross-session task/review/message leakage is a P0 class bug. Query filters must include `session_scope` where applicable.
186
+ - **Data is immutable unless the user changes it.** Installers, updates, imports, starter packs, and stack updates must be additive/check-exists-first.
187
+ - **Cloud endpoint is `https://api.askexe.com`.** Do not introduce legacy cloud domains.
188
+ - **Key material belongs in Keychain/secret-tool.** Never log, print, or commit recovery phrases or master keys.
189
+ - **Runtime TypeScript is ESM.** `require()` in daemon/MCP/TUI runtime paths will break after build.
190
+ - **Stack state needs volumes.** WhatsApp auth, Postgres, wiki/CRM/gateway data, monitor data, and other stateful services need named volumes before image swaps.
191
+ - **Health before claims.** Verify daemon health, pending reviews, pending messages, task status, and tmux state before reporting an agent is idle/done/stuck.
192
+ - **Build after merges.** A clean git merge is not a build check; run `npm run build` after merged work that affects shipped code.
193
+ - **No `:latest` in manifests/compose.** Release images must be versioned and digest-pinned for customer deploys.
194
+
195
+ ## Security checklist for reviews
196
+
197
+ - No secrets, PII, API keys, recovery phrases, or tokens in code/test fixtures/log output.
198
+ - Auth middleware and permission checks preserved.
199
+ - External network connections use TLS unless explicitly local-only.
200
+ - Telemetry/bug-report egress redacts secrets and mnemonics.
201
+ - No direct DB access paths added; all agent-facing data flows through MCP tools.
202
+ - No hardcoded AskExe employee names, local paths, or private roster assumptions.
203
+ - Compose services have healthchecks and stateful services have durable volumes.
241
204
 
242
205
  ## License
243
206
 
@@ -42,6 +42,7 @@ GOTRUE_MAILER_AUTOCONFIRM=false
42
42
  # Auth-email From address — customer domain, not askexe.com (bug 133c9d5b).
43
43
  SMTP_FROM=noreply@CHANGEME_DOMAIN
44
44
  # To enable verified email confirmation, set SMTP_* (MAILER_AUTOCONFIRM stays false).
45
+ # Bug 799e7b1e: use these bare SMTP_* names, not GoTrue's own GOTRUE_SMTP_* names.
45
46
  SMTP_HOST=
46
47
  SMTP_PORT=587
47
48
  SMTP_USER=
@@ -70,6 +70,7 @@ GOTRUE_MAILER_AUTOCONFIRM=false
70
70
  # From address for auth emails — customer domain, not askexe.com (bug 133c9d5b).
71
71
  SMTP_FROM=noreply@CHANGEME_DOMAIN
72
72
  # To enable verified email confirmation, set SMTP_* below (MAILER_AUTOCONFIRM stays false).
73
+ # Bug 799e7b1e: use these bare SMTP_* names, not GoTrue's own GOTRUE_SMTP_* names.
73
74
  SMTP_HOST=
74
75
  SMTP_PORT=587
75
76
  SMTP_USER=
@@ -221,10 +221,19 @@ services:
221
221
  GOTRUE_JWT_ISSUER: ${GOTRUE_JWT_ISSUER:-${GOTRUE_EXTERNAL_URL:?GOTRUE_EXTERNAL_URL is required — set to https://auth.<your-domain> in .env}}
222
222
  GOTRUE_DISABLE_SIGNUP: ${GOTRUE_DISABLE_SIGNUP:-true}
223
223
  GOTRUE_MAILER_AUTOCONFIRM: ${GOTRUE_MAILER_AUTOCONFIRM:-false}
224
- GOTRUE_SMTP_HOST: ${SMTP_HOST:-}
225
- GOTRUE_SMTP_PORT: ${SMTP_PORT:-587}
226
- GOTRUE_SMTP_USER: ${SMTP_USER:-}
227
- GOTRUE_SMTP_PASS: ${SMTP_PASS:-}
224
+ # Bug 799e7b1e: generate-env.ts writes the canonical .env keys as
225
+ # bare SMTP_HOST/PORT/USER/PASS (no GOTRUE_ prefix — see generate-env.ts).
226
+ # But GoTrue's own upstream docs name these vars GOTRUE_SMTP_HOST/USER/PASS,
227
+ # so a human hand-editing .env (prod hotfix, manual onboarding, following
228
+ # GoTrue's docs instead of ours) naturally reaches for the GOTRUE_-prefixed
229
+ # names — which this compose never read, so SMTP silently stayed disabled
230
+ # even though credentials were present in .env. Accept BOTH spellings:
231
+ # prefer the canonical SMTP_* (generate-env.ts output), fall back to the
232
+ # GOTRUE_SMTP_* alias so a manually-set value still takes effect.
233
+ GOTRUE_SMTP_HOST: ${SMTP_HOST:-${GOTRUE_SMTP_HOST:-}}
234
+ GOTRUE_SMTP_PORT: ${SMTP_PORT:-${GOTRUE_SMTP_PORT:-587}}
235
+ GOTRUE_SMTP_USER: ${SMTP_USER:-${GOTRUE_SMTP_USER:-}}
236
+ GOTRUE_SMTP_PASS: ${SMTP_PASS:-${GOTRUE_SMTP_PASS:-}}
228
237
  # Bug 133c9d5b: never fall back to a hardcoded askexe.com sender. SMTP_FROM
229
238
  # is written to .env by generate-env.ts as noreply@<customer-domain>. A
230
239
  # missing value fails loudly rather than silently sending auth mail From
@@ -122,6 +122,9 @@ export function generateEnv(options: GenerateEnvOptions): string {
122
122
  `SMTP_FROM=noreply@${normalizedDomain}`,
123
123
  "# To enable verified email confirmation, set SMTP_HOST/PORT/USER/PASS below.",
124
124
  "# MAILER_AUTOCONFIRM is already false, so once SMTP is live, ownership is verified.",
125
+ "# Bug 799e7b1e: use these bare SMTP_* names, NOT GoTrue's own GOTRUE_SMTP_*",
126
+ "# names — compose reads SMTP_* first (falling back to GOTRUE_SMTP_* only if",
127
+ "# hand-set) and maps it to GoTrue's container env internally.",
125
128
  "SMTP_HOST=",
126
129
  "SMTP_PORT=587",
127
130
  "SMTP_USER=",
@@ -377,6 +380,7 @@ export function generateExampleEnv(): string {
377
380
  "# From address for auth emails — customer domain, not askexe.com (bug 133c9d5b).",
378
381
  "SMTP_FROM=noreply@CHANGEME_DOMAIN",
379
382
  "# To enable verified email confirmation, set SMTP_* below (MAILER_AUTOCONFIRM stays false).",
383
+ "# Bug 799e7b1e: use these bare SMTP_* names, not GoTrue's own GOTRUE_SMTP_* names.",
380
384
  "SMTP_HOST=",
381
385
  "SMTP_PORT=587",
382
386
  "SMTP_USER=",
@@ -6,18 +6,18 @@ import {
6
6
  getAllActiveAgents,
7
7
  resolveActiveAgentFromTmuxSession,
8
8
  writeActiveAgent
9
- } from "./chunk-C445WRUX.js";
9
+ } from "./chunk-7M5AWCR3.js";
10
10
  import "./chunk-CVYC6DUW.js";
11
11
  import "./chunk-GJV3WDWM.js";
12
- import "./chunk-RWSLVYTE.js";
12
+ import "./chunk-GD7FA6IP.js";
13
13
  import "./chunk-2I23RPSI.js";
14
- import "./chunk-BV6GBSRP.js";
14
+ import "./chunk-IKAGAKAI.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
- import "./chunk-7Y5UDEVM.js";
20
- import "./chunk-SHIICYJW.js";
19
+ import "./chunk-OL4JFQ2T.js";
20
+ import "./chunk-BYTDMAGB.js";
21
21
  import "./chunk-MLKGABMK.js";
22
22
  export {
23
23
  cleanupSessionMarkers,
@@ -5,18 +5,18 @@ import {
5
5
  getAllActiveAgents,
6
6
  resolveActiveAgentFromTmuxSession,
7
7
  writeActiveAgent
8
- } from "./chunk-C445WRUX.js";
8
+ } from "./chunk-7M5AWCR3.js";
9
9
  import "./chunk-CVYC6DUW.js";
10
10
  import "./chunk-GJV3WDWM.js";
11
- import "./chunk-RWSLVYTE.js";
11
+ import "./chunk-GD7FA6IP.js";
12
12
  import "./chunk-2I23RPSI.js";
13
- import "./chunk-BV6GBSRP.js";
13
+ import "./chunk-IKAGAKAI.js";
14
14
  import "./chunk-PNQDP3OA.js";
15
15
  import "./chunk-H73TUI4Y.js";
16
16
  import "./chunk-7HLWBYH7.js";
17
17
  import "./chunk-FXU7JOXK.js";
18
- import "./chunk-7Y5UDEVM.js";
19
- import "./chunk-SHIICYJW.js";
18
+ import "./chunk-OL4JFQ2T.js";
19
+ import "./chunk-BYTDMAGB.js";
20
20
  import "./chunk-MLKGABMK.js";
21
21
  export {
22
22
  cleanupSessionMarkers,
@@ -10,7 +10,7 @@ import {
10
10
  insertOntologyForMemory,
11
11
  ontologyPayload,
12
12
  stableId
13
- } from "./chunk-C2SRRCRK.js";
13
+ } from "./chunk-EBTWNNAS.js";
14
14
  import "./chunk-MLKGABMK.js";
15
15
  export {
16
16
  ONTOLOGY_YIELD_EVERY,
@@ -5,9 +5,9 @@ import {
5
5
  backfillKillSwitchEnabled,
6
6
  computeBackfillDisabled,
7
7
  countActionableNullVectors
8
- } from "./chunk-KPIN44GZ.js";
9
- import "./chunk-7Y5UDEVM.js";
10
- import "./chunk-SHIICYJW.js";
8
+ } from "./chunk-H6WLWIPN.js";
9
+ import "./chunk-OL4JFQ2T.js";
10
+ import "./chunk-BYTDMAGB.js";
11
11
  import "./chunk-MLKGABMK.js";
12
12
  export {
13
13
  NOT_PARKED_SQL,
@@ -2,26 +2,26 @@
2
2
  import {
3
3
  disposeStore,
4
4
  initStore
5
- } from "./chunk-EDH54E5A.js";
5
+ } from "./chunk-ZYLKX3KB.js";
6
6
  import "./chunk-CHCA3ZM2.js";
7
7
  import "./chunk-OTVEIJUQ.js";
8
- import "./chunk-7LF5DS3A.js";
9
- import "./chunk-RP5GETX5.js";
8
+ import "./chunk-4MLSFZLY.js";
9
+ import "./chunk-4QCFFW2H.js";
10
10
  import "./chunk-MP2AFCGL.js";
11
11
  import {
12
12
  getClient,
13
13
  getEmployeeNamesByRole,
14
14
  loadEmployeesSync
15
- } from "./chunk-RWSLVYTE.js";
15
+ } from "./chunk-GD7FA6IP.js";
16
16
  import "./chunk-2I23RPSI.js";
17
- import "./chunk-BV6GBSRP.js";
17
+ import "./chunk-IKAGAKAI.js";
18
18
  import "./chunk-PNQDP3OA.js";
19
19
  import "./chunk-H73TUI4Y.js";
20
20
  import "./chunk-7HLWBYH7.js";
21
21
  import "./chunk-FXU7JOXK.js";
22
- import "./chunk-Z42MXYWW.js";
23
- import "./chunk-7Y5UDEVM.js";
24
- import "./chunk-SHIICYJW.js";
22
+ import "./chunk-QWVXN224.js";
23
+ import "./chunk-OL4JFQ2T.js";
24
+ import "./chunk-BYTDMAGB.js";
25
25
  import {
26
26
  isMainModule
27
27
  } from "./chunk-6Y4B3QF6.js";
@@ -9,9 +9,9 @@ import {
9
9
  releaseJobLock,
10
10
  reniceCurrentProcess,
11
11
  startManagedJob
12
- } from "./chunk-JSKBHUR7.js";
13
- import "./chunk-7Y5UDEVM.js";
14
- import "./chunk-SHIICYJW.js";
12
+ } from "./chunk-BZA4N43B.js";
13
+ import "./chunk-OL4JFQ2T.js";
14
+ import "./chunk-BYTDMAGB.js";
15
15
  import "./chunk-MLKGABMK.js";
16
16
  export {
17
17
  acquireJobLock,
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  getLatestBackup,
3
3
  reasonFromBackupName
4
- } from "./chunk-BV6GBSRP.js";
5
- import "./chunk-7Y5UDEVM.js";
6
- import "./chunk-SHIICYJW.js";
4
+ } from "./chunk-IKAGAKAI.js";
5
+ import "./chunk-OL4JFQ2T.js";
6
+ import "./chunk-BYTDMAGB.js";
7
7
  import "./chunk-MLKGABMK.js";
8
8
 
9
9
  // src/lib/backup-verify.ts
@@ -264,7 +264,7 @@ async function compareToLive(name, gotCounts, opts) {
264
264
  }
265
265
  async function recordVerdict(res) {
266
266
  try {
267
- const { recordDbRestoreEvent } = await import("./db-restore-events-JVEEP52Z.js");
267
+ const { recordDbRestoreEvent } = await import("./db-restore-events-GQGQSYHV.js");
268
268
  if (res.ok) {
269
269
  recordDbRestoreEvent({
270
270
  kind: "restore-verify-pass",
@@ -12,23 +12,23 @@ import {
12
12
  reactivateBehavior,
13
13
  storeBehavior,
14
14
  storeReflexBehavior
15
- } from "./chunk-OUEFW4RK.js";
16
- import "./chunk-EDH54E5A.js";
15
+ } from "./chunk-KRRZNASS.js";
16
+ import "./chunk-ZYLKX3KB.js";
17
17
  import "./chunk-CHCA3ZM2.js";
18
18
  import "./chunk-OTVEIJUQ.js";
19
- import "./chunk-7LF5DS3A.js";
20
- import "./chunk-RP5GETX5.js";
19
+ import "./chunk-4MLSFZLY.js";
20
+ import "./chunk-4QCFFW2H.js";
21
21
  import "./chunk-MP2AFCGL.js";
22
- import "./chunk-RWSLVYTE.js";
22
+ import "./chunk-GD7FA6IP.js";
23
23
  import "./chunk-2I23RPSI.js";
24
- import "./chunk-BV6GBSRP.js";
24
+ import "./chunk-IKAGAKAI.js";
25
25
  import "./chunk-PNQDP3OA.js";
26
26
  import "./chunk-H73TUI4Y.js";
27
27
  import "./chunk-7HLWBYH7.js";
28
28
  import "./chunk-FXU7JOXK.js";
29
- import "./chunk-Z42MXYWW.js";
30
- import "./chunk-7Y5UDEVM.js";
31
- import "./chunk-SHIICYJW.js";
29
+ import "./chunk-QWVXN224.js";
30
+ import "./chunk-OL4JFQ2T.js";
31
+ import "./chunk-BYTDMAGB.js";
32
32
  import "./chunk-MLKGABMK.js";
33
33
  export {
34
34
  GHOST_BEHAVIOR_SQL,