@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.
- package/dist/{active-agent-HUDSZRUG.js → active-agent-KMQCNXXD.js} +6 -6
- package/dist/{active-agent-GJOJUEMF.js → active-agent-NCZCDDZ2.js} +6 -6
- package/dist/{agent-context-HH7TL5ZP.js → agent-context-AZTTMUHP.js} +1 -1
- package/dist/agent-heartbeat-I5UPGXAU.js +60 -0
- package/dist/{agent-loop-OCJFYO72.js → agent-loop-NUIWAL3Z.js} +1 -1
- package/dist/{agentic-ontology-5PGUVMDP.js → agentic-ontology-SQR74CO7.js} +2 -2
- package/dist/{asana-BSDR6NW4.js → asana-MRQ2OQMJ.js} +1 -1
- package/dist/assets/wezterm.lua +68 -0
- package/dist/{backfill-metadata-ZDJ5B37R.js → backfill-metadata-5JOQOIN2.js} +7 -7
- package/dist/{background-jobs-4N4JSZVZ.js → background-jobs-IUB22CRF.js} +4 -4
- package/dist/{bash-X54PZMOG.js → bash-HOHKSOU3.js} +1 -1
- package/dist/{behaviors-TXLHEM5J.js → behaviors-4U2N5L4E.js} +6 -6
- package/dist/bin/age-ontology-load.js +4 -4
- package/dist/bin/agentic-ontology-backfill.js +9 -9
- package/dist/bin/agentic-reflection-backfill.js +10 -10
- package/dist/bin/agentic-semantic-label.js +9 -9
- package/dist/bin/backfill-conversations.js +9 -9
- package/dist/bin/backfill-responses.js +9 -9
- package/dist/bin/backfill-vectors.js +12 -14
- package/dist/bin/bulk-sync-postgres.js +10 -10
- package/dist/bin/cc-doctor.js +5 -5
- package/dist/bin/cleanup-stale-review-tasks.js +12 -11
- package/dist/bin/cli.js +19 -19
- package/dist/bin/customer-readiness.js +9 -0
- package/dist/bin/exe-agent-config.js +6 -6
- package/dist/bin/exe-agent.js +8 -8
- package/dist/bin/exe-assign.js +11 -11
- package/dist/bin/exe-boot.js +35 -30
- package/dist/bin/exe-call.js +9 -11
- package/dist/bin/exe-cloud.js +10 -12
- package/dist/bin/exe-dispatch.js +12 -11
- package/dist/bin/exe-doctor.js +2 -2
- package/dist/bin/exe-export-behaviors.js +10 -10
- package/dist/bin/exe-forget.js +9 -9
- package/dist/bin/exe-gateway.js +18 -18
- package/dist/bin/exe-healthcheck.js +5 -5
- package/dist/bin/exe-heartbeat.js +19 -14
- package/dist/bin/exe-kill.js +9 -9
- package/dist/bin/exe-launch-agent.js +16 -18
- package/dist/bin/exe-new-employee.js +11 -11
- package/dist/bin/exe-pending-messages.js +13 -12
- package/dist/bin/exe-pending-notifications.js +12 -11
- package/dist/bin/exe-pending-reviews.js +20 -13
- package/dist/bin/exe-rename.js +9 -11
- package/dist/bin/exe-review.js +14 -13
- package/dist/bin/exe-search.js +8 -10
- package/dist/bin/exe-session-cleanup.js +19 -19
- package/dist/bin/exe-settings.js +11 -13
- package/dist/bin/exe-start-codex.js +15 -15
- package/dist/bin/exe-start-opencode.js +11 -11
- package/dist/bin/exe-status.js +13 -12
- package/dist/bin/exe-support.js +5 -5
- package/dist/bin/exe-team.js +6 -6
- package/dist/bin/git-sweep.js +12 -11
- package/dist/bin/graph-backfill.js +10 -10
- package/dist/bin/graph-export.js +8 -8
- package/dist/bin/graph-layer-benchmark.js +1 -1
- package/dist/bin/install.js +38 -12
- package/dist/bin/intercom-check.js +14 -8
- package/dist/bin/list-providers.js +1 -1
- package/dist/bin/postgres-agentic-reflection-backfill.js +6 -6
- package/dist/bin/postgres-agentic-semantic-backfill.js +5 -5
- package/dist/bin/pre-publish.js +2 -2
- package/dist/bin/registry-proxy.js +1 -1
- package/dist/bin/scan-tasks.js +48 -49
- package/dist/bin/setup.js +6 -5
- package/dist/bin/shard-migrate.js +8 -8
- package/dist/bin/stack-update.js +66 -10
- package/dist/bin/update.js +1 -1
- package/dist/{branding-52J2ILJX.js → branding-EHDA3CCK.js} +4 -6
- package/dist/{capacity-monitor-HWN2JX5W.js → capacity-monitor-Q5M5SVRC.js} +13 -12
- package/dist/{catchup-brief-UERCIVM5.js → catchup-brief-7HTF254M.js} +14 -13
- package/dist/{chunk-GK5VMHSN.js → chunk-26UVGP3I.js} +1 -1
- package/dist/{chunk-CDDRSIGK.js → chunk-2BPO7VQF.js} +80 -70
- package/dist/{chunk-7PTII6F4.js → chunk-2OATM2JZ.js} +1 -1
- package/dist/{chunk-AJ2XDY27.js → chunk-3FIWKONP.js} +10 -12
- package/dist/{chunk-H6OEU54G.js → chunk-44XTE6NK.js} +91 -39
- package/dist/{chunk-JUITBJ7J.js → chunk-4GLEFA2X.js} +1 -1
- package/dist/{chunk-OYCQ6PFC.js → chunk-4LUI7MMY.js} +6 -6
- package/dist/{chunk-BY4OTURZ.js → chunk-4MN44ORL.js} +1 -1
- package/dist/{chunk-BHV7PX5V.js → chunk-4XO2533K.js} +2 -2
- package/dist/{chunk-VXQDZH5T.js → chunk-6CSCJTGT.js} +3 -3
- package/dist/{chunk-MUVPQCQA.js → chunk-6HFZ2KUC.js} +1 -3
- package/dist/{chunk-F7JVVLGH.js → chunk-6YUACQQA.js} +2 -4
- package/dist/{chunk-2R3N4DQY.js → chunk-7J6OKCQX.js} +3 -3
- package/dist/{chunk-NQAZ2CP7.js → chunk-AAZ3MQIA.js} +11 -11
- package/dist/{chunk-XEA6DSLR.js → chunk-AERGE6GC.js} +4 -6
- package/dist/{chunk-RWJY7KMP.js → chunk-ARGBV4PP.js} +46 -13
- package/dist/{chunk-32LFUJVG.js → chunk-CAXNZ4KN.js} +221 -110
- package/dist/{chunk-ER3UJ2VL.js → chunk-CVUFSWGC.js} +2 -2
- package/dist/{chunk-RNN4MZDN.js → chunk-DBXKWFTK.js} +3 -3
- package/dist/{chunk-Y2VVTK2E.js → chunk-DTLASDQM.js} +1 -1
- package/dist/{chunk-K3PSCQLK.js → chunk-DW6P7UVY.js} +4 -6
- package/dist/{chunk-B6Q6WAD7.js → chunk-EHNSK2Y4.js} +1 -1
- package/dist/{chunk-7PEYIW53.js → chunk-EHXOWGQG.js} +2 -2
- package/dist/{chunk-6BUUY7FG.js → chunk-EOO32RJZ.js} +2 -4
- package/dist/{chunk-MFGARIVE.js → chunk-EYQIEK5M.js} +2 -4
- package/dist/{chunk-NT6R4ATM.js → chunk-FG4Z2XFU.js} +1 -1
- package/dist/{chunk-MPXPPKJ4.js → chunk-GKFSZKUD.js} +2 -2
- package/dist/{chunk-CWPE6QVM.js → chunk-GNHN5HRQ.js} +2 -4
- package/dist/{chunk-WLEVAIL5.js → chunk-GP6G6EQI.js} +1 -1
- package/dist/{chunk-65UQ7H5U.js → chunk-HJWNO7MX.js} +4 -6
- package/dist/{chunk-O7YD7JYE.js → chunk-I7AW4237.js} +18 -4
- package/dist/{chunk-VRD452MQ.js → chunk-I7KGNSNR.js} +2 -2
- package/dist/{chunk-TFZZL3QF.js → chunk-ICKEGWWP.js} +2 -4
- package/dist/{chunk-SR6D65DA.js → chunk-IFACD7E6.js} +3 -3
- package/dist/{chunk-VX4X2O6J.js → chunk-IGRIWAV4.js} +6 -6
- package/dist/{chunk-C4EVFN7J.js → chunk-IYDFOUK4.js} +2 -2
- package/dist/{chunk-I4WAKJ6W.js → chunk-J4RAXKTC.js} +3 -3
- package/dist/{chunk-RWURKLS3.js → chunk-JH7Z2AZ7.js} +1 -1
- package/dist/{chunk-5WTYETQO.js → chunk-K4KAPZC7.js} +4 -8
- package/dist/{chunk-G3VR3MJI.js → chunk-KIUU4PNX.js} +4 -8
- package/dist/{chunk-53VUIKOE.js → chunk-KJFCQUQP.js} +1 -1
- package/dist/{chunk-4F56OUR7.js → chunk-LC53LVOT.js} +2 -2
- package/dist/{chunk-W7NQE65M.js → chunk-LJML7HT2.js} +1 -1
- package/dist/{chunk-V4O2APMI.js → chunk-LL5EY6OQ.js} +1 -1
- package/dist/{chunk-DCJ42FEN.js → chunk-LWJ4AMMY.js} +2 -4
- package/dist/{chunk-GCMT6RWI.js → chunk-LYH5HE24.js} +3 -14
- package/dist/{chunk-63UVIM7S.js → chunk-MBA4NNTS.js} +2 -4
- package/dist/{chunk-7KR5PV4P.js → chunk-MKPSMRVX.js} +1 -1
- package/dist/chunk-MLKGABMK.js +9 -0
- package/dist/chunk-MLXJ5EZG.js +90 -0
- package/dist/{chunk-BXCJOACQ.js → chunk-NFHFNPTN.js} +3 -5
- package/dist/{chunk-I5VJNTDL.js → chunk-NNT2ZNMC.js} +5 -7
- package/dist/{chunk-O7CTVDC3.js → chunk-ODEGQCWW.js} +8 -8
- package/dist/{chunk-H4YONWQX.js → chunk-ONMRBKAX.js} +229 -108
- package/dist/{chunk-7APRWURX.js → chunk-PMUKZYTR.js} +10 -12
- package/dist/{chunk-NE6RPW5C.js → chunk-PMWDO5FR.js} +1 -1
- package/dist/{chunk-IPSFAUK5.js → chunk-QB66MH2V.js} +4 -4
- package/dist/{chunk-XAHIVBTU.js → chunk-QHQJ7DLL.js} +6 -6
- package/dist/{chunk-KLRP6ZG3.js → chunk-RMSDKMFD.js} +251 -96
- package/dist/{chunk-NA3MXUU6.js → chunk-TH6HTK2L.js} +17 -15
- package/dist/{chunk-H4KUTL2T.js → chunk-TKEDF7KV.js} +1 -1
- package/dist/{chunk-KHV55ME4.js → chunk-TOWAZ5IV.js} +95 -118
- package/dist/{chunk-IBVB2NGY.js → chunk-TOXHEZN5.js} +47 -4
- package/dist/{chunk-UWBU44UP.js → chunk-UPL5FEZY.js} +1 -1
- package/dist/{chunk-UVH6FA5E.js → chunk-UU6YYTYH.js} +1 -1
- package/dist/{chunk-X7DJ2QZW.js → chunk-V4MKR32F.js} +4 -6
- package/dist/{chunk-HV75RBMK.js → chunk-VB23RNNI.js} +1 -1
- package/dist/{chunk-56T5TMNK.js → chunk-VK2AWQ6D.js} +2 -2
- package/dist/{chunk-UXDQ4ERA.js → chunk-VNTDQUOG.js} +21 -18
- package/dist/{chunk-KQTGSD23.js → chunk-VYVESELG.js} +13 -9
- package/dist/{chunk-S465RWY7.js → chunk-W6SKR3HZ.js} +3 -5
- package/dist/{chunk-CQCURHDV.js → chunk-X2XE65WV.js} +12 -10
- package/dist/{chunk-XQ2ZBOAD.js → chunk-XK7VZFCC.js} +22 -9
- package/dist/{chunk-5F3EXHT7.js → chunk-XMRDT4PB.js} +2 -4
- package/dist/{chunk-WTJS6PCC.js → chunk-YOG7TWMO.js} +1 -1
- package/dist/{chunk-QSSABSCM.js → chunk-YPSN64BU.js} +6 -6
- package/dist/{chunk-WJW564IP.js → chunk-ZBA74MMX.js} +2 -2
- package/dist/{chunk-K6MMN6AW.js → chunk-ZZLTJXKR.js} +3 -5
- package/dist/{code-context-index-SRTAWCZQ.js → code-context-index-I5A7I4JQ.js} +7 -7
- package/dist/{content-extractor-H4IPL533.js → content-extractor-M7ISRONU.js} +1 -1
- package/dist/{conversation-entity-extractor-IZ3ECP4A.js → conversation-entity-extractor-EYSI4DKM.js} +3 -3
- package/dist/{conversation-wiki-populator-K4BQXHHO.js → conversation-wiki-populator-RSJ44BRO.js} +2 -2
- package/dist/{core-memory-JZ34WT5R.js → core-memory-KF6T4PMU.js} +1 -1
- package/dist/{crdt-sync-4TOVD4QN.js → crdt-sync-XMC6LT2Q.js} +2 -2
- package/dist/{crm-bridge-27QVOWPI.js → crm-bridge-4QZRMOF7.js} +1 -1
- package/dist/{crm-webhook-77XHBWL7.js → crm-webhook-QMHD5YYQ.js} +3 -3
- package/dist/{cto-delegation-gate-AWENA4VT.js → cto-delegation-gate-BTZWAA4E.js} +11 -10
- package/dist/{daemon-auth-Z7O3LO23.js → daemon-auth-F47P6HTC.js} +4 -4
- package/dist/{daemon-orchestration-BG4NPWOK.js → daemon-orchestration-HFODCB52.js} +14 -13
- package/dist/{daemon-protocol-N7MOJ4U3.js → daemon-protocol-XW2OLNBS.js} +1 -1
- package/dist/{db-backup-E34JMBZD.js → db-backup-W56YOLMC.js} +4 -4
- package/dist/{devtools-ZL5NCINM.js → devtools-5PEATRYE.js} +1 -1
- package/dist/{discord-QOFQKX6S.js → discord-LMZKIYWB.js} +1 -1
- package/dist/dispatch-ack-JYCKAWKZ.js +13 -0
- package/dist/{email-NY5HB4WA.js → email-UENAIKRN.js} +1 -1
- package/dist/{entity-boost-V6KSRGG4.js → entity-boost-LIBVNNXO.js} +2 -2
- package/dist/{exe-drift-YFWCC26O.js → exe-drift-SED6KQTZ.js} +6 -6
- package/dist/{exe-export-YRACBEUY.js → exe-export-C7GZLJJ2.js} +9 -9
- package/dist/{exe-import-DY57L2OI.js → exe-import-E3ZOLEAC.js} +9 -9
- package/dist/{exe-key-U2JJH4MO.js → exe-key-4275KC6R.js} +5 -7
- package/dist/{exe-org-45OTYZZJ.js → exe-org-OOO7KJVZ.js} +4 -4
- package/dist/{factory-2PB537KA.js → factory-CTFAGZUA.js} +1 -1
- package/dist/fast-db-init-JI5U4KWG.js +7 -0
- package/dist/{file-edit-GSXUFUDC.js → file-edit-AZAJPCA3.js} +1 -1
- package/dist/{file-read-Z3F3PUCK.js → file-read-VACF23NC.js} +1 -1
- package/dist/{file-write-X77JXZ2C.js → file-write-B2RPT5U7.js} +1 -1
- package/dist/gateway/index.js +10 -10
- package/dist/{gateway-client-IPKKEYKY.js → gateway-client-5EUMMEZZ.js} +2 -2
- package/dist/{git-staleness-I662R7RL.js → git-staleness-BY4ZK6MW.js} +5 -5
- package/dist/{git-task-sweep-XWFCP2HA.js → git-task-sweep-EVITTAZE.js} +12 -11
- package/dist/{glob-2PWAXTZ2.js → glob-7PWH7WKL.js} +1 -1
- package/dist/{global-procedures-IEIJBCAH.js → global-procedures-YJLTJ7EZ.js} +7 -7
- package/dist/graph-auto-extract-HWZ5GVXZ.js +161 -0
- package/dist/{graph-query-NCDYOT4Y.js → graph-query-SE6T5XC4.js} +1 -1
- package/dist/{graph-rag-2YLGRBW5.js → graph-rag-G3EG5Q6L.js} +3 -3
- package/dist/{grep-GTV6WAZ4.js → grep-HWIDXHRC.js} +1 -1
- package/dist/{hook-integrity-LLPJPAXW.js → hook-integrity-PR4BPZBT.js} +2 -2
- package/dist/hooks/bug-report-worker.js +13 -12
- package/dist/hooks/codex-stop-task-finalizer.js +16 -13
- package/dist/hooks/commit-complete.js +14 -13
- package/dist/hooks/error-recall.js +9 -12
- package/dist/hooks/exe-heartbeat-hook.js +6 -6
- package/dist/hooks/ingest-worker.js +9 -9
- package/dist/hooks/ingest.js +16 -19
- package/dist/hooks/instructions-loaded.js +7 -7
- package/dist/hooks/notification.js +12 -10
- package/dist/hooks/post-compact.js +13 -12
- package/dist/hooks/post-tool-combined.js +6 -6
- package/dist/hooks/pre-compact.js +18 -17
- package/dist/hooks/pre-tool-use.js +19 -20
- package/dist/hooks/prompt-submit.js +78 -39
- package/dist/hooks/session-end.js +22 -21
- package/dist/hooks/session-start.js +31 -25
- package/dist/hooks/stop.js +20 -22
- package/dist/hooks/subagent-stop.js +13 -12
- package/dist/hooks/summary-worker.js +21 -20
- package/dist/{hooks-UK2AYRCA.js → hooks-LDCFYHDF.js} +1 -1
- package/dist/{imessage-LINH4V4D.js → imessage-6UOZB5VN.js} +1 -1
- package/dist/index.js +19 -18
- package/dist/{installer-PB63JTTG.js → installer-RLKOACKG.js} +9 -9
- package/dist/{installer-SSR2OOLO.js → installer-W4NY3OBF.js} +13 -11
- package/dist/{installer-ZONYB3XK.js → installer-X5FEYJIA.js} +9 -9
- package/dist/{intercom-queue-MMZT2MA2.js → intercom-queue-K3DVKSPJ.js} +1 -1
- package/dist/{key-backup-status-4WKIQOAS.js → key-backup-status-ORNMJEEA.js} +4 -6
- package/dist/lib/agent-config.js +4 -4
- package/dist/lib/cloud-sync.js +8 -8
- package/dist/lib/cloudflare-dns.js +1 -1
- package/dist/lib/config.js +3 -5
- package/dist/lib/consolidation.js +8 -8
- package/dist/lib/crypto.js +1 -1
- package/dist/lib/database.js +5 -5
- package/dist/lib/db-daemon-client.js +5 -5
- package/dist/lib/db.js +5 -5
- package/dist/lib/device-registry.js +4 -6
- package/dist/lib/embedder.js +6 -6
- package/dist/lib/employee-templates.js +8 -8
- package/dist/lib/employees.js +7 -5
- package/dist/lib/error-detector.js +1 -1
- package/dist/lib/exe-daemon-client.js +5 -5
- package/dist/lib/exe-daemon.js +143 -52
- package/dist/lib/file-grep.js +1 -1
- package/dist/lib/hybrid-search.js +8 -8
- package/dist/lib/identity-templates.js +1 -1
- package/dist/lib/identity.js +5 -5
- package/dist/lib/keychain.js +1 -1
- package/dist/lib/license.js +4 -4
- package/dist/lib/messaging.js +12 -11
- package/dist/lib/post-tool-memory.js +3 -3
- package/dist/lib/registry-proxy.js +1 -1
- package/dist/lib/reminders.js +6 -6
- package/dist/lib/runtime-table.js +1 -1
- package/dist/lib/schedules.js +8 -8
- package/dist/lib/session-registry.js +1 -1
- package/dist/lib/session-wrappers.js +1 -1
- package/dist/lib/skill-learning.js +7 -7
- package/dist/lib/status-brief.js +1 -1
- package/dist/lib/store.js +7 -7
- package/dist/lib/task-router.js +6 -6
- package/dist/lib/tasks.js +14 -11
- package/dist/lib/tmux-routing.js +11 -10
- package/dist/lib/tmux-status.js +1 -1
- package/dist/lib/tmux-transport.js +1 -1
- package/dist/lib/token-spend.js +6 -6
- package/dist/lib/transport.js +1 -1
- package/dist/lib/ws-auth.js +1 -1
- package/dist/lib/ws-client.js +2 -2
- package/dist/license-gate-J5YN264E.js +14 -0
- package/dist/mcp/register-tools.js +63 -62
- package/dist/mcp/server.js +65 -64
- package/dist/mcp/tools/complete-reminder.js +7 -7
- package/dist/mcp/tools/create-reminder.js +7 -7
- package/dist/mcp/tools/create-task.js +15 -13
- package/dist/mcp/tools/deactivate-behavior.js +8 -8
- package/dist/mcp/tools/list-reminders.js +7 -7
- package/dist/mcp/tools/list-tasks.js +14 -14
- package/dist/mcp/tools/send-message.js +14 -13
- package/dist/mcp/tools/update-task.js +13 -12
- package/dist/{mcp-diagnostics-CWMVPHVC.js → mcp-diagnostics-TSBY62UQ.js} +1 -1
- package/dist/{mcp-disconnect-tracker-RM3GEERR.js → mcp-disconnect-tracker-MB23DRS6.js} +1 -1
- package/dist/{mcp-http-config-PDGSOYNQ.js → mcp-http-config-6YLW4PFG.js} +6 -6
- package/dist/{memory-cards-OLE6MGO7.js → memory-cards-UAQCO4QR.js} +5 -5
- package/dist/{memory-poisoning-defense-OOHJIXIX.js → memory-poisoning-defense-VWITZ4WO.js} +5 -7
- package/dist/{memory-queue-TGWXMENR.js → memory-queue-NYIGZNCG.js} +4 -4
- package/dist/memory-queue-client-YJOLYALV.js +15 -0
- package/dist/{memory-reflection-Z7CT6JLY.js → memory-reflection-JQC4ZSUD.js} +5 -5
- package/dist/{message-queue-client-TWIA2GIH.js → message-queue-client-NTLKYGVO.js} +1 -1
- package/dist/{notifications-SREXGSAQ.js → notifications-YDOKTVCH.js} +11 -10
- package/dist/{oauth-server-NSWGKLLA.js → oauth-server-TOWAZR4K.js} +1 -1
- package/dist/{orchestration-phase-WLQMEP4M.js → orchestration-phase-FXKZYK6R.js} +4 -4
- package/dist/{orchestrator-CHQURQSC.js → orchestrator-BZ2D6ZM6.js} +13 -12
- package/dist/{permission-presets-3XKJNM6N.js → permission-presets-E3DZK46K.js} +1 -1
- package/dist/{permissions-EZH3ULLD.js → permissions-6MCWUDCD.js} +1 -1
- package/dist/{pg-ssl-4ZNXKUNH.js → pg-ssl-7JXQFL4I.js} +1 -1
- package/dist/{plan-limits-7L75PB33.js → plan-limits-KUTODKG6.js} +7 -7
- package/dist/{preferences-K2GKUQSJ.js → preferences-ERXO6SMJ.js} +3 -3
- package/dist/{project-name-OBIDABHE.js → project-name-EWG5KAZP.js} +1 -1
- package/dist/{projection-worker-HSGE44JA.js → projection-worker-UY7R2EQJ.js} +85 -8
- package/dist/{push-notifications-EOTMKJ6B.js → push-notifications-KDYFOJRI.js} +4 -4
- package/dist/{reranker-ME4CK2ZQ.js → reranker-OMADCS3D.js} +4 -4
- package/dist/{review-gate-M3U2YAW6.js → review-gate-IUNS6GQU.js} +1 -1
- package/dist/{review-polling-DQCN4TNM.js → review-polling-DORNZ2KI.js} +12 -11
- package/dist/runtime/index.js +14 -13
- package/dist/{self-query-router-TRPHL54X.js → self-query-router-37VB3PKQ.js} +1 -1
- package/dist/{session-events-ZZBFYL5Z.js → session-events-5WR5RVDK.js} +12 -12
- package/dist/{session-kill-telemetry-MUFET632.js → session-kill-telemetry-DHSQV2CI.js} +6 -6
- package/dist/{session-scope-QUUDZM2L.js → session-scope-D4Q62ZOZ.js} +13 -13
- package/dist/setup-wizard-3GVBHKHG.js +12 -0
- package/dist/{shard-manager-VYMJM7NR.js → shard-manager-SP4YL5JQ.js} +4 -4
- package/dist/{signal-C263RUND.js → signal-7UIRTYGZ.js} +1 -1
- package/dist/{slack-N7PL6QMX.js → slack-GCOYBZUK.js} +1 -1
- package/dist/{task-enforcement-WJ3S6JTL.js → task-enforcement-OYCQXBBC.js} +11 -10
- package/dist/{task-scanner-YHWRG4ZJ.js → task-scanner-QEM5CO2Y.js} +1 -1
- package/dist/{task-scope-V2CTRHG7.js → task-scope-WWRNU2LU.js} +11 -10
- package/dist/{tasks-crud-W2XPUGKK.js → tasks-crud-75AUVZPO.js} +13 -10
- package/dist/{tasks-review-BR2SBSYG.js → tasks-review-UMZN5ZPQ.js} +11 -10
- package/dist/{telegram-B54FFOXD.js → telegram-RGVD4LUY.js} +1 -1
- package/dist/{telemetry-7IQCPV4Q.js → telemetry-43X3GT3R.js} +1 -1
- package/dist/{token-budget-H2XSWO4D.js → token-budget-62TYDIMI.js} +5 -5
- package/dist/{tool-capability-index-5X2CCGIK.js → tool-capability-index-OBZXORBP.js} +2 -2
- package/dist/{tool-gates-SGFMDREY.js → tool-gates-3IC7DK4R.js} +1 -1
- package/dist/{tool-gates-3DNTD7G3.js → tool-gates-GXSYBVK4.js} +1 -1
- package/dist/{tool-registry-2VUAZXTW.js → tool-registry-5XN3FUYL.js} +1 -1
- package/dist/{tool-telemetry-NVPSPRYP.js → tool-telemetry-JL6NY3KP.js} +2 -2
- package/dist/tui/App.js +44 -43
- package/dist/{tui-data-QN4O565C.js → tui-data-C5I2YU4C.js} +11 -10
- package/dist/{update-check-ERUKV2G6.js → update-check-MKHO7H6B.js} +1 -1
- package/dist/{webhook-L5FGAUPJ.js → webhook-LCW7UP4L.js} +1 -1
- package/dist/{webhook-pipe-B7GJCJAI.js → webhook-pipe-PJOFVBD3.js} +1 -1
- package/dist/{whatsapp-7FK2PRWO.js → whatsapp-SILL4V64.js} +1 -1
- package/dist/{whatsapp-accounts-VIHRSLGB.js → whatsapp-accounts-BWRZUY23.js} +1 -1
- package/dist/{wiki-acl-R4IIHICT.js → wiki-acl-5EC5VNYG.js} +1 -1
- package/dist/{wiki-client-EUDJA7O2.js → wiki-client-MMVRPTPK.js} +1 -1
- package/dist/{worker-gate-3KDXLIJC.js → worker-gate-Q5Y6B5N7.js} +4 -4
- package/dist/{workflow-engine-GISKRYSO.js → workflow-engine-KAKVU7NC.js} +3 -3
- package/dist/{worktree-B3FHAHEM.js → worktree-OMPQEJH7.js} +1 -1
- package/package.json +2 -2
- package/release-notes.json +85 -85
- package/src/commands/exe/setup.md +1 -1
- package/dist/chunk-PNKVD2UK.js +0 -26
- package/dist/fast-db-init-67TQTHWT.js +0 -7
- package/dist/license-gate-JY2KFIKO.js +0 -14
- package/dist/memory-queue-client-RZP5F4EA.js +0 -15
- package/dist/setup-wizard-NXWCEK63.js +0 -12
- package/dist/{chunk-D5MPHVWH.js → chunk-524VLFFY.js} +0 -0
- package/dist/{chunk-HIQ5RDA7.js → chunk-A3A2E42I.js} +0 -0
- package/dist/{chunk-APRP5D27.js → chunk-H6ADW3YC.js} +0 -0
- package/dist/{chunk-AAVODJ4F.js → chunk-J2OPV5FE.js} +0 -0
- package/dist/{chunk-DBLBWWFS.js → chunk-S6DA6UKC.js} +3 -3
- /package/dist/{chunk-F3ULERRZ.js → chunk-TSCZMB3P.js} +0 -0
- /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-
|
|
10
|
+
} from "./chunk-TOWAZ5IV.js";
|
|
12
11
|
import {
|
|
13
12
|
atomicWriteJsonSync,
|
|
14
|
-
atomicWriteSync
|
|
15
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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://
|
|
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-
|
|
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
|
|
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://
|
|
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://
|
|
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://
|
|
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://
|
|
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://
|
|
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-
|
|
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-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
673
|
-
|
|
674
|
-
|
|
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
|
|
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
|
-
|
|
719
|
-
|
|
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
|
|
774
|
-
const { setOrchestrationPhase } = await import("./orchestration-phase-
|
|
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
|
|
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
|
|
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 = {
|
|
@@ -589,7 +589,7 @@ function auditHookOwnership() {
|
|
|
589
589
|
}
|
|
590
590
|
async function auditShards() {
|
|
591
591
|
try {
|
|
592
|
-
const { auditShardHealth } = await import("./shard-manager-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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()}`);
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
fastDbInit
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-UU6YYTYH.js";
|
|
4
4
|
import {
|
|
5
5
|
sessionScopeFilter
|
|
6
|
-
} from "./chunk-
|
|
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-
|
|
17
|
+
} from "./chunk-TH6HTK2L.js";
|
|
18
18
|
import {
|
|
19
19
|
isMainModule
|
|
20
20
|
} from "./chunk-6Y4B3QF6.js";
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
|
-
EXE_AI_DIR
|
|
3
|
-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
6
|
+
} from "./chunk-PMUKZYTR.js";
|
|
7
7
|
import {
|
|
8
8
|
getClient
|
|
9
|
-
} from "./chunk-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
6
|
+
} from "./chunk-TH6HTK2L.js";
|
|
7
7
|
import {
|
|
8
8
|
PLAN_LIMITS,
|
|
9
9
|
checkLicense,
|
|
10
10
|
isFeatureAllowed
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-NNT2ZNMC.js";
|
|
12
12
|
import {
|
|
13
|
-
EXE_AI_DIR
|
|
14
|
-
|
|
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);
|