@askexenow/exe-os 0.9.359 → 0.9.361

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 (449) hide show
  1. package/deploy/compose/docker-compose.yml +7 -1
  2. package/deploy/compose/generate-env.ts +23 -4
  3. package/deploy/compose/sso-edge/default.conf.template +35 -0
  4. package/deploy/compose/sso-edge/sso-redirect.conf +23 -2
  5. package/deploy/stack-manifests/v0.9.json +113 -2
  6. package/dist/.dist-verified.json +3 -3
  7. package/dist/{active-agent-Y3DCBD7J.js → active-agent-5RXOXM47.js} +9 -8
  8. package/dist/{active-agent-DMKNHGSG.js → active-agent-UZAQUW7E.js} +9 -8
  9. package/dist/{agentic-ontology-3233PNKV.js → agentic-ontology-EHUWSJCG.js} +1 -1
  10. package/dist/{backfill-gate-DA7UT6UD.js → backfill-gate-LRX77SUD.js} +3 -2
  11. package/dist/{backfill-metadata-4DS4A5U3.js → backfill-metadata-CTSVPOC6.js} +12 -11
  12. package/dist/{background-jobs-XGTLESKM.js → background-jobs-Z6KHCWES.js} +3 -2
  13. package/dist/{backup-verify-JNYKXIU2.js → backup-verify-YJMSP24E.js} +5 -4
  14. package/dist/{behavior-injection-CGAMI552.js → behavior-injection-DTFGF6DT.js} +21 -13
  15. package/dist/{behaviors-57AMN5IP.js → behaviors-XW7ZZKHF.js} +20 -12
  16. package/dist/bin/age-ontology-load.js +3 -2
  17. package/dist/bin/agentic-ontology-backfill.js +14 -13
  18. package/dist/bin/agentic-reflection-backfill.js +15 -14
  19. package/dist/bin/agentic-semantic-label.js +14 -13
  20. package/dist/bin/backfill-conversations.js +16 -14
  21. package/dist/bin/backfill-responses.js +16 -14
  22. package/dist/bin/backfill-vectors.js +20 -18
  23. package/dist/bin/bulk-sync-postgres.js +27 -24
  24. package/dist/bin/cc-doctor.js +13 -11
  25. package/dist/bin/cleanup-stale-review-tasks.js +31 -28
  26. package/dist/bin/cli.js +131 -45
  27. package/dist/bin/customer-readiness.js +10 -1
  28. package/dist/bin/deferred-daemon-restart.js +125 -103
  29. package/dist/bin/exe-agent-config.js +9 -8
  30. package/dist/bin/exe-agent.js +13 -12
  31. package/dist/bin/exe-assign.js +18 -16
  32. package/dist/bin/exe-boot.js +62 -49
  33. package/dist/bin/exe-call.js +10 -9
  34. package/dist/bin/exe-cloud.js +29 -26
  35. package/dist/bin/exe-config-dump.js +9 -8
  36. package/dist/bin/exe-dispatch.js +31 -28
  37. package/dist/bin/exe-doctor.js +11 -10
  38. package/dist/bin/exe-export-behaviors.js +22 -14
  39. package/dist/bin/exe-forget.js +14 -13
  40. package/dist/bin/exe-gateway.js +13 -12
  41. package/dist/bin/exe-grant.js +6 -6
  42. package/dist/bin/exe-healthcheck.js +13 -11
  43. package/dist/bin/exe-heartbeat.js +33 -30
  44. package/dist/bin/exe-kill.js +36 -33
  45. package/dist/bin/exe-launch-agent.js +126 -44
  46. package/dist/bin/exe-mcp.js +165 -1
  47. package/dist/bin/exe-memory-reads.js +12 -11
  48. package/dist/bin/exe-new-employee.js +20 -17
  49. package/dist/bin/exe-os-mcp-proxy.js +9 -8
  50. package/dist/bin/exe-pending-messages.js +32 -29
  51. package/dist/bin/exe-pending-notifications.js +31 -28
  52. package/dist/bin/exe-pending-reviews.js +31 -28
  53. package/dist/bin/exe-preflight.js +1 -1
  54. package/dist/bin/exe-rename.js +10 -9
  55. package/dist/bin/exe-review.js +35 -32
  56. package/dist/bin/exe-search.js +13 -12
  57. package/dist/bin/exe-session-cleanup.js +36 -33
  58. package/dist/bin/exe-settings.js +28 -25
  59. package/dist/bin/exe-start-codex.js +27 -19
  60. package/dist/bin/exe-start-opencode.js +23 -15
  61. package/dist/bin/exe-start.sh +11 -7
  62. package/dist/bin/exe-status.js +32 -29
  63. package/dist/bin/exe-support.js +5 -4
  64. package/dist/bin/exe-team.js +9 -8
  65. package/dist/bin/exe-watchdog.js +115 -30
  66. package/dist/bin/git-sweep.js +32 -29
  67. package/dist/bin/graph-backfill.js +14 -13
  68. package/dist/bin/graph-export.js +13 -12
  69. package/dist/bin/import-history.js +16 -15
  70. package/dist/bin/install.js +314 -184
  71. package/dist/bin/intercom-check.js +4 -4
  72. package/dist/bin/mcp-sessions.js +2 -2
  73. package/dist/bin/orchestration-metrics.js +10 -9
  74. package/dist/bin/postgres-agentic-reflection-backfill.js +5 -4
  75. package/dist/bin/postgres-agentic-semantic-backfill.js +4 -3
  76. package/dist/bin/reconcile-backlog.js +2 -2
  77. package/dist/bin/registry-proxy.js +1 -1
  78. package/dist/bin/scan-tasks.js +31 -28
  79. package/dist/bin/setup.js +7 -4
  80. package/dist/bin/shard-migrate.js +13 -12
  81. package/dist/bin/stack-update.js +45 -14
  82. package/dist/bin/update.js +4 -3
  83. package/dist/bin/vps-health-gate.js +1 -1
  84. package/dist/{boot-generation-4D3CTT7X.js → boot-generation-ALCHPQOK.js} +9 -8
  85. package/dist/{boot-review-sections-NDFE5443.js → boot-review-sections-E4QOMWZM.js} +30 -27
  86. package/dist/{branch-hygiene-HNSOUDJE.js → branch-hygiene-Z4IBWAOX.js} +2 -1
  87. package/dist/{branding-6FHWZQYQ.js → branding-7MZDHTKN.js} +3 -2
  88. package/dist/build-manifest.json +1247 -1077
  89. package/dist/{capability-cards-OBB7BMMX.js → capability-cards-IE2DEJKT.js} +8 -7
  90. package/dist/{capacity-monitor-QLPEL6S5.js → capacity-monitor-3HVLTPQA.js} +32 -29
  91. package/dist/{catchup-brief-EN7QR6MP.js → catchup-brief-E2QZPNMH.js} +36 -33
  92. package/dist/{chunk-POZGQQEZ.js → chunk-2PIEDT3G.js} +1 -1
  93. package/dist/chunk-2PRAXZWM.js +261 -0
  94. package/dist/{chunk-MBULOZJF.js → chunk-32FEF5BW.js} +2 -2
  95. package/dist/{chunk-4FQIWAXA.js → chunk-34ABBEHN.js} +10 -10
  96. package/dist/{chunk-CVTWQZOR.js → chunk-3L2QU5ZF.js} +14 -2
  97. package/dist/{chunk-R6LNQAUG.js → chunk-3Q2YK6UT.js} +34 -1
  98. package/dist/{chunk-SNWV44E5.js → chunk-3TWIRKUD.js} +12 -5
  99. package/dist/{chunk-I5AVZOL2.js → chunk-3YBJ36UX.js} +2 -2
  100. package/dist/{chunk-OAYTQ4RY.js → chunk-4BI4YKHE.js} +55 -12
  101. package/dist/{chunk-OSID72CN.js → chunk-4L33OFU4.js} +25 -1
  102. package/dist/{chunk-A6VIK3SS.js → chunk-4P2BFNSB.js} +2 -2
  103. package/dist/{chunk-RFUTLZ2U.js → chunk-4UTSVUMY.js} +4 -4
  104. package/dist/chunk-5OPAUFLP.js +126 -0
  105. package/dist/{chunk-PDRIIEFV.js → chunk-5TKIVK3L.js} +1 -1
  106. package/dist/{chunk-6EOLGE7T.js → chunk-5XEKQJE5.js} +1 -1
  107. package/dist/chunk-63Z76YCI.js +218 -0
  108. package/dist/{chunk-XVTKJEI2.js → chunk-65WUZISK.js} +3 -3
  109. package/dist/{chunk-EHM4E62N.js → chunk-6DTALXOA.js} +1 -1
  110. package/dist/{chunk-DWKH2H7W.js → chunk-6EGNSEEX.js} +1 -1
  111. package/dist/chunk-6EM6USV7.js +1332 -0
  112. package/dist/{chunk-STFR72YH.js → chunk-6H44454F.js} +1 -1
  113. package/dist/{chunk-44WFVMZ5.js → chunk-6KVG6RTP.js} +1 -1
  114. package/dist/{chunk-SIGAQQHW.js → chunk-6LQGPGOS.js} +2 -2
  115. package/dist/{chunk-OY2PWHYR.js → chunk-6W5MDNLX.js} +2 -2
  116. package/dist/{chunk-QROIFRKI.js → chunk-7GPK2ANS.js} +5 -5
  117. package/dist/{chunk-GSVQBBE5.js → chunk-7N63G4JS.js} +2 -2
  118. package/dist/{chunk-2EAYZ3BK.js → chunk-A4EPO6F3.js} +9 -9
  119. package/dist/{chunk-QH2XAUZ5.js → chunk-A5544WYJ.js} +1 -1
  120. package/dist/{chunk-XV42EAVK.js → chunk-AQF6XMZ7.js} +1 -1
  121. package/dist/chunk-ARX6TAGN.js +102 -0
  122. package/dist/{chunk-JE34CB5H.js → chunk-ASQPFNLC.js} +2 -2
  123. package/dist/{chunk-WRP5AG4D.js → chunk-AUSKITKI.js} +2 -2
  124. package/dist/{chunk-YBX3G5OP.js → chunk-B3JV3F35.js} +1 -1
  125. package/dist/chunk-B6PFGUYJ.js +159 -0
  126. package/dist/{chunk-SHEWTDPC.js → chunk-BGMLECK5.js} +4 -4
  127. package/dist/{chunk-BCZF3AGJ.js → chunk-BRIZ6OZ3.js} +34 -44
  128. package/dist/{chunk-OMXJMOBD.js → chunk-BRZR76TS.js} +66 -0
  129. package/dist/{chunk-RJ67HG2P.js → chunk-BSPBWLUP.js} +4 -4
  130. package/dist/{chunk-WA2MJGPT.js → chunk-CC4I7337.js} +1 -1
  131. package/dist/{chunk-VY5VU7SX.js → chunk-CIXA5TXF.js} +2 -2
  132. package/dist/{chunk-MCNDZU5W.js → chunk-CKOMH7TL.js} +2 -2
  133. package/dist/{chunk-HLEZ5O5P.js → chunk-CY5RX7QR.js} +17 -15
  134. package/dist/{chunk-KIXNMTGC.js → chunk-DZLOUB4G.js} +5 -5
  135. package/dist/{chunk-VXL7PJ56.js → chunk-E3YI6FVJ.js} +5 -24
  136. package/dist/{chunk-IOEUAQWP.js → chunk-EEZOBN6X.js} +1 -1
  137. package/dist/{chunk-6SK4MM5B.js → chunk-EIBTRKUF.js} +1 -1
  138. package/dist/{chunk-EA5FVACM.js → chunk-ESGLOI6Q.js} +21 -17
  139. package/dist/{chunk-R62ITJDQ.js → chunk-EXAUIWUG.js} +1 -1
  140. package/dist/{chunk-3ZEVMZ4G.js → chunk-F4GLFLQK.js} +1 -1
  141. package/dist/{chunk-EX2SSLNU.js → chunk-FK3HX7VO.js} +9 -9
  142. package/dist/{chunk-HPHF5VTT.js → chunk-FU3CUTIA.js} +4 -4
  143. package/dist/{chunk-AHMUF6RO.js → chunk-G2M7WQ2M.js} +0 -2
  144. package/dist/{chunk-SKGMF2SO.js → chunk-GBNB4EWD.js} +22 -1
  145. package/dist/{chunk-HNPHPGGF.js → chunk-GIFXL4AC.js} +2 -2
  146. package/dist/{chunk-W5YV2PZE.js → chunk-GWBD5P7E.js} +16 -16
  147. package/dist/{chunk-VMR6M6GN.js → chunk-HISFWAAK.js} +1 -1
  148. package/dist/{chunk-LXG37RB2.js → chunk-HNB5IAVK.js} +1 -1
  149. package/dist/{chunk-QWVXN224.js → chunk-HPXFKUGU.js} +350 -65
  150. package/dist/{chunk-IQWAYXVF.js → chunk-HU4ZAYGH.js} +3 -3
  151. package/dist/{chunk-W3XUU36X.js → chunk-I4ILH2R6.js} +5 -5
  152. package/dist/chunk-IFJ4SVIP.js +197 -0
  153. package/dist/{chunk-TG7JYSEA.js → chunk-II5TSD4F.js} +5 -2
  154. package/dist/{chunk-2OVTGZYH.js → chunk-IM7PRQ27.js} +46 -3
  155. package/dist/{chunk-NE57GONM.js → chunk-INATSOZV.js} +1 -1
  156. package/dist/{chunk-GD7VXXW6.js → chunk-IXRNZ2Y2.js} +795 -174
  157. package/dist/chunk-J5KRIGHE.js +61 -0
  158. package/dist/{chunk-6WHYSLGF.js → chunk-J5QNK5VL.js} +1 -1
  159. package/dist/chunk-J6KMGEJW.js +238 -0
  160. package/dist/{chunk-XLEYCOHX.js → chunk-J73I53JO.js} +398 -58
  161. package/dist/{chunk-NP2Y7P3I.js → chunk-J7S2SOM2.js} +1 -1
  162. package/dist/{chunk-DQ75MEPU.js → chunk-JCICPQJV.js} +1 -1
  163. package/dist/chunk-JKKZGDLP.js +182 -0
  164. package/dist/{chunk-VAY6IXWY.js → chunk-KDMVVHZH.js} +1 -1
  165. package/dist/{chunk-G37RG543.js → chunk-LEZAPRMW.js} +1 -1
  166. package/dist/{chunk-3QWOO74G.js → chunk-LLZNPOGB.js} +97 -3
  167. package/dist/{chunk-SQBNN44X.js → chunk-LYEQZ7TW.js} +49 -15
  168. package/dist/chunk-M67ARGXY.js +175 -0
  169. package/dist/chunk-MPVXHYD5.js +85 -0
  170. package/dist/{chunk-RXL7A7JH.js → chunk-MZYNW5OY.js} +1 -1
  171. package/dist/{chunk-X2F6Q7TW.js → chunk-NBVSBSMZ.js} +1 -1
  172. package/dist/{chunk-LRETL4I3.js → chunk-NE5ZMNHN.js} +3 -3
  173. package/dist/chunk-NGDXBN3M.js +254 -0
  174. package/dist/{chunk-A5WEEND7.js → chunk-NKP4S2G5.js} +3 -3
  175. package/dist/{chunk-HDSDXGLV.js → chunk-NO5KHKKB.js} +1 -1
  176. package/dist/chunk-NOKJCF27.js +437 -0
  177. package/dist/{chunk-6KREY2Q7.js → chunk-NVRUZOEW.js} +5 -5
  178. package/dist/chunk-NVWBZXDK.js +257 -0
  179. package/dist/chunk-NXTQAY7Z.js +2607 -0
  180. package/dist/{chunk-C5YZMYQH.js → chunk-OLIXPGWN.js} +1 -1
  181. package/dist/{chunk-4DYJ6NOK.js → chunk-OUUWGAH4.js} +2 -2
  182. package/dist/{chunk-UPM5JP6G.js → chunk-OZNCAMS3.js} +47 -4
  183. package/dist/{chunk-UZ5RJYL3.js → chunk-P3ACGGW6.js} +1 -1
  184. package/dist/{chunk-6LY3QSJA.js → chunk-PE4DEYIW.js} +11 -6
  185. package/dist/{chunk-HK7SQDKJ.js → chunk-PGXESCSL.js} +2 -2
  186. package/dist/{chunk-NKDKB2RT.js → chunk-PK5ATL23.js} +6 -6
  187. package/dist/{chunk-2KLVTRY2.js → chunk-PLLBBNMC.js} +1 -1
  188. package/dist/{chunk-Z2PAVJJ4.js → chunk-PRJBAIHV.js} +3 -3
  189. package/dist/{chunk-QX7RWICL.js → chunk-PU7UYQRC.js} +1 -1
  190. package/dist/{chunk-57GRYGDU.js → chunk-PWNPP727.js} +1 -1
  191. package/dist/{chunk-PLOEFBFW.js → chunk-Q556G3P2.js} +3 -3
  192. package/dist/{chunk-4JERP7NT.js → chunk-QAEWWYHL.js} +29 -1
  193. package/dist/{chunk-2YGAKBRG.js → chunk-QFQWHCOJ.js} +3 -3
  194. package/dist/chunk-QILQ5FCG.js +198 -0
  195. package/dist/{chunk-G2KK64UB.js → chunk-QNETW6LZ.js} +101 -19
  196. package/dist/{chunk-FASR2WLT.js → chunk-R6AJ6VIJ.js} +1 -1
  197. package/dist/{chunk-6JTKIXLU.js → chunk-RBWLUYTO.js} +1 -1
  198. package/dist/{chunk-QLFN3MUW.js → chunk-RCOIKTHM.js} +1 -1
  199. package/dist/{chunk-ITRKRKS7.js → chunk-RFKRCVGW.js} +1 -1
  200. package/dist/{chunk-APR556TY.js → chunk-RJJZH7Z7.js} +190 -29
  201. package/dist/{chunk-5UAMBMNR.js → chunk-RO326K57.js} +44 -34
  202. package/dist/{chunk-JBAMYKBL.js → chunk-SSZIGWIG.js} +1 -1
  203. package/dist/{chunk-2I23RPSI.js → chunk-TKDITWDN.js} +9 -0
  204. package/dist/{chunk-VCCZQDCU.js → chunk-U32RDCUB.js} +3 -3
  205. package/dist/{chunk-OIS5VIAH.js → chunk-UWEFIIEG.js} +6 -2
  206. package/dist/{chunk-LPKTGK7L.js → chunk-V3ORKXAU.js} +4 -4
  207. package/dist/{chunk-WCP4OQUL.js → chunk-V6T42AQN.js} +2 -2
  208. package/dist/chunk-VAOUB2TK.js +23 -0
  209. package/dist/{chunk-4WSUP4CC.js → chunk-VEGTALBX.js} +11 -11
  210. package/dist/{chunk-AL7JMA54.js → chunk-VEJKY5I6.js} +2 -2
  211. package/dist/{chunk-74R44E4S.js → chunk-VGWGXAHT.js} +198 -93
  212. package/dist/{chunk-YKRNH5LU.js → chunk-VQWRRXBD.js} +1 -1
  213. package/dist/{chunk-7QRMFYOV.js → chunk-VYFZVIWX.js} +1 -1
  214. package/dist/{chunk-CAEWPEBA.js → chunk-W6J25BU7.js} +1 -1
  215. package/dist/{chunk-EUQF3JOH.js → chunk-WBG7XYVR.js} +1 -1
  216. package/dist/chunk-WT4RI36X.js +23 -0
  217. package/dist/{chunk-46RPEWTH.js → chunk-WYETVNK4.js} +1 -1
  218. package/dist/{chunk-DKRSKC5R.js → chunk-XQDF2I4D.js} +1 -1
  219. package/dist/{chunk-HKK7LLS5.js → chunk-XTGR3LMF.js} +34 -3
  220. package/dist/{chunk-XWWNRFRF.js → chunk-YJJ7FRX5.js} +11 -11
  221. package/dist/{chunk-F3QTF4T7.js → chunk-YZLDE3XJ.js} +3 -3
  222. package/dist/chunk-YZUHSV24.js +277 -0
  223. package/dist/{chunk-5I3YC7ER.js → chunk-ZGYRQHQ3.js} +2 -2
  224. package/dist/{chunk-3ODATKWH.js → chunk-ZPW6FAEQ.js} +1 -1
  225. package/dist/{chunk-YEOIPUFO.js → chunk-ZR4CQBAP.js} +1 -1
  226. package/dist/{chunk-VNK3MNZE.js → chunk-ZZEKOI2M.js} +1 -1
  227. package/dist/{cleanup-graph-garbage-XFGY4EEE.js → cleanup-graph-garbage-SJHT3RXT.js} +13 -12
  228. package/dist/{cloud-sync-shutdown-XCOATIJW.js → cloud-sync-shutdown-43RY4ZBS.js} +8 -7
  229. package/dist/{co-activation-XNBLOGK3.js → co-activation-5GP2E54J.js} +8 -7
  230. package/dist/{co-occurrence-HO4PGQC4.js → co-occurrence-OXF6MLM6.js} +11 -10
  231. package/dist/{code-context-index-5RY66SWZ.js → code-context-index-DWR6HS35.js} +7 -5
  232. package/dist/consent-passphrase-Z64GFJXK.js +23 -0
  233. package/dist/{conversation-entity-extractor-5G5DGRJU.js → conversation-entity-extractor-YSXUBOXC.js} +3 -3
  234. package/dist/{conversation-wiki-populator-RZKG6PK4.js → conversation-wiki-populator-5EGRW2UZ.js} +1 -1
  235. package/dist/{crdt-sync-6TD7LSZW.js → crdt-sync-FKEQAOQL.js} +5 -4
  236. package/dist/{crm-webhook-WZAV5776.js → crm-webhook-K4ZOGKOO.js} +2 -2
  237. package/dist/{cto-delegation-gate-UHMYFM4D.js → cto-delegation-gate-TQIOXGNV.js} +30 -27
  238. package/dist/{daemon-auth-SXZHLUYS.js → daemon-auth-OCHW2U6B.js} +3 -2
  239. package/dist/{daemon-orchestration-DT5M2ZAR.js → daemon-orchestration-HSW7IOH4.js} +35 -32
  240. package/dist/{daemon-ready-56VAPZU6.js → daemon-ready-VGPSRI3Z.js} +1 -1
  241. package/dist/{daemon-restart-circuit-breaker-5V6B6NLS.js → daemon-restart-circuit-breaker-SMTWFX27.js} +25 -3
  242. package/dist/db-backend-ODVJ3Q3D.js +7 -0
  243. package/dist/{db-restore-events-ZLD2HRQV.js → db-restore-events-TFCZ4CPM.js} +2 -1
  244. package/dist/{doc-graph-extractor-FNCYPFKY.js → doc-graph-extractor-W5KHZUL4.js} +11 -10
  245. package/dist/{documents-GKDZDUED.js → documents-SLQWZNOW.js} +18 -16
  246. package/dist/dreaming-E2M2O32J.js +63 -0
  247. package/dist/{exe-drift-QTKD2FHT.js → exe-drift-NUYEPGFR.js} +9 -8
  248. package/dist/{exe-export-ESJ6KP6J.js → exe-export-CFX2JAOJ.js} +21 -13
  249. package/dist/{exe-import-N4X3GEQB.js → exe-import-ZD5QMFN2.js} +21 -13
  250. package/dist/{exe-key-KZCCHX3W.js → exe-key-O4KHCKZZ.js} +114 -98
  251. package/dist/exe-org-TV7KW4D6.js +672 -0
  252. package/dist/{exe-snapshot-SCRPHCPZ.js → exe-snapshot-P4YW62MR.js} +38 -33
  253. package/dist/{fast-db-init-6H67K76Q.js → fast-db-init-YZNPKBNX.js} +1 -1
  254. package/dist/{founder-context-C7X7IRDA.js → founder-context-TU5G4AKR.js} +4 -3
  255. package/dist/{founder-monitor-envelope-DHSUMBWU.js → founder-monitor-envelope-SMILO4BT.js} +7 -5
  256. package/dist/gateway/index.js +23 -22
  257. package/dist/{gateway-client-7LMZKHTH.js → gateway-client-JA2BH7QO.js} +1 -1
  258. package/dist/{git-staleness-JCKVMWPO.js → git-staleness-CKSL73QX.js} +8 -7
  259. package/dist/{global-procedures-BR7WGSE7.js → global-procedures-X36SK7LZ.js} +9 -8
  260. package/dist/{graph-auto-extract-EOXWQRBZ.js → graph-auto-extract-OW7YWKRT.js} +11 -10
  261. package/dist/{graph-rag-5FVC5JXH.js → graph-rag-6GFTXM5O.js} +3 -3
  262. package/dist/{hook-integrity-TYGDD7OE.js → hook-integrity-AIDFKMTA.js} +1 -1
  263. package/dist/{hook-prefetch-2CN3MK4H.js → hook-prefetch-THLIXCLE.js} +31 -28
  264. package/dist/hooks/bug-report-worker.js +35 -32
  265. package/dist/hooks/codex-stop-task-finalizer.js +36 -33
  266. package/dist/hooks/commit-complete.js +34 -31
  267. package/dist/hooks/error-recall.js +16 -15
  268. package/dist/hooks/exe-heartbeat-hook.js +10 -9
  269. package/dist/hooks/ingest-worker.js +12 -10
  270. package/dist/hooks/ingest.js +19 -18
  271. package/dist/hooks/instructions-loaded.js +11 -10
  272. package/dist/hooks/manifest.json +20 -20
  273. package/dist/hooks/notification.js +11 -10
  274. package/dist/hooks/post-compact.js +11 -115
  275. package/dist/hooks/post-tool-combined.js +11 -11
  276. package/dist/hooks/pre-compact.js +38 -64
  277. package/dist/hooks/pre-tool-use.js +95 -36
  278. package/dist/hooks/prompt-submit.js +50 -47
  279. package/dist/hooks/session-end.js +39 -36
  280. package/dist/hooks/session-start.js +64 -18
  281. package/dist/hooks/stop.js +40 -37
  282. package/dist/hooks/subagent-stop.js +35 -32
  283. package/dist/hooks/summary-worker.js +41 -38
  284. package/dist/index.js +44 -41
  285. package/dist/inrun-inbox-DRKVDPLY.js +29 -0
  286. package/dist/{installer-YDLSXGD2.js → installer-CBHPY3RI.js} +11 -10
  287. package/dist/{installer-7UV3CNWZ.js → installer-LORTXEPZ.js} +11 -10
  288. package/dist/{installer-VPNTM3X6.js → installer-R4EKAE7F.js} +11 -10
  289. package/dist/{intercom-queue-KHKJJYCQ.js → intercom-queue-QGXWXDYJ.js} +30 -27
  290. package/dist/{key-backup-status-YMS7YGWO.js → key-backup-status-3RC6XTUX.js} +2 -1
  291. package/dist/lib/agent-config.js +3 -2
  292. package/dist/lib/cloud-sync.js +27 -24
  293. package/dist/lib/config.js +6 -1
  294. package/dist/lib/consolidation.js +14 -13
  295. package/dist/lib/crypto.js +4 -3
  296. package/dist/lib/database.js +8 -7
  297. package/dist/lib/db-backup.js +4 -3
  298. package/dist/lib/db-checkpoint-worker.js +1 -1
  299. package/dist/lib/db-daemon-client.js +7 -5
  300. package/dist/lib/db-read-worker-client.js +1 -1
  301. package/dist/lib/db-read-worker.js +1 -1
  302. package/dist/lib/db-write-worker-client.js +2 -2
  303. package/dist/lib/db-write-worker.js +3 -3
  304. package/dist/lib/db.js +8 -7
  305. package/dist/lib/device-registry.js +3 -2
  306. package/dist/lib/embed-worker.js +2 -1
  307. package/dist/lib/embedder.js +7 -5
  308. package/dist/lib/employee-templates.js +10 -9
  309. package/dist/lib/employees.js +8 -7
  310. package/dist/lib/error-detector.js +1 -1
  311. package/dist/lib/exe-daemon-client.js +16 -6
  312. package/dist/lib/exe-daemon.js +262 -125
  313. package/dist/lib/hybrid-search.js +13 -12
  314. package/dist/lib/identity-templates.js +3 -1
  315. package/dist/lib/identity.js +8 -7
  316. package/dist/lib/keychain.js +41 -3
  317. package/dist/lib/license.js +12 -3
  318. package/dist/lib/messaging.js +31 -28
  319. package/dist/lib/platform-support.js +25 -0
  320. package/dist/lib/post-tool-memory.js +6 -4
  321. package/dist/lib/preflight.js +29 -0
  322. package/dist/lib/registry-proxy.js +1 -1
  323. package/dist/lib/reminders.js +9 -8
  324. package/dist/lib/schedules.js +13 -12
  325. package/dist/lib/session-registry.js +10 -9
  326. package/dist/lib/session-wrappers.js +7 -3
  327. package/dist/lib/skill-learning.js +21 -13
  328. package/dist/lib/status-brief.js +8 -3
  329. package/dist/lib/store.js +12 -11
  330. package/dist/lib/task-router.js +9 -8
  331. package/dist/lib/tasks.js +32 -29
  332. package/dist/lib/tmux-routing.js +45 -29
  333. package/dist/lib/tmux-status.js +7 -3
  334. package/dist/lib/token-spend.js +9 -8
  335. package/dist/lib/ws-client.js +1 -1
  336. package/dist/{license-gate-YXUSNA2I.js → license-gate-NO2WGZPU.js} +5 -4
  337. package/dist/{license-sync-XFDOXL3Z.js → license-sync-CVEMSX3H.js} +4 -3
  338. package/dist/linux-systemd-LRW3BYSS.js +38 -0
  339. package/dist/mailbox-inbox-CP2VRBXZ.js +10 -0
  340. package/dist/mailbox-outbox-HXI7DYNC.js +19 -0
  341. package/dist/mcp/register-tools.js +108 -93
  342. package/dist/mcp/server.js +111 -96
  343. package/dist/mcp/tools/complete-reminder.js +10 -9
  344. package/dist/mcp/tools/create-reminder.js +10 -9
  345. package/dist/mcp/tools/create-task.js +38 -31
  346. package/dist/mcp/tools/deactivate-behavior.js +22 -14
  347. package/dist/mcp/tools/list-reminders.js +10 -9
  348. package/dist/mcp/tools/list-tasks.js +34 -31
  349. package/dist/mcp/tools/send-message.js +33 -30
  350. package/dist/mcp/tools/update-task.js +33 -30
  351. package/dist/{mcp-http-config-HIP5CEDV.js → mcp-http-config-H4B5LHCL.js} +9 -8
  352. package/dist/{mcp-session-identity-RTNZ2ZLW.js → mcp-session-identity-MCIJPH7T.js} +30 -27
  353. package/dist/{memory-cards-KG4TPNKK.js → memory-cards-PX3ZU7WC.js} +12 -11
  354. package/dist/{memory-graph-extractor-6HTBLO2N.js → memory-graph-extractor-M5LHDSFC.js} +12 -11
  355. package/dist/{memory-poisoning-defense-3ZT57RSJ.js → memory-poisoning-defense-LORMP5QJ.js} +8 -7
  356. package/dist/{memory-pressure-watchdog-ZOZBIMKC.js → memory-pressure-watchdog-AXJKFOCO.js} +31 -28
  357. package/dist/{memory-queue-W54BYW7V.js → memory-queue-4VN3DTOE.js} +3 -2
  358. package/dist/memory-queue-client-OI4LDT4W.js +18 -0
  359. package/dist/{memory-reflection-EQC4FXSW.js → memory-reflection-XB6CE5MY.js} +8 -7
  360. package/dist/{monitor-grants-BDLVFVDR.js → monitor-grants-W3ISOLMC.js} +6 -4
  361. package/dist/{monitor-identity-GLFZSEAH.js → monitor-identity-AN3B5QIN.js} +3 -2
  362. package/dist/{notification-ledger-NZ4HO3M5.js → notification-ledger-4JVPBNDO.js} +31 -28
  363. package/dist/{notifications-74YECZ4V.js → notifications-7EJE7FEP.js} +30 -27
  364. package/dist/{orchestration-events-KRQI4ED5.js → orchestration-events-GCMG4TBV.js} +9 -8
  365. package/dist/{orchestration-phase-KVF42ZKU.js → orchestration-phase-ZJ4XVNFO.js} +3 -2
  366. package/dist/orchestrator-W4PANW2L.js +55 -0
  367. package/dist/org-brief-session-65THKUUQ.js +45 -0
  368. package/dist/org-consent-policy-QE3TE273.js +68 -0
  369. package/dist/org-join-HTQ57JYH.js +35 -0
  370. package/dist/org-key-admin-4W6LZ5KZ.js +242 -0
  371. package/dist/org-key-pin-OTOKAELD.js +37 -0
  372. package/dist/{org-membership-B32NS5NI.js → org-membership-SML6GCHP.js} +11 -7
  373. package/dist/org-partner-config-XQGOB7EJ.js +25 -0
  374. package/dist/org-partner-runtime-VEQ2OQQM.js +44 -0
  375. package/dist/org-row-visibility-V2YHQMU7.js +18 -0
  376. package/dist/{pipeline-router-6ZZV7JMA.js → pipeline-router-HJSXQN2M.js} +9 -8
  377. package/dist/{plan-limits-B7AZKZ6U.js → plan-limits-GVLMARLS.js} +11 -10
  378. package/dist/{project-boot-WEQSKDD7.js → project-boot-YMHABZNL.js} +7 -2
  379. package/dist/{projection-worker-LRFFQ6JB.js → projection-worker-JUNR4VAH.js} +5 -4
  380. package/dist/{prospective-memory-A4GDTIWG.js → prospective-memory-NOGTSZC4.js} +8 -7
  381. package/dist/push-notifications-FIVZB27Y.js +60 -0
  382. package/dist/{reranker-YVTLJCFC.js → reranker-ZZYVYCQW.js} +3 -2
  383. package/dist/{retrieval-health-PK2ODTXM.js → retrieval-health-B7USNBNW.js} +1 -1
  384. package/dist/{review-polling-JFWRNQF6.js → review-polling-G7ZCVGXI.js} +31 -28
  385. package/dist/runtime/index.js +38 -35
  386. package/dist/{session-events-VMQBCUH3.js → session-events-HIULW2JW.js} +31 -28
  387. package/dist/{session-kill-telemetry-Z3W256T5.js → session-kill-telemetry-5FLZAMWE.js} +31 -28
  388. package/dist/session-lineage-AGOHSXIS.js +66 -0
  389. package/dist/{session-scope-2ADEVY3C.js → session-scope-64QIDBJS.js} +30 -27
  390. package/dist/setup-wizard-JHR2HYWC.js +35 -0
  391. package/dist/{shard-manager-DFLCDZT5.js → shard-manager-YEOHEOHL.js} +4 -3
  392. package/dist/{skill-refinement-APBYOSGX.js → skill-refinement-BYZNTHQJ.js} +9 -8
  393. package/dist/{stack-promote-SZYIPTFT.js → stack-promote-4WRGX5YI.js} +6 -5
  394. package/dist/{stack-release-EYRDEGPD.js → stack-release-HRUOH243.js} +93 -80
  395. package/dist/{stack-update-YWK2YXP6.js → stack-update-X5LCAIMH.js} +9 -4
  396. package/dist/{steward-gate-CIOBPNX6.js → steward-gate-LWTZRKBJ.js} +9 -8
  397. package/dist/{support-inbox-OAWGFRKW.js → support-inbox-HA7N3XFN.js} +5 -4
  398. package/dist/{task-enforcement-YAU6ZGDC.js → task-enforcement-4MFBYFXY.js} +37 -28
  399. package/dist/task-request-inbox-VSXZKKPQ.js +64 -0
  400. package/dist/{task-scope-44N7XP5N.js → task-scope-MWBLCI4L.js} +30 -27
  401. package/dist/{tasks-crud-IWVDREXG.js → tasks-crud-FXGSJNQG.js} +30 -27
  402. package/dist/tasks-notify-NHACVTKE.js +60 -0
  403. package/dist/{tasks-review-VDFWFETP.js → tasks-review-L3FTWM6K.js} +30 -27
  404. package/dist/{telemetry-upload-3X5ESEKM.js → telemetry-upload-OFC56N3C.js} +13 -12
  405. package/dist/{token-budget-WZGO22ME.js → token-budget-JHZJH2OU.js} +9 -8
  406. package/dist/{tool-capability-index-IFNZ6QUS.js → tool-capability-index-WZWVBI2R.js} +1 -1
  407. package/dist/{tool-telemetry-F7RWUNVK.js → tool-telemetry-MX4CODRA.js} +1 -1
  408. package/dist/tui/App.js +44 -41
  409. package/dist/{tui-data-KT7YGVQS.js → tui-data-OLCJT3X3.js} +30 -27
  410. package/dist/{typed-messages-TKDGVPHS.js → typed-messages-RCMPEKJN.js} +1 -1
  411. package/dist/{update-support-ZVRMECNQ.js → update-support-Q5QYK6TG.js} +21 -19
  412. package/dist/{work-state-heartbeat-CA4CN7DQ.js → work-state-heartbeat-FOF6RQSC.js} +1 -1
  413. package/dist/{worker-gate-52MVKYGZ.js → worker-gate-UEBG2QLF.js} +3 -2
  414. package/dist/{workflow-engine-ZAFBPVUP.js → workflow-engine-E7PG3R34.js} +2 -2
  415. package/dist/{worktree-NNVXVV6A.js → worktree-VOLK2GOS.js} +10 -9
  416. package/dist/{worktree-sweep-IM2ZQG6Z.js → worktree-sweep-AATRCA33.js} +11 -10
  417. package/package.json +8 -20
  418. package/postinstall.mjs +124 -0
  419. package/release-notes.json +18 -16
  420. package/stack.release.schema.json +4 -0
  421. package/dist/chunk-AFNRE2RV.js +0 -408
  422. package/dist/chunk-OSKWCKUC.js +0 -6
  423. package/dist/chunk-S3FIQCSM.js +0 -232
  424. package/dist/chunk-W6UB2AWP.js +0 -656
  425. package/dist/dreaming-WPMQJAXW.js +0 -60
  426. package/dist/exe-org-UK77DUU4.js +0 -73
  427. package/dist/memory-queue-client-RRNW2IFZ.js +0 -16
  428. package/dist/orchestrator-WV2YCHTK.js +0 -52
  429. package/dist/push-notifications-GOFTDDWW.js +0 -15
  430. package/dist/setup-wizard-26B36FMC.js +0 -14
  431. package/dist/tasks-notify-WK5HA77D.js +0 -57
  432. /package/dist/{chunk-BGYCUZYK.js → chunk-3NPMPEAC.js} +0 -0
  433. /package/dist/{chunk-YL2JH3XV.js → chunk-6C4UAKMS.js} +0 -0
  434. /package/dist/{chunk-U7RZIY74.js → chunk-7AY76CBP.js} +0 -0
  435. /package/dist/{chunk-WTH4CSAP.js → chunk-DFQEUZSI.js} +0 -0
  436. /package/dist/{chunk-YMCIZCNK.js → chunk-J34U3NT2.js} +0 -0
  437. /package/dist/{chunk-FVWI2AR4.js → chunk-LRSBJCDL.js} +0 -0
  438. /package/dist/{chunk-COHHVCFA.js → chunk-Q2DLJR3C.js} +0 -0
  439. /package/dist/{chunk-ZMYXQU4L.js → chunk-STDYMMOX.js} +0 -0
  440. /package/dist/{chunk-DSGFX3RT.js → chunk-YWN3XMPU.js} +0 -0
  441. /package/dist/{chunk-YMUZWC33.js → chunk-YYB5PMTK.js} +0 -0
  442. /package/dist/{core-memory-AATZRQEY.js → core-memory-BA7UCIR6.js} +0 -0
  443. /package/dist/{entity-boost-HLFG2CH3.js → entity-boost-VXXED26D.js} +0 -0
  444. /package/dist/{memory-isolation-CF6FYSXD.js → memory-isolation-3HQ6NNX3.js} +0 -0
  445. /package/dist/{message-queue-client-AX6KQK7T.js → message-queue-client-5XW7ZOK2.js} +0 -0
  446. /package/dist/{oauth-server-VE5ELXTF.js → oauth-server-H6EJUPEP.js} +0 -0
  447. /package/dist/{webhook-pipe-A4X4SCMW.js → webhook-pipe-QJRFZVKA.js} +0 -0
  448. /package/dist/{wiki-acl-GNIXYWHJ.js → wiki-acl-X67M7QT3.js} +0 -0
  449. /package/dist/{wiki-client-7RRYRSPS.js → wiki-client-57QWZIHQ.js} +0 -0
