@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
|
@@ -1,14 +1,24 @@
|
|
|
1
|
-
import {
|
|
2
|
-
runDriftProbes
|
|
3
|
-
} from "./chunk-XJI7Z6LZ.js";
|
|
4
1
|
import {
|
|
5
2
|
exportOrchestration,
|
|
6
3
|
importOrchestration,
|
|
7
4
|
validatePackage
|
|
8
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-DPFQ2WQX.js";
|
|
9
6
|
import {
|
|
10
|
-
|
|
11
|
-
} from "./chunk-
|
|
7
|
+
runDriftProbes
|
|
8
|
+
} from "./chunk-T2PYVVZ5.js";
|
|
9
|
+
import {
|
|
10
|
+
registerAddBugReportComment,
|
|
11
|
+
registerGetBugReport,
|
|
12
|
+
registerGetBugReportComments,
|
|
13
|
+
registerGetFeatureRequest,
|
|
14
|
+
registerGetReview,
|
|
15
|
+
registerListBugReports,
|
|
16
|
+
registerListFeatureRequests,
|
|
17
|
+
registerListReviews,
|
|
18
|
+
registerTriageBugReport,
|
|
19
|
+
registerTriageFeatureRequest,
|
|
20
|
+
registerTriageReview
|
|
21
|
+
} from "./chunk-6QW6JHRE.js";
|
|
12
22
|
import {
|
|
13
23
|
DEFAULT_LIST_LIMIT,
|
|
14
24
|
MAX_IMPORTANCE,
|
|
@@ -17,11 +27,26 @@ import {
|
|
|
17
27
|
ingestDocument,
|
|
18
28
|
listDocumentsByWorkspace,
|
|
19
29
|
updateChunksImportance
|
|
20
|
-
} from "./chunk-
|
|
30
|
+
} from "./chunk-LOBCQXV5.js";
|
|
31
|
+
import {
|
|
32
|
+
analyzeBlastRadius,
|
|
33
|
+
buildCodeContextIndex,
|
|
34
|
+
buildCodeContextIndexWithEmbeddings,
|
|
35
|
+
getCodeContextStats,
|
|
36
|
+
searchCodeContext,
|
|
37
|
+
searchCodeContextSemantic,
|
|
38
|
+
traceCodeSymbol
|
|
39
|
+
} from "./chunk-U2MREVXQ.js";
|
|
40
|
+
import {
|
|
41
|
+
StewardGate
|
|
42
|
+
} from "./chunk-YHUNDGVV.js";
|
|
43
|
+
import {
|
|
44
|
+
DreamingEngine
|
|
45
|
+
} from "./chunk-L2YGXJGF.js";
|
|
21
46
|
import {
|
|
22
47
|
isRerankerAvailable,
|
|
23
48
|
rerankWithScores
|
|
24
|
-
} from "./chunk-
|
|
49
|
+
} from "./chunk-WNKVKNOM.js";
|
|
25
50
|
import {
|
|
26
51
|
getEntityByName,
|
|
27
52
|
getEntityNeighbors,
|
|
@@ -31,39 +56,27 @@ import {
|
|
|
31
56
|
searchEntities
|
|
32
57
|
} from "./chunk-CRCB5S7I.js";
|
|
33
58
|
import {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
buildCodeContextIndexWithEmbeddings,
|
|
37
|
-
getCodeContextStats,
|
|
38
|
-
searchCodeContext,
|
|
39
|
-
searchCodeContextSemantic,
|
|
40
|
-
traceCodeSymbol
|
|
41
|
-
} from "./chunk-W7DHFGCB.js";
|
|
59
|
+
listRecentSessionEvents
|
|
60
|
+
} from "./chunk-YLQXP7T7.js";
|
|
42
61
|
import {
|
|
43
62
|
DEFAULT_EXPLORE_DURATION_MS,
|
|
44
63
|
getPlayMode,
|
|
45
64
|
listExploreSessions,
|
|
46
65
|
setPlayMode
|
|
47
66
|
} from "./chunk-PVYR4FCQ.js";
|
|
48
|
-
import {
|
|
49
|
-
DreamingEngine
|
|
50
|
-
} from "./chunk-VJHUVFIW.js";
|
|
51
67
|
import {
|
|
52
68
|
AUTO_WAKE_MAX_RETRIES
|
|
53
|
-
} from "./chunk-
|
|
54
|
-
import {
|
|
55
|
-
listRecentSessionEvents
|
|
56
|
-
} from "./chunk-QFPTDSY2.js";
|
|
69
|
+
} from "./chunk-BMHQPIJ2.js";
|
|
57
70
|
import {
|
|
58
71
|
getCachedLicenseGate,
|
|
59
72
|
refreshLicenseGate
|
|
60
|
-
} from "./chunk-
|
|
73
|
+
} from "./chunk-NDSNM5OH.js";
|
|
61
74
|
import {
|
|
62
75
|
getToolUsageStats
|
|
63
|
-
} from "./chunk-
|
|
76
|
+
} from "./chunk-MC6VPZKS.js";
|
|
64
77
|
import {
|
|
65
78
|
getToolCapabilityIndex
|
|
66
|
-
} from "./chunk-
|
|
79
|
+
} from "./chunk-3NCZKWPO.js";
|
|
67
80
|
import {
|
|
68
81
|
isToolAllowed,
|
|
69
82
|
isToolAllowedForPlan
|
|
@@ -74,55 +87,55 @@ import {
|
|
|
74
87
|
} from "./chunk-32SXNM3G.js";
|
|
75
88
|
import {
|
|
76
89
|
createOrRefreshResumeTask
|
|
77
|
-
} from "./chunk-
|
|
90
|
+
} from "./chunk-MC4ATFJV.js";
|
|
91
|
+
import {
|
|
92
|
+
registerCreateTask
|
|
93
|
+
} from "./chunk-GOGSWXNZ.js";
|
|
78
94
|
import {
|
|
79
95
|
registerListTasks
|
|
80
|
-
} from "./chunk-
|
|
96
|
+
} from "./chunk-CYA5S5OD.js";
|
|
81
97
|
import {
|
|
82
98
|
registerUpdateTask
|
|
83
|
-
} from "./chunk-
|
|
99
|
+
} from "./chunk-HUSVERE6.js";
|
|
84
100
|
import {
|
|
85
101
|
registerCreateReminder
|
|
86
|
-
} from "./chunk-
|
|
102
|
+
} from "./chunk-CCPHEPLU.js";
|
|
87
103
|
import {
|
|
88
104
|
registerListReminders
|
|
89
|
-
} from "./chunk-
|
|
105
|
+
} from "./chunk-2YCFNBC4.js";
|
|
90
106
|
import {
|
|
91
107
|
registerCompleteReminder
|
|
92
|
-
} from "./chunk-
|
|
108
|
+
} from "./chunk-N7A5D25S.js";
|
|
93
109
|
import {
|
|
94
110
|
registerDeactivateBehavior
|
|
95
|
-
} from "./chunk-
|
|
111
|
+
} from "./chunk-ZNE6H2JO.js";
|
|
96
112
|
import {
|
|
97
113
|
completeReminder,
|
|
98
114
|
createReminder,
|
|
99
115
|
listReminders
|
|
100
|
-
} from "./chunk-
|
|
116
|
+
} from "./chunk-PVIH3ZGV.js";
|
|
101
117
|
import {
|
|
102
118
|
registerImportConversations
|
|
103
|
-
} from "./chunk-
|
|
119
|
+
} from "./chunk-TIXTHUVJ.js";
|
|
104
120
|
import {
|
|
105
121
|
registerSendMessage
|
|
106
|
-
} from "./chunk-
|
|
107
|
-
import {
|
|
108
|
-
registerCreateTask
|
|
109
|
-
} from "./chunk-DILD54TU.js";
|
|
122
|
+
} from "./chunk-WWNQFOSP.js";
|
|
110
123
|
import {
|
|
111
124
|
TOKENS_PER_IDLE_MINUTE,
|
|
112
125
|
countKillsSince,
|
|
113
126
|
sumTokensSavedSince
|
|
114
|
-
} from "./chunk-
|
|
127
|
+
} from "./chunk-IELUDZAA.js";
|
|
115
128
|
import {
|
|
116
129
|
createSchedule,
|
|
117
130
|
parseHumanCron
|
|
118
|
-
} from "./chunk-
|
|
131
|
+
} from "./chunk-J6SEDDOR.js";
|
|
119
132
|
import {
|
|
120
133
|
status
|
|
121
|
-
} from "./chunk-
|
|
134
|
+
} from "./chunk-KP4PY2Z2.js";
|
|
122
135
|
import {
|
|
123
136
|
evaluateGlobalSpendCap,
|
|
124
137
|
getAgentSpend
|
|
125
|
-
} from "./chunk-
|
|
138
|
+
} from "./chunk-2WMTTIAZ.js";
|
|
126
139
|
import {
|
|
127
140
|
exportGraphHTML,
|
|
128
141
|
generateGraphReport
|
|
@@ -135,14 +148,14 @@ import {
|
|
|
135
148
|
formatReport,
|
|
136
149
|
runAudit,
|
|
137
150
|
shouldFixShards
|
|
138
|
-
} from "./chunk-
|
|
151
|
+
} from "./chunk-IXBIVKWZ.js";
|
|
139
152
|
import {
|
|
140
153
|
formatDegradations,
|
|
141
154
|
getRetrievalHealth
|
|
142
|
-
} from "./chunk-
|
|
155
|
+
} from "./chunk-6MVI4QH2.js";
|
|
143
156
|
import {
|
|
144
157
|
runHealthCheck
|
|
145
|
-
} from "./chunk-
|
|
158
|
+
} from "./chunk-MJB5ZFQM.js";
|
|
146
159
|
import {
|
|
147
160
|
checkCpuStealSync
|
|
148
161
|
} from "./chunk-SSC7EKY2.js";
|
|
@@ -150,7 +163,7 @@ import {
|
|
|
150
163
|
hasFailures,
|
|
151
164
|
runHealth,
|
|
152
165
|
runTest
|
|
153
|
-
} from "./chunk-
|
|
166
|
+
} from "./chunk-UIU2DGRV.js";
|
|
154
167
|
import {
|
|
155
168
|
isSupportReportSentStatus,
|
|
156
169
|
markSupportReportSent
|
|
@@ -161,12 +174,12 @@ import {
|
|
|
161
174
|
} from "./chunk-2XZ6X3PJ.js";
|
|
162
175
|
import {
|
|
163
176
|
renderClientCOOTemplate
|
|
164
|
-
} from "./chunk-
|
|
177
|
+
} from "./chunk-K6KRBXQP.js";
|
|
165
178
|
import {
|
|
166
179
|
deactivateGlobalProcedure,
|
|
167
180
|
loadGlobalProcedures,
|
|
168
181
|
storeGlobalProcedure
|
|
169
|
-
} from "./chunk-
|
|
182
|
+
} from "./chunk-6BQG7EKO.js";
|
|
170
183
|
import {
|
|
171
184
|
PLATFORM_PROCEDURES
|
|
172
185
|
} from "./chunk-A47MXY2I.js";
|
|
@@ -175,14 +188,14 @@ import {
|
|
|
175
188
|
cloudSync,
|
|
176
189
|
getCloudReuploadRequired,
|
|
177
190
|
markCloudReuploadRequired
|
|
178
|
-
} from "./chunk-
|
|
191
|
+
} from "./chunk-YWQMWFYR.js";
|
|
179
192
|
import {
|
|
180
193
|
createARecord
|
|
181
194
|
} from "./chunk-X2Z5GT3V.js";
|
|
182
195
|
import {
|
|
183
196
|
findSimilarTrajectories,
|
|
184
197
|
hashSignature
|
|
185
|
-
} from "./chunk-
|
|
198
|
+
} from "./chunk-GPW32HVB.js";
|
|
186
199
|
import {
|
|
187
200
|
GHOST_BEHAVIOR_SQL,
|
|
188
201
|
deactivateBehavior,
|
|
@@ -191,20 +204,20 @@ import {
|
|
|
191
204
|
reactivateBehavior,
|
|
192
205
|
storeBehavior,
|
|
193
206
|
storeReflexBehavior
|
|
194
|
-
} from "./chunk-
|
|
207
|
+
} from "./chunk-OUEFW4RK.js";
|
|
195
208
|
import {
|
|
196
209
|
countUnconsolidated,
|
|
197
210
|
groupMemories,
|
|
198
211
|
runConsolidation,
|
|
199
212
|
selectUnconsolidated
|
|
200
|
-
} from "./chunk-
|
|
213
|
+
} from "./chunk-WD55PEBM.js";
|
|
201
214
|
import {
|
|
202
215
|
entityId,
|
|
203
216
|
mergeEntities
|
|
204
|
-
} from "./chunk-
|
|
217
|
+
} from "./chunk-7UMCQQWS.js";
|
|
205
218
|
import {
|
|
206
219
|
embed
|
|
207
|
-
} from "./chunk-
|
|
220
|
+
} from "./chunk-AP455LBW.js";
|
|
208
221
|
import {
|
|
209
222
|
detectDcrIncompatibleConnectorsFromDisk,
|
|
210
223
|
detectExternalMcpFailures,
|
|
@@ -214,17 +227,17 @@ import {
|
|
|
214
227
|
} from "./chunk-5RACW3LX.js";
|
|
215
228
|
import {
|
|
216
229
|
updateTask
|
|
217
|
-
} from "./chunk-
|
|
230
|
+
} from "./chunk-XSMRR4IW.js";
|
|
218
231
|
import {
|
|
219
232
|
fastDbInit
|
|
220
|
-
} from "./chunk-
|
|
233
|
+
} from "./chunk-7YORGTXC.js";
|
|
221
234
|
import {
|
|
222
235
|
MAX_CONCURRENT_WORKERS
|
|
223
|
-
} from "./chunk-
|
|
236
|
+
} from "./chunk-2IWBY7XK.js";
|
|
224
237
|
import {
|
|
225
238
|
hybridSearch,
|
|
226
239
|
recentRecords
|
|
227
|
-
} from "./chunk-
|
|
240
|
+
} from "./chunk-FOV57K47.js";
|
|
228
241
|
import {
|
|
229
242
|
buildFtsMatch,
|
|
230
243
|
tokenizeForFts
|
|
@@ -234,10 +247,16 @@ import {
|
|
|
234
247
|
flushBatch,
|
|
235
248
|
initStore,
|
|
236
249
|
writeMemory
|
|
237
|
-
} from "./chunk-
|
|
250
|
+
} from "./chunk-EDH54E5A.js";
|
|
238
251
|
import {
|
|
239
252
|
getActiveAgent
|
|
240
|
-
} from "./chunk-
|
|
253
|
+
} from "./chunk-C445WRUX.js";
|
|
254
|
+
import {
|
|
255
|
+
UPSTREAM_ATTACHMENT_MAX_CHARS,
|
|
256
|
+
isTelemetryRedactionEnabled,
|
|
257
|
+
sanitizeUpstreamPayload,
|
|
258
|
+
sanitizedUpstreamBody
|
|
259
|
+
} from "./chunk-RP5GETX5.js";
|
|
241
260
|
import {
|
|
242
261
|
getMySession,
|
|
243
262
|
resolveExeSession,
|
|
@@ -246,13 +265,13 @@ import {
|
|
|
246
265
|
sessionScopeFilter,
|
|
247
266
|
updateTaskStatus,
|
|
248
267
|
writeCheckpoint
|
|
249
|
-
} from "./chunk-
|
|
268
|
+
} from "./chunk-KKOLHBNC.js";
|
|
250
269
|
import {
|
|
251
270
|
listSessions
|
|
252
|
-
} from "./chunk-
|
|
271
|
+
} from "./chunk-HNLXMD2V.js";
|
|
253
272
|
import {
|
|
254
273
|
recordOrchestrationEventBestEffort
|
|
255
|
-
} from "./chunk-
|
|
274
|
+
} from "./chunk-WH7XN5ER.js";
|
|
256
275
|
import {
|
|
257
276
|
DEFAULT_MODELS,
|
|
258
277
|
KNOWN_RUNTIMES,
|
|
@@ -260,7 +279,7 @@ import {
|
|
|
260
279
|
getAgentRuntime,
|
|
261
280
|
loadAgentConfig,
|
|
262
281
|
setAgentRuntime
|
|
263
|
-
} from "./chunk-
|
|
282
|
+
} from "./chunk-GFDGDFBF.js";
|
|
264
283
|
import {
|
|
265
284
|
DEFAULT_RUNTIME
|
|
266
285
|
} from "./chunk-NGP6LSV2.js";
|
|
@@ -269,7 +288,7 @@ import {
|
|
|
269
288
|
assertEmployeeLimit,
|
|
270
289
|
assertFeature,
|
|
271
290
|
assertMemoryLimit
|
|
272
|
-
} from "./chunk-
|
|
291
|
+
} from "./chunk-2UGGBIDL.js";
|
|
273
292
|
import {
|
|
274
293
|
getProjectName
|
|
275
294
|
} from "./chunk-OPU3NYOO.js";
|
|
@@ -288,7 +307,7 @@ import {
|
|
|
288
307
|
isScheduledTrigger,
|
|
289
308
|
loadTriggers,
|
|
290
309
|
sanitizeParam
|
|
291
|
-
} from "./chunk-
|
|
310
|
+
} from "./chunk-IB336P52.js";
|
|
292
311
|
import {
|
|
293
312
|
pushConversationToCRM
|
|
294
313
|
} from "./chunk-ML4S5SHZ.js";
|
|
@@ -309,7 +328,7 @@ import {
|
|
|
309
328
|
loadEmployeesSync,
|
|
310
329
|
saveEmployees,
|
|
311
330
|
updateIdentity
|
|
312
|
-
} from "./chunk-
|
|
331
|
+
} from "./chunk-RWSLVYTE.js";
|
|
313
332
|
import {
|
|
314
333
|
getEventLoopLagMs,
|
|
315
334
|
isDaemonAlive,
|
|
@@ -331,16 +350,16 @@ import {
|
|
|
331
350
|
refreshLicense,
|
|
332
351
|
saveLicense,
|
|
333
352
|
validateLicense
|
|
334
|
-
} from "./chunk-
|
|
353
|
+
} from "./chunk-7SEC2AG5.js";
|
|
335
354
|
import {
|
|
336
355
|
EXE_AI_DIR,
|
|
337
356
|
loadConfig
|
|
338
357
|
} from "./chunk-7Y5UDEVM.js";
|
|
339
358
|
|
|
340
359
|
// src/mcp/register-tools.ts
|
|
341
|
-
import { readFileSync as
|
|
342
|
-
import { join as
|
|
343
|
-
import { homedir as
|
|
360
|
+
import { readFileSync as readFileSync7 } from "fs";
|
|
361
|
+
import { join as join4 } from "path";
|
|
362
|
+
import { homedir as homedir4 } from "os";
|
|
344
363
|
|
|
345
364
|
// src/mcp/tools/memory.ts
|
|
346
365
|
import { z as z12 } from "zod";
|
|
@@ -515,7 +534,7 @@ function registerRecallMyMemory(server) {
|
|
|
515
534
|
}) => {
|
|
516
535
|
try {
|
|
517
536
|
if (!isInitialized()) {
|
|
518
|
-
const { fastDbInit: fastDbInit2 } = await import("./fast-db-init-
|
|
537
|
+
const { fastDbInit: fastDbInit2 } = await import("./fast-db-init-JKJEEHUI.js");
|
|
519
538
|
await fastDbInit2();
|
|
520
539
|
}
|
|
521
540
|
if (!recent && !query) {
|
|
@@ -562,7 +581,7 @@ function registerRecallMyMemory(server) {
|
|
|
562
581
|
let federatedCount = 0;
|
|
563
582
|
if (!recent && query && results.length < FEDERATION_THRESHOLD) {
|
|
564
583
|
try {
|
|
565
|
-
const { searchCodeContextSemantic: searchCodeContextSemantic2 } = await import("./code-context-index-
|
|
584
|
+
const { searchCodeContextSemantic: searchCodeContextSemantic2 } = await import("./code-context-index-BNBHDXHW.js");
|
|
566
585
|
const codeResults = await Promise.race([
|
|
567
586
|
searchCodeContextSemantic2(query, { limit: 5 }),
|
|
568
587
|
new Promise((_, rej) => setTimeout(() => rej(new Error("timeout")), 2e3))
|
|
@@ -800,7 +819,7 @@ function registerStoreMemory(server) {
|
|
|
800
819
|
}
|
|
801
820
|
const { agentId, agentRole } = getActiveAgent();
|
|
802
821
|
if (kind === "prospective") {
|
|
803
|
-
const { createProspectiveMemory } = await import("./prospective-memory-
|
|
822
|
+
const { createProspectiveMemory } = await import("./prospective-memory-UACFTYXK.js");
|
|
804
823
|
let sessionScope = null;
|
|
805
824
|
try {
|
|
806
825
|
const { resolveExeSession: resolveExeSession2 } = await import("./lib/tmux-routing.js");
|
|
@@ -1786,7 +1805,7 @@ async function handleSupersede(input) {
|
|
|
1786
1805
|
}
|
|
1787
1806
|
try {
|
|
1788
1807
|
const { getClient: getClient2 } = await import("./lib/database.js");
|
|
1789
|
-
const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-
|
|
1808
|
+
const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-AIQP4DFL.js");
|
|
1790
1809
|
const { writeMemory: writeMemory2, flushBatch: flushBatch2 } = await import("./lib/store.js");
|
|
1791
1810
|
const { randomUUID: randomUUID2 } = await import("crypto");
|
|
1792
1811
|
const client = getClient2();
|
|
@@ -1839,7 +1858,7 @@ New memory id: ${newId}`
|
|
|
1839
1858
|
}
|
|
1840
1859
|
async function handleResonanceQuery(input) {
|
|
1841
1860
|
try {
|
|
1842
|
-
const { getHotPairs, getCoActivationNeighbors } = await import("./co-activation-
|
|
1861
|
+
const { getHotPairs, getCoActivationNeighbors } = await import("./co-activation-QI5BK4RT.js");
|
|
1843
1862
|
const subAction = input.resonance_action ?? "hot_pairs";
|
|
1844
1863
|
const limit = input.limit ?? 20;
|
|
1845
1864
|
if (subAction === "hot_pairs") {
|
|
@@ -1934,7 +1953,7 @@ function registerMemory(server) {
|
|
|
1934
1953
|
return handleResonanceQuery(input);
|
|
1935
1954
|
}
|
|
1936
1955
|
if (action === "update_working_memory" || action === "get_working_memory") {
|
|
1937
|
-
const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-
|
|
1956
|
+
const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-AIQP4DFL.js");
|
|
1938
1957
|
const { agentId } = getActiveAgent2();
|
|
1939
1958
|
const { readWorkingMemoryWithMeta, writeWorkingMemory, WORKING_MEMORY_MAX_BYTES } = await import("./working-memory-PY4AG577.js");
|
|
1940
1959
|
if (action === "get_working_memory") {
|
|
@@ -1960,9 +1979,9 @@ function registerMemory(server) {
|
|
|
1960
1979
|
}
|
|
1961
1980
|
}
|
|
1962
1981
|
if (action === "core_get" || action === "core_set" || action === "core_delete") {
|
|
1963
|
-
const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-
|
|
1982
|
+
const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-AIQP4DFL.js");
|
|
1964
1983
|
const { agentId } = getActiveAgent2();
|
|
1965
|
-
const { getCoreMemory, setCoreMemory, deleteCoreMemory, formatCoreMemoryBlock } = await import("./core-memory-
|
|
1984
|
+
const { getCoreMemory, setCoreMemory, deleteCoreMemory, formatCoreMemoryBlock } = await import("./core-memory-3IBWM4WR.js");
|
|
1966
1985
|
if (action === "core_get") {
|
|
1967
1986
|
const entries = await getCoreMemory(agentId);
|
|
1968
1987
|
const block = formatCoreMemoryBlock(entries);
|
|
@@ -2014,12 +2033,12 @@ function registerMemory(server) {
|
|
|
2014
2033
|
if (!storeTrigger || !storeTriggerAction) {
|
|
2015
2034
|
return errorResult('memory action "store" with kind="reflex" requires trigger and trigger_action fields');
|
|
2016
2035
|
}
|
|
2017
|
-
const { formatReflexContent, storeReflexBehavior: storeReflexBehavior2 } = await import("./behaviors-
|
|
2036
|
+
const { formatReflexContent, storeReflexBehavior: storeReflexBehavior2 } = await import("./behaviors-EO7KCP3H.js");
|
|
2018
2037
|
const reflexText = formatReflexContent(storeTrigger, storeTriggerAction);
|
|
2019
2038
|
legacyArgs.text ??= reflexText;
|
|
2020
2039
|
legacyArgs.query ??= reflexText;
|
|
2021
2040
|
try {
|
|
2022
|
-
const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-
|
|
2041
|
+
const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-AIQP4DFL.js");
|
|
2023
2042
|
const { getProjectName: getProjectName2 } = await import("./project-name-EWG5KAZP.js");
|
|
2024
2043
|
const agent = getActiveAgent2();
|
|
2025
2044
|
const behaviorId = await storeReflexBehavior2({
|
|
@@ -2375,7 +2394,7 @@ function registerCloseTask(server) {
|
|
|
2375
2394
|
async ({ task_id, result: result3, status: status2 }) => {
|
|
2376
2395
|
const agent = getActiveAgent();
|
|
2377
2396
|
try {
|
|
2378
|
-
const { StewardGate: StewardGate2 } = await import("./steward-gate-
|
|
2397
|
+
const { StewardGate: StewardGate2 } = await import("./steward-gate-4A2XHYFD.js");
|
|
2379
2398
|
const steward = new StewardGate2();
|
|
2380
2399
|
const gateDecision = await steward.checkAuthority(agent.agentId || "unknown", "close_task", task_id);
|
|
2381
2400
|
if (!gateDecision.allowed) {
|
|
@@ -2556,8 +2575,8 @@ ${preflightWarnings.join("\n")}`;
|
|
|
2556
2575
|
if (mergeNote) text5 += mergeNote;
|
|
2557
2576
|
if (status2 === "closed" && assignee) {
|
|
2558
2577
|
try {
|
|
2559
|
-
const { cleanupAgentWorktree } = await import("./worktree-sweep-
|
|
2560
|
-
const { getGitRoot } = await import("./worktree-
|
|
2578
|
+
const { cleanupAgentWorktree } = await import("./worktree-sweep-5WKBU7E6.js");
|
|
2579
|
+
const { getGitRoot } = await import("./worktree-YXBDRYOC.js");
|
|
2561
2580
|
const repoRoot = getGitRoot(baseDir);
|
|
2562
2581
|
if (repoRoot) {
|
|
2563
2582
|
const cleanupNotes = await cleanupAgentWorktree(repoRoot, assignee);
|
|
@@ -2606,8 +2625,8 @@ ${preflightWarnings.join("\n")}`;
|
|
|
2606
2625
|
} catch {
|
|
2607
2626
|
}
|
|
2608
2627
|
try {
|
|
2609
|
-
const { cleanupAgentWorktree } = await import("./worktree-sweep-
|
|
2610
|
-
const { getGitRoot } = await import("./worktree-
|
|
2628
|
+
const { cleanupAgentWorktree } = await import("./worktree-sweep-5WKBU7E6.js");
|
|
2629
|
+
const { getGitRoot } = await import("./worktree-YXBDRYOC.js");
|
|
2611
2630
|
const root = getGitRoot(_baseDir);
|
|
2612
2631
|
if (root) {
|
|
2613
2632
|
const notes = await cleanupAgentWorktree(root, _assignee);
|
|
@@ -2710,7 +2729,7 @@ function registerResumeEmployee(server) {
|
|
|
2710
2729
|
},
|
|
2711
2730
|
async ({ agent_id, project_name }) => {
|
|
2712
2731
|
if (!isInitialized()) {
|
|
2713
|
-
const { fastDbInit: fastDbInit2 } = await import("./fast-db-init-
|
|
2732
|
+
const { fastDbInit: fastDbInit2 } = await import("./fast-db-init-JKJEEHUI.js");
|
|
2714
2733
|
await fastDbInit2();
|
|
2715
2734
|
}
|
|
2716
2735
|
const client = getClient();
|
|
@@ -2736,7 +2755,7 @@ function registerResumeEmployee(server) {
|
|
|
2736
2755
|
};
|
|
2737
2756
|
}
|
|
2738
2757
|
try {
|
|
2739
|
-
const { isTmuxSessionAlive } = await import("./tasks-crud-
|
|
2758
|
+
const { isTmuxSessionAlive } = await import("./tasks-crud-6LBNU43G.js");
|
|
2740
2759
|
const now = (/* @__PURE__ */ new Date()).toISOString();
|
|
2741
2760
|
for (const row of openTasks.rows) {
|
|
2742
2761
|
const status2 = String(row.status);
|
|
@@ -2764,7 +2783,7 @@ function registerResumeEmployee(server) {
|
|
|
2764
2783
|
}
|
|
2765
2784
|
let checkpointInfo = "";
|
|
2766
2785
|
try {
|
|
2767
|
-
const { readLatestCheckpoint } = await import("./tasks-crud-
|
|
2786
|
+
const { readLatestCheckpoint } = await import("./tasks-crud-6LBNU43G.js");
|
|
2768
2787
|
const checkpoint = await readLatestCheckpoint(agent_id);
|
|
2769
2788
|
if (checkpoint) {
|
|
2770
2789
|
const filesTouched = checkpoint.files_touched?.length > 0 ? checkpoint.files_touched.join(", ") : "none";
|
|
@@ -3180,7 +3199,7 @@ function registerTask(server) {
|
|
|
3180
3199
|
const missing2 = missingRequiredFields2(args, REQUIRED_FIELDS2.create_group);
|
|
3181
3200
|
if (missing2.length > 0) return errorResult2(`task action "create_group" missing required field(s): ${missing2.join(", ")}`);
|
|
3182
3201
|
try {
|
|
3183
|
-
const { createTaskGroup } = await import("./tasks-crud-
|
|
3202
|
+
const { createTaskGroup } = await import("./tasks-crud-6LBNU43G.js");
|
|
3184
3203
|
const group = await createTaskGroup({
|
|
3185
3204
|
title: args.title,
|
|
3186
3205
|
coordinator: args.coordinator,
|
|
@@ -3199,7 +3218,7 @@ function registerTask(server) {
|
|
|
3199
3218
|
const missing2 = missingRequiredFields2(args, REQUIRED_FIELDS2.group_status);
|
|
3200
3219
|
if (missing2.length > 0) return errorResult2(`task action "group_status" missing required field(s): ${missing2.join(", ")}`);
|
|
3201
3220
|
try {
|
|
3202
|
-
const { getGroupStatus } = await import("./tasks-crud-
|
|
3221
|
+
const { getGroupStatus } = await import("./tasks-crud-6LBNU43G.js");
|
|
3203
3222
|
const status2 = await getGroupStatus(args.group_id);
|
|
3204
3223
|
return { content: [{ type: "text", text: JSON.stringify(status2, null, 2) }] };
|
|
3205
3224
|
} catch (err) {
|
|
@@ -3211,7 +3230,7 @@ function registerTask(server) {
|
|
|
3211
3230
|
const missing2 = missingRequiredFields2(args, REQUIRED_FIELDS2.group_results);
|
|
3212
3231
|
if (missing2.length > 0) return errorResult2(`task action "group_results" missing required field(s): ${missing2.join(", ")}`);
|
|
3213
3232
|
try {
|
|
3214
|
-
const { getGroupResults } = await import("./tasks-crud-
|
|
3233
|
+
const { getGroupResults } = await import("./tasks-crud-6LBNU43G.js");
|
|
3215
3234
|
const results = await getGroupResults(args.group_id);
|
|
3216
3235
|
return { content: [{ type: "text", text: JSON.stringify(results, null, 2) }] };
|
|
3217
3236
|
} catch (err) {
|
|
@@ -3462,7 +3481,7 @@ function registerMessage(server) {
|
|
|
3462
3481
|
if (msgType && msgPayload) {
|
|
3463
3482
|
try {
|
|
3464
3483
|
const { buildTypedMessage, serializeMessage } = await import("./typed-messages-TKDGVPHS.js");
|
|
3465
|
-
const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-
|
|
3484
|
+
const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-AIQP4DFL.js");
|
|
3466
3485
|
const { sendMessage } = await import("./lib/messaging.js");
|
|
3467
3486
|
const { agentId } = getActiveAgent2();
|
|
3468
3487
|
const envelope = buildTypedMessage({
|
|
@@ -3496,7 +3515,7 @@ ID: ${msg.id}`
|
|
|
3496
3515
|
if (action === "read") {
|
|
3497
3516
|
try {
|
|
3498
3517
|
const { getPendingMessages } = await import("./lib/messaging.js");
|
|
3499
|
-
const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-
|
|
3518
|
+
const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-AIQP4DFL.js");
|
|
3500
3519
|
const { agentId } = getActiveAgent2();
|
|
3501
3520
|
const messages = await getPendingMessages(agentId);
|
|
3502
3521
|
if (messages.length === 0) {
|
|
@@ -3859,8 +3878,8 @@ function registerIngestDocument(server) {
|
|
|
3859
3878
|
},
|
|
3860
3879
|
async (input) => {
|
|
3861
3880
|
try {
|
|
3862
|
-
const { assertFeature: assertFeature2 } = await import("./plan-limits-
|
|
3863
|
-
const { assertMemoryLimit: assertMemoryLimit2 } = await import("./plan-limits-
|
|
3881
|
+
const { assertFeature: assertFeature2 } = await import("./plan-limits-WLQZTCSF.js");
|
|
3882
|
+
const { assertMemoryLimit: assertMemoryLimit2 } = await import("./plan-limits-WLQZTCSF.js");
|
|
3864
3883
|
await assertFeature2("wiki");
|
|
3865
3884
|
await assertMemoryLimit2();
|
|
3866
3885
|
const result3 = await ingestDocument(input);
|
|
@@ -3931,8 +3950,8 @@ function registerPurgeDocument(server) {
|
|
|
3931
3950
|
},
|
|
3932
3951
|
async ({ document_id }) => {
|
|
3933
3952
|
try {
|
|
3934
|
-
const { StewardGate: StewardGate2 } = await import("./steward-gate-
|
|
3935
|
-
const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-
|
|
3953
|
+
const { StewardGate: StewardGate2 } = await import("./steward-gate-4A2XHYFD.js");
|
|
3954
|
+
const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-AIQP4DFL.js");
|
|
3936
3955
|
const steward = new StewardGate2();
|
|
3937
3956
|
const agent = getActiveAgent2();
|
|
3938
3957
|
const gateDecision = await steward.checkAuthority(agent.agentId || "unknown", "purge_document", document_id);
|
|
@@ -4102,7 +4121,7 @@ function registerDocument(server) {
|
|
|
4102
4121
|
const { action: _action, ...legacyArgs } = input;
|
|
4103
4122
|
if (action === "list" && (legacyArgs.workspace_id === void 0 || legacyArgs.workspace_id === null || legacyArgs.workspace_id === "")) {
|
|
4104
4123
|
try {
|
|
4105
|
-
const { resolveDefaultWorkspaceId, listWorkspaces } = await import("./documents-
|
|
4124
|
+
const { resolveDefaultWorkspaceId, listWorkspaces } = await import("./documents-FA6N7QDA.js");
|
|
4106
4125
|
const defaultId = await resolveDefaultWorkspaceId();
|
|
4107
4126
|
if (defaultId) {
|
|
4108
4127
|
legacyArgs.workspace_id = defaultId;
|
|
@@ -4772,12 +4791,12 @@ async function validateGoTrueToken(token, gotrueUrl) {
|
|
|
4772
4791
|
}
|
|
4773
4792
|
async function getGoTrueUser(userId, gotrueUrl) {
|
|
4774
4793
|
const url = gotrueUrl ?? process.env.GOTRUE_URL ?? process.env.EXE_GOTRUE_URL;
|
|
4775
|
-
const
|
|
4776
|
-
if (!url || !
|
|
4794
|
+
const adminToken = process.env.GOTRUE_ADMIN_TOKEN ?? process.env.EXE_GOTRUE_ADMIN_TOKEN;
|
|
4795
|
+
if (!url || !adminToken) return null;
|
|
4777
4796
|
try {
|
|
4778
4797
|
const res = await fetch(`${url}/admin/users/${userId}`, {
|
|
4779
4798
|
headers: {
|
|
4780
|
-
Authorization: `Bearer ${
|
|
4799
|
+
Authorization: `Bearer ${adminToken}`,
|
|
4781
4800
|
"Content-Type": "application/json"
|
|
4782
4801
|
},
|
|
4783
4802
|
signal: AbortSignal.timeout(GOTRUE_TIMEOUT_MS)
|
|
@@ -5102,7 +5121,7 @@ async function handleStatus() {
|
|
|
5102
5121
|
detail: wikiUrl ? `API at ${wikiUrl}` : "EXE_WIKI_API_URL not set"
|
|
5103
5122
|
};
|
|
5104
5123
|
try {
|
|
5105
|
-
await import("./graph-rag-
|
|
5124
|
+
await import("./graph-rag-WAK2BRJH.js");
|
|
5106
5125
|
sinks.entity_extraction = { configured: true, detail: "GraphRAG available" };
|
|
5107
5126
|
} catch {
|
|
5108
5127
|
sinks.entity_extraction = { configured: false, detail: "graph-rag module unavailable" };
|
|
@@ -5129,7 +5148,7 @@ async function handleTrigger(limit) {
|
|
|
5129
5148
|
if (rows.rows.length === 0) {
|
|
5130
5149
|
return text3("No conversations found to re-process.");
|
|
5131
5150
|
}
|
|
5132
|
-
const { ingest } = await import("./pipeline-router-
|
|
5151
|
+
const { ingest } = await import("./pipeline-router-RTLAGZTA.js");
|
|
5133
5152
|
const results = [];
|
|
5134
5153
|
for (const row of rows.rows) {
|
|
5135
5154
|
const r = row;
|
|
@@ -5760,8 +5779,8 @@ function registerMergeEntities(server) {
|
|
|
5760
5779
|
},
|
|
5761
5780
|
async ({ source_name, source_type, target_name, target_type }) => {
|
|
5762
5781
|
try {
|
|
5763
|
-
const { StewardGate: StewardGate2 } = await import("./steward-gate-
|
|
5764
|
-
const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-
|
|
5782
|
+
const { StewardGate: StewardGate2 } = await import("./steward-gate-4A2XHYFD.js");
|
|
5783
|
+
const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-AIQP4DFL.js");
|
|
5765
5784
|
const steward = new StewardGate2();
|
|
5766
5785
|
const agent = getActiveAgent2();
|
|
5767
5786
|
const gateDecision = await steward.checkAuthority(agent.agentId || "unknown", "merge_entities", `${source_name}\u2192${target_name}`);
|
|
@@ -5969,7 +5988,7 @@ async function handleExtractFromDocument(args) {
|
|
|
5969
5988
|
return errorResult7('graph action "extract_from_document" requires document_id');
|
|
5970
5989
|
}
|
|
5971
5990
|
try {
|
|
5972
|
-
const { extractGraphFromExistingDocument } = await import("./doc-graph-extractor-
|
|
5991
|
+
const { extractGraphFromExistingDocument } = await import("./doc-graph-extractor-LR5KMPH7.js");
|
|
5973
5992
|
const result3 = await extractGraphFromExistingDocument(documentId);
|
|
5974
5993
|
const lines = [
|
|
5975
5994
|
`## Graph Extraction for Document ${documentId}`,
|
|
@@ -5996,7 +6015,7 @@ async function handleCleanupGarbage(args) {
|
|
|
5996
6015
|
const doMerge = !garbageOnly;
|
|
5997
6016
|
let mod;
|
|
5998
6017
|
try {
|
|
5999
|
-
mod = await import("./cleanup-graph-garbage-
|
|
6018
|
+
mod = await import("./cleanup-graph-garbage-MXQ4Q2MA.js");
|
|
6000
6019
|
} catch (err) {
|
|
6001
6020
|
return errorResult7(`cleanup_garbage: failed to load cleanup module \u2014 ${err instanceof Error ? err.message : String(err)}`);
|
|
6002
6021
|
}
|
|
@@ -6641,8 +6660,8 @@ ${extHealth.remediation}`);
|
|
|
6641
6660
|
} catch {
|
|
6642
6661
|
}
|
|
6643
6662
|
try {
|
|
6644
|
-
const { homedir:
|
|
6645
|
-
const dcrConnectors = detectDcrIncompatibleConnectorsFromDisk(
|
|
6663
|
+
const { homedir: homedir5 } = await import("os");
|
|
6664
|
+
const dcrConnectors = detectDcrIncompatibleConnectorsFromDisk(homedir5());
|
|
6646
6665
|
if (dcrConnectors.length > 0) {
|
|
6647
6666
|
lines.push("\n### Google MCP connectors (auth-incompatible)");
|
|
6648
6667
|
lines.push("| Connector | Endpoint |");
|
|
@@ -6876,7 +6895,7 @@ async function getAgentSessionLoad() {
|
|
|
6876
6895
|
return { sessions: [], totalLive: 0, busySessions: 0, idleSessions: 0 };
|
|
6877
6896
|
}
|
|
6878
6897
|
const { getClient: getClient2 } = await import("./lib/database.js");
|
|
6879
|
-
const { sessionScopeFilter: sessionScopeFilter2 } = await import("./task-scope-
|
|
6898
|
+
const { sessionScopeFilter: sessionScopeFilter2 } = await import("./task-scope-EKYDCVUF.js");
|
|
6880
6899
|
const client = getClient2();
|
|
6881
6900
|
const scope = sessionScopeFilter2();
|
|
6882
6901
|
for (const s of liveAgentSessions) {
|
|
@@ -7003,7 +7022,7 @@ ${mode} Applying repairs...
|
|
|
7003
7022
|
`];
|
|
7004
7023
|
if (!isDryRun) {
|
|
7005
7024
|
try {
|
|
7006
|
-
const { createBackup: createBackup2 } = await import("./db-backup-
|
|
7025
|
+
const { createBackup: createBackup2 } = await import("./db-backup-MX2G3CEK.js");
|
|
7007
7026
|
const backupPath = await createBackup2("pre-fix");
|
|
7008
7027
|
if (backupPath) {
|
|
7009
7028
|
fixLog.push(` Backup created: ${backupPath.split("/").pop()}`);
|
|
@@ -7242,7 +7261,7 @@ async function cloudStatusText() {
|
|
|
7242
7261
|
if (lastReuploadedAt) lines.push(`- Last re-upload: ${lastReuploadedAt}`);
|
|
7243
7262
|
lines.push("");
|
|
7244
7263
|
try {
|
|
7245
|
-
const { getRetrievalHealth: getRetrievalHealth2, formatDegradations: formatDegradations2 } = await import("./retrieval-health-
|
|
7264
|
+
const { getRetrievalHealth: getRetrievalHealth2, formatDegradations: formatDegradations2 } = await import("./retrieval-health-4C2PO6HH.js");
|
|
7246
7265
|
const h = await getRetrievalHealth2();
|
|
7247
7266
|
lines.push(formatDegradations2(h.degradations, "Health / Degradations"));
|
|
7248
7267
|
lines.push("");
|
|
@@ -8611,11 +8630,11 @@ async function sendSetPlan(payload) {
|
|
|
8611
8630
|
}
|
|
8612
8631
|
const config = await loadConfig();
|
|
8613
8632
|
const routerUrl = process.env.API_ROUTER_URL?.replace(/\/+$/, "");
|
|
8614
|
-
const
|
|
8633
|
+
const endpoint = process.env.EXE_SET_CUSTOMER_PLAN_ENDPOINT || (routerUrl ? `${routerUrl}/admin/customer/plan` : "https://api.askexe.com/admin/customer/plan");
|
|
8615
8634
|
const licenseKey = loadLicense() || process.env.EXE_LICENSE_KEY || config.cloud?.apiKey;
|
|
8616
8635
|
const licenseToken = readCachedLicenseToken();
|
|
8617
8636
|
try {
|
|
8618
|
-
const parsed = new URL(
|
|
8637
|
+
const parsed = new URL(endpoint);
|
|
8619
8638
|
if (parsed.protocol !== "https:" && !["localhost", "127.0.0.1", "::1"].includes(parsed.hostname)) {
|
|
8620
8639
|
return { status: "failed: insecure endpoint rejected" };
|
|
8621
8640
|
}
|
|
@@ -8737,7 +8756,7 @@ function registerCreateTrigger(server) {
|
|
|
8737
8756
|
}
|
|
8738
8757
|
},
|
|
8739
8758
|
async ({ name, event, conditions, actions, project, enabled, schedule, query }) => {
|
|
8740
|
-
const { assertFeature: assertFeature2 } = await import("./plan-limits-
|
|
8759
|
+
const { assertFeature: assertFeature2 } = await import("./plan-limits-WLQZTCSF.js");
|
|
8741
8760
|
const gatedActions = {
|
|
8742
8761
|
send_whatsapp: "external_agents",
|
|
8743
8762
|
update_wiki: "wiki"
|
|
@@ -9707,8 +9726,8 @@ function buildHandlers5() {
|
|
|
9707
9726
|
}
|
|
9708
9727
|
async function handleDreaming(action, args) {
|
|
9709
9728
|
try {
|
|
9710
|
-
const { DreamingEngine: DreamingEngine2 } = await import("./dreaming-
|
|
9711
|
-
const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-
|
|
9729
|
+
const { DreamingEngine: DreamingEngine2 } = await import("./dreaming-UKGTQT6I.js");
|
|
9730
|
+
const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-AIQP4DFL.js");
|
|
9712
9731
|
const { getClient: getClient2 } = await import("./lib/database.js");
|
|
9713
9732
|
const agentId = args.agent_id ?? getActiveAgent2().agentId;
|
|
9714
9733
|
if (action === "dreaming_run") {
|
|
@@ -9866,8 +9885,8 @@ function registerConfig(server) {
|
|
|
9866
9885
|
}
|
|
9867
9886
|
if (action === "closeout") {
|
|
9868
9887
|
try {
|
|
9869
|
-
const { DreamingEngine: DreamingEngine2 } = await import("./dreaming-
|
|
9870
|
-
const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-
|
|
9888
|
+
const { DreamingEngine: DreamingEngine2 } = await import("./dreaming-UKGTQT6I.js");
|
|
9889
|
+
const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-AIQP4DFL.js");
|
|
9871
9890
|
const { writeMemory: writeMemory2, flushBatch: flushBatch2 } = await import("./lib/store.js");
|
|
9872
9891
|
const { randomUUID: randomUUID2 } = await import("crypto");
|
|
9873
9892
|
const { getProjectName: getProjectName2 } = await import("./project-name-EWG5KAZP.js");
|
|
@@ -9938,7 +9957,7 @@ function registerConfig(server) {
|
|
|
9938
9957
|
}
|
|
9939
9958
|
if (action === "capability_cards") {
|
|
9940
9959
|
try {
|
|
9941
|
-
const { getAllCapabilityCards, findAgentForTask } = await import("./capability-cards-
|
|
9960
|
+
const { getAllCapabilityCards, findAgentForTask } = await import("./capability-cards-OBYQNAKZ.js");
|
|
9942
9961
|
const cards = getAllCapabilityCards();
|
|
9943
9962
|
const taskQuery = args.query;
|
|
9944
9963
|
if (taskQuery) {
|
|
@@ -9989,7 +10008,7 @@ function registerConfig(server) {
|
|
|
9989
10008
|
const existing = loadEmployeesSync2();
|
|
9990
10009
|
if (existing.some((e) => e.name === employeeName)) return errorResult8(`Employee "${employeeName}" already exists.`);
|
|
9991
10010
|
try {
|
|
9992
|
-
const { assertEmployeeLimit: assertEmployeeLimit2 } = await import("./plan-limits-
|
|
10011
|
+
const { assertEmployeeLimit: assertEmployeeLimit2 } = await import("./plan-limits-WLQZTCSF.js");
|
|
9993
10012
|
await assertEmployeeLimit2();
|
|
9994
10013
|
} catch (e) {
|
|
9995
10014
|
return errorResult8(e instanceof Error ? e.message : "Employee limit reached.");
|
|
@@ -10030,7 +10049,7 @@ You are ${employeeName}. Role: ${role}.`, "utf-8");
|
|
|
10030
10049
|
}
|
|
10031
10050
|
try {
|
|
10032
10051
|
const { generateSessionWrappers } = await import("./lib/session-wrappers.js");
|
|
10033
|
-
const { resolvePackageRoot } = await import("./installer-
|
|
10052
|
+
const { resolvePackageRoot } = await import("./installer-T2LGHZKL.js");
|
|
10034
10053
|
generateSessionWrappers(resolvePackageRoot());
|
|
10035
10054
|
} catch {
|
|
10036
10055
|
}
|
|
@@ -10117,7 +10136,7 @@ function registerListWikiPages(server) {
|
|
|
10117
10136
|
}
|
|
10118
10137
|
},
|
|
10119
10138
|
async ({ workspace, folder }) => {
|
|
10120
|
-
const { assertFeature: assertFeature2 } = await import("./plan-limits-
|
|
10139
|
+
const { assertFeature: assertFeature2 } = await import("./plan-limits-WLQZTCSF.js");
|
|
10121
10140
|
await assertFeature2("wiki");
|
|
10122
10141
|
const apiUrl = process.env.EXE_WIKI_API_URL;
|
|
10123
10142
|
const apiKey = process.env.EXE_WIKI_API_KEY;
|
|
@@ -10217,7 +10236,7 @@ function registerGetWikiPage(server) {
|
|
|
10217
10236
|
}
|
|
10218
10237
|
},
|
|
10219
10238
|
async ({ workspace, document_id, title }) => {
|
|
10220
|
-
const { assertFeature: assertFeature2 } = await import("./plan-limits-
|
|
10239
|
+
const { assertFeature: assertFeature2 } = await import("./plan-limits-WLQZTCSF.js");
|
|
10221
10240
|
await assertFeature2("wiki");
|
|
10222
10241
|
const apiUrl = process.env.EXE_WIKI_API_URL;
|
|
10223
10242
|
const apiKey = process.env.EXE_WIKI_API_KEY;
|
|
@@ -10411,10 +10430,10 @@ async function handleWikiSearch(input) {
|
|
|
10411
10430
|
const userId = input.user_id;
|
|
10412
10431
|
if (!workspace) return errorResult9('wiki action "search" requires workspace');
|
|
10413
10432
|
if (!query) return errorResult9('wiki action "search" requires query');
|
|
10414
|
-
const { assertFeature: assertFeature2 } = await import("./plan-limits-
|
|
10433
|
+
const { assertFeature: assertFeature2 } = await import("./plan-limits-WLQZTCSF.js");
|
|
10415
10434
|
await assertFeature2("wiki");
|
|
10416
10435
|
if (userId) {
|
|
10417
|
-
const { checkWikiAccess } = await import("./wiki-acl-
|
|
10436
|
+
const { checkWikiAccess } = await import("./wiki-acl-7CROE3MJ.js");
|
|
10418
10437
|
const { allowed } = await checkWikiAccess(String(userId), String(workspace), "read");
|
|
10419
10438
|
if (!allowed) {
|
|
10420
10439
|
return errorResult9(`Access denied: user "${userId}" does not have read access to workspace "${workspace}"`);
|
|
@@ -10517,7 +10536,7 @@ function registerWiki(server) {
|
|
|
10517
10536
|
return errorResult9('wiki action "document_rerank" requires at least one candidate');
|
|
10518
10537
|
}
|
|
10519
10538
|
if (user_id && legacyArgs.workspace) {
|
|
10520
|
-
const { checkWikiAccess } = await import("./wiki-acl-
|
|
10539
|
+
const { checkWikiAccess } = await import("./wiki-acl-7CROE3MJ.js");
|
|
10521
10540
|
const { allowed } = await checkWikiAccess(
|
|
10522
10541
|
String(user_id),
|
|
10523
10542
|
String(legacyArgs.workspace),
|
|
@@ -10838,7 +10857,7 @@ Use /exe-forget to remove any that this supersedes.`;
|
|
|
10838
10857
|
}]
|
|
10839
10858
|
};
|
|
10840
10859
|
}
|
|
10841
|
-
const { bulkPurgeGhostBehaviors } = await import("./behaviors-
|
|
10860
|
+
const { bulkPurgeGhostBehaviors } = await import("./behaviors-EO7KCP3H.js");
|
|
10842
10861
|
const res = await bulkPurgeGhostBehaviors({ batchSize: 5e3, vacuum: true });
|
|
10843
10862
|
return {
|
|
10844
10863
|
content: [{
|
|
@@ -10949,7 +10968,7 @@ Use /exe-forget to remove any that this supersedes.`;
|
|
|
10949
10968
|
return { content: [{ type: "text", text: `Behavior not found: ${behavior_id}` }], isError: true };
|
|
10950
10969
|
}
|
|
10951
10970
|
const row2 = result4.rows[0];
|
|
10952
|
-
const { reactivateBehavior: reactivateBehavior2 } = await import("./behaviors-
|
|
10971
|
+
const { reactivateBehavior: reactivateBehavior2 } = await import("./behaviors-EO7KCP3H.js");
|
|
10953
10972
|
const wasReactivated = await reactivateBehavior2(behavior_id);
|
|
10954
10973
|
if (!wasReactivated) {
|
|
10955
10974
|
return { content: [{ type: "text", text: `Behavior ${behavior_id} is already active.` }] };
|
|
@@ -11470,7 +11489,7 @@ function registerWorkflowTool(server) {
|
|
|
11470
11489
|
getWorkflowInstance,
|
|
11471
11490
|
listWorkflowInstances,
|
|
11472
11491
|
approveWorkflowStep
|
|
11473
|
-
} = await import("./workflow-engine-
|
|
11492
|
+
} = await import("./workflow-engine-MMEHKUN4.js");
|
|
11474
11493
|
try {
|
|
11475
11494
|
switch (input.action) {
|
|
11476
11495
|
case "create_workflow": {
|
|
@@ -11650,7 +11669,12 @@ function buildMarkdown(input) {
|
|
|
11650
11669
|
function prepareUpstreamPayload(payload) {
|
|
11651
11670
|
const cleaned = { ...payload };
|
|
11652
11671
|
delete cleaned.agent_role;
|
|
11653
|
-
|
|
11672
|
+
if (!isTelemetryRedactionEnabled()) {
|
|
11673
|
+
console.error("[bug-report] WARNING: EXE_TELEMETRY_REDACT=off \u2014 sending UNREDACTED payload upstream");
|
|
11674
|
+
return { body: JSON.stringify(cleaned), contentType: "application/json", encrypted: false, redactedCount: 0, truncatedCount: 0 };
|
|
11675
|
+
}
|
|
11676
|
+
const { payload: sanitized, redactedCount, truncatedCount } = sanitizeUpstreamPayload(cleaned);
|
|
11677
|
+
return { body: JSON.stringify(sanitized), contentType: "application/json", encrypted: false, redactedCount, truncatedCount };
|
|
11654
11678
|
}
|
|
11655
11679
|
async function maybeSendUpstream(payload) {
|
|
11656
11680
|
if (process.env.VITEST || process.env.NODE_ENV === "test") {
|
|
@@ -11658,19 +11682,19 @@ async function maybeSendUpstream(payload) {
|
|
|
11658
11682
|
}
|
|
11659
11683
|
const config = await loadConfig();
|
|
11660
11684
|
const routerUrl = process.env.API_ROUTER_URL?.replace(/\/+$/, "");
|
|
11661
|
-
const
|
|
11685
|
+
const endpoint = config.support?.bugReportEndpoint || process.env.EXE_BUG_REPORT_ENDPOINT || (routerUrl ? `${routerUrl}/v1/support/bug-reports` : "https://api.askexe.com/v1/support/bug-reports");
|
|
11662
11686
|
const token = config.support?.bugReportToken || process.env.EXE_BUG_REPORT_TOKEN;
|
|
11663
11687
|
const licenseKey = loadLicense() || process.env.EXE_LICENSE_KEY || config.cloud?.apiKey;
|
|
11664
11688
|
const licenseToken = readCachedLicenseToken();
|
|
11665
|
-
if (!
|
|
11689
|
+
if (!endpoint) {
|
|
11666
11690
|
return "not_configured";
|
|
11667
11691
|
}
|
|
11668
11692
|
try {
|
|
11669
|
-
const parsed = new URL(
|
|
11693
|
+
const parsed = new URL(endpoint);
|
|
11670
11694
|
if (parsed.protocol !== "https:" && !["localhost", "127.0.0.1", "::1"].includes(parsed.hostname)) {
|
|
11671
11695
|
return "failed: insecure endpoint rejected";
|
|
11672
11696
|
}
|
|
11673
|
-
const { body, contentType, encrypted } = prepareUpstreamPayload(payload);
|
|
11697
|
+
const { body, contentType, encrypted, redactedCount, truncatedCount } = prepareUpstreamPayload(payload);
|
|
11674
11698
|
const response = await fetch(parsed, {
|
|
11675
11699
|
method: "POST",
|
|
11676
11700
|
headers: {
|
|
@@ -11685,7 +11709,11 @@ async function maybeSendUpstream(payload) {
|
|
|
11685
11709
|
signal: AbortSignal.timeout(1e4)
|
|
11686
11710
|
});
|
|
11687
11711
|
if (!response.ok) return `failed: HTTP ${response.status}`;
|
|
11688
|
-
|
|
11712
|
+
if (encrypted) return "sent (encrypted)";
|
|
11713
|
+
const parts = ["sanitized"];
|
|
11714
|
+
if (redactedCount > 0) parts.push(`${redactedCount} secret${redactedCount === 1 ? "" : "s"} redacted`);
|
|
11715
|
+
if (truncatedCount > 0) parts.push(`${truncatedCount} field${truncatedCount === 1 ? "" : "s"} truncated`);
|
|
11716
|
+
return `sent (${parts.join(", ")})`;
|
|
11689
11717
|
} catch (err) {
|
|
11690
11718
|
return `failed: ${err instanceof Error ? err.message : String(err)}`;
|
|
11691
11719
|
}
|
|
@@ -11757,7 +11785,7 @@ function registerCreateBugReport(server) {
|
|
|
11757
11785
|
const version = package_version ?? "unknown";
|
|
11758
11786
|
let metricsSnapshot = "";
|
|
11759
11787
|
try {
|
|
11760
|
-
const { getOrchestrationMetrics, formatOrchestrationMetrics } = await import("./orchestration-events-
|
|
11788
|
+
const { getOrchestrationMetrics, formatOrchestrationMetrics } = await import("./orchestration-events-ZG7O4HRY.js");
|
|
11761
11789
|
const sinceIso = new Date(Date.now() - 60 * 60 * 1e3).toISOString();
|
|
11762
11790
|
const metrics = await getOrchestrationMetrics({ sinceIso });
|
|
11763
11791
|
if (metrics.totalEvents > 0) {
|
|
@@ -11843,11 +11871,9 @@ ${formatOrchestrationMetrics(metrics)}
|
|
|
11843
11871
|
file_paths: files_changed ? JSON.stringify(files_changed) : null
|
|
11844
11872
|
});
|
|
11845
11873
|
await flushBatch();
|
|
11846
|
-
const UPSTREAM_ATTACHMENT_MAX_CHARS = 4096;
|
|
11847
11874
|
const upstreamAttachments = attachments?.map((att) => ({
|
|
11848
11875
|
filename: att.filename,
|
|
11849
|
-
content: att.content
|
|
11850
|
-
... [truncated, ${att.content.length} chars total]` : att.content,
|
|
11876
|
+
content: att.content,
|
|
11851
11877
|
truncated: att.content.length > UPSTREAM_ATTACHMENT_MAX_CHARS,
|
|
11852
11878
|
original_size: att.content.length
|
|
11853
11879
|
}));
|
|
@@ -11945,18 +11971,30 @@ async function maybeSendUpstream2(payload) {
|
|
|
11945
11971
|
}
|
|
11946
11972
|
const config = await loadConfig();
|
|
11947
11973
|
const routerUrl = process.env.API_ROUTER_URL?.replace(/\/+$/, "");
|
|
11948
|
-
const
|
|
11974
|
+
const endpoint = config.support?.featureRequestEndpoint || process.env.EXE_FEATURE_REQUEST_ENDPOINT || (routerUrl ? `${routerUrl}/v1/support/feature-requests` : "https://api.askexe.com/v1/support/feature-requests");
|
|
11949
11975
|
const token = config.support?.featureRequestToken || process.env.EXE_FEATURE_REQUEST_TOKEN;
|
|
11950
11976
|
const licenseKey = loadLicense() || process.env.EXE_LICENSE_KEY || config.cloud?.apiKey;
|
|
11951
11977
|
const licenseToken = readCachedLicenseToken();
|
|
11952
|
-
if (!
|
|
11978
|
+
if (!endpoint) {
|
|
11953
11979
|
return "not_configured";
|
|
11954
11980
|
}
|
|
11955
11981
|
try {
|
|
11956
|
-
const parsed = new URL(
|
|
11982
|
+
const parsed = new URL(endpoint);
|
|
11957
11983
|
if (parsed.protocol !== "https:" && !["localhost", "127.0.0.1", "::1"].includes(parsed.hostname)) {
|
|
11958
11984
|
return "failed: insecure endpoint rejected";
|
|
11959
11985
|
}
|
|
11986
|
+
let outboundBody;
|
|
11987
|
+
let redactedCount = 0;
|
|
11988
|
+
let truncatedCount = 0;
|
|
11989
|
+
if (isTelemetryRedactionEnabled()) {
|
|
11990
|
+
const sanitized = sanitizeUpstreamPayload(payload);
|
|
11991
|
+
outboundBody = JSON.stringify(sanitized.payload);
|
|
11992
|
+
redactedCount = sanitized.redactedCount;
|
|
11993
|
+
truncatedCount = sanitized.truncatedCount;
|
|
11994
|
+
} else {
|
|
11995
|
+
console.error("[feature-request] WARNING: EXE_TELEMETRY_REDACT=off \u2014 sending UNREDACTED payload upstream");
|
|
11996
|
+
outboundBody = JSON.stringify(payload);
|
|
11997
|
+
}
|
|
11960
11998
|
const response = await fetch(parsed, {
|
|
11961
11999
|
method: "POST",
|
|
11962
12000
|
headers: {
|
|
@@ -11966,11 +12004,14 @@ async function maybeSendUpstream2(payload) {
|
|
|
11966
12004
|
...licenseToken ? { "x-exe-license-token": licenseToken } : {},
|
|
11967
12005
|
...supportAdminHeaders(config)
|
|
11968
12006
|
},
|
|
11969
|
-
body:
|
|
12007
|
+
body: outboundBody,
|
|
11970
12008
|
signal: AbortSignal.timeout(1e4)
|
|
11971
12009
|
});
|
|
11972
12010
|
if (!response.ok) return `failed: HTTP ${response.status}`;
|
|
11973
|
-
|
|
12011
|
+
const parts = ["sanitized"];
|
|
12012
|
+
if (redactedCount > 0) parts.push(`${redactedCount} secret${redactedCount === 1 ? "" : "s"} redacted`);
|
|
12013
|
+
if (truncatedCount > 0) parts.push(`${truncatedCount} field${truncatedCount === 1 ? "" : "s"} truncated`);
|
|
12014
|
+
return `sent (${parts.join(", ")})`;
|
|
11974
12015
|
} catch (err) {
|
|
11975
12016
|
return `failed: ${err instanceof Error ? err.message : String(err)}`;
|
|
11976
12017
|
}
|
|
@@ -12094,11 +12135,9 @@ function registerCreateFeatureRequest(server) {
|
|
|
12094
12135
|
file_paths: null
|
|
12095
12136
|
});
|
|
12096
12137
|
await flushBatch();
|
|
12097
|
-
const UPSTREAM_ATTACHMENT_MAX_CHARS = 4096;
|
|
12098
12138
|
const upstreamAttachments = attachments?.map((att) => ({
|
|
12099
12139
|
filename: att.filename,
|
|
12100
|
-
content: att.content
|
|
12101
|
-
... [truncated, ${att.content.length} chars total]` : att.content,
|
|
12140
|
+
content: att.content,
|
|
12102
12141
|
truncated: att.content.length > UPSTREAM_ATTACHMENT_MAX_CHARS,
|
|
12103
12142
|
original_size: att.content.length
|
|
12104
12143
|
}));
|
|
@@ -12227,9 +12266,9 @@ async function appendUpdateSection(filePath, opts) {
|
|
|
12227
12266
|
async function sendUpstream(payload, isAdmin) {
|
|
12228
12267
|
const config = await loadConfig();
|
|
12229
12268
|
const routerUrl = process.env.API_ROUTER_URL?.replace(/\/+$/, "");
|
|
12230
|
-
const
|
|
12269
|
+
const adminToken = resolveSupportAdminToken(config);
|
|
12231
12270
|
const support = config.support;
|
|
12232
|
-
const baseEndpoint = isAdmin &&
|
|
12271
|
+
const baseEndpoint = isAdmin && adminToken ? process.env.ASKEXE_SUPPORT_ADMIN_ENDPOINT || support?.adminEndpoint || support?.admin_endpoint || "https://api.askexe.com/admin/support/bug-reports" : config.support?.bugReportEndpoint || process.env.EXE_BUG_REPORT_ENDPOINT || (routerUrl ? `${routerUrl}/v1/support/bug-reports` : "https://api.askexe.com/v1/support/bug-reports");
|
|
12233
12272
|
const licenseKey = loadLicense() || process.env.EXE_LICENSE_KEY || config.cloud?.apiKey;
|
|
12234
12273
|
const licenseToken = readCachedLicenseToken();
|
|
12235
12274
|
if (!baseEndpoint) return "not_configured";
|
|
@@ -12240,18 +12279,21 @@ async function sendUpstream(payload, isAdmin) {
|
|
|
12240
12279
|
if (parsed.protocol !== "https:" && !["localhost", "127.0.0.1", "::1"].includes(parsed.hostname)) {
|
|
12241
12280
|
return "failed: insecure endpoint rejected";
|
|
12242
12281
|
}
|
|
12243
|
-
const adminHeaders = isAdmin &&
|
|
12282
|
+
const adminHeaders = isAdmin && adminToken ? { authorization: `Bearer ${adminToken}`, ...supportAdminHeaders(config) } : {};
|
|
12244
12283
|
const response = await fetch(parsed, {
|
|
12245
12284
|
method: "PATCH",
|
|
12246
12285
|
headers: {
|
|
12247
12286
|
"content-type": "application/json",
|
|
12248
|
-
...isAdmin &&
|
|
12287
|
+
...isAdmin && adminToken ? {} : {
|
|
12249
12288
|
...licenseKey ? { "x-exe-license-key": licenseKey, authorization: `Bearer ${licenseKey}` } : {},
|
|
12250
12289
|
...licenseToken ? { "x-exe-license-token": licenseToken } : {}
|
|
12251
12290
|
},
|
|
12252
12291
|
...adminHeaders
|
|
12253
12292
|
},
|
|
12254
|
-
|
|
12293
|
+
// Egress redaction gate (dc16fee4) — add_evidence ("logs, repro details,
|
|
12294
|
+
// stack traces"), add_note, and triage_notes are the most secret-dense
|
|
12295
|
+
// support fields; redact before the network send.
|
|
12296
|
+
body: sanitizedUpstreamBody(payload, "update-bug-report"),
|
|
12255
12297
|
signal: AbortSignal.timeout(1e4)
|
|
12256
12298
|
});
|
|
12257
12299
|
if (!response.ok) return `failed: HTTP ${response.status}`;
|
|
@@ -12432,9 +12474,9 @@ async function appendStatusUpdate(filePath, status2, notes, shippedVersion) {
|
|
|
12432
12474
|
async function sendUpstream2(payload) {
|
|
12433
12475
|
const config = await loadConfig();
|
|
12434
12476
|
const routerUrl = process.env.API_ROUTER_URL?.replace(/\/+$/, "");
|
|
12435
|
-
const
|
|
12477
|
+
const adminToken = resolveSupportAdminToken(config);
|
|
12436
12478
|
const support = config.support;
|
|
12437
|
-
const baseEndpoint =
|
|
12479
|
+
const baseEndpoint = adminToken ? process.env.ASKEXE_SUPPORT_ADMIN_FEATURE_ENDPOINT || support?.adminFeatureEndpoint || support?.admin_feature_endpoint || "https://api.askexe.com/admin/support/feature-requests" : config.support?.featureRequestEndpoint || process.env.EXE_FEATURE_REQUEST_ENDPOINT || (routerUrl ? `${routerUrl}/v1/support/feature-requests` : "https://api.askexe.com/v1/support/feature-requests");
|
|
12438
12480
|
const licenseKey = loadLicense() || process.env.EXE_LICENSE_KEY || config.cloud?.apiKey;
|
|
12439
12481
|
const licenseToken = readCachedLicenseToken();
|
|
12440
12482
|
if (!baseEndpoint) return "not_configured";
|
|
@@ -12449,12 +12491,14 @@ async function sendUpstream2(payload) {
|
|
|
12449
12491
|
method: "PATCH",
|
|
12450
12492
|
headers: {
|
|
12451
12493
|
"content-type": "application/json",
|
|
12452
|
-
...
|
|
12494
|
+
...adminToken ? { authorization: `Bearer ${adminToken}`, ...supportAdminHeaders(config) } : {
|
|
12453
12495
|
...licenseKey ? { "x-exe-license-key": licenseKey, authorization: `Bearer ${licenseKey}` } : {},
|
|
12454
12496
|
...licenseToken ? { "x-exe-license-token": licenseToken } : {}
|
|
12455
12497
|
}
|
|
12456
12498
|
},
|
|
12457
|
-
|
|
12499
|
+
// Egress redaction gate (dc16fee4) — redact response_notes/add_note
|
|
12500
|
+
// before the network send.
|
|
12501
|
+
body: sanitizedUpstreamBody(payload, "update-feature-request"),
|
|
12458
12502
|
signal: AbortSignal.timeout(1e4)
|
|
12459
12503
|
});
|
|
12460
12504
|
if (!response.ok) return `failed: HTTP ${response.status}`;
|
|
@@ -12619,10 +12663,10 @@ function registerSupportTools(server) {
|
|
|
12619
12663
|
isError: true
|
|
12620
12664
|
};
|
|
12621
12665
|
}
|
|
12622
|
-
const
|
|
12623
|
-
|
|
12624
|
-
|
|
12625
|
-
|
|
12666
|
+
const endpoint = new URL("https://api.askexe.com/v1/support/my-reports");
|
|
12667
|
+
endpoint.searchParams.set("status", status2);
|
|
12668
|
+
endpoint.searchParams.set("limit", String(limit));
|
|
12669
|
+
endpoint.searchParams.set("offset", String(offset));
|
|
12626
12670
|
const headers = { "content-type": "application/json" };
|
|
12627
12671
|
if (licenseKey) {
|
|
12628
12672
|
headers["authorization"] = `Bearer ${licenseKey}`;
|
|
@@ -12630,7 +12674,7 @@ function registerSupportTools(server) {
|
|
|
12630
12674
|
}
|
|
12631
12675
|
if (licenseToken) headers["x-exe-license-token"] = licenseToken;
|
|
12632
12676
|
try {
|
|
12633
|
-
const res = await fetch(
|
|
12677
|
+
const res = await fetch(endpoint.toString(), { method: "GET", headers, signal: AbortSignal.timeout(15e3) });
|
|
12634
12678
|
if (!res.ok) {
|
|
12635
12679
|
const body = await res.text().catch(() => "");
|
|
12636
12680
|
return {
|
|
@@ -12691,10 +12735,10 @@ function registerSupportTools(server) {
|
|
|
12691
12735
|
isError: true
|
|
12692
12736
|
};
|
|
12693
12737
|
}
|
|
12694
|
-
const
|
|
12695
|
-
|
|
12696
|
-
|
|
12697
|
-
|
|
12738
|
+
const endpoint = new URL("https://api.askexe.com/v1/support/my-feature-requests");
|
|
12739
|
+
endpoint.searchParams.set("status", status2);
|
|
12740
|
+
endpoint.searchParams.set("limit", String(limit));
|
|
12741
|
+
endpoint.searchParams.set("offset", String(offset));
|
|
12698
12742
|
const headers = { "content-type": "application/json" };
|
|
12699
12743
|
if (licenseKey) {
|
|
12700
12744
|
headers["authorization"] = `Bearer ${licenseKey}`;
|
|
@@ -12702,7 +12746,7 @@ function registerSupportTools(server) {
|
|
|
12702
12746
|
}
|
|
12703
12747
|
if (licenseToken) headers["x-exe-license-token"] = licenseToken;
|
|
12704
12748
|
try {
|
|
12705
|
-
const res = await fetch(
|
|
12749
|
+
const res = await fetch(endpoint.toString(), { method: "GET", headers, signal: AbortSignal.timeout(15e3) });
|
|
12706
12750
|
if (!res.ok) {
|
|
12707
12751
|
const body = await res.text().catch(() => "");
|
|
12708
12752
|
return {
|
|
@@ -12763,9 +12807,9 @@ function registerSupportTools(server) {
|
|
|
12763
12807
|
isError: true
|
|
12764
12808
|
};
|
|
12765
12809
|
}
|
|
12766
|
-
const
|
|
12767
|
-
|
|
12768
|
-
|
|
12810
|
+
const endpoint = new URL("https://api.askexe.com/v1/support/my-reviews");
|
|
12811
|
+
endpoint.searchParams.set("status", status2);
|
|
12812
|
+
endpoint.searchParams.set("limit", String(limit));
|
|
12769
12813
|
const headers = { "content-type": "application/json" };
|
|
12770
12814
|
if (licenseKey) {
|
|
12771
12815
|
headers["authorization"] = `Bearer ${licenseKey}`;
|
|
@@ -12773,7 +12817,7 @@ function registerSupportTools(server) {
|
|
|
12773
12817
|
}
|
|
12774
12818
|
if (licenseToken) headers["x-exe-license-token"] = licenseToken;
|
|
12775
12819
|
try {
|
|
12776
|
-
const res = await fetch(
|
|
12820
|
+
const res = await fetch(endpoint.toString(), { method: "GET", headers, signal: AbortSignal.timeout(15e3) });
|
|
12777
12821
|
if (!res.ok) {
|
|
12778
12822
|
const body = await res.text().catch(() => "");
|
|
12779
12823
|
if (res.status === 500 || res.status === 404) {
|
|
@@ -13031,7 +13075,7 @@ function registerCliParityTools(server) {
|
|
|
13031
13075
|
const out = await runCommand("exe-os", ["cloud", "status"], 45e3);
|
|
13032
13076
|
let healthSection = "";
|
|
13033
13077
|
try {
|
|
13034
|
-
const { getRetrievalHealth: getRetrievalHealth2, formatDegradations: formatDegradations2 } = await import("./retrieval-health-
|
|
13078
|
+
const { getRetrievalHealth: getRetrievalHealth2, formatDegradations: formatDegradations2 } = await import("./retrieval-health-4C2PO6HH.js");
|
|
13035
13079
|
const h = await getRetrievalHealth2();
|
|
13036
13080
|
const lines = [
|
|
13037
13081
|
"",
|
|
@@ -13099,7 +13143,7 @@ function registerCodeContext(server) {
|
|
|
13099
13143
|
const index = buildCodeContextIndex(opts);
|
|
13100
13144
|
let graphExtract;
|
|
13101
13145
|
try {
|
|
13102
|
-
const { autoExtractGraphEntities } = await import("./graph-auto-extract-
|
|
13146
|
+
const { autoExtractGraphEntities } = await import("./graph-auto-extract-HCQQF5AG.js");
|
|
13103
13147
|
graphExtract = await autoExtractGraphEntities(opts.projectRoot);
|
|
13104
13148
|
} catch {
|
|
13105
13149
|
}
|
|
@@ -13173,355 +13217,8 @@ function registerCodeContext(server) {
|
|
|
13173
13217
|
});
|
|
13174
13218
|
}
|
|
13175
13219
|
|
|
13176
|
-
// src/mcp/tools/support-inbox.ts
|
|
13177
|
-
import { z as z95 } from "zod";
|
|
13178
|
-
import { readFileSync as readFileSync7 } from "fs";
|
|
13179
|
-
import { join as join4 } from "path";
|
|
13180
|
-
import { homedir as homedir4 } from "os";
|
|
13181
|
-
var DEFAULT_ENDPOINT = "https://api.askexe.com/admin/support/bug-reports";
|
|
13182
|
-
var DEFAULT_OWNER_ENDPOINT = "https://api.askexe.com/v1/support/bug-reports";
|
|
13183
|
-
var STATUS3 = z95.enum(["open", "triaged", "fixed", "closed", "wontfix"]);
|
|
13184
|
-
function adminToken() {
|
|
13185
|
-
if (process.env.ASKEXE_SUPPORT_ADMIN_TOKEN) return process.env.ASKEXE_SUPPORT_ADMIN_TOKEN;
|
|
13186
|
-
if (process.env.EXE_SUPPORT_ADMIN_TOKEN) return process.env.EXE_SUPPORT_ADMIN_TOKEN;
|
|
13187
|
-
try {
|
|
13188
|
-
const configPath = join4(process.env.EXE_OS_DIR ?? join4(homedir4(), ".exe-os"), "config.json");
|
|
13189
|
-
const config = JSON.parse(readFileSync7(configPath, "utf-8"));
|
|
13190
|
-
return config.support?.adminToken || config.support?.admin_token;
|
|
13191
|
-
} catch {
|
|
13192
|
-
return void 0;
|
|
13193
|
-
}
|
|
13194
|
-
}
|
|
13195
|
-
function endpoint() {
|
|
13196
|
-
return (process.env.ASKEXE_SUPPORT_ADMIN_ENDPOINT || DEFAULT_ENDPOINT).replace(/\/+$/, "");
|
|
13197
|
-
}
|
|
13198
|
-
function ownerEndpoint() {
|
|
13199
|
-
const routerUrl = process.env.API_ROUTER_URL?.replace(/\/+$/, "");
|
|
13200
|
-
let configured;
|
|
13201
|
-
try {
|
|
13202
|
-
const configPath = join4(process.env.EXE_OS_DIR ?? join4(homedir4(), ".exe-os"), "config.json");
|
|
13203
|
-
const config = JSON.parse(readFileSync7(configPath, "utf-8"));
|
|
13204
|
-
configured = config.support?.bugReportEndpoint;
|
|
13205
|
-
} catch {
|
|
13206
|
-
}
|
|
13207
|
-
const base = configured || process.env.EXE_BUG_REPORT_ENDPOINT || (routerUrl ? `${routerUrl}/v1/support/bug-reports` : DEFAULT_OWNER_ENDPOINT);
|
|
13208
|
-
return base.replace(/\/+$/, "");
|
|
13209
|
-
}
|
|
13210
|
-
function ownerAuthHeaders() {
|
|
13211
|
-
let cloudApiKey;
|
|
13212
|
-
try {
|
|
13213
|
-
const configPath = join4(process.env.EXE_OS_DIR ?? join4(homedir4(), ".exe-os"), "config.json");
|
|
13214
|
-
const config = JSON.parse(readFileSync7(configPath, "utf-8"));
|
|
13215
|
-
cloudApiKey = config.cloud?.apiKey;
|
|
13216
|
-
} catch {
|
|
13217
|
-
}
|
|
13218
|
-
const licenseKey = loadLicense() || process.env.EXE_LICENSE_KEY || cloudApiKey;
|
|
13219
|
-
const licenseToken = readCachedLicenseToken();
|
|
13220
|
-
const headers = {};
|
|
13221
|
-
if (licenseKey) {
|
|
13222
|
-
headers["x-exe-license-key"] = licenseKey;
|
|
13223
|
-
headers.authorization = `Bearer ${licenseKey}`;
|
|
13224
|
-
}
|
|
13225
|
-
if (licenseToken) headers["x-exe-license-token"] = licenseToken;
|
|
13226
|
-
return headers;
|
|
13227
|
-
}
|
|
13228
|
-
function assertInternal() {
|
|
13229
|
-
const token = adminToken();
|
|
13230
|
-
if (!token) throw new Error("AskExe support admin token not configured");
|
|
13231
|
-
return token;
|
|
13232
|
-
}
|
|
13233
|
-
async function requestJson(url, init) {
|
|
13234
|
-
const token = assertInternal();
|
|
13235
|
-
const res = await fetch(url, {
|
|
13236
|
-
...init,
|
|
13237
|
-
headers: {
|
|
13238
|
-
"content-type": "application/json",
|
|
13239
|
-
authorization: `Bearer ${token}`,
|
|
13240
|
-
...init?.headers ?? {}
|
|
13241
|
-
},
|
|
13242
|
-
signal: AbortSignal.timeout(1e4)
|
|
13243
|
-
});
|
|
13244
|
-
const text5 = await res.text();
|
|
13245
|
-
let data = text5;
|
|
13246
|
-
try {
|
|
13247
|
-
data = text5 ? JSON.parse(text5) : {};
|
|
13248
|
-
} catch {
|
|
13249
|
-
}
|
|
13250
|
-
if (!res.ok) throw new Error(`HTTP ${res.status}: ${typeof data === "string" ? data : JSON.stringify(data)}`);
|
|
13251
|
-
return data;
|
|
13252
|
-
}
|
|
13253
|
-
async function fetchJson(url, headers, init) {
|
|
13254
|
-
const res = await fetch(url, {
|
|
13255
|
-
...init,
|
|
13256
|
-
headers: { "content-type": "application/json", ...headers, ...init?.headers ?? {} },
|
|
13257
|
-
signal: AbortSignal.timeout(1e4)
|
|
13258
|
-
});
|
|
13259
|
-
const text5 = await res.text();
|
|
13260
|
-
let data = text5;
|
|
13261
|
-
try {
|
|
13262
|
-
data = text5 ? JSON.parse(text5) : {};
|
|
13263
|
-
} catch {
|
|
13264
|
-
}
|
|
13265
|
-
if (!res.ok) throw new Error(`HTTP ${res.status}: ${typeof data === "string" ? data : JSON.stringify(data)}`);
|
|
13266
|
-
return data;
|
|
13267
|
-
}
|
|
13268
|
-
async function commentRequestJson(bugId, init) {
|
|
13269
|
-
const token = adminToken();
|
|
13270
|
-
if (token) {
|
|
13271
|
-
const url2 = `${endpoint()}/${encodeURIComponent(bugId)}/comments`;
|
|
13272
|
-
return fetchJson(url2, { authorization: `Bearer ${token}` }, init);
|
|
13273
|
-
}
|
|
13274
|
-
const ownerHeaders = ownerAuthHeaders();
|
|
13275
|
-
if (!ownerHeaders.authorization && !ownerHeaders["x-exe-license-token"]) {
|
|
13276
|
-
throw new Error(
|
|
13277
|
-
"Not authenticated for support comments. Run `exe-os login` (GoTrue) or set a license key, or configure an AskExe admin token (ASKEXE_SUPPORT_ADMIN_TOKEN)."
|
|
13278
|
-
);
|
|
13279
|
-
}
|
|
13280
|
-
const url = `${ownerEndpoint()}/${encodeURIComponent(bugId)}/comments`;
|
|
13281
|
-
return fetchJson(url, ownerHeaders, init);
|
|
13282
|
-
}
|
|
13283
|
-
function registerListBugReports(server) {
|
|
13284
|
-
server.registerTool(
|
|
13285
|
-
"list_bug_reports",
|
|
13286
|
-
{
|
|
13287
|
-
title: "List Bug Reports",
|
|
13288
|
-
description: "AskExe-internal only: list incoming customer bug reports from the support inbox.",
|
|
13289
|
-
inputSchema: {
|
|
13290
|
-
status: z95.enum(["all", "open", "triaged", "fixed", "closed", "wontfix"]).default("open"),
|
|
13291
|
-
severity: z95.enum(["p0", "p1", "p2", "p3"]).optional(),
|
|
13292
|
-
limit: z95.number().int().min(1).max(100).default(25)
|
|
13293
|
-
}
|
|
13294
|
-
},
|
|
13295
|
-
async ({ status: status2, severity, limit }) => {
|
|
13296
|
-
const url = new URL(endpoint());
|
|
13297
|
-
url.searchParams.set("status", status2);
|
|
13298
|
-
url.searchParams.set("limit", String(limit));
|
|
13299
|
-
if (severity) url.searchParams.set("severity", severity);
|
|
13300
|
-
const data = await requestJson(url.toString());
|
|
13301
|
-
return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
|
|
13302
|
-
}
|
|
13303
|
-
);
|
|
13304
|
-
}
|
|
13305
|
-
function parseComments(row) {
|
|
13306
|
-
if (!row || typeof row !== "object") return [];
|
|
13307
|
-
const raw = row.progress_log;
|
|
13308
|
-
if (typeof raw !== "string" || !raw.trim()) return [];
|
|
13309
|
-
try {
|
|
13310
|
-
const parsed = JSON.parse(raw);
|
|
13311
|
-
return Array.isArray(parsed) ? parsed : [];
|
|
13312
|
-
} catch {
|
|
13313
|
-
return [];
|
|
13314
|
-
}
|
|
13315
|
-
}
|
|
13316
|
-
function registerGetBugReport(server) {
|
|
13317
|
-
server.registerTool(
|
|
13318
|
-
"get_bug_report",
|
|
13319
|
-
{
|
|
13320
|
-
title: "Get Bug Report",
|
|
13321
|
-
description: "AskExe-internal only: fetch one customer bug report with full markdown payload and comments thread.",
|
|
13322
|
-
inputSchema: { id: z95.string().min(8) }
|
|
13323
|
-
},
|
|
13324
|
-
async ({ id }) => {
|
|
13325
|
-
const data = await requestJson(`${endpoint()}/${encodeURIComponent(id)}`);
|
|
13326
|
-
const comments = parseComments(data);
|
|
13327
|
-
const enriched = data && typeof data === "object" ? { ...data, comments } : { id, comments };
|
|
13328
|
-
return { content: [{ type: "text", text: JSON.stringify(enriched, null, 2) }] };
|
|
13329
|
-
}
|
|
13330
|
-
);
|
|
13331
|
-
}
|
|
13332
|
-
function registerAddBugReportComment(server) {
|
|
13333
|
-
server.registerTool(
|
|
13334
|
-
"add_bug_report_comment",
|
|
13335
|
-
{
|
|
13336
|
-
title: "Add Bug Report Comment",
|
|
13337
|
-
description: "AskExe-internal only: append a comment to a bug report's thread (POST /comments). Non-destructive \u2014 does not touch triage_notes or status.",
|
|
13338
|
-
inputSchema: {
|
|
13339
|
-
id: z95.string().min(8),
|
|
13340
|
-
comment: z95.string().min(1).describe("Comment text to append to the bug report thread")
|
|
13341
|
-
}
|
|
13342
|
-
},
|
|
13343
|
-
async ({ id, comment }) => {
|
|
13344
|
-
const data = await commentRequestJson(id, {
|
|
13345
|
-
method: "POST",
|
|
13346
|
-
body: JSON.stringify({ comment })
|
|
13347
|
-
});
|
|
13348
|
-
return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
|
|
13349
|
-
}
|
|
13350
|
-
);
|
|
13351
|
-
}
|
|
13352
|
-
function registerGetBugReportComments(server) {
|
|
13353
|
-
server.registerTool(
|
|
13354
|
-
"get_bug_report_comments",
|
|
13355
|
-
{
|
|
13356
|
-
title: "Get Bug Report Comments",
|
|
13357
|
-
description: "AskExe-internal only: list the comments thread on a bug report (GET /comments).",
|
|
13358
|
-
inputSchema: { id: z95.string().min(8) }
|
|
13359
|
-
},
|
|
13360
|
-
async ({ id }) => {
|
|
13361
|
-
const data = await commentRequestJson(id);
|
|
13362
|
-
return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
|
|
13363
|
-
}
|
|
13364
|
-
);
|
|
13365
|
-
}
|
|
13366
|
-
function registerTriageBugReport(server) {
|
|
13367
|
-
server.registerTool(
|
|
13368
|
-
"triage_bug_report",
|
|
13369
|
-
{
|
|
13370
|
-
title: "Triage Bug Report",
|
|
13371
|
-
description: "AskExe-internal only: update bug report status and link task/commit/release metadata.",
|
|
13372
|
-
inputSchema: {
|
|
13373
|
-
id: z95.string().min(8),
|
|
13374
|
-
status: STATUS3.optional(),
|
|
13375
|
-
triage_notes: z95.string().optional(),
|
|
13376
|
-
add_note: z95.string().optional().describe("Append a timestamped progress note without changing status or replacing triage_notes"),
|
|
13377
|
-
linked_task_id: z95.string().optional(),
|
|
13378
|
-
linked_commit: z95.string().optional(),
|
|
13379
|
-
fixed_version: z95.string().optional(),
|
|
13380
|
-
product: z95.string().optional().describe("Re-label this bug's product: exe-os, exe-create, exe-wiki, exe-gateway, exe-crm, exe-build, exe-chat, exe-auth, exe-monitor, exe-db, exe-erp")
|
|
13381
|
-
}
|
|
13382
|
-
},
|
|
13383
|
-
async ({ id, status: status2, triage_notes, add_note, linked_task_id, linked_commit, fixed_version, product }) => {
|
|
13384
|
-
const effectiveStatus = fixed_version && !status2 ? "closed" : status2;
|
|
13385
|
-
const data = await requestJson(`${endpoint()}/${encodeURIComponent(id)}`, {
|
|
13386
|
-
method: "PATCH",
|
|
13387
|
-
body: JSON.stringify({ status: effectiveStatus, triage_notes, add_note, linked_task_id, linked_commit, fixed_version, product })
|
|
13388
|
-
});
|
|
13389
|
-
return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
|
|
13390
|
-
}
|
|
13391
|
-
);
|
|
13392
|
-
}
|
|
13393
|
-
var FEATURE_STATUS = z95.enum(["open", "planned", "in_progress", "shipped", "closed", "wontdo"]);
|
|
13394
|
-
function featureEndpoint() {
|
|
13395
|
-
return endpoint().replace(/\/bug-reports\/?$/, "/feature-requests");
|
|
13396
|
-
}
|
|
13397
|
-
function registerListFeatureRequests(server) {
|
|
13398
|
-
server.registerTool(
|
|
13399
|
-
"list_feature_requests",
|
|
13400
|
-
{
|
|
13401
|
-
title: "List Feature Requests",
|
|
13402
|
-
description: "AskExe-internal only: list incoming customer feature requests from the support inbox.",
|
|
13403
|
-
inputSchema: {
|
|
13404
|
-
status: z95.enum(["all", "open", "planned", "in_progress", "shipped", "closed", "wontdo"]).default("open"),
|
|
13405
|
-
priority: z95.enum(["p0", "p1", "p2", "p3"]).optional(),
|
|
13406
|
-
limit: z95.number().int().min(1).max(100).default(25)
|
|
13407
|
-
}
|
|
13408
|
-
},
|
|
13409
|
-
async ({ status: status2, priority, limit }) => {
|
|
13410
|
-
const url = new URL(featureEndpoint());
|
|
13411
|
-
url.searchParams.set("status", status2);
|
|
13412
|
-
url.searchParams.set("limit", String(limit));
|
|
13413
|
-
if (priority) url.searchParams.set("priority", priority);
|
|
13414
|
-
const data = await requestJson(url.toString());
|
|
13415
|
-
return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
|
|
13416
|
-
}
|
|
13417
|
-
);
|
|
13418
|
-
}
|
|
13419
|
-
function registerGetFeatureRequest(server) {
|
|
13420
|
-
server.registerTool(
|
|
13421
|
-
"get_feature_request",
|
|
13422
|
-
{
|
|
13423
|
-
title: "Get Feature Request",
|
|
13424
|
-
description: "AskExe-internal only: fetch one customer feature request with full payload.",
|
|
13425
|
-
inputSchema: { id: z95.string().min(8) }
|
|
13426
|
-
},
|
|
13427
|
-
async ({ id }) => {
|
|
13428
|
-
const data = await requestJson(`${featureEndpoint()}/${encodeURIComponent(id)}`);
|
|
13429
|
-
return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
|
|
13430
|
-
}
|
|
13431
|
-
);
|
|
13432
|
-
}
|
|
13433
|
-
function registerTriageFeatureRequest(server) {
|
|
13434
|
-
server.registerTool(
|
|
13435
|
-
"triage_feature_request",
|
|
13436
|
-
{
|
|
13437
|
-
title: "Triage Feature Request",
|
|
13438
|
-
description: "AskExe-internal only: update feature request status, response notes, and version metadata.",
|
|
13439
|
-
inputSchema: {
|
|
13440
|
-
id: z95.string().min(8),
|
|
13441
|
-
status: FEATURE_STATUS.optional(),
|
|
13442
|
-
response_notes: z95.string().optional(),
|
|
13443
|
-
add_note: z95.string().optional().describe("Append a timestamped progress note without changing status or replacing response_notes"),
|
|
13444
|
-
target_version: z95.string().optional(),
|
|
13445
|
-
shipped_version: z95.string().optional()
|
|
13446
|
-
}
|
|
13447
|
-
},
|
|
13448
|
-
async ({ id, status: status2, response_notes, add_note, target_version, shipped_version }) => {
|
|
13449
|
-
const effectiveStatus = shipped_version && !status2 ? "shipped" : status2;
|
|
13450
|
-
const data = await requestJson(`${featureEndpoint()}/${encodeURIComponent(id)}`, {
|
|
13451
|
-
method: "PATCH",
|
|
13452
|
-
body: JSON.stringify({ status: effectiveStatus, response_notes, add_note, target_version, shipped_version })
|
|
13453
|
-
});
|
|
13454
|
-
return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
|
|
13455
|
-
}
|
|
13456
|
-
);
|
|
13457
|
-
}
|
|
13458
|
-
var REVIEW_STATUS = z95.enum(["open", "in_review", "approved", "merged", "closed", "rejected"]);
|
|
13459
|
-
function reviewEndpoint() {
|
|
13460
|
-
return endpoint().replace(/\/bug-reports\/?$/, "/reviews");
|
|
13461
|
-
}
|
|
13462
|
-
function registerListReviews(server) {
|
|
13463
|
-
server.registerTool(
|
|
13464
|
-
"list_reviews",
|
|
13465
|
-
{
|
|
13466
|
-
title: "List Reviews",
|
|
13467
|
-
description: "AskExe-internal only: list incoming review requests from the support inbox.",
|
|
13468
|
-
inputSchema: {
|
|
13469
|
-
status: z95.enum(["all", "open", "in_review", "approved", "merged", "closed", "rejected"]).default("open"),
|
|
13470
|
-
priority: z95.enum(["p0", "p1", "p2", "p3"]).optional(),
|
|
13471
|
-
limit: z95.number().int().min(1).max(100).default(25)
|
|
13472
|
-
}
|
|
13473
|
-
},
|
|
13474
|
-
async ({ status: status2, priority, limit }) => {
|
|
13475
|
-
const url = new URL(reviewEndpoint());
|
|
13476
|
-
url.searchParams.set("status", status2);
|
|
13477
|
-
url.searchParams.set("limit", String(limit));
|
|
13478
|
-
if (priority) url.searchParams.set("priority", priority);
|
|
13479
|
-
const data = await requestJson(url.toString());
|
|
13480
|
-
return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
|
|
13481
|
-
}
|
|
13482
|
-
);
|
|
13483
|
-
}
|
|
13484
|
-
function registerGetReview(server) {
|
|
13485
|
-
server.registerTool(
|
|
13486
|
-
"get_review",
|
|
13487
|
-
{
|
|
13488
|
-
title: "Get Review",
|
|
13489
|
-
description: "AskExe-internal only: fetch one review with full payload.",
|
|
13490
|
-
inputSchema: { id: z95.string().min(8) }
|
|
13491
|
-
},
|
|
13492
|
-
async ({ id }) => {
|
|
13493
|
-
const data = await requestJson(`${reviewEndpoint()}/${encodeURIComponent(id)}`);
|
|
13494
|
-
return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
|
|
13495
|
-
}
|
|
13496
|
-
);
|
|
13497
|
-
}
|
|
13498
|
-
function registerTriageReview(server) {
|
|
13499
|
-
server.registerTool(
|
|
13500
|
-
"triage_review",
|
|
13501
|
-
{
|
|
13502
|
-
title: "Triage Review",
|
|
13503
|
-
description: "AskExe-internal only: update review status, response notes, and resolution.",
|
|
13504
|
-
inputSchema: {
|
|
13505
|
-
id: z95.string().min(8),
|
|
13506
|
-
status: REVIEW_STATUS.optional(),
|
|
13507
|
-
response_notes: z95.string().optional(),
|
|
13508
|
-
add_note: z95.string().optional().describe("Append a timestamped progress note without changing status or replacing response_notes"),
|
|
13509
|
-
resolution: z95.string().optional(),
|
|
13510
|
-
pr_url: z95.string().optional()
|
|
13511
|
-
}
|
|
13512
|
-
},
|
|
13513
|
-
async ({ id, status: status2, response_notes, add_note, resolution, pr_url }) => {
|
|
13514
|
-
const data = await requestJson(`${reviewEndpoint()}/${encodeURIComponent(id)}`, {
|
|
13515
|
-
method: "PATCH",
|
|
13516
|
-
body: JSON.stringify({ status: status2, response_notes, add_note, resolution, pr_url })
|
|
13517
|
-
});
|
|
13518
|
-
return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
|
|
13519
|
-
}
|
|
13520
|
-
);
|
|
13521
|
-
}
|
|
13522
|
-
|
|
13523
13220
|
// src/mcp/tools/decision.ts
|
|
13524
|
-
import { z as
|
|
13221
|
+
import { z as z95 } from "zod";
|
|
13525
13222
|
function buildHandlers6() {
|
|
13526
13223
|
const tools = /* @__PURE__ */ new Map();
|
|
13527
13224
|
const fake = {
|
|
@@ -13545,12 +13242,12 @@ function registerDecision(server) {
|
|
|
13545
13242
|
title: "Decision",
|
|
13546
13243
|
description: "Store or retrieve authoritative decisions. Actions: store (persist a decision by domain), get (look up a decision by domain/query).",
|
|
13547
13244
|
inputSchema: {
|
|
13548
|
-
action:
|
|
13549
|
-
domain:
|
|
13550
|
-
decision:
|
|
13551
|
-
rationale:
|
|
13552
|
-
query:
|
|
13553
|
-
limit:
|
|
13245
|
+
action: z95.enum(["store", "get"]).describe("Decision operation"),
|
|
13246
|
+
domain: z95.string().optional().describe("Decision domain (e.g. 'architecture', 'hiring')"),
|
|
13247
|
+
decision: z95.string().optional().describe("Decision text for action=store"),
|
|
13248
|
+
rationale: z95.string().optional().describe("Why this decision was made (action=store)"),
|
|
13249
|
+
query: z95.string().optional().describe("Search query for action=get"),
|
|
13250
|
+
limit: z95.coerce.number().optional().describe("Max results for action=get")
|
|
13554
13251
|
}
|
|
13555
13252
|
},
|
|
13556
13253
|
async (input, extra) => {
|
|
@@ -13566,7 +13263,7 @@ function registerDecision(server) {
|
|
|
13566
13263
|
}
|
|
13567
13264
|
|
|
13568
13265
|
// src/mcp/tools/session.ts
|
|
13569
|
-
import { z as
|
|
13266
|
+
import { z as z96 } from "zod";
|
|
13570
13267
|
function buildHandlers7() {
|
|
13571
13268
|
const tools = /* @__PURE__ */ new Map();
|
|
13572
13269
|
const fake = {
|
|
@@ -13614,17 +13311,17 @@ function registerSession(server) {
|
|
|
13614
13311
|
title: "Session",
|
|
13615
13312
|
description: "Session tools. Actions: events (session event log), last_response (most recent assistant text), set_mode (enter explore or task mode), get_mode (query current mode and active explore sessions).",
|
|
13616
13313
|
inputSchema: {
|
|
13617
|
-
action:
|
|
13618
|
-
session_id:
|
|
13619
|
-
limit:
|
|
13314
|
+
action: z96.enum(["events", "last_response", "set_mode", "get_mode"]).describe("Session operation"),
|
|
13315
|
+
session_id: z96.string().optional().describe("Session ID for action=events"),
|
|
13316
|
+
limit: z96.coerce.number().optional().describe("Max events for action=events"),
|
|
13620
13317
|
// set_mode params
|
|
13621
|
-
mode:
|
|
13318
|
+
mode: z96.enum(["explore", "task"]).optional().describe(
|
|
13622
13319
|
"Mode for action=set_mode. 'explore' = divergent, no deliverable, nudges suppressed. 'task' = default convergent behaviour (resets any active explore session)."
|
|
13623
13320
|
),
|
|
13624
|
-
duration_minutes:
|
|
13321
|
+
duration_minutes: z96.number().optional().describe(
|
|
13625
13322
|
`How long to stay in explore mode in minutes (action=set_mode, mode=explore). Default: ${DEFAULT_EXPLORE_DURATION_MS / 6e4} minutes (1 hour).`
|
|
13626
13323
|
),
|
|
13627
|
-
notes:
|
|
13324
|
+
notes: z96.string().optional().describe("Optional notes about this explore session (action=set_mode)")
|
|
13628
13325
|
}
|
|
13629
13326
|
},
|
|
13630
13327
|
async (input, extra) => {
|
|
@@ -13689,14 +13386,14 @@ All active explore sessions (${active.length}):
|
|
|
13689
13386
|
}
|
|
13690
13387
|
|
|
13691
13388
|
// src/mcp/tools/support-consolidated.ts
|
|
13692
|
-
import { z as
|
|
13389
|
+
import { z as z98 } from "zod";
|
|
13693
13390
|
|
|
13694
13391
|
// src/mcp/tools/create-review.ts
|
|
13695
|
-
import { z as
|
|
13392
|
+
import { z as z97 } from "zod";
|
|
13696
13393
|
import crypto6 from "crypto";
|
|
13697
13394
|
import { mkdir as mkdir4, writeFile as writeFile6 } from "fs/promises";
|
|
13698
13395
|
import path17 from "path";
|
|
13699
|
-
var PRIORITY2 =
|
|
13396
|
+
var PRIORITY2 = z97.enum(["p0", "p1", "p2", "p3"]);
|
|
13700
13397
|
function slugify3(input) {
|
|
13701
13398
|
return input.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "").slice(0, 80) || "review";
|
|
13702
13399
|
}
|
|
@@ -13725,15 +13422,15 @@ function buildMarkdown3(input) {
|
|
|
13725
13422
|
async function maybeSendUpstream3(payload) {
|
|
13726
13423
|
const config = await loadConfig();
|
|
13727
13424
|
const routerUrl = process.env.API_ROUTER_URL?.replace(/\/+$/, "");
|
|
13728
|
-
const
|
|
13425
|
+
const endpoint = config.support?.reviewEndpoint || process.env.EXE_REVIEW_ENDPOINT || (routerUrl ? `${routerUrl}/v1/support/reviews` : "https://api.askexe.com/v1/support/reviews");
|
|
13729
13426
|
const token = config.support?.reviewToken || process.env.EXE_REVIEW_TOKEN;
|
|
13730
13427
|
const licenseKey = loadLicense() || process.env.EXE_LICENSE_KEY || config.cloud?.apiKey;
|
|
13731
13428
|
const licenseToken = readCachedLicenseToken();
|
|
13732
|
-
if (!
|
|
13429
|
+
if (!endpoint) {
|
|
13733
13430
|
return "not_configured";
|
|
13734
13431
|
}
|
|
13735
13432
|
try {
|
|
13736
|
-
const parsed = new URL(
|
|
13433
|
+
const parsed = new URL(endpoint);
|
|
13737
13434
|
if (parsed.protocol !== "https:" && !["localhost", "127.0.0.1", "::1"].includes(parsed.hostname)) {
|
|
13738
13435
|
return "failed: insecure endpoint rejected";
|
|
13739
13436
|
}
|
|
@@ -13746,7 +13443,10 @@ async function maybeSendUpstream3(payload) {
|
|
|
13746
13443
|
...licenseToken ? { "x-exe-license-token": licenseToken } : {},
|
|
13747
13444
|
...supportAdminHeaders(config)
|
|
13748
13445
|
},
|
|
13749
|
-
|
|
13446
|
+
// Egress redaction gate (dc16fee4) — redact secrets from description +
|
|
13447
|
+
// rendered markdown before the network send. No disk outbox for reviews,
|
|
13448
|
+
// so this direct send is the only path.
|
|
13449
|
+
body: sanitizedUpstreamBody(payload, "create-review"),
|
|
13750
13450
|
signal: AbortSignal.timeout(1e4)
|
|
13751
13451
|
});
|
|
13752
13452
|
if (!response.ok) return `failed: HTTP ${response.status}`;
|
|
@@ -13762,15 +13462,15 @@ function registerCreateReview(server) {
|
|
|
13762
13462
|
title: "Create Review",
|
|
13763
13463
|
description: "File a review request (code review, self-improvement findings, PR review needs). Writes a local report, stores memory, and optionally sends to AskExe support.",
|
|
13764
13464
|
inputSchema: {
|
|
13765
|
-
title:
|
|
13766
|
-
description:
|
|
13465
|
+
title: z97.string().min(3).describe("Short descriptive title"),
|
|
13466
|
+
description: z97.string().optional().describe("What needs review and why"),
|
|
13767
13467
|
priority: PRIORITY2.default("p1").describe("p0 critical -> p3 low"),
|
|
13768
|
-
source:
|
|
13769
|
-
pr_url:
|
|
13770
|
-
product:
|
|
13771
|
-
package_version:
|
|
13772
|
-
project_name:
|
|
13773
|
-
send_upstream:
|
|
13468
|
+
source: z97.string().optional().describe("Source: self-improve, manual, ci, etc."),
|
|
13469
|
+
pr_url: z97.string().optional().describe("PR URL if applicable"),
|
|
13470
|
+
product: z97.string().optional().describe("Product: exe-os (default), exe-create, exe-wiki, exe-gateway, exe-crm, exe-build"),
|
|
13471
|
+
package_version: z97.string().optional().describe("Installed package version"),
|
|
13472
|
+
project_name: z97.string().optional().describe("Project/customer context"),
|
|
13473
|
+
send_upstream: z97.boolean().default(false).describe("Attempt to POST to configured AskExe support endpoint (disabled by default \u2014 review route not yet live)")
|
|
13774
13474
|
}
|
|
13775
13475
|
},
|
|
13776
13476
|
async ({
|
|
@@ -13926,7 +13626,7 @@ function registerSupportConsolidated(server) {
|
|
|
13926
13626
|
title: "Support",
|
|
13927
13627
|
description: "Bug reports, feature requests, reviews, and support system. Actions: create_bug, create_feature, create_review, update_bug, update_feature, list_my_bugs, list_my_features, list_my_reviews, list_bugs, get_bug, add_comment, get_comments, triage_bug, list_features, get_feature, triage_feature, list_reviews, get_review, triage_review, health, test. Use 'product' param to file bugs for any AskExe product.",
|
|
13928
13628
|
inputSchema: {
|
|
13929
|
-
action:
|
|
13629
|
+
action: z98.enum([
|
|
13930
13630
|
"create_bug",
|
|
13931
13631
|
"create_feature",
|
|
13932
13632
|
"create_review",
|
|
@@ -13949,40 +13649,40 @@ function registerSupportConsolidated(server) {
|
|
|
13949
13649
|
"health",
|
|
13950
13650
|
"test"
|
|
13951
13651
|
]).describe("Support operation"),
|
|
13952
|
-
title:
|
|
13953
|
-
description:
|
|
13954
|
-
steps_to_reproduce:
|
|
13955
|
-
expected_behavior:
|
|
13956
|
-
actual_behavior:
|
|
13957
|
-
severity:
|
|
13958
|
-
product:
|
|
13959
|
-
use_case:
|
|
13960
|
-
proposed_solution:
|
|
13961
|
-
priority:
|
|
13962
|
-
on_behalf_of_email:
|
|
13963
|
-
id:
|
|
13964
|
-
comment:
|
|
13965
|
-
status:
|
|
13966
|
-
classification:
|
|
13967
|
-
resolution:
|
|
13968
|
-
notes:
|
|
13969
|
-
triage_notes:
|
|
13970
|
-
linked_task_id:
|
|
13971
|
-
linked_commit:
|
|
13972
|
-
fixed_version:
|
|
13973
|
-
shipped_version:
|
|
13974
|
-
add_evidence:
|
|
13975
|
-
reopen_request:
|
|
13976
|
-
reopen_reason:
|
|
13977
|
-
attachments:
|
|
13978
|
-
filename:
|
|
13979
|
-
content:
|
|
13652
|
+
title: z98.string().optional().describe("Bug/feature title"),
|
|
13653
|
+
description: z98.string().optional().describe("Bug/feature description"),
|
|
13654
|
+
steps_to_reproduce: z98.string().optional().describe("Steps to reproduce (bugs)"),
|
|
13655
|
+
expected_behavior: z98.string().optional().describe("Expected behavior (bugs)"),
|
|
13656
|
+
actual_behavior: z98.string().optional().describe("Actual behavior (bugs)"),
|
|
13657
|
+
severity: z98.string().optional().describe("Severity: p0/p1/p2/p3"),
|
|
13658
|
+
product: z98.string().optional().describe("Product (create_bug default exe-os; also re-labels a bug via update_bug, admin only): exe-os, exe-create, exe-wiki, exe-gateway, exe-crm, exe-build, exe-chat, exe-auth, exe-monitor, exe-db, exe-erp"),
|
|
13659
|
+
use_case: z98.string().optional().describe("Use case (features)"),
|
|
13660
|
+
proposed_solution: z98.string().optional().describe("Proposed solution (features)"),
|
|
13661
|
+
priority: z98.string().optional().describe("Priority (features)"),
|
|
13662
|
+
on_behalf_of_email: z98.string().email().optional().describe("ADMIN ONLY: file this request owned by another customer's license email; ignored unless caller holds the support admin token (create_bug/create_feature)"),
|
|
13663
|
+
id: z98.string().optional().describe("Bug/feature ID for get/triage/add_comment/get_comments"),
|
|
13664
|
+
comment: z98.string().optional().describe("Comment text to append to a bug report thread (add_comment)"),
|
|
13665
|
+
status: z98.string().optional().describe("Filter by status"),
|
|
13666
|
+
classification: z98.string().optional().describe("Triage classification"),
|
|
13667
|
+
resolution: z98.string().optional().describe("Triage resolution"),
|
|
13668
|
+
notes: z98.string().optional().describe("Triage notes (mapped to triage_notes for bug/feature triage)"),
|
|
13669
|
+
triage_notes: z98.string().optional().describe("Triage notes (legacy field name)"),
|
|
13670
|
+
linked_task_id: z98.string().optional().describe("Linked task ID for triage"),
|
|
13671
|
+
linked_commit: z98.string().optional().describe("Linked commit hash for triage"),
|
|
13672
|
+
fixed_version: z98.string().optional().describe("Version that fixes this bug"),
|
|
13673
|
+
shipped_version: z98.string().optional().describe("Version that ships this feature (features only)"),
|
|
13674
|
+
add_evidence: z98.string().optional().describe("Owner self-service: additional evidence (logs, repro, stack traces) for update_bug"),
|
|
13675
|
+
reopen_request: z98.boolean().optional().describe("Owner self-service: request a reopen on a recurring fixed bug (update_bug)"),
|
|
13676
|
+
reopen_reason: z98.string().optional().describe("Owner self-service: why the bug should be reopened (update_bug)"),
|
|
13677
|
+
attachments: z98.array(z98.object({
|
|
13678
|
+
filename: z98.string().min(1).describe("Filename for the attachment"),
|
|
13679
|
+
content: z98.string().min(1).describe("File content \u2014 plain text")
|
|
13980
13680
|
})).optional().describe("File attachments for bug reports / feature requests (diffs, logs, config snippets)"),
|
|
13981
|
-
source:
|
|
13982
|
-
pr_url:
|
|
13983
|
-
review_resolution:
|
|
13984
|
-
limit:
|
|
13985
|
-
offset:
|
|
13681
|
+
source: z98.string().optional().describe("Review source: self-improve, manual, ci"),
|
|
13682
|
+
pr_url: z98.string().optional().describe("PR URL (reviews)"),
|
|
13683
|
+
review_resolution: z98.string().optional().describe("Resolution text (reviews)"),
|
|
13684
|
+
limit: z98.coerce.number().optional().describe("Max results per page (up to 500)"),
|
|
13685
|
+
offset: z98.coerce.number().optional().describe("Number of results to skip for pagination (list_my_bugs/list_my_features). Use next_offset from a prior response.")
|
|
13986
13686
|
}
|
|
13987
13687
|
},
|
|
13988
13688
|
async (input, extra) => {
|
|
@@ -14068,7 +13768,7 @@ function registerSupportConsolidated(server) {
|
|
|
14068
13768
|
}
|
|
14069
13769
|
|
|
14070
13770
|
// src/mcp/tools/diagnostics.ts
|
|
14071
|
-
import { z as
|
|
13771
|
+
import { z as z99 } from "zod";
|
|
14072
13772
|
function buildHandlers9() {
|
|
14073
13773
|
const tools = /* @__PURE__ */ new Map();
|
|
14074
13774
|
const fake = {
|
|
@@ -14089,21 +13789,21 @@ function registerDiagnostics(server) {
|
|
|
14089
13789
|
title: "Diagnostics",
|
|
14090
13790
|
description: `System diagnostics and admin operations. Actions: ${toolNames.join(", ")}. Covers health checks, update status, cloud status, key management, employee rename, semantic tool discovery (tool_search), identity drift detection (drift), agent liveness monitoring (agent_liveness), agent memory reassignment (merge_agent_memories), steward identity gate (steward_check, steward_audit_log, steward_override), daemon restart forensics (daemon_restarts \u2014 'why did the daemon restart?': restart-cause breakdown, slowest-timer leaderboard, event-loop-block frequency), and orchestration-health visibility: spawn_failures ('why did dispatch fail?': tmux spawn fail count + cause breakdown path_not_found/claude_launch_failed/timeout + success-vs-fail ratio), orchestration_health ('is the box healthy / is the spiral happening?': load/core, event-loop lag, direct-SQLite-fallback count, event-loop blocks), and work_map ('who's doing what / who died and why?': live sessions \xD7 role \xD7 task \xD7 worktree flag, plus recent session deaths with cause/load + worktree violations).`,
|
|
14091
13791
|
inputSchema: {
|
|
14092
|
-
action:
|
|
13792
|
+
action: z99.string().describe(`Diagnostic operation: ${toolNames.join(", ")}`),
|
|
14093
13793
|
// Pass-through params used by various sub-tools
|
|
14094
|
-
agent_id:
|
|
14095
|
-
name:
|
|
14096
|
-
new_name:
|
|
14097
|
-
query:
|
|
14098
|
-
format:
|
|
14099
|
-
limit:
|
|
14100
|
-
from_agent_id:
|
|
14101
|
-
to_agent_id:
|
|
14102
|
-
dry_run:
|
|
13794
|
+
agent_id: z99.string().optional().describe("Agent to probe (drift). Defaults to all agents."),
|
|
13795
|
+
name: z99.string().optional().describe("Employee name (rename_employee)"),
|
|
13796
|
+
new_name: z99.string().optional().describe("New employee name (rename_employee)"),
|
|
13797
|
+
query: z99.string().optional().describe("Search/filter query, or natural language for tool_search"),
|
|
13798
|
+
format: z99.string().optional().describe("Output format"),
|
|
13799
|
+
limit: z99.coerce.number().int().min(1).max(100).optional().describe("Max results for tool_search (default 20)"),
|
|
13800
|
+
from_agent_id: z99.string().optional().describe("Source agent ID to merge from (merge_agent_memories)"),
|
|
13801
|
+
to_agent_id: z99.string().optional().describe("Target agent ID to merge into (merge_agent_memories)"),
|
|
13802
|
+
dry_run: z99.boolean().optional().default(true).describe("Preview mode \u2014 show count without changing (merge_agent_memories). Default: true"),
|
|
14103
13803
|
// Steward params (absorbed from steward tool)
|
|
14104
|
-
operation:
|
|
14105
|
-
target:
|
|
14106
|
-
reason:
|
|
13804
|
+
operation: z99.string().optional().describe("Operation name for steward_check/steward_override"),
|
|
13805
|
+
target: z99.string().optional().describe("Target resource for steward_check/steward_override"),
|
|
13806
|
+
reason: z99.string().optional().describe("Override reason for steward_override")
|
|
14107
13807
|
}
|
|
14108
13808
|
},
|
|
14109
13809
|
async (input, extra) => {
|
|
@@ -14268,7 +13968,7 @@ async function handleMergeAgentMemories(input) {
|
|
|
14268
13968
|
}
|
|
14269
13969
|
async function handleSpawnFailures() {
|
|
14270
13970
|
try {
|
|
14271
|
-
const { getOrchestrationMetrics } = await import("./orchestration-events-
|
|
13971
|
+
const { getOrchestrationMetrics } = await import("./orchestration-events-ZG7O4HRY.js");
|
|
14272
13972
|
const metrics = await getOrchestrationMetrics();
|
|
14273
13973
|
const c = metrics.counts;
|
|
14274
13974
|
const attempted = c.tmuxSpawnAttempted;
|
|
@@ -14370,7 +14070,7 @@ async function handleOrchestrationHealth() {
|
|
|
14370
14070
|
async function handleWorkMap() {
|
|
14371
14071
|
try {
|
|
14372
14072
|
const { getAgentLivenessReport } = await import("./agent-heartbeat-I5UPGXAU.js");
|
|
14373
|
-
const { classifyRole } = await import("./session-kill-telemetry-
|
|
14073
|
+
const { classifyRole } = await import("./session-kill-telemetry-6YDGEF27.js");
|
|
14374
14074
|
const { buildSessionDeathSummary } = await import("./orchestration-health-read-EJWVUARG.js");
|
|
14375
14075
|
const { getPaneCwd } = await import("./lib/tmux-status.js");
|
|
14376
14076
|
const live = getAgentLivenessReport();
|
|
@@ -14505,7 +14205,7 @@ async function handleDrift(input) {
|
|
|
14505
14205
|
}
|
|
14506
14206
|
async function handleSteward(action, input) {
|
|
14507
14207
|
const gate = new StewardGate();
|
|
14508
|
-
const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-
|
|
14208
|
+
const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-AIQP4DFL.js");
|
|
14509
14209
|
const inputAgent = input.agent_id;
|
|
14510
14210
|
const operation = input.operation;
|
|
14511
14211
|
const target = input.target;
|
|
@@ -14553,7 +14253,7 @@ async function handleSteward(action, input) {
|
|
|
14553
14253
|
}
|
|
14554
14254
|
|
|
14555
14255
|
// src/mcp/tools/dreaming.ts
|
|
14556
|
-
import { z as
|
|
14256
|
+
import { z as z100 } from "zod";
|
|
14557
14257
|
function registerDreaming(server) {
|
|
14558
14258
|
server.registerTool(
|
|
14559
14259
|
"dreaming",
|
|
@@ -14561,10 +14261,10 @@ function registerDreaming(server) {
|
|
|
14561
14261
|
title: "Dreaming",
|
|
14562
14262
|
description: "Self-improvement loop \u2014 reviews recent work, identifies patterns, proposes behavior changes, and detects identity drift. Actions: run (execute dream cycle), status (last cycle result), history (past cycles).",
|
|
14563
14263
|
inputSchema: {
|
|
14564
|
-
action:
|
|
14565
|
-
agent_id:
|
|
14566
|
-
hours:
|
|
14567
|
-
limit:
|
|
14264
|
+
action: z100.enum(["run", "status", "history"]).describe("Action to perform"),
|
|
14265
|
+
agent_id: z100.string().optional().describe("Agent to analyze. Defaults to calling agent."),
|
|
14266
|
+
hours: z100.coerce.number().min(1).max(720).optional().describe("Lookback window in hours (run). Default 24."),
|
|
14267
|
+
limit: z100.coerce.number().int().min(1).max(50).optional().describe("Max results for history. Default 10.")
|
|
14568
14268
|
}
|
|
14569
14269
|
},
|
|
14570
14270
|
async ({ action, agent_id, hours, limit }) => {
|
|
@@ -14687,7 +14387,7 @@ ${String(row.raw_text)}`
|
|
|
14687
14387
|
}
|
|
14688
14388
|
|
|
14689
14389
|
// src/mcp/tools/steward.ts
|
|
14690
|
-
import { z as
|
|
14390
|
+
import { z as z101 } from "zod";
|
|
14691
14391
|
function errorResult11(text5) {
|
|
14692
14392
|
return { content: [{ type: "text", text: text5 }], isError: true };
|
|
14693
14393
|
}
|
|
@@ -14699,12 +14399,12 @@ function registerSteward(server) {
|
|
|
14699
14399
|
title: "Steward Identity Gate",
|
|
14700
14400
|
description: "Constitutional check before destructive operations. action=check: verify agent authority for an operation. action=audit_log: query the audit trail. action=override: coordinator-only bypass with reason.",
|
|
14701
14401
|
inputSchema: {
|
|
14702
|
-
action:
|
|
14703
|
-
agent:
|
|
14704
|
-
operation:
|
|
14705
|
-
target:
|
|
14706
|
-
reason:
|
|
14707
|
-
limit:
|
|
14402
|
+
action: z101.enum(["check", "audit_log", "override"]).describe("Steward operation to perform"),
|
|
14403
|
+
agent: z101.string().optional().describe("Agent to check (defaults to calling agent for action=check)"),
|
|
14404
|
+
operation: z101.string().optional().describe("Operation name (required for check/override)"),
|
|
14405
|
+
target: z101.string().optional().describe("Target resource (required for check/override)"),
|
|
14406
|
+
reason: z101.string().optional().describe("Override reason (required for action=override)"),
|
|
14407
|
+
limit: z101.number().optional().describe("Max audit entries to return (default: 50)")
|
|
14708
14408
|
}
|
|
14709
14409
|
},
|
|
14710
14410
|
async (input) => {
|
|
@@ -14787,7 +14487,7 @@ function registerSteward(server) {
|
|
|
14787
14487
|
}
|
|
14788
14488
|
|
|
14789
14489
|
// src/mcp/tools/resonance.ts
|
|
14790
|
-
import { z as
|
|
14490
|
+
import { z as z102 } from "zod";
|
|
14791
14491
|
function text4(content, isError = false) {
|
|
14792
14492
|
return { content: [{ type: "text", text: content }], ...isError ? { isError: true } : {} };
|
|
14793
14493
|
}
|
|
@@ -14796,14 +14496,14 @@ function registerResonance(server) {
|
|
|
14796
14496
|
title: "Resonance Network",
|
|
14797
14497
|
description: "Co-activation network queries. Actions: hot_pairs (top co-activated memory pairs), neighbors (co-activation neighbors for a specific memory).",
|
|
14798
14498
|
inputSchema: {
|
|
14799
|
-
action:
|
|
14800
|
-
memory_id:
|
|
14801
|
-
entity_id:
|
|
14802
|
-
limit:
|
|
14499
|
+
action: z102.enum(["hot_pairs", "neighbors"]).describe("Resonance query type"),
|
|
14500
|
+
memory_id: z102.string().optional().describe("Memory ID for neighbors action"),
|
|
14501
|
+
entity_id: z102.string().optional().describe("Deprecated alias for memory_id on neighbors action"),
|
|
14502
|
+
limit: z102.number().optional().describe("Max results (default 20)")
|
|
14803
14503
|
}
|
|
14804
14504
|
}, async ({ action, memory_id, entity_id, limit }) => {
|
|
14805
14505
|
try {
|
|
14806
|
-
const { getHotPairs, getCoActivationNeighbors } = await import("./co-activation-
|
|
14506
|
+
const { getHotPairs, getCoActivationNeighbors } = await import("./co-activation-QI5BK4RT.js");
|
|
14807
14507
|
if (action === "hot_pairs") {
|
|
14808
14508
|
const pairs = await getHotPairs(limit ?? 20);
|
|
14809
14509
|
if (pairs.length === 0) return text4("No co-activation data yet. Pairs are recorded as memories are accessed together in searches.");
|
|
@@ -15217,7 +14917,7 @@ ${err.stack ?? ""}` : String(err);
|
|
|
15217
14917
|
gate("registerSupportTools", registerSupportTools);
|
|
15218
14918
|
const hasAdminToken = !!(process.env.ASKEXE_SUPPORT_ADMIN_TOKEN || process.env.EXE_SUPPORT_ADMIN_TOKEN || (() => {
|
|
15219
14919
|
try {
|
|
15220
|
-
const c = JSON.parse(
|
|
14920
|
+
const c = JSON.parse(readFileSync7(join4(process.env.EXE_OS_DIR ?? join4(homedir4(), ".exe-os"), "config.json"), "utf-8"));
|
|
15221
14921
|
return c.support?.adminToken || c.support?.admin_token;
|
|
15222
14922
|
} catch {
|
|
15223
14923
|
return "";
|