@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
package/dist/tui/App.js
CHANGED
|
@@ -1,27 +1,34 @@
|
|
|
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
|
sessionScopeFilter
|
|
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 {
|
|
@@ -30,15 +37,15 @@ import {
|
|
|
30
37
|
import {
|
|
31
38
|
DEFAULT_COORDINATOR_TEMPLATE_NAME,
|
|
32
39
|
isCoordinatorName
|
|
33
|
-
} from "../chunk-
|
|
40
|
+
} from "../chunk-46AMZT3C.js";
|
|
34
41
|
import "../chunk-2I23RPSI.js";
|
|
35
|
-
import "../chunk-
|
|
42
|
+
import "../chunk-MV5OSOP4.js";
|
|
36
43
|
import "../chunk-PNQDP3OA.js";
|
|
37
44
|
import "../chunk-H73TUI4Y.js";
|
|
38
45
|
import "../chunk-7HLWBYH7.js";
|
|
39
46
|
import "../chunk-FXU7JOXK.js";
|
|
40
|
-
import "../chunk-
|
|
41
|
-
import "../chunk-
|
|
47
|
+
import "../chunk-L5TUAHLX.js";
|
|
48
|
+
import "../chunk-RYZR4NNE.js";
|
|
42
49
|
import {
|
|
43
50
|
THEME_MODES,
|
|
44
51
|
tuiPalette
|
|
@@ -7411,7 +7418,7 @@ function useOrchestrator(enabled = true) {
|
|
|
7411
7418
|
let cancelled = false;
|
|
7412
7419
|
async function init() {
|
|
7413
7420
|
try {
|
|
7414
|
-
const { MultiAgentOrchestrator } = await import("../orchestrator-
|
|
7421
|
+
const { MultiAgentOrchestrator } = await import("../orchestrator-NHMTDGWJ.js");
|
|
7415
7422
|
const { getCoordinatorName, isCoordinatorRole, loadEmployees } = await import("../lib/employees.js");
|
|
7416
7423
|
const { isExeSession } = await import("../lib/tmux-routing.js");
|
|
7417
7424
|
const { listTmuxSessions, inTmux } = await import("../lib/tmux-status.js");
|
|
@@ -7452,7 +7459,7 @@ function useOrchestrator(enabled = true) {
|
|
|
7452
7459
|
setTotalInProgress(health.totalInProgress);
|
|
7453
7460
|
try {
|
|
7454
7461
|
const { getClient } = await import("../lib/database.js");
|
|
7455
|
-
const { sessionScopeFilter: sessionScopeFilter2 } = await import("../task-scope-
|
|
7462
|
+
const { sessionScopeFilter: sessionScopeFilter2 } = await import("../task-scope-FLDBFGWR.js");
|
|
7456
7463
|
const client = getClient();
|
|
7457
7464
|
const uoScope = sessionScopeFilter2();
|
|
7458
7465
|
const result = await client.execute({
|
|
@@ -7484,7 +7491,7 @@ function useOrchestrator(enabled = true) {
|
|
|
7484
7491
|
const spawnSession = useCallback5(
|
|
7485
7492
|
async (agentId) => {
|
|
7486
7493
|
try {
|
|
7487
|
-
const { createTaskCore } = await import("../tasks-crud-
|
|
7494
|
+
const { createTaskCore } = await import("../tasks-crud-DKOSSXTD.js");
|
|
7488
7495
|
const { ensureEmployee } = await import("../lib/tmux-routing.js");
|
|
7489
7496
|
const { getCoordinatorName } = await import("../lib/employees.js");
|
|
7490
7497
|
await createTaskCore({
|
|
@@ -8108,7 +8115,7 @@ function TasksView({ onBack }) {
|
|
|
8108
8115
|
const { withTrace } = await import("../telemetry-43X3GT3R.js");
|
|
8109
8116
|
return withTrace("tui.tasks.loadTasks", async () => {
|
|
8110
8117
|
try {
|
|
8111
|
-
const { loadTaskList } = await import("../tui-data-
|
|
8118
|
+
const { loadTaskList } = await import("../tui-data-JDBTFDAF.js");
|
|
8112
8119
|
const tasks = await loadTaskList();
|
|
8113
8120
|
setAllTasks(
|
|
8114
8121
|
tasks.map((task) => ({
|
|
@@ -8941,7 +8948,7 @@ function TeamView({ onBack, onViewSessions }) {
|
|
|
8941
8948
|
let projectsByEmployee = /* @__PURE__ */ new Map();
|
|
8942
8949
|
let currentTaskByEmployee = /* @__PURE__ */ new Map();
|
|
8943
8950
|
try {
|
|
8944
|
-
const { loadTeamBadgeCounts, loadTeamDetailMetrics } = await import("../tui-data-
|
|
8951
|
+
const { loadTeamBadgeCounts, loadTeamDetailMetrics } = await import("../tui-data-JDBTFDAF.js");
|
|
8945
8952
|
setBadgeInFlight(true);
|
|
8946
8953
|
const badgeCountsPromise = loadTeamBadgeCounts();
|
|
8947
8954
|
const detailsPromise = loadTeamDetailMetrics(roster.map((emp) => emp.name));
|
|
@@ -9307,7 +9314,7 @@ function WikiView({ onBack }) {
|
|
|
9307
9314
|
}
|
|
9308
9315
|
setSearchLoading(true);
|
|
9309
9316
|
try {
|
|
9310
|
-
const { searchWikiMemoryRows } = await import("../tui-data-
|
|
9317
|
+
const { searchWikiMemoryRows } = await import("../tui-data-JDBTFDAF.js");
|
|
9311
9318
|
setSearchResults(await searchWikiMemoryRows(query));
|
|
9312
9319
|
} catch {
|
|
9313
9320
|
setSearchResults([]);
|
|
@@ -1,35 +1,42 @@
|
|
|
1
1
|
import {
|
|
2
2
|
sessionScopeFilter
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-
|
|
5
|
-
import "./chunk-
|
|
6
|
-
import "./chunk-
|
|
3
|
+
} from "./chunk-XK7HAEFC.js";
|
|
4
|
+
import "./chunk-3LZILUET.js";
|
|
5
|
+
import "./chunk-BKOGHVRO.js";
|
|
6
|
+
import "./chunk-U3VSCPGX.js";
|
|
7
|
+
import "./chunk-EIKATSE4.js";
|
|
7
8
|
import "./chunk-E23LNUWJ.js";
|
|
8
9
|
import "./chunk-4JERP7NT.js";
|
|
9
|
-
import "./chunk-
|
|
10
|
+
import "./chunk-3CT3GN2B.js";
|
|
10
11
|
import "./chunk-SSTLTIF3.js";
|
|
11
12
|
import "./chunk-RMOBQ6A5.js";
|
|
12
13
|
import "./chunk-54QCG45Y.js";
|
|
13
|
-
import "./chunk-
|
|
14
|
-
import "./chunk-
|
|
14
|
+
import "./chunk-364VBQIC.js";
|
|
15
|
+
import "./chunk-FROUDYRT.js";
|
|
15
16
|
import "./chunk-NGP6LSV2.js";
|
|
16
|
-
import "./chunk-
|
|
17
|
+
import "./chunk-GHARDROH.js";
|
|
17
18
|
import "./chunk-CVYC6DUW.js";
|
|
19
|
+
import "./chunk-W33H7TWW.js";
|
|
20
|
+
import "./chunk-HCJCW7X4.js";
|
|
18
21
|
import "./chunk-OPU3NYOO.js";
|
|
22
|
+
import "./chunk-UPLY33F7.js";
|
|
23
|
+
import "./chunk-AFNRE2RV.js";
|
|
24
|
+
import "./chunk-3NGZ4PL7.js";
|
|
25
|
+
import "./chunk-NLEW62VC.js";
|
|
19
26
|
import "./chunk-HYZV25LY.js";
|
|
20
27
|
import "./chunk-GJV3WDWM.js";
|
|
21
28
|
import "./chunk-MP2AFCGL.js";
|
|
22
29
|
import {
|
|
23
30
|
getClient
|
|
24
|
-
} from "./chunk-
|
|
31
|
+
} from "./chunk-46AMZT3C.js";
|
|
25
32
|
import "./chunk-2I23RPSI.js";
|
|
26
|
-
import "./chunk-
|
|
33
|
+
import "./chunk-MV5OSOP4.js";
|
|
27
34
|
import "./chunk-PNQDP3OA.js";
|
|
28
35
|
import "./chunk-H73TUI4Y.js";
|
|
29
36
|
import "./chunk-7HLWBYH7.js";
|
|
30
37
|
import "./chunk-FXU7JOXK.js";
|
|
31
|
-
import "./chunk-
|
|
32
|
-
import "./chunk-
|
|
38
|
+
import "./chunk-L5TUAHLX.js";
|
|
39
|
+
import "./chunk-RYZR4NNE.js";
|
|
33
40
|
import "./chunk-7Y5UDEVM.js";
|
|
34
41
|
import "./chunk-SHIICYJW.js";
|
|
35
42
|
import "./chunk-MLKGABMK.js";
|
|
@@ -10,8 +10,8 @@ import {
|
|
|
10
10
|
persistWorkflows,
|
|
11
11
|
runWorkflow,
|
|
12
12
|
startWorkflow
|
|
13
|
-
} from "./chunk-
|
|
14
|
-
import "./chunk-
|
|
13
|
+
} from "./chunk-RYJH6S55.js";
|
|
14
|
+
import "./chunk-TVY65H23.js";
|
|
15
15
|
import "./chunk-MLKGABMK.js";
|
|
16
16
|
export {
|
|
17
17
|
advanceWorkflow,
|
|
@@ -7,11 +7,11 @@ import {
|
|
|
7
7
|
parseInstanceLabel,
|
|
8
8
|
worktreeBranch,
|
|
9
9
|
worktreePath
|
|
10
|
-
} from "./chunk-
|
|
11
|
-
import "./chunk-
|
|
12
|
-
import "./chunk-
|
|
10
|
+
} from "./chunk-BKOGHVRO.js";
|
|
11
|
+
import "./chunk-364VBQIC.js";
|
|
12
|
+
import "./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";
|
|
@@ -2,12 +2,12 @@ import {
|
|
|
2
2
|
cleanupAgentWorktree,
|
|
3
3
|
discoverRepoPaths,
|
|
4
4
|
sweepWorktrees
|
|
5
|
-
} from "./chunk-
|
|
6
|
-
import "./chunk-
|
|
7
|
-
import "./chunk-
|
|
8
|
-
import "./chunk-
|
|
5
|
+
} from "./chunk-IFXE7QYT.js";
|
|
6
|
+
import "./chunk-BKOGHVRO.js";
|
|
7
|
+
import "./chunk-364VBQIC.js";
|
|
8
|
+
import "./chunk-46AMZT3C.js";
|
|
9
9
|
import "./chunk-2I23RPSI.js";
|
|
10
|
-
import "./chunk-
|
|
10
|
+
import "./chunk-MV5OSOP4.js";
|
|
11
11
|
import "./chunk-PNQDP3OA.js";
|
|
12
12
|
import "./chunk-H73TUI4Y.js";
|
|
13
13
|
import "./chunk-7HLWBYH7.js";
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@askexenow/exe-os",
|
|
3
|
-
"version": "0.9.
|
|
4
|
-
"description": "AI employee operating system
|
|
3
|
+
"version": "0.9.323",
|
|
4
|
+
"description": "AI employee operating system \u2014 persistent memory, task management, and multi-agent coordination for Claude Code.",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"repository": {
|
|
@@ -114,7 +114,7 @@
|
|
|
114
114
|
"deploy": "node dist/bin/pre-build-guard.js && npm run build && (node dist/bin/prune-orphan-chunks.js || true) && npm install -g . && node dist/bin/install.js --global && echo '[exe-os] Deploy complete. Run /mcp in active sessions to reconnect.'",
|
|
115
115
|
"postinstall": "node dist/bin/install.js --commands-only || true",
|
|
116
116
|
"prepublishOnly": "npm run typecheck && npm run build && node dist/bin/prune-orphan-chunks.js --force && npm run guard:esm-require && npm run check:schema-version && node dist/bin/customer-readiness.js && node dist/bin/pre-publish.js",
|
|
117
|
-
"test:publish": "npx vitest run --maxWorkers=4 --exclude 'tests/tui/**' --exclude 'tests/lib/tmux-routing.test.ts' --exclude 'tests/lib/intercom-routing.test.ts' --exclude 'tests/gateway/**' --exclude 'tests/mcp/ingest-document.test.ts' --exclude 'tests/lib/hybrid-search.test.ts' --exclude 'tests/lib/worker-gate.test.ts' --exclude 'tests/daemon-perf-stress.test.ts' --exclude 'tests/lib/gateway-client.test.ts' --exclude 'tests/lib/ws-client.test.ts' --exclude 'tests/lib/ws-auth.test.ts' --exclude 'tests/integration/clean-stack-projection.test.ts' --exclude 'tests/device-id-split-brain.test.ts' --exclude 'tests/orchestration/dispatch-chain.test.ts' --exclude 'tests/orchestration/e2e-flow.test.ts' --exclude 'tests/lib/reaper-deps-async.test.ts' --exclude 'tests/lib/find-free-instance.test.ts' --exclude 'tests/lib/db-backup-recovery.test.ts' && echo '::warning::clean-stack-projection quarantined (needs Docker); ws-client/ws-auth quarantined (30-120s timeouts flaky on Node 20 CI runner
|
|
117
|
+
"test:publish": "npx vitest run --maxWorkers=4 --exclude 'tests/tui/**' --exclude 'tests/lib/tmux-routing.test.ts' --exclude 'tests/lib/intercom-routing.test.ts' --exclude 'tests/gateway/**' --exclude 'tests/mcp/ingest-document.test.ts' --exclude 'tests/lib/hybrid-search.test.ts' --exclude 'tests/lib/worker-gate.test.ts' --exclude 'tests/daemon-perf-stress.test.ts' --exclude 'tests/lib/gateway-client.test.ts' --exclude 'tests/lib/ws-client.test.ts' --exclude 'tests/lib/ws-auth.test.ts' --exclude 'tests/integration/clean-stack-projection.test.ts' --exclude 'tests/device-id-split-brain.test.ts' --exclude 'tests/orchestration/dispatch-chain.test.ts' --exclude 'tests/orchestration/e2e-flow.test.ts' --exclude 'tests/lib/reaper-deps-async.test.ts' --exclude 'tests/lib/find-free-instance.test.ts' --exclude 'tests/lib/db-backup-recovery.test.ts' && echo '::warning::clean-stack-projection quarantined (needs Docker); ws-client/ws-auth quarantined (30-120s timeouts flaky on Node 20 CI runner \u2014 passes locally). Quarantined to match build-and-test (required gate): device-id-split-brain/dispatch-chain/e2e-flow/reaper-deps-async (timing-sensitive, flaky under parallel load \u2014 bug dfb25bf1), find-free-instance (parallelism race) and db-backup-recovery (load-sensitive, feature 57a1d161) \u2014 all pass reliably in isolation (maxWorkers=1); still covered by build-and-test/extended-tests in CI. See cicd-audit-2026-06-18.md.' && npx vitest run --maxWorkers=1 tests/daemon-perf-stress.test.ts tests/lib/gateway-client.test.ts",
|
|
118
118
|
"benchmark:longmemeval": "npx tsx tests/benchmarks/longmemeval.ts",
|
|
119
119
|
"guard:esm-require": "node scripts/check-no-runtime-require.mjs",
|
|
120
120
|
"check:schema-version": "node scripts/check-schema-version.mjs",
|
package/release-notes.json
CHANGED
|
@@ -1,6 +1,56 @@
|
|
|
1
1
|
{
|
|
2
|
-
"current": "0.9.
|
|
2
|
+
"current": "0.9.323",
|
|
3
3
|
"notes": {
|
|
4
|
+
"0.9.323": {
|
|
5
|
+
"version": "0.9.323",
|
|
6
|
+
"date": "2026-07-04",
|
|
7
|
+
"features": [
|
|
8
|
+
"pass EXE_GATEWAY_CONFIRM_BAILEYS_V7_REPAIR through to the gateway container",
|
|
9
|
+
"make bug report product mutable via admin update path (feature 3bd42602) (#301)",
|
|
10
|
+
"self-serve plan-refresh UX — pick up upgrades without editing the cache (feature 045ddd2b)",
|
|
11
|
+
"one-way license sync — D1 users (SoT) → billing.licenses",
|
|
12
|
+
"validate manifest license keys against local billing.licenses",
|
|
13
|
+
"serve /v1/stack-manifest.json from billing.stack_releases"
|
|
14
|
+
],
|
|
15
|
+
"fixes": [
|
|
16
|
+
"chunk+budget reflection/consolidation sweeps, db.lock singleton fail-fast, healthcheck hard deadline (P0 77-min event-loop blocks, Nikki incident 2026-07-04)",
|
|
17
|
+
"repair TS2339 in MCP listen error path (err narrowed to never after instanceof guard)",
|
|
18
|
+
"isolate background sync from MCP loop",
|
|
19
|
+
"wait for real MCP listen before embeddings",
|
|
20
|
+
"recognize WHERE id IN (...) as a PK guard",
|
|
21
|
+
"guard lock fd open under errexit",
|
|
22
|
+
"harden token budget and runner preflight",
|
|
23
|
+
"reduce MCP telemetry and requeue ERP projections",
|
|
24
|
+
"preserve gateway overlays and auth volume paths",
|
|
25
|
+
"resolve sidechain subagent roles deterministically",
|
|
26
|
+
"surface stale dispatch and delegated parent reviews",
|
|
27
|
+
"restart stale daemon after package update",
|
|
28
|
+
"dedupe outbox reports and atomic bug notes",
|
|
29
|
+
"fix cloud sync memory push pagination",
|
|
30
|
+
"recover stalled workers + reject retired models & non-roster spawns",
|
|
31
|
+
"starvation-aware orchestration tick + boot backoff + boot-abort logging",
|
|
32
|
+
"sync stack-parity wiki npm pin literal to 0.9.322 (matches compose + manifest; my 49c9a21c compose sync missed this hardcoded twin — CI blocker)",
|
|
33
|
+
"replace license-gated gitleaks-action with pinned+checksummed gitleaks CLI (secret-scan broke on upstream licensing change — release blocker)",
|
|
34
|
+
"sync compose wiki exe-os npm pin to stack manifest 0.9.322 (release-blocker: deploy-validation drift from v0.9.28 stack release)",
|
|
35
|
+
"fail fast with clear errors instead of hanging when the cloud backend is down (bug 2d2143a3)",
|
|
36
|
+
"per-SHA concurrency on main so release commits keep their CI run (bug 252e93ae)",
|
|
37
|
+
"SSO edge validates access_token against GoTrue + route auth.<domain> through exe-auth gateway",
|
|
38
|
+
"wire dead-scope rescue into cross-session guard (incident 2026-07-03 — unstrands tasks owned by dead coordinator sessions, e.g. 757a58ed/exe6)",
|
|
39
|
+
"third-party image tag-pinning + per-pull registry re-auth, exe-db stable host port, CRM_API_TOKEN passthrough",
|
|
40
|
+
"durable dispatch journal, resume respects task scope, strict scoping for multi-coordinator (incident 2026-07-03 C3/C7/C8)"
|
|
41
|
+
],
|
|
42
|
+
"security": [],
|
|
43
|
+
"other": [
|
|
44
|
+
"triaged gitleaks baseline via .gitleaksignore — 35 historical findings (hygo.yml creds deleted in f1dd387e pending rotation/purge decision; rest are fixtures) — new leaks still fail CI",
|
|
45
|
+
"release v0.9.323 — incident 2026-07-03 remediation: watchdog/daemon stability, nudge pipeline, task atomicity, retrieval pillars, SSO edge validation",
|
|
46
|
+
"sync release-notes.json to v0.9.322 (generated drift from release pipeline)",
|
|
47
|
+
"release v0.9.321 — self-serve license refresh + license SoT sync + workflow_dispatch (supersedes stuck v0.9.320)",
|
|
48
|
+
"add workflow_dispatch trigger — allow manual CI run on a release SHA to satisfy the publish green-CI gate (unblocks 252e93ae releases)",
|
|
49
|
+
"gate license cloud re-check behind 10-min cache freshness",
|
|
50
|
+
"release v0.9.320 — embed-worker OOM backstop + CI gate repair + registry-proxy stack-manifest"
|
|
51
|
+
],
|
|
52
|
+
"migration_notes": []
|
|
53
|
+
},
|
|
4
54
|
"0.9.322": {
|
|
5
55
|
"version": "0.9.322",
|
|
6
56
|
"date": "2026-07-03",
|
|
@@ -72,24 +122,6 @@
|
|
|
72
122
|
"use shared resolveClaudeBinaryPath from cc-binary-detect"
|
|
73
123
|
],
|
|
74
124
|
"migration_notes": []
|
|
75
|
-
},
|
|
76
|
-
"0.9.318": {
|
|
77
|
-
"version": "0.9.318",
|
|
78
|
-
"date": "2026-06-30",
|
|
79
|
-
"features": [
|
|
80
|
-
"Wave 2: 6 additive non-breaking features (#277) — white-label branding in setup wizard + CLI (config-driven, default 'Exe OS'), /exe-timers timer-health dashboard, structured play/explore session mode, knowledge-graph garbage cleanup (opt-in, dry-run default) + extractor fix, memory-pressure watchdog (3rd kill tier; default off + dry-run), and event-loop-block 503 health reporting",
|
|
81
|
-
"Incremental cloud sync for all data types (#278): versioned push-skip avoids full-table scans on unchanged data (schema v8 version columns/triggers)"
|
|
82
|
-
],
|
|
83
|
-
"fixes": [
|
|
84
|
-
"cloud-sync: write version on pull + strict version guards to stop perpetual cross-device re-push ping-pong on 5 tables",
|
|
85
|
-
"v8 migration: prevent entities_fts SQLITE_CORRUPT_VTAB on version-bump — scoped entities_fts_au to AFTER UPDATE OF name; schema v9 with idempotent trigger repair for already-v8 DBs (#279)",
|
|
86
|
-
"orchestration: stop silent no-spawn from a leaked spawn lock; daemon liveness probe via GET /health; native-installer claude binary resolution for employee spawn; break daemon starvation restart spiral"
|
|
87
|
-
],
|
|
88
|
-
"security": [],
|
|
89
|
-
"other": [],
|
|
90
|
-
"migration_notes": [
|
|
91
|
-
"Schema auto-migrates v7→v9 on first boot: additive incremental-sync version columns + triggers (no data loss), and an entities_fts trigger-scope repair. No action required."
|
|
92
|
-
]
|
|
93
125
|
}
|
|
94
126
|
}
|
|
95
127
|
}
|
package/dist/chunk-4FVVJ7ME.js
DELETED
|
@@ -1,193 +0,0 @@
|
|
|
1
|
-
// src/lib/intercom-queue.ts
|
|
2
|
-
import { readFileSync, writeFileSync, renameSync, existsSync, mkdirSync, appendFileSync, openSync, closeSync, writeSync, unlinkSync, constants, statSync } from "fs";
|
|
3
|
-
import path from "path";
|
|
4
|
-
import os from "os";
|
|
5
|
-
var QUEUE_PATH = path.join(os.homedir(), ".exe-os", "intercom-queue.json");
|
|
6
|
-
var QUEUE_LOCK_PATH = `${QUEUE_PATH}.lock`;
|
|
7
|
-
var MAX_RETRIES = 10;
|
|
8
|
-
var TTL_MS = 60 * 60 * 1e3;
|
|
9
|
-
function ensureDir() {
|
|
10
|
-
const dir = path.dirname(QUEUE_PATH);
|
|
11
|
-
if (!existsSync(dir)) mkdirSync(dir, { recursive: true });
|
|
12
|
-
}
|
|
13
|
-
function acquireQueueLock() {
|
|
14
|
-
ensureDir();
|
|
15
|
-
const data = JSON.stringify({ pid: process.pid, timestamp: Date.now() });
|
|
16
|
-
const deadline = Date.now() + 250;
|
|
17
|
-
while (Date.now() < deadline) {
|
|
18
|
-
try {
|
|
19
|
-
const fd = openSync(QUEUE_LOCK_PATH, constants.O_WRONLY | constants.O_CREAT | constants.O_EXCL, 384);
|
|
20
|
-
writeSync(fd, data);
|
|
21
|
-
closeSync(fd);
|
|
22
|
-
return true;
|
|
23
|
-
} catch (err) {
|
|
24
|
-
if (err.code !== "EEXIST") return false;
|
|
25
|
-
try {
|
|
26
|
-
const lock = JSON.parse(readFileSync(QUEUE_LOCK_PATH, "utf8"));
|
|
27
|
-
if (Date.now() - Number(lock.timestamp ?? 0) > 3e4) unlinkSync(QUEUE_LOCK_PATH);
|
|
28
|
-
} catch {
|
|
29
|
-
try {
|
|
30
|
-
unlinkSync(QUEUE_LOCK_PATH);
|
|
31
|
-
} catch {
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, 25);
|
|
36
|
-
}
|
|
37
|
-
return false;
|
|
38
|
-
}
|
|
39
|
-
function releaseQueueLock() {
|
|
40
|
-
try {
|
|
41
|
-
unlinkSync(QUEUE_LOCK_PATH);
|
|
42
|
-
} catch {
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
function readQueue() {
|
|
46
|
-
try {
|
|
47
|
-
if (!existsSync(QUEUE_PATH)) return [];
|
|
48
|
-
return JSON.parse(readFileSync(QUEUE_PATH, "utf8"));
|
|
49
|
-
} catch {
|
|
50
|
-
return [];
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
function writeQueue(queue) {
|
|
54
|
-
ensureDir();
|
|
55
|
-
const tmp = `${QUEUE_PATH}.tmp`;
|
|
56
|
-
writeFileSync(tmp, JSON.stringify(queue, null, 2), { mode: 384 });
|
|
57
|
-
renameSync(tmp, QUEUE_PATH);
|
|
58
|
-
}
|
|
59
|
-
function queueIntercom(targetSession, reason, intercomReason = "nudge") {
|
|
60
|
-
if (!acquireQueueLock()) return;
|
|
61
|
-
try {
|
|
62
|
-
const queue = readQueue();
|
|
63
|
-
const existing = queue.find((q) => q.targetSession === targetSession);
|
|
64
|
-
if (existing) {
|
|
65
|
-
existing.attempts++;
|
|
66
|
-
existing.queuedAt = (/* @__PURE__ */ new Date()).toISOString();
|
|
67
|
-
existing.reason = reason;
|
|
68
|
-
existing.intercomReason = intercomReason;
|
|
69
|
-
} else {
|
|
70
|
-
queue.push({
|
|
71
|
-
targetSession,
|
|
72
|
-
queuedAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
73
|
-
attempts: 0,
|
|
74
|
-
reason,
|
|
75
|
-
intercomReason
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
|
-
writeQueue(queue);
|
|
79
|
-
} finally {
|
|
80
|
-
releaseQueueLock();
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
var _draining = false;
|
|
84
|
-
function drainQueue(isSessionBusy, sendKeys) {
|
|
85
|
-
if (_draining) {
|
|
86
|
-
logQueue("SKIP_DRAIN \u2014 previous drain still running (possible tmux hang)");
|
|
87
|
-
return { drained: 0, failed: 0 };
|
|
88
|
-
}
|
|
89
|
-
_draining = true;
|
|
90
|
-
const remaining = [];
|
|
91
|
-
let drained = 0;
|
|
92
|
-
let failed = 0;
|
|
93
|
-
let lockAcquired = false;
|
|
94
|
-
try {
|
|
95
|
-
lockAcquired = acquireQueueLock();
|
|
96
|
-
if (!lockAcquired) return { drained: 0, failed: 0 };
|
|
97
|
-
const queue = readQueue();
|
|
98
|
-
if (queue.length === 0) return { drained: 0, failed: 0 };
|
|
99
|
-
for (const item of queue) {
|
|
100
|
-
const age = Date.now() - new Date(item.queuedAt).getTime();
|
|
101
|
-
if (age > TTL_MS) {
|
|
102
|
-
logQueue(`EXPIRED \u2192 ${item.targetSession} (${Math.round(age / 6e4)}min old, reason: ${item.reason})`);
|
|
103
|
-
failed++;
|
|
104
|
-
continue;
|
|
105
|
-
}
|
|
106
|
-
try {
|
|
107
|
-
if (!isSessionBusy(item.targetSession)) {
|
|
108
|
-
const success = sendKeys(item.targetSession, item);
|
|
109
|
-
if (success) {
|
|
110
|
-
logQueue(`DRAINED \u2192 ${item.targetSession} (after ${item.attempts} retries)`);
|
|
111
|
-
drained++;
|
|
112
|
-
continue;
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
} catch {
|
|
116
|
-
}
|
|
117
|
-
item.attempts++;
|
|
118
|
-
if (item.attempts >= MAX_RETRIES) {
|
|
119
|
-
logQueue(`PENDING \u2192 ${item.targetSession} (${MAX_RETRIES} retries exhausted, keeping queued, reason: ${item.reason})`);
|
|
120
|
-
item.attempts = MAX_RETRIES;
|
|
121
|
-
remaining.push(item);
|
|
122
|
-
failed++;
|
|
123
|
-
continue;
|
|
124
|
-
}
|
|
125
|
-
remaining.push(item);
|
|
126
|
-
}
|
|
127
|
-
writeQueue(remaining);
|
|
128
|
-
} finally {
|
|
129
|
-
if (lockAcquired) releaseQueueLock();
|
|
130
|
-
_draining = false;
|
|
131
|
-
}
|
|
132
|
-
return { drained, failed };
|
|
133
|
-
}
|
|
134
|
-
function drainForSession(targetSession, sendKeys) {
|
|
135
|
-
if (!acquireQueueLock()) return false;
|
|
136
|
-
try {
|
|
137
|
-
const queue = readQueue();
|
|
138
|
-
const match = queue.findIndex((q) => q.targetSession === targetSession);
|
|
139
|
-
if (match < 0) return false;
|
|
140
|
-
const item = queue[match];
|
|
141
|
-
const success = sendKeys(targetSession, item);
|
|
142
|
-
if (success) {
|
|
143
|
-
queue.splice(match, 1);
|
|
144
|
-
writeQueue(queue);
|
|
145
|
-
logQueue(`DRAINED \u2192 ${targetSession} (prompt-submit trigger)`);
|
|
146
|
-
return true;
|
|
147
|
-
}
|
|
148
|
-
return false;
|
|
149
|
-
} finally {
|
|
150
|
-
releaseQueueLock();
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
function clearQueueForAgent(agentName) {
|
|
154
|
-
if (!acquireQueueLock()) return;
|
|
155
|
-
try {
|
|
156
|
-
const queue = readQueue();
|
|
157
|
-
const before = queue.length;
|
|
158
|
-
const filtered = queue.filter((q) => !q.targetSession.startsWith(`${agentName}-`));
|
|
159
|
-
if (filtered.length < before) {
|
|
160
|
-
writeQueue(filtered);
|
|
161
|
-
logQueue(`CLEARED ${before - filtered.length} stale item(s) for ${agentName}`);
|
|
162
|
-
}
|
|
163
|
-
} finally {
|
|
164
|
-
releaseQueueLock();
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
function _resetDrainGuard() {
|
|
168
|
-
_draining = false;
|
|
169
|
-
}
|
|
170
|
-
var INTERCOM_LOG = path.join(os.homedir(), ".exe-os", "intercom.log");
|
|
171
|
-
var INTERCOM_LOG_MAX_BYTES = 1024 * 1024;
|
|
172
|
-
function logQueue(msg) {
|
|
173
|
-
const line = `[${(/* @__PURE__ */ new Date()).toISOString()}] [queue] ${msg}
|
|
174
|
-
`;
|
|
175
|
-
process.stderr.write(`[intercom-queue] ${msg}
|
|
176
|
-
`);
|
|
177
|
-
try {
|
|
178
|
-
if (existsSync(INTERCOM_LOG) && statSync(INTERCOM_LOG).size > INTERCOM_LOG_MAX_BYTES) {
|
|
179
|
-
renameSync(INTERCOM_LOG, `${INTERCOM_LOG}.1`);
|
|
180
|
-
}
|
|
181
|
-
appendFileSync(INTERCOM_LOG, line);
|
|
182
|
-
} catch {
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
export {
|
|
187
|
-
readQueue,
|
|
188
|
-
queueIntercom,
|
|
189
|
-
drainQueue,
|
|
190
|
-
drainForSession,
|
|
191
|
-
clearQueueForAgent,
|
|
192
|
-
_resetDrainGuard
|
|
193
|
-
};
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
import "./chunk-MLKGABMK.js";
|
|
2
|
-
|
|
3
|
-
// src/lib/completion-nudge-dedup.ts
|
|
4
|
-
import { existsSync, readFileSync, writeFileSync, mkdirSync } from "fs";
|
|
5
|
-
import { join, dirname } from "path";
|
|
6
|
-
import { homedir } from "os";
|
|
7
|
-
var STATE_PATH = join(homedir(), ".exe-os", "completion-nudge-state.json");
|
|
8
|
-
var COMPLETION_NUDGE_COOLDOWN_MS = Number(process.env.EXE_COMPLETION_NUDGE_COOLDOWN_MS) || 6 * 60 * 60 * 1e3;
|
|
9
|
-
var _state = null;
|
|
10
|
-
function load() {
|
|
11
|
-
if (_state) return _state;
|
|
12
|
-
_state = {};
|
|
13
|
-
try {
|
|
14
|
-
if (existsSync(STATE_PATH)) {
|
|
15
|
-
const raw = JSON.parse(readFileSync(STATE_PATH, "utf8"));
|
|
16
|
-
if (raw && typeof raw === "object" && !Array.isArray(raw)) {
|
|
17
|
-
for (const [k, v] of Object.entries(raw)) {
|
|
18
|
-
if (typeof v === "number") _state[k] = v;
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
} catch {
|
|
23
|
-
}
|
|
24
|
-
return _state;
|
|
25
|
-
}
|
|
26
|
-
function persist(state) {
|
|
27
|
-
try {
|
|
28
|
-
mkdirSync(dirname(STATE_PATH), { recursive: true });
|
|
29
|
-
writeFileSync(STATE_PATH, JSON.stringify(state), "utf8");
|
|
30
|
-
} catch {
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
function prune(state, now) {
|
|
34
|
-
const cutoff = now - 2 * COMPLETION_NUDGE_COOLDOWN_MS;
|
|
35
|
-
for (const [k, ts] of Object.entries(state)) {
|
|
36
|
-
if (ts < cutoff) delete state[k];
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
function claimCompletionNudge(taskId, now = Date.now()) {
|
|
40
|
-
if (!taskId) return true;
|
|
41
|
-
const state = load();
|
|
42
|
-
const last = state[taskId] ?? 0;
|
|
43
|
-
if (now - last < COMPLETION_NUDGE_COOLDOWN_MS) return false;
|
|
44
|
-
state[taskId] = now;
|
|
45
|
-
prune(state, now);
|
|
46
|
-
persist(state);
|
|
47
|
-
return true;
|
|
48
|
-
}
|
|
49
|
-
function recordCompletionNudge(taskId, now = Date.now()) {
|
|
50
|
-
if (!taskId) return;
|
|
51
|
-
const state = load();
|
|
52
|
-
state[taskId] = now;
|
|
53
|
-
prune(state, now);
|
|
54
|
-
persist(state);
|
|
55
|
-
}
|
|
56
|
-
function clearCompletionNudge(taskId) {
|
|
57
|
-
if (!taskId) return;
|
|
58
|
-
const state = load();
|
|
59
|
-
if (state[taskId] !== void 0) {
|
|
60
|
-
delete state[taskId];
|
|
61
|
-
persist(state);
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
function _resetCompletionNudgeState() {
|
|
65
|
-
_state = {};
|
|
66
|
-
persist(_state);
|
|
67
|
-
}
|
|
68
|
-
export {
|
|
69
|
-
COMPLETION_NUDGE_COOLDOWN_MS,
|
|
70
|
-
_resetCompletionNudgeState,
|
|
71
|
-
claimCompletionNudge,
|
|
72
|
-
clearCompletionNudge,
|
|
73
|
-
recordCompletionNudge
|
|
74
|
-
};
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
extractKeywords,
|
|
3
|
-
findBestMatch,
|
|
4
|
-
getRecentCommits,
|
|
5
|
-
matchScore,
|
|
6
|
-
pushUnpushedCommits,
|
|
7
|
-
sweepTasks
|
|
8
|
-
} from "./chunk-3M73L663.js";
|
|
9
|
-
import "./chunk-PLBDXCYZ.js";
|
|
10
|
-
import "./chunk-HWC5W34K.js";
|
|
11
|
-
import "./chunk-KLG53B63.js";
|
|
12
|
-
import "./chunk-4FVVJ7ME.js";
|
|
13
|
-
import "./chunk-E23LNUWJ.js";
|
|
14
|
-
import "./chunk-4JERP7NT.js";
|
|
15
|
-
import "./chunk-ABGDTMKC.js";
|
|
16
|
-
import "./chunk-SSTLTIF3.js";
|
|
17
|
-
import "./chunk-RMOBQ6A5.js";
|
|
18
|
-
import "./chunk-54QCG45Y.js";
|
|
19
|
-
import "./chunk-HV5CUDOE.js";
|
|
20
|
-
import "./chunk-QVFJCFNM.js";
|
|
21
|
-
import "./chunk-NGP6LSV2.js";
|
|
22
|
-
import "./chunk-EPBB2OD3.js";
|
|
23
|
-
import "./chunk-CVYC6DUW.js";
|
|
24
|
-
import "./chunk-OPU3NYOO.js";
|
|
25
|
-
import "./chunk-HYZV25LY.js";
|
|
26
|
-
import "./chunk-GJV3WDWM.js";
|
|
27
|
-
import "./chunk-MP2AFCGL.js";
|
|
28
|
-
import "./chunk-XLNF3CIO.js";
|
|
29
|
-
import "./chunk-2I23RPSI.js";
|
|
30
|
-
import "./chunk-WXRVHXVP.js";
|
|
31
|
-
import "./chunk-PNQDP3OA.js";
|
|
32
|
-
import "./chunk-H73TUI4Y.js";
|
|
33
|
-
import "./chunk-7HLWBYH7.js";
|
|
34
|
-
import "./chunk-FXU7JOXK.js";
|
|
35
|
-
import "./chunk-VY7345RO.js";
|
|
36
|
-
import "./chunk-DQJ3WZRK.js";
|
|
37
|
-
import "./chunk-7Y5UDEVM.js";
|
|
38
|
-
import "./chunk-SHIICYJW.js";
|
|
39
|
-
import "./chunk-MLKGABMK.js";
|
|
40
|
-
export {
|
|
41
|
-
extractKeywords,
|
|
42
|
-
findBestMatch,
|
|
43
|
-
getRecentCommits,
|
|
44
|
-
matchScore,
|
|
45
|
-
pushUnpushedCommits,
|
|
46
|
-
sweepTasks
|
|
47
|
-
};
|