@askexenow/exe-os 0.9.319 → 0.9.323
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/deploy/compose/.env.customer.example +1 -1
- package/deploy/compose/.env.example +18 -1
- package/deploy/compose/PROTECTED_FILES.md +4 -1
- package/deploy/compose/add-routes.sh +22 -0
- package/deploy/compose/cloudflared/config.yml.example +6 -3
- package/deploy/compose/docker-compose.yml +36 -1
- package/deploy/compose/generate-env.ts +40 -2
- package/deploy/compose/sso-edge/default.conf.template +11 -0
- package/deploy/compose/sso-edge/sso-redirect.conf +90 -21
- package/deploy/stack-manifests/v0.9.json +110 -2
- package/dist/{active-agent-EA2Q3KYR.js → active-agent-67BHUBV2.js} +3 -3
- package/dist/{active-agent-XIPGXSQA.js → active-agent-IGVX2AAK.js} +3 -3
- package/dist/{agentic-ontology-7ZUMZC2O.js → agentic-ontology-I5MEKVGE.js} +1 -1
- package/dist/backfill-gate-J7UXFNXU.js +19 -0
- package/dist/{backfill-metadata-7RO5PSMN.js → backfill-metadata-N5VVCYFT.js} +4 -4
- package/dist/{behaviors-OEGZD5DH.js → behaviors-2YYG72ZH.js} +5 -5
- package/dist/bin/agentic-ontology-backfill.js +5 -5
- package/dist/bin/agentic-reflection-backfill.js +6 -6
- package/dist/bin/agentic-semantic-label.js +5 -5
- package/dist/bin/backfill-conversations.js +11 -11
- package/dist/bin/backfill-responses.js +11 -11
- package/dist/bin/backfill-vectors.js +102 -22
- package/dist/bin/bulk-sync-postgres.js +14 -14
- package/dist/bin/cc-doctor.js +5 -5
- package/dist/bin/cleanup-stale-review-tasks.js +20 -13
- package/dist/bin/cli.js +68 -31
- package/dist/bin/customer-readiness.js +1 -0
- package/dist/bin/deferred-daemon-restart.js +79 -76
- package/dist/bin/exe-agent-config.js +3 -3
- package/dist/bin/exe-agent.js +8 -8
- package/dist/bin/exe-assign.js +10 -10
- package/dist/bin/exe-boot.js +66 -32
- package/dist/bin/exe-call.js +4 -4
- package/dist/bin/exe-cloud.js +120 -47
- package/dist/bin/exe-config-dump.js +3 -3
- package/dist/bin/exe-dispatch.js +48 -14
- package/dist/bin/exe-doctor.js +4 -4
- package/dist/bin/exe-export-behaviors.js +7 -7
- package/dist/bin/exe-forget.js +6 -6
- package/dist/bin/exe-gateway.js +8 -8
- package/dist/bin/exe-healthcheck.js +17 -8
- package/dist/bin/exe-heartbeat.js +20 -13
- package/dist/bin/exe-kill.js +23 -16
- package/dist/bin/exe-launch-agent.js +39 -25
- package/dist/bin/exe-new-employee.js +8 -8
- package/dist/bin/exe-pending-messages.js +21 -14
- package/dist/bin/exe-pending-notifications.js +20 -13
- package/dist/bin/exe-pending-reviews.js +20 -13
- package/dist/bin/exe-rename.js +4 -4
- package/dist/bin/exe-review.js +22 -15
- package/dist/bin/exe-search.js +8 -13
- package/dist/bin/exe-session-cleanup.js +39 -22
- package/dist/bin/exe-settings.js +15 -15
- package/dist/bin/exe-start-codex.js +12 -12
- package/dist/bin/exe-start-opencode.js +8 -8
- package/dist/bin/exe-status.js +21 -14
- package/dist/bin/exe-support.js +3 -3
- package/dist/bin/exe-team.js +3 -3
- package/dist/bin/exe-watchdog.js +278 -39
- package/dist/bin/git-sweep.js +21 -14
- package/dist/bin/graph-backfill.js +4 -4
- package/dist/bin/graph-export.js +5 -5
- package/dist/bin/import-history.js +7 -7
- package/dist/bin/install-launchd.js +2 -2
- package/dist/bin/install.js +120 -87
- package/dist/bin/intercom-check.js +4 -4
- package/dist/bin/mcp-sessions.js +2 -2
- package/dist/bin/orchestration-metrics.js +4 -4
- package/dist/bin/postgres-agentic-reflection-backfill.js +2 -2
- package/dist/bin/postgres-agentic-semantic-backfill.js +1 -1
- package/dist/bin/registry-proxy.js +7 -1
- package/dist/bin/scan-tasks.js +20 -13
- package/dist/bin/setup.js +1 -1
- package/dist/bin/shard-migrate.js +4 -4
- package/dist/bin/stack-update.js +4 -4
- package/dist/bin/vps-health-gate.js +1 -1
- package/dist/{capability-cards-4BONYCI4.js → capability-cards-RC4JYXCG.js} +2 -2
- package/dist/{capacity-monitor-SV2Q7CMC.js → capacity-monitor-EDIGJSVQ.js} +21 -14
- package/dist/{catchup-brief-5ULTVKSE.js → catchup-brief-YVSBRXYZ.js} +23 -16
- package/dist/{chunk-YZTOGIV7.js → chunk-2COLYLE6.js} +1 -1
- package/dist/{chunk-K6GZMAIA.js → chunk-2RR2CJCX.js} +2 -2
- package/dist/{chunk-RVF6JBHW.js → chunk-364VBQIC.js} +1 -1
- package/dist/{chunk-TWPYSILC.js → chunk-3CT3GN2B.js} +1 -1
- package/dist/{chunk-5L62XXNH.js → chunk-3LZILUET.js} +1 -1
- package/dist/{chunk-KF6NBYV4.js → chunk-3MUV2GDZ.js} +2 -2
- package/dist/{chunk-36CFV3ZF.js → chunk-3QJ3GDQZ.js} +5 -5
- package/dist/{chunk-GRB44WRN.js → chunk-3VYAQUWZ.js} +54 -7
- package/dist/{chunk-36SS3TE7.js → chunk-46AMZT3C.js} +110 -24
- package/dist/{chunk-Q774HAGE.js → chunk-4GK6JTEV.js} +1 -1
- package/dist/{chunk-RAKFEXCN.js → chunk-4VW5KF6X.js} +4 -4
- package/dist/{chunk-YJYE6MMJ.js → chunk-5CRFNQ7L.js} +2 -2
- package/dist/{chunk-OC222BAQ.js → chunk-5HXJI7SX.js} +1 -1
- package/dist/{chunk-CWQAXO3O.js → chunk-5RACW3LX.js} +28 -3
- package/dist/{chunk-VTHR4DPE.js → chunk-5ZNY7IZI.js} +5 -1
- package/dist/{chunk-RJHOFX72.js → chunk-5ZQMGI3V.js} +1 -1
- package/dist/{chunk-YSSJOTVN.js → chunk-644DVREV.js} +2 -2
- package/dist/chunk-6IWLAQ7O.js +40 -0
- package/dist/{chunk-ZOCW4TGA.js → chunk-6UR7C2NX.js} +1 -1
- package/dist/{chunk-V2GI2MJJ.js → chunk-7PXMLHPG.js} +2 -2
- package/dist/{chunk-7S3SRDPQ.js → chunk-A2K7YIRL.js} +2 -2
- package/dist/{chunk-AKD6IKYS.js → chunk-A3CRB4PS.js} +3 -3
- package/dist/{chunk-XLQH263A.js → chunk-A6I36KVN.js} +2 -2
- package/dist/{chunk-CNFUVZLM.js → chunk-A6ODMODG.js} +1 -1
- package/dist/{chunk-B3SFW4LY.js → chunk-AVEOL6NP.js} +633 -539
- package/dist/{chunk-RREJ2QQ4.js → chunk-BKOGHVRO.js} +1 -1
- package/dist/{chunk-WXQVFMNV.js → chunk-CCYEO6EG.js} +5 -5
- package/dist/{chunk-PM6XSS6R.js → chunk-CMZIAR5S.js} +1 -1
- package/dist/{chunk-EPZWVXKI.js → chunk-CP4LIKCX.js} +1 -1
- package/dist/{chunk-WG4PRZGT.js → chunk-DDRASSJI.js} +3 -3
- package/dist/{chunk-OXGNFT3L.js → chunk-DZVQ23CM.js} +7 -7
- package/dist/{chunk-PJH7JUWD.js → chunk-E72VLAJH.js} +3 -3
- package/dist/{chunk-MM7EYJJ3.js → chunk-EAHLB7YN.js} +1 -1
- package/dist/{signal-paths-4GOIRLGH.js → chunk-EIKATSE4.js} +3 -4
- package/dist/{chunk-7I4HQYPL.js → chunk-EZHNCIO5.js} +1 -1
- package/dist/{chunk-Q26VSIXA.js → chunk-FROUDYRT.js} +57 -2
- package/dist/{chunk-CQ2T4A2D.js → chunk-GHARDROH.js} +2 -2
- package/dist/{chunk-C5SALMKH.js → chunk-GMDLNJ5E.js} +6 -6
- package/dist/{chunk-JNUYJRQX.js → chunk-H7FI3AWZ.js} +4 -4
- package/dist/{chunk-DTP4HXM3.js → chunk-HAA4N3NI.js} +2 -2
- package/dist/{chunk-WUF5MYA5.js → chunk-HYNNAM4R.js} +9 -9
- package/dist/{chunk-IPD5ZSOK.js → chunk-I4IMPAZQ.js} +2 -2
- package/dist/{chunk-F3P34OHU.js → chunk-IFXE7QYT.js} +1 -1
- package/dist/{chunk-4XAYC77M.js → chunk-IKFL4OLM.js} +1 -1
- package/dist/{chunk-UQOCHKPX.js → chunk-IKOAALTW.js} +1 -1
- package/dist/{chunk-WL5K3R7W.js → chunk-JTF4UVXK.js} +1 -1
- package/dist/{chunk-V4UKBUUA.js → chunk-KADUJ7PE.js} +3 -3
- package/dist/{chunk-DFSR3UUL.js → chunk-KIXTW4VH.js} +1 -1
- package/dist/chunk-KPIN44GZ.js +67 -0
- package/dist/{chunk-QLVMJGUQ.js → chunk-L5TUAHLX.js} +46 -7
- package/dist/{chunk-JJ2FFUFV.js → chunk-LX2TYKEQ.js} +1 -1
- package/dist/{chunk-ONKIWA3R.js → chunk-ML4S5SHZ.js} +3 -1
- package/dist/{chunk-7XGDTKHX.js → chunk-NLEW62VC.js} +8 -2
- package/dist/{chunk-DRA2FYUQ.js → chunk-NQPAG7CB.js} +3 -3
- package/dist/{chunk-3ZOWUUKR.js → chunk-NW6V3XVK.js} +1 -1
- package/dist/{chunk-LJTXVAG4.js → chunk-PGEADAZL.js} +3 -3
- package/dist/{chunk-VUZRAEF3.js → chunk-QBRBLEXP.js} +284 -38
- package/dist/{chunk-JPTBLJLS.js → chunk-QCWZMS7B.js} +1 -1
- package/dist/{chunk-LRWB35MD.js → chunk-RYJH6S55.js} +1 -1
- package/dist/{chunk-LQWCIW4K.js → chunk-S6XKC36B.js} +1 -1
- package/dist/{chunk-C54QKE4O.js → chunk-SAUO2ZLB.js} +1 -1
- package/dist/{chunk-DZJZAHTB.js → chunk-SE7TU5GX.js} +3 -3
- package/dist/{chunk-NODTWD7N.js → chunk-SSIUJXOL.js} +1 -1
- package/dist/{chunk-2OOCPANV.js → chunk-SXN3TRJ4.js} +80 -40
- package/dist/{chunk-E3WZA2WU.js → chunk-T3OGIK3Y.js} +1 -1
- package/dist/{skill-refinement-OJRBB3LD.js → chunk-U3VSCPGX.js} +3 -11
- package/dist/{chunk-7PUNIH6G.js → chunk-UB322YIG.js} +3 -3
- package/dist/{chunk-C7QYH2YN.js → chunk-UPLY33F7.js} +1 -1
- package/dist/{chunk-PHUKD7VK.js → chunk-UW5QD52P.js} +23 -9
- package/dist/{chunk-FJUQ5L5R.js → chunk-VH345O6X.js} +92 -1
- package/dist/{chunk-C2DFOF7O.js → chunk-VJL2BGX2.js} +1 -1
- package/dist/{chunk-TRXBT24O.js → chunk-VQEZ3ZNK.js} +5 -5
- package/dist/{chunk-KHM3TKOM.js → chunk-W33H7TWW.js} +1 -1
- package/dist/{chunk-YTHZTDXH.js → chunk-W377NZE4.js} +20 -11
- package/dist/{chunk-T5O2EBHU.js → chunk-WCXFNUMD.js} +136 -66
- package/dist/{chunk-IDMIGP53.js → chunk-WRA6OO5V.js} +3 -3
- package/dist/{chunk-MNUFLCHT.js → chunk-WYHCMHTL.js} +3 -3
- package/dist/{chunk-6DTSAEDS.js → chunk-X2K2LHFO.js} +2 -2
- package/dist/{chunk-LWBOSHSS.js → chunk-XK7HAEFC.js} +1485 -585
- package/dist/{chunk-N3ZLLKBN.js → chunk-XYJXJWKH.js} +3 -3
- package/dist/{chunk-GBUFDCLX.js → chunk-YOS4FN26.js} +30 -19
- package/dist/{chunk-HFDFQ7CB.js → chunk-YS7VW7KR.js} +1 -1
- package/dist/{chunk-B2FUBD6Z.js → chunk-YTPNOTUS.js} +198 -39
- package/dist/{chunk-TDV3XEGQ.js → chunk-ZR57QAJ2.js} +1 -1
- package/dist/{chunk-MRB2BXIB.js → chunk-ZU2UK4BC.js} +23 -23
- package/dist/{cleanup-graph-garbage-IXYSUIUH.js → cleanup-graph-garbage-5KI4MSDC.js} +4 -4
- package/dist/{co-activation-BQRXOZN2.js → co-activation-JRDKF2M3.js} +2 -2
- package/dist/{co-occurrence-QPLSUQ4O.js → co-occurrence-JGFIAEKR.js} +2 -2
- package/dist/{code-context-index-NQFP6ED5.js → code-context-index-NODPVXHC.js} +3 -3
- package/dist/{crdt-sync-VLSJH6LL.js → crdt-sync-NOWBFD5N.js} +1 -1
- package/dist/{crm-bridge-BVTB6LZK.js → crm-bridge-CZLEW2LW.js} +1 -1
- package/dist/{crm-webhook-IZYJXHSK.js → crm-webhook-FXSSAHON.js} +2 -2
- package/dist/{cto-delegation-gate-FU4HGNSN.js → cto-delegation-gate-J6DDJFAB.js} +19 -12
- package/dist/{daemon-orchestration-IXSMZXGO.js → daemon-orchestration-HIZMZ2Y5.js} +31 -16
- package/dist/{db-backup-7GJYDSXA.js → db-backup-I5GQBRIG.js} +1 -1
- package/dist/{doc-graph-extractor-U7XGZQ7T.js → doc-graph-extractor-TAZHM63R.js} +2 -2
- package/dist/{documents-U47VG24Q.js → documents-XXOQ5QIJ.js} +10 -10
- package/dist/{dreaming-VBI4BI6R.js → dreaming-V275C7L2.js} +20 -13
- package/dist/{exe-drift-BMSRHAT6.js → exe-drift-VOJZYOIO.js} +3 -3
- package/dist/{exe-export-CIRE2HZA.js → exe-export-EDQDGZV3.js} +6 -6
- package/dist/{exe-import-X6U6VG7Q.js → exe-import-DV7GKBZD.js} +6 -6
- package/dist/{exe-key-7VXVXX4Q.js → exe-key-6SLYWY36.js} +77 -74
- package/dist/{exe-snapshot-P5BLEXQJ.js → exe-snapshot-TDQI34DW.js} +23 -16
- package/dist/{fast-db-init-SMBGFVXM.js → fast-db-init-SNHHRW3L.js} +1 -1
- package/dist/{founder-context-AMMO53S7.js → founder-context-UZVRU4HI.js} +2 -2
- package/dist/gateway/index.js +9 -9
- package/dist/{git-staleness-AJDPXQJF.js → git-staleness-TRCX6FVG.js} +2 -2
- package/dist/{global-procedures-KV2SVX43.js → global-procedures-LH4JG3CR.js} +3 -3
- package/dist/{graph-auto-extract-HFXDXJC3.js → graph-auto-extract-YTXHYR35.js} +2 -2
- package/dist/hooks/bug-report-worker.js +22 -15
- package/dist/hooks/codex-stop-task-finalizer.js +22 -15
- package/dist/hooks/commit-complete.js +22 -15
- package/dist/hooks/error-recall.js +6 -6
- package/dist/hooks/exe-heartbeat-hook.js +3 -3
- package/dist/hooks/ingest-worker.js +6 -6
- package/dist/hooks/ingest.js +6 -6
- package/dist/hooks/instructions-loaded.js +4 -4
- package/dist/hooks/manifest.json +20 -20
- package/dist/hooks/notification.js +4 -4
- package/dist/hooks/post-compact.js +21 -14
- package/dist/hooks/post-tool-combined.js +8 -8
- package/dist/hooks/pre-compact.js +22 -21
- package/dist/hooks/pre-tool-use.js +36 -24
- package/dist/hooks/prompt-submit.js +89 -72
- package/dist/hooks/session-end.js +27 -26
- package/dist/hooks/session-start.js +13 -13
- package/dist/hooks/stop.js +45 -42
- package/dist/hooks/subagent-stop.js +24 -41
- package/dist/hooks/summary-worker.js +27 -25
- package/dist/index.js +31 -24
- package/dist/{installer-MWRZB3RT.js → installer-U7D3PAR5.js} +5 -5
- package/dist/{installer-XLP5MIRG.js → installer-W4SHZFOR.js} +5 -5
- package/dist/{installer-2SY3BEHJ.js → installer-WHO23TIO.js} +5 -5
- package/dist/intercom-queue-2XB622OR.js +53 -0
- package/dist/lib/agent-config.js +13 -1
- package/dist/lib/cloud-sync.js +16 -14
- package/dist/lib/consolidation.js +5 -5
- package/dist/lib/database.js +10 -2
- package/dist/lib/db-daemon-client.js +3 -3
- package/dist/lib/db.js +10 -2
- package/dist/lib/device-registry.js +1 -1
- package/dist/lib/embed-worker.js +28 -0
- package/dist/lib/embedder.js +3 -3
- package/dist/lib/employee-templates.js +4 -4
- package/dist/lib/employees.js +2 -2
- package/dist/lib/exe-daemon-client.js +2 -2
- package/dist/lib/exe-daemon.js +319 -129
- package/dist/lib/hybrid-search.js +5 -5
- package/dist/lib/identity.js +2 -2
- package/dist/lib/license.js +8 -2
- package/dist/lib/messaging.js +20 -13
- package/dist/lib/registry-proxy.js +1 -1
- package/dist/lib/reminders.js +3 -3
- package/dist/lib/schedules.js +5 -5
- package/dist/lib/session-registry.js +4 -4
- package/dist/lib/skill-learning.js +6 -6
- package/dist/lib/status-brief.js +1 -1
- package/dist/lib/store.js +4 -4
- package/dist/lib/task-router.js +3 -3
- package/dist/lib/tasks.js +21 -14
- package/dist/lib/tmux-routing.js +27 -12
- package/dist/lib/token-spend.js +3 -3
- package/dist/{license-gate-PHJLO2G6.js → license-gate-7CYKGRXW.js} +3 -3
- package/dist/license-sync-H4TVZ7PR.js +238 -0
- package/dist/mcp/register-tools.js +74 -71
- package/dist/mcp/server.js +95 -129
- package/dist/mcp/tools/complete-reminder.js +4 -4
- package/dist/mcp/tools/create-reminder.js +4 -4
- package/dist/mcp/tools/create-task.js +37 -18
- package/dist/mcp/tools/deactivate-behavior.js +7 -7
- package/dist/mcp/tools/list-reminders.js +4 -4
- package/dist/mcp/tools/list-tasks.js +23 -16
- package/dist/mcp/tools/send-message.js +22 -15
- package/dist/mcp/tools/update-task.js +22 -15
- package/dist/{mcp-http-config-6Q7SYJFY.js → mcp-http-config-LEBUOECG.js} +3 -3
- package/dist/{memory-cards-IG3K6T7M.js → memory-cards-47XM3VWW.js} +4 -4
- package/dist/{memory-graph-extractor-WZ77ITZ3.js → memory-graph-extractor-COD5E52L.js} +3 -3
- package/dist/{memory-poisoning-defense-YQW6WVPL.js → memory-poisoning-defense-SBYOEXT3.js} +2 -2
- package/dist/{memory-pressure-watchdog-JPCLJAXH.js → memory-pressure-watchdog-T276SDOR.js} +20 -13
- package/dist/{memory-queue-client-W24ZZ6ZF.js → memory-queue-client-IQ52W7W4.js} +3 -3
- package/dist/{memory-reflection-UGK2I2T7.js → memory-reflection-UZK5MHG2.js} +7 -9
- package/dist/{notifications-3MO6HVJM.js → notifications-O5DH4O35.js} +19 -12
- package/dist/{orchestration-events-SKESCF4F.js → orchestration-events-65YDDRF4.js} +3 -3
- package/dist/{orchestrator-SM65YFE2.js → orchestrator-NHMTDGWJ.js} +21 -14
- package/dist/{pipeline-router-UGCC5XSO.js → pipeline-router-2KJQDX5O.js} +3 -3
- package/dist/{plan-limits-RUCNKVRH.js → plan-limits-NQQN5C4S.js} +5 -5
- package/dist/{projection-worker-FBFQ232A.js → projection-worker-IUCBINZH.js} +12 -2
- package/dist/{prospective-memory-X4UQTUC2.js → prospective-memory-U2TISMIW.js} +2 -2
- package/dist/{reranker-FIRW3XMW.js → reranker-D6NSD5A3.js} +1 -1
- package/dist/{retrieval-health-NWYJEIZS.js → retrieval-health-LBNMCYNF.js} +1 -1
- package/dist/{review-polling-HUJMBGUY.js → review-polling-ZJWELHBP.js} +20 -13
- package/dist/runtime/index.js +27 -20
- package/dist/{session-events-UNCFJIK7.js → session-events-GRHFFRZV.js} +20 -13
- package/dist/{session-kill-telemetry-VQ4JWWTI.js → session-kill-telemetry-ALV4KMWS.js} +20 -13
- package/dist/{session-scope-OLSNZJ24.js → session-scope-JB5TBNCX.js} +19 -12
- package/dist/{setup-wizard-X72EV5E2.js → setup-wizard-5STOE3PS.js} +1 -1
- package/dist/signal-paths-4G53QTII.js +11 -0
- package/dist/skill-refinement-JB2LRDLS.js +20 -0
- package/dist/{stack-update-PK2OYYR3.js → stack-update-ZG4YS7WS.js} +9 -3
- package/dist/{steward-gate-5ZWUVNGD.js → steward-gate-TE63SGPL.js} +3 -3
- package/dist/{support-outbox-QPQQK7F7.js → support-outbox-MGUVVGHT.js} +96 -44
- package/dist/sweep-budget-WB2FKPYN.js +64 -0
- package/dist/{task-enforcement-VFFLCP3N.js → task-enforcement-72WZMQGC.js} +191 -17
- package/dist/{task-scope-75JK27V5.js → task-scope-FLDBFGWR.js} +25 -12
- package/dist/{tasks-crud-ADVXVR7D.js → tasks-crud-DKOSSXTD.js} +23 -12
- package/dist/{tasks-notify-NAA6IHHW.js → tasks-notify-WEWKM6B3.js} +20 -13
- package/dist/{tasks-review-5A3JJR6R.js → tasks-review-MHCL7PNP.js} +27 -14
- package/dist/{telemetry-upload-HSXQYSVJ.js → telemetry-upload-K2MZ4O6U.js} +7 -7
- package/dist/{token-budget-GD2VU7N4.js → token-budget-MZZ5DLOH.js} +3 -3
- package/dist/{tool-capability-index-KA2HQ7A4.js → tool-capability-index-M3FUNMFF.js} +1 -1
- package/dist/{tool-telemetry-UQY7GDGE.js → tool-telemetry-ERE5FRVC.js} +1 -1
- package/dist/tui/App.js +27 -20
- package/dist/{tui-data-VYSH7F2K.js → tui-data-JDBTFDAF.js} +19 -12
- package/dist/{worker-gate-DRSX2SOW.js → worker-gate-3OR47E4T.js} +1 -1
- package/dist/{workflow-engine-WFDIVYWP.js → workflow-engine-JLVEE2CI.js} +2 -2
- package/dist/{worktree-LWVPNZ4L.js → worktree-WLPHLZ2S.js} +4 -4
- package/dist/{worktree-sweep-3IZLGYYH.js → worktree-sweep-S6AYDLAQ.js} +5 -5
- package/package.json +3 -3
- package/release-notes.json +91 -56
- package/dist/chunk-4FVVJ7ME.js +0 -193
- package/dist/git-task-sweep-EJ3HEH4Y.js +0 -47
- package/dist/intercom-queue-6M5IRX3Y.js +0 -17
- /package/dist/{chunk-SOIHGU5I.js → chunk-2G75BF5J.js} +0 -0
- /package/dist/{chunk-NOPDNOGQ.js → chunk-6IJ47YFD.js} +0 -0
- /package/dist/{chunk-3YKA5BKT.js → chunk-AI3BK3JD.js} +0 -0
- /package/dist/{chunk-S6N7DLKL.js → chunk-B2ONIFHD.js} +0 -0
- /package/dist/{chunk-HJSMIHEY.js → chunk-FU767JXE.js} +0 -0
- /package/dist/{chunk-53ARJV2L.js → chunk-HWVEDRZA.js} +0 -0
- /package/dist/{chunk-3EZQSPTG.js → chunk-MV5OSOP4.js} +0 -0
- /package/dist/{chunk-7NG77I33.js → chunk-RYZR4NNE.js} +0 -0
- /package/dist/{chunk-UWVAG35C.js → chunk-SSM2JHQ4.js} +0 -0
- /package/dist/{chunk-XRJ3EFEF.js → chunk-TVY65H23.js} +0 -0
- /package/dist/{chunk-4AHV3QBI.js → chunk-VW326Q5R.js} +0 -0
- /package/dist/{core-memory-5HNI2YLS.js → core-memory-4AZ2CSQZ.js} +0 -0
- /package/dist/{entity-boost-AQBUEMJK.js → entity-boost-WV4GGNN2.js} +0 -0
- /package/dist/{message-queue-client-JGOK7POW.js → message-queue-client-JZ7TIOTZ.js} +0 -0
- /package/dist/{oauth-server-NZTPAFQ7.js → oauth-server-LUJ5P2BH.js} +0 -0
- /package/dist/{project-boot-3UP6ETJY.js → project-boot-TOFNGMHM.js} +0 -0
- /package/dist/{wiki-acl-4W4CSCFO.js → wiki-acl-3JA23DH3.js} +0 -0
package/dist/bin/exe-boot.js
CHANGED
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
generateStatusBrief
|
|
4
|
-
} from "../chunk-
|
|
4
|
+
} from "../chunk-5ZNY7IZI.js";
|
|
5
5
|
import {
|
|
6
6
|
DEFAULT_EXE,
|
|
7
7
|
getSessionPrompt
|
|
8
|
-
} from "../chunk-
|
|
9
|
-
import "../chunk-
|
|
8
|
+
} from "../chunk-ZR57QAJ2.js";
|
|
9
|
+
import "../chunk-6UR7C2NX.js";
|
|
10
10
|
import "../chunk-DDKDN4HV.js";
|
|
11
11
|
import {
|
|
12
12
|
initStore
|
|
13
|
-
} from "../chunk-
|
|
13
|
+
} from "../chunk-UW5QD52P.js";
|
|
14
14
|
import "../chunk-CHCA3ZM2.js";
|
|
15
15
|
import "../chunk-OTVEIJUQ.js";
|
|
16
|
-
import "../chunk-
|
|
16
|
+
import "../chunk-6IJ47YFD.js";
|
|
17
17
|
import {
|
|
18
18
|
cleanupSessionMarkers,
|
|
19
19
|
writeActiveAgent
|
|
20
|
-
} from "../chunk-
|
|
20
|
+
} from "../chunk-5ZQMGI3V.js";
|
|
21
21
|
import "../chunk-Y25OJWOQ.js";
|
|
22
22
|
import {
|
|
23
23
|
cleanupOldNotifications,
|
|
@@ -29,25 +29,32 @@ import {
|
|
|
29
29
|
resolveExeSession,
|
|
30
30
|
sessionScopeFilter,
|
|
31
31
|
updateTaskStatus
|
|
32
|
-
} from "../chunk-
|
|
33
|
-
import "../chunk-
|
|
34
|
-
import "../chunk-
|
|
35
|
-
import "../chunk-
|
|
32
|
+
} from "../chunk-XK7HAEFC.js";
|
|
33
|
+
import "../chunk-3LZILUET.js";
|
|
34
|
+
import "../chunk-BKOGHVRO.js";
|
|
35
|
+
import "../chunk-U3VSCPGX.js";
|
|
36
|
+
import "../chunk-EIKATSE4.js";
|
|
36
37
|
import "../chunk-E23LNUWJ.js";
|
|
37
38
|
import "../chunk-4JERP7NT.js";
|
|
38
39
|
import {
|
|
39
40
|
pruneStaleSessions,
|
|
40
41
|
registerSession
|
|
41
|
-
} from "../chunk-
|
|
42
|
+
} from "../chunk-3CT3GN2B.js";
|
|
42
43
|
import "../chunk-SSTLTIF3.js";
|
|
43
44
|
import "../chunk-RMOBQ6A5.js";
|
|
44
45
|
import "../chunk-54QCG45Y.js";
|
|
45
|
-
import "../chunk-
|
|
46
|
-
import "../chunk-
|
|
46
|
+
import "../chunk-364VBQIC.js";
|
|
47
|
+
import "../chunk-FROUDYRT.js";
|
|
47
48
|
import "../chunk-NGP6LSV2.js";
|
|
48
|
-
import "../chunk-
|
|
49
|
+
import "../chunk-GHARDROH.js";
|
|
49
50
|
import "../chunk-CVYC6DUW.js";
|
|
51
|
+
import "../chunk-W33H7TWW.js";
|
|
52
|
+
import "../chunk-HCJCW7X4.js";
|
|
50
53
|
import "../chunk-OPU3NYOO.js";
|
|
54
|
+
import "../chunk-UPLY33F7.js";
|
|
55
|
+
import "../chunk-AFNRE2RV.js";
|
|
56
|
+
import "../chunk-3NGZ4PL7.js";
|
|
57
|
+
import "../chunk-NLEW62VC.js";
|
|
51
58
|
import "../chunk-HYZV25LY.js";
|
|
52
59
|
import "../chunk-GJV3WDWM.js";
|
|
53
60
|
import "../chunk-MP2AFCGL.js";
|
|
@@ -58,17 +65,17 @@ import {
|
|
|
58
65
|
isCoordinatorName,
|
|
59
66
|
loadEmployees,
|
|
60
67
|
saveEmployees
|
|
61
|
-
} from "../chunk-
|
|
68
|
+
} from "../chunk-46AMZT3C.js";
|
|
62
69
|
import "../chunk-2I23RPSI.js";
|
|
63
|
-
import "../chunk-
|
|
70
|
+
import "../chunk-MV5OSOP4.js";
|
|
64
71
|
import "../chunk-PNQDP3OA.js";
|
|
65
72
|
import "../chunk-H73TUI4Y.js";
|
|
66
73
|
import "../chunk-7HLWBYH7.js";
|
|
67
74
|
import "../chunk-FXU7JOXK.js";
|
|
68
75
|
import "../chunk-TPHCZDE3.js";
|
|
69
76
|
import "../chunk-Z42MXYWW.js";
|
|
70
|
-
import "../chunk-
|
|
71
|
-
import "../chunk-
|
|
77
|
+
import "../chunk-L5TUAHLX.js";
|
|
78
|
+
import "../chunk-RYZR4NNE.js";
|
|
72
79
|
import {
|
|
73
80
|
EXE_AI_DIR,
|
|
74
81
|
loadConfig,
|
|
@@ -119,7 +126,7 @@ async function boot(options) {
|
|
|
119
126
|
const coordinatorEmployee = getCoordinatorEmployee(employees) ?? DEFAULT_EXE;
|
|
120
127
|
const coordinatorName = coordinatorEmployee.name;
|
|
121
128
|
try {
|
|
122
|
-
const { fastDbInit } = await import("../fast-db-init-
|
|
129
|
+
const { fastDbInit } = await import("../fast-db-init-SNHHRW3L.js");
|
|
123
130
|
await fastDbInit();
|
|
124
131
|
} catch {
|
|
125
132
|
await initStore();
|
|
@@ -128,17 +135,41 @@ async function boot(options) {
|
|
|
128
135
|
writeActiveAgent(coordinatorName, coordinatorEmployee.role);
|
|
129
136
|
let licensePlan;
|
|
130
137
|
let employeeLimit;
|
|
138
|
+
let planChangeNotice;
|
|
131
139
|
try {
|
|
132
|
-
const { checkLicense, loadLicense } = await import("../lib/license.js");
|
|
140
|
+
const { checkLicense, loadLicense, refreshLicense, buildPlanChangeNotice, getLicenseCacheAgeMs } = await import("../lib/license.js");
|
|
133
141
|
const hasKey = !!loadLicense();
|
|
134
142
|
if (hasKey) {
|
|
135
|
-
const
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
143
|
+
const BOOT_RECHECK_STALE_MS = 10 * 60 * 1e3;
|
|
144
|
+
const cacheAge = getLicenseCacheAgeMs();
|
|
145
|
+
const stale = cacheAge === null || cacheAge > BOOT_RECHECK_STALE_MS;
|
|
146
|
+
const raced = stale ? await Promise.race([
|
|
147
|
+
refreshLicense({ timeoutMs: 2500 }).catch(() => null),
|
|
148
|
+
new Promise((resolve) => {
|
|
149
|
+
const t = setTimeout(() => resolve(null), 3e3);
|
|
150
|
+
if (typeof t === "object" && "unref" in t) t.unref();
|
|
151
|
+
})
|
|
152
|
+
]) : null;
|
|
153
|
+
if (raced && raced.reachedCloud) {
|
|
154
|
+
licensePlan = raced.license.plan;
|
|
155
|
+
employeeLimit = raced.license.employeeLimit;
|
|
156
|
+
if (raced.changed && raced.oldPlan) {
|
|
157
|
+
planChangeNotice = buildPlanChangeNotice(raced.oldPlan, raced.license);
|
|
158
|
+
}
|
|
159
|
+
if (!raced.license.valid) {
|
|
160
|
+
process.stderr.write(
|
|
161
|
+
"\u26A0 License key present but not valid. Check plan status at https://askexe.com.\n"
|
|
162
|
+
);
|
|
163
|
+
}
|
|
164
|
+
} else {
|
|
165
|
+
const license = await checkLicense();
|
|
166
|
+
licensePlan = license.plan;
|
|
167
|
+
employeeLimit = license.employeeLimit;
|
|
168
|
+
if (!license.valid) {
|
|
169
|
+
process.stderr.write(
|
|
170
|
+
"\u26A0 License key present but not valid. Check plan status at https://askexe.com.\n"
|
|
171
|
+
);
|
|
172
|
+
}
|
|
142
173
|
}
|
|
143
174
|
} else {
|
|
144
175
|
licensePlan = "free";
|
|
@@ -173,7 +204,8 @@ async function boot(options) {
|
|
|
173
204
|
cloudConnected: false,
|
|
174
205
|
exeSession: resolveExeSession() ?? void 0,
|
|
175
206
|
plan: licensePlan,
|
|
176
|
-
employeeLimit
|
|
207
|
+
employeeLimit,
|
|
208
|
+
planChangeNotice
|
|
177
209
|
};
|
|
178
210
|
try {
|
|
179
211
|
const config = await loadConfig();
|
|
@@ -986,9 +1018,11 @@ async function boot(options) {
|
|
|
986
1018
|
const { loadConfigSync: loadCfgForEmbed } = await import("../lib/config.js");
|
|
987
1019
|
const embedCfg = loadCfgForEmbed();
|
|
988
1020
|
const embeddingsOn = resolveEmbed(process.env.EXE_EMBEDDINGS, embedCfg);
|
|
989
|
-
|
|
1021
|
+
const { backfillKillSwitchEnabled, countActionableNullVectors } = await import("../backfill-gate-J7UXFNXU.js");
|
|
1022
|
+
const actionableNullCount = nullCount > 0 ? await countActionableNullVectors(client) : 0;
|
|
1023
|
+
if (actionableNullCount > 0 && embeddingsOn && !backfillKillSwitchEnabled()) {
|
|
990
1024
|
try {
|
|
991
|
-
const { tryAcquireWorkerSlot, registerWorkerPid } = await import("../worker-gate-
|
|
1025
|
+
const { tryAcquireWorkerSlot, registerWorkerPid } = await import("../worker-gate-3OR47E4T.js");
|
|
992
1026
|
if (!tryAcquireWorkerSlot()) {
|
|
993
1027
|
process.stderr.write("[exe-boot] Backfill needed but worker gate full \u2014 skipping\n");
|
|
994
1028
|
} else {
|
|
@@ -1095,7 +1129,7 @@ async function boot(options) {
|
|
|
1095
1129
|
} catch {
|
|
1096
1130
|
}
|
|
1097
1131
|
try {
|
|
1098
|
-
const { countKillsSince } = await import("../session-kill-telemetry-
|
|
1132
|
+
const { countKillsSince } = await import("../session-kill-telemetry-ALV4KMWS.js");
|
|
1099
1133
|
const { listSessions: listRegistrySessions } = await import("../lib/session-registry.js");
|
|
1100
1134
|
const todayStart = /* @__PURE__ */ new Date();
|
|
1101
1135
|
todayStart.setHours(0, 0, 0, 0);
|
|
@@ -1193,7 +1227,7 @@ async function updateIdleKillSuspectStreak(client, killsToday, liveSessions, tod
|
|
|
1193
1227
|
IDLE_KILL_STREAK_META_KEY,
|
|
1194
1228
|
computeIdleKillSuspectStreak,
|
|
1195
1229
|
parseStreakState
|
|
1196
|
-
} = await import("../session-kill-telemetry-
|
|
1230
|
+
} = await import("../session-kill-telemetry-ALV4KMWS.js");
|
|
1197
1231
|
const prevResult = await client.execute({
|
|
1198
1232
|
sql: "SELECT value FROM sync_meta WHERE key = ?",
|
|
1199
1233
|
args: [IDLE_KILL_STREAK_META_KEY]
|
package/dist/bin/exe-call.js
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
getSessionPrompt
|
|
4
|
-
} from "../chunk-
|
|
5
|
-
import "../chunk-
|
|
4
|
+
} from "../chunk-ZR57QAJ2.js";
|
|
5
|
+
import "../chunk-6UR7C2NX.js";
|
|
6
6
|
import "../chunk-DDKDN4HV.js";
|
|
7
7
|
import {
|
|
8
8
|
DEFAULT_COORDINATOR_TEMPLATE_NAME,
|
|
9
9
|
getCoordinatorName,
|
|
10
10
|
getEmployee,
|
|
11
11
|
loadEmployees
|
|
12
|
-
} from "../chunk-
|
|
12
|
+
} from "../chunk-46AMZT3C.js";
|
|
13
13
|
import "../chunk-2I23RPSI.js";
|
|
14
|
-
import "../chunk-
|
|
14
|
+
import "../chunk-MV5OSOP4.js";
|
|
15
15
|
import "../chunk-PNQDP3OA.js";
|
|
16
16
|
import "../chunk-H73TUI4Y.js";
|
|
17
17
|
import "../chunk-7HLWBYH7.js";
|
package/dist/bin/exe-cloud.js
CHANGED
|
@@ -6,25 +6,25 @@ import {
|
|
|
6
6
|
} from "../chunk-6KFICEAT.js";
|
|
7
7
|
import {
|
|
8
8
|
assertSecureEndpoint
|
|
9
|
-
} from "../chunk-
|
|
10
|
-
import "../chunk-
|
|
11
|
-
import "../chunk-
|
|
9
|
+
} from "../chunk-WCXFNUMD.js";
|
|
10
|
+
import "../chunk-AI3BK3JD.js";
|
|
11
|
+
import "../chunk-A2K7YIRL.js";
|
|
12
12
|
import "../chunk-LO6L5ADL.js";
|
|
13
|
-
import "../chunk-
|
|
13
|
+
import "../chunk-S6XKC36B.js";
|
|
14
14
|
import "../chunk-QGGH7LOU.js";
|
|
15
|
-
import "../chunk-
|
|
16
|
-
import "../chunk-AFNRE2RV.js";
|
|
17
|
-
import "../chunk-3NGZ4PL7.js";
|
|
18
|
-
import "../chunk-7XGDTKHX.js";
|
|
19
|
-
import "../chunk-PHUKD7VK.js";
|
|
15
|
+
import "../chunk-UW5QD52P.js";
|
|
20
16
|
import "../chunk-CHCA3ZM2.js";
|
|
21
17
|
import "../chunk-OTVEIJUQ.js";
|
|
22
|
-
import "../chunk-
|
|
18
|
+
import "../chunk-6IJ47YFD.js";
|
|
23
19
|
import "../chunk-Y25OJWOQ.js";
|
|
20
|
+
import "../chunk-UPLY33F7.js";
|
|
21
|
+
import "../chunk-AFNRE2RV.js";
|
|
22
|
+
import "../chunk-3NGZ4PL7.js";
|
|
23
|
+
import "../chunk-NLEW62VC.js";
|
|
24
24
|
import "../chunk-MP2AFCGL.js";
|
|
25
|
-
import "../chunk-
|
|
25
|
+
import "../chunk-46AMZT3C.js";
|
|
26
26
|
import "../chunk-2I23RPSI.js";
|
|
27
|
-
import "../chunk-
|
|
27
|
+
import "../chunk-MV5OSOP4.js";
|
|
28
28
|
import "../chunk-PNQDP3OA.js";
|
|
29
29
|
import "../chunk-H73TUI4Y.js";
|
|
30
30
|
import "../chunk-7HLWBYH7.js";
|
|
@@ -36,8 +36,8 @@ import {
|
|
|
36
36
|
importMnemonic,
|
|
37
37
|
setMasterKey
|
|
38
38
|
} from "../chunk-Z42MXYWW.js";
|
|
39
|
-
import "../chunk-
|
|
40
|
-
import "../chunk-
|
|
39
|
+
import "../chunk-L5TUAHLX.js";
|
|
40
|
+
import "../chunk-RYZR4NNE.js";
|
|
41
41
|
import {
|
|
42
42
|
loadConfig,
|
|
43
43
|
saveConfig
|
|
@@ -51,6 +51,67 @@ import "../chunk-MLKGABMK.js";
|
|
|
51
51
|
// src/bin/exe-cloud.ts
|
|
52
52
|
import { createInterface } from "readline";
|
|
53
53
|
var BAR = "\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550";
|
|
54
|
+
var CLOUD_HTTP_TIMEOUT_MS = 1e4;
|
|
55
|
+
var CLOUD_SYNC_TIMEOUT_MS = Number(process.env.EXE_CLOUD_SYNC_TIMEOUT_MS ?? 6e5);
|
|
56
|
+
var LOCAL_INIT_TIMEOUT_MS = 3e4;
|
|
57
|
+
var STATUS_GATHER_TIMEOUT_MS = 15e3;
|
|
58
|
+
function timeoutError(label, ms) {
|
|
59
|
+
return new Error(
|
|
60
|
+
`${label} did not finish within ${Math.round(ms / 1e3)}s \u2014 the cloud service may be unreachable or down. Check your network and https://api.askexe.com/health, then try again.`
|
|
61
|
+
);
|
|
62
|
+
}
|
|
63
|
+
async function withTimeout(promise, ms, label) {
|
|
64
|
+
let timer;
|
|
65
|
+
try {
|
|
66
|
+
return await Promise.race([
|
|
67
|
+
promise,
|
|
68
|
+
new Promise((_, reject) => {
|
|
69
|
+
timer = setTimeout(() => reject(timeoutError(label, ms)), ms);
|
|
70
|
+
})
|
|
71
|
+
]);
|
|
72
|
+
} finally {
|
|
73
|
+
if (timer) clearTimeout(timer);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
async function fetchWithTimeout(url, init = {}, timeoutMs = CLOUD_HTTP_TIMEOUT_MS) {
|
|
77
|
+
try {
|
|
78
|
+
return await fetch(url, { ...init, signal: AbortSignal.timeout(timeoutMs) });
|
|
79
|
+
} catch (err) {
|
|
80
|
+
if (err instanceof Error && (err.name === "TimeoutError" || err.name === "AbortError")) {
|
|
81
|
+
throw timeoutError(`Request to ${url}`, timeoutMs);
|
|
82
|
+
}
|
|
83
|
+
throw err;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
async function assertCloudSyncReachable(endpoint) {
|
|
87
|
+
const healthUrl = `${endpoint.replace(/\/+$/, "")}/health`;
|
|
88
|
+
let resp;
|
|
89
|
+
try {
|
|
90
|
+
resp = await fetchWithTimeout(healthUrl, {}, CLOUD_HTTP_TIMEOUT_MS);
|
|
91
|
+
} catch (err) {
|
|
92
|
+
throw new Error(
|
|
93
|
+
`Cloud service unreachable at ${endpoint}: ${err instanceof Error ? err.message : String(err)}`
|
|
94
|
+
);
|
|
95
|
+
}
|
|
96
|
+
if (!resp.ok) {
|
|
97
|
+
try {
|
|
98
|
+
await resp.text();
|
|
99
|
+
} catch {
|
|
100
|
+
}
|
|
101
|
+
throw new Error(`Cloud service unhealthy at ${healthUrl} (HTTP ${resp.status}). Try again later.`);
|
|
102
|
+
}
|
|
103
|
+
let cloudSyncState = "";
|
|
104
|
+
try {
|
|
105
|
+
const health = await resp.json();
|
|
106
|
+
if (typeof health.cloud_sync === "string") cloudSyncState = health.cloud_sync;
|
|
107
|
+
} catch {
|
|
108
|
+
}
|
|
109
|
+
if (cloudSyncState && cloudSyncState !== "ok" && !cloudSyncState.startsWith("ok")) {
|
|
110
|
+
throw new Error(
|
|
111
|
+
`The Exe Cloud sync backend is down (gateway /health reports cloud_sync: "${cloudSyncState}"). This is a service-side outage \u2014 nothing to fix on this machine. Try again later.`
|
|
112
|
+
);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
54
115
|
function isInteractiveTerminal() {
|
|
55
116
|
return Boolean(process.stdin.isTTY && process.stdout.isTTY && !process.env.CI);
|
|
56
117
|
}
|
|
@@ -76,17 +137,19 @@ function shouldRunRelinkMutation(options) {
|
|
|
76
137
|
});
|
|
77
138
|
}
|
|
78
139
|
async function runCloudSyncOnce() {
|
|
79
|
-
const { initStore } = await import("../lib/store.js");
|
|
80
|
-
await initStore({ lightweight: true });
|
|
81
140
|
const config = await loadConfig();
|
|
82
141
|
if (!config.cloud?.apiKey) throw new Error("Cloud sync is not configured. Run exe-os cloud setup first.");
|
|
142
|
+
assertSecureEndpoint(config.cloud.endpoint);
|
|
143
|
+
await assertCloudSyncReachable(config.cloud.endpoint);
|
|
144
|
+
const { initStore } = await import("../lib/store.js");
|
|
145
|
+
await withTimeout(initStore({ lightweight: true }), LOCAL_INIT_TIMEOUT_MS, "Opening the local memory store");
|
|
83
146
|
const { cloudSync } = await import("../lib/cloud-sync.js");
|
|
84
147
|
const { getMasterKey: getMasterKey2 } = await import("../lib/keychain.js");
|
|
85
148
|
const { initSyncCrypto } = await import("../lib/crypto.js");
|
|
86
149
|
const masterKey = await getMasterKey2();
|
|
87
150
|
if (!masterKey) throw new Error("No encryption key found. Run exe-os setup first.");
|
|
88
151
|
initSyncCrypto(masterKey);
|
|
89
|
-
return cloudSync(config.cloud);
|
|
152
|
+
return withTimeout(cloudSync(config.cloud), CLOUD_SYNC_TIMEOUT_MS, "Cloud sync");
|
|
90
153
|
}
|
|
91
154
|
async function disposeCloudCliResources() {
|
|
92
155
|
try {
|
|
@@ -147,7 +210,7 @@ async function setupMode() {
|
|
|
147
210
|
const authTokenHash = hashAuthToken(deriveWsAuthToken(masterKey));
|
|
148
211
|
try {
|
|
149
212
|
assertSecureEndpoint(config.cloud.endpoint);
|
|
150
|
-
const regResp = await
|
|
213
|
+
const regResp = await fetchWithTimeout(`${config.cloud.endpoint}/api/register-org`, {
|
|
151
214
|
method: "POST",
|
|
152
215
|
headers: { Authorization: `Bearer ${config.cloud.apiKey}`, "Content-Type": "application/json" },
|
|
153
216
|
body: JSON.stringify({ orgId, authTokenHash })
|
|
@@ -169,7 +232,7 @@ async function setupMode() {
|
|
|
169
232
|
console.log(" Validating...");
|
|
170
233
|
try {
|
|
171
234
|
assertSecureEndpoint(endpoint);
|
|
172
|
-
const resp = await
|
|
235
|
+
const resp = await fetchWithTimeout(`${endpoint}/auth/verify`, {
|
|
173
236
|
headers: { Authorization: `Bearer ${apiKey}` }
|
|
174
237
|
});
|
|
175
238
|
if (resp.ok) {
|
|
@@ -189,7 +252,7 @@ async function setupMode() {
|
|
|
189
252
|
const authTokenHash = hashAuthToken(deriveWsAuthToken(masterKey));
|
|
190
253
|
try {
|
|
191
254
|
assertSecureEndpoint(endpoint);
|
|
192
|
-
const regResp = await
|
|
255
|
+
const regResp = await fetchWithTimeout(`${endpoint}/api/register-org`, {
|
|
193
256
|
method: "POST",
|
|
194
257
|
headers: { Authorization: `Bearer ${apiKey}`, "Content-Type": "application/json" },
|
|
195
258
|
body: JSON.stringify({ orgId, authTokenHash })
|
|
@@ -292,6 +355,10 @@ async function linkMode() {
|
|
|
292
355
|
console.log(BAR);
|
|
293
356
|
}
|
|
294
357
|
async function statusMode() {
|
|
358
|
+
console.log(BAR);
|
|
359
|
+
console.log(" EXE CLOUD STATUS");
|
|
360
|
+
console.log(BAR);
|
|
361
|
+
console.log("");
|
|
295
362
|
const key = await getMasterKey();
|
|
296
363
|
const config = await loadConfig();
|
|
297
364
|
let reuploadRequired = false;
|
|
@@ -300,36 +367,40 @@ async function statusMode() {
|
|
|
300
367
|
let pendingMemoryCount = 0;
|
|
301
368
|
let lastPullVersion = 0;
|
|
302
369
|
let cloudReuploadedAt = null;
|
|
370
|
+
let localStateNote = null;
|
|
303
371
|
try {
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
const
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
372
|
+
await withTimeout((async () => {
|
|
373
|
+
const { initStore } = await import("../lib/store.js");
|
|
374
|
+
const { getClient } = await import("../lib/database.js");
|
|
375
|
+
const { getCloudReuploadRequired } = await import("../lib/cloud-sync.js");
|
|
376
|
+
await initStore({ lightweight: true });
|
|
377
|
+
const client = getClient();
|
|
378
|
+
reuploadRequired = await getCloudReuploadRequired(client);
|
|
379
|
+
const maxVersion = await client.execute("SELECT COALESCE(MAX(version), 0) as version FROM memories WHERE scope IS NULL OR scope != 'personal'");
|
|
380
|
+
localMemoryVersion = Number(maxVersion.rows[0]?.version ?? 0);
|
|
381
|
+
const meta = await client.execute("SELECT key, value FROM sync_meta WHERE key IN ('last_cloud_push_version', 'last_cloud_pull_version', 'cloud_reuploaded_at', 'cloud_relinked_at')");
|
|
382
|
+
for (const row of meta.rows) {
|
|
383
|
+
const keyName = String(row.key ?? "");
|
|
384
|
+
const value = String(row.value ?? "");
|
|
385
|
+
if (keyName === "last_cloud_push_version") lastPushedMemoryVersion = Number(value || 0);
|
|
386
|
+
if (keyName === "last_cloud_pull_version") lastPullVersion = Number(value || 0);
|
|
387
|
+
if (keyName === "cloud_reuploaded_at" || keyName === "cloud_relinked_at") cloudReuploadedAt = value;
|
|
388
|
+
}
|
|
389
|
+
const pending = await client.execute({
|
|
390
|
+
sql: "SELECT COUNT(*) as cnt FROM memories WHERE (scope IS NULL OR scope != 'personal') AND version > ?",
|
|
391
|
+
args: [lastPushedMemoryVersion]
|
|
392
|
+
});
|
|
393
|
+
pendingMemoryCount = Number(pending.rows[0]?.cnt ?? 0);
|
|
394
|
+
})(), STATUS_GATHER_TIMEOUT_MS, "Reading local sync state");
|
|
395
|
+
} catch (err) {
|
|
396
|
+
localStateNote = err instanceof Error ? err.message : String(err);
|
|
326
397
|
} finally {
|
|
327
398
|
await disposeCloudCliResources();
|
|
328
399
|
}
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
400
|
+
if (localStateNote) {
|
|
401
|
+
console.log(` \u26A0 Local sync state unavailable: ${localStateNote}`);
|
|
402
|
+
console.log("");
|
|
403
|
+
}
|
|
333
404
|
if (key) {
|
|
334
405
|
const fingerprint = key.toString("hex").slice(0, 8);
|
|
335
406
|
let storageNote = "";
|
|
@@ -516,7 +587,9 @@ if (isMainModule(import.meta.url) && process.argv[1]?.includes("exe-cloud")) {
|
|
|
516
587
|
});
|
|
517
588
|
}
|
|
518
589
|
export {
|
|
590
|
+
assertCloudSyncReachable,
|
|
519
591
|
main,
|
|
520
592
|
shouldRunRelinkMutation,
|
|
521
|
-
shouldRunReuploadMutation
|
|
593
|
+
shouldRunReuploadMutation,
|
|
594
|
+
withTimeout
|
|
522
595
|
};
|
|
@@ -6,16 +6,16 @@ import {
|
|
|
6
6
|
import {
|
|
7
7
|
AGENT_CONFIG_PATH,
|
|
8
8
|
loadAgentConfig
|
|
9
|
-
} from "../chunk-
|
|
9
|
+
} from "../chunk-FROUDYRT.js";
|
|
10
10
|
import {
|
|
11
11
|
DEFAULT_RUNTIME
|
|
12
12
|
} from "../chunk-NGP6LSV2.js";
|
|
13
13
|
import {
|
|
14
14
|
EMPLOYEES_PATH,
|
|
15
15
|
loadEmployeesSync
|
|
16
|
-
} from "../chunk-
|
|
16
|
+
} from "../chunk-46AMZT3C.js";
|
|
17
17
|
import "../chunk-2I23RPSI.js";
|
|
18
|
-
import "../chunk-
|
|
18
|
+
import "../chunk-MV5OSOP4.js";
|
|
19
19
|
import "../chunk-PNQDP3OA.js";
|
|
20
20
|
import "../chunk-H73TUI4Y.js";
|
|
21
21
|
import "../chunk-7HLWBYH7.js";
|
package/dist/bin/exe-dispatch.js
CHANGED
|
@@ -1,41 +1,51 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
fastDbInit
|
|
4
|
-
} from "../chunk-
|
|
4
|
+
} from "../chunk-HWVEDRZA.js";
|
|
5
5
|
import {
|
|
6
6
|
createTaskCore,
|
|
7
7
|
ensureEmployee,
|
|
8
8
|
resolveExeSession
|
|
9
|
-
} from "../chunk-
|
|
10
|
-
import "../chunk-
|
|
11
|
-
import "../chunk-
|
|
12
|
-
import "../chunk-
|
|
9
|
+
} from "../chunk-XK7HAEFC.js";
|
|
10
|
+
import "../chunk-3LZILUET.js";
|
|
11
|
+
import "../chunk-BKOGHVRO.js";
|
|
12
|
+
import "../chunk-U3VSCPGX.js";
|
|
13
|
+
import "../chunk-EIKATSE4.js";
|
|
13
14
|
import "../chunk-E23LNUWJ.js";
|
|
14
15
|
import "../chunk-4JERP7NT.js";
|
|
15
|
-
import "../chunk-
|
|
16
|
+
import "../chunk-3CT3GN2B.js";
|
|
16
17
|
import "../chunk-SSTLTIF3.js";
|
|
17
18
|
import "../chunk-RMOBQ6A5.js";
|
|
18
19
|
import "../chunk-54QCG45Y.js";
|
|
19
|
-
import "../chunk-
|
|
20
|
-
import "../chunk-
|
|
20
|
+
import "../chunk-364VBQIC.js";
|
|
21
|
+
import "../chunk-FROUDYRT.js";
|
|
21
22
|
import "../chunk-NGP6LSV2.js";
|
|
22
|
-
import "../chunk-
|
|
23
|
+
import "../chunk-GHARDROH.js";
|
|
23
24
|
import "../chunk-CVYC6DUW.js";
|
|
25
|
+
import "../chunk-W33H7TWW.js";
|
|
26
|
+
import "../chunk-HCJCW7X4.js";
|
|
24
27
|
import "../chunk-OPU3NYOO.js";
|
|
28
|
+
import "../chunk-UPLY33F7.js";
|
|
29
|
+
import "../chunk-AFNRE2RV.js";
|
|
30
|
+
import "../chunk-3NGZ4PL7.js";
|
|
31
|
+
import "../chunk-NLEW62VC.js";
|
|
25
32
|
import "../chunk-HYZV25LY.js";
|
|
26
33
|
import "../chunk-GJV3WDWM.js";
|
|
27
34
|
import "../chunk-MP2AFCGL.js";
|
|
28
35
|
import {
|
|
29
|
-
getCoordinatorName
|
|
30
|
-
|
|
36
|
+
getCoordinatorName,
|
|
37
|
+
getEmployee,
|
|
38
|
+
isCoordinatorName,
|
|
39
|
+
loadEmployeesSync
|
|
40
|
+
} from "../chunk-46AMZT3C.js";
|
|
31
41
|
import "../chunk-2I23RPSI.js";
|
|
32
|
-
import "../chunk-
|
|
42
|
+
import "../chunk-MV5OSOP4.js";
|
|
33
43
|
import "../chunk-PNQDP3OA.js";
|
|
34
44
|
import "../chunk-H73TUI4Y.js";
|
|
35
45
|
import "../chunk-7HLWBYH7.js";
|
|
36
46
|
import "../chunk-FXU7JOXK.js";
|
|
37
|
-
import "../chunk-
|
|
38
|
-
import "../chunk-
|
|
47
|
+
import "../chunk-L5TUAHLX.js";
|
|
48
|
+
import "../chunk-RYZR4NNE.js";
|
|
39
49
|
import "../chunk-7Y5UDEVM.js";
|
|
40
50
|
import "../chunk-SHIICYJW.js";
|
|
41
51
|
import "../chunk-MLKGABMK.js";
|
|
@@ -46,6 +56,30 @@ if (!employeeName) {
|
|
|
46
56
|
console.error("Usage: exe-dispatch <employeeName> [projectDir]");
|
|
47
57
|
process.exit(1);
|
|
48
58
|
}
|
|
59
|
+
{
|
|
60
|
+
const normalized = employeeName.toLowerCase();
|
|
61
|
+
const roster = loadEmployeesSync();
|
|
62
|
+
const known = getEmployee(roster, normalized) !== void 0;
|
|
63
|
+
const isCoordinator = isCoordinatorName(normalized);
|
|
64
|
+
if (isCoordinator) {
|
|
65
|
+
console.log(JSON.stringify({
|
|
66
|
+
status: "failed",
|
|
67
|
+
sessionName: "",
|
|
68
|
+
error: `"${employeeName}" is the coordinator, not a dispatchable employee.`
|
|
69
|
+
}));
|
|
70
|
+
process.exit(1);
|
|
71
|
+
}
|
|
72
|
+
if (!known) {
|
|
73
|
+
const names = roster.map((e) => e.name).sort();
|
|
74
|
+
const hint = names.length > 0 ? ` Known employees: ${names.join(", ")}.` : "";
|
|
75
|
+
console.log(JSON.stringify({
|
|
76
|
+
status: "failed",
|
|
77
|
+
sessionName: "",
|
|
78
|
+
error: `Unknown employee "${employeeName}" \u2014 not in the roster (exe-employees.json). Pass an employee NAME (e.g. "tom"), not a task id or session name.${hint} Usage: exe-dispatch <employeeName> [projectDir]`
|
|
79
|
+
}));
|
|
80
|
+
process.exit(1);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
49
83
|
var projectDir = process.argv[3] || process.cwd();
|
|
50
84
|
var exeSession = resolveExeSession();
|
|
51
85
|
if (!exeSession) {
|
package/dist/bin/exe-doctor.js
CHANGED
|
@@ -23,15 +23,15 @@ import {
|
|
|
23
23
|
runAudit,
|
|
24
24
|
shouldFixShards,
|
|
25
25
|
splitAtSentences
|
|
26
|
-
} from "../chunk-
|
|
27
|
-
import "../chunk-
|
|
26
|
+
} from "../chunk-GMDLNJ5E.js";
|
|
27
|
+
import "../chunk-VW326Q5R.js";
|
|
28
28
|
import "../chunk-KQ4Z2G24.js";
|
|
29
29
|
import "../chunk-L3TB7CC3.js";
|
|
30
30
|
import "../chunk-PROQW3NL.js";
|
|
31
31
|
import "../chunk-OTVEIJUQ.js";
|
|
32
|
-
import "../chunk-
|
|
32
|
+
import "../chunk-46AMZT3C.js";
|
|
33
33
|
import "../chunk-2I23RPSI.js";
|
|
34
|
-
import "../chunk-
|
|
34
|
+
import "../chunk-MV5OSOP4.js";
|
|
35
35
|
import "../chunk-PNQDP3OA.js";
|
|
36
36
|
import "../chunk-H73TUI4Y.js";
|
|
37
37
|
import "../chunk-7HLWBYH7.js";
|
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
exportBehaviorsForAgent
|
|
4
|
-
} from "../chunk-
|
|
5
|
-
import "../chunk-
|
|
4
|
+
} from "../chunk-A6ODMODG.js";
|
|
5
|
+
import "../chunk-A2K7YIRL.js";
|
|
6
6
|
import {
|
|
7
7
|
fastDbInit
|
|
8
|
-
} from "../chunk-
|
|
8
|
+
} from "../chunk-HWVEDRZA.js";
|
|
9
9
|
import {
|
|
10
10
|
disposeStore
|
|
11
|
-
} from "../chunk-
|
|
11
|
+
} from "../chunk-UW5QD52P.js";
|
|
12
12
|
import "../chunk-CHCA3ZM2.js";
|
|
13
13
|
import "../chunk-OTVEIJUQ.js";
|
|
14
|
-
import "../chunk-
|
|
14
|
+
import "../chunk-6IJ47YFD.js";
|
|
15
15
|
import "../chunk-Y25OJWOQ.js";
|
|
16
16
|
import "../chunk-MP2AFCGL.js";
|
|
17
|
-
import "../chunk-
|
|
17
|
+
import "../chunk-46AMZT3C.js";
|
|
18
18
|
import "../chunk-2I23RPSI.js";
|
|
19
|
-
import "../chunk-
|
|
19
|
+
import "../chunk-MV5OSOP4.js";
|
|
20
20
|
import "../chunk-PNQDP3OA.js";
|
|
21
21
|
import "../chunk-H73TUI4Y.js";
|
|
22
22
|
import "../chunk-7HLWBYH7.js";
|
package/dist/bin/exe-forget.js
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
fastDbInit
|
|
4
|
-
} from "../chunk-
|
|
4
|
+
} from "../chunk-HWVEDRZA.js";
|
|
5
5
|
import {
|
|
6
6
|
lightweightSearch
|
|
7
|
-
} from "../chunk-
|
|
7
|
+
} from "../chunk-ZU2UK4BC.js";
|
|
8
8
|
import "../chunk-AB4PAQYK.js";
|
|
9
|
-
import "../chunk-
|
|
9
|
+
import "../chunk-UW5QD52P.js";
|
|
10
10
|
import "../chunk-CHCA3ZM2.js";
|
|
11
11
|
import "../chunk-OTVEIJUQ.js";
|
|
12
|
-
import "../chunk-
|
|
12
|
+
import "../chunk-6IJ47YFD.js";
|
|
13
13
|
import "../chunk-Y25OJWOQ.js";
|
|
14
14
|
import "../chunk-MP2AFCGL.js";
|
|
15
15
|
import {
|
|
16
16
|
getClient
|
|
17
|
-
} from "../chunk-
|
|
17
|
+
} from "../chunk-46AMZT3C.js";
|
|
18
18
|
import "../chunk-2I23RPSI.js";
|
|
19
|
-
import "../chunk-
|
|
19
|
+
import "../chunk-MV5OSOP4.js";
|
|
20
20
|
import "../chunk-PNQDP3OA.js";
|
|
21
21
|
import "../chunk-H73TUI4Y.js";
|
|
22
22
|
import "../chunk-7HLWBYH7.js";
|