@askexenow/exe-os 0.9.145 → 0.9.146

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (342) hide show
  1. package/dist/{active-agent-HUDSZRUG.js → active-agent-KMQCNXXD.js} +6 -6
  2. package/dist/{active-agent-GJOJUEMF.js → active-agent-NCZCDDZ2.js} +6 -6
  3. package/dist/{agent-context-HH7TL5ZP.js → agent-context-AZTTMUHP.js} +1 -1
  4. package/dist/agent-heartbeat-I5UPGXAU.js +60 -0
  5. package/dist/{agent-loop-OCJFYO72.js → agent-loop-NUIWAL3Z.js} +1 -1
  6. package/dist/{agentic-ontology-5PGUVMDP.js → agentic-ontology-SQR74CO7.js} +2 -2
  7. package/dist/{asana-BSDR6NW4.js → asana-MRQ2OQMJ.js} +1 -1
  8. package/dist/assets/wezterm.lua +68 -0
  9. package/dist/{backfill-metadata-ZDJ5B37R.js → backfill-metadata-5JOQOIN2.js} +7 -7
  10. package/dist/{background-jobs-4N4JSZVZ.js → background-jobs-IUB22CRF.js} +4 -4
  11. package/dist/{bash-X54PZMOG.js → bash-HOHKSOU3.js} +1 -1
  12. package/dist/{behaviors-TXLHEM5J.js → behaviors-4U2N5L4E.js} +6 -6
  13. package/dist/bin/age-ontology-load.js +4 -4
  14. package/dist/bin/agentic-ontology-backfill.js +9 -9
  15. package/dist/bin/agentic-reflection-backfill.js +10 -10
  16. package/dist/bin/agentic-semantic-label.js +9 -9
  17. package/dist/bin/backfill-conversations.js +9 -9
  18. package/dist/bin/backfill-responses.js +9 -9
  19. package/dist/bin/backfill-vectors.js +12 -14
  20. package/dist/bin/bulk-sync-postgres.js +10 -10
  21. package/dist/bin/cc-doctor.js +5 -5
  22. package/dist/bin/cleanup-stale-review-tasks.js +12 -11
  23. package/dist/bin/cli.js +19 -19
  24. package/dist/bin/customer-readiness.js +9 -0
  25. package/dist/bin/exe-agent-config.js +6 -6
  26. package/dist/bin/exe-agent.js +8 -8
  27. package/dist/bin/exe-assign.js +11 -11
  28. package/dist/bin/exe-boot.js +35 -30
  29. package/dist/bin/exe-call.js +9 -11
  30. package/dist/bin/exe-cloud.js +10 -12
  31. package/dist/bin/exe-dispatch.js +12 -11
  32. package/dist/bin/exe-doctor.js +2 -2
  33. package/dist/bin/exe-export-behaviors.js +10 -10
  34. package/dist/bin/exe-forget.js +9 -9
  35. package/dist/bin/exe-gateway.js +18 -18
  36. package/dist/bin/exe-healthcheck.js +5 -5
  37. package/dist/bin/exe-heartbeat.js +19 -14
  38. package/dist/bin/exe-kill.js +9 -9
  39. package/dist/bin/exe-launch-agent.js +16 -18
  40. package/dist/bin/exe-new-employee.js +11 -11
  41. package/dist/bin/exe-pending-messages.js +13 -12
  42. package/dist/bin/exe-pending-notifications.js +12 -11
  43. package/dist/bin/exe-pending-reviews.js +20 -13
  44. package/dist/bin/exe-rename.js +9 -11
  45. package/dist/bin/exe-review.js +14 -13
  46. package/dist/bin/exe-search.js +8 -10
  47. package/dist/bin/exe-session-cleanup.js +19 -19
  48. package/dist/bin/exe-settings.js +11 -13
  49. package/dist/bin/exe-start-codex.js +15 -15
  50. package/dist/bin/exe-start-opencode.js +11 -11
  51. package/dist/bin/exe-status.js +13 -12
  52. package/dist/bin/exe-support.js +5 -5
  53. package/dist/bin/exe-team.js +6 -6
  54. package/dist/bin/git-sweep.js +12 -11
  55. package/dist/bin/graph-backfill.js +10 -10
  56. package/dist/bin/graph-export.js +8 -8
  57. package/dist/bin/graph-layer-benchmark.js +1 -1
  58. package/dist/bin/install.js +38 -12
  59. package/dist/bin/intercom-check.js +14 -8
  60. package/dist/bin/list-providers.js +1 -1
  61. package/dist/bin/postgres-agentic-reflection-backfill.js +6 -6
  62. package/dist/bin/postgres-agentic-semantic-backfill.js +5 -5
  63. package/dist/bin/pre-publish.js +2 -2
  64. package/dist/bin/registry-proxy.js +1 -1
  65. package/dist/bin/scan-tasks.js +48 -49
  66. package/dist/bin/setup.js +6 -5
  67. package/dist/bin/shard-migrate.js +8 -8
  68. package/dist/bin/stack-update.js +66 -10
  69. package/dist/bin/update.js +1 -1
  70. package/dist/{branding-52J2ILJX.js → branding-EHDA3CCK.js} +4 -6
  71. package/dist/{capacity-monitor-HWN2JX5W.js → capacity-monitor-Q5M5SVRC.js} +13 -12
  72. package/dist/{catchup-brief-UERCIVM5.js → catchup-brief-7HTF254M.js} +14 -13
  73. package/dist/{chunk-GK5VMHSN.js → chunk-26UVGP3I.js} +1 -1
  74. package/dist/{chunk-CDDRSIGK.js → chunk-2BPO7VQF.js} +80 -70
  75. package/dist/{chunk-7PTII6F4.js → chunk-2OATM2JZ.js} +1 -1
  76. package/dist/{chunk-AJ2XDY27.js → chunk-3FIWKONP.js} +10 -12
  77. package/dist/{chunk-H6OEU54G.js → chunk-44XTE6NK.js} +91 -39
  78. package/dist/{chunk-JUITBJ7J.js → chunk-4GLEFA2X.js} +1 -1
  79. package/dist/{chunk-OYCQ6PFC.js → chunk-4LUI7MMY.js} +6 -6
  80. package/dist/{chunk-BY4OTURZ.js → chunk-4MN44ORL.js} +1 -1
  81. package/dist/{chunk-BHV7PX5V.js → chunk-4XO2533K.js} +2 -2
  82. package/dist/{chunk-VXQDZH5T.js → chunk-6CSCJTGT.js} +3 -3
  83. package/dist/{chunk-MUVPQCQA.js → chunk-6HFZ2KUC.js} +1 -3
  84. package/dist/{chunk-F7JVVLGH.js → chunk-6YUACQQA.js} +2 -4
  85. package/dist/{chunk-2R3N4DQY.js → chunk-7J6OKCQX.js} +3 -3
  86. package/dist/{chunk-NQAZ2CP7.js → chunk-AAZ3MQIA.js} +11 -11
  87. package/dist/{chunk-XEA6DSLR.js → chunk-AERGE6GC.js} +4 -6
  88. package/dist/{chunk-RWJY7KMP.js → chunk-ARGBV4PP.js} +46 -13
  89. package/dist/{chunk-32LFUJVG.js → chunk-CAXNZ4KN.js} +221 -110
  90. package/dist/{chunk-ER3UJ2VL.js → chunk-CVUFSWGC.js} +2 -2
  91. package/dist/{chunk-RNN4MZDN.js → chunk-DBXKWFTK.js} +3 -3
  92. package/dist/{chunk-Y2VVTK2E.js → chunk-DTLASDQM.js} +1 -1
  93. package/dist/{chunk-K3PSCQLK.js → chunk-DW6P7UVY.js} +4 -6
  94. package/dist/{chunk-B6Q6WAD7.js → chunk-EHNSK2Y4.js} +1 -1
  95. package/dist/{chunk-7PEYIW53.js → chunk-EHXOWGQG.js} +2 -2
  96. package/dist/{chunk-6BUUY7FG.js → chunk-EOO32RJZ.js} +2 -4
  97. package/dist/{chunk-MFGARIVE.js → chunk-EYQIEK5M.js} +2 -4
  98. package/dist/{chunk-NT6R4ATM.js → chunk-FG4Z2XFU.js} +1 -1
  99. package/dist/{chunk-MPXPPKJ4.js → chunk-GKFSZKUD.js} +2 -2
  100. package/dist/{chunk-CWPE6QVM.js → chunk-GNHN5HRQ.js} +2 -4
  101. package/dist/{chunk-WLEVAIL5.js → chunk-GP6G6EQI.js} +1 -1
  102. package/dist/{chunk-65UQ7H5U.js → chunk-HJWNO7MX.js} +4 -6
  103. package/dist/{chunk-O7YD7JYE.js → chunk-I7AW4237.js} +18 -4
  104. package/dist/{chunk-VRD452MQ.js → chunk-I7KGNSNR.js} +2 -2
  105. package/dist/{chunk-TFZZL3QF.js → chunk-ICKEGWWP.js} +2 -4
  106. package/dist/{chunk-SR6D65DA.js → chunk-IFACD7E6.js} +3 -3
  107. package/dist/{chunk-VX4X2O6J.js → chunk-IGRIWAV4.js} +6 -6
  108. package/dist/{chunk-C4EVFN7J.js → chunk-IYDFOUK4.js} +2 -2
  109. package/dist/{chunk-I4WAKJ6W.js → chunk-J4RAXKTC.js} +3 -3
  110. package/dist/{chunk-RWURKLS3.js → chunk-JH7Z2AZ7.js} +1 -1
  111. package/dist/{chunk-5WTYETQO.js → chunk-K4KAPZC7.js} +4 -8
  112. package/dist/{chunk-G3VR3MJI.js → chunk-KIUU4PNX.js} +4 -8
  113. package/dist/{chunk-53VUIKOE.js → chunk-KJFCQUQP.js} +1 -1
  114. package/dist/{chunk-4F56OUR7.js → chunk-LC53LVOT.js} +2 -2
  115. package/dist/{chunk-W7NQE65M.js → chunk-LJML7HT2.js} +1 -1
  116. package/dist/{chunk-V4O2APMI.js → chunk-LL5EY6OQ.js} +1 -1
  117. package/dist/{chunk-DCJ42FEN.js → chunk-LWJ4AMMY.js} +2 -4
  118. package/dist/{chunk-GCMT6RWI.js → chunk-LYH5HE24.js} +3 -14
  119. package/dist/{chunk-63UVIM7S.js → chunk-MBA4NNTS.js} +2 -4
  120. package/dist/{chunk-7KR5PV4P.js → chunk-MKPSMRVX.js} +1 -1
  121. package/dist/chunk-MLKGABMK.js +9 -0
  122. package/dist/chunk-MLXJ5EZG.js +90 -0
  123. package/dist/{chunk-BXCJOACQ.js → chunk-NFHFNPTN.js} +3 -5
  124. package/dist/{chunk-I5VJNTDL.js → chunk-NNT2ZNMC.js} +5 -7
  125. package/dist/{chunk-O7CTVDC3.js → chunk-ODEGQCWW.js} +8 -8
  126. package/dist/{chunk-H4YONWQX.js → chunk-ONMRBKAX.js} +229 -108
  127. package/dist/{chunk-7APRWURX.js → chunk-PMUKZYTR.js} +10 -12
  128. package/dist/{chunk-NE6RPW5C.js → chunk-PMWDO5FR.js} +1 -1
  129. package/dist/{chunk-IPSFAUK5.js → chunk-QB66MH2V.js} +4 -4
  130. package/dist/{chunk-XAHIVBTU.js → chunk-QHQJ7DLL.js} +6 -6
  131. package/dist/{chunk-KLRP6ZG3.js → chunk-RMSDKMFD.js} +251 -96
  132. package/dist/{chunk-NA3MXUU6.js → chunk-TH6HTK2L.js} +17 -15
  133. package/dist/{chunk-H4KUTL2T.js → chunk-TKEDF7KV.js} +1 -1
  134. package/dist/{chunk-KHV55ME4.js → chunk-TOWAZ5IV.js} +95 -118
  135. package/dist/{chunk-IBVB2NGY.js → chunk-TOXHEZN5.js} +47 -4
  136. package/dist/{chunk-UWBU44UP.js → chunk-UPL5FEZY.js} +1 -1
  137. package/dist/{chunk-UVH6FA5E.js → chunk-UU6YYTYH.js} +1 -1
  138. package/dist/{chunk-X7DJ2QZW.js → chunk-V4MKR32F.js} +4 -6
  139. package/dist/{chunk-HV75RBMK.js → chunk-VB23RNNI.js} +1 -1
  140. package/dist/{chunk-56T5TMNK.js → chunk-VK2AWQ6D.js} +2 -2
  141. package/dist/{chunk-UXDQ4ERA.js → chunk-VNTDQUOG.js} +21 -18
  142. package/dist/{chunk-KQTGSD23.js → chunk-VYVESELG.js} +13 -9
  143. package/dist/{chunk-S465RWY7.js → chunk-W6SKR3HZ.js} +3 -5
  144. package/dist/{chunk-CQCURHDV.js → chunk-X2XE65WV.js} +12 -10
  145. package/dist/{chunk-XQ2ZBOAD.js → chunk-XK7VZFCC.js} +22 -9
  146. package/dist/{chunk-5F3EXHT7.js → chunk-XMRDT4PB.js} +2 -4
  147. package/dist/{chunk-WTJS6PCC.js → chunk-YOG7TWMO.js} +1 -1
  148. package/dist/{chunk-QSSABSCM.js → chunk-YPSN64BU.js} +6 -6
  149. package/dist/{chunk-WJW564IP.js → chunk-ZBA74MMX.js} +2 -2
  150. package/dist/{chunk-K6MMN6AW.js → chunk-ZZLTJXKR.js} +3 -5
  151. package/dist/{code-context-index-SRTAWCZQ.js → code-context-index-I5A7I4JQ.js} +7 -7
  152. package/dist/{content-extractor-H4IPL533.js → content-extractor-M7ISRONU.js} +1 -1
  153. package/dist/{conversation-entity-extractor-IZ3ECP4A.js → conversation-entity-extractor-EYSI4DKM.js} +3 -3
  154. package/dist/{conversation-wiki-populator-K4BQXHHO.js → conversation-wiki-populator-RSJ44BRO.js} +2 -2
  155. package/dist/{core-memory-JZ34WT5R.js → core-memory-KF6T4PMU.js} +1 -1
  156. package/dist/{crdt-sync-4TOVD4QN.js → crdt-sync-XMC6LT2Q.js} +2 -2
  157. package/dist/{crm-bridge-27QVOWPI.js → crm-bridge-4QZRMOF7.js} +1 -1
  158. package/dist/{crm-webhook-77XHBWL7.js → crm-webhook-QMHD5YYQ.js} +3 -3
  159. package/dist/{cto-delegation-gate-AWENA4VT.js → cto-delegation-gate-BTZWAA4E.js} +11 -10
  160. package/dist/{daemon-auth-Z7O3LO23.js → daemon-auth-F47P6HTC.js} +4 -4
  161. package/dist/{daemon-orchestration-BG4NPWOK.js → daemon-orchestration-HFODCB52.js} +14 -13
  162. package/dist/{daemon-protocol-N7MOJ4U3.js → daemon-protocol-XW2OLNBS.js} +1 -1
  163. package/dist/{db-backup-E34JMBZD.js → db-backup-W56YOLMC.js} +4 -4
  164. package/dist/{devtools-ZL5NCINM.js → devtools-5PEATRYE.js} +1 -1
  165. package/dist/{discord-QOFQKX6S.js → discord-LMZKIYWB.js} +1 -1
  166. package/dist/dispatch-ack-JYCKAWKZ.js +13 -0
  167. package/dist/{email-NY5HB4WA.js → email-UENAIKRN.js} +1 -1
  168. package/dist/{entity-boost-V6KSRGG4.js → entity-boost-LIBVNNXO.js} +2 -2
  169. package/dist/{exe-drift-YFWCC26O.js → exe-drift-SED6KQTZ.js} +6 -6
  170. package/dist/{exe-export-YRACBEUY.js → exe-export-C7GZLJJ2.js} +9 -9
  171. package/dist/{exe-import-DY57L2OI.js → exe-import-E3ZOLEAC.js} +9 -9
  172. package/dist/{exe-key-U2JJH4MO.js → exe-key-4275KC6R.js} +5 -7
  173. package/dist/{exe-org-45OTYZZJ.js → exe-org-OOO7KJVZ.js} +4 -4
  174. package/dist/{factory-2PB537KA.js → factory-CTFAGZUA.js} +1 -1
  175. package/dist/fast-db-init-JI5U4KWG.js +7 -0
  176. package/dist/{file-edit-GSXUFUDC.js → file-edit-AZAJPCA3.js} +1 -1
  177. package/dist/{file-read-Z3F3PUCK.js → file-read-VACF23NC.js} +1 -1
  178. package/dist/{file-write-X77JXZ2C.js → file-write-B2RPT5U7.js} +1 -1
  179. package/dist/gateway/index.js +10 -10
  180. package/dist/{gateway-client-IPKKEYKY.js → gateway-client-5EUMMEZZ.js} +2 -2
  181. package/dist/{git-staleness-I662R7RL.js → git-staleness-BY4ZK6MW.js} +5 -5
  182. package/dist/{git-task-sweep-XWFCP2HA.js → git-task-sweep-EVITTAZE.js} +12 -11
  183. package/dist/{glob-2PWAXTZ2.js → glob-7PWH7WKL.js} +1 -1
  184. package/dist/{global-procedures-IEIJBCAH.js → global-procedures-YJLTJ7EZ.js} +7 -7
  185. package/dist/graph-auto-extract-HWZ5GVXZ.js +161 -0
  186. package/dist/{graph-query-NCDYOT4Y.js → graph-query-SE6T5XC4.js} +1 -1
  187. package/dist/{graph-rag-2YLGRBW5.js → graph-rag-G3EG5Q6L.js} +3 -3
  188. package/dist/{grep-GTV6WAZ4.js → grep-HWIDXHRC.js} +1 -1
  189. package/dist/{hook-integrity-LLPJPAXW.js → hook-integrity-PR4BPZBT.js} +2 -2
  190. package/dist/hooks/bug-report-worker.js +13 -12
  191. package/dist/hooks/codex-stop-task-finalizer.js +16 -13
  192. package/dist/hooks/commit-complete.js +14 -13
  193. package/dist/hooks/error-recall.js +9 -12
  194. package/dist/hooks/exe-heartbeat-hook.js +6 -6
  195. package/dist/hooks/ingest-worker.js +9 -9
  196. package/dist/hooks/ingest.js +16 -19
  197. package/dist/hooks/instructions-loaded.js +7 -7
  198. package/dist/hooks/notification.js +12 -10
  199. package/dist/hooks/post-compact.js +13 -12
  200. package/dist/hooks/post-tool-combined.js +6 -6
  201. package/dist/hooks/pre-compact.js +18 -17
  202. package/dist/hooks/pre-tool-use.js +19 -20
  203. package/dist/hooks/prompt-submit.js +78 -39
  204. package/dist/hooks/session-end.js +22 -21
  205. package/dist/hooks/session-start.js +31 -25
  206. package/dist/hooks/stop.js +20 -22
  207. package/dist/hooks/subagent-stop.js +13 -12
  208. package/dist/hooks/summary-worker.js +21 -20
  209. package/dist/{hooks-UK2AYRCA.js → hooks-LDCFYHDF.js} +1 -1
  210. package/dist/{imessage-LINH4V4D.js → imessage-6UOZB5VN.js} +1 -1
  211. package/dist/index.js +19 -18
  212. package/dist/{installer-PB63JTTG.js → installer-RLKOACKG.js} +9 -9
  213. package/dist/{installer-SSR2OOLO.js → installer-W4NY3OBF.js} +13 -11
  214. package/dist/{installer-ZONYB3XK.js → installer-X5FEYJIA.js} +9 -9
  215. package/dist/{intercom-queue-MMZT2MA2.js → intercom-queue-K3DVKSPJ.js} +1 -1
  216. package/dist/{key-backup-status-4WKIQOAS.js → key-backup-status-ORNMJEEA.js} +4 -6
  217. package/dist/lib/agent-config.js +4 -4
  218. package/dist/lib/cloud-sync.js +8 -8
  219. package/dist/lib/cloudflare-dns.js +1 -1
  220. package/dist/lib/config.js +3 -5
  221. package/dist/lib/consolidation.js +8 -8
  222. package/dist/lib/crypto.js +1 -1
  223. package/dist/lib/database.js +5 -5
  224. package/dist/lib/db-daemon-client.js +5 -5
  225. package/dist/lib/db.js +5 -5
  226. package/dist/lib/device-registry.js +4 -6
  227. package/dist/lib/embedder.js +6 -6
  228. package/dist/lib/employee-templates.js +8 -8
  229. package/dist/lib/employees.js +7 -5
  230. package/dist/lib/error-detector.js +1 -1
  231. package/dist/lib/exe-daemon-client.js +5 -5
  232. package/dist/lib/exe-daemon.js +143 -52
  233. package/dist/lib/file-grep.js +1 -1
  234. package/dist/lib/hybrid-search.js +8 -8
  235. package/dist/lib/identity-templates.js +1 -1
  236. package/dist/lib/identity.js +5 -5
  237. package/dist/lib/keychain.js +1 -1
  238. package/dist/lib/license.js +4 -4
  239. package/dist/lib/messaging.js +12 -11
  240. package/dist/lib/post-tool-memory.js +3 -3
  241. package/dist/lib/registry-proxy.js +1 -1
  242. package/dist/lib/reminders.js +6 -6
  243. package/dist/lib/runtime-table.js +1 -1
  244. package/dist/lib/schedules.js +8 -8
  245. package/dist/lib/session-registry.js +1 -1
  246. package/dist/lib/session-wrappers.js +1 -1
  247. package/dist/lib/skill-learning.js +7 -7
  248. package/dist/lib/status-brief.js +1 -1
  249. package/dist/lib/store.js +7 -7
  250. package/dist/lib/task-router.js +6 -6
  251. package/dist/lib/tasks.js +14 -11
  252. package/dist/lib/tmux-routing.js +11 -10
  253. package/dist/lib/tmux-status.js +1 -1
  254. package/dist/lib/tmux-transport.js +1 -1
  255. package/dist/lib/token-spend.js +6 -6
  256. package/dist/lib/transport.js +1 -1
  257. package/dist/lib/ws-auth.js +1 -1
  258. package/dist/lib/ws-client.js +2 -2
  259. package/dist/license-gate-J5YN264E.js +14 -0
  260. package/dist/mcp/register-tools.js +63 -62
  261. package/dist/mcp/server.js +65 -64
  262. package/dist/mcp/tools/complete-reminder.js +7 -7
  263. package/dist/mcp/tools/create-reminder.js +7 -7
  264. package/dist/mcp/tools/create-task.js +15 -13
  265. package/dist/mcp/tools/deactivate-behavior.js +8 -8
  266. package/dist/mcp/tools/list-reminders.js +7 -7
  267. package/dist/mcp/tools/list-tasks.js +14 -14
  268. package/dist/mcp/tools/send-message.js +14 -13
  269. package/dist/mcp/tools/update-task.js +13 -12
  270. package/dist/{mcp-diagnostics-CWMVPHVC.js → mcp-diagnostics-TSBY62UQ.js} +1 -1
  271. package/dist/{mcp-disconnect-tracker-RM3GEERR.js → mcp-disconnect-tracker-MB23DRS6.js} +1 -1
  272. package/dist/{mcp-http-config-PDGSOYNQ.js → mcp-http-config-6YLW4PFG.js} +6 -6
  273. package/dist/{memory-cards-OLE6MGO7.js → memory-cards-UAQCO4QR.js} +5 -5
  274. package/dist/{memory-poisoning-defense-OOHJIXIX.js → memory-poisoning-defense-VWITZ4WO.js} +5 -7
  275. package/dist/{memory-queue-TGWXMENR.js → memory-queue-NYIGZNCG.js} +4 -4
  276. package/dist/memory-queue-client-YJOLYALV.js +15 -0
  277. package/dist/{memory-reflection-Z7CT6JLY.js → memory-reflection-JQC4ZSUD.js} +5 -5
  278. package/dist/{message-queue-client-TWIA2GIH.js → message-queue-client-NTLKYGVO.js} +1 -1
  279. package/dist/{notifications-SREXGSAQ.js → notifications-YDOKTVCH.js} +11 -10
  280. package/dist/{oauth-server-NSWGKLLA.js → oauth-server-TOWAZR4K.js} +1 -1
  281. package/dist/{orchestration-phase-WLQMEP4M.js → orchestration-phase-FXKZYK6R.js} +4 -4
  282. package/dist/{orchestrator-CHQURQSC.js → orchestrator-BZ2D6ZM6.js} +13 -12
  283. package/dist/{permission-presets-3XKJNM6N.js → permission-presets-E3DZK46K.js} +1 -1
  284. package/dist/{permissions-EZH3ULLD.js → permissions-6MCWUDCD.js} +1 -1
  285. package/dist/{pg-ssl-4ZNXKUNH.js → pg-ssl-7JXQFL4I.js} +1 -1
  286. package/dist/{plan-limits-7L75PB33.js → plan-limits-KUTODKG6.js} +7 -7
  287. package/dist/{preferences-K2GKUQSJ.js → preferences-ERXO6SMJ.js} +3 -3
  288. package/dist/{project-name-OBIDABHE.js → project-name-EWG5KAZP.js} +1 -1
  289. package/dist/{projection-worker-HSGE44JA.js → projection-worker-UY7R2EQJ.js} +85 -8
  290. package/dist/{push-notifications-EOTMKJ6B.js → push-notifications-KDYFOJRI.js} +4 -4
  291. package/dist/{reranker-ME4CK2ZQ.js → reranker-OMADCS3D.js} +4 -4
  292. package/dist/{review-gate-M3U2YAW6.js → review-gate-IUNS6GQU.js} +1 -1
  293. package/dist/{review-polling-DQCN4TNM.js → review-polling-DORNZ2KI.js} +12 -11
  294. package/dist/runtime/index.js +14 -13
  295. package/dist/{self-query-router-TRPHL54X.js → self-query-router-37VB3PKQ.js} +1 -1
  296. package/dist/{session-events-ZZBFYL5Z.js → session-events-5WR5RVDK.js} +12 -12
  297. package/dist/{session-kill-telemetry-MUFET632.js → session-kill-telemetry-DHSQV2CI.js} +6 -6
  298. package/dist/{session-scope-QUUDZM2L.js → session-scope-D4Q62ZOZ.js} +13 -13
  299. package/dist/setup-wizard-3GVBHKHG.js +12 -0
  300. package/dist/{shard-manager-VYMJM7NR.js → shard-manager-SP4YL5JQ.js} +4 -4
  301. package/dist/{signal-C263RUND.js → signal-7UIRTYGZ.js} +1 -1
  302. package/dist/{slack-N7PL6QMX.js → slack-GCOYBZUK.js} +1 -1
  303. package/dist/{task-enforcement-WJ3S6JTL.js → task-enforcement-OYCQXBBC.js} +11 -10
  304. package/dist/{task-scanner-YHWRG4ZJ.js → task-scanner-QEM5CO2Y.js} +1 -1
  305. package/dist/{task-scope-V2CTRHG7.js → task-scope-WWRNU2LU.js} +11 -10
  306. package/dist/{tasks-crud-W2XPUGKK.js → tasks-crud-75AUVZPO.js} +13 -10
  307. package/dist/{tasks-review-BR2SBSYG.js → tasks-review-UMZN5ZPQ.js} +11 -10
  308. package/dist/{telegram-B54FFOXD.js → telegram-RGVD4LUY.js} +1 -1
  309. package/dist/{telemetry-7IQCPV4Q.js → telemetry-43X3GT3R.js} +1 -1
  310. package/dist/{token-budget-H2XSWO4D.js → token-budget-62TYDIMI.js} +5 -5
  311. package/dist/{tool-capability-index-5X2CCGIK.js → tool-capability-index-OBZXORBP.js} +2 -2
  312. package/dist/{tool-gates-SGFMDREY.js → tool-gates-3IC7DK4R.js} +1 -1
  313. package/dist/{tool-gates-3DNTD7G3.js → tool-gates-GXSYBVK4.js} +1 -1
  314. package/dist/{tool-registry-2VUAZXTW.js → tool-registry-5XN3FUYL.js} +1 -1
  315. package/dist/{tool-telemetry-NVPSPRYP.js → tool-telemetry-JL6NY3KP.js} +2 -2
  316. package/dist/tui/App.js +44 -43
  317. package/dist/{tui-data-QN4O565C.js → tui-data-C5I2YU4C.js} +11 -10
  318. package/dist/{update-check-ERUKV2G6.js → update-check-MKHO7H6B.js} +1 -1
  319. package/dist/{webhook-L5FGAUPJ.js → webhook-LCW7UP4L.js} +1 -1
  320. package/dist/{webhook-pipe-B7GJCJAI.js → webhook-pipe-PJOFVBD3.js} +1 -1
  321. package/dist/{whatsapp-7FK2PRWO.js → whatsapp-SILL4V64.js} +1 -1
  322. package/dist/{whatsapp-accounts-VIHRSLGB.js → whatsapp-accounts-BWRZUY23.js} +1 -1
  323. package/dist/{wiki-acl-R4IIHICT.js → wiki-acl-5EC5VNYG.js} +1 -1
  324. package/dist/{wiki-client-EUDJA7O2.js → wiki-client-MMVRPTPK.js} +1 -1
  325. package/dist/{worker-gate-3KDXLIJC.js → worker-gate-Q5Y6B5N7.js} +4 -4
  326. package/dist/{workflow-engine-GISKRYSO.js → workflow-engine-KAKVU7NC.js} +3 -3
  327. package/dist/{worktree-B3FHAHEM.js → worktree-OMPQEJH7.js} +1 -1
  328. package/package.json +2 -2
  329. package/release-notes.json +85 -85
  330. package/src/commands/exe/setup.md +1 -1
  331. package/dist/chunk-PNKVD2UK.js +0 -26
  332. package/dist/fast-db-init-67TQTHWT.js +0 -7
  333. package/dist/license-gate-JY2KFIKO.js +0 -14
  334. package/dist/memory-queue-client-RZP5F4EA.js +0 -15
  335. package/dist/setup-wizard-NXWCEK63.js +0 -12
  336. package/dist/{chunk-D5MPHVWH.js → chunk-524VLFFY.js} +0 -0
  337. package/dist/{chunk-HIQ5RDA7.js → chunk-A3A2E42I.js} +0 -0
  338. package/dist/{chunk-APRP5D27.js → chunk-H6ADW3YC.js} +0 -0
  339. package/dist/{chunk-AAVODJ4F.js → chunk-J2OPV5FE.js} +0 -0
  340. package/dist/{chunk-DBLBWWFS.js → chunk-S6DA6UKC.js} +3 -3
  341. /package/dist/{chunk-F3ULERRZ.js → chunk-TSCZMB3P.js} +0 -0
  342. /package/dist/{chunk-2HV2EQW2.js → chunk-WRU72I4S.js} +0 -0
