@askexenow/exe-os 0.9.339 → 0.9.341
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{active-agent-EC6M7KTX.js → active-agent-AIQP4DFL.js} +3 -3
- package/dist/{active-agent-WHIUCHLA.js → active-agent-LW45DSJ4.js} +3 -3
- package/dist/{agentic-ontology-RNSXGXW4.js → agentic-ontology-RVUNRCQY.js} +1 -1
- package/dist/{backfill-metadata-MFY6BHKE.js → backfill-metadata-ZSDJ4O2T.js} +5 -5
- package/dist/backup-verify-ZAJLEL4X.js +425 -0
- package/dist/{behaviors-HLZUJSMP.js → behaviors-EO7KCP3H.js} +6 -6
- package/dist/bin/agentic-ontology-backfill.js +6 -6
- package/dist/bin/agentic-reflection-backfill.js +7 -7
- package/dist/bin/agentic-semantic-label.js +6 -6
- package/dist/bin/backfill-conversations.js +6 -6
- package/dist/bin/backfill-responses.js +6 -6
- package/dist/bin/backfill-vectors.js +8 -8
- package/dist/bin/bulk-sync-postgres.js +12 -12
- package/dist/bin/cc-doctor.js +4 -4
- package/dist/bin/cleanup-stale-review-tasks.js +17 -17
- package/dist/bin/cli.js +50 -18
- package/dist/bin/deferred-daemon-restart.js +74 -73
- package/dist/bin/exe-agent-config.js +3 -3
- package/dist/bin/exe-agent.js +10 -10
- package/dist/bin/exe-assign.js +8 -8
- package/dist/bin/exe-boot.js +26 -26
- package/dist/bin/exe-call.js +4 -4
- package/dist/bin/exe-cloud.js +12 -12
- package/dist/bin/exe-config-dump.js +3 -3
- package/dist/bin/exe-dispatch.js +17 -17
- package/dist/bin/exe-doctor.js +4 -4
- package/dist/bin/exe-export-behaviors.js +8 -8
- package/dist/bin/exe-forget.js +7 -7
- package/dist/bin/exe-gateway.js +7 -7
- package/dist/bin/exe-healthcheck.js +4 -4
- package/dist/bin/exe-heartbeat.js +17 -17
- package/dist/bin/exe-kill.js +21 -21
- package/dist/bin/exe-launch-agent.js +27 -27
- package/dist/bin/exe-new-employee.js +8 -8
- package/dist/bin/exe-pending-messages.js +18 -18
- package/dist/bin/exe-pending-notifications.js +17 -17
- package/dist/bin/exe-pending-reviews.js +17 -17
- package/dist/bin/exe-rename.js +4 -4
- package/dist/bin/exe-review.js +20 -20
- package/dist/bin/exe-search.js +6 -6
- package/dist/bin/exe-session-cleanup.js +22 -22
- package/dist/bin/exe-settings.js +13 -13
- package/dist/bin/exe-start-codex.js +13 -13
- package/dist/bin/exe-start-opencode.js +9 -9
- package/dist/bin/exe-status.js +18 -18
- package/dist/bin/exe-support.js +3 -3
- package/dist/bin/exe-team.js +3 -3
- package/dist/bin/git-sweep.js +18 -18
- package/dist/bin/graph-backfill.js +7 -7
- package/dist/bin/graph-export.js +6 -6
- package/dist/bin/import-history.js +10 -10
- package/dist/bin/install.js +76 -75
- 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/reconcile-backlog.js +484 -0
- package/dist/bin/registry-proxy.js +1 -1
- package/dist/bin/scan-tasks.js +17 -17
- package/dist/bin/setup.js +1 -1
- package/dist/bin/shard-migrate.js +5 -5
- package/dist/bin/stack-update.js +13 -7
- package/dist/bin/vps-health-gate.js +1 -1
- package/dist/boot-generation-GSMPJOWM.js +22 -0
- package/dist/{capability-cards-YOKVMMOL.js → capability-cards-OBYQNAKZ.js} +2 -2
- package/dist/{capacity-monitor-S54IOWRL.js → capacity-monitor-MG3FTUD5.js} +18 -18
- package/dist/{catchup-brief-DIOMTEW5.js → catchup-brief-BVJOF3GL.js} +21 -21
- package/dist/{chunk-X425OEYF.js → chunk-2C455MU3.js} +2 -2
- package/dist/{chunk-N5I7RL3I.js → chunk-2IWBY7XK.js} +1 -1
- package/dist/{chunk-X7H3HMFH.js → chunk-2P4WJNN5.js} +3 -3
- package/dist/{chunk-MW2GJJ53.js → chunk-2UGGBIDL.js} +2 -2
- package/dist/{chunk-BPC5LZ6Y.js → chunk-2WMTTIAZ.js} +1 -1
- package/dist/{chunk-BU2QQWBQ.js → chunk-2YCFNBC4.js} +1 -1
- package/dist/{chunk-RRWDYOQS.js → chunk-32YHCHWW.js} +1 -1
- package/dist/{chunk-I5RLNOFK.js → chunk-3BRVLPPA.js} +8 -4
- package/dist/{chunk-KTY7I7UH.js → chunk-4FJZ6SO7.js} +1 -1
- package/dist/{chunk-XWHE4LZK.js → chunk-4LWV633D.js} +21 -2
- package/dist/{chunk-AVKXCSBI.js → chunk-4QSJVMMT.js} +1 -1
- package/dist/{chunk-I3XKO3KQ.js → chunk-6BQG7EKO.js} +1 -1
- package/dist/{chunk-RLRT2BVM.js → chunk-6D2PI4QD.js} +1 -1
- package/dist/{chunk-7EA7LYW4.js → chunk-6MVC43X7.js} +4 -4
- package/dist/chunk-6QW6JHRE.js +368 -0
- package/dist/{chunk-HHIBOU3P.js → chunk-7LF5DS3A.js} +1 -1
- package/dist/{chunk-XACL67CS.js → chunk-7SEC2AG5.js} +1 -1
- package/dist/{chunk-UFAXZ2PY.js → chunk-7YORGTXC.js} +1 -1
- package/dist/{chunk-3QDSCJ3F.js → chunk-AP455LBW.js} +1 -1
- package/dist/{chunk-OFX5B2S7.js → chunk-ATKW3SYL.js} +1 -1
- package/dist/{chunk-3OBWSCJN.js → chunk-B7CUBLF7.js} +10 -10
- package/dist/{chunk-UCQITDLM.js → chunk-BJ23BNED.js} +1 -1
- package/dist/{chunk-B76TSEP3.js → chunk-BJOBR6P2.js} +1 -1
- package/dist/{chunk-XCTGRD4S.js → chunk-BMHQPIJ2.js} +12 -12
- package/dist/{chunk-ZIVEA3NB.js → chunk-BR4423AS.js} +1 -1
- package/dist/{chunk-ATOU6CYR.js → chunk-BV6GBSRP.js} +16 -2
- package/dist/{chunk-DZ6OQM67.js → chunk-C445WRUX.js} +1 -1
- package/dist/{chunk-YE7NH53A.js → chunk-CCIEIRV2.js} +1 -1
- package/dist/{chunk-6IRVGOUL.js → chunk-CCPHEPLU.js} +1 -1
- package/dist/{chunk-2HZY3ECT.js → chunk-CMR64RYM.js} +18 -18
- package/dist/{chunk-MQRFKSLI.js → chunk-CYA5S5OD.js} +3 -3
- package/dist/{chunk-FNZR3B7U.js → chunk-DGGDUKH6.js} +1 -1
- package/dist/{chunk-QXSBB26A.js → chunk-DNVFWFYF.js} +1 -1
- package/dist/{chunk-QZLIZAS7.js → chunk-DPFQ2WQX.js} +2 -2
- package/dist/{chunk-H37HHX3E.js → chunk-EDH54E5A.js} +9 -9
- package/dist/{chunk-JD5S5AAV.js → chunk-EDOO23B2.js} +2 -2
- package/dist/{chunk-GQQHDEEM.js → chunk-FOV57K47.js} +10 -10
- package/dist/{chunk-65SVQELL.js → chunk-GFDGDFBF.js} +9 -0
- package/dist/{chunk-DILD54TU.js → chunk-GOGSWXNZ.js} +9 -9
- package/dist/{chunk-UPWE5NOG.js → chunk-GPW32HVB.js} +2 -2
- package/dist/{chunk-4IYSBPX3.js → chunk-HAZO7TRD.js} +1 -1
- package/dist/{chunk-52KNOQMK.js → chunk-HJX6NCJF.js} +3 -3
- package/dist/{chunk-UIV2WPBT.js → chunk-HNLXMD2V.js} +1 -1
- package/dist/{chunk-Z7OZP3ET.js → chunk-HSYJ6DZ2.js} +1 -1
- package/dist/{chunk-LTVCRHHD.js → chunk-HUSVERE6.js} +4 -4
- package/dist/{chunk-I7Z6KTGF.js → chunk-I7ECEP3W.js} +5 -5
- package/dist/{chunk-T4KZ2Z2N.js → chunk-IELUDZAA.js} +3 -3
- package/dist/{chunk-XUKPALWT.js → chunk-ITMEE7PQ.js} +3 -3
- package/dist/{chunk-KCC5A7YL.js → chunk-IXBIVKWZ.js} +6 -6
- package/dist/{chunk-GN45PBWI.js → chunk-J6SEDDOR.js} +2 -2
- package/dist/{chunk-UXBD22CD.js → chunk-K6KRBXQP.js} +1 -1
- package/dist/{chunk-PLRIJALF.js → chunk-KKOLHBNC.js} +33 -25
- package/dist/{chunk-OJTJYEMX.js → chunk-KP4PY2Z2.js} +3 -3
- package/dist/{chunk-VJHUVFIW.js → chunk-L2YGXJGF.js} +3 -3
- package/dist/{chunk-6MRWJMI5.js → chunk-LA2Z6RMS.js} +1 -1
- package/dist/{chunk-DEPZOCYD.js → chunk-LEJ25726.js} +321 -621
- package/dist/{chunk-2233TQCA.js → chunk-LLU6WZLK.js} +1 -1
- package/dist/{chunk-6M36JFFD.js → chunk-LOBCQXV5.js} +4 -4
- package/dist/{chunk-LMZISHSJ.js → chunk-MC4ATFJV.js} +5 -5
- package/dist/{chunk-EIF2LQHZ.js → chunk-MJB5ZFQM.js} +1 -1
- package/dist/{chunk-PAEXYFMY.js → chunk-N7A5D25S.js} +1 -1
- package/dist/{chunk-DADMPMYX.js → chunk-NDSNM5OH.js} +1 -1
- package/dist/{chunk-H2L4PHGH.js → chunk-NFBW7N4D.js} +2 -2
- package/dist/{chunk-VYRYY7TE.js → chunk-NTI22F3R.js} +1 -1
- package/dist/{chunk-TLYAEISW.js → chunk-OUEFW4RK.js} +2 -2
- package/dist/{chunk-K5WFKEXQ.js → chunk-PTJBWC77.js} +1 -1
- package/dist/{chunk-KMBEL7VB.js → chunk-PVIH3ZGV.js} +1 -1
- package/dist/{support-outbox-MGUVVGHT.js → chunk-Q5AIPSSC.js} +19 -7
- package/dist/chunk-RP5GETX5.js +140 -0
- package/dist/{chunk-HEPR6QTL.js → chunk-RWSLVYTE.js} +45 -5
- package/dist/{chunk-XJI7Z6LZ.js → chunk-T2PYVVZ5.js} +1 -1
- package/dist/{chunk-WYLV4S6A.js → chunk-TIXTHUVJ.js} +3 -3
- package/dist/{chunk-7WDXEKUL.js → chunk-TWXZM34M.js} +3 -3
- package/dist/{chunk-W7DHFGCB.js → chunk-U2MREVXQ.js} +1 -1
- package/dist/{chunk-6HBURYON.js → chunk-UIU2DGRV.js} +3 -3
- package/dist/{chunk-7TS64TBG.js → chunk-UU4UINUX.js} +6 -1
- package/dist/chunk-W6K4XB6G.js +40 -0
- package/dist/{chunk-R44Z32O2.js → chunk-WD55PEBM.js} +3 -3
- package/dist/{chunk-FUIIVSW6.js → chunk-WH7XN5ER.js} +1 -1
- package/dist/{chunk-Q7L6G6KV.js → chunk-WWNQFOSP.js} +2 -2
- package/dist/{chunk-542EWGY3.js → chunk-XSMRR4IW.js} +7 -7
- package/dist/{chunk-TNJRWUCE.js → chunk-Y3S4H77G.js} +1 -1
- package/dist/{chunk-AOO77BDE.js → chunk-YHUNDGVV.js} +1 -1
- package/dist/{chunk-JBSCL2XT.js → chunk-YIIME2OW.js} +1 -1
- package/dist/{chunk-QFPTDSY2.js → chunk-YLQXP7T7.js} +1 -1
- package/dist/{chunk-RDTZTLVQ.js → chunk-YWQMWFYR.js} +30 -14
- package/dist/{chunk-2SG2UGCH.js → chunk-ZNE6H2JO.js} +4 -4
- package/dist/{cleanup-graph-garbage-KUABW6LS.js → cleanup-graph-garbage-MXQ4Q2MA.js} +6 -6
- package/dist/{co-activation-XMPHKGHR.js → co-activation-QI5BK4RT.js} +2 -2
- package/dist/{co-occurrence-SHKSJ6CV.js → co-occurrence-BYSQNZSV.js} +4 -4
- package/dist/{code-context-index-EXXDY3QZ.js → code-context-index-BNBHDXHW.js} +2 -2
- package/dist/{content-extractor-RHITF2KM.js → content-extractor-JRJDNIHP.js} +2 -2
- package/dist/{conversation-entity-extractor-D3EFTLT4.js → conversation-entity-extractor-FPAMTL3C.js} +2 -2
- package/dist/{crdt-sync-UJELKSNX.js → crdt-sync-ETPKNBCU.js} +1 -1
- package/dist/{crm-webhook-HHNBS7LY.js → crm-webhook-M566ZMZS.js} +2 -2
- package/dist/{cto-delegation-gate-DXNF5HVW.js → cto-delegation-gate-S734XDXT.js} +16 -16
- package/dist/{daemon-orchestration-7QB6QOXT.js → daemon-orchestration-XV5GN73R.js} +20 -20
- package/dist/{daemon-ready-5XI5BIJD.js → daemon-ready-RKKB4P6K.js} +1 -1
- package/dist/{daemon-ready-signal-E7VMIQ6I.js → daemon-ready-signal-WKEJQNRA.js} +3 -1
- package/dist/{db-backup-DLD4QZBO.js → db-backup-MX2G3CEK.js} +1 -1
- package/dist/{doc-graph-extractor-3TRLGD7M.js → doc-graph-extractor-LR5KMPH7.js} +4 -4
- package/dist/{documents-FHIBU7KJ.js → documents-FA6N7QDA.js} +8 -8
- package/dist/{dreaming-OMFUEUCQ.js → dreaming-UKGTQT6I.js} +17 -17
- package/dist/{exe-drift-KY2KHZEL.js → exe-drift-TUKTCXZE.js} +3 -3
- package/dist/{exe-export-SP6G3QF6.js → exe-export-ZLHBXMZC.js} +7 -7
- package/dist/{exe-import-KJU7FBVQ.js → exe-import-VVKBZWSA.js} +7 -7
- package/dist/{exe-key-5RLFQMYP.js → exe-key-QJXFBF6G.js} +74 -73
- package/dist/{exe-snapshot-ZNPGUKRZ.js → exe-snapshot-JRLUO645.js} +21 -21
- package/dist/{fast-db-init-QQB6IVWV.js → fast-db-init-JKJEEHUI.js} +1 -1
- package/dist/{founder-context-PQR3BUS7.js → founder-context-HWPLMZVR.js} +2 -2
- package/dist/gateway/index.js +24 -24
- package/dist/{git-staleness-UGB5J3K7.js → git-staleness-X5XZONX3.js} +2 -2
- package/dist/{global-procedures-R7KRREEK.js → global-procedures-VIIVWB6R.js} +3 -3
- package/dist/{graph-auto-extract-LKIQ57PL.js → graph-auto-extract-HCQQF5AG.js} +4 -4
- package/dist/{graph-rag-JZZAB7PC.js → graph-rag-WAK2BRJH.js} +2 -2
- package/dist/hooks/bug-report-worker.js +19 -19
- package/dist/hooks/codex-stop-task-finalizer.js +19 -19
- package/dist/hooks/commit-complete.js +19 -19
- package/dist/hooks/error-recall.js +7 -7
- package/dist/hooks/exe-heartbeat-hook.js +3 -3
- package/dist/hooks/ingest-worker.js +5 -5
- package/dist/hooks/ingest.js +9 -9
- 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 +18 -18
- package/dist/hooks/post-tool-combined.js +9 -9
- package/dist/hooks/pre-compact.js +19 -19
- package/dist/hooks/pre-tool-use.js +22 -22
- package/dist/hooks/prompt-submit.js +36 -36
- package/dist/hooks/session-end.js +24 -24
- package/dist/hooks/session-start.js +14 -14
- package/dist/hooks/stop.js +25 -25
- package/dist/hooks/subagent-stop.js +18 -18
- package/dist/hooks/summary-worker.js +23 -23
- package/dist/index.js +29 -29
- package/dist/{installer-SB2N5NKH.js → installer-6IFVEQI4.js} +5 -5
- package/dist/{installer-MZWWBXM6.js → installer-NX2CLNV5.js} +5 -5
- package/dist/{installer-MNPXDLGG.js → installer-T2LGHZKL.js} +5 -5
- package/dist/{intercom-queue-VU2G6F5R.js → intercom-queue-KYHXXZCQ.js} +16 -16
- package/dist/lib/agent-config.js +1 -1
- package/dist/lib/cloud-sync.js +12 -12
- package/dist/lib/consolidation.js +8 -8
- package/dist/lib/database.js +2 -2
- package/dist/lib/db-daemon-client.js +2 -2
- package/dist/lib/db.js +2 -2
- package/dist/lib/device-registry.js +1 -1
- package/dist/lib/embedder.js +2 -2
- package/dist/lib/employee-templates.js +4 -4
- package/dist/lib/employees.js +2 -2
- package/dist/lib/exe-daemon-client.js +1 -1
- package/dist/lib/exe-daemon.js +123 -54
- package/dist/lib/hybrid-search.js +6 -6
- package/dist/lib/identity.js +2 -2
- package/dist/lib/license.js +2 -2
- package/dist/lib/messaging.js +17 -17
- package/dist/lib/post-tool-memory.js +3 -3
- package/dist/lib/registry-proxy.js +1 -1
- package/dist/lib/reminders.js +3 -3
- package/dist/lib/schedules.js +6 -6
- package/dist/lib/session-registry.js +4 -4
- package/dist/lib/skill-learning.js +7 -7
- package/dist/lib/store.js +5 -5
- package/dist/lib/task-router.js +3 -3
- package/dist/lib/tasks.js +18 -18
- package/dist/lib/tmux-routing.js +16 -16
- package/dist/lib/token-spend.js +3 -3
- package/dist/{license-gate-BYDMFMFT.js → license-gate-MGDR4YNI.js} +3 -3
- package/dist/{license-sync-N3RNYVP2.js → license-sync-UWE6GEB4.js} +2 -2
- package/dist/mcp/register-tools.js +73 -72
- package/dist/mcp/server.js +74 -73
- 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 +20 -20
- package/dist/mcp/tools/deactivate-behavior.js +8 -8
- package/dist/mcp/tools/list-reminders.js +4 -4
- package/dist/mcp/tools/list-tasks.js +20 -20
- package/dist/mcp/tools/send-message.js +19 -19
- package/dist/mcp/tools/update-task.js +19 -19
- package/dist/{mcp-http-config-EMAVS2JI.js → mcp-http-config-RQLYEPTL.js} +3 -3
- package/dist/{memory-cards-TQRLZI4D.js → memory-cards-VYQ5DPMR.js} +5 -5
- package/dist/{memory-graph-extractor-IWGNVAFU.js → memory-graph-extractor-GX2HNYLU.js} +5 -5
- package/dist/{memory-poisoning-defense-T4ITBGSG.js → memory-poisoning-defense-TX7627BD.js} +2 -2
- package/dist/{memory-pressure-watchdog-RRIAXPXQ.js → memory-pressure-watchdog-MLNNH26B.js} +17 -17
- package/dist/{memory-queue-client-BKQHTYTH.js → memory-queue-client-YRL6XTGU.js} +2 -2
- package/dist/{memory-reflection-6N4J2FL7.js → memory-reflection-KIGEFSI4.js} +2 -2
- package/dist/notification-ledger-B6AVEGMV.js +407 -0
- package/dist/{notifications-KONB3C62.js → notifications-DWXV7SVL.js} +16 -16
- package/dist/{orchestration-events-5SIJOE4H.js → orchestration-events-ZG7O4HRY.js} +3 -3
- package/dist/{orchestrator-DUUX7FQV.js → orchestrator-PGHJDUUT.js} +18 -18
- package/dist/{pipeline-router-O6HU7DKH.js → pipeline-router-RTLAGZTA.js} +3 -3
- package/dist/{plan-limits-GRNBOBB3.js → plan-limits-WLQZTCSF.js} +5 -5
- package/dist/{projection-worker-ZVOFHTXT.js → projection-worker-44SEKTZ5.js} +2 -2
- package/dist/{prospective-memory-W6S67LZZ.js → prospective-memory-UACFTYXK.js} +2 -2
- package/dist/{reranker-SSFBRWWD.js → reranker-NL4YAV6R.js} +1 -1
- package/dist/{retrieval-health-TWHKYCRK.js → retrieval-health-4C2PO6HH.js} +1 -1
- package/dist/{review-polling-PCMD5BFN.js → review-polling-W5AMHNLT.js} +17 -17
- package/dist/runtime/index.js +24 -24
- package/dist/{session-events-3LCVQEL7.js → session-events-PGL5GJEB.js} +17 -17
- package/dist/{session-kill-telemetry-CZSPN5V6.js → session-kill-telemetry-6YDGEF27.js} +17 -17
- package/dist/{session-scope-CFHVSVAQ.js → session-scope-3MEOO557.js} +16 -16
- package/dist/{setup-wizard-CJZMM43G.js → setup-wizard-CJIYDSSP.js} +1 -1
- package/dist/{skill-refinement-74T6VDFM.js → skill-refinement-EOROTBPX.js} +3 -3
- package/dist/stack-promote-RSOWO6EY.js +130 -0
- package/dist/{stack-release-XXMV7SPX.js → stack-release-PR2XKJ4Q.js} +24 -9
- package/dist/{stack-update-E2TKHHSQ.js → stack-update-LMDM27ZW.js} +5 -3
- package/dist/{steward-gate-WT7WXQIE.js → steward-gate-4A2XHYFD.js} +3 -3
- package/dist/support-inbox-Z77ACQUY.js +32 -0
- package/dist/support-outbox-GB5SQFRJ.js +16 -0
- package/dist/{task-enforcement-VI7L43DC.js → task-enforcement-X5QVL6RE.js} +17 -17
- package/dist/{task-scope-CQEG5SSJ.js → task-scope-EKYDCVUF.js} +16 -16
- package/dist/{tasks-crud-UGK5A25L.js → tasks-crud-6LBNU43G.js} +16 -16
- package/dist/{tasks-notify-SMLDFBWM.js → tasks-notify-TFJLSQ3B.js} +17 -17
- package/dist/{tasks-review-JKBRACII.js → tasks-review-PBIUYXAL.js} +16 -16
- package/dist/{telemetry-upload-7LBYGPCB.js → telemetry-upload-WQDFABTF.js} +7 -7
- package/dist/{token-budget-QBRJR4M5.js → token-budget-KWGL5DY7.js} +3 -3
- package/dist/{tool-capability-index-Q6YQDL7I.js → tool-capability-index-EH3HQVHU.js} +1 -1
- package/dist/{tool-telemetry-ULIDUK3P.js → tool-telemetry-UC55LSIH.js} +1 -1
- package/dist/tui/App.js +24 -24
- package/dist/{tui-data-NPTGKT37.js → tui-data-M3RBSJL3.js} +16 -16
- package/dist/update-support-VPBD5SD2.js +355 -0
- package/dist/{worker-gate-MXUQUG4M.js → worker-gate-4QLLMXZM.js} +1 -1
- package/dist/{workflow-engine-EWCOLD47.js → workflow-engine-MMEHKUN4.js} +2 -2
- package/dist/{worktree-GVF2I5FP.js → worktree-YXBDRYOC.js} +4 -4
- package/dist/{worktree-sweep-ZAG3V24E.js → worktree-sweep-5WKBU7E6.js} +5 -5
- package/package.json +2 -2
- package/release-notes.json +35 -60
- package/dist/chunk-Y25OJWOQ.js +0 -45
- package/dist/{chunk-FLNSJ2TC.js → chunk-2KLAYDFB.js} +0 -0
- package/dist/{chunk-WHRTDN5J.js → chunk-3NCZKWPO.js} +0 -0
- package/dist/{chunk-IYB2NIW3.js → chunk-6MVI4QH2.js} +0 -0
- package/dist/{chunk-A4DVMPYB.js → chunk-7UMCQQWS.js} +3 -3
- /package/dist/{chunk-QLFRCA6I.js → chunk-AYLNJGCS.js} +0 -0
- /package/dist/{chunk-D3QASX2W.js → chunk-C2SRRCRK.js} +0 -0
- /package/dist/{chunk-KTPG4XKI.js → chunk-IB336P52.js} +0 -0
- /package/dist/{chunk-NQBRGXYR.js → chunk-MC6VPZKS.js} +0 -0
- /package/dist/{chunk-5Z5NATNS.js → chunk-PPZOWQHP.js} +0 -0
- /package/dist/{chunk-C2UO2I6K.js → chunk-WNKVKNOM.js} +0 -0
- /package/dist/{core-memory-VO5ZIBKH.js → core-memory-3IBWM4WR.js} +0 -0
- /package/dist/{entity-boost-DNI4A5I7.js → entity-boost-DWAWXFKN.js} +0 -0
- /package/dist/{message-queue-client-Q5BW3O5W.js → message-queue-client-3PTHPG5Q.js} +0 -0
- /package/dist/{oauth-server-ROQFOEMM.js → oauth-server-M5TGXT6D.js} +0 -0
- /package/dist/{project-boot-SD7GM24K.js → project-boot-6CGQ3EAH.js} +0 -0
- /package/dist/{wiki-acl-JA5UCQZ4.js → wiki-acl-7CROE3MJ.js} +0 -0
|
@@ -0,0 +1,355 @@
|
|
|
1
|
+
import {
|
|
2
|
+
queueSupportStatusUpdateSync
|
|
3
|
+
} from "./chunk-Q5AIPSSC.js";
|
|
4
|
+
import "./chunk-MMRUBN3I.js";
|
|
5
|
+
import {
|
|
6
|
+
embed
|
|
7
|
+
} from "./chunk-AP455LBW.js";
|
|
8
|
+
import {
|
|
9
|
+
flushBatch,
|
|
10
|
+
writeMemory
|
|
11
|
+
} from "./chunk-EDH54E5A.js";
|
|
12
|
+
import "./chunk-CHCA3ZM2.js";
|
|
13
|
+
import "./chunk-OTVEIJUQ.js";
|
|
14
|
+
import "./chunk-7LF5DS3A.js";
|
|
15
|
+
import {
|
|
16
|
+
getActiveAgent
|
|
17
|
+
} from "./chunk-C445WRUX.js";
|
|
18
|
+
import {
|
|
19
|
+
isTelemetryRedactionEnabled,
|
|
20
|
+
sanitizeUpstreamPayload
|
|
21
|
+
} from "./chunk-RP5GETX5.js";
|
|
22
|
+
import "./chunk-CVYC6DUW.js";
|
|
23
|
+
import "./chunk-UU4UINUX.js";
|
|
24
|
+
import "./chunk-AFNRE2RV.js";
|
|
25
|
+
import "./chunk-3NGZ4PL7.js";
|
|
26
|
+
import "./chunk-NLEW62VC.js";
|
|
27
|
+
import "./chunk-GJV3WDWM.js";
|
|
28
|
+
import "./chunk-MP2AFCGL.js";
|
|
29
|
+
import "./chunk-RWSLVYTE.js";
|
|
30
|
+
import "./chunk-2I23RPSI.js";
|
|
31
|
+
import "./chunk-BV6GBSRP.js";
|
|
32
|
+
import "./chunk-PNQDP3OA.js";
|
|
33
|
+
import "./chunk-H73TUI4Y.js";
|
|
34
|
+
import "./chunk-7HLWBYH7.js";
|
|
35
|
+
import "./chunk-FXU7JOXK.js";
|
|
36
|
+
import "./chunk-Z42MXYWW.js";
|
|
37
|
+
import {
|
|
38
|
+
loadLicense,
|
|
39
|
+
readCachedLicenseToken
|
|
40
|
+
} from "./chunk-7SEC2AG5.js";
|
|
41
|
+
import "./chunk-PPZOWQHP.js";
|
|
42
|
+
import {
|
|
43
|
+
EXE_AI_DIR,
|
|
44
|
+
loadConfig
|
|
45
|
+
} from "./chunk-7Y5UDEVM.js";
|
|
46
|
+
import "./chunk-SHIICYJW.js";
|
|
47
|
+
import "./chunk-MLKGABMK.js";
|
|
48
|
+
|
|
49
|
+
// src/mcp/tools/update-support.ts
|
|
50
|
+
import { z } from "zod";
|
|
51
|
+
import { readdir, readFile, writeFile } from "fs/promises";
|
|
52
|
+
import path from "path";
|
|
53
|
+
var BUG_STATUS = z.enum(["open", "triaged", "fixed", "closed", "wontfix"]);
|
|
54
|
+
var FEATURE_STATUS = z.enum(["open", "planned", "in_progress", "shipped", "closed", "wontdo"]);
|
|
55
|
+
async function findReportFile(dir, id) {
|
|
56
|
+
try {
|
|
57
|
+
const files = await readdir(dir);
|
|
58
|
+
const prefix = id.slice(0, 8);
|
|
59
|
+
const match = files.find((f) => f.includes(prefix) && f.endsWith(".md"));
|
|
60
|
+
return match ? path.join(dir, match) : null;
|
|
61
|
+
} catch {
|
|
62
|
+
return null;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
function updateMarkdownField(content, key, value) {
|
|
66
|
+
const lines = content.split("\n");
|
|
67
|
+
const keyPattern = new RegExp(`^${key}:\\s*`);
|
|
68
|
+
let found = false;
|
|
69
|
+
const updated = lines.map((line) => {
|
|
70
|
+
if (keyPattern.test(line)) {
|
|
71
|
+
found = true;
|
|
72
|
+
return `${key}: ${value}`;
|
|
73
|
+
}
|
|
74
|
+
return line;
|
|
75
|
+
});
|
|
76
|
+
if (!found) {
|
|
77
|
+
let insertIdx = -1;
|
|
78
|
+
for (let i = 0; i < updated.length; i++) {
|
|
79
|
+
if (/^[a-z_]+:\s/.test(updated[i])) {
|
|
80
|
+
insertIdx = i;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
if (insertIdx >= 0) {
|
|
84
|
+
updated.splice(insertIdx + 1, 0, `${key}: ${value}`);
|
|
85
|
+
} else {
|
|
86
|
+
const titleIdx = updated.findIndex((l) => l.startsWith("# "));
|
|
87
|
+
updated.splice(titleIdx >= 0 ? titleIdx + 2 : 0, 0, `${key}: ${value}`);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return updated.join("\n");
|
|
91
|
+
}
|
|
92
|
+
function supportAdminToken(config) {
|
|
93
|
+
return process.env.ASKEXE_SUPPORT_ADMIN_TOKEN || process.env.EXE_SUPPORT_ADMIN_TOKEN || config.support?.adminToken || config.support?.admin_token;
|
|
94
|
+
}
|
|
95
|
+
function normalizeSupportBase(value) {
|
|
96
|
+
let raw = value;
|
|
97
|
+
try {
|
|
98
|
+
const parsed = new URL(raw);
|
|
99
|
+
if (parsed.hostname === "askexe.com" || parsed.hostname === "cloud.askexe.com") {
|
|
100
|
+
parsed.hostname = "api.askexe.com";
|
|
101
|
+
raw = parsed.toString();
|
|
102
|
+
}
|
|
103
|
+
} catch {
|
|
104
|
+
}
|
|
105
|
+
return raw.replace(/\/+$/, "").replace(/\/(bug-reports|feature-requests)\/?$/, "");
|
|
106
|
+
}
|
|
107
|
+
async function sendStatusUpstream(kind, endpointPath, payload) {
|
|
108
|
+
const config = await loadConfig();
|
|
109
|
+
const routerUrl = process.env.API_ROUTER_URL?.replace(/\/+$/, "");
|
|
110
|
+
const support = config.support;
|
|
111
|
+
const adminToken = supportAdminToken(config);
|
|
112
|
+
const baseEndpoint = adminToken ? process.env.ASKEXE_SUPPORT_ADMIN_ENDPOINT || support?.adminEndpoint || support?.admin_endpoint || "https://api.askexe.com/admin/support" : support?.bugReportEndpoint || process.env.EXE_BUG_REPORT_ENDPOINT || (routerUrl ? `${routerUrl}/v1/support` : "https://api.askexe.com/v1/support");
|
|
113
|
+
const base = normalizeSupportBase(baseEndpoint);
|
|
114
|
+
const endpoint = `${base}/${endpointPath}`;
|
|
115
|
+
const token = config.support?.bugReportToken || process.env.EXE_BUG_REPORT_TOKEN;
|
|
116
|
+
const licenseKey = loadLicense() || process.env.EXE_LICENSE_KEY || config.cloud?.apiKey;
|
|
117
|
+
const licenseToken = readCachedLicenseToken();
|
|
118
|
+
const gatedPayload = isTelemetryRedactionEnabled() ? sanitizeUpstreamPayload(payload).payload : (console.error("[update-support] WARNING: EXE_TELEMETRY_REDACT=off \u2014 sending UNREDACTED payload upstream"), payload);
|
|
119
|
+
try {
|
|
120
|
+
const parsed = new URL(endpoint);
|
|
121
|
+
if (parsed.protocol !== "https:" && !["localhost", "127.0.0.1", "::1"].includes(parsed.hostname)) {
|
|
122
|
+
return "failed: insecure endpoint rejected";
|
|
123
|
+
}
|
|
124
|
+
const response = await fetch(parsed, {
|
|
125
|
+
method: "PATCH",
|
|
126
|
+
headers: {
|
|
127
|
+
"content-type": "application/json",
|
|
128
|
+
...adminToken ? { authorization: `Bearer ${adminToken}` } : {},
|
|
129
|
+
...!adminToken && token ? { authorization: `Bearer ${token}` } : {},
|
|
130
|
+
...!adminToken && licenseKey ? { "x-exe-license-key": licenseKey } : {},
|
|
131
|
+
...!adminToken && licenseToken ? { "x-exe-license-token": licenseToken } : {}
|
|
132
|
+
},
|
|
133
|
+
body: JSON.stringify(gatedPayload),
|
|
134
|
+
signal: AbortSignal.timeout(1e4)
|
|
135
|
+
});
|
|
136
|
+
if (!response.ok) {
|
|
137
|
+
const failed = `failed: HTTP ${response.status}`;
|
|
138
|
+
queueSupportStatusUpdateSync({
|
|
139
|
+
id: String(gatedPayload.id ?? ""),
|
|
140
|
+
kind,
|
|
141
|
+
endpointPath,
|
|
142
|
+
payload: gatedPayload,
|
|
143
|
+
method: "PATCH",
|
|
144
|
+
lastError: failed
|
|
145
|
+
});
|
|
146
|
+
return `${failed} (queued for retry)`;
|
|
147
|
+
}
|
|
148
|
+
return "sent";
|
|
149
|
+
} catch (err) {
|
|
150
|
+
const failed = `failed: ${err instanceof Error ? err.message : String(err)}`;
|
|
151
|
+
queueSupportStatusUpdateSync({
|
|
152
|
+
id: String(gatedPayload.id ?? ""),
|
|
153
|
+
kind,
|
|
154
|
+
endpointPath,
|
|
155
|
+
payload: gatedPayload,
|
|
156
|
+
method: "PATCH",
|
|
157
|
+
lastError: failed
|
|
158
|
+
});
|
|
159
|
+
return `${failed} (queued for retry)`;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
function registerUpdateBugReport(server) {
|
|
163
|
+
server.registerTool(
|
|
164
|
+
"update_bug_report",
|
|
165
|
+
{
|
|
166
|
+
title: "Update Bug Report",
|
|
167
|
+
description: "Update the status of a previously filed bug report. Updates local markdown file, stores a memory, and POSTs the change to AskExe support. Statuses: open \u2192 triaged \u2192 fixed \u2192 closed \u2192 wontfix.",
|
|
168
|
+
inputSchema: {
|
|
169
|
+
id: z.string().min(8).describe("Bug report ID (UUID or first 8 chars)"),
|
|
170
|
+
status: BUG_STATUS.describe("New status"),
|
|
171
|
+
fix_version: z.string().optional().describe("Version that fixes this bug (e.g. '0.9.161')"),
|
|
172
|
+
notes: z.string().optional().describe("Update notes \u2014 why this status change"),
|
|
173
|
+
send_upstream: z.boolean().default(true).describe("POST update to AskExe support endpoint")
|
|
174
|
+
}
|
|
175
|
+
},
|
|
176
|
+
async ({ id, status, fix_version, notes, send_upstream }) => {
|
|
177
|
+
const { agentId, agentRole } = getActiveAgent();
|
|
178
|
+
const reportDir = path.join(EXE_AI_DIR, "bug-reports");
|
|
179
|
+
const reportPath = await findReportFile(reportDir, id);
|
|
180
|
+
let fullId = id;
|
|
181
|
+
let title = id;
|
|
182
|
+
if (reportPath) {
|
|
183
|
+
let content = await readFile(reportPath, "utf-8");
|
|
184
|
+
const idMatch = content.match(/^id:\s*([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})\s*$/m);
|
|
185
|
+
if (idMatch) fullId = idMatch[1];
|
|
186
|
+
const titleMatch = content.match(/^# Bug Report — (.+)$/m);
|
|
187
|
+
if (titleMatch) title = titleMatch[1];
|
|
188
|
+
content = updateMarkdownField(content, "status", status);
|
|
189
|
+
if (fix_version) content = updateMarkdownField(content, "fix_version", fix_version);
|
|
190
|
+
content = updateMarkdownField(content, "updated_at", (/* @__PURE__ */ new Date()).toISOString());
|
|
191
|
+
if (notes) {
|
|
192
|
+
content += `
|
|
193
|
+
|
|
194
|
+
## Update \u2014 ${(/* @__PURE__ */ new Date()).toISOString()}
|
|
195
|
+
|
|
196
|
+
Status: ${status}
|
|
197
|
+
${fix_version ? `Fix version: ${fix_version}
|
|
198
|
+
` : ""}${notes}
|
|
199
|
+
`;
|
|
200
|
+
}
|
|
201
|
+
await writeFile(reportPath, content, "utf-8");
|
|
202
|
+
}
|
|
203
|
+
const memoryText = fix_version ? `Bug "${title}" marked ${status} in v${fix_version}${notes ? `. ${notes}` : ""}` : `Bug "${title}" marked ${status}${notes ? `. ${notes}` : ""}`;
|
|
204
|
+
let vector = null;
|
|
205
|
+
try {
|
|
206
|
+
vector = await embed(memoryText);
|
|
207
|
+
} catch {
|
|
208
|
+
vector = null;
|
|
209
|
+
}
|
|
210
|
+
await writeMemory({
|
|
211
|
+
id: `${fullId}-update-${Date.now()}`,
|
|
212
|
+
agent_id: agentId,
|
|
213
|
+
agent_role: agentRole,
|
|
214
|
+
session_id: process.env.SESSION_ID ?? "manual",
|
|
215
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
|
216
|
+
tool_name: "update_bug_report",
|
|
217
|
+
project_name: "support",
|
|
218
|
+
has_error: false,
|
|
219
|
+
raw_text: memoryText,
|
|
220
|
+
vector,
|
|
221
|
+
source_path: reportPath ?? void 0,
|
|
222
|
+
source_type: "bug_report_update",
|
|
223
|
+
memory_type: "observation",
|
|
224
|
+
tier: 1,
|
|
225
|
+
importance: 7,
|
|
226
|
+
intent: "update",
|
|
227
|
+
domain: "support",
|
|
228
|
+
file_paths: null
|
|
229
|
+
});
|
|
230
|
+
await flushBatch();
|
|
231
|
+
const upstreamPayload = {
|
|
232
|
+
id: fullId,
|
|
233
|
+
status,
|
|
234
|
+
fixed_version: fix_version,
|
|
235
|
+
triage_notes: notes,
|
|
236
|
+
updated_at: (/* @__PURE__ */ new Date()).toISOString(),
|
|
237
|
+
agent_id: agentId
|
|
238
|
+
};
|
|
239
|
+
const upstreamStatus = send_upstream ? await sendStatusUpstream("bug", `bug-reports/${encodeURIComponent(fullId)}`, upstreamPayload) : "skipped";
|
|
240
|
+
return {
|
|
241
|
+
content: [
|
|
242
|
+
{
|
|
243
|
+
type: "text",
|
|
244
|
+
text: `Bug report updated.
|
|
245
|
+
ID: ${fullId}
|
|
246
|
+
New status: ${status}
|
|
247
|
+
${fix_version ? `Fix version: ${fix_version}
|
|
248
|
+
` : ""}Local file: ${reportPath ?? "not found"}
|
|
249
|
+
Memory stored: ${memoryText}
|
|
250
|
+
Upstream status: ${upstreamStatus}`
|
|
251
|
+
}
|
|
252
|
+
]
|
|
253
|
+
};
|
|
254
|
+
}
|
|
255
|
+
);
|
|
256
|
+
}
|
|
257
|
+
function registerUpdateFeatureRequest(server) {
|
|
258
|
+
server.registerTool(
|
|
259
|
+
"update_feature_request",
|
|
260
|
+
{
|
|
261
|
+
title: "Update Feature Request",
|
|
262
|
+
description: "Update the status of a previously filed feature request. Updates local markdown file, stores a memory, and POSTs the change to AskExe support. Statuses: open \u2192 planned \u2192 in_progress \u2192 shipped \u2192 closed \u2192 wontdo.",
|
|
263
|
+
inputSchema: {
|
|
264
|
+
id: z.string().min(8).describe("Feature request ID (UUID or first 8 chars)"),
|
|
265
|
+
status: FEATURE_STATUS.describe("New status"),
|
|
266
|
+
shipped_version: z.string().optional().describe("Version that ships this feature (e.g. '0.9.170')"),
|
|
267
|
+
notes: z.string().optional().describe("Update notes \u2014 why this status change"),
|
|
268
|
+
send_upstream: z.boolean().default(true).describe("POST update to AskExe support endpoint")
|
|
269
|
+
}
|
|
270
|
+
},
|
|
271
|
+
async ({ id, status, shipped_version, notes, send_upstream }) => {
|
|
272
|
+
const { agentId, agentRole } = getActiveAgent();
|
|
273
|
+
const reportDir = path.join(EXE_AI_DIR, "feature-requests");
|
|
274
|
+
const reportPath = await findReportFile(reportDir, id);
|
|
275
|
+
let fullId = id;
|
|
276
|
+
let title = id;
|
|
277
|
+
if (reportPath) {
|
|
278
|
+
let content = await readFile(reportPath, "utf-8");
|
|
279
|
+
const idMatch = content.match(/^id:\s*([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})\s*$/m);
|
|
280
|
+
if (idMatch) fullId = idMatch[1];
|
|
281
|
+
const titleMatch = content.match(/^# Feature Request — (.+)$/m);
|
|
282
|
+
if (titleMatch) title = titleMatch[1];
|
|
283
|
+
content = updateMarkdownField(content, "status", status);
|
|
284
|
+
if (shipped_version) content = updateMarkdownField(content, "shipped_version", shipped_version);
|
|
285
|
+
content = updateMarkdownField(content, "updated_at", (/* @__PURE__ */ new Date()).toISOString());
|
|
286
|
+
if (notes) {
|
|
287
|
+
content += `
|
|
288
|
+
|
|
289
|
+
## Update \u2014 ${(/* @__PURE__ */ new Date()).toISOString()}
|
|
290
|
+
|
|
291
|
+
Status: ${status}
|
|
292
|
+
${shipped_version ? `Shipped version: ${shipped_version}
|
|
293
|
+
` : ""}${notes}
|
|
294
|
+
`;
|
|
295
|
+
}
|
|
296
|
+
await writeFile(reportPath, content, "utf-8");
|
|
297
|
+
}
|
|
298
|
+
const memoryText = shipped_version ? `Feature "${title}" marked ${status} in v${shipped_version}${notes ? `. ${notes}` : ""}` : `Feature "${title}" marked ${status}${notes ? `. ${notes}` : ""}`;
|
|
299
|
+
let vector = null;
|
|
300
|
+
try {
|
|
301
|
+
vector = await embed(memoryText);
|
|
302
|
+
} catch {
|
|
303
|
+
vector = null;
|
|
304
|
+
}
|
|
305
|
+
await writeMemory({
|
|
306
|
+
id: `${fullId}-update-${Date.now()}`,
|
|
307
|
+
agent_id: agentId,
|
|
308
|
+
agent_role: agentRole,
|
|
309
|
+
session_id: process.env.SESSION_ID ?? "manual",
|
|
310
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
|
311
|
+
tool_name: "update_feature_request",
|
|
312
|
+
project_name: "support",
|
|
313
|
+
has_error: false,
|
|
314
|
+
raw_text: memoryText,
|
|
315
|
+
vector,
|
|
316
|
+
source_path: reportPath ?? void 0,
|
|
317
|
+
source_type: "feature_request_update",
|
|
318
|
+
memory_type: "observation",
|
|
319
|
+
tier: 1,
|
|
320
|
+
importance: 7,
|
|
321
|
+
intent: "update",
|
|
322
|
+
domain: "support",
|
|
323
|
+
file_paths: null
|
|
324
|
+
});
|
|
325
|
+
await flushBatch();
|
|
326
|
+
const upstreamPayload = {
|
|
327
|
+
id: fullId,
|
|
328
|
+
status,
|
|
329
|
+
shipped_version,
|
|
330
|
+
response_notes: notes,
|
|
331
|
+
updated_at: (/* @__PURE__ */ new Date()).toISOString(),
|
|
332
|
+
agent_id: agentId
|
|
333
|
+
};
|
|
334
|
+
const upstreamStatus = send_upstream ? await sendStatusUpstream("feature", `feature-requests/${encodeURIComponent(fullId)}`, upstreamPayload) : "skipped";
|
|
335
|
+
return {
|
|
336
|
+
content: [
|
|
337
|
+
{
|
|
338
|
+
type: "text",
|
|
339
|
+
text: `Feature request updated.
|
|
340
|
+
ID: ${fullId}
|
|
341
|
+
New status: ${status}
|
|
342
|
+
${shipped_version ? `Shipped version: ${shipped_version}
|
|
343
|
+
` : ""}Local file: ${reportPath ?? "not found"}
|
|
344
|
+
Memory stored: ${memoryText}
|
|
345
|
+
Upstream status: ${upstreamStatus}`
|
|
346
|
+
}
|
|
347
|
+
]
|
|
348
|
+
};
|
|
349
|
+
}
|
|
350
|
+
);
|
|
351
|
+
}
|
|
352
|
+
export {
|
|
353
|
+
registerUpdateBugReport,
|
|
354
|
+
registerUpdateFeatureRequest
|
|
355
|
+
};
|
|
@@ -10,8 +10,8 @@ import {
|
|
|
10
10
|
persistWorkflows,
|
|
11
11
|
runWorkflow,
|
|
12
12
|
startWorkflow
|
|
13
|
-
} from "./chunk-
|
|
14
|
-
import "./chunk-
|
|
13
|
+
} from "./chunk-DNVFWFYF.js";
|
|
14
|
+
import "./chunk-IB336P52.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-BJOBR6P2.js";
|
|
11
|
+
import "./chunk-WH7XN5ER.js";
|
|
12
|
+
import "./chunk-RWSLVYTE.js";
|
|
13
13
|
import "./chunk-2I23RPSI.js";
|
|
14
|
-
import "./chunk-
|
|
14
|
+
import "./chunk-BV6GBSRP.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-PTJBWC77.js";
|
|
6
|
+
import "./chunk-BJOBR6P2.js";
|
|
7
|
+
import "./chunk-WH7XN5ER.js";
|
|
8
|
+
import "./chunk-RWSLVYTE.js";
|
|
9
9
|
import "./chunk-2I23RPSI.js";
|
|
10
|
-
import "./chunk-
|
|
10
|
+
import "./chunk-BV6GBSRP.js";
|
|
11
11
|
import "./chunk-PNQDP3OA.js";
|
|
12
12
|
import "./chunk-H73TUI4Y.js";
|
|
13
13
|
import "./chunk-7HLWBYH7.js";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@askexenow/exe-os",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.341",
|
|
4
4
|
"description": "AI employee operating system — persistent memory, task management, and multi-agent coordination for Claude Code.",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE",
|
|
6
6
|
"type": "module",
|
|
@@ -115,7 +115,7 @@
|
|
|
115
115
|
"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.'",
|
|
116
116
|
"postinstall": "node dist/bin/install.js --commands-only || true",
|
|
117
117
|
"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",
|
|
118
|
-
"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/lib/stack-update.test.ts' --exclude 'tests/
|
|
118
|
+
"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/lib/stack-update.test.ts' --exclude 'tests/orchestration/dispatch-chain.test.ts' --exclude 'tests/orchestration/e2e-flow.test.ts' && echo '::warning::clean-stack-projection and stack-update quarantined (need Docker + live DB; environmental, fail in CI runner \u2014 container unhealthy / DB not initialized); 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): dispatch-chain/e2e-flow (timing-sensitive, flaky under parallel load \u2014 bug dfb25bf1). device-id-split-brain/reaper-deps-async/find-free-instance/db-backup-recovery de-flaked and promoted to the required gate (chore/deflake-required-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",
|
|
119
119
|
"benchmark:longmemeval": "npx tsx tests/benchmarks/longmemeval.ts",
|
|
120
120
|
"guard:esm-require": "node scripts/check-no-runtime-require.mjs",
|
|
121
121
|
"check:schema-version": "node scripts/check-schema-version.mjs",
|
package/release-notes.json
CHANGED
|
@@ -1,6 +1,39 @@
|
|
|
1
1
|
{
|
|
2
|
-
"current": "0.9.
|
|
2
|
+
"current": "0.9.341",
|
|
3
3
|
"notes": {
|
|
4
|
+
"0.9.341": {
|
|
5
|
+
"version": "0.9.341",
|
|
6
|
+
"date": "2026-07-06",
|
|
7
|
+
"features": [
|
|
8
|
+
"backlog auto-reconcile CLI — detect already-shipped records (report-only default, --apply gated) (19109dc4) (#352)",
|
|
9
|
+
"durable notification ledger (default-OFF, 0aa3ba1c) (#350)",
|
|
10
|
+
"canary/staged rollout for stack releases (release-safety hardening) (#319)",
|
|
11
|
+
"telemetry/bug-report egress redaction (dc16fee4) (#348)",
|
|
12
|
+
"automated backup restore-verify harness + manifest sidecar (4d83e9a4) (#349)"
|
|
13
|
+
],
|
|
14
|
+
"fixes": [
|
|
15
|
+
"reject invalid agent model ids + fail-loud spawn (no silent zombie) (8b57892a) (#351)",
|
|
16
|
+
"don't re-arm auto-reconnect on intentional disconnect (#323)"
|
|
17
|
+
],
|
|
18
|
+
"security": [],
|
|
19
|
+
"other": [
|
|
20
|
+
"bump v0.9.341 (#353)",
|
|
21
|
+
"de-flake + promote 4 quarantined tests into the required gate (#317)",
|
|
22
|
+
"merge-queue/PR-only pilot proof marker (#314)"
|
|
23
|
+
],
|
|
24
|
+
"migration_notes": []
|
|
25
|
+
},
|
|
26
|
+
"0.9.340": {
|
|
27
|
+
"version": "0.9.340",
|
|
28
|
+
"date": "2026-07-05",
|
|
29
|
+
"features": [],
|
|
30
|
+
"fixes": [
|
|
31
|
+
"restore cloud memory backlog sync (#337)"
|
|
32
|
+
],
|
|
33
|
+
"security": [],
|
|
34
|
+
"other": [],
|
|
35
|
+
"migration_notes": []
|
|
36
|
+
},
|
|
4
37
|
"0.9.339": {
|
|
5
38
|
"version": "0.9.339",
|
|
6
39
|
"date": "2026-07-05",
|
|
@@ -9,9 +42,7 @@
|
|
|
9
42
|
"rolling-window self-inflicted ceiling — close periodic-block evasion (fast-follow #341) (#344)"
|
|
10
43
|
],
|
|
11
44
|
"security": [],
|
|
12
|
-
"other": [
|
|
13
|
-
"bump v0.9.339 (#345)"
|
|
14
|
-
],
|
|
45
|
+
"other": [],
|
|
15
46
|
"migration_notes": []
|
|
16
47
|
},
|
|
17
48
|
"0.9.338": {
|
|
@@ -54,62 +85,6 @@
|
|
|
54
85
|
"add Codex PR review workflow (self-hosted, no App/webhook)"
|
|
55
86
|
],
|
|
56
87
|
"migration_notes": []
|
|
57
|
-
},
|
|
58
|
-
"0.9.330": {
|
|
59
|
-
"version": "0.9.330",
|
|
60
|
-
"date": "2026-07-04",
|
|
61
|
-
"features": [
|
|
62
|
-
"admin-only set_customer_plan MCP tool + POST /admin/customer/plan (feature 46497a13)",
|
|
63
|
-
"add license plan-refresh procedure so all agents know how to pick up a plan change"
|
|
64
|
-
],
|
|
65
|
-
"fixes": [
|
|
66
|
-
"stabilize daemon reconnect CI fallback",
|
|
67
|
-
"extract prose graph entities",
|
|
68
|
-
"verify prompt task notifications",
|
|
69
|
-
"canonicalize claude context model ids",
|
|
70
|
-
"harden gateway security defaults",
|
|
71
|
-
"route cognition through api router",
|
|
72
|
-
"Fix hook latency and stop safety guards",
|
|
73
|
-
"verify worktree branch reuse",
|
|
74
|
-
"recover deleted worktree daemon sessions",
|
|
75
|
-
"sync customer feature status via admin route",
|
|
76
|
-
"sanitize styled agent model ids",
|
|
77
|
-
"persist otel telemetry to clickhouse",
|
|
78
|
-
"sync wiki MCP compose pin with stack manifest",
|
|
79
|
-
"fix hook timeout and daemon session env",
|
|
80
|
-
"fix task lifecycle cleanup edge cases",
|
|
81
|
-
"fix cognition warnings and CI runner cargo isolation",
|
|
82
|
-
"fix codex spawn and lane affinity checks",
|
|
83
|
-
"bound skill sweep and harden db lock release",
|
|
84
|
-
"fix daemon client reconnect persistence",
|
|
85
|
-
"isolate MCP request path from event-loop lag + reap orphaned coordinator sessions (bug 6c46d301)"
|
|
86
|
-
],
|
|
87
|
-
"security": [],
|
|
88
|
-
"other": [
|
|
89
|
-
"release: bump exe-os to 0.9.328",
|
|
90
|
-
"remove destructive postgres volume guidance",
|
|
91
|
-
"sync stack parity wiki mcp pin",
|
|
92
|
-
"release: bump exe-os to 0.9.326",
|
|
93
|
-
"release: bump exe-os to 0.9.325",
|
|
94
|
-
"release: bump npm for v0.9.29 stack manifest",
|
|
95
|
-
"release(stack): v0.9.29 — today's merged daemon/gateway/crm/wiki fixes, signed",
|
|
96
|
-
"add merge_group trigger to enable GitHub Merge Queue (batches PRs, ends per-push runner storms; runs on self-hosted build-my, zero hosted minutes)"
|
|
97
|
-
],
|
|
98
|
-
"migration_notes": []
|
|
99
|
-
},
|
|
100
|
-
"0.9.329": {
|
|
101
|
-
"version": "0.9.329",
|
|
102
|
-
"date": "2026-07-04",
|
|
103
|
-
"features": [],
|
|
104
|
-
"fixes": [
|
|
105
|
-
"make db read worker tolerate parent disconnect"
|
|
106
|
-
],
|
|
107
|
-
"security": [],
|
|
108
|
-
"other": [
|
|
109
|
-
"release: bump exe-os to 0.9.329",
|
|
110
|
-
"stabilize ci daemon hook coverage"
|
|
111
|
-
],
|
|
112
|
-
"migration_notes": []
|
|
113
88
|
}
|
|
114
89
|
}
|
|
115
90
|
}
|
package/dist/chunk-Y25OJWOQ.js
DELETED
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
// src/lib/secret-redaction.ts
|
|
2
|
-
import { validateMnemonic } from "bip39";
|
|
3
|
-
var SECRET_PATTERNS = [
|
|
4
|
-
{ name: "openai_key", pattern: /\bsk-[A-Za-z0-9_-]{20,}\b/g },
|
|
5
|
-
{ name: "anthropic_key", pattern: /\bsk-ant-[A-Za-z0-9_-]{20,}\b/g },
|
|
6
|
-
{ name: "exe_license_key", pattern: /\bexe_sk_[A-Za-z0-9_-]{8,}\b/g },
|
|
7
|
-
{ name: "aws_access_key", pattern: /\bAKIA[0-9A-Z]{16}\b/g },
|
|
8
|
-
{ name: "github_token", pattern: /\bgh[pousr]_[A-Za-z0-9_]{30,}\b/g },
|
|
9
|
-
{ name: "bearer_token", pattern: /\bBearer\s+[A-Za-z0-9._~+/=-]{20,}\b/gi },
|
|
10
|
-
{ name: "jwt", pattern: /\beyJ[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}\b/g },
|
|
11
|
-
{ name: "private_key", pattern: /-----BEGIN (?:OPENSSH|RSA|DSA|EC|PGP)? ?PRIVATE KEY-----[\s\S]*?-----END (?:OPENSSH|RSA|DSA|EC|PGP)? ?PRIVATE KEY-----/g },
|
|
12
|
-
{ name: "db_url_password", pattern: /\b(postgres(?:ql)?|mysql|mongodb|redis):\/\/([^:\s/@]+):([^@\s]+)@/gi },
|
|
13
|
-
{ name: "assignment_secret", pattern: /\b(api[_-]?key|secret|token|password|passwd|pwd|private[_-]?key|access[_-]?key)\s*[:=]\s*(['\"]?)[^\s'"]{8,}\2/gi },
|
|
14
|
-
{ name: "env_secret", pattern: /\b[A-Z0-9_]*(?:API_KEY|SECRET|TOKEN|PASSWORD|PASSWD|PRIVATE_KEY|ACCESS_KEY)[A-Z0-9_]*\s*=\s*['\"]?[^'"\s]{8,}/g }
|
|
15
|
-
];
|
|
16
|
-
var MNEMONIC_CANDIDATE_RE = /\b(?:[a-z]{3,12}\s+){11,23}[a-z]{3,12}\b/g;
|
|
17
|
-
var MNEMONIC_LENGTHS = /* @__PURE__ */ new Set([12, 15, 18, 21, 24]);
|
|
18
|
-
function looksLikeBip39Mnemonic(candidate) {
|
|
19
|
-
const words = candidate.trim().split(/\s+/);
|
|
20
|
-
if (!MNEMONIC_LENGTHS.has(words.length)) return false;
|
|
21
|
-
return validateMnemonic(words.join(" "));
|
|
22
|
-
}
|
|
23
|
-
function redactSecrets(input) {
|
|
24
|
-
let text = input;
|
|
25
|
-
let redactedCount = 0;
|
|
26
|
-
for (const { name, pattern } of SECRET_PATTERNS) {
|
|
27
|
-
text = text.replace(pattern, (_match, ...args) => {
|
|
28
|
-
redactedCount++;
|
|
29
|
-
if (name === "db_url_password" && typeof args[0] === "string" && typeof args[1] === "string") {
|
|
30
|
-
return `${args[0]}://${args[1]}:[REDACTED:${name}]@`;
|
|
31
|
-
}
|
|
32
|
-
return `[REDACTED:${name}]`;
|
|
33
|
-
});
|
|
34
|
-
}
|
|
35
|
-
text = text.replace(MNEMONIC_CANDIDATE_RE, (match) => {
|
|
36
|
-
if (!looksLikeBip39Mnemonic(match)) return match;
|
|
37
|
-
redactedCount++;
|
|
38
|
-
return "[REDACTED:recovery_phrase]";
|
|
39
|
-
});
|
|
40
|
-
return { text, redactedCount };
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
export {
|
|
44
|
-
redactSecrets
|
|
45
|
-
};
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|