package/dist/bin/cli.js CHANGED
@@ -25,10 +25,9 @@ Install: https://nodejs.org/
25
25
  }
26
26
  var args = process.argv.slice(2);
27
27
  if (process.platform === "win32") {
28
- process.stderr.write(
29
- "\nexe-os does not support native Windows. Use WSL2 instead:\n 1. Run `wsl --install` in PowerShell\n 2. Open Ubuntu/WSL2\n 3. Install and run exe-os inside WSL2\n\n"
30
- );
31
- process.exit(0);
28
+ const { windowsRefusalText, WINDOWS_UNSUPPORTED_EXIT } = await import("../lib/platform-support.js");
29
+ process.stderr.write(windowsRefusalText());
30
+ process.exit(WINDOWS_UNSUPPORTED_EXIT);
32
31
  }
33
32
  if (args[0] === "--version" || args[0] === "-v") {
34
33
  try {
@@ -81,7 +80,7 @@ Commands:
81
80
  channel View/set update channel (stable|canary|pinned)
82
81
  cloud Cloud sync setup and device linking
83
82
  doctor Diagnose installation health
84
- daemon Manage daemon lifecycle (status|reset-breaker|install --user|install --system)
83
+ daemon Manage daemon lifecycle (status|restart|stop|reset-breaker|install --user|install --system)
85
84
  support test Verify support intake works
86
85
  mcp List/enable/disable MCP servers for Claude, Codex, and OpenCode
87
86
  reconcile-backlog Detect support records already shipped in code (report-only default)
@@ -109,7 +108,7 @@ if (args.includes("--global")) {
109
108
  );
110
109
  await runClaudeInstall();
111
110
  } else if (args.includes("--commands-only")) {
112
- const { copySlashCommands, resolvePackageRoot } = await import("../installer-7UV3CNWZ.js");
111
+ const { copySlashCommands, resolvePackageRoot } = await import("../installer-LORTXEPZ.js");
113
112
  try {
114
113
  const packageRoot = resolvePackageRoot();
115
114
  const result = await copySlashCommands(packageRoot);
@@ -172,7 +171,7 @@ if (args.includes("--global")) {
172
171
  break;
173
172
  }
174
173
  } else if (args[0] === "org") {
175
- const { main: runOrg } = await import("../exe-org-UK77DUU4.js");
174
+ const { main: runOrg } = await import("../exe-org-TV7KW4D6.js");
176
175
  await runOrg(args.slice(1));
177
176
  } else if (args[0] === "mcp") {
178
177
  const { main: runMcp } = await import("./exe-mcp.js");
@@ -180,7 +179,7 @@ if (args.includes("--global")) {
180
179
  } else if (args[0] === "code-context") {
181
180
  await runCodeContext(args.slice(1));
182
181
  } else if (args[0] === "jobs") {
183
- const { cancelBackgroundJob, formatJobs, listBackgroundJobs } = await import("../background-jobs-XGTLESKM.js");
182
+ const { cancelBackgroundJob, formatJobs, listBackgroundJobs } = await import("../background-jobs-Z6KHCWES.js");
184
183
  const sub = args[1] ?? "status";
185
184
  if (sub === "status" || sub === "list") {
186
185
  console.log(formatJobs(listBackgroundJobs()));
@@ -201,7 +200,7 @@ if (args.includes("--global")) {
201
200
  process.exit(1);
202
201
  }
203
202
  } else if (args[0] === "key") {
204
- const { main: runKey } = await import("../exe-key-KZCCHX3W.js");
203
+ const { main: runKey } = await import("../exe-key-O4KHCKZZ.js");
205
204
  await runKey(args.slice(1));
206
205
  } else if (args[0] === "grant") {
207
206
  const { main: runGrant } = await import("./exe-grant.js");
@@ -259,7 +258,7 @@ if (args.includes("--global")) {
259
258
  process.exit(1);
260
259
  }
261
260
  } else if (args[0] === "backfill-metadata") {
262
- const { backfillMetadata } = await import("../backfill-metadata-4DS4A5U3.js");
261
+ const { backfillMetadata } = await import("../backfill-metadata-CTSVPOC6.js");
263
262
  let batchSize = 50;
264
263
  let limit = 0;
265
264
  let dryRun = false;
@@ -290,10 +289,10 @@ if (args.includes("--global")) {
290
289
  process.exit(1);
291
290
  }
292
291
  } else if (args[0] === "export") {
293
- const { runExeExport } = await import("../exe-export-ESJ6KP6J.js");
292
+ const { runExeExport } = await import("../exe-export-CFX2JAOJ.js");
294
293
  await runExeExport(args.slice(1));
295
294
  } else if (args[0] === "import") {
296
- const { runExeImport } = await import("../exe-import-N4X3GEQB.js");
295
+ const { runExeImport } = await import("../exe-import-ZD5QMFN2.js");
297
296
  await runExeImport(args.slice(1));
298
297
  } else if (args[0] === "import-history") {
299
298
  const { runImportHistory } = await import("./import-history.js");
@@ -318,7 +317,7 @@ if (args.includes("--global")) {
318
317
  const { initStore } = await import("../lib/store.js");
319
318
  await initStore();
320
319
  const { sendMessage } = await import("../lib/messaging.js");
321
- const { getActiveAgent } = await import("../active-agent-Y3DCBD7J.js");
320
+ const { getActiveAgent } = await import("../active-agent-5RXOXM47.js");
322
321
  const { agentId } = getActiveAgent();
323
322
  const result = await sendMessage({
324
323
  fromAgent: agentId,
@@ -342,7 +341,7 @@ ID: ${result.id}`);
342
341
  process.exit(code);
343
342
  } else if (args[0] === "doctor") {
344
343
  if (args.includes("--drift")) {
345
- const { runDrift } = await import("../exe-drift-QTKD2FHT.js");
344
+ const { runDrift } = await import("../exe-drift-NUYEPGFR.js");
346
345
  await runDrift(args.slice(1));
347
346
  } else {
348
347
  const { runCcDoctor } = await import("./cc-doctor.js");
@@ -352,7 +351,7 @@ ID: ${result.id}`);
352
351
  const icon = r.pass ? "\x1B[32m\u2713\x1B[0m" : "\x1B[31m\u2717\x1B[0m";
353
352
  console.log(` ${icon} ${r.name}: ${r.detail}`);
354
353
  }
355
- const { readBreakerAlert } = await import("../daemon-restart-circuit-breaker-5V6B6NLS.js");
354
+ const { readBreakerAlert, readSelfHealStormAlert } = await import("../daemon-restart-circuit-breaker-SMTWFX27.js");
356
355
  const alert = readBreakerAlert();
357
356
  let breakerFailed = 0;
358
357
  if (alert) {
@@ -365,6 +364,14 @@ ID: ${result.id}`);
365
364
  } else {
366
365
  console.log("\n \x1B[32m\u2713 restart circuit breaker: not tripped\x1B[0m");
367
366
  }
367
+ const storm = readSelfHealStormAlert();
368
+ if (storm) {
369
+ breakerFailed = 1;
370
+ console.log("\n \x1B[33m\u26A0 daemon restart storm: ACTIVE\x1B[0m");
371
+ console.log(` ${String(storm.reason ?? "daemon is self-healing repeatedly")}`);
372
+ console.log(` self-heal restarts in window: ${String(storm.selfHealRestartsInWindow ?? "?")}`);
373
+ console.log(" inspect: exe-os doctor --restarts");
374
+ }
368
375
  const totalFailed = failed + breakerFailed;
369
376
  console.log(totalFailed === 0 ? "\n \x1B[32mAll checks passed\x1B[0m\n" : `
370
377
  \x1B[31m${totalFailed} issue(s) found\x1B[0m
@@ -379,38 +386,110 @@ ID: ${result.id}`);
379
386
  isRestartBreakerTripped,
380
387
  restartBreakerStatePath,
381
388
  restartBreakerAlertPath,
382
- daemonLastExitPath
383
- } = await import("../daemon-restart-circuit-breaker-5V6B6NLS.js");
389
+ daemonLastExitPath,
390
+ readSelfHealStormAlert,
391
+ selfHealStormAlertPath
392
+ } = await import("../daemon-restart-circuit-breaker-SMTWFX27.js");
384
393
  const { existsSync: existsSync2, readFileSync: readFileSync2 } = await import("fs");
385
394
  if (sub === "install") {
386
395
  const mode = args[2];
396
+ if (mode && mode !== "--user" && mode !== "--system") {
397
+ console.error("Usage: exe-os daemon install [--user|--system]");
398
+ process.exit(1);
399
+ }
400
+ if (process.platform === "linux") {
401
+ if (mode === "--system") {
402
+ console.error(" \x1B[31m\u2717\x1B[0m `--system` is macOS-only (LaunchDaemons). exe-os does not install a system-wide systemd unit.");
403
+ console.error(" On Linux use: exe-os daemon install --user (systemd --user, with lingering so it survives logout)");
404
+ process.exit(1);
405
+ }
406
+ const { setupLinuxSupervision } = await import("./install.js");
407
+ const res = setupLinuxSupervision();
408
+ if (!res.ok) {
409
+ console.error(" \x1B[31m\u2717\x1B[0m systemd supervision NOT installed \u2014 the daemon would run unsupervised.");
410
+ if (!res.daemon.ok) console.error(` ${res.daemon.unit}: ${res.daemon.detail}`);
411
+ if (!res.watchdog.ok) console.error(` ${res.watchdog.unit}: ${res.watchdog.detail}`);
412
+ process.exit(1);
413
+ }
414
+ console.log(` \x1B[32m\u2713\x1B[0m systemd user units active: ${res.daemon.unit}, ${res.watchdog.unit}`);
415
+ process.exit(0);
416
+ }
417
+ if (process.platform !== "darwin") {
418
+ console.error(` \x1B[31m\u2717\x1B[0m exe-os daemon install is not supported on ${process.platform} (launchd is macOS, systemd is Linux).`);
419
+ process.exit(1);
420
+ }
387
421
  if (mode === "--system") {
388
422
  const { installSystemLaunchDaemons } = await import("./install-launchd.js");
389
423
  process.exit(installSystemLaunchDaemons());
390
424
  }
391
- if (mode === "--user" || !mode) {
392
- const { setupDaemonKeepalive, setupWatchdog } = await import("./install.js");
393
- setupDaemonKeepalive();
394
- setupWatchdog();
395
- console.log(" \x1B[32m\u2713\x1B[0m User LaunchAgents refreshed (default login-session domain).");
396
- console.log(" For headless pre-login start: sudo exe-os daemon install --system");
397
- process.exit(0);
425
+ const { setupDaemonKeepalive, setupWatchdog } = await import("./install.js");
426
+ const daemonRes = setupDaemonKeepalive();
427
+ const watchdogRes = setupWatchdog();
428
+ if (!daemonRes.ok || !watchdogRes.ok) {
429
+ console.error(" \x1B[31m\u2717\x1B[0m User LaunchAgents NOT fully registered \u2014 the daemon may be unsupervised.");
430
+ if (!daemonRes.ok) console.error(` com.askexe.exed: ${daemonRes.detail}`);
431
+ if (!watchdogRes.ok) console.error(` com.askexe.watchdog: ${watchdogRes.detail}`);
432
+ process.exit(1);
398
433
  }
399
- console.error("Usage: exe-os daemon install [--user|--system]");
400
- process.exit(1);
434
+ console.log(" \x1B[32m\u2713\x1B[0m User LaunchAgents refreshed (default login-session domain).");
435
+ console.log(" For headless pre-login start: sudo exe-os daemon install --system");
436
+ process.exit(0);
437
+ } else if (sub === "restart") {
438
+ const { restartDaemonNow } = await import("../lib/exe-daemon-client.js");
439
+ const outcome = await restartDaemonNow("manual");
440
+ if (!outcome.ok) {
441
+ console.error(` \x1B[31m\u2717\x1B[0m Daemon restart declined: ${outcome.detail}`);
442
+ process.exit(1);
443
+ }
444
+ console.log(` \x1B[32m\u2713\x1B[0m ${outcome.detail}`);
445
+ if (!outcome.running) {
446
+ console.log(" Run 'exe-os daemon status' in a few seconds to confirm it came back.");
447
+ }
448
+ process.exit(0);
449
+ } else if (sub === "stop") {
450
+ const { stopDaemonNow } = await import("../lib/exe-daemon-client.js");
451
+ const outcome = await stopDaemonNow();
452
+ if (!outcome.ok) {
453
+ console.error(` \x1B[31m\u2717\x1B[0m ${outcome.detail}`);
454
+ process.exit(1);
455
+ }
456
+ console.log(` \x1B[32m\u2713\x1B[0m ${outcome.detail}`);
457
+ console.log(" Memory, tasks and MCP are DOWN until you run: \x1B[1mexe-os daemon restart\x1B[0m");
458
+ process.exit(0);
401
459
  } else if (sub === "reset-breaker") {
402
460
  resetRestartBreaker();
403
461
  console.log(" \x1B[32m\u2713\x1B[0m Restart circuit breaker reset (crash counter + alert cleared).");
404
- console.log(" Relaunch the daemon (it starts automatically on the next exe-os command / launchd tick).");
462
+ console.log(" Now run: \x1B[1mexe-os daemon restart\x1B[0m");
463
+ console.log(" (a degraded daemon is still running, so nothing restarts it on its own).");
405
464
  process.exit(0);
406
465
  } else if (sub === "status" || !sub) {
407
466
  const tripped = isRestartBreakerTripped();
467
+ if (process.platform === "linux") {
468
+ const { SYSTEMD_DAEMON_UNIT, SYSTEMD_WATCHDOG_UNIT, runCommand, isActiveOutput } = await import("../linux-systemd-LRW3BYSS.js");
469
+ console.log("");
470
+ for (const unit of [SYSTEMD_DAEMON_UNIT, SYSTEMD_WATCHDOG_UNIT]) {
471
+ const active = runCommand("systemctl", ["--user", "is-active", unit], 3e3);
472
+ const enabled = runCommand("systemctl", ["--user", "is-enabled", unit], 3e3).stdout.trim() || "not-installed";
473
+ const running = isActiveOutput(active.stdout);
474
+ console.log(
475
+ ` ${unit}: ${running ? "\x1B[32mactive\x1B[0m" : `\x1B[31m${active.stdout.trim() || "inactive"}\x1B[0m`} (${enabled})` + (running ? "" : " \u2190 supervises nothing in this state; fix with: exe-os daemon install --user")
476
+ );
477
+ }
478
+ }
408
479
  console.log(`
409
480
  Restart circuit breaker: ${tripped ? "\x1B[31mTRIPPED\x1B[0m" : "\x1B[32mnot tripped\x1B[0m"}`);
410
481
  const alert = readBreakerAlert();
411
482
  if (alert) console.log(`
412
483
  ${JSON.stringify(alert, null, 2)}
413
484
  `);
485
+ const stormAlert = readSelfHealStormAlert();
486
+ console.log(` Self-heal restart storm: ${stormAlert ? "\x1B[33mACTIVE\x1B[0m" : "\x1B[32mnone\x1B[0m"}`);
487
+ if (stormAlert) {
488
+ console.log(`
489
+ ${JSON.stringify(stormAlert, null, 2)}`);
490
+ console.log(` Alert file: ${selfHealStormAlertPath()}`);
491
+ console.log(" Inspect: exe-os doctor --restarts\n");
492
+ }
414
493
  for (const [label, p] of [["state", restartBreakerStatePath()], ["last-exit", daemonLastExitPath()]]) {
415
494
  if (existsSync2(p)) {
416
495
  try {
@@ -423,7 +502,7 @@ ${JSON.stringify(alert, null, 2)}
423
502
  if (!alert && !tripped) console.log(` Alert file: ${restartBreakerAlertPath()} (absent \u2014 healthy)`);
424
503
  process.exit(tripped ? 1 : 0);
425
504
  } else {
426
- console.error("Usage: exe-os daemon <status|reset-breaker|install [--user|--system]>");
505
+ console.error("Usage: exe-os daemon <status|restart|stop|reset-breaker|install [--user|--system]>");
427
506
  process.exit(1);
428
507
  }
429
508
  } else if (args[0] === "backup") {
@@ -472,13 +551,13 @@ ${JSON.stringify(alert, null, 2)}
472
551
  if (result.preRestoreBackup) {
473
552
  console.log(`Pre-restore snapshot saved: ${path.basename(result.preRestoreBackup)}`);
474
553
  }
475
- console.log("Restart the daemon for changes to take effect: exe-os daemon restart");
554
+ console.log("Restart the daemon so it stops serving the pre-restore database: exe-os daemon restart");
476
555
  } else {
477
556
  console.error("No backup available to restore.");
478
557
  process.exit(1);
479
558
  }
480
559
  } else if (sub === "verify") {
481
- const { verifyBackup } = await import("../backup-verify-JNYKXIU2.js");
560
+ const { verifyBackup } = await import("../backup-verify-YJMSP24E.js");
482
561
  let target;
483
562
  const pathIdx = args.indexOf("--path");
484
563
  if (pathIdx >= 0 && args[pathIdx + 1]) {
@@ -508,7 +587,7 @@ ${JSON.stringify(alert, null, 2)}
508
587
  process.exit(1);
509
588
  }
510
589
  } else if (args[0] === "setup" || args[0] === "-setup" || args[0] === "--setup") {
511
- const { runSetupWizard } = await import("../setup-wizard-26B36FMC.js");
590
+ const { runSetupWizard } = await import("../setup-wizard-JHR2HYWC.js");
512
591
  await runSetupWizard({
513
592
  skipModel: args.includes("--skip-model"),
514
593
  nonInteractive: args.includes("--non-interactive") || args.includes("-y") || args.includes("--yes"),
@@ -528,11 +607,11 @@ ${JSON.stringify(alert, null, 2)}
528
607
  const { runStackUpdateCli } = await import("./stack-update.js");
529
608
  await runStackUpdateCli(args.slice(1));
530
609
  } else if (args[0] === "release") {
531
- const { parseReleaseArgs, runStackRelease } = await import("../stack-release-EYRDEGPD.js");
610
+ const { parseReleaseArgs, runStackRelease } = await import("../stack-release-HRUOH243.js");
532
611
  const releaseFlags = parseReleaseArgs(args.slice(1));
533
612
  await runStackRelease(releaseFlags);
534
613
  } else if (args[0] === "stack-promote") {
535
- const { runStackPromoteCli } = await import("../stack-promote-SZYIPTFT.js");
614
+ const { runStackPromoteCli } = await import("../stack-promote-4WRGX5YI.js");
536
615
  await runStackPromoteCli(args.slice(1));
537
616
  } else if (args[0] === "preflight") {
538
617
  const { runPreflightCli } = await import("./exe-preflight.js");
@@ -564,16 +643,16 @@ Post-deploy verification \u2014 8 runtime checks after stack-update.
564
643
  `);
565
644
  process.exit(report.failed > 0 ? 1 : 0);
566
645
  } else if (args[0] === "snapshot") {
567
- const { main: runSnapshot } = await import("../exe-snapshot-SCRPHCPZ.js");
646
+ const { main: runSnapshot } = await import("../exe-snapshot-P4YW62MR.js");
568
647
  await runSnapshot(args.slice(1));
569
648
  } else if (args[0] === "boot") {
570
- const { projectBoot, parseBootArgs } = await import("../project-boot-WEQSKDD7.js");
649
+ const { projectBoot, parseBootArgs } = await import("../project-boot-YMHABZNL.js");
571
650
  const bootOpts = parseBootArgs(args.slice(1));
572
651
  console.log(await projectBoot(bootOpts));
573
652
  } else if (args[0] === "brand") {
574
653
  const configIdx = args.indexOf("--config");
575
654
  if (configIdx === -1 || !args[configIdx + 1]) {
576
- const { loadBranding, BRANDING_PATH } = await import("../branding-6FHWZQYQ.js");
655
+ const { loadBranding, BRANDING_PATH } = await import("../branding-7MZDHTKN.js");
577
656
  const b = loadBranding();
578
657
  console.log(`
579
658
  Brand: ${b.name}`);
@@ -592,7 +671,7 @@ Post-deploy verification \u2014 8 runtime checks after stack-update.
592
671
  }
593
672
  try {
594
673
  const raw = JSON.parse(rf(configPath, "utf-8"));
595
- const { validateBranding, saveBranding } = await import("../branding-6FHWZQYQ.js");
674
+ const { validateBranding, saveBranding } = await import("../branding-7MZDHTKN.js");
596
675
  const result = validateBranding(raw);
597
676
  if (!result.valid) {
598
677
  console.error(`
@@ -681,7 +760,7 @@ cd into a project folder and run \x1B[1m${cooName}1\x1B[0m to boot your COO.
681
760
  }
682
761
  }
683
762
  async function runCodeContext(ccArgs) {
684
- const { buildCodeContextIndex, getCodeContextStats, searchCodeContext } = await import("../code-context-index-5RY66SWZ.js");
763
+ const { buildCodeContextIndex, getCodeContextStats, searchCodeContext } = await import("../code-context-index-DWR6HS35.js");
685
764
  const sub = ccArgs[0] ?? "status";
686
765
  const projectRoot = valueAfter(ccArgs, "--project-root");
687
766
  if (sub === "init" || sub === "index") {
@@ -762,7 +841,7 @@ function numberAfter(args2, flag) {
762
841
  return Number.isFinite(parsed) ? parsed : void 0;
763
842
  }
764
843
  async function runClaudeInstall() {
765
- const { runInstaller } = await import("../installer-7UV3CNWZ.js");
844
+ const { runInstaller } = await import("../installer-LORTXEPZ.js");
766
845
  try {
767
846
  await runInstaller();
768
847
  } catch (err) {
@@ -774,7 +853,7 @@ async function runClaudeInstall() {
774
853
  }
775
854
  }
776
855
  async function runOpenCodeInstall() {
777
- const { runOpenCodeInstaller } = await import("../installer-VPNTM3X6.js");
856
+ const { runOpenCodeInstaller } = await import("../installer-R4EKAE7F.js");
778
857
  try {
779
858
  await runOpenCodeInstaller();
780
859
  } catch (err) {
@@ -786,7 +865,7 @@ async function runOpenCodeInstall() {
786
865
  }
787
866
  }
788
867
  async function runCodexInstall() {
789
- const { runCodexInstaller } = await import("../installer-YDLSXGD2.js");
868
+ const { runCodexInstaller } = await import("../installer-CBHPY3RI.js");
790
869
  try {
791
870
  await runCodexInstaller();
792
871
  } catch (err) {
@@ -798,7 +877,7 @@ async function runCodexInstall() {
798
877
  }
799
878
  }
800
879
  async function runClaudeCheck() {
801
- const { detectMcpNameCollisions } = await import("../installer-7UV3CNWZ.js");
880
+ const { detectMcpNameCollisions } = await import("../installer-LORTXEPZ.js");
802
881
  const claudeDir = path.join(os.homedir(), ".claude");
803
882
  const settingsPath = path.join(claudeDir, "settings.json");
804
883
  const claudeJsonPath = path.join(os.homedir(), ".claude.json");
@@ -1299,12 +1378,12 @@ async function runCloudSync() {
1299
1378
  console.error("Cloud sync is not configured. Run \x1B[36mexe-os cloud\x1B[0m to set up.");
1300
1379
  process.exit(1);
1301
1380
  }
1302
- const { initStore, disposeStore } = await import("../lib/store.js");
1381
+ const { disposeStore } = await import("../lib/store.js");
1303
1382
  const { cloudSync } = await import("../lib/cloud-sync.js");
1304
1383
  const { getMasterKey } = await import("../lib/keychain.js");
1305
1384
  const { initSyncCrypto } = await import("../lib/crypto.js");
1306
1385
  const { assertCloudSyncReachable, withTimeout } = await import("./exe-cloud.js");
1307
- const { runCloudSyncShutdown } = await import("../cloud-sync-shutdown-XCOATIJW.js");
1386
+ const { runCloudSyncShutdown } = await import("../cloud-sync-shutdown-43RY4ZBS.js");
1308
1387
  let shuttingDown = false;
1309
1388
  const handleShutdown = (signal) => {
1310
1389
  if (shuttingDown) return;
@@ -1320,7 +1399,14 @@ async function runCloudSync() {
1320
1399
  console.error(`Cloud sync aborted: ${err instanceof Error ? err.message : String(err)}`);
1321
1400
  process.exit(1);
1322
1401
  }
1323
- await initStore();
1402
+ const { isPostgresBackendEnabled } = await import("../db-backend-ODVJ3Q3D.js");
1403
+ if (isPostgresBackendEnabled()) {
1404
+ const { initPostgresOnlyDatabase } = await import("../lib/database.js");
1405
+ await initPostgresOnlyDatabase();
1406
+ } else {
1407
+ const { fastDbInit } = await import("../fast-db-init-YZNPKBNX.js");
1408
+ await fastDbInit();
1409
+ }
1324
1410
  const masterKey = await getMasterKey();
1325
1411
  if (masterKey) {
1326
1412
  initSyncCrypto(masterKey);
@@ -1,10 +1,19 @@
1
1
  #!/usr/bin/env node
2
+ import "../chunk-MLKGABMK.js";
2
3
 
3
4
  // src/bin/customer-readiness.ts
4
5
  import { readFileSync, existsSync, readdirSync, statSync } from "fs";
5
6
  import { execSync } from "child_process";
6
7
  import path from "path";
7
8
  import { fileURLToPath } from "url";
9
+
10
+ // src/lib/scope-evidence.ts
11
+ var SCOPE_CALL = /\b(?:strictSessionScopeFilter|sessionScopeFilter)\s*\(/;
12
+ function hasSessionScopeEvidence(content) {
13
+ return SCOPE_CALL.test(content) || content.includes("session_scope") || content.includes("intentionally unscoped");
14
+ }
15
+
16
+ // src/bin/customer-readiness.ts
8
17
  var __dirname = path.dirname(fileURLToPath(import.meta.url));
9
18
  var ROOT = path.resolve(__dirname, "../..");
10
19
  var pass = 0;
@@ -75,7 +84,7 @@ test("Session scoping \u2014 all task query files import scope helper", () => {
75
84
  const basename = path.basename(f);
76
85
  if (exempt.some((e) => basename === e)) continue;
77
86
  const content = readFileSync(path.join(ROOT, f), "utf8");
78
- if (!content.includes("task-scope") && !content.includes("sessionScopeFilter") && !content.includes("session_scope") && !content.includes("intentionally unscoped")) {
87
+ if (!hasSessionScopeEvidence(content)) {
79
88
  unscoped.push(f);
80
89
  }
81
90
  }