@@ -5,19 +5,15 @@ import {
5
5
  import {
6
6
  LEGACY_LANCE_PATH,
7
7
  MODELS_DIR,
8
- init_config,
9
8
  loadConfig,
10
9
  saveConfig
11
- } from "./chunk-KHV55ME4.js";
10
+ } from "./chunk-TOWAZ5IV.js";
12
11
  import {
13
12
  atomicWriteJsonSync,
14
- atomicWriteSync,
15
- init_secure_files
16
- } from "./chunk-GCMT6RWI.js";
13
+ atomicWriteSync
14
+ } from "./chunk-LYH5HE24.js";
17
15
 
18
16
  // src/lib/setup-wizard.ts
19
- init_secure_files();
20
- init_config();
21
17
  import crypto from "crypto";
22
18
  import { execSync } from "child_process";
23
19
  import { existsSync as existsSync2, mkdirSync, readFileSync, unlinkSync as unlinkSync2 } from "fs";
@@ -157,6 +153,11 @@ function ask(rl, prompt) {
157
153
  doAsk();
158
154
  });
159
155
  }
156
+ function askHeadless(envVar, fallback, log, prompt) {
157
+ const value = envVar ?? fallback;
158
+ if (value) log(` [headless] ${prompt.replace(/[:\s]+$/, "")}: ${value}`);
159
+ return value;
160
+ }
160
161
  function getAvailableMemoryGB() {
161
162
  if (process.platform === "darwin") {
162
163
  try {
@@ -176,6 +177,15 @@ function getAvailableMemoryGB() {
176
177
  }
177
178
  return os.freemem() / (1024 * 1024 * 1024);
178
179
  }
180
+ function isWSL() {
181
+ if (process.platform !== "linux") return false;
182
+ try {
183
+ const release = execSync("uname -r", { encoding: "utf8", timeout: 3e3 }).toLowerCase();
184
+ return release.includes("microsoft");
185
+ } catch {
186
+ return false;
187
+ }
188
+ }
179
189
  function getTotalMemoryGB() {
180
190
  return os.totalmem() / (1024 * 1024 * 1024);
181
191
  }
@@ -212,10 +222,20 @@ async function runSetupWizard(opts = {}) {
212
222
  const {
213
223
  skipModel: skipModelOpt = false,
214
224
  skipModelValidation = false,
225
+ nonInteractive = false,
215
226
  log = (msg) => process.stderr.write(msg + "\n")
216
227
  } = opts;
217
228
  let skipModel = skipModelOpt;
229
+ if (nonInteractive) {
230
+ log("[headless] Non-interactive mode enabled. Using env vars for config.");
231
+ }
218
232
  const rl = opts.createReadline ? opts.createReadline() : createInterface({ input: process.stdin, output: process.stderr });
233
+ const askOrEnv = (prompt, envVar, fallback = "") => {
234
+ if (nonInteractive) {
235
+ return Promise.resolve(askHeadless(envVar ? process.env[envVar] : void 0, fallback, log, prompt));
236
+ }
237
+ return ask(rl, prompt);
238
+ };
219
239
  try {
220
240
  log("");
221
241
  log("=== exe-os Setup ===");
@@ -229,7 +249,7 @@ async function runSetupWizard(opts = {}) {
229
249
  log(" chsh -s /bin/zsh");
230
250
  log(" Then restart your terminal.");
231
251
  log("");
232
- const cont = await ask(rl, " Continue with bash? (y/n, default: y): ");
252
+ const cont = await askOrEnv(" Continue with bash? (y/n, default: y): ", void 0, "y");
233
253
  if (cont.toLowerCase() === "n") {
234
254
  log(" Run `chsh -s /bin/zsh`, restart your terminal, then run setup again.");
235
255
  rl.close();
@@ -238,12 +258,26 @@ async function runSetupWizard(opts = {}) {
238
258
  log("");
239
259
  }
240
260
  }
261
+ if (isWSL()) {
262
+ log(" Detected: Windows Subsystem for Linux (WSL)");
263
+ log("");
264
+ if (process.cwd().startsWith("/mnt/")) {
265
+ log(" \u26A0 Your current directory is on the Windows filesystem (/mnt/).");
266
+ log(" This is ~10x slower than the native Linux filesystem.");
267
+ log(" For best performance, keep your projects in ~/ (e.g., ~/projects/)");
268
+ log(" and run exe-os from there.");
269
+ log("");
270
+ }
271
+ log(" Encryption: using file-based key storage (OS keychain not available in WSL).");
272
+ log(" This is normal \u2014 your key is still encrypted and machine-bound.");
273
+ log("");
274
+ }
241
275
  log("What are you setting up?");
242
276
  log("");
243
277
  log(" [1] First device / brand new Exe OS memory");
244
278
  log(" [2] Another device / I already have a 24-word recovery phrase");
245
279
  log("");
246
- const installType = await ask(rl, "Choice (1/2): ");
280
+ const installType = await askOrEnv("Choice (1/2): ", "EXE_INSTALL_TYPE", "1");
247
281
  let isPairing = false;
248
282
  let pairingRosterPulled = false;
249
283
  if (installType === "2") {
@@ -254,7 +288,7 @@ async function runSetupWizard(opts = {}) {
254
288
  log(" exe-os cloud link --show-full");
255
289
  log("Then copy the 24-word phrase here.");
256
290
  log("");
257
- const mnemonic = await ask(rl, "Paste the 24-word recovery phrase: ");
291
+ const mnemonic = await askOrEnv("Paste the 24-word recovery phrase: ", "EXE_PASSPHRASE");
258
292
  try {
259
293
  const key = await importMnemonic(mnemonic);
260
294
  await setMasterKey(key);
@@ -263,9 +297,9 @@ async function runSetupWizard(opts = {}) {
263
297
  log("Now paste the Cloud API key from that same `exe-os cloud link --show-full` output.");
264
298
  log("It starts with: exe_sk_");
265
299
  log("");
266
- const apiKey = await ask(rl, "Cloud API key (starts with exe_sk_): ");
300
+ const apiKey = await askOrEnv("Cloud API key (starts with exe_sk_): ", "EXE_LICENSE_KEY");
267
301
  if (apiKey && apiKey.startsWith("exe_sk_")) {
268
- const cloudEndpoint = "https://cloud.askexe.com";
302
+ const cloudEndpoint = "https://api.askexe.com";
269
303
  const cloudCfg = { apiKey, endpoint: cloudEndpoint };
270
304
  const earlyConfig = await loadConfig();
271
305
  earlyConfig.cloud = cloudCfg;
@@ -334,13 +368,13 @@ async function runSetupWizard(opts = {}) {
334
368
  log(" Like a Bitcoin wallet \u2014 lose the phrase, lose everything.");
335
369
  log("=============================================================");
336
370
  log("");
337
- const confirmation = await ask(rl, 'Type "I SAVED MY RECOVERY PHRASE" after you have saved it: ');
371
+ const confirmation = nonInteractive ? "I SAVED MY RECOVERY PHRASE" : await ask(rl, 'Type "I SAVED MY RECOVERY PHRASE" after you have saved it: ');
338
372
  if (confirmation !== "I SAVED MY RECOVERY PHRASE") {
339
373
  throw new Error(
340
374
  "Setup cancelled: recovery phrase was not confirmed. Save the 24-word phrase before continuing \u2014 it is required to recover encrypted memories."
341
375
  );
342
376
  }
343
- const { markKeyBackupConfirmed } = await import("./key-backup-status-4WKIQOAS.js");
377
+ const { markKeyBackupConfirmed } = await import("./key-backup-status-ORNMJEEA.js");
344
378
  markKeyBackupConfirmed("setup-wizard");
345
379
  }
346
380
  state.completedSteps.push(1);
@@ -363,9 +397,9 @@ async function runSetupWizard(opts = {}) {
363
397
  log("backed up on Exe Cloud. Free for all plans. We can't read your data \u2014");
364
398
  log("only your encryption key can decrypt it.");
365
399
  log("");
366
- const existingKey = await ask(rl, "Paste your Exe OS license key, or press Enter to start as a free user: ");
400
+ const existingKey = await askOrEnv("Paste your Exe OS license key, or press Enter to start as a free user: ", "EXE_LICENSE_KEY");
367
401
  if (existingKey && existingKey.startsWith("exe_sk_")) {
368
- const cloudEndpoint = "https://cloud.askexe.com";
402
+ const cloudEndpoint = "https://api.askexe.com";
369
403
  try {
370
404
  const { loadDeviceId } = await import("./lib/license.js");
371
405
  const deviceId = loadDeviceId();
@@ -390,7 +424,7 @@ async function runSetupWizard(opts = {}) {
390
424
  }
391
425
  } catch {
392
426
  log("Could not validate key \u2014 saving it and proceeding.");
393
- cloudConfig = { apiKey: existingKey, endpoint: "https://cloud.askexe.com" };
427
+ cloudConfig = { apiKey: existingKey, endpoint: "https://api.askexe.com" };
394
428
  const { saveLicense: saveLicense2, mirrorLicenseKey: mirrorLicenseKey2 } = await import("./lib/license.js");
395
429
  saveLicense2(existingKey);
396
430
  mirrorLicenseKey2(existingKey);
@@ -402,7 +436,7 @@ async function runSetupWizard(opts = {}) {
402
436
  const deviceId = loadDeviceId();
403
437
  let res;
404
438
  try {
405
- res = await fetch("https://cloud.askexe.com/auth/auto-provision", {
439
+ res = await fetch("https://api.askexe.com/auth/auto-provision", {
406
440
  method: "POST",
407
441
  headers: { "Content-Type": "application/json" },
408
442
  body: JSON.stringify({ deviceId }),
@@ -410,7 +444,7 @@ async function runSetupWizard(opts = {}) {
410
444
  });
411
445
  } catch {
412
446
  await new Promise((r) => setTimeout(r, 500));
413
- res = await fetch("https://cloud.askexe.com/auth/auto-provision", {
447
+ res = await fetch("https://api.askexe.com/auth/auto-provision", {
414
448
  method: "POST",
415
449
  headers: { "Content-Type": "application/json" },
416
450
  body: JSON.stringify({ deviceId }),
@@ -420,7 +454,7 @@ async function runSetupWizard(opts = {}) {
420
454
  if (res.ok) {
421
455
  const data = await res.json();
422
456
  if (data.apiKey) {
423
- cloudConfig = { apiKey: data.apiKey, endpoint: "https://cloud.askexe.com" };
457
+ cloudConfig = { apiKey: data.apiKey, endpoint: "https://api.askexe.com" };
424
458
  const { saveLicense: saveLicense2, mirrorLicenseKey: mirrorLicenseKey2 } = await import("./lib/license.js");
425
459
  saveLicense2(data.apiKey);
426
460
  mirrorLicenseKey2(data.apiKey);
@@ -453,7 +487,7 @@ async function runSetupWizard(opts = {}) {
453
487
  log(" Close other applications (browser, Slack, etc.) before continuing.");
454
488
  log(" The embedding model needs ~500MB to download and load.");
455
489
  log("");
456
- await ask(rl, "Press Enter when ready, or Ctrl+C to abort and free memory first: ");
490
+ if (!nonInteractive) await ask(rl, "Press Enter when ready, or Ctrl+C to abort and free memory first: ");
457
491
  }
458
492
  log("Note: jina-embeddings-v5-text-small is licensed CC-BY-NC-4.0 (non-commercial)");
459
493
  log("");
@@ -488,7 +522,7 @@ async function runSetupWizard(opts = {}) {
488
522
  if (cloudConfig) {
489
523
  config.cloud = cloudConfig;
490
524
  }
491
- const { applyDefaultOrchestrationPhase } = await import("./orchestration-phase-WLQMEP4M.js");
525
+ const { applyDefaultOrchestrationPhase } = await import("./orchestration-phase-FXKZYK6R.js");
492
526
  applyDefaultOrchestrationPhase(config);
493
527
  await saveConfig(config);
494
528
  log("");
@@ -514,19 +548,31 @@ async function runSetupWizard(opts = {}) {
514
548
  log("Step 5 already complete \u2014 skipping.");
515
549
  }
516
550
  if (!state.completedSteps.includes(55)) {
517
- const { savePreferences, loadPreferences: loadPrefs } = await import("./preferences-K2GKUQSJ.js");
551
+ const { savePreferences, loadPreferences: loadPrefs } = await import("./preferences-ERXO6SMJ.js");
518
552
  const existingPrefs = loadPrefs();
519
553
  const prefs = { ...existingPrefs };
520
554
  log("=== Config Defaults ===");
521
555
  log("");
522
556
  const ghosttyDetected = existsSync2(path2.join(os.homedir(), ".config", "ghostty")) || existsSync2(path2.join(os.homedir(), "Library", "Application Support", "com.mitchellh.ghostty"));
523
557
  if (ghosttyDetected) {
524
- const ghosttyAnswer = await ask(rl, "Detected Ghostty terminal. Use exe-os Ghostty defaults? (Y/n) ");
558
+ const ghosttyAnswer = await askOrEnv("Detected Ghostty terminal. Use exe-os Ghostty defaults? (Y/n) ", void 0, "y");
525
559
  prefs.ghostty = ghosttyAnswer.toLowerCase() !== "n";
526
560
  }
527
- const tmuxAnswer = await ask(rl, "Use exe-os tmux config? (Y/n) ");
561
+ const weztermDetected = existsSync2(path2.join(os.homedir(), ".wezterm.lua")) || existsSync2(path2.join(os.homedir(), ".config", "wezterm")) || (() => {
562
+ try {
563
+ execSync("which wezterm 2>/dev/null", { timeout: 5e3 });
564
+ return true;
565
+ } catch {
566
+ return false;
567
+ }
568
+ })();
569
+ if (weztermDetected) {
570
+ const weztermAnswer = await askOrEnv("Detected WezTerm terminal. Use exe-os WezTerm defaults? (Y/n) ", void 0, "y");
571
+ prefs.wezterm = weztermAnswer.toLowerCase() !== "n";
572
+ }
573
+ const tmuxAnswer = await askOrEnv("Use exe-os tmux config? (Y/n) ", void 0, "y");
528
574
  prefs.tmux = tmuxAnswer.toLowerCase() !== "n";
529
- const statusLineAnswer = await ask(rl, "Install CC context bar in status line? (Y/n) ");
575
+ const statusLineAnswer = await askOrEnv("Install CC context bar in status line? (Y/n) ", void 0, "y");
530
576
  prefs.ccStatusLine = statusLineAnswer.toLowerCase() !== "n";
531
577
  prefs.codexStatusLine = prefs.ccStatusLine;
532
578
  savePreferences(prefs);
@@ -541,7 +587,7 @@ async function runSetupWizard(opts = {}) {
541
587
  log(" 2) OpenCode (75+ providers \u2014 open source)");
542
588
  log(" 3) Codex (OpenAI)");
543
589
  log("");
544
- const rtChoice = await ask(rl, "Choose your AI runtime [1]: ");
590
+ const rtChoice = await askOrEnv("Choose your AI runtime [1]: ", "EXE_RUNTIME", "1");
545
591
  const rtMap = {
546
592
  "1": { runtime: "claude", models: ["claude-opus-4.6", "claude-sonnet-4.6", "claude-sonnet-4", "claude-haiku-4.5"], defaultModel: "claude-opus-4.6" },
547
593
  "2": { runtime: "opencode", models: ["anthropic/claude-sonnet-4-6", "openai/gpt-5.4", "google/gemini-2.5-pro", "deepseek/deepseek-r3"], defaultModel: "anthropic/claude-sonnet-4-6" },
@@ -550,7 +596,7 @@ async function runSetupWizard(opts = {}) {
550
596
  const selected = rtMap[rtChoice.trim()] ?? rtMap["1"];
551
597
  log(`Runtime: ${selected.runtime}`);
552
598
  log(`Models: ${selected.models.join(", ")}`);
553
- const modelChoice = await ask(rl, `Choose model [${selected.defaultModel}]: `);
599
+ const modelChoice = await askOrEnv(`Choose model [${selected.defaultModel}]: `, "EXE_MODEL", selected.defaultModel);
554
600
  const chosenModel = modelChoice.trim() || selected.defaultModel;
555
601
  try {
556
602
  const { loadConfig: lc, saveConfig: sc } = await import("./lib/config.js");
@@ -610,7 +656,7 @@ async function runSetupWizard(opts = {}) {
610
656
  log(" On your MAIN device, run: exe-os cloud sync");
611
657
  log(" Then come back here and press Enter to retry the pull.");
612
658
  log("");
613
- await ask(rl, "Press Enter after syncing from your main device... ");
659
+ if (!nonInteractive) await ask(rl, "Press Enter after syncing from your main device... ");
614
660
  try {
615
661
  const { initSyncCrypto: retryInitCrypto } = await import("./lib/crypto.js");
616
662
  const { cloudPullRoster: retryPull } = await import("./lib/cloud-sync.js");
@@ -669,9 +715,10 @@ async function runSetupWizard(opts = {}) {
669
715
  log("your entire team. Engineers, marketers, specialists, all working");
670
716
  log("in parallel while you focus on what matters.");
671
717
  log("");
672
- const cooNameInput = await ask(
673
- rl,
674
- `Name your coordinator (default: ${DEFAULT_COORDINATOR_TEMPLATE_NAME}): `
718
+ const cooNameInput = await askOrEnv(
719
+ `Name your coordinator (default: ${DEFAULT_COORDINATOR_TEMPLATE_NAME}): `,
720
+ "EXE_COO_NAME",
721
+ DEFAULT_COORDINATOR_TEMPLATE_NAME
675
722
  );
676
723
  cooName = (cooNameInput || DEFAULT_COORDINATOR_TEMPLATE_NAME).toLowerCase();
677
724
  let employees = await loadEmployees(EMPLOYEES_PATH).catch(() => []);
@@ -713,10 +760,15 @@ async function runSetupWizard(opts = {}) {
713
760
  }
714
761
  let isLicensed = license.valid && license.plan !== "free";
715
762
  if (!isLicensed) {
716
- let licenseInput = await ask(rl, "Hire other employees with your Exe OS license key, or press Enter to continue as a free user (COO only): ");
763
+ let licenseInput = await askOrEnv("Hire other employees with your Exe OS license key, or press Enter to continue as a free user (COO only): ", "EXE_LICENSE_KEY");
717
764
  if (licenseInput && !licenseInput.startsWith("exe_sk_")) {
718
- log("That doesn't look like a license key (should start with exe_sk_).");
719
- licenseInput = await ask(rl, "Try again (or press Enter to skip): ");
765
+ if (nonInteractive) {
766
+ log("EXE_LICENSE_KEY doesn't look like a license key (should start with exe_sk_). Skipping.");
767
+ licenseInput = "";
768
+ } else {
769
+ log("That doesn't look like a license key (should start with exe_sk_).");
770
+ licenseInput = await ask(rl, "Try again (or press Enter to skip): ");
771
+ }
720
772
  }
721
773
  if (licenseInput && licenseInput.startsWith("exe_sk_")) {
722
774
  saveLicense(licenseInput);
@@ -770,8 +822,8 @@ async function runSetupWizard(opts = {}) {
770
822
  log(" Phase 2: Executive bench \u2014 add CTO/CMO for repeated domain work");
771
823
  log(" Phase 3: Parallel org \u2014 specialists execute in parallel with reviews");
772
824
  log("");
773
- const unlockExecutives = (await ask(rl, "Unlock Phase 2 executives now? (y/N): ")).toLowerCase() === "y";
774
- const { setOrchestrationPhase } = await import("./orchestration-phase-WLQMEP4M.js");
825
+ const unlockExecutives = (await askOrEnv("Unlock Phase 2 executives now? (y/N): ", void 0, "n")).toLowerCase() === "y";
826
+ const { setOrchestrationPhase } = await import("./orchestration-phase-FXKZYK6R.js");
775
827
  if (!unlockExecutives) {
776
828
  await setOrchestrationPhase("phase_1_coo", "setup-wizard");
777
829
  log("");
@@ -791,7 +843,7 @@ async function runSetupWizard(opts = {}) {
791
843
  const cmoDefault = cmoTemplate?.name ?? "cmo";
792
844
  log(` CMO \u2014 design, brand, content, marketing (default: ${cmoDefault})`);
793
845
  log("");
794
- const ctoNameInput = await ask(rl, `Name your CTO (default: ${ctoDefault}): `);
846
+ const ctoNameInput = await askOrEnv(`Name your CTO (default: ${ctoDefault}): `, "EXE_CTO_NAME", ctoDefault);
795
847
  const ctoName = (ctoNameInput || ctoDefault).toLowerCase();
796
848
  if (!employees.some((e) => e.name === ctoName)) {
797
849
  const ctoEmployee = {
@@ -814,7 +866,7 @@ async function runSetupWizard(opts = {}) {
814
866
  registerBinSymlinks(ctoName);
815
867
  createdEmployees.push({ name: ctoName, role: "CTO" });
816
868
  log(`Created ${ctoName} (CTO)`);
817
- const cmoNameInput = await ask(rl, `Name your CMO (default: ${cmoDefault}): `);
869
+ const cmoNameInput = await askOrEnv(`Name your CMO (default: ${cmoDefault}): `, "EXE_CMO_NAME", cmoDefault);
818
870
  const cmoName = (cmoNameInput || cmoDefault).toLowerCase();
819
871
  if (!employees.some((e) => e.name === cmoName)) {
820
872
  const cmoEmployee = {
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  getIdentity,
3
3
  loadEmployeesSync
4
- } from "./chunk-NA3MXUU6.js";
4
+ } from "./chunk-TH6HTK2L.js";
5
5
 
6
6
  // src/lib/drift-probes.ts
7
7
  var DRIFT_THRESHOLD = 80;
@@ -589,7 +589,7 @@ function auditHookOwnership() {
589
589
  }
590
590
  async function auditShards() {
591
591
  try {
592
- const { auditShardHealth } = await import("./shard-manager-VYMJM7NR.js");
592
+ const { auditShardHealth } = await import("./shard-manager-SP4YL5JQ.js");
593
593
  const report = await auditShardHealth();
594
594
  return {
595
595
  total: report.total,
@@ -605,7 +605,7 @@ async function auditShards() {
605
605
  async function auditKeyHealth() {
606
606
  try {
607
607
  const { getMasterKey } = await import("./lib/keychain.js");
608
- const { getKeyBackupStatus } = await import("./key-backup-status-4WKIQOAS.js");
608
+ const { getKeyBackupStatus } = await import("./key-backup-status-ORNMJEEA.js");
609
609
  const key = await getMasterKey();
610
610
  const backup = getKeyBackupStatus();
611
611
  return {
@@ -830,7 +830,7 @@ function formatReport(report, flags) {
830
830
  return lines.join("\n");
831
831
  }
832
832
  async function fixNullVectors() {
833
- const { tryAcquireWorkerSlot, registerWorkerPid } = await import("./worker-gate-3KDXLIJC.js");
833
+ const { tryAcquireWorkerSlot, registerWorkerPid } = await import("./worker-gate-Q5Y6B5N7.js");
834
834
  if (!tryAcquireWorkerSlot()) {
835
835
  process.stderr.write("[exe-doctor] Worker gate full \u2014 waiting for existing backfill workers to finish\n");
836
836
  await new Promise((r) => setTimeout(r, 5e3));
@@ -914,7 +914,7 @@ async function fixBloated(client, bloated, dryRun) {
914
914
  return chunksCreated;
915
915
  }
916
916
  async function fixShards(dryRun) {
917
- const { auditShardHealth } = await import("./shard-manager-VYMJM7NR.js");
917
+ const { auditShardHealth } = await import("./shard-manager-SP4YL5JQ.js");
918
918
  const report = await auditShardHealth({ repair: true, dryRun });
919
919
  return {
920
920
  total: report.total,
@@ -951,7 +951,7 @@ function splitAtSentences(text, maxChunkSize) {
951
951
  }
952
952
  async function main(argv = process.argv.slice(2)) {
953
953
  const flags = parseFlags(argv);
954
- const { fastDbInit } = await import("./fast-db-init-67TQTHWT.js");
954
+ const { fastDbInit } = await import("./fast-db-init-JI5U4KWG.js");
955
955
  const client = await fastDbInit();
956
956
  const report = await runAudit(client, flags);
957
957
  console.log(formatReport(report, flags));
@@ -962,7 +962,7 @@ ${mode} Applying repairs...
962
962
  `);
963
963
  if (!flags.dryRun) {
964
964
  try {
965
- const { createBackup } = await import("./db-backup-E34JMBZD.js");
965
+ const { createBackup } = await import("./db-backup-W56YOLMC.js");
966
966
  const backupPath = createBackup("pre-fix");
967
967
  if (backupPath) {
968
968
  console.log(` Backup created: ${backupPath.split("/").pop()}`);
@@ -2,7 +2,7 @@ import {
2
2
  connectEmbedDaemon,
3
3
  disconnectClient,
4
4
  embedViaClient
5
- } from "./chunk-S465RWY7.js";
5
+ } from "./chunk-W6SKR3HZ.js";
6
6
  import {
7
7
  EMBEDDING_DIM
8
8
  } from "./chunk-FXU7JOXK.js";
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  initStore
3
- } from "./chunk-7APRWURX.js";
3
+ } from "./chunk-PMUKZYTR.js";
4
4
  import {
5
5
  getClient,
6
6
  isInitialized
7
- } from "./chunk-NA3MXUU6.js";
7
+ } from "./chunk-TH6HTK2L.js";
8
8
 
9
9
  // src/lib/schedules.ts
10
10
  import crypto from "crypto";
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  fastDbInit
3
- } from "./chunk-UVH6FA5E.js";
3
+ } from "./chunk-UU6YYTYH.js";
4
4
  import {
5
5
  sessionScopeFilter
6
- } from "./chunk-H4YONWQX.js";
6
+ } from "./chunk-ONMRBKAX.js";
7
7
  import {
8
8
  formatStatusAll,
9
9
  formatStatusDeep,
@@ -14,7 +14,7 @@ import {
14
14
  getClient,
15
15
  isCoordinatorRole,
16
16
  loadEmployees
17
- } from "./chunk-NA3MXUU6.js";
17
+ } from "./chunk-TH6HTK2L.js";
18
18
  import {
19
19
  isMainModule
20
20
  } from "./chunk-6Y4B3QF6.js";
@@ -1,11 +1,9 @@
1
1
  import {
2
- init_config,
3
2
  loadConfig,
4
3
  saveConfig
5
- } from "./chunk-KHV55ME4.js";
4
+ } from "./chunk-TOWAZ5IV.js";
6
5
 
7
6
  // src/lib/orchestration-phase.ts
8
- init_config();
9
7
  var ORCHESTRATION_PHASES = [
10
8
  "phase_1_coo",
11
9
  "phase_2_executives",
@@ -1,10 +1,8 @@
1
1
  import {
2
- EXE_AI_DIR,
3
- init_config
4
- } from "./chunk-KHV55ME4.js";
2
+ EXE_AI_DIR
3
+ } from "./chunk-TOWAZ5IV.js";
5
4
 
6
5
  // src/lib/background-jobs.ts
7
- init_config();
8
6
  import { existsSync, mkdirSync, readFileSync, writeFileSync, unlinkSync } from "fs";
9
7
  import { execFileSync } from "child_process";
10
8
  import os from "os";
@@ -4,7 +4,7 @@ import {
4
4
  import {
5
5
  createCRMWebhookHandler,
6
6
  parseTwentyWebhook
7
- } from "./chunk-UWBU44UP.js";
7
+ } from "./chunk-UPL5FEZY.js";
8
8
  import {
9
9
  WhatsAppAdapter
10
10
  } from "./chunk-ECSNSHZ7.js";
@@ -42,7 +42,7 @@ import {
42
42
  retryWithBackoff,
43
43
  routeMessage,
44
44
  validateGatewayConfig
45
- } from "./chunk-KLRP6ZG3.js";
45
+ } from "./chunk-RMSDKMFD.js";
46
46
  import {
47
47
  OllamaProvider
48
48
  } from "./chunk-FWFFZGSC.js";
@@ -67,7 +67,7 @@ import {
67
67
  } from "./chunk-GCNWCYJI.js";
68
68
  import {
69
69
  __export
70
- } from "./chunk-PNKVD2UK.js";
70
+ } from "./chunk-MLKGABMK.js";
71
71
 
72
72
  // src/gateway/index.ts
73
73
  var gateway_exports = {};
@@ -3,10 +3,10 @@ import {
3
3
  buildRawVisibilityFilter,
4
4
  buildWikiScopeFilter,
5
5
  searchMemories
6
- } from "./chunk-7APRWURX.js";
6
+ } from "./chunk-PMUKZYTR.js";
7
7
  import {
8
8
  getClient
9
- } from "./chunk-NA3MXUU6.js";
9
+ } from "./chunk-TH6HTK2L.js";
10
10
 
11
11
  // src/lib/hybrid-search.ts
12
12
  var RRF_K = 60;
@@ -49,7 +49,7 @@ async function hybridSearch(queryText, agentId, options) {
49
49
  let _isBroadQuery = false;
50
50
  if (config.selfQueryRouter && process.env.ANTHROPIC_API_KEY) {
51
51
  try {
52
- const { routeQuery } = await import("./self-query-router-TRPHL54X.js");
52
+ const { routeQuery } = await import("./self-query-router-37VB3PKQ.js");
53
53
  const routed = await routeQuery(queryText, config.selfQueryModel);
54
54
  effectiveQuery = routed.semanticQuery;
55
55
  _isBroadQuery = routed.isBroadQuery;
@@ -78,7 +78,7 @@ async function hybridSearch(queryText, agentId, options) {
78
78
  let rerankerAvailable = false;
79
79
  if (process.env.EXE_IS_DAEMON === "1") {
80
80
  try {
81
- const { isRerankerAvailable } = await import("./reranker-ME4CK2ZQ.js");
81
+ const { isRerankerAvailable } = await import("./reranker-OMADCS3D.js");
82
82
  rerankerAvailable = isRerankerAvailable();
83
83
  } catch {
84
84
  }
@@ -99,7 +99,7 @@ async function hybridSearch(queryText, agentId, options) {
99
99
  if (config.fileGrepEnabled === true && !process.env.VITEST) {
100
100
  try {
101
101
  if (process.env.EXE_IS_DAEMON !== "1") {
102
- const { getProjectName } = await import("./project-name-OBIDABHE.js");
102
+ const { getProjectName } = await import("./project-name-EWG5KAZP.js");
103
103
  const projectRoot = process.cwd();
104
104
  const projectName = getProjectName(projectRoot);
105
105
  if (projectName && projectName !== "tmp") {
@@ -118,7 +118,7 @@ async function hybridSearch(queryText, agentId, options) {
118
118
  queryVector ? searchMemories(queryVector, agentId, fetchOptions) : Promise.resolve([]),
119
119
  includeStructuredCards ? (async () => {
120
120
  try {
121
- const { searchMemoryCards } = await import("./memory-cards-OLE6MGO7.js");
121
+ const { searchMemoryCards } = await import("./memory-cards-UAQCO4QR.js");
122
122
  return await searchMemoryCards(effectiveQuery, agentId, fetchOptions);
123
123
  } catch {
124
124
  return [];
@@ -127,7 +127,7 @@ async function hybridSearch(queryText, agentId, options) {
127
127
  // Reflection insights: patterns, contradictions, summaries across sessions
128
128
  includeStructuredCards ? (async () => {
129
129
  try {
130
- const { searchReflections } = await import("./memory-reflection-Z7CT6JLY.js");
130
+ const { searchReflections } = await import("./memory-reflection-JQC4ZSUD.js");
131
131
  const insights = await searchReflections(effectiveQuery, agentId, 5);
132
132
  return insights.map((ins) => ({
133
133
  id: ins.id,
@@ -174,7 +174,7 @@ async function hybridSearch(queryText, agentId, options) {
174
174
  let entityBoostRan = false;
175
175
  if (merged.length > 0) {
176
176
  try {
177
- const { applyEntityBoost } = await import("./entity-boost-V6KSRGG4.js");
177
+ const { applyEntityBoost } = await import("./entity-boost-LIBVNNXO.js");
178
178
  const boosted = await applyEntityBoost(merged, effectiveQuery, getClient());
179
179
  merged = boosted.results;
180
180
  graphContextMap = boosted.graphContext;
@@ -195,7 +195,7 @@ async function hybridSearch(queryText, agentId, options) {
195
195
  try {
196
196
  let rerankedRecords;
197
197
  if (graphContextMap.size > 0) {
198
- const { rerankWithContext } = await import("./reranker-ME4CK2ZQ.js");
198
+ const { rerankWithContext } = await import("./reranker-OMADCS3D.js");
199
199
  const candidates = merged.map((m) => ({
200
200
  text: m.raw_text,
201
201
  context: graphContextMap.get(m.id)
@@ -203,7 +203,7 @@ async function hybridSearch(queryText, agentId, options) {
203
203
  const scored = await rerankWithContext(effectiveQuery, candidates, rerankReturnLimit);
204
204
  rerankedRecords = scored.map((s) => merged[s.index]);
205
205
  } else {
206
- const { rerank } = await import("./reranker-ME4CK2ZQ.js");
206
+ const { rerank } = await import("./reranker-OMADCS3D.js");
207
207
  rerankedRecords = await rerank(effectiveQuery, merged, rerankReturnLimit);
208
208
  }
209
209
  if (rerankedRecords.length > 0) {
@@ -394,7 +394,7 @@ async function lightweightSearch(queryText, agentId, options) {
394
394
  }
395
395
  if (options?.includeStructuredCards !== true) return results;
396
396
  try {
397
- const { searchMemoryCards } = await import("./memory-cards-OLE6MGO7.js");
397
+ const { searchMemoryCards } = await import("./memory-cards-UAQCO4QR.js");
398
398
  const cardResults = await searchMemoryCards(queryText, agentId, options);
399
399
  if (cardResults.length > 0) {
400
400
  return rrfMergeMulti([results, cardResults], limit, RRF_K, [1, 0.85]);
@@ -3,21 +3,19 @@ import {
3
3
  getClient,
4
4
  isInitialized,
5
5
  loadEmployees
6
- } from "./chunk-NA3MXUU6.js";
6
+ } from "./chunk-TH6HTK2L.js";
7
7
  import {
8
8
  PLAN_LIMITS,
9
9
  checkLicense,
10
10
  isFeatureAllowed
11
- } from "./chunk-I5VJNTDL.js";
11
+ } from "./chunk-NNT2ZNMC.js";
12
12
  import {
13
- EXE_AI_DIR,
14
- init_config
15
- } from "./chunk-KHV55ME4.js";
13
+ EXE_AI_DIR
14
+ } from "./chunk-TOWAZ5IV.js";
16
15
 
17
16
  // src/lib/plan-limits.ts
18
17
  import { readFileSync, existsSync } from "fs";
19
18
  import path from "path";
20
- init_config();
21
19
  var PlanLimitError = class extends Error {
22
20
  constructor(message) {
23
21
  super(message);