@askexenow/exe-os 0.9.322 → 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/dist/{active-agent-M5NJFEBM.js → active-agent-67BHUBV2.js} +3 -3
- package/dist/{active-agent-SHM4QSRJ.js → active-agent-IGVX2AAK.js} +3 -3
- package/dist/{agentic-ontology-HQKCU7LG.js → agentic-ontology-I5MEKVGE.js} +1 -1
- package/dist/backfill-gate-J7UXFNXU.js +19 -0
- package/dist/{backfill-metadata-CXWFCTBO.js → backfill-metadata-N5VVCYFT.js} +4 -4
- package/dist/{behaviors-J47D342W.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 +28 -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 +4 -4
- package/dist/bin/exe-assign.js +10 -10
- package/dist/bin/exe-boot.js +31 -22
- 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 +29 -26
- 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 +1 -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-H7H3MU74.js → capability-cards-RC4JYXCG.js} +2 -2
- package/dist/{capacity-monitor-WAEHVBL7.js → capacity-monitor-EDIGJSVQ.js} +21 -14
- package/dist/{catchup-brief-L42STIDR.js → catchup-brief-YVSBRXYZ.js} +23 -16
- package/dist/{chunk-VSXGFHJY.js → chunk-2COLYLE6.js} +1 -1
- package/dist/{chunk-KL5WYWS3.js → chunk-2RR2CJCX.js} +2 -2
- package/dist/{chunk-HV5CUDOE.js → chunk-364VBQIC.js} +1 -1
- package/dist/{chunk-ABGDTMKC.js → chunk-3CT3GN2B.js} +1 -1
- package/dist/{chunk-HWC5W34K.js → chunk-3LZILUET.js} +1 -1
- package/dist/{chunk-3M73L663.js → chunk-3MUV2GDZ.js} +2 -2
- package/dist/{chunk-GA76RGSP.js → chunk-3QJ3GDQZ.js} +5 -5
- package/dist/{chunk-SENJA7BZ.js → chunk-3VYAQUWZ.js} +54 -7
- package/dist/{chunk-XLNF3CIO.js → chunk-46AMZT3C.js} +110 -24
- package/dist/{chunk-6N4LYEDI.js → chunk-4GK6JTEV.js} +1 -1
- package/dist/{chunk-QNUHDEPI.js → chunk-4VW5KF6X.js} +4 -4
- package/dist/{chunk-TI6YX3L5.js → chunk-5CRFNQ7L.js} +2 -2
- package/dist/{chunk-OI63OVCR.js → chunk-5HXJI7SX.js} +1 -1
- package/dist/{chunk-CWQAXO3O.js → chunk-5RACW3LX.js} +28 -3
- package/dist/{chunk-EOPSIIEH.js → chunk-5ZQMGI3V.js} +1 -1
- package/dist/{chunk-WCCR5IFR.js → chunk-644DVREV.js} +2 -2
- package/dist/chunk-6IWLAQ7O.js +40 -0
- package/dist/{chunk-ORC5AO7E.js → chunk-6UR7C2NX.js} +1 -1
- package/dist/{chunk-F5FAD2YR.js → chunk-7PXMLHPG.js} +2 -2
- package/dist/{chunk-FANIBYUO.js → chunk-A2K7YIRL.js} +2 -2
- package/dist/{chunk-LB77CSLO.js → chunk-A3CRB4PS.js} +3 -3
- package/dist/{chunk-6UQRJCKK.js → chunk-A6I36KVN.js} +2 -2
- package/dist/{chunk-CXXERHNC.js → chunk-A6ODMODG.js} +1 -1
- package/dist/{chunk-GN3IWZDH.js → chunk-AVEOL6NP.js} +140 -122
- package/dist/{chunk-KLG53B63.js → chunk-BKOGHVRO.js} +1 -1
- package/dist/{chunk-HIOO7DZ2.js → chunk-CCYEO6EG.js} +5 -5
- package/dist/{chunk-NYFPFOYM.js → chunk-CMZIAR5S.js} +1 -1
- package/dist/{chunk-6SXJZHRJ.js → chunk-CP4LIKCX.js} +1 -1
- package/dist/{chunk-XEBN5CPD.js → chunk-DDRASSJI.js} +6 -6
- package/dist/{chunk-7SDS5VCL.js → chunk-DZVQ23CM.js} +7 -7
- package/dist/{chunk-NAHAOFTY.js → chunk-E72VLAJH.js} +3 -3
- package/dist/{chunk-EVUXF2G4.js → chunk-EAHLB7YN.js} +1 -1
- package/dist/{signal-paths-4GOIRLGH.js → chunk-EIKATSE4.js} +3 -4
- package/dist/{chunk-HKSJSW2V.js → chunk-EZHNCIO5.js} +1 -1
- package/dist/{chunk-QVFJCFNM.js → chunk-FROUDYRT.js} +33 -2
- package/dist/{chunk-EPBB2OD3.js → chunk-GHARDROH.js} +2 -2
- package/dist/{chunk-ROMB2HH4.js → chunk-GMDLNJ5E.js} +6 -6
- package/dist/{chunk-E32KARET.js → chunk-H7FI3AWZ.js} +4 -4
- package/dist/{chunk-X62GD6QW.js → chunk-HAA4N3NI.js} +2 -2
- package/dist/{chunk-PISGLNV7.js → chunk-HYNNAM4R.js} +5 -5
- package/dist/{chunk-KXP3CUTL.js → chunk-I4IMPAZQ.js} +2 -2
- package/dist/{chunk-C4BIZXKB.js → chunk-IFXE7QYT.js} +1 -1
- package/dist/{chunk-WFHYAKEU.js → chunk-IKFL4OLM.js} +1 -1
- package/dist/{chunk-657AQEPY.js → chunk-IKOAALTW.js} +1 -1
- package/dist/{chunk-TKBWBHFV.js → chunk-JTF4UVXK.js} +1 -1
- package/dist/{chunk-7FBPLVHM.js → chunk-KADUJ7PE.js} +3 -3
- package/dist/{chunk-CHSRSESS.js → chunk-KIXTW4VH.js} +1 -1
- package/dist/chunk-KPIN44GZ.js +67 -0
- package/dist/{chunk-VY7345RO.js → chunk-L5TUAHLX.js} +1 -1
- package/dist/{chunk-JXEMAB4M.js → chunk-LX2TYKEQ.js} +1 -1
- package/dist/{chunk-ONKIWA3R.js → chunk-ML4S5SHZ.js} +3 -1
- package/dist/{chunk-CMDC5D7S.js → chunk-NLEW62VC.js} +6 -0
- package/dist/{chunk-OFR7KQ37.js → chunk-NQPAG7CB.js} +3 -3
- package/dist/{chunk-6XM6PZXQ.js → chunk-NW6V3XVK.js} +1 -1
- package/dist/{chunk-G5TP2D2U.js → chunk-PGEADAZL.js} +3 -3
- package/dist/{chunk-AZL3EUR3.js → chunk-QBRBLEXP.js} +229 -29
- package/dist/{chunk-MYMA23KC.js → chunk-QCWZMS7B.js} +1 -1
- package/dist/{chunk-HGM6NZQH.js → chunk-RYJH6S55.js} +1 -1
- package/dist/{chunk-2GBGIXKH.js → chunk-S6XKC36B.js} +1 -1
- package/dist/{chunk-QQOH3I4A.js → chunk-SAUO2ZLB.js} +1 -1
- package/dist/{chunk-7BZ6TOZN.js → chunk-SE7TU5GX.js} +3 -3
- package/dist/{chunk-SQ5JWDJ2.js → chunk-SSIUJXOL.js} +1 -1
- package/dist/{chunk-KK4ZOYXJ.js → chunk-SXN3TRJ4.js} +80 -40
- package/dist/{chunk-7CUF27OT.js → chunk-T3OGIK3Y.js} +1 -1
- package/dist/{skill-refinement-YLIAY7V4.js → chunk-U3VSCPGX.js} +3 -11
- package/dist/{chunk-V2ESQU3S.js → chunk-UB322YIG.js} +3 -3
- package/dist/{chunk-3JW3ZXCP.js → chunk-UPLY33F7.js} +1 -1
- package/dist/{chunk-H2SD2EA7.js → chunk-UW5QD52P.js} +23 -9
- package/dist/{chunk-A3KUGBDP.js → chunk-VH345O6X.js} +1 -1
- package/dist/{chunk-QYLDCPNG.js → chunk-VJL2BGX2.js} +1 -1
- package/dist/{chunk-BFHBHQFA.js → chunk-VQEZ3ZNK.js} +5 -5
- package/dist/{chunk-T6AUMO5X.js → chunk-W33H7TWW.js} +1 -1
- package/dist/{chunk-ERSFOJGC.js → chunk-W377NZE4.js} +20 -11
- package/dist/{chunk-LCZ55G5G.js → chunk-WCXFNUMD.js} +136 -66
- package/dist/{chunk-WSYKLS2Y.js → chunk-WRA6OO5V.js} +3 -3
- package/dist/{chunk-XP53WEXP.js → chunk-WYHCMHTL.js} +3 -3
- package/dist/{chunk-YIFZZYQD.js → chunk-X2K2LHFO.js} +2 -2
- package/dist/{chunk-PLBDXCYZ.js → chunk-XK7HAEFC.js} +1446 -612
- package/dist/{chunk-DGFIXJ4S.js → chunk-XYJXJWKH.js} +3 -3
- package/dist/{chunk-XC7C3GQ2.js → chunk-YOS4FN26.js} +30 -19
- package/dist/{chunk-NFM6VHL7.js → chunk-YS7VW7KR.js} +1 -1
- package/dist/{chunk-6IBUQBMY.js → chunk-YTPNOTUS.js} +198 -39
- package/dist/{chunk-LOE2N23P.js → chunk-ZR57QAJ2.js} +1 -1
- package/dist/{chunk-4Z47UMMM.js → chunk-ZU2UK4BC.js} +23 -23
- package/dist/{cleanup-graph-garbage-MX5JDTJA.js → cleanup-graph-garbage-5KI4MSDC.js} +4 -4
- package/dist/{co-activation-K44LGZ7A.js → co-activation-JRDKF2M3.js} +2 -2
- package/dist/{co-occurrence-N62HJTRP.js → co-occurrence-JGFIAEKR.js} +2 -2
- package/dist/{code-context-index-6YQ3DGCN.js → code-context-index-NODPVXHC.js} +3 -3
- package/dist/{crdt-sync-BO76VVRX.js → crdt-sync-NOWBFD5N.js} +1 -1
- package/dist/{crm-bridge-BVTB6LZK.js → crm-bridge-CZLEW2LW.js} +1 -1
- package/dist/{crm-webhook-UZLTHXAS.js → crm-webhook-FXSSAHON.js} +2 -2
- package/dist/{cto-delegation-gate-NVMRONA2.js → cto-delegation-gate-J6DDJFAB.js} +19 -12
- package/dist/{daemon-orchestration-JI3RD5EZ.js → daemon-orchestration-HIZMZ2Y5.js} +31 -16
- package/dist/{db-backup-ITRADB2J.js → db-backup-I5GQBRIG.js} +1 -1
- package/dist/{doc-graph-extractor-L7YESUSI.js → doc-graph-extractor-TAZHM63R.js} +2 -2
- package/dist/{documents-7BFXA6V3.js → documents-XXOQ5QIJ.js} +10 -10
- package/dist/{dreaming-NRTMPNPZ.js → dreaming-V275C7L2.js} +20 -13
- package/dist/{exe-drift-GLJIM7EI.js → exe-drift-VOJZYOIO.js} +3 -3
- package/dist/{exe-export-THIAYHXK.js → exe-export-EDQDGZV3.js} +6 -6
- package/dist/{exe-import-3Y4VOUYL.js → exe-import-DV7GKBZD.js} +6 -6
- package/dist/{exe-key-IPGY4RMU.js → exe-key-6SLYWY36.js} +77 -74
- package/dist/{exe-snapshot-2ZEWCDYK.js → exe-snapshot-TDQI34DW.js} +23 -16
- package/dist/{fast-db-init-TLYUWCDE.js → fast-db-init-SNHHRW3L.js} +1 -1
- package/dist/{founder-context-J362DNU4.js → founder-context-UZVRU4HI.js} +2 -2
- package/dist/gateway/index.js +12 -12
- package/dist/{git-staleness-BRDHTHNS.js → git-staleness-TRCX6FVG.js} +2 -2
- package/dist/{global-procedures-FNUKY2LF.js → global-procedures-LH4JG3CR.js} +3 -3
- package/dist/{graph-auto-extract-AJZUV3PO.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 +29 -19
- 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 +28 -21
- package/dist/hooks/subagent-stop.js +24 -41
- package/dist/hooks/summary-worker.js +27 -25
- package/dist/index.js +30 -23
- package/dist/{installer-SC7CQBYY.js → installer-U7D3PAR5.js} +5 -5
- package/dist/{installer-2EKTDQZB.js → installer-W4SHZFOR.js} +5 -5
- package/dist/{installer-UEF44TWQ.js → installer-WHO23TIO.js} +5 -5
- package/dist/intercom-queue-2XB622OR.js +53 -0
- package/dist/lib/agent-config.js +7 -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 +2 -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/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-YUUSIPJ7.js → license-gate-7CYKGRXW.js} +3 -3
- package/dist/{license-sync-LX73IEBH.js → license-sync-H4TVZ7PR.js} +2 -2
- package/dist/mcp/register-tools.js +74 -71
- package/dist/mcp/server.js +98 -132
- 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-MBG5AQNH.js → mcp-http-config-LEBUOECG.js} +3 -3
- package/dist/{memory-cards-MGZ4P3AA.js → memory-cards-47XM3VWW.js} +4 -4
- package/dist/{memory-graph-extractor-44P2ATID.js → memory-graph-extractor-COD5E52L.js} +3 -3
- package/dist/{memory-poisoning-defense-3CYFKNLA.js → memory-poisoning-defense-SBYOEXT3.js} +2 -2
- package/dist/{memory-pressure-watchdog-6PFLEOUO.js → memory-pressure-watchdog-T276SDOR.js} +20 -13
- package/dist/{memory-queue-client-BZD6MXA5.js → memory-queue-client-IQ52W7W4.js} +3 -3
- package/dist/{memory-reflection-AYPJRPU7.js → memory-reflection-UZK5MHG2.js} +7 -9
- package/dist/{notifications-BBQ23ORD.js → notifications-O5DH4O35.js} +19 -12
- package/dist/{orchestration-events-O5P5NEKS.js → orchestration-events-65YDDRF4.js} +3 -3
- package/dist/{orchestrator-SERM6FDY.js → orchestrator-NHMTDGWJ.js} +21 -14
- package/dist/{pipeline-router-T673WGL3.js → pipeline-router-2KJQDX5O.js} +3 -3
- package/dist/{plan-limits-QWBN2EKH.js → plan-limits-NQQN5C4S.js} +5 -5
- package/dist/{projection-worker-K6TILAZH.js → projection-worker-IUCBINZH.js} +12 -2
- package/dist/{prospective-memory-XRNRMEDL.js → prospective-memory-U2TISMIW.js} +2 -2
- package/dist/{reranker-3XC5UM4F.js → reranker-D6NSD5A3.js} +1 -1
- package/dist/{retrieval-health-ULVVOIPL.js → retrieval-health-LBNMCYNF.js} +1 -1
- package/dist/{review-polling-5YGDPJUX.js → review-polling-ZJWELHBP.js} +20 -13
- package/dist/runtime/index.js +23 -16
- package/dist/{session-events-D52HNUJK.js → session-events-GRHFFRZV.js} +20 -13
- package/dist/{session-kill-telemetry-IBNCJSI7.js → session-kill-telemetry-ALV4KMWS.js} +20 -13
- package/dist/{session-scope-5FWZ4AYR.js → session-scope-JB5TBNCX.js} +19 -12
- package/dist/{setup-wizard-KVTLSSRD.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-OWWGTYRB.js → stack-update-ZG4YS7WS.js} +9 -3
- package/dist/{steward-gate-3ZITRYVH.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-L4YTDOOX.js → task-enforcement-72WZMQGC.js} +191 -17
- package/dist/{task-scope-OIHLMQOQ.js → task-scope-FLDBFGWR.js} +25 -12
- package/dist/{tasks-crud-QUIIRWE3.js → tasks-crud-DKOSSXTD.js} +23 -12
- package/dist/{tasks-notify-ANYLB5GU.js → tasks-notify-WEWKM6B3.js} +20 -13
- package/dist/{tasks-review-BWSCXFMB.js → tasks-review-MHCL7PNP.js} +27 -14
- package/dist/{telemetry-upload-XLDBCD7B.js → telemetry-upload-K2MZ4O6U.js} +7 -7
- package/dist/{token-budget-OQCLPV3A.js → token-budget-MZZ5DLOH.js} +3 -3
- package/dist/{tool-capability-index-3UWKZZED.js → tool-capability-index-M3FUNMFF.js} +1 -1
- package/dist/{tool-telemetry-AQTFWOWG.js → tool-telemetry-ERE5FRVC.js} +1 -1
- package/dist/tui/App.js +27 -20
- package/dist/{tui-data-3Y5L5LJB.js → tui-data-JDBTFDAF.js} +19 -12
- package/dist/{worker-gate-WJS2MFNA.js → worker-gate-3OR47E4T.js} +1 -1
- package/dist/{workflow-engine-EPPZ226V.js → workflow-engine-JLVEE2CI.js} +2 -2
- package/dist/{worktree-OYGDGJP7.js → worktree-WLPHLZ2S.js} +4 -4
- package/dist/{worktree-sweep-KV4H4766.js → worktree-sweep-S6AYDLAQ.js} +5 -5
- package/package.json +3 -3
- package/release-notes.json +51 -19
- package/dist/chunk-4FVVJ7ME.js +0 -193
- package/dist/completion-nudge-dedup-DBZF24MM.js +0 -74
- package/dist/git-task-sweep-7GVUKDBW.js +0 -47
- package/dist/intercom-queue-6M5IRX3Y.js +0 -17
- /package/dist/{chunk-SJZT66LM.js → chunk-2G75BF5J.js} +0 -0
- /package/dist/{chunk-SIJSFULW.js → chunk-6IJ47YFD.js} +0 -0
- /package/dist/{chunk-72LWCZTJ.js → chunk-AI3BK3JD.js} +0 -0
- /package/dist/{chunk-Q5YKWFVO.js → chunk-B2ONIFHD.js} +0 -0
- /package/dist/{chunk-DY3J6GQO.js → chunk-FU767JXE.js} +0 -0
- /package/dist/{chunk-ZU6767WK.js → chunk-HWVEDRZA.js} +0 -0
- /package/dist/{chunk-WXRVHXVP.js → chunk-MV5OSOP4.js} +0 -0
- /package/dist/{chunk-DQJ3WZRK.js → chunk-RYZR4NNE.js} +0 -0
- /package/dist/{chunk-RRQI5PSJ.js → chunk-SSM2JHQ4.js} +0 -0
- /package/dist/{chunk-IZY6V4FI.js → chunk-TVY65H23.js} +0 -0
- /package/dist/{chunk-QTEHH4LG.js → chunk-VW326Q5R.js} +0 -0
- /package/dist/{core-memory-DARTILJG.js → core-memory-4AZ2CSQZ.js} +0 -0
- /package/dist/{entity-boost-VR5YOQCT.js → entity-boost-WV4GGNN2.js} +0 -0
- /package/dist/{message-queue-client-HVFR67QH.js → message-queue-client-JZ7TIOTZ.js} +0 -0
- /package/dist/{oauth-server-UQHCFVHT.js → oauth-server-LUJ5P2BH.js} +0 -0
- /package/dist/{project-boot-22ZZL2GE.js → project-boot-TOFNGMHM.js} +0 -0
- /package/dist/{wiki-acl-EZMGL6KW.js → wiki-acl-3JA23DH3.js} +0 -0
|
@@ -3,24 +3,24 @@ import {
|
|
|
3
3
|
clean,
|
|
4
4
|
inferSemanticLabel,
|
|
5
5
|
stableId
|
|
6
|
-
} from "../chunk-
|
|
6
|
+
} from "../chunk-FU767JXE.js";
|
|
7
7
|
import {
|
|
8
8
|
politeBatchPause,
|
|
9
9
|
startManagedJob
|
|
10
10
|
} from "../chunk-JSKBHUR7.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 "../chunk-Y25OJWOQ.js";
|
|
18
18
|
import "../chunk-MP2AFCGL.js";
|
|
19
19
|
import {
|
|
20
20
|
getClient
|
|
21
|
-
} from "../chunk-
|
|
21
|
+
} from "../chunk-46AMZT3C.js";
|
|
22
22
|
import "../chunk-2I23RPSI.js";
|
|
23
|
-
import "../chunk-
|
|
23
|
+
import "../chunk-MV5OSOP4.js";
|
|
24
24
|
import "../chunk-PNQDP3OA.js";
|
|
25
25
|
import "../chunk-H73TUI4Y.js";
|
|
26
26
|
import "../chunk-7HLWBYH7.js";
|
|
@@ -1,27 +1,27 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {
|
|
3
|
-
connectEmbedDaemon,
|
|
4
|
-
embedViaClient
|
|
5
|
-
} from "../chunk-3JW3ZXCP.js";
|
|
6
|
-
import "../chunk-AFNRE2RV.js";
|
|
7
|
-
import "../chunk-3NGZ4PL7.js";
|
|
8
|
-
import "../chunk-CMDC5D7S.js";
|
|
9
2
|
import {
|
|
10
3
|
flushBatch,
|
|
11
4
|
initStore,
|
|
12
5
|
writeMemory
|
|
13
|
-
} from "../chunk-
|
|
6
|
+
} from "../chunk-UW5QD52P.js";
|
|
14
7
|
import "../chunk-CHCA3ZM2.js";
|
|
15
8
|
import "../chunk-OTVEIJUQ.js";
|
|
16
|
-
import "../chunk-
|
|
9
|
+
import "../chunk-6IJ47YFD.js";
|
|
17
10
|
import "../chunk-Y25OJWOQ.js";
|
|
11
|
+
import {
|
|
12
|
+
connectEmbedDaemon,
|
|
13
|
+
embedViaClient
|
|
14
|
+
} from "../chunk-UPLY33F7.js";
|
|
15
|
+
import "../chunk-AFNRE2RV.js";
|
|
16
|
+
import "../chunk-3NGZ4PL7.js";
|
|
17
|
+
import "../chunk-NLEW62VC.js";
|
|
18
18
|
import "../chunk-MP2AFCGL.js";
|
|
19
19
|
import {
|
|
20
20
|
getClient,
|
|
21
21
|
isCoordinatorName
|
|
22
|
-
} from "../chunk-
|
|
22
|
+
} from "../chunk-46AMZT3C.js";
|
|
23
23
|
import "../chunk-2I23RPSI.js";
|
|
24
|
-
import "../chunk-
|
|
24
|
+
import "../chunk-MV5OSOP4.js";
|
|
25
25
|
import "../chunk-PNQDP3OA.js";
|
|
26
26
|
import "../chunk-H73TUI4Y.js";
|
|
27
27
|
import "../chunk-7HLWBYH7.js";
|
|
@@ -1,27 +1,27 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {
|
|
3
|
-
connectEmbedDaemon,
|
|
4
|
-
embedViaClient
|
|
5
|
-
} from "../chunk-3JW3ZXCP.js";
|
|
6
|
-
import "../chunk-AFNRE2RV.js";
|
|
7
|
-
import "../chunk-3NGZ4PL7.js";
|
|
8
|
-
import "../chunk-CMDC5D7S.js";
|
|
9
2
|
import {
|
|
10
3
|
flushBatch,
|
|
11
4
|
initStore,
|
|
12
5
|
writeMemory
|
|
13
|
-
} from "../chunk-
|
|
6
|
+
} from "../chunk-UW5QD52P.js";
|
|
14
7
|
import "../chunk-CHCA3ZM2.js";
|
|
15
8
|
import "../chunk-OTVEIJUQ.js";
|
|
16
|
-
import "../chunk-
|
|
9
|
+
import "../chunk-6IJ47YFD.js";
|
|
17
10
|
import "../chunk-Y25OJWOQ.js";
|
|
11
|
+
import {
|
|
12
|
+
connectEmbedDaemon,
|
|
13
|
+
embedViaClient
|
|
14
|
+
} from "../chunk-UPLY33F7.js";
|
|
15
|
+
import "../chunk-AFNRE2RV.js";
|
|
16
|
+
import "../chunk-3NGZ4PL7.js";
|
|
17
|
+
import "../chunk-NLEW62VC.js";
|
|
18
18
|
import "../chunk-MP2AFCGL.js";
|
|
19
19
|
import {
|
|
20
20
|
getClient,
|
|
21
21
|
isCoordinatorName
|
|
22
|
-
} from "../chunk-
|
|
22
|
+
} from "../chunk-46AMZT3C.js";
|
|
23
23
|
import "../chunk-2I23RPSI.js";
|
|
24
|
-
import "../chunk-
|
|
24
|
+
import "../chunk-MV5OSOP4.js";
|
|
25
25
|
import "../chunk-PNQDP3OA.js";
|
|
26
26
|
import "../chunk-H73TUI4Y.js";
|
|
27
27
|
import "../chunk-7HLWBYH7.js";
|
|
@@ -3,36 +3,41 @@ import {
|
|
|
3
3
|
politeBatchPause,
|
|
4
4
|
startManagedJob
|
|
5
5
|
} from "../chunk-JSKBHUR7.js";
|
|
6
|
+
import {
|
|
7
|
+
NOT_PARKED_SQL,
|
|
8
|
+
PARKED_EMBEDDING_MODEL,
|
|
9
|
+
backfillKillSwitchEnabled
|
|
10
|
+
} from "../chunk-KPIN44GZ.js";
|
|
6
11
|
import {
|
|
7
12
|
prepareEmbeddingText
|
|
8
|
-
} from "../chunk-
|
|
13
|
+
} from "../chunk-KIXTW4VH.js";
|
|
9
14
|
import {
|
|
10
15
|
cleanupWorkerPid,
|
|
11
16
|
registerWorkerPid,
|
|
12
17
|
releaseBackfillLock,
|
|
13
18
|
tryAcquireBackfillLock
|
|
14
|
-
} from "../chunk-
|
|
15
|
-
import {
|
|
16
|
-
connectEmbedDaemon,
|
|
17
|
-
embedViaClient
|
|
18
|
-
} from "../chunk-3JW3ZXCP.js";
|
|
19
|
-
import "../chunk-AFNRE2RV.js";
|
|
20
|
-
import "../chunk-3NGZ4PL7.js";
|
|
21
|
-
import "../chunk-CMDC5D7S.js";
|
|
19
|
+
} from "../chunk-JTF4UVXK.js";
|
|
22
20
|
import {
|
|
23
21
|
initStore,
|
|
24
22
|
vectorToBlob
|
|
25
|
-
} from "../chunk-
|
|
23
|
+
} from "../chunk-UW5QD52P.js";
|
|
26
24
|
import "../chunk-CHCA3ZM2.js";
|
|
27
25
|
import "../chunk-OTVEIJUQ.js";
|
|
28
|
-
import "../chunk-
|
|
26
|
+
import "../chunk-6IJ47YFD.js";
|
|
29
27
|
import "../chunk-Y25OJWOQ.js";
|
|
28
|
+
import {
|
|
29
|
+
connectEmbedDaemon,
|
|
30
|
+
embedViaClient
|
|
31
|
+
} from "../chunk-UPLY33F7.js";
|
|
32
|
+
import "../chunk-AFNRE2RV.js";
|
|
33
|
+
import "../chunk-3NGZ4PL7.js";
|
|
34
|
+
import "../chunk-NLEW62VC.js";
|
|
30
35
|
import "../chunk-MP2AFCGL.js";
|
|
31
36
|
import {
|
|
32
37
|
getClient
|
|
33
|
-
} from "../chunk-
|
|
38
|
+
} from "../chunk-46AMZT3C.js";
|
|
34
39
|
import "../chunk-2I23RPSI.js";
|
|
35
|
-
import "../chunk-
|
|
40
|
+
import "../chunk-MV5OSOP4.js";
|
|
36
41
|
import "../chunk-PNQDP3OA.js";
|
|
37
42
|
import "../chunk-H73TUI4Y.js";
|
|
38
43
|
import "../chunk-7HLWBYH7.js";
|
|
@@ -53,8 +58,54 @@ import "../chunk-MLKGABMK.js";
|
|
|
53
58
|
// src/bin/backfill-vectors.ts
|
|
54
59
|
import { existsSync, mkdirSync, readFileSync, unlinkSync } from "fs";
|
|
55
60
|
import path from "path";
|
|
61
|
+
import os from "os";
|
|
56
62
|
var BATCH_SIZE = 100;
|
|
57
63
|
var BACKFILL_FLAG = path.join(EXE_AI_DIR, "session-cache", "needs-backfill");
|
|
64
|
+
var BACKFILL_MAX_CHARS_DEFAULT = 2e3;
|
|
65
|
+
var BACKFILL_MAX_CHARS_MIN = 200;
|
|
66
|
+
var BACKFILL_MAX_CHARS_MAX = 24e3;
|
|
67
|
+
function backfillMaxEmbedChars(env = process.env) {
|
|
68
|
+
const raw = parseInt(env.EXE_BACKFILL_MAX_CHARS ?? "", 10);
|
|
69
|
+
if (!Number.isFinite(raw)) return BACKFILL_MAX_CHARS_DEFAULT;
|
|
70
|
+
return Math.min(BACKFILL_MAX_CHARS_MAX, Math.max(BACKFILL_MAX_CHARS_MIN, raw));
|
|
71
|
+
}
|
|
72
|
+
var BACKFILL_MIN_BATCH = 10;
|
|
73
|
+
var BACKFILL_PAUSE_BASE_MS = 500;
|
|
74
|
+
var BACKFILL_PAUSE_MAX_MS = 5e3;
|
|
75
|
+
function computeBackfillBatchSize(loadAvg1, cpuCount, base = BATCH_SIZE) {
|
|
76
|
+
if (!Number.isFinite(loadAvg1) || !Number.isFinite(cpuCount) || cpuCount <= 0) return base;
|
|
77
|
+
const perCore = loadAvg1 / cpuCount;
|
|
78
|
+
if (perCore <= 0.5) return base;
|
|
79
|
+
if (perCore >= 1) return Math.min(BACKFILL_MIN_BATCH, base);
|
|
80
|
+
const t = (perCore - 0.5) / 0.5;
|
|
81
|
+
const size = Math.round(base - t * (base - BACKFILL_MIN_BATCH));
|
|
82
|
+
return Math.max(Math.min(BACKFILL_MIN_BATCH, base), Math.min(base, size));
|
|
83
|
+
}
|
|
84
|
+
function computeBackfillPauseMs(loadAvg1, cpuCount) {
|
|
85
|
+
if (!Number.isFinite(loadAvg1) || !Number.isFinite(cpuCount) || cpuCount <= 0) {
|
|
86
|
+
return BACKFILL_PAUSE_BASE_MS;
|
|
87
|
+
}
|
|
88
|
+
const perCore = loadAvg1 / cpuCount;
|
|
89
|
+
if (perCore <= 0.5) return BACKFILL_PAUSE_BASE_MS;
|
|
90
|
+
const t = Math.min(1, (perCore - 0.5) / 0.5);
|
|
91
|
+
return Math.round(BACKFILL_PAUSE_BASE_MS + t * (BACKFILL_PAUSE_MAX_MS - BACKFILL_PAUSE_BASE_MS));
|
|
92
|
+
}
|
|
93
|
+
var PARK_CHUNK = 100;
|
|
94
|
+
async function parkPoisonRows(client, ids) {
|
|
95
|
+
let parked = 0;
|
|
96
|
+
for (let i = 0; i < ids.length; i += PARK_CHUNK) {
|
|
97
|
+
const chunk = ids.slice(i, i + PARK_CHUNK);
|
|
98
|
+
try {
|
|
99
|
+
await client.execute({
|
|
100
|
+
sql: `UPDATE memories SET embedding_model = ? WHERE vector IS NULL AND id IN (${chunk.map(() => "?").join(",")})`,
|
|
101
|
+
args: [PARKED_EMBEDDING_MODEL, ...chunk]
|
|
102
|
+
});
|
|
103
|
+
parked += chunk.length;
|
|
104
|
+
} catch {
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
return parked;
|
|
108
|
+
}
|
|
58
109
|
var DEAD_LETTER_FILE = path.join(EXE_AI_DIR, "session-cache", "vector-backfill-deadletter.json");
|
|
59
110
|
var MAX_DEAD_LETTER_ATTEMPTS = Math.max(
|
|
60
111
|
1,
|
|
@@ -104,6 +155,10 @@ function isNonRetryableEmbedError(err) {
|
|
|
104
155
|
return msg.toLowerCase().includes("input is longer than the context size");
|
|
105
156
|
}
|
|
106
157
|
async function backfillVectors() {
|
|
158
|
+
if (backfillKillSwitchEnabled()) {
|
|
159
|
+
process.stderr.write("[backfill] EXE_DISABLE_BACKFILL is set \u2014 backfill disabled, exiting\n");
|
|
160
|
+
return { processed: 0, failed: 0, remaining: -1 };
|
|
161
|
+
}
|
|
107
162
|
const job = startManagedJob({ type: "vector-backfill", name: "Vector embedding backfill", lowPriority: true });
|
|
108
163
|
if (!job) {
|
|
109
164
|
process.stderr.write("[backfill] Vector backfill is already running \u2014 exiting\n");
|
|
@@ -149,6 +204,16 @@ async function backfillVectors() {
|
|
|
149
204
|
const failedIds = new Set(exhaustedIds(deadLetter));
|
|
150
205
|
let deadLetterDirty = false;
|
|
151
206
|
let capReached = false;
|
|
207
|
+
if (hasEmbeddingModelCol && failedIds.size > 0) {
|
|
208
|
+
const parked = await parkPoisonRows(client, [...failedIds]);
|
|
209
|
+
if (parked > 0) {
|
|
210
|
+
process.stderr.write(`[backfill] Parked ${parked} previously dead-lettered rows (embedding_model='${PARKED_EMBEDDING_MODEL}')
|
|
211
|
+
`);
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
const maxChars = backfillMaxEmbedChars();
|
|
215
|
+
const cpuCount = os.cpus().length || 1;
|
|
216
|
+
const newlyExhausted = [];
|
|
152
217
|
while (true) {
|
|
153
218
|
if (totalFailed >= MAX_FAILURES_PER_RUN) {
|
|
154
219
|
capReached = true;
|
|
@@ -160,9 +225,11 @@ async function backfillVectors() {
|
|
|
160
225
|
}
|
|
161
226
|
const failedList = [...failedIds];
|
|
162
227
|
const failedClause = failedList.length > 0 ? ` AND id NOT IN (${failedList.map(() => "?").join(",")})` : "";
|
|
228
|
+
const parkedClause = hasEmbeddingModelCol ? ` AND ${NOT_PARKED_SQL}` : "";
|
|
229
|
+
const batchSize = computeBackfillBatchSize(os.loadavg()[0] ?? 0, cpuCount);
|
|
163
230
|
const batch = await client.execute({
|
|
164
|
-
sql: `SELECT id, raw_text FROM memories WHERE vector IS NULL${failedClause} LIMIT ?`,
|
|
165
|
-
args: [...failedList,
|
|
231
|
+
sql: `SELECT id, raw_text FROM memories WHERE vector IS NULL${parkedClause}${failedClause} LIMIT ?`,
|
|
232
|
+
args: [...failedList, batchSize]
|
|
166
233
|
});
|
|
167
234
|
if (batch.rows.length === 0) break;
|
|
168
235
|
process.stderr.write(`[backfill] Processing batch of ${batch.rows.length} memories...
|
|
@@ -174,12 +241,12 @@ async function backfillVectors() {
|
|
|
174
241
|
const id = row.id;
|
|
175
242
|
const rawText = row.raw_text;
|
|
176
243
|
try {
|
|
177
|
-
const vector = await embedViaClient(prepareEmbeddingText(rawText, "passage"), "low");
|
|
244
|
+
const vector = await embedViaClient(prepareEmbeddingText(rawText.slice(0, maxChars), "passage"), "low");
|
|
178
245
|
if (!vector) {
|
|
179
246
|
totalFailed++;
|
|
180
247
|
batchFailed++;
|
|
181
248
|
failedIds.add(id);
|
|
182
|
-
recordDeadLetter(deadLetter, id, "daemon returned null");
|
|
249
|
+
if (recordDeadLetter(deadLetter, id, "daemon returned null")) newlyExhausted.push(id);
|
|
183
250
|
deadLetterDirty = true;
|
|
184
251
|
process.stderr.write(`[backfill] Failed to embed memory ${id} \u2014 daemon returned null
|
|
185
252
|
`);
|
|
@@ -209,10 +276,11 @@ async function backfillVectors() {
|
|
|
209
276
|
lastError: (err instanceof Error ? err.message : String(err)).slice(0, 200),
|
|
210
277
|
updatedAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
211
278
|
};
|
|
279
|
+
newlyExhausted.push(id);
|
|
212
280
|
process.stderr.write(`[backfill] Non-retryable embedding error for ${id}; dead-lettering permanently
|
|
213
281
|
`);
|
|
214
|
-
} else {
|
|
215
|
-
|
|
282
|
+
} else if (recordDeadLetter(deadLetter, id, err)) {
|
|
283
|
+
newlyExhausted.push(id);
|
|
216
284
|
}
|
|
217
285
|
process.stderr.write(`[backfill] Error embedding ${id}: ${err instanceof Error ? err.message : String(err)}
|
|
218
286
|
`);
|
|
@@ -225,11 +293,18 @@ async function backfillVectors() {
|
|
|
225
293
|
saveDeadLetter(deadLetter);
|
|
226
294
|
deadLetterDirty = false;
|
|
227
295
|
}
|
|
296
|
+
if (hasEmbeddingModelCol && newlyExhausted.length > 0) {
|
|
297
|
+
const parked = await parkPoisonRows(client, newlyExhausted.splice(0));
|
|
298
|
+
if (parked > 0) {
|
|
299
|
+
process.stderr.write(`[backfill] Parked ${parked} poison rows (embedding_model='${PARKED_EMBEDDING_MODEL}')
|
|
300
|
+
`);
|
|
301
|
+
}
|
|
302
|
+
}
|
|
228
303
|
if (batchProcessed === 0 && batchFailed === batch.rows.length) {
|
|
229
304
|
process.stderr.write("[backfill] Entire batch failed \u2014 stopping to avoid reprocessing poison rows\n");
|
|
230
305
|
break;
|
|
231
306
|
}
|
|
232
|
-
await politeBatchPause(
|
|
307
|
+
await politeBatchPause(computeBackfillPauseMs(os.loadavg()[0] ?? 0, cpuCount));
|
|
233
308
|
}
|
|
234
309
|
if (deadLetterDirty) saveDeadLetter(deadLetter);
|
|
235
310
|
const remaining = await client.execute({
|
|
@@ -238,9 +313,10 @@ async function backfillVectors() {
|
|
|
238
313
|
});
|
|
239
314
|
const remainingCount = Number(remaining.rows[0]?.cnt) || 0;
|
|
240
315
|
const exhausted = new Set(exhaustedIds(deadLetter));
|
|
241
|
-
const
|
|
316
|
+
const parkedFilter = hasEmbeddingModelCol ? ` AND ${NOT_PARKED_SQL}` : "";
|
|
317
|
+
const actionableRemaining = exhausted.size === 0 && !hasEmbeddingModelCol ? remainingCount : Number(
|
|
242
318
|
(await client.execute({
|
|
243
|
-
sql: `SELECT COUNT(*) as cnt FROM memories WHERE vector IS NULL AND id NOT IN (${[...exhausted].map(() => "?").join(",")})`,
|
|
319
|
+
sql: `SELECT COUNT(*) as cnt FROM memories WHERE vector IS NULL${parkedFilter}${exhausted.size > 0 ? ` AND id NOT IN (${[...exhausted].map(() => "?").join(",")})` : ""}`,
|
|
244
320
|
args: [...exhausted]
|
|
245
321
|
})).rows[0]?.cnt
|
|
246
322
|
) || 0;
|
|
@@ -271,10 +347,14 @@ if (isMainModule(import.meta.url)) {
|
|
|
271
347
|
});
|
|
272
348
|
}
|
|
273
349
|
export {
|
|
350
|
+
backfillMaxEmbedChars,
|
|
274
351
|
backfillVectors,
|
|
352
|
+
computeBackfillBatchSize,
|
|
353
|
+
computeBackfillPauseMs,
|
|
275
354
|
deadLetterMaxAttempts,
|
|
276
355
|
exhaustedIds,
|
|
277
356
|
isBackfillNeeded,
|
|
278
357
|
maxFailuresPerRun,
|
|
358
|
+
parkPoisonRows,
|
|
279
359
|
recordDeadLetter
|
|
280
360
|
};
|
|
@@ -1,37 +1,37 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
pushToPostgres
|
|
4
|
-
} from "../chunk-
|
|
5
|
-
import "../chunk-
|
|
6
|
-
import "../chunk-
|
|
4
|
+
} from "../chunk-WCXFNUMD.js";
|
|
5
|
+
import "../chunk-AI3BK3JD.js";
|
|
6
|
+
import "../chunk-A2K7YIRL.js";
|
|
7
7
|
import "../chunk-LO6L5ADL.js";
|
|
8
|
-
import "../chunk-
|
|
8
|
+
import "../chunk-S6XKC36B.js";
|
|
9
9
|
import "../chunk-QGGH7LOU.js";
|
|
10
|
-
import "../chunk-3JW3ZXCP.js";
|
|
11
|
-
import "../chunk-AFNRE2RV.js";
|
|
12
|
-
import "../chunk-3NGZ4PL7.js";
|
|
13
|
-
import "../chunk-CMDC5D7S.js";
|
|
14
10
|
import {
|
|
15
11
|
disposeStore,
|
|
16
12
|
initStore
|
|
17
|
-
} from "../chunk-
|
|
13
|
+
} from "../chunk-UW5QD52P.js";
|
|
18
14
|
import "../chunk-CHCA3ZM2.js";
|
|
19
15
|
import "../chunk-OTVEIJUQ.js";
|
|
20
|
-
import "../chunk-
|
|
16
|
+
import "../chunk-6IJ47YFD.js";
|
|
21
17
|
import "../chunk-Y25OJWOQ.js";
|
|
18
|
+
import "../chunk-UPLY33F7.js";
|
|
19
|
+
import "../chunk-AFNRE2RV.js";
|
|
20
|
+
import "../chunk-3NGZ4PL7.js";
|
|
21
|
+
import "../chunk-NLEW62VC.js";
|
|
22
22
|
import "../chunk-MP2AFCGL.js";
|
|
23
23
|
import {
|
|
24
24
|
getClient
|
|
25
|
-
} from "../chunk-
|
|
25
|
+
} from "../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";
|
|
31
31
|
import "../chunk-FXU7JOXK.js";
|
|
32
32
|
import "../chunk-Z42MXYWW.js";
|
|
33
|
-
import "../chunk-
|
|
34
|
-
import "../chunk-
|
|
33
|
+
import "../chunk-L5TUAHLX.js";
|
|
34
|
+
import "../chunk-RYZR4NNE.js";
|
|
35
35
|
import "../chunk-7Y5UDEVM.js";
|
|
36
36
|
import "../chunk-SHIICYJW.js";
|
|
37
37
|
import "../chunk-MLKGABMK.js";
|
package/dist/bin/cc-doctor.js
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
checkClaudeCodeInstall
|
|
4
|
-
} from "../chunk-
|
|
5
|
-
import "../chunk-
|
|
4
|
+
} from "../chunk-3VYAQUWZ.js";
|
|
5
|
+
import "../chunk-EZHNCIO5.js";
|
|
6
6
|
import "../chunk-X2FHTDIU.js";
|
|
7
7
|
import "../chunk-SSC7EKY2.js";
|
|
8
8
|
import "../chunk-75H4R62K.js";
|
|
9
|
-
import "../chunk-
|
|
10
|
-
import "../chunk-
|
|
9
|
+
import "../chunk-5RACW3LX.js";
|
|
10
|
+
import "../chunk-46AMZT3C.js";
|
|
11
11
|
import "../chunk-2I23RPSI.js";
|
|
12
|
-
import "../chunk-
|
|
12
|
+
import "../chunk-MV5OSOP4.js";
|
|
13
13
|
import "../chunk-PNQDP3OA.js";
|
|
14
14
|
import "../chunk-H73TUI4Y.js";
|
|
15
15
|
import "../chunk-7HLWBYH7.js";
|
|
@@ -1,39 +1,46 @@
|
|
|
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
|
sessionScopeFilter
|
|
7
|
-
} from "../chunk-
|
|
8
|
-
import "../chunk-
|
|
9
|
-
import "../chunk-
|
|
10
|
-
import "../chunk-
|
|
7
|
+
} from "../chunk-XK7HAEFC.js";
|
|
8
|
+
import "../chunk-3LZILUET.js";
|
|
9
|
+
import "../chunk-BKOGHVRO.js";
|
|
10
|
+
import "../chunk-U3VSCPGX.js";
|
|
11
|
+
import "../chunk-EIKATSE4.js";
|
|
11
12
|
import "../chunk-E23LNUWJ.js";
|
|
12
13
|
import "../chunk-4JERP7NT.js";
|
|
13
|
-
import "../chunk-
|
|
14
|
+
import "../chunk-3CT3GN2B.js";
|
|
14
15
|
import "../chunk-SSTLTIF3.js";
|
|
15
16
|
import "../chunk-RMOBQ6A5.js";
|
|
16
17
|
import "../chunk-54QCG45Y.js";
|
|
17
|
-
import "../chunk-
|
|
18
|
-
import "../chunk-
|
|
18
|
+
import "../chunk-364VBQIC.js";
|
|
19
|
+
import "../chunk-FROUDYRT.js";
|
|
19
20
|
import "../chunk-NGP6LSV2.js";
|
|
20
|
-
import "../chunk-
|
|
21
|
+
import "../chunk-GHARDROH.js";
|
|
21
22
|
import "../chunk-CVYC6DUW.js";
|
|
23
|
+
import "../chunk-W33H7TWW.js";
|
|
24
|
+
import "../chunk-HCJCW7X4.js";
|
|
22
25
|
import "../chunk-OPU3NYOO.js";
|
|
26
|
+
import "../chunk-UPLY33F7.js";
|
|
27
|
+
import "../chunk-AFNRE2RV.js";
|
|
28
|
+
import "../chunk-3NGZ4PL7.js";
|
|
29
|
+
import "../chunk-NLEW62VC.js";
|
|
23
30
|
import "../chunk-HYZV25LY.js";
|
|
24
31
|
import "../chunk-GJV3WDWM.js";
|
|
25
32
|
import "../chunk-MP2AFCGL.js";
|
|
26
33
|
import {
|
|
27
34
|
getClient
|
|
28
|
-
} from "../chunk-
|
|
35
|
+
} from "../chunk-46AMZT3C.js";
|
|
29
36
|
import "../chunk-2I23RPSI.js";
|
|
30
|
-
import "../chunk-
|
|
37
|
+
import "../chunk-MV5OSOP4.js";
|
|
31
38
|
import "../chunk-PNQDP3OA.js";
|
|
32
39
|
import "../chunk-H73TUI4Y.js";
|
|
33
40
|
import "../chunk-7HLWBYH7.js";
|
|
34
41
|
import "../chunk-FXU7JOXK.js";
|
|
35
|
-
import "../chunk-
|
|
36
|
-
import "../chunk-
|
|
42
|
+
import "../chunk-L5TUAHLX.js";
|
|
43
|
+
import "../chunk-RYZR4NNE.js";
|
|
37
44
|
import "../chunk-7Y5UDEVM.js";
|
|
38
45
|
import "../chunk-SHIICYJW.js";
|
|
39
46
|
import {
|
package/dist/bin/cli.js
CHANGED
|
@@ -106,7 +106,7 @@ if (args.includes("--global")) {
|
|
|
106
106
|
);
|
|
107
107
|
await runClaudeInstall();
|
|
108
108
|
} else if (args.includes("--commands-only")) {
|
|
109
|
-
const { copySlashCommands, resolvePackageRoot } = await import("../installer-
|
|
109
|
+
const { copySlashCommands, resolvePackageRoot } = await import("../installer-U7D3PAR5.js");
|
|
110
110
|
try {
|
|
111
111
|
const packageRoot = resolvePackageRoot();
|
|
112
112
|
const result = await copySlashCommands(packageRoot);
|
|
@@ -195,7 +195,7 @@ if (args.includes("--global")) {
|
|
|
195
195
|
process.exit(1);
|
|
196
196
|
}
|
|
197
197
|
} else if (args[0] === "key") {
|
|
198
|
-
const { main: runKey } = await import("../exe-key-
|
|
198
|
+
const { main: runKey } = await import("../exe-key-6SLYWY36.js");
|
|
199
199
|
await runKey(args.slice(1));
|
|
200
200
|
} else if (args[0] === "link") {
|
|
201
201
|
console.error("`exe-os link` has been removed from the customer command surface.");
|
|
@@ -247,7 +247,7 @@ if (args.includes("--global")) {
|
|
|
247
247
|
process.exit(1);
|
|
248
248
|
}
|
|
249
249
|
} else if (args[0] === "backfill-metadata") {
|
|
250
|
-
const { backfillMetadata } = await import("../backfill-metadata-
|
|
250
|
+
const { backfillMetadata } = await import("../backfill-metadata-N5VVCYFT.js");
|
|
251
251
|
let batchSize = 50;
|
|
252
252
|
let limit = 0;
|
|
253
253
|
let dryRun = false;
|
|
@@ -278,10 +278,10 @@ if (args.includes("--global")) {
|
|
|
278
278
|
process.exit(1);
|
|
279
279
|
}
|
|
280
280
|
} else if (args[0] === "export") {
|
|
281
|
-
const { runExeExport } = await import("../exe-export-
|
|
281
|
+
const { runExeExport } = await import("../exe-export-EDQDGZV3.js");
|
|
282
282
|
await runExeExport(args.slice(1));
|
|
283
283
|
} else if (args[0] === "import") {
|
|
284
|
-
const { runExeImport } = await import("../exe-import-
|
|
284
|
+
const { runExeImport } = await import("../exe-import-DV7GKBZD.js");
|
|
285
285
|
await runExeImport(args.slice(1));
|
|
286
286
|
} else if (args[0] === "import-history") {
|
|
287
287
|
const { runImportHistory } = await import("./import-history.js");
|
|
@@ -306,7 +306,7 @@ if (args.includes("--global")) {
|
|
|
306
306
|
const { initStore } = await import("../lib/store.js");
|
|
307
307
|
await initStore();
|
|
308
308
|
const { sendMessage } = await import("../lib/messaging.js");
|
|
309
|
-
const { getActiveAgent } = await import("../active-agent-
|
|
309
|
+
const { getActiveAgent } = await import("../active-agent-IGVX2AAK.js");
|
|
310
310
|
const { agentId } = getActiveAgent();
|
|
311
311
|
const result = await sendMessage({
|
|
312
312
|
fromAgent: agentId,
|
|
@@ -325,23 +325,12 @@ ID: ${result.id}`);
|
|
|
325
325
|
} else if (args[0] === "license") {
|
|
326
326
|
await runLicense(args.slice(1));
|
|
327
327
|
} else if (args[0] === "healthcheck") {
|
|
328
|
-
const {
|
|
329
|
-
const {
|
|
330
|
-
|
|
331
|
-
for (const r of results) {
|
|
332
|
-
const icon = r.pass ? "\x1B[32m\u2713\x1B[0m" : "\x1B[31m\u2717\x1B[0m";
|
|
333
|
-
console.log(` ${icon} ${r.name}`);
|
|
334
|
-
console.log(` ${r.detail}`);
|
|
335
|
-
}
|
|
336
|
-
console.log(failed === 0 ? `
|
|
337
|
-
\x1B[32m${passed} passed\x1B[0m
|
|
338
|
-
` : `
|
|
339
|
-
\x1B[32m${passed} passed\x1B[0m, \x1B[31m${failed} failed\x1B[0m
|
|
340
|
-
`);
|
|
341
|
-
process.exit(failed > 0 ? 1 : 0);
|
|
328
|
+
const { runHealthCheckWithDeadline } = await import("./exe-healthcheck.js");
|
|
329
|
+
const { code } = runHealthCheckWithDeadline();
|
|
330
|
+
process.exit(code);
|
|
342
331
|
} else if (args[0] === "doctor") {
|
|
343
332
|
if (args.includes("--drift")) {
|
|
344
|
-
const { runDrift } = await import("../exe-drift-
|
|
333
|
+
const { runDrift } = await import("../exe-drift-VOJZYOIO.js");
|
|
345
334
|
await runDrift(args.slice(1));
|
|
346
335
|
} else {
|
|
347
336
|
const { runCcDoctor } = await import("./cc-doctor.js");
|
|
@@ -358,7 +347,7 @@ ID: ${result.id}`);
|
|
|
358
347
|
}
|
|
359
348
|
} else if (args[0] === "backup") {
|
|
360
349
|
const sub = args[1];
|
|
361
|
-
const { listBackups, createBackup, restoreBackup } = await import("../db-backup-
|
|
350
|
+
const { listBackups, createBackup, restoreBackup } = await import("../db-backup-I5GQBRIG.js");
|
|
362
351
|
if (sub === "list" || !sub) {
|
|
363
352
|
const backups = listBackups();
|
|
364
353
|
if (backups.length === 0) {
|
|
@@ -413,7 +402,7 @@ ID: ${result.id}`);
|
|
|
413
402
|
process.exit(1);
|
|
414
403
|
}
|
|
415
404
|
} else if (args[0] === "setup" || args[0] === "-setup" || args[0] === "--setup") {
|
|
416
|
-
const { runSetupWizard } = await import("../setup-wizard-
|
|
405
|
+
const { runSetupWizard } = await import("../setup-wizard-5STOE3PS.js");
|
|
417
406
|
await runSetupWizard({
|
|
418
407
|
skipModel: args.includes("--skip-model"),
|
|
419
408
|
nonInteractive: args.includes("--non-interactive") || args.includes("-y") || args.includes("--yes"),
|
|
@@ -466,10 +455,10 @@ Post-deploy verification \u2014 8 runtime checks after stack-update.
|
|
|
466
455
|
`);
|
|
467
456
|
process.exit(report.failed > 0 ? 1 : 0);
|
|
468
457
|
} else if (args[0] === "snapshot") {
|
|
469
|
-
const { main: runSnapshot } = await import("../exe-snapshot-
|
|
458
|
+
const { main: runSnapshot } = await import("../exe-snapshot-TDQI34DW.js");
|
|
470
459
|
await runSnapshot(args.slice(1));
|
|
471
460
|
} else if (args[0] === "boot") {
|
|
472
|
-
const { projectBoot, parseBootArgs } = await import("../project-boot-
|
|
461
|
+
const { projectBoot, parseBootArgs } = await import("../project-boot-TOFNGMHM.js");
|
|
473
462
|
const bootOpts = parseBootArgs(args.slice(1));
|
|
474
463
|
console.log(await projectBoot(bootOpts));
|
|
475
464
|
} else if (args[0] === "brand") {
|
|
@@ -583,7 +572,7 @@ cd into a project folder and run \x1B[1m${cooName}1\x1B[0m to boot your COO.
|
|
|
583
572
|
}
|
|
584
573
|
}
|
|
585
574
|
async function runCodeContext(ccArgs) {
|
|
586
|
-
const { buildCodeContextIndex, getCodeContextStats, searchCodeContext } = await import("../code-context-index-
|
|
575
|
+
const { buildCodeContextIndex, getCodeContextStats, searchCodeContext } = await import("../code-context-index-NODPVXHC.js");
|
|
587
576
|
const sub = ccArgs[0] ?? "status";
|
|
588
577
|
const projectRoot = valueAfter(ccArgs, "--project-root") ?? process.cwd();
|
|
589
578
|
if (sub === "init" || sub === "index") {
|
|
@@ -659,7 +648,7 @@ function numberAfter(args2, flag) {
|
|
|
659
648
|
return Number.isFinite(parsed) ? parsed : void 0;
|
|
660
649
|
}
|
|
661
650
|
async function runClaudeInstall() {
|
|
662
|
-
const { runInstaller } = await import("../installer-
|
|
651
|
+
const { runInstaller } = await import("../installer-U7D3PAR5.js");
|
|
663
652
|
try {
|
|
664
653
|
await runInstaller();
|
|
665
654
|
} catch (err) {
|
|
@@ -671,7 +660,7 @@ async function runClaudeInstall() {
|
|
|
671
660
|
}
|
|
672
661
|
}
|
|
673
662
|
async function runOpenCodeInstall() {
|
|
674
|
-
const { runOpenCodeInstaller } = await import("../installer-
|
|
663
|
+
const { runOpenCodeInstaller } = await import("../installer-W4SHZFOR.js");
|
|
675
664
|
try {
|
|
676
665
|
await runOpenCodeInstaller();
|
|
677
666
|
} catch (err) {
|
|
@@ -683,7 +672,7 @@ async function runOpenCodeInstall() {
|
|
|
683
672
|
}
|
|
684
673
|
}
|
|
685
674
|
async function runCodexInstall() {
|
|
686
|
-
const { runCodexInstaller } = await import("../installer-
|
|
675
|
+
const { runCodexInstaller } = await import("../installer-WHO23TIO.js");
|
|
687
676
|
try {
|
|
688
677
|
await runCodexInstaller();
|
|
689
678
|
} catch (err) {
|
|
@@ -695,7 +684,7 @@ async function runCodexInstall() {
|
|
|
695
684
|
}
|
|
696
685
|
}
|
|
697
686
|
async function runClaudeCheck() {
|
|
698
|
-
const { detectMcpNameCollisions } = await import("../installer-
|
|
687
|
+
const { detectMcpNameCollisions } = await import("../installer-U7D3PAR5.js");
|
|
699
688
|
const claudeDir = path.join(os.homedir(), ".claude");
|
|
700
689
|
const settingsPath = path.join(claudeDir, "settings.json");
|
|
701
690
|
const claudeJsonPath = path.join(os.homedir(), ".claude.json");
|
|
@@ -1200,6 +1189,13 @@ async function runCloudSync() {
|
|
|
1200
1189
|
const { cloudSync } = await import("../lib/cloud-sync.js");
|
|
1201
1190
|
const { getMasterKey } = await import("../lib/keychain.js");
|
|
1202
1191
|
const { initSyncCrypto } = await import("../lib/crypto.js");
|
|
1192
|
+
const { assertCloudSyncReachable, withTimeout } = await import("./exe-cloud.js");
|
|
1193
|
+
try {
|
|
1194
|
+
await assertCloudSyncReachable(config.cloud.endpoint);
|
|
1195
|
+
} catch (err) {
|
|
1196
|
+
console.error(`Cloud sync aborted: ${err instanceof Error ? err.message : String(err)}`);
|
|
1197
|
+
process.exit(1);
|
|
1198
|
+
}
|
|
1203
1199
|
await initStore();
|
|
1204
1200
|
const masterKey = await getMasterKey();
|
|
1205
1201
|
if (masterKey) {
|
|
@@ -1211,7 +1207,8 @@ async function runCloudSync() {
|
|
|
1211
1207
|
}
|
|
1212
1208
|
console.log("Syncing with Exe Cloud now... (Normally this runs automatically in the background.)");
|
|
1213
1209
|
try {
|
|
1214
|
-
const
|
|
1210
|
+
const syncTimeoutMs = Number(process.env.EXE_CLOUD_SYNC_TIMEOUT_MS ?? 6e5);
|
|
1211
|
+
const result = await withTimeout(cloudSync(config.cloud), syncTimeoutMs, "Cloud sync");
|
|
1215
1212
|
console.log("");
|
|
1216
1213
|
console.log(` Active memories: ${result.totalMemories} (\u2191 ${result.pushed} syncable rows pushed, \u2193 ${result.pulled} pulled)`);
|
|
1217
1214
|
console.log(` Behaviors: ${result.behaviors.pushed} total (\u2193 ${result.behaviors.pulled} pulled)`);
|
|
@@ -99,6 +99,7 @@ test("No unscoped task queries \u2014 all task queries have session scope or PK
|
|
|
99
99
|
const blockLower = block.toLowerCase();
|
|
100
100
|
const hasScope = blockLower.includes("scope.sql") || blockLower.includes("sessionscopefilter") || blockLower.includes("strictsessionscopefilter") || blockLower.includes("session_scope") || blockLower.includes("intentionally unscoped") || blockLower.includes("audited 2026") || blockLower.includes("querytaskrows");
|
|
101
101
|
const isSafe = hasScope || /where\s+id\s*=\s*\?/.test(blockLower) || // PK lookup by full UUID
|
|
102
|
+
/where\s+id\s+in\s*\(\s*(\?|\$\{)/.test(blockLower) || // PK lookup by explicit id list (bulk update by ids, e.g. closeReviewRows) — strongest scope, not a subquery
|
|
102
103
|
/where\s+task_file\s*=\s*\?/.test(blockLower) || // task_file exact match
|
|
103
104
|
/select\s+count\s*\(\s*\*\s*\)/.test(blockLower) || // COUNT(*) stats
|
|
104
105
|
/assigned_to\s*=\s*\?.*where\s+id/.test(blockLower) || // UPDATE by PK
|