@askexenow/exe-os 0.9.319 → 0.9.322
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/deploy/compose/docker-compose.yml +1 -1
- package/deploy/stack-manifests/v0.9.json +110 -2
- package/dist/{active-agent-EA2Q3KYR.js → active-agent-M5NJFEBM.js} +3 -3
- package/dist/{active-agent-XIPGXSQA.js → active-agent-SHM4QSRJ.js} +3 -3
- package/dist/{agentic-ontology-7ZUMZC2O.js → agentic-ontology-HQKCU7LG.js} +1 -1
- package/dist/{backfill-metadata-7RO5PSMN.js → backfill-metadata-CXWFCTBO.js} +4 -4
- package/dist/{behaviors-OEGZD5DH.js → behaviors-J47D342W.js} +5 -5
- package/dist/bin/agentic-ontology-backfill.js +5 -5
- package/dist/bin/agentic-reflection-backfill.js +6 -6
- package/dist/bin/agentic-semantic-label.js +5 -5
- package/dist/bin/backfill-conversations.js +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 +12 -12
- package/dist/bin/cli.js +56 -16
- package/dist/bin/deferred-daemon-restart.js +67 -67
- package/dist/bin/exe-agent-config.js +3 -3
- package/dist/bin/exe-agent.js +8 -8
- package/dist/bin/exe-assign.js +8 -8
- package/dist/bin/exe-boot.js +55 -30
- 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 +12 -12
- package/dist/bin/exe-doctor.js +4 -4
- package/dist/bin/exe-export-behaviors.js +7 -7
- package/dist/bin/exe-forget.js +6 -6
- package/dist/bin/exe-gateway.js +7 -7
- package/dist/bin/exe-healthcheck.js +4 -4
- package/dist/bin/exe-heartbeat.js +12 -12
- package/dist/bin/exe-kill.js +15 -15
- package/dist/bin/exe-launch-agent.js +33 -22
- package/dist/bin/exe-new-employee.js +8 -8
- package/dist/bin/exe-pending-messages.js +13 -13
- package/dist/bin/exe-pending-notifications.js +12 -12
- package/dist/bin/exe-pending-reviews.js +12 -12
- package/dist/bin/exe-rename.js +4 -4
- package/dist/bin/exe-review.js +14 -14
- package/dist/bin/exe-search.js +5 -5
- package/dist/bin/exe-session-cleanup.js +18 -18
- package/dist/bin/exe-settings.js +13 -13
- package/dist/bin/exe-start-codex.js +12 -12
- package/dist/bin/exe-start-opencode.js +8 -8
- package/dist/bin/exe-status.js +13 -13
- package/dist/bin/exe-support.js +3 -3
- package/dist/bin/exe-team.js +3 -3
- package/dist/bin/git-sweep.js +13 -13
- package/dist/bin/graph-backfill.js +4 -4
- package/dist/bin/graph-export.js +5 -5
- package/dist/bin/import-history.js +7 -7
- package/dist/bin/install-launchd.js +2 -2
- package/dist/bin/install.js +70 -70
- package/dist/bin/intercom-check.js +4 -4
- package/dist/bin/mcp-sessions.js +2 -2
- package/dist/bin/orchestration-metrics.js +4 -4
- package/dist/bin/postgres-agentic-reflection-backfill.js +2 -2
- package/dist/bin/postgres-agentic-semantic-backfill.js +1 -1
- package/dist/bin/registry-proxy.js +7 -1
- package/dist/bin/scan-tasks.js +12 -12
- package/dist/bin/setup.js +1 -1
- package/dist/bin/shard-migrate.js +4 -4
- package/dist/bin/stack-update.js +4 -4
- package/dist/bin/vps-health-gate.js +1 -1
- package/dist/{capability-cards-4BONYCI4.js → capability-cards-H7H3MU74.js} +2 -2
- package/dist/{capacity-monitor-SV2Q7CMC.js → capacity-monitor-WAEHVBL7.js} +13 -13
- package/dist/{catchup-brief-5ULTVKSE.js → catchup-brief-L42STIDR.js} +15 -15
- package/dist/{chunk-LQWCIW4K.js → chunk-2GBGIXKH.js} +1 -1
- package/dist/{chunk-C7QYH2YN.js → chunk-3JW3ZXCP.js} +1 -1
- package/dist/{chunk-KF6NBYV4.js → chunk-3M73L663.js} +2 -2
- package/dist/{chunk-MRB2BXIB.js → chunk-4Z47UMMM.js} +10 -10
- package/dist/{chunk-VTHR4DPE.js → chunk-5ZNY7IZI.js} +5 -1
- package/dist/{chunk-UQOCHKPX.js → chunk-657AQEPY.js} +1 -1
- package/dist/{chunk-B2FUBD6Z.js → chunk-6IBUQBMY.js} +9 -9
- package/dist/{chunk-Q774HAGE.js → chunk-6N4LYEDI.js} +1 -1
- package/dist/{chunk-EPZWVXKI.js → chunk-6SXJZHRJ.js} +1 -1
- package/dist/{chunk-XLQH263A.js → chunk-6UQRJCKK.js} +2 -2
- package/dist/{chunk-3ZOWUUKR.js → chunk-6XM6PZXQ.js} +1 -1
- package/dist/{chunk-DZJZAHTB.js → chunk-7BZ6TOZN.js} +2 -2
- package/dist/{chunk-E3WZA2WU.js → chunk-7CUF27OT.js} +1 -1
- package/dist/{chunk-V4UKBUUA.js → chunk-7FBPLVHM.js} +1 -1
- package/dist/{chunk-OXGNFT3L.js → chunk-7SDS5VCL.js} +5 -5
- package/dist/{chunk-FJUQ5L5R.js → chunk-A3KUGBDP.js} +92 -1
- package/dist/{chunk-TWPYSILC.js → chunk-ABGDTMKC.js} +1 -1
- package/dist/{chunk-VUZRAEF3.js → chunk-AZL3EUR3.js} +64 -18
- package/dist/{chunk-TRXBT24O.js → chunk-BFHBHQFA.js} +5 -5
- package/dist/{chunk-F3P34OHU.js → chunk-C4BIZXKB.js} +1 -1
- package/dist/{chunk-DFSR3UUL.js → chunk-CHSRSESS.js} +1 -1
- package/dist/{chunk-7XGDTKHX.js → chunk-CMDC5D7S.js} +2 -2
- package/dist/{chunk-CNFUVZLM.js → chunk-CXXERHNC.js} +1 -1
- package/dist/{chunk-N3ZLLKBN.js → chunk-DGFIXJ4S.js} +3 -3
- package/dist/{chunk-JNUYJRQX.js → chunk-E32KARET.js} +4 -4
- package/dist/{chunk-RJHOFX72.js → chunk-EOPSIIEH.js} +1 -1
- package/dist/{chunk-CQ2T4A2D.js → chunk-EPBB2OD3.js} +2 -2
- package/dist/{chunk-YTHZTDXH.js → chunk-ERSFOJGC.js} +1 -1
- package/dist/{chunk-MM7EYJJ3.js → chunk-EVUXF2G4.js} +1 -1
- package/dist/{chunk-V2GI2MJJ.js → chunk-F5FAD2YR.js} +2 -2
- package/dist/{chunk-7S3SRDPQ.js → chunk-FANIBYUO.js} +2 -2
- package/dist/{chunk-LJTXVAG4.js → chunk-G5TP2D2U.js} +3 -3
- package/dist/{chunk-36CFV3ZF.js → chunk-GA76RGSP.js} +3 -3
- package/dist/{chunk-B3SFW4LY.js → chunk-GN3IWZDH.js} +612 -536
- package/dist/{chunk-PHUKD7VK.js → chunk-H2SD2EA7.js} +9 -9
- package/dist/{chunk-LRWB35MD.js → chunk-HGM6NZQH.js} +1 -1
- package/dist/{chunk-WXQVFMNV.js → chunk-HIOO7DZ2.js} +5 -5
- package/dist/{chunk-7I4HQYPL.js → chunk-HKSJSW2V.js} +1 -1
- package/dist/{chunk-RVF6JBHW.js → chunk-HV5CUDOE.js} +1 -1
- package/dist/{chunk-5L62XXNH.js → chunk-HWC5W34K.js} +1 -1
- package/dist/{chunk-JJ2FFUFV.js → chunk-JXEMAB4M.js} +1 -1
- package/dist/{chunk-2OOCPANV.js → chunk-KK4ZOYXJ.js} +1 -1
- package/dist/{chunk-K6GZMAIA.js → chunk-KL5WYWS3.js} +2 -2
- package/dist/{chunk-RREJ2QQ4.js → chunk-KLG53B63.js} +1 -1
- package/dist/{chunk-IPD5ZSOK.js → chunk-KXP3CUTL.js} +2 -2
- package/dist/{chunk-AKD6IKYS.js → chunk-LB77CSLO.js} +3 -3
- package/dist/{chunk-T5O2EBHU.js → chunk-LCZ55G5G.js} +7 -7
- package/dist/{chunk-TDV3XEGQ.js → chunk-LOE2N23P.js} +1 -1
- package/dist/{chunk-JPTBLJLS.js → chunk-MYMA23KC.js} +1 -1
- package/dist/{chunk-PJH7JUWD.js → chunk-NAHAOFTY.js} +3 -3
- package/dist/{chunk-HFDFQ7CB.js → chunk-NFM6VHL7.js} +1 -1
- package/dist/{chunk-PM6XSS6R.js → chunk-NYFPFOYM.js} +1 -1
- package/dist/{chunk-DRA2FYUQ.js → chunk-OFR7KQ37.js} +3 -3
- package/dist/{chunk-OC222BAQ.js → chunk-OI63OVCR.js} +1 -1
- package/dist/{chunk-ZOCW4TGA.js → chunk-ORC5AO7E.js} +1 -1
- package/dist/{chunk-WUF5MYA5.js → chunk-PISGLNV7.js} +9 -9
- package/dist/{chunk-LWBOSHSS.js → chunk-PLBDXCYZ.js} +95 -29
- package/dist/{chunk-RAKFEXCN.js → chunk-QNUHDEPI.js} +4 -4
- package/dist/{chunk-C54QKE4O.js → chunk-QQOH3I4A.js} +1 -1
- package/dist/{chunk-Q26VSIXA.js → chunk-QVFJCFNM.js} +24 -0
- package/dist/{chunk-C2DFOF7O.js → chunk-QYLDCPNG.js} +1 -1
- package/dist/{chunk-C5SALMKH.js → chunk-ROMB2HH4.js} +5 -5
- package/dist/{chunk-GRB44WRN.js → chunk-SENJA7BZ.js} +1 -1
- package/dist/{chunk-NODTWD7N.js → chunk-SQ5JWDJ2.js} +1 -1
- package/dist/{chunk-KHM3TKOM.js → chunk-T6AUMO5X.js} +1 -1
- package/dist/{chunk-YJYE6MMJ.js → chunk-TI6YX3L5.js} +2 -2
- package/dist/{chunk-WL5K3R7W.js → chunk-TKBWBHFV.js} +1 -1
- package/dist/{chunk-7PUNIH6G.js → chunk-V2ESQU3S.js} +1 -1
- package/dist/{chunk-YZTOGIV7.js → chunk-VSXGFHJY.js} +1 -1
- package/dist/{chunk-QLVMJGUQ.js → chunk-VY7345RO.js} +46 -7
- package/dist/{chunk-YSSJOTVN.js → chunk-WCCR5IFR.js} +2 -2
- package/dist/{chunk-4XAYC77M.js → chunk-WFHYAKEU.js} +1 -1
- package/dist/{chunk-IDMIGP53.js → chunk-WSYKLS2Y.js} +3 -3
- package/dist/{chunk-DTP4HXM3.js → chunk-X62GD6QW.js} +1 -1
- package/dist/{chunk-GBUFDCLX.js → chunk-XC7C3GQ2.js} +2 -2
- package/dist/{chunk-WG4PRZGT.js → chunk-XEBN5CPD.js} +5 -5
- package/dist/{chunk-36SS3TE7.js → chunk-XLNF3CIO.js} +3 -3
- package/dist/{chunk-MNUFLCHT.js → chunk-XP53WEXP.js} +3 -3
- package/dist/{cleanup-graph-garbage-IXYSUIUH.js → cleanup-graph-garbage-MX5JDTJA.js} +4 -4
- package/dist/{co-activation-BQRXOZN2.js → co-activation-K44LGZ7A.js} +2 -2
- package/dist/{co-occurrence-QPLSUQ4O.js → co-occurrence-N62HJTRP.js} +2 -2
- package/dist/{code-context-index-NQFP6ED5.js → code-context-index-6YQ3DGCN.js} +3 -3
- package/dist/completion-nudge-dedup-DBZF24MM.js +74 -0
- package/dist/{crdt-sync-VLSJH6LL.js → crdt-sync-BO76VVRX.js} +1 -1
- package/dist/{crm-webhook-IZYJXHSK.js → crm-webhook-UZLTHXAS.js} +2 -2
- package/dist/{cto-delegation-gate-FU4HGNSN.js → cto-delegation-gate-NVMRONA2.js} +11 -11
- package/dist/{daemon-orchestration-IXSMZXGO.js → daemon-orchestration-JI3RD5EZ.js} +15 -15
- package/dist/{db-backup-7GJYDSXA.js → db-backup-ITRADB2J.js} +1 -1
- package/dist/{doc-graph-extractor-U7XGZQ7T.js → doc-graph-extractor-L7YESUSI.js} +2 -2
- package/dist/{documents-U47VG24Q.js → documents-7BFXA6V3.js} +8 -8
- package/dist/{dreaming-VBI4BI6R.js → dreaming-NRTMPNPZ.js} +12 -12
- package/dist/{exe-drift-BMSRHAT6.js → exe-drift-GLJIM7EI.js} +3 -3
- package/dist/{exe-export-CIRE2HZA.js → exe-export-THIAYHXK.js} +6 -6
- package/dist/{exe-import-X6U6VG7Q.js → exe-import-3Y4VOUYL.js} +6 -6
- package/dist/{exe-key-7VXVXX4Q.js → exe-key-IPGY4RMU.js} +67 -67
- package/dist/{exe-snapshot-P5BLEXQJ.js → exe-snapshot-2ZEWCDYK.js} +15 -15
- package/dist/{fast-db-init-SMBGFVXM.js → fast-db-init-TLYUWCDE.js} +1 -1
- package/dist/{founder-context-AMMO53S7.js → founder-context-J362DNU4.js} +2 -2
- package/dist/gateway/index.js +11 -11
- package/dist/{git-staleness-AJDPXQJF.js → git-staleness-BRDHTHNS.js} +2 -2
- package/dist/{git-task-sweep-EJ3HEH4Y.js → git-task-sweep-7GVUKDBW.js} +12 -12
- package/dist/{global-procedures-KV2SVX43.js → global-procedures-FNUKY2LF.js} +3 -3
- package/dist/{graph-auto-extract-HFXDXJC3.js → graph-auto-extract-AJZUV3PO.js} +2 -2
- package/dist/hooks/bug-report-worker.js +14 -14
- package/dist/hooks/codex-stop-task-finalizer.js +14 -14
- package/dist/hooks/commit-complete.js +14 -14
- package/dist/hooks/error-recall.js +6 -6
- package/dist/hooks/exe-heartbeat-hook.js +3 -3
- package/dist/hooks/ingest-worker.js +3 -3
- package/dist/hooks/ingest.js +6 -6
- package/dist/hooks/instructions-loaded.js +4 -4
- package/dist/hooks/manifest.json +20 -20
- package/dist/hooks/notification.js +4 -4
- package/dist/hooks/post-compact.js +13 -13
- package/dist/hooks/post-tool-combined.js +8 -8
- package/dist/hooks/pre-compact.js +17 -17
- package/dist/hooks/pre-tool-use.js +24 -22
- package/dist/hooks/prompt-submit.js +26 -26
- package/dist/hooks/session-end.js +22 -22
- package/dist/hooks/session-start.js +12 -12
- package/dist/hooks/stop.js +37 -41
- package/dist/hooks/subagent-stop.js +13 -13
- package/dist/hooks/summary-worker.js +20 -20
- package/dist/index.js +22 -22
- package/dist/{installer-XLP5MIRG.js → installer-2EKTDQZB.js} +5 -5
- package/dist/{installer-MWRZB3RT.js → installer-SC7CQBYY.js} +5 -5
- package/dist/{installer-2SY3BEHJ.js → installer-UEF44TWQ.js} +5 -5
- package/dist/lib/agent-config.js +7 -1
- package/dist/lib/cloud-sync.js +12 -12
- package/dist/lib/consolidation.js +5 -5
- package/dist/lib/database.js +2 -2
- package/dist/lib/db-daemon-client.js +3 -3
- package/dist/lib/db.js +2 -2
- package/dist/lib/device-registry.js +1 -1
- package/dist/lib/embedder.js +3 -3
- package/dist/lib/employee-templates.js +4 -4
- package/dist/lib/employees.js +2 -2
- package/dist/lib/exe-daemon-client.js +2 -2
- package/dist/lib/exe-daemon.js +51 -51
- package/dist/lib/hybrid-search.js +5 -5
- package/dist/lib/identity.js +2 -2
- package/dist/lib/license.js +8 -2
- package/dist/lib/messaging.js +12 -12
- package/dist/lib/registry-proxy.js +1 -1
- package/dist/lib/reminders.js +3 -3
- package/dist/lib/schedules.js +5 -5
- package/dist/lib/session-registry.js +4 -4
- package/dist/lib/skill-learning.js +6 -6
- package/dist/lib/status-brief.js +1 -1
- package/dist/lib/store.js +4 -4
- package/dist/lib/task-router.js +3 -3
- package/dist/lib/tasks.js +13 -13
- package/dist/lib/tmux-routing.js +11 -11
- package/dist/lib/token-spend.js +3 -3
- package/dist/{license-gate-PHJLO2G6.js → license-gate-YUUSIPJ7.js} +3 -3
- package/dist/license-sync-LX73IEBH.js +238 -0
- package/dist/mcp/register-tools.js +66 -66
- package/dist/mcp/server.js +70 -70
- 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 +15 -15
- package/dist/mcp/tools/deactivate-behavior.js +7 -7
- package/dist/mcp/tools/list-reminders.js +4 -4
- package/dist/mcp/tools/list-tasks.js +15 -15
- package/dist/mcp/tools/send-message.js +14 -14
- package/dist/mcp/tools/update-task.js +14 -14
- package/dist/{mcp-http-config-6Q7SYJFY.js → mcp-http-config-MBG5AQNH.js} +3 -3
- package/dist/{memory-cards-IG3K6T7M.js → memory-cards-MGZ4P3AA.js} +4 -4
- package/dist/{memory-graph-extractor-WZ77ITZ3.js → memory-graph-extractor-44P2ATID.js} +3 -3
- package/dist/{memory-poisoning-defense-YQW6WVPL.js → memory-poisoning-defense-3CYFKNLA.js} +2 -2
- package/dist/{memory-pressure-watchdog-JPCLJAXH.js → memory-pressure-watchdog-6PFLEOUO.js} +12 -12
- package/dist/{memory-queue-client-W24ZZ6ZF.js → memory-queue-client-BZD6MXA5.js} +3 -3
- package/dist/{memory-reflection-UGK2I2T7.js → memory-reflection-AYPJRPU7.js} +2 -2
- package/dist/{notifications-3MO6HVJM.js → notifications-BBQ23ORD.js} +11 -11
- package/dist/{orchestration-events-SKESCF4F.js → orchestration-events-O5P5NEKS.js} +3 -3
- package/dist/{orchestrator-SM65YFE2.js → orchestrator-SERM6FDY.js} +13 -13
- package/dist/{pipeline-router-UGCC5XSO.js → pipeline-router-T673WGL3.js} +3 -3
- package/dist/{plan-limits-RUCNKVRH.js → plan-limits-QWBN2EKH.js} +5 -5
- package/dist/{projection-worker-FBFQ232A.js → projection-worker-K6TILAZH.js} +2 -2
- package/dist/{prospective-memory-X4UQTUC2.js → prospective-memory-XRNRMEDL.js} +2 -2
- package/dist/{reranker-FIRW3XMW.js → reranker-3XC5UM4F.js} +1 -1
- package/dist/{retrieval-health-NWYJEIZS.js → retrieval-health-ULVVOIPL.js} +1 -1
- package/dist/{review-polling-HUJMBGUY.js → review-polling-5YGDPJUX.js} +12 -12
- package/dist/runtime/index.js +19 -19
- package/dist/{session-events-UNCFJIK7.js → session-events-D52HNUJK.js} +12 -12
- package/dist/{session-kill-telemetry-VQ4JWWTI.js → session-kill-telemetry-IBNCJSI7.js} +12 -12
- package/dist/{session-scope-OLSNZJ24.js → session-scope-5FWZ4AYR.js} +11 -11
- package/dist/{setup-wizard-X72EV5E2.js → setup-wizard-KVTLSSRD.js} +1 -1
- package/dist/{skill-refinement-OJRBB3LD.js → skill-refinement-YLIAY7V4.js} +2 -2
- package/dist/{stack-update-PK2OYYR3.js → stack-update-OWWGTYRB.js} +3 -3
- package/dist/{steward-gate-5ZWUVNGD.js → steward-gate-3ZITRYVH.js} +3 -3
- package/dist/{task-enforcement-VFFLCP3N.js → task-enforcement-L4YTDOOX.js} +11 -11
- package/dist/{task-scope-75JK27V5.js → task-scope-OIHLMQOQ.js} +11 -11
- package/dist/{tasks-crud-ADVXVR7D.js → tasks-crud-QUIIRWE3.js} +11 -11
- package/dist/{tasks-notify-NAA6IHHW.js → tasks-notify-ANYLB5GU.js} +12 -12
- package/dist/{tasks-review-5A3JJR6R.js → tasks-review-BWSCXFMB.js} +11 -11
- package/dist/{telemetry-upload-HSXQYSVJ.js → telemetry-upload-XLDBCD7B.js} +7 -7
- package/dist/{token-budget-GD2VU7N4.js → token-budget-OQCLPV3A.js} +3 -3
- package/dist/{tool-capability-index-KA2HQ7A4.js → tool-capability-index-3UWKZZED.js} +1 -1
- package/dist/{tool-telemetry-UQY7GDGE.js → tool-telemetry-AQTFWOWG.js} +1 -1
- package/dist/tui/App.js +19 -19
- package/dist/{tui-data-VYSH7F2K.js → tui-data-3Y5L5LJB.js} +11 -11
- package/dist/{worker-gate-DRSX2SOW.js → worker-gate-WJS2MFNA.js} +1 -1
- package/dist/{workflow-engine-WFDIVYWP.js → workflow-engine-EPPZ226V.js} +2 -2
- package/dist/{worktree-LWVPNZ4L.js → worktree-OYGDGJP7.js} +4 -4
- package/dist/{worktree-sweep-3IZLGYYH.js → worktree-sweep-KV4H4766.js} +5 -5
- package/package.json +1 -1
- package/release-notes.json +47 -44
- /package/dist/{chunk-3YKA5BKT.js → chunk-72LWCZTJ.js} +0 -0
- /package/dist/{chunk-7NG77I33.js → chunk-DQJ3WZRK.js} +0 -0
- /package/dist/{chunk-HJSMIHEY.js → chunk-DY3J6GQO.js} +0 -0
- /package/dist/{chunk-XRJ3EFEF.js → chunk-IZY6V4FI.js} +0 -0
- /package/dist/{chunk-S6N7DLKL.js → chunk-Q5YKWFVO.js} +0 -0
- /package/dist/{chunk-4AHV3QBI.js → chunk-QTEHH4LG.js} +0 -0
- /package/dist/{chunk-UWVAG35C.js → chunk-RRQI5PSJ.js} +0 -0
- /package/dist/{chunk-NOPDNOGQ.js → chunk-SIJSFULW.js} +0 -0
- /package/dist/{chunk-SOIHGU5I.js → chunk-SJZT66LM.js} +0 -0
- /package/dist/{chunk-3EZQSPTG.js → chunk-WXRVHXVP.js} +0 -0
- /package/dist/{chunk-6DTSAEDS.js → chunk-YIFZZYQD.js} +0 -0
- /package/dist/{chunk-53ARJV2L.js → chunk-ZU6767WK.js} +0 -0
- /package/dist/{core-memory-5HNI2YLS.js → core-memory-DARTILJG.js} +0 -0
- /package/dist/{entity-boost-AQBUEMJK.js → entity-boost-VR5YOQCT.js} +0 -0
- /package/dist/{message-queue-client-JGOK7POW.js → message-queue-client-HVFR67QH.js} +0 -0
- /package/dist/{oauth-server-NZTPAFQ7.js → oauth-server-UQHCFVHT.js} +0 -0
- /package/dist/{project-boot-3UP6ETJY.js → project-boot-22ZZL2GE.js} +0 -0
- /package/dist/{wiki-acl-4W4CSCFO.js → wiki-acl-EZMGL6KW.js} +0 -0
|
@@ -2,10 +2,10 @@ import {
|
|
|
2
2
|
exportOrchestration,
|
|
3
3
|
importOrchestration,
|
|
4
4
|
validatePackage
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-KXP3CUTL.js";
|
|
6
6
|
import {
|
|
7
7
|
runDriftProbes
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-6N4LYEDI.js";
|
|
9
9
|
import {
|
|
10
10
|
DEFAULT_LIST_LIMIT,
|
|
11
11
|
MAX_IMPORTANCE,
|
|
@@ -14,7 +14,7 @@ import {
|
|
|
14
14
|
ingestDocument,
|
|
15
15
|
listDocumentsByWorkspace,
|
|
16
16
|
updateChunksImportance
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-QNUHDEPI.js";
|
|
18
18
|
import {
|
|
19
19
|
analyzeBlastRadius,
|
|
20
20
|
buildCodeContextIndex,
|
|
@@ -23,17 +23,17 @@ import {
|
|
|
23
23
|
searchCodeContext,
|
|
24
24
|
searchCodeContextSemantic,
|
|
25
25
|
traceCodeSymbol
|
|
26
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-OI63OVCR.js";
|
|
27
27
|
import {
|
|
28
28
|
StewardGate
|
|
29
|
-
} from "./chunk-
|
|
29
|
+
} from "./chunk-7CUF27OT.js";
|
|
30
30
|
import {
|
|
31
31
|
DreamingEngine
|
|
32
|
-
} from "./chunk-
|
|
32
|
+
} from "./chunk-NAHAOFTY.js";
|
|
33
33
|
import {
|
|
34
34
|
isRerankerAvailable,
|
|
35
35
|
rerankWithScores
|
|
36
|
-
} from "./chunk-
|
|
36
|
+
} from "./chunk-RRQI5PSJ.js";
|
|
37
37
|
import {
|
|
38
38
|
getEntityByName,
|
|
39
39
|
getEntityNeighbors,
|
|
@@ -42,93 +42,93 @@ import {
|
|
|
42
42
|
getRelationships,
|
|
43
43
|
searchEntities
|
|
44
44
|
} from "./chunk-CRCB5S7I.js";
|
|
45
|
+
import {
|
|
46
|
+
AUTO_WAKE_MAX_RETRIES
|
|
47
|
+
} from "./chunk-AZL3EUR3.js";
|
|
45
48
|
import {
|
|
46
49
|
listRecentSessionEvents
|
|
47
|
-
} from "./chunk-
|
|
50
|
+
} from "./chunk-JXEMAB4M.js";
|
|
48
51
|
import {
|
|
49
52
|
DEFAULT_EXPLORE_DURATION_MS,
|
|
50
53
|
getPlayMode,
|
|
51
54
|
listExploreSessions,
|
|
52
55
|
setPlayMode
|
|
53
56
|
} from "./chunk-PVYR4FCQ.js";
|
|
57
|
+
import {
|
|
58
|
+
getToolUsageStats
|
|
59
|
+
} from "./chunk-Q5YKWFVO.js";
|
|
54
60
|
import {
|
|
55
61
|
getToolCapabilityIndex
|
|
56
|
-
} from "./chunk-
|
|
62
|
+
} from "./chunk-SJZT66LM.js";
|
|
57
63
|
import {
|
|
58
64
|
isToolAllowed,
|
|
59
65
|
isToolAllowedForPlan
|
|
60
66
|
} from "./chunk-E6ORBQHP.js";
|
|
61
|
-
import {
|
|
62
|
-
AUTO_WAKE_MAX_RETRIES
|
|
63
|
-
} from "./chunk-VUZRAEF3.js";
|
|
64
67
|
import {
|
|
65
68
|
getCachedLicenseGate,
|
|
66
69
|
refreshLicenseGate
|
|
67
|
-
} from "./chunk-
|
|
68
|
-
import {
|
|
69
|
-
getToolUsageStats
|
|
70
|
-
} from "./chunk-S6N7DLKL.js";
|
|
70
|
+
} from "./chunk-6XM6PZXQ.js";
|
|
71
71
|
import {
|
|
72
72
|
loadOrchestrationPhase,
|
|
73
73
|
setOrchestrationPhase
|
|
74
74
|
} from "./chunk-32SXNM3G.js";
|
|
75
75
|
import {
|
|
76
76
|
createOrRefreshResumeTask
|
|
77
|
-
} from "./chunk-
|
|
77
|
+
} from "./chunk-HIOO7DZ2.js";
|
|
78
78
|
import {
|
|
79
79
|
registerUpdateTask
|
|
80
|
-
} from "./chunk-
|
|
80
|
+
} from "./chunk-XP53WEXP.js";
|
|
81
81
|
import {
|
|
82
82
|
registerCreateReminder
|
|
83
|
-
} from "./chunk-
|
|
83
|
+
} from "./chunk-NYFPFOYM.js";
|
|
84
84
|
import {
|
|
85
85
|
registerListReminders
|
|
86
|
-
} from "./chunk-
|
|
86
|
+
} from "./chunk-6SXJZHRJ.js";
|
|
87
87
|
import {
|
|
88
88
|
registerCompleteReminder
|
|
89
|
-
} from "./chunk-
|
|
89
|
+
} from "./chunk-WFHYAKEU.js";
|
|
90
90
|
import {
|
|
91
91
|
registerDeactivateBehavior
|
|
92
|
-
} from "./chunk-
|
|
92
|
+
} from "./chunk-E32KARET.js";
|
|
93
93
|
import {
|
|
94
94
|
completeReminder,
|
|
95
95
|
createReminder,
|
|
96
96
|
listReminders
|
|
97
|
-
} from "./chunk-
|
|
97
|
+
} from "./chunk-EVUXF2G4.js";
|
|
98
98
|
import {
|
|
99
99
|
registerSendMessage
|
|
100
|
-
} from "./chunk-
|
|
100
|
+
} from "./chunk-WCCR5IFR.js";
|
|
101
101
|
import {
|
|
102
102
|
registerCreateTask
|
|
103
|
-
} from "./chunk-
|
|
103
|
+
} from "./chunk-6IBUQBMY.js";
|
|
104
104
|
import {
|
|
105
105
|
registerListTasks
|
|
106
|
-
} from "./chunk-
|
|
106
|
+
} from "./chunk-DGFIXJ4S.js";
|
|
107
107
|
import {
|
|
108
108
|
TOKENS_PER_IDLE_MINUTE,
|
|
109
109
|
countKillsSince,
|
|
110
110
|
sumTokensSavedSince
|
|
111
|
-
} from "./chunk-
|
|
111
|
+
} from "./chunk-G5TP2D2U.js";
|
|
112
112
|
import {
|
|
113
113
|
registerImportConversations
|
|
114
|
-
} from "./chunk-
|
|
114
|
+
} from "./chunk-LB77CSLO.js";
|
|
115
115
|
import {
|
|
116
116
|
createSchedule,
|
|
117
117
|
parseHumanCron
|
|
118
|
-
} from "./chunk-
|
|
118
|
+
} from "./chunk-6UQRJCKK.js";
|
|
119
119
|
import {
|
|
120
120
|
status
|
|
121
|
-
} from "./chunk-
|
|
121
|
+
} from "./chunk-WSYKLS2Y.js";
|
|
122
122
|
import {
|
|
123
123
|
getAgentSpend
|
|
124
|
-
} from "./chunk-
|
|
124
|
+
} from "./chunk-VSXGFHJY.js";
|
|
125
125
|
import {
|
|
126
126
|
exportGraphHTML,
|
|
127
127
|
generateGraphReport
|
|
128
128
|
} from "./chunk-3OEVDGIY.js";
|
|
129
129
|
import {
|
|
130
130
|
runHealthCheck
|
|
131
|
-
} from "./chunk-
|
|
131
|
+
} from "./chunk-SENJA7BZ.js";
|
|
132
132
|
import {
|
|
133
133
|
checkCpuStealSync
|
|
134
134
|
} from "./chunk-SSC7EKY2.js";
|
|
@@ -140,16 +140,16 @@ import {
|
|
|
140
140
|
formatReport,
|
|
141
141
|
runAudit,
|
|
142
142
|
shouldFixShards
|
|
143
|
-
} from "./chunk-
|
|
143
|
+
} from "./chunk-ROMB2HH4.js";
|
|
144
144
|
import {
|
|
145
145
|
formatDegradations,
|
|
146
146
|
getRetrievalHealth
|
|
147
|
-
} from "./chunk-
|
|
147
|
+
} from "./chunk-QTEHH4LG.js";
|
|
148
148
|
import {
|
|
149
149
|
hasFailures,
|
|
150
150
|
runHealth,
|
|
151
151
|
runTest
|
|
152
|
-
} from "./chunk-
|
|
152
|
+
} from "./chunk-V2ESQU3S.js";
|
|
153
153
|
import {
|
|
154
154
|
isSupportReportSentStatus,
|
|
155
155
|
markSupportReportSent
|
|
@@ -160,12 +160,12 @@ import {
|
|
|
160
160
|
} from "./chunk-2XZ6X3PJ.js";
|
|
161
161
|
import {
|
|
162
162
|
renderClientCOOTemplate
|
|
163
|
-
} from "./chunk-
|
|
163
|
+
} from "./chunk-LOE2N23P.js";
|
|
164
164
|
import {
|
|
165
165
|
deactivateGlobalProcedure,
|
|
166
166
|
loadGlobalProcedures,
|
|
167
167
|
storeGlobalProcedure
|
|
168
|
-
} from "./chunk-
|
|
168
|
+
} from "./chunk-ORC5AO7E.js";
|
|
169
169
|
import {
|
|
170
170
|
PLATFORM_PROCEDURES
|
|
171
171
|
} from "./chunk-DDKDN4HV.js";
|
|
@@ -174,14 +174,14 @@ import {
|
|
|
174
174
|
cloudSync,
|
|
175
175
|
getCloudReuploadRequired,
|
|
176
176
|
markCloudReuploadRequired
|
|
177
|
-
} from "./chunk-
|
|
177
|
+
} from "./chunk-LCZ55G5G.js";
|
|
178
178
|
import {
|
|
179
179
|
createARecord
|
|
180
180
|
} from "./chunk-X2Z5GT3V.js";
|
|
181
181
|
import {
|
|
182
182
|
findSimilarTrajectories,
|
|
183
183
|
hashSignature
|
|
184
|
-
} from "./chunk-
|
|
184
|
+
} from "./chunk-TI6YX3L5.js";
|
|
185
185
|
import {
|
|
186
186
|
GHOST_BEHAVIOR_SQL,
|
|
187
187
|
deactivateBehavior,
|
|
@@ -190,20 +190,20 @@ import {
|
|
|
190
190
|
reactivateBehavior,
|
|
191
191
|
storeBehavior,
|
|
192
192
|
storeReflexBehavior
|
|
193
|
-
} from "./chunk-
|
|
193
|
+
} from "./chunk-FANIBYUO.js";
|
|
194
194
|
import {
|
|
195
195
|
countUnconsolidated,
|
|
196
196
|
groupMemories,
|
|
197
197
|
runConsolidation,
|
|
198
198
|
selectUnconsolidated
|
|
199
|
-
} from "./chunk-
|
|
199
|
+
} from "./chunk-XC7C3GQ2.js";
|
|
200
200
|
import {
|
|
201
201
|
entityId,
|
|
202
202
|
mergeEntities
|
|
203
203
|
} from "./chunk-7UMCQQWS.js";
|
|
204
204
|
import {
|
|
205
205
|
embed
|
|
206
|
-
} from "./chunk-
|
|
206
|
+
} from "./chunk-CHSRSESS.js";
|
|
207
207
|
import {
|
|
208
208
|
detectDcrIncompatibleConnectorsFromDisk,
|
|
209
209
|
detectExternalMcpFailures,
|
|
@@ -213,20 +213,20 @@ import {
|
|
|
213
213
|
} from "./chunk-CWQAXO3O.js";
|
|
214
214
|
import {
|
|
215
215
|
updateTask
|
|
216
|
-
} from "./chunk-
|
|
216
|
+
} from "./chunk-7SDS5VCL.js";
|
|
217
217
|
import {
|
|
218
218
|
fastDbInit
|
|
219
|
-
} from "./chunk-
|
|
219
|
+
} from "./chunk-ZU6767WK.js";
|
|
220
220
|
import {
|
|
221
221
|
MAX_CONCURRENT_WORKERS
|
|
222
|
-
} from "./chunk-
|
|
222
|
+
} from "./chunk-TKBWBHFV.js";
|
|
223
223
|
import {
|
|
224
224
|
readDaemonToken
|
|
225
225
|
} from "./chunk-3NGZ4PL7.js";
|
|
226
226
|
import {
|
|
227
227
|
hybridSearch,
|
|
228
228
|
recentRecords
|
|
229
|
-
} from "./chunk-
|
|
229
|
+
} from "./chunk-4Z47UMMM.js";
|
|
230
230
|
import {
|
|
231
231
|
buildFtsMatch,
|
|
232
232
|
tokenizeForFts
|
|
@@ -236,10 +236,10 @@ import {
|
|
|
236
236
|
flushBatch,
|
|
237
237
|
initStore,
|
|
238
238
|
writeMemory
|
|
239
|
-
} from "./chunk-
|
|
239
|
+
} from "./chunk-H2SD2EA7.js";
|
|
240
240
|
import {
|
|
241
241
|
getActiveAgent
|
|
242
|
-
} from "./chunk-
|
|
242
|
+
} from "./chunk-EOPSIIEH.js";
|
|
243
243
|
import {
|
|
244
244
|
getMySession,
|
|
245
245
|
resolveExeSession,
|
|
@@ -247,13 +247,13 @@ import {
|
|
|
247
247
|
sessionScopeFilter,
|
|
248
248
|
updateTaskStatus,
|
|
249
249
|
writeCheckpoint
|
|
250
|
-
} from "./chunk-
|
|
250
|
+
} from "./chunk-PLBDXCYZ.js";
|
|
251
251
|
import {
|
|
252
252
|
listSessions
|
|
253
|
-
} from "./chunk-
|
|
253
|
+
} from "./chunk-ABGDTMKC.js";
|
|
254
254
|
import {
|
|
255
255
|
recordOrchestrationEventBestEffort
|
|
256
|
-
} from "./chunk-
|
|
256
|
+
} from "./chunk-HV5CUDOE.js";
|
|
257
257
|
import {
|
|
258
258
|
DEFAULT_MODELS,
|
|
259
259
|
KNOWN_RUNTIMES,
|
|
@@ -261,7 +261,7 @@ import {
|
|
|
261
261
|
getAgentRuntime,
|
|
262
262
|
loadAgentConfig,
|
|
263
263
|
setAgentRuntime
|
|
264
|
-
} from "./chunk-
|
|
264
|
+
} from "./chunk-QVFJCFNM.js";
|
|
265
265
|
import {
|
|
266
266
|
DEFAULT_RUNTIME
|
|
267
267
|
} from "./chunk-NGP6LSV2.js";
|
|
@@ -270,7 +270,7 @@ import {
|
|
|
270
270
|
assertEmployeeLimit,
|
|
271
271
|
assertFeature,
|
|
272
272
|
assertMemoryLimit
|
|
273
|
-
} from "./chunk-
|
|
273
|
+
} from "./chunk-EPBB2OD3.js";
|
|
274
274
|
import {
|
|
275
275
|
getProjectName
|
|
276
276
|
} from "./chunk-OPU3NYOO.js";
|
|
@@ -286,7 +286,7 @@ import {
|
|
|
286
286
|
isScheduledTrigger,
|
|
287
287
|
loadTriggers,
|
|
288
288
|
sanitizeParam
|
|
289
|
-
} from "./chunk-
|
|
289
|
+
} from "./chunk-IZY6V4FI.js";
|
|
290
290
|
import {
|
|
291
291
|
pushConversationToCRM
|
|
292
292
|
} from "./chunk-ONKIWA3R.js";
|
|
@@ -307,7 +307,7 @@ import {
|
|
|
307
307
|
loadEmployeesSync,
|
|
308
308
|
saveEmployees,
|
|
309
309
|
updateIdentity
|
|
310
|
-
} from "./chunk-
|
|
310
|
+
} from "./chunk-XLNF3CIO.js";
|
|
311
311
|
import {
|
|
312
312
|
getEventLoopLagMs,
|
|
313
313
|
isDaemonAlive,
|
|
@@ -326,9 +326,10 @@ import {
|
|
|
326
326
|
loadDeviceId,
|
|
327
327
|
loadLicense,
|
|
328
328
|
readCachedLicenseToken,
|
|
329
|
+
refreshLicense,
|
|
329
330
|
saveLicense,
|
|
330
331
|
validateLicense
|
|
331
|
-
} from "./chunk-
|
|
332
|
+
} from "./chunk-VY7345RO.js";
|
|
332
333
|
import {
|
|
333
334
|
EXE_AI_DIR,
|
|
334
335
|
loadConfig
|
|
@@ -512,7 +513,7 @@ function registerRecallMyMemory(server) {
|
|
|
512
513
|
}) => {
|
|
513
514
|
try {
|
|
514
515
|
if (!isInitialized()) {
|
|
515
|
-
const { fastDbInit: fastDbInit2 } = await import("./fast-db-init-
|
|
516
|
+
const { fastDbInit: fastDbInit2 } = await import("./fast-db-init-TLYUWCDE.js");
|
|
516
517
|
await fastDbInit2();
|
|
517
518
|
}
|
|
518
519
|
if (!recent && !query) {
|
|
@@ -559,7 +560,7 @@ function registerRecallMyMemory(server) {
|
|
|
559
560
|
let federatedCount = 0;
|
|
560
561
|
if (!recent && query && results.length < FEDERATION_THRESHOLD) {
|
|
561
562
|
try {
|
|
562
|
-
const { searchCodeContextSemantic: searchCodeContextSemantic2 } = await import("./code-context-index-
|
|
563
|
+
const { searchCodeContextSemantic: searchCodeContextSemantic2 } = await import("./code-context-index-6YQ3DGCN.js");
|
|
563
564
|
const codeResults = await Promise.race([
|
|
564
565
|
searchCodeContextSemantic2(query, { limit: 5 }),
|
|
565
566
|
new Promise((_, rej) => setTimeout(() => rej(new Error("timeout")), 2e3))
|
|
@@ -797,7 +798,7 @@ function registerStoreMemory(server) {
|
|
|
797
798
|
}
|
|
798
799
|
const { agentId, agentRole } = getActiveAgent();
|
|
799
800
|
if (kind === "prospective") {
|
|
800
|
-
const { createProspectiveMemory } = await import("./prospective-memory-
|
|
801
|
+
const { createProspectiveMemory } = await import("./prospective-memory-XRNRMEDL.js");
|
|
801
802
|
let sessionScope = null;
|
|
802
803
|
try {
|
|
803
804
|
const { resolveExeSession: resolveExeSession2 } = await import("./lib/tmux-routing.js");
|
|
@@ -1783,7 +1784,7 @@ async function handleSupersede(input) {
|
|
|
1783
1784
|
}
|
|
1784
1785
|
try {
|
|
1785
1786
|
const { getClient: getClient2 } = await import("./lib/database.js");
|
|
1786
|
-
const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-
|
|
1787
|
+
const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-SHM4QSRJ.js");
|
|
1787
1788
|
const { writeMemory: writeMemory2, flushBatch: flushBatch2 } = await import("./lib/store.js");
|
|
1788
1789
|
const { randomUUID: randomUUID2 } = await import("crypto");
|
|
1789
1790
|
const client = getClient2();
|
|
@@ -1836,7 +1837,7 @@ New memory id: ${newId}`
|
|
|
1836
1837
|
}
|
|
1837
1838
|
async function handleResonanceQuery(input) {
|
|
1838
1839
|
try {
|
|
1839
|
-
const { getHotPairs, getCoActivationNeighbors } = await import("./co-activation-
|
|
1840
|
+
const { getHotPairs, getCoActivationNeighbors } = await import("./co-activation-K44LGZ7A.js");
|
|
1840
1841
|
const subAction = input.resonance_action ?? "hot_pairs";
|
|
1841
1842
|
const limit = input.limit ?? 20;
|
|
1842
1843
|
if (subAction === "hot_pairs") {
|
|
@@ -1931,7 +1932,7 @@ function registerMemory(server) {
|
|
|
1931
1932
|
return handleResonanceQuery(input);
|
|
1932
1933
|
}
|
|
1933
1934
|
if (action === "update_working_memory" || action === "get_working_memory") {
|
|
1934
|
-
const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-
|
|
1935
|
+
const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-SHM4QSRJ.js");
|
|
1935
1936
|
const { agentId } = getActiveAgent2();
|
|
1936
1937
|
const { readWorkingMemoryWithMeta, writeWorkingMemory, WORKING_MEMORY_MAX_BYTES } = await import("./working-memory-PY4AG577.js");
|
|
1937
1938
|
if (action === "get_working_memory") {
|
|
@@ -1957,9 +1958,9 @@ function registerMemory(server) {
|
|
|
1957
1958
|
}
|
|
1958
1959
|
}
|
|
1959
1960
|
if (action === "core_get" || action === "core_set" || action === "core_delete") {
|
|
1960
|
-
const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-
|
|
1961
|
+
const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-SHM4QSRJ.js");
|
|
1961
1962
|
const { agentId } = getActiveAgent2();
|
|
1962
|
-
const { getCoreMemory, setCoreMemory, deleteCoreMemory, formatCoreMemoryBlock } = await import("./core-memory-
|
|
1963
|
+
const { getCoreMemory, setCoreMemory, deleteCoreMemory, formatCoreMemoryBlock } = await import("./core-memory-DARTILJG.js");
|
|
1963
1964
|
if (action === "core_get") {
|
|
1964
1965
|
const entries = await getCoreMemory(agentId);
|
|
1965
1966
|
const block = formatCoreMemoryBlock(entries);
|
|
@@ -2011,12 +2012,12 @@ function registerMemory(server) {
|
|
|
2011
2012
|
if (!storeTrigger || !storeTriggerAction) {
|
|
2012
2013
|
return errorResult('memory action "store" with kind="reflex" requires trigger and trigger_action fields');
|
|
2013
2014
|
}
|
|
2014
|
-
const { formatReflexContent, storeReflexBehavior: storeReflexBehavior2 } = await import("./behaviors-
|
|
2015
|
+
const { formatReflexContent, storeReflexBehavior: storeReflexBehavior2 } = await import("./behaviors-J47D342W.js");
|
|
2015
2016
|
const reflexText = formatReflexContent(storeTrigger, storeTriggerAction);
|
|
2016
2017
|
legacyArgs.text ??= reflexText;
|
|
2017
2018
|
legacyArgs.query ??= reflexText;
|
|
2018
2019
|
try {
|
|
2019
|
-
const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-
|
|
2020
|
+
const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-SHM4QSRJ.js");
|
|
2020
2021
|
const { getProjectName: getProjectName2 } = await import("./project-name-EWG5KAZP.js");
|
|
2021
2022
|
const agent = getActiveAgent2();
|
|
2022
2023
|
const behaviorId = await storeReflexBehavior2({
|
|
@@ -2372,7 +2373,7 @@ function registerCloseTask(server) {
|
|
|
2372
2373
|
async ({ task_id, result: result3, status: status2 }) => {
|
|
2373
2374
|
const agent = getActiveAgent();
|
|
2374
2375
|
try {
|
|
2375
|
-
const { StewardGate: StewardGate2 } = await import("./steward-gate-
|
|
2376
|
+
const { StewardGate: StewardGate2 } = await import("./steward-gate-3ZITRYVH.js");
|
|
2376
2377
|
const steward = new StewardGate2();
|
|
2377
2378
|
const gateDecision = await steward.checkAuthority(agent.agentId || "unknown", "close_task", task_id);
|
|
2378
2379
|
if (!gateDecision.allowed) {
|
|
@@ -2553,8 +2554,8 @@ ${preflightWarnings.join("\n")}`;
|
|
|
2553
2554
|
if (mergeNote) text5 += mergeNote;
|
|
2554
2555
|
if (status2 === "closed" && assignee) {
|
|
2555
2556
|
try {
|
|
2556
|
-
const { cleanupAgentWorktree } = await import("./worktree-sweep-
|
|
2557
|
-
const { getGitRoot } = await import("./worktree-
|
|
2557
|
+
const { cleanupAgentWorktree } = await import("./worktree-sweep-KV4H4766.js");
|
|
2558
|
+
const { getGitRoot } = await import("./worktree-OYGDGJP7.js");
|
|
2558
2559
|
const repoRoot = getGitRoot(baseDir);
|
|
2559
2560
|
if (repoRoot) {
|
|
2560
2561
|
const cleanupNotes = cleanupAgentWorktree(repoRoot, assignee);
|
|
@@ -2603,8 +2604,8 @@ ${preflightWarnings.join("\n")}`;
|
|
|
2603
2604
|
} catch {
|
|
2604
2605
|
}
|
|
2605
2606
|
try {
|
|
2606
|
-
const { cleanupAgentWorktree } = await import("./worktree-sweep-
|
|
2607
|
-
const { getGitRoot } = await import("./worktree-
|
|
2607
|
+
const { cleanupAgentWorktree } = await import("./worktree-sweep-KV4H4766.js");
|
|
2608
|
+
const { getGitRoot } = await import("./worktree-OYGDGJP7.js");
|
|
2608
2609
|
const root = getGitRoot(_baseDir);
|
|
2609
2610
|
if (root) {
|
|
2610
2611
|
const notes = cleanupAgentWorktree(root, _assignee);
|
|
@@ -2707,7 +2708,7 @@ function registerResumeEmployee(server) {
|
|
|
2707
2708
|
},
|
|
2708
2709
|
async ({ agent_id, project_name }) => {
|
|
2709
2710
|
if (!isInitialized()) {
|
|
2710
|
-
const { fastDbInit: fastDbInit2 } = await import("./fast-db-init-
|
|
2711
|
+
const { fastDbInit: fastDbInit2 } = await import("./fast-db-init-TLYUWCDE.js");
|
|
2711
2712
|
await fastDbInit2();
|
|
2712
2713
|
}
|
|
2713
2714
|
const client = getClient();
|
|
@@ -2733,7 +2734,7 @@ function registerResumeEmployee(server) {
|
|
|
2733
2734
|
};
|
|
2734
2735
|
}
|
|
2735
2736
|
try {
|
|
2736
|
-
const { isTmuxSessionAlive } = await import("./tasks-crud-
|
|
2737
|
+
const { isTmuxSessionAlive } = await import("./tasks-crud-QUIIRWE3.js");
|
|
2737
2738
|
const now = (/* @__PURE__ */ new Date()).toISOString();
|
|
2738
2739
|
for (const row of openTasks.rows) {
|
|
2739
2740
|
const status2 = String(row.status);
|
|
@@ -2761,7 +2762,7 @@ function registerResumeEmployee(server) {
|
|
|
2761
2762
|
}
|
|
2762
2763
|
let checkpointInfo = "";
|
|
2763
2764
|
try {
|
|
2764
|
-
const { readLatestCheckpoint } = await import("./tasks-crud-
|
|
2765
|
+
const { readLatestCheckpoint } = await import("./tasks-crud-QUIIRWE3.js");
|
|
2765
2766
|
const checkpoint = await readLatestCheckpoint(agent_id);
|
|
2766
2767
|
if (checkpoint) {
|
|
2767
2768
|
const filesTouched = checkpoint.files_touched?.length > 0 ? checkpoint.files_touched.join(", ") : "none";
|
|
@@ -3160,7 +3161,7 @@ function registerTask(server) {
|
|
|
3160
3161
|
const missing2 = missingRequiredFields2(args, REQUIRED_FIELDS2.create_group);
|
|
3161
3162
|
if (missing2.length > 0) return errorResult2(`task action "create_group" missing required field(s): ${missing2.join(", ")}`);
|
|
3162
3163
|
try {
|
|
3163
|
-
const { createTaskGroup } = await import("./tasks-crud-
|
|
3164
|
+
const { createTaskGroup } = await import("./tasks-crud-QUIIRWE3.js");
|
|
3164
3165
|
const group = await createTaskGroup({
|
|
3165
3166
|
title: args.title,
|
|
3166
3167
|
coordinator: args.coordinator,
|
|
@@ -3179,7 +3180,7 @@ function registerTask(server) {
|
|
|
3179
3180
|
const missing2 = missingRequiredFields2(args, REQUIRED_FIELDS2.group_status);
|
|
3180
3181
|
if (missing2.length > 0) return errorResult2(`task action "group_status" missing required field(s): ${missing2.join(", ")}`);
|
|
3181
3182
|
try {
|
|
3182
|
-
const { getGroupStatus } = await import("./tasks-crud-
|
|
3183
|
+
const { getGroupStatus } = await import("./tasks-crud-QUIIRWE3.js");
|
|
3183
3184
|
const status2 = await getGroupStatus(args.group_id);
|
|
3184
3185
|
return { content: [{ type: "text", text: JSON.stringify(status2, null, 2) }] };
|
|
3185
3186
|
} catch (err) {
|
|
@@ -3191,7 +3192,7 @@ function registerTask(server) {
|
|
|
3191
3192
|
const missing2 = missingRequiredFields2(args, REQUIRED_FIELDS2.group_results);
|
|
3192
3193
|
if (missing2.length > 0) return errorResult2(`task action "group_results" missing required field(s): ${missing2.join(", ")}`);
|
|
3193
3194
|
try {
|
|
3194
|
-
const { getGroupResults } = await import("./tasks-crud-
|
|
3195
|
+
const { getGroupResults } = await import("./tasks-crud-QUIIRWE3.js");
|
|
3195
3196
|
const results = await getGroupResults(args.group_id);
|
|
3196
3197
|
return { content: [{ type: "text", text: JSON.stringify(results, null, 2) }] };
|
|
3197
3198
|
} catch (err) {
|
|
@@ -3442,7 +3443,7 @@ function registerMessage(server) {
|
|
|
3442
3443
|
if (msgType && msgPayload) {
|
|
3443
3444
|
try {
|
|
3444
3445
|
const { buildTypedMessage, serializeMessage } = await import("./typed-messages-TKDGVPHS.js");
|
|
3445
|
-
const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-
|
|
3446
|
+
const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-SHM4QSRJ.js");
|
|
3446
3447
|
const { sendMessage } = await import("./lib/messaging.js");
|
|
3447
3448
|
const { agentId } = getActiveAgent2();
|
|
3448
3449
|
const envelope = buildTypedMessage({
|
|
@@ -3476,7 +3477,7 @@ ID: ${msg.id}`
|
|
|
3476
3477
|
if (action === "read") {
|
|
3477
3478
|
try {
|
|
3478
3479
|
const { getPendingMessages } = await import("./lib/messaging.js");
|
|
3479
|
-
const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-
|
|
3480
|
+
const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-SHM4QSRJ.js");
|
|
3480
3481
|
const { agentId } = getActiveAgent2();
|
|
3481
3482
|
const messages = await getPendingMessages(agentId);
|
|
3482
3483
|
if (messages.length === 0) {
|
|
@@ -3839,8 +3840,8 @@ function registerIngestDocument(server) {
|
|
|
3839
3840
|
},
|
|
3840
3841
|
async (input) => {
|
|
3841
3842
|
try {
|
|
3842
|
-
const { assertFeature: assertFeature2 } = await import("./plan-limits-
|
|
3843
|
-
const { assertMemoryLimit: assertMemoryLimit2 } = await import("./plan-limits-
|
|
3843
|
+
const { assertFeature: assertFeature2 } = await import("./plan-limits-QWBN2EKH.js");
|
|
3844
|
+
const { assertMemoryLimit: assertMemoryLimit2 } = await import("./plan-limits-QWBN2EKH.js");
|
|
3844
3845
|
await assertFeature2("wiki");
|
|
3845
3846
|
await assertMemoryLimit2();
|
|
3846
3847
|
const result3 = await ingestDocument(input);
|
|
@@ -3911,8 +3912,8 @@ function registerPurgeDocument(server) {
|
|
|
3911
3912
|
},
|
|
3912
3913
|
async ({ document_id }) => {
|
|
3913
3914
|
try {
|
|
3914
|
-
const { StewardGate: StewardGate2 } = await import("./steward-gate-
|
|
3915
|
-
const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-
|
|
3915
|
+
const { StewardGate: StewardGate2 } = await import("./steward-gate-3ZITRYVH.js");
|
|
3916
|
+
const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-SHM4QSRJ.js");
|
|
3916
3917
|
const steward = new StewardGate2();
|
|
3917
3918
|
const agent = getActiveAgent2();
|
|
3918
3919
|
const gateDecision = await steward.checkAuthority(agent.agentId || "unknown", "purge_document", document_id);
|
|
@@ -4082,7 +4083,7 @@ function registerDocument(server) {
|
|
|
4082
4083
|
const { action: _action, ...legacyArgs } = input;
|
|
4083
4084
|
if (action === "list" && (legacyArgs.workspace_id === void 0 || legacyArgs.workspace_id === null || legacyArgs.workspace_id === "")) {
|
|
4084
4085
|
try {
|
|
4085
|
-
const { resolveDefaultWorkspaceId, listWorkspaces } = await import("./documents-
|
|
4086
|
+
const { resolveDefaultWorkspaceId, listWorkspaces } = await import("./documents-7BFXA6V3.js");
|
|
4086
4087
|
const defaultId = await resolveDefaultWorkspaceId();
|
|
4087
4088
|
if (defaultId) {
|
|
4088
4089
|
legacyArgs.workspace_id = defaultId;
|
|
@@ -5109,7 +5110,7 @@ async function handleTrigger(limit) {
|
|
|
5109
5110
|
if (rows.rows.length === 0) {
|
|
5110
5111
|
return text3("No conversations found to re-process.");
|
|
5111
5112
|
}
|
|
5112
|
-
const { ingest } = await import("./pipeline-router-
|
|
5113
|
+
const { ingest } = await import("./pipeline-router-T673WGL3.js");
|
|
5113
5114
|
const results = [];
|
|
5114
5115
|
for (const row of rows.rows) {
|
|
5115
5116
|
const r = row;
|
|
@@ -5740,8 +5741,8 @@ function registerMergeEntities(server) {
|
|
|
5740
5741
|
},
|
|
5741
5742
|
async ({ source_name, source_type, target_name, target_type }) => {
|
|
5742
5743
|
try {
|
|
5743
|
-
const { StewardGate: StewardGate2 } = await import("./steward-gate-
|
|
5744
|
-
const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-
|
|
5744
|
+
const { StewardGate: StewardGate2 } = await import("./steward-gate-3ZITRYVH.js");
|
|
5745
|
+
const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-SHM4QSRJ.js");
|
|
5745
5746
|
const steward = new StewardGate2();
|
|
5746
5747
|
const agent = getActiveAgent2();
|
|
5747
5748
|
const gateDecision = await steward.checkAuthority(agent.agentId || "unknown", "merge_entities", `${source_name}\u2192${target_name}`);
|
|
@@ -5949,7 +5950,7 @@ async function handleExtractFromDocument(args) {
|
|
|
5949
5950
|
return errorResult7('graph action "extract_from_document" requires document_id');
|
|
5950
5951
|
}
|
|
5951
5952
|
try {
|
|
5952
|
-
const { extractGraphFromExistingDocument } = await import("./doc-graph-extractor-
|
|
5953
|
+
const { extractGraphFromExistingDocument } = await import("./doc-graph-extractor-L7YESUSI.js");
|
|
5953
5954
|
const result3 = await extractGraphFromExistingDocument(documentId);
|
|
5954
5955
|
const lines = [
|
|
5955
5956
|
`## Graph Extraction for Document ${documentId}`,
|
|
@@ -5976,7 +5977,7 @@ async function handleCleanupGarbage(args) {
|
|
|
5976
5977
|
const doMerge = !garbageOnly;
|
|
5977
5978
|
let mod;
|
|
5978
5979
|
try {
|
|
5979
|
-
mod = await import("./cleanup-graph-garbage-
|
|
5980
|
+
mod = await import("./cleanup-graph-garbage-MX5JDTJA.js");
|
|
5980
5981
|
} catch (err) {
|
|
5981
5982
|
return errorResult7(`cleanup_garbage: failed to load cleanup module \u2014 ${err instanceof Error ? err.message : String(err)}`);
|
|
5982
5983
|
}
|
|
@@ -6117,7 +6118,7 @@ function registerGraph(server) {
|
|
|
6117
6118
|
}
|
|
6118
6119
|
|
|
6119
6120
|
// src/mcp/tools/config.ts
|
|
6120
|
-
import { z as
|
|
6121
|
+
import { z as z76 } from "zod";
|
|
6121
6122
|
|
|
6122
6123
|
// src/mcp/tools/set-agent-config.ts
|
|
6123
6124
|
import { z as z48 } from "zod";
|
|
@@ -6835,7 +6836,7 @@ async function getAgentSessionLoad() {
|
|
|
6835
6836
|
return { sessions: [], totalLive: 0, busySessions: 0, idleSessions: 0 };
|
|
6836
6837
|
}
|
|
6837
6838
|
const { getClient: getClient2 } = await import("./lib/database.js");
|
|
6838
|
-
const { sessionScopeFilter: sessionScopeFilter2 } = await import("./task-scope-
|
|
6839
|
+
const { sessionScopeFilter: sessionScopeFilter2 } = await import("./task-scope-OIHLMQOQ.js");
|
|
6839
6840
|
const client = getClient2();
|
|
6840
6841
|
const scope = sessionScopeFilter2();
|
|
6841
6842
|
for (const s of liveAgentSessions) {
|
|
@@ -6962,7 +6963,7 @@ ${mode} Applying repairs...
|
|
|
6962
6963
|
`];
|
|
6963
6964
|
if (!isDryRun) {
|
|
6964
6965
|
try {
|
|
6965
|
-
const { createBackup: createBackup2 } = await import("./db-backup-
|
|
6966
|
+
const { createBackup: createBackup2 } = await import("./db-backup-ITRADB2J.js");
|
|
6966
6967
|
const backupPath = await createBackup2("pre-fix");
|
|
6967
6968
|
if (backupPath) {
|
|
6968
6969
|
fixLog.push(` Backup created: ${backupPath.split("/").pop()}`);
|
|
@@ -7201,7 +7202,7 @@ async function cloudStatusText() {
|
|
|
7201
7202
|
if (lastReuploadedAt) lines.push(`- Last re-upload: ${lastReuploadedAt}`);
|
|
7202
7203
|
lines.push("");
|
|
7203
7204
|
try {
|
|
7204
|
-
const { getRetrievalHealth: getRetrievalHealth2, formatDegradations: formatDegradations2 } = await import("./retrieval-health-
|
|
7205
|
+
const { getRetrievalHealth: getRetrievalHealth2, formatDegradations: formatDegradations2 } = await import("./retrieval-health-ULVVOIPL.js");
|
|
7205
7206
|
const h = await getRetrievalHealth2();
|
|
7206
7207
|
lines.push(formatDegradations2(h.degradations, "Health / Degradations"));
|
|
7207
7208
|
lines.push("");
|
|
@@ -8245,6 +8246,9 @@ function registerGetLicenseStatus(server) {
|
|
|
8245
8246
|
const icon = allowed ? "\u2705" : "\u274C";
|
|
8246
8247
|
lines.push(`| ${feature} | ${icon} |`);
|
|
8247
8248
|
}
|
|
8249
|
+
lines.push(
|
|
8250
|
+
"\n> Upgraded your plan? Pick it up without editing any files: run the `refresh_license` config action, or `exe-os license refresh` in a terminal."
|
|
8251
|
+
);
|
|
8248
8252
|
return {
|
|
8249
8253
|
content: [{ type: "text", text: lines.join("\n") }]
|
|
8250
8254
|
};
|
|
@@ -8492,16 +8496,81 @@ Key saved to ~/.exe-os/license.key. Device ID: ${deviceId}`);
|
|
|
8492
8496
|
);
|
|
8493
8497
|
}
|
|
8494
8498
|
|
|
8495
|
-
// src/mcp/tools/
|
|
8499
|
+
// src/mcp/tools/refresh-license.ts
|
|
8496
8500
|
import { z as z67 } from "zod";
|
|
8497
|
-
|
|
8498
|
-
|
|
8499
|
-
|
|
8500
|
-
|
|
8501
|
+
function limitLine(label, n) {
|
|
8502
|
+
return `- **${label}:** ${n === -1 ? "unlimited" : n.toLocaleString()}`;
|
|
8503
|
+
}
|
|
8504
|
+
function registerRefreshLicense(server) {
|
|
8505
|
+
server.registerTool(
|
|
8506
|
+
"refresh_license",
|
|
8507
|
+
{
|
|
8508
|
+
title: "Refresh License",
|
|
8509
|
+
description: "Force re-validation of the license against the cloud (bypasses the offline-grace cache) and re-caches the signed JWT. Use this to pick up a plan upgrade (e.g. more agents) without editing any files. Reports old plan \u2192 new plan and the resulting limits.",
|
|
8510
|
+
inputSchema: {
|
|
8511
|
+
_dummy: z67.string().optional().describe("Unused \u2014 no input required")
|
|
8512
|
+
}
|
|
8513
|
+
},
|
|
8514
|
+
async () => {
|
|
8515
|
+
try {
|
|
8516
|
+
const result3 = await refreshLicense();
|
|
8517
|
+
try {
|
|
8518
|
+
await refreshLicenseGate();
|
|
8519
|
+
} catch {
|
|
8520
|
+
}
|
|
8521
|
+
const license = result3.license;
|
|
8522
|
+
const lines = [];
|
|
8523
|
+
if (!result3.reachedCloud) {
|
|
8524
|
+
lines.push("## License Refresh \u2014 Cloud Unreachable\n");
|
|
8525
|
+
lines.push(
|
|
8526
|
+
"Could not reach the license server, so the plan was NOT re-checked. Your cached plan is unchanged (a brief outage never downgrades you)."
|
|
8527
|
+
);
|
|
8528
|
+
lines.push(`
|
|
8529
|
+
- **Current plan:** ${license.plan}`);
|
|
8530
|
+
lines.push("\nTry again once connectivity to https://api.askexe.com is restored.");
|
|
8531
|
+
return { content: [{ type: "text", text: lines.join("\n") }] };
|
|
8532
|
+
}
|
|
8533
|
+
if (result3.changed && result3.oldPlan) {
|
|
8534
|
+
lines.push("## License Refreshed \u2014 Plan Changed\n");
|
|
8535
|
+
lines.push(`**${result3.oldPlan} \u2192 ${license.plan}**
|
|
8536
|
+
`);
|
|
8537
|
+
} else {
|
|
8538
|
+
lines.push("## License Refreshed \u2014 No Change\n");
|
|
8539
|
+
lines.push(`Plan is up to date: **${license.plan}**
|
|
8540
|
+
`);
|
|
8541
|
+
}
|
|
8542
|
+
lines.push("### Limits");
|
|
8543
|
+
lines.push(limitLine("Employees", license.employeeLimit));
|
|
8544
|
+
lines.push(limitLine("Devices", license.deviceLimit));
|
|
8545
|
+
lines.push(limitLine("Memories", license.memoryLimit));
|
|
8546
|
+
lines.push(`
|
|
8547
|
+
Valid: ${license.valid ? "yes" : "no"}`);
|
|
8548
|
+
return { content: [{ type: "text", text: lines.join("\n") }] };
|
|
8549
|
+
} catch (err) {
|
|
8550
|
+
return {
|
|
8551
|
+
content: [
|
|
8552
|
+
{
|
|
8553
|
+
type: "text",
|
|
8554
|
+
text: `Error refreshing license: ${err instanceof Error ? err.message : String(err)}`
|
|
8555
|
+
}
|
|
8556
|
+
],
|
|
8557
|
+
isError: true
|
|
8558
|
+
};
|
|
8559
|
+
}
|
|
8560
|
+
}
|
|
8561
|
+
);
|
|
8562
|
+
}
|
|
8563
|
+
|
|
8564
|
+
// src/mcp/tools/create-trigger.ts
|
|
8565
|
+
import { z as z68 } from "zod";
|
|
8566
|
+
var conditionSchema = z68.object({
|
|
8567
|
+
field: z68.string().describe("Dot-path field to evaluate, e.g., 'stage' or 'amount'"),
|
|
8568
|
+
op: z68.enum(["eq", "neq", "gt", "lt", "gte", "lte", "contains", "not_contains"]).describe("Comparison operator"),
|
|
8569
|
+
value: z68.string().or(z68.number()).or(z68.boolean()).describe("Value to compare against")
|
|
8501
8570
|
});
|
|
8502
|
-
var actionSchema =
|
|
8503
|
-
type:
|
|
8504
|
-
params:
|
|
8571
|
+
var actionSchema = z68.object({
|
|
8572
|
+
type: z68.enum(["send_whatsapp", "send_message", "create_task", "mcp_tool"]).describe("Action type to execute"),
|
|
8573
|
+
params: z68.record(z68.string(), z68.string()).describe(
|
|
8505
8574
|
"Action parameters. Supports {{record.field}} templates for dynamic values."
|
|
8506
8575
|
)
|
|
8507
8576
|
});
|
|
@@ -8512,24 +8581,24 @@ function registerCreateTrigger(server) {
|
|
|
8512
8581
|
title: "Create Trigger",
|
|
8513
8582
|
description: "Create a CRM event trigger or scheduled automation. When matching events occur (e.g., Deal.updated with stage=won), configured actions fire automatically (send_whatsapp, create_task, etc.).",
|
|
8514
8583
|
inputSchema: {
|
|
8515
|
-
name:
|
|
8516
|
-
event:
|
|
8584
|
+
name: z68.string().describe("Human-readable trigger name"),
|
|
8585
|
+
event: z68.string().describe(
|
|
8517
8586
|
'CRM event to match, e.g., "Deal.updated", "Order.created", "*" for all'
|
|
8518
8587
|
),
|
|
8519
|
-
conditions:
|
|
8520
|
-
actions:
|
|
8521
|
-
project:
|
|
8522
|
-
enabled:
|
|
8523
|
-
schedule:
|
|
8588
|
+
conditions: z68.array(conditionSchema).default([]).describe("Conditions that must all match (AND logic)"),
|
|
8589
|
+
actions: z68.array(actionSchema).min(1).describe("Actions to execute when trigger fires"),
|
|
8590
|
+
project: z68.string().optional().describe("Scope trigger to a specific project"),
|
|
8591
|
+
enabled: z68.boolean().default(true).describe("Whether trigger is active"),
|
|
8592
|
+
schedule: z68.string().optional().describe(
|
|
8524
8593
|
'Cron schedule for time-based triggers, e.g., "0 9 * * *" or "Monday 9am"'
|
|
8525
8594
|
),
|
|
8526
|
-
query:
|
|
8595
|
+
query: z68.string().optional().describe(
|
|
8527
8596
|
"CRM GraphQL query to run on schedule (required if schedule is set)"
|
|
8528
8597
|
)
|
|
8529
8598
|
}
|
|
8530
8599
|
},
|
|
8531
8600
|
async ({ name, event, conditions, actions, project, enabled, schedule, query }) => {
|
|
8532
|
-
const { assertFeature: assertFeature2 } = await import("./plan-limits-
|
|
8601
|
+
const { assertFeature: assertFeature2 } = await import("./plan-limits-QWBN2EKH.js");
|
|
8533
8602
|
const gatedActions = {
|
|
8534
8603
|
send_whatsapp: "external_agents",
|
|
8535
8604
|
update_wiki: "wiki"
|
|
@@ -8603,7 +8672,7 @@ Enabled: ${trigger.enabled}` + scheduleInfo;
|
|
|
8603
8672
|
}
|
|
8604
8673
|
|
|
8605
8674
|
// src/mcp/tools/list-triggers.ts
|
|
8606
|
-
import { z as
|
|
8675
|
+
import { z as z69 } from "zod";
|
|
8607
8676
|
function registerListTriggers(server) {
|
|
8608
8677
|
server.registerTool(
|
|
8609
8678
|
"list_triggers",
|
|
@@ -8611,7 +8680,7 @@ function registerListTriggers(server) {
|
|
|
8611
8680
|
title: "List Triggers",
|
|
8612
8681
|
description: "List configured CRM event triggers and scheduled automations.",
|
|
8613
8682
|
inputSchema: {
|
|
8614
|
-
project:
|
|
8683
|
+
project: z69.string().optional().describe("Filter triggers by project name")
|
|
8615
8684
|
}
|
|
8616
8685
|
},
|
|
8617
8686
|
async ({ project }) => {
|
|
@@ -8646,7 +8715,7 @@ function registerListTriggers(server) {
|
|
|
8646
8715
|
}
|
|
8647
8716
|
|
|
8648
8717
|
// src/mcp/tools/apply-starter-pack.ts
|
|
8649
|
-
import { z as
|
|
8718
|
+
import { z as z70 } from "zod";
|
|
8650
8719
|
|
|
8651
8720
|
// src/automation/starter-packs/index.ts
|
|
8652
8721
|
import { readFileSync as readFileSync3, readdirSync as readdirSync2, existsSync as existsSync5 } from "fs";
|
|
@@ -8830,17 +8899,17 @@ function registerApplyStarterPack(server) {
|
|
|
8830
8899
|
title: "Apply Starter Pack",
|
|
8831
8900
|
description: "Apply an industry starter pack to a project. Sets up CRM custom objects, pre-wired automation triggers, and wiki seed content. When the pack creates a Client COO (e.g. distribution) and agent_name, company_name, founder_name are all provided, also provisions the COO identity, roster entry, and feedback-loop behavior. Available packs: distribution. More coming.",
|
|
8832
8901
|
inputSchema: {
|
|
8833
|
-
industry:
|
|
8902
|
+
industry: z70.string().describe(
|
|
8834
8903
|
'Industry pack to apply (e.g., "distribution"). Use without args to list available packs.'
|
|
8835
8904
|
),
|
|
8836
|
-
project:
|
|
8837
|
-
agent_name:
|
|
8905
|
+
project: z70.string().describe("Project name to scope the triggers to"),
|
|
8906
|
+
agent_name: z70.string().optional().describe(
|
|
8838
8907
|
"Optional. Lowercase alphanumeric name for the Client COO agent. Required (alongside company_name and founder_name) to provision a COO."
|
|
8839
8908
|
),
|
|
8840
|
-
company_name:
|
|
8909
|
+
company_name: z70.string().optional().describe(
|
|
8841
8910
|
"Optional. The client company the COO serves. Required to provision a COO."
|
|
8842
8911
|
),
|
|
8843
|
-
founder_name:
|
|
8912
|
+
founder_name: z70.string().optional().describe(
|
|
8844
8913
|
"Optional. The founder the COO reports to. Required to provision a COO."
|
|
8845
8914
|
)
|
|
8846
8915
|
}
|
|
@@ -8985,7 +9054,7 @@ ${err.message}`
|
|
|
8985
9054
|
}
|
|
8986
9055
|
|
|
8987
9056
|
// src/mcp/tools/load-skill.ts
|
|
8988
|
-
import { z as
|
|
9057
|
+
import { z as z71 } from "zod";
|
|
8989
9058
|
import { readFileSync as readFileSync4, readdirSync as readdirSync3, statSync } from "fs";
|
|
8990
9059
|
import path10 from "path";
|
|
8991
9060
|
import { homedir as homedir3 } from "os";
|
|
@@ -9015,7 +9084,7 @@ function registerLoadSkill(server) {
|
|
|
9015
9084
|
title: "Load Skill",
|
|
9016
9085
|
description: "Load domain-specific guidance into your context. Use when you need specialized knowledge for a task (e.g., load_skill('seo') before doing SEO work, load_skill('code-reviewer') before reviewing code). Pass skill_name='list' to see all available skills.",
|
|
9017
9086
|
inputSchema: {
|
|
9018
|
-
skill_name:
|
|
9087
|
+
skill_name: z71.string().describe(
|
|
9019
9088
|
"Skill to load (e.g. 'seo', 'code-reviewer', 'frontend-design'). Pass 'list' to see all available skills."
|
|
9020
9089
|
)
|
|
9021
9090
|
}
|
|
@@ -9072,7 +9141,7 @@ ${available.map((s) => `- ${s}`).join("\n")}` : "\n\nNo skills found in ~/.claud
|
|
|
9072
9141
|
// src/mcp/tools/export-orchestration.ts
|
|
9073
9142
|
import { mkdirSync as mkdirSync3, writeFileSync as writeFileSync5 } from "fs";
|
|
9074
9143
|
import path11 from "path";
|
|
9075
|
-
import { z as
|
|
9144
|
+
import { z as z72 } from "zod";
|
|
9076
9145
|
function registerExportOrchestration(server) {
|
|
9077
9146
|
server.registerTool(
|
|
9078
9147
|
"export_orchestration",
|
|
@@ -9080,7 +9149,7 @@ function registerExportOrchestration(server) {
|
|
|
9080
9149
|
title: "Export Orchestration",
|
|
9081
9150
|
description: "Export roster, identities, behaviors, and customer procedures to a JSON package.",
|
|
9082
9151
|
inputSchema: {
|
|
9083
|
-
output_path:
|
|
9152
|
+
output_path: z72.string().describe("File path to write the JSON package")
|
|
9084
9153
|
}
|
|
9085
9154
|
},
|
|
9086
9155
|
async ({ output_path }) => {
|
|
@@ -9111,7 +9180,7 @@ function registerExportOrchestration(server) {
|
|
|
9111
9180
|
|
|
9112
9181
|
// src/mcp/tools/import-orchestration.ts
|
|
9113
9182
|
import { readFileSync as readFileSync5 } from "fs";
|
|
9114
|
-
import { z as
|
|
9183
|
+
import { z as z73 } from "zod";
|
|
9115
9184
|
function registerImportOrchestration(server) {
|
|
9116
9185
|
server.registerTool(
|
|
9117
9186
|
"import_orchestration",
|
|
@@ -9119,8 +9188,8 @@ function registerImportOrchestration(server) {
|
|
|
9119
9188
|
title: "Import Orchestration",
|
|
9120
9189
|
description: "Import roster, identities, behaviors, and procedures from an orchestration package. Restricted to coordinator/founder.",
|
|
9121
9190
|
inputSchema: {
|
|
9122
|
-
package_path:
|
|
9123
|
-
merge_strategy:
|
|
9191
|
+
package_path: z73.string().describe("Path to the orchestration package JSON file"),
|
|
9192
|
+
merge_strategy: z73.enum(["replace", "merge"]).default("merge").describe("How to apply the package: both strategies are additive-only \u2014 existing data is never deleted or overwritten")
|
|
9124
9193
|
}
|
|
9125
9194
|
},
|
|
9126
9195
|
async ({ package_path, merge_strategy }) => {
|
|
@@ -9160,7 +9229,7 @@ function registerImportOrchestration(server) {
|
|
|
9160
9229
|
}
|
|
9161
9230
|
|
|
9162
9231
|
// src/mcp/tools/global-procedure.ts
|
|
9163
|
-
import { z as
|
|
9232
|
+
import { z as z74 } from "zod";
|
|
9164
9233
|
function registerCompanyProcedureTool(server, toolName) {
|
|
9165
9234
|
server.registerTool(
|
|
9166
9235
|
toolName,
|
|
@@ -9168,13 +9237,13 @@ function registerCompanyProcedureTool(server, toolName) {
|
|
|
9168
9237
|
title: "Company Procedure",
|
|
9169
9238
|
description: "Manage company procedures and values (customer-owned Layer 0 rules) that supersede identity, expertise, and experience. Actions: store (create new, restricted), list (view all, open), deactivate (soft-delete, restricted). Use kind='value' for company values (principles/beliefs), kind='procedure' for operational instructions.",
|
|
9170
9239
|
inputSchema: {
|
|
9171
|
-
action:
|
|
9172
|
-
title:
|
|
9173
|
-
content:
|
|
9174
|
-
priority:
|
|
9175
|
-
domain:
|
|
9176
|
-
kind:
|
|
9177
|
-
procedure_id:
|
|
9240
|
+
action: z74.enum(["store", "list", "deactivate"]).describe("Action to perform"),
|
|
9241
|
+
title: z74.string().optional().describe("Short title for the procedure or value (store)"),
|
|
9242
|
+
content: z74.string().max(500).optional().describe("The content \u2014 clear, actionable instruction or guiding principle (store)"),
|
|
9243
|
+
priority: z74.enum(["p0", "p1", "p2"]).optional().describe("Priority tier. p0 = always (default). p1 = standard. p2 = nice-to-have."),
|
|
9244
|
+
domain: z74.string().optional().describe("Category: workflow, code-style, communication, architecture, testing, security"),
|
|
9245
|
+
kind: z74.enum(["procedure", "value"]).optional().describe("Type: 'procedure' (operational instruction) or 'value' (company principle). Default: procedure."),
|
|
9246
|
+
procedure_id: z74.string().optional().describe("UUID of the company procedure (deactivate)")
|
|
9178
9247
|
}
|
|
9179
9248
|
},
|
|
9180
9249
|
async ({ action, title, content, priority, domain, kind, procedure_id }) => {
|
|
@@ -9299,8 +9368,8 @@ function registerGlobalProcedure(server) {
|
|
|
9299
9368
|
}
|
|
9300
9369
|
|
|
9301
9370
|
// src/mcp/tools/get-session-events.ts
|
|
9302
|
-
import { z as
|
|
9303
|
-
var EVENT_TYPE =
|
|
9371
|
+
import { z as z75 } from "zod";
|
|
9372
|
+
var EVENT_TYPE = z75.enum([
|
|
9304
9373
|
"user_prompt",
|
|
9305
9374
|
"assistant_response",
|
|
9306
9375
|
"tool_call",
|
|
@@ -9330,11 +9399,11 @@ function registerGetSessionEvents(server) {
|
|
|
9330
9399
|
title: "Get Session Events",
|
|
9331
9400
|
description: "Return exact recent chronological user prompts, assistant responses, and tool calls from the append-only session journal. Use this when asked what happened last, not semantic memory search.",
|
|
9332
9401
|
inputSchema: {
|
|
9333
|
-
agent_id:
|
|
9334
|
-
session_id:
|
|
9402
|
+
agent_id: z75.string().optional().describe("Agent to inspect. Defaults to active agent. COO/CTO may inspect others."),
|
|
9403
|
+
session_id: z75.string().optional().describe("Optional exact runtime session id."),
|
|
9335
9404
|
event_type: EVENT_TYPE.optional().describe("Filter to one event type."),
|
|
9336
|
-
project_name:
|
|
9337
|
-
limit:
|
|
9405
|
+
project_name: z75.string().optional().describe("Optional project filter. Pass 'all' for all projects."),
|
|
9406
|
+
limit: z75.number().int().min(1).max(100).default(20).describe("Number of events to return.")
|
|
9338
9407
|
}
|
|
9339
9408
|
},
|
|
9340
9409
|
async ({ agent_id, session_id, event_type, project_name, limit }) => {
|
|
@@ -9370,8 +9439,8 @@ function registerGetLastAssistantResponse(server) {
|
|
|
9370
9439
|
title: "Get Last Assistant Response",
|
|
9371
9440
|
description: "Return the exact last assistant response for an agent from the session event journal. Use for 'what was the last thing you said?'",
|
|
9372
9441
|
inputSchema: {
|
|
9373
|
-
agent_id:
|
|
9374
|
-
project_name:
|
|
9442
|
+
agent_id: z75.string().optional().describe("Agent to inspect. Defaults to active agent. COO/CTO may inspect others."),
|
|
9443
|
+
project_name: z75.string().optional().describe("Optional project filter. Pass 'all' for all projects.")
|
|
9375
9444
|
}
|
|
9376
9445
|
},
|
|
9377
9446
|
async ({ agent_id, project_name }) => {
|
|
@@ -9422,6 +9491,7 @@ var ACTION_TO_TOOL2 = {
|
|
|
9422
9491
|
create_license: "create_license",
|
|
9423
9492
|
list_licenses: "list_licenses",
|
|
9424
9493
|
activate_license: "activate_license",
|
|
9494
|
+
refresh_license: "refresh_license",
|
|
9425
9495
|
create_trigger: "create_trigger",
|
|
9426
9496
|
list_triggers: "list_triggers",
|
|
9427
9497
|
apply_starter_pack: "apply_starter_pack",
|
|
@@ -9479,6 +9549,7 @@ function buildHandlers5() {
|
|
|
9479
9549
|
registerCreateLicense(localServer);
|
|
9480
9550
|
registerListLicenses(localServer);
|
|
9481
9551
|
registerActivateLicense(localServer);
|
|
9552
|
+
registerRefreshLicense(localServer);
|
|
9482
9553
|
registerCreateTrigger(localServer);
|
|
9483
9554
|
registerListTriggers(localServer);
|
|
9484
9555
|
registerApplyStarterPack(localServer);
|
|
@@ -9495,8 +9566,8 @@ function buildHandlers5() {
|
|
|
9495
9566
|
}
|
|
9496
9567
|
async function handleDreaming(action, args) {
|
|
9497
9568
|
try {
|
|
9498
|
-
const { DreamingEngine: DreamingEngine2 } = await import("./dreaming-
|
|
9499
|
-
const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-
|
|
9569
|
+
const { DreamingEngine: DreamingEngine2 } = await import("./dreaming-NRTMPNPZ.js");
|
|
9570
|
+
const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-SHM4QSRJ.js");
|
|
9500
9571
|
const { getClient: getClient2 } = await import("./lib/database.js");
|
|
9501
9572
|
const agentId = args.agent_id ?? getActiveAgent2().agentId;
|
|
9502
9573
|
if (action === "dreaming_run") {
|
|
@@ -9580,51 +9651,51 @@ function registerConfig(server) {
|
|
|
9580
9651
|
title: "Config",
|
|
9581
9652
|
description: "Consolidated COO/admin tool for runtime config, system health, licensing, triggers, orchestration import/export, company procedures, identity management, session inspection, dreaming self-improvement, and session closeout.",
|
|
9582
9653
|
inputSchema: {
|
|
9583
|
-
action:
|
|
9584
|
-
agent_id:
|
|
9585
|
-
role:
|
|
9586
|
-
runtime:
|
|
9587
|
-
model:
|
|
9588
|
-
reasoning_effort:
|
|
9589
|
-
dry_run:
|
|
9590
|
-
fix:
|
|
9591
|
-
verbose:
|
|
9592
|
-
project_name:
|
|
9593
|
-
since:
|
|
9594
|
-
limit:
|
|
9595
|
-
output_path:
|
|
9596
|
-
input_path:
|
|
9597
|
-
strategy:
|
|
9598
|
-
license_key:
|
|
9599
|
-
email:
|
|
9600
|
-
plan:
|
|
9601
|
-
name:
|
|
9602
|
-
event:
|
|
9603
|
-
conditions:
|
|
9604
|
-
actions:
|
|
9605
|
-
enabled:
|
|
9606
|
-
schedule:
|
|
9607
|
-
query:
|
|
9608
|
-
skill_name:
|
|
9609
|
-
pack_name:
|
|
9610
|
-
title:
|
|
9611
|
-
content:
|
|
9612
|
-
priority:
|
|
9613
|
-
domain:
|
|
9614
|
-
procedure_id:
|
|
9615
|
-
subaction:
|
|
9616
|
-
max_clusters:
|
|
9617
|
-
force:
|
|
9618
|
-
cloud_action:
|
|
9619
|
-
confirm_local_db_source_of_truth:
|
|
9620
|
-
domain_name:
|
|
9621
|
-
phase:
|
|
9654
|
+
action: z76.enum(Object.keys(ACTION_TO_TOOL2)).describe("Admin/config operation. refresh_license force re-checks the plan against the cloud and re-caches the signed JWT (picks up plan upgrades without editing files). identity_get/identity_update manage agent identity files. session_events/session_last_response inspect session logs. dreaming_run/dreaming_status/dreaming_history manage the self-improvement loop. closeout runs dreaming + commits a structured session summary to memory. capability_cards returns A2A-style JSON manifests for all agents. restart_telemetry shows why the daemon restarted \u2014 cause breakdown, slowest timers, event-loop blocks."),
|
|
9655
|
+
agent_id: z76.string().optional().describe("Agent id for set_agent_config/agent_spend/session queries/hire"),
|
|
9656
|
+
role: z76.string().optional().describe("Role template for action=hire: coo, cto, cmo, gm, principal-engineer, content-specialist, ai-specialist, staff-code-reviewer"),
|
|
9657
|
+
runtime: z76.string().optional().describe("Runtime for set_agent_config"),
|
|
9658
|
+
model: z76.string().optional().describe("Model for set_agent_config"),
|
|
9659
|
+
reasoning_effort: z76.string().optional().describe("Reasoning effort for Codex agents"),
|
|
9660
|
+
dry_run: z76.boolean().optional().describe("Preview without applying where supported"),
|
|
9661
|
+
fix: z76.boolean().optional().describe("Apply fixes for memory_audit where supported"),
|
|
9662
|
+
verbose: z76.boolean().optional().describe("Verbose output where supported"),
|
|
9663
|
+
project_name: z76.string().optional().describe("Project filter/name"),
|
|
9664
|
+
since: z76.string().optional().describe("ISO lower-bound timestamp"),
|
|
9665
|
+
limit: z76.coerce.number().optional().describe("Result limit"),
|
|
9666
|
+
output_path: z76.string().optional().describe("Output path for export/backup"),
|
|
9667
|
+
input_path: z76.string().optional().describe("Input path for import_orchestration"),
|
|
9668
|
+
strategy: z76.enum(["merge", "replace"]).optional().describe("Import strategy; replace must still be additive-only per platform rules"),
|
|
9669
|
+
license_key: z76.string().optional().describe("License key for activation/status"),
|
|
9670
|
+
email: z76.string().optional().describe("Customer email for license creation"),
|
|
9671
|
+
plan: z76.string().optional().describe("License plan"),
|
|
9672
|
+
name: z76.string().optional().describe("Trigger/starter pack/procedure/client name"),
|
|
9673
|
+
event: z76.string().optional().describe("Trigger event"),
|
|
9674
|
+
conditions: z76.array(z76.record(z76.string(), z76.unknown())).optional().describe("Trigger conditions"),
|
|
9675
|
+
actions: z76.array(z76.record(z76.string(), z76.unknown())).optional().describe("Trigger actions"),
|
|
9676
|
+
enabled: z76.boolean().optional().describe("Trigger enabled flag"),
|
|
9677
|
+
schedule: z76.string().optional().describe("Trigger schedule"),
|
|
9678
|
+
query: z76.string().optional().describe("Trigger query or filter"),
|
|
9679
|
+
skill_name: z76.string().optional().describe("Skill name for load_skill"),
|
|
9680
|
+
pack_name: z76.string().optional().describe("Starter pack name"),
|
|
9681
|
+
title: z76.string().optional().describe("Procedure title"),
|
|
9682
|
+
content: z76.string().optional().describe("Procedure content"),
|
|
9683
|
+
priority: z76.enum(["p0", "p1", "p2"]).optional().describe("Procedure priority"),
|
|
9684
|
+
domain: z76.string().optional().describe("Procedure domain"),
|
|
9685
|
+
procedure_id: z76.string().optional().describe("Procedure id for deactivate"),
|
|
9686
|
+
subaction: z76.enum(["store", "list", "deactivate"]).optional().describe("Nested action for company_procedure/global_procedure"),
|
|
9687
|
+
max_clusters: z76.coerce.number().optional().describe("Consolidation max clusters"),
|
|
9688
|
+
force: z76.boolean().optional().describe("Force operation where supported"),
|
|
9689
|
+
cloud_action: z76.enum(["status", "sync", "reupload"]).optional().describe("Nested operation for action=cloud_sync"),
|
|
9690
|
+
confirm_local_db_source_of_truth: z76.string().optional().describe("Required for cloud_action=reupload; must exactly equal LOCAL DB IS SOURCE OF TRUTH"),
|
|
9691
|
+
domain_name: z76.string().optional().describe("Client deployment domain"),
|
|
9692
|
+
phase: z76.enum(["phase_1_coo", "phase_2_executives", "phase_3_parallel_org", "1", "2", "3"]).optional().describe("Orchestration phase for orchestration_phase action"),
|
|
9622
9693
|
// Identity params (absorbed from identity tool)
|
|
9623
|
-
identity_content:
|
|
9694
|
+
identity_content: z76.string().optional().describe("Full exe.md content for action=identity_update"),
|
|
9624
9695
|
// Session params (absorbed from session tool)
|
|
9625
|
-
session_id:
|
|
9696
|
+
session_id: z76.string().optional().describe("Session ID for action=session_events"),
|
|
9626
9697
|
// Dreaming params (absorbed from dreaming tool)
|
|
9627
|
-
hours:
|
|
9698
|
+
hours: z76.coerce.number().min(1).max(720).optional().describe("Lookback window in hours for action=dreaming_run/restart_telemetry. Default 24.")
|
|
9628
9699
|
}
|
|
9629
9700
|
}, async (input, extra) => {
|
|
9630
9701
|
const action = input.action;
|
|
@@ -9652,8 +9723,8 @@ function registerConfig(server) {
|
|
|
9652
9723
|
}
|
|
9653
9724
|
if (action === "closeout") {
|
|
9654
9725
|
try {
|
|
9655
|
-
const { DreamingEngine: DreamingEngine2 } = await import("./dreaming-
|
|
9656
|
-
const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-
|
|
9726
|
+
const { DreamingEngine: DreamingEngine2 } = await import("./dreaming-NRTMPNPZ.js");
|
|
9727
|
+
const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-SHM4QSRJ.js");
|
|
9657
9728
|
const { writeMemory: writeMemory2, flushBatch: flushBatch2 } = await import("./lib/store.js");
|
|
9658
9729
|
const { randomUUID: randomUUID2 } = await import("crypto");
|
|
9659
9730
|
const { getProjectName: getProjectName2 } = await import("./project-name-EWG5KAZP.js");
|
|
@@ -9724,7 +9795,7 @@ function registerConfig(server) {
|
|
|
9724
9795
|
}
|
|
9725
9796
|
if (action === "capability_cards") {
|
|
9726
9797
|
try {
|
|
9727
|
-
const { getAllCapabilityCards, findAgentForTask } = await import("./capability-cards-
|
|
9798
|
+
const { getAllCapabilityCards, findAgentForTask } = await import("./capability-cards-H7H3MU74.js");
|
|
9728
9799
|
const cards = getAllCapabilityCards();
|
|
9729
9800
|
const taskQuery = args.query;
|
|
9730
9801
|
if (taskQuery) {
|
|
@@ -9775,7 +9846,7 @@ function registerConfig(server) {
|
|
|
9775
9846
|
const existing = loadEmployeesSync2();
|
|
9776
9847
|
if (existing.some((e) => e.name === employeeName)) return errorResult8(`Employee "${employeeName}" already exists.`);
|
|
9777
9848
|
try {
|
|
9778
|
-
const { assertEmployeeLimit: assertEmployeeLimit2 } = await import("./plan-limits-
|
|
9849
|
+
const { assertEmployeeLimit: assertEmployeeLimit2 } = await import("./plan-limits-QWBN2EKH.js");
|
|
9779
9850
|
await assertEmployeeLimit2();
|
|
9780
9851
|
} catch (e) {
|
|
9781
9852
|
return errorResult8(e instanceof Error ? e.message : "Employee limit reached.");
|
|
@@ -9816,7 +9887,7 @@ You are ${employeeName}. Role: ${role}.`, "utf-8");
|
|
|
9816
9887
|
}
|
|
9817
9888
|
try {
|
|
9818
9889
|
const { generateSessionWrappers } = await import("./lib/session-wrappers.js");
|
|
9819
|
-
const { resolvePackageRoot } = await import("./installer-
|
|
9890
|
+
const { resolvePackageRoot } = await import("./installer-SC7CQBYY.js");
|
|
9820
9891
|
generateSessionWrappers(resolvePackageRoot());
|
|
9821
9892
|
} catch {
|
|
9822
9893
|
}
|
|
@@ -9886,10 +9957,10 @@ You are ${employeeName}. Role: ${role}.`, "utf-8");
|
|
|
9886
9957
|
}
|
|
9887
9958
|
|
|
9888
9959
|
// src/mcp/tools/wiki.ts
|
|
9889
|
-
import { z as
|
|
9960
|
+
import { z as z79 } from "zod";
|
|
9890
9961
|
|
|
9891
9962
|
// src/mcp/tools/list-wiki-pages.ts
|
|
9892
|
-
import { z as
|
|
9963
|
+
import { z as z77 } from "zod";
|
|
9893
9964
|
var FETCH_TIMEOUT_MS2 = 1e4;
|
|
9894
9965
|
function registerListWikiPages(server) {
|
|
9895
9966
|
server.registerTool(
|
|
@@ -9898,12 +9969,12 @@ function registerListWikiPages(server) {
|
|
|
9898
9969
|
title: "List Wiki Pages",
|
|
9899
9970
|
description: "List documents in an exe-wiki workspace. Optionally filter by folder.",
|
|
9900
9971
|
inputSchema: {
|
|
9901
|
-
workspace:
|
|
9902
|
-
folder:
|
|
9972
|
+
workspace: z77.string().describe('Wiki workspace slug (e.g., "hygo")'),
|
|
9973
|
+
folder: z77.string().optional().describe("Filter by folder path")
|
|
9903
9974
|
}
|
|
9904
9975
|
},
|
|
9905
9976
|
async ({ workspace, folder }) => {
|
|
9906
|
-
const { assertFeature: assertFeature2 } = await import("./plan-limits-
|
|
9977
|
+
const { assertFeature: assertFeature2 } = await import("./plan-limits-QWBN2EKH.js");
|
|
9907
9978
|
await assertFeature2("wiki");
|
|
9908
9979
|
const apiUrl = process.env.EXE_WIKI_API_URL;
|
|
9909
9980
|
const apiKey = process.env.EXE_WIKI_API_KEY;
|
|
@@ -9988,7 +10059,7 @@ function registerListWikiPages(server) {
|
|
|
9988
10059
|
}
|
|
9989
10060
|
|
|
9990
10061
|
// src/mcp/tools/get-wiki-page.ts
|
|
9991
|
-
import { z as
|
|
10062
|
+
import { z as z78 } from "zod";
|
|
9992
10063
|
var FETCH_TIMEOUT_MS3 = 1e4;
|
|
9993
10064
|
function registerGetWikiPage(server) {
|
|
9994
10065
|
server.registerTool(
|
|
@@ -9997,13 +10068,13 @@ function registerGetWikiPage(server) {
|
|
|
9997
10068
|
title: "Get Wiki Page",
|
|
9998
10069
|
description: "Read a wiki page by document ID or title. Returns content, metadata, and folder path. Use title search when you know the page name but not the ID.",
|
|
9999
10070
|
inputSchema: {
|
|
10000
|
-
workspace:
|
|
10001
|
-
document_id:
|
|
10002
|
-
title:
|
|
10071
|
+
workspace: z78.string().describe('Wiki workspace slug (e.g., "hygo")'),
|
|
10072
|
+
document_id: z78.string().optional().describe("Specific document ID (exact lookup)"),
|
|
10073
|
+
title: z78.string().optional().describe("Search by title (fuzzy match)")
|
|
10003
10074
|
}
|
|
10004
10075
|
},
|
|
10005
10076
|
async ({ workspace, document_id, title }) => {
|
|
10006
|
-
const { assertFeature: assertFeature2 } = await import("./plan-limits-
|
|
10077
|
+
const { assertFeature: assertFeature2 } = await import("./plan-limits-QWBN2EKH.js");
|
|
10007
10078
|
await assertFeature2("wiki");
|
|
10008
10079
|
const apiUrl = process.env.EXE_WIKI_API_URL;
|
|
10009
10080
|
const apiKey = process.env.EXE_WIKI_API_KEY;
|
|
@@ -10197,10 +10268,10 @@ async function handleWikiSearch(input) {
|
|
|
10197
10268
|
const userId = input.user_id;
|
|
10198
10269
|
if (!workspace) return errorResult9('wiki action "search" requires workspace');
|
|
10199
10270
|
if (!query) return errorResult9('wiki action "search" requires query');
|
|
10200
|
-
const { assertFeature: assertFeature2 } = await import("./plan-limits-
|
|
10271
|
+
const { assertFeature: assertFeature2 } = await import("./plan-limits-QWBN2EKH.js");
|
|
10201
10272
|
await assertFeature2("wiki");
|
|
10202
10273
|
if (userId) {
|
|
10203
|
-
const { checkWikiAccess } = await import("./wiki-acl-
|
|
10274
|
+
const { checkWikiAccess } = await import("./wiki-acl-EZMGL6KW.js");
|
|
10204
10275
|
const { allowed } = await checkWikiAccess(String(userId), String(workspace), "read");
|
|
10205
10276
|
if (!allowed) {
|
|
10206
10277
|
return errorResult9(`Access denied: user "${userId}" does not have read access to workspace "${workspace}"`);
|
|
@@ -10255,34 +10326,34 @@ function registerWiki(server) {
|
|
|
10255
10326
|
title: "Wiki",
|
|
10256
10327
|
description: "Consolidated wiki and document domain tool. Actions: list, get, search (wiki pages), document_ingest, document_list, document_purge, document_set_importance, document_rerank (document management). Wiki writes flow through raw data ingestion/projection into the curated wiki store.",
|
|
10257
10328
|
inputSchema: {
|
|
10258
|
-
action:
|
|
10259
|
-
query:
|
|
10260
|
-
workspace:
|
|
10261
|
-
title:
|
|
10262
|
-
content:
|
|
10263
|
-
folder:
|
|
10264
|
-
document_id:
|
|
10265
|
-
mode:
|
|
10266
|
-
section:
|
|
10267
|
-
user_id:
|
|
10329
|
+
action: z79.enum(["list", "get", "search", "document_ingest", "document_list", "document_purge", "document_set_importance", "document_rerank"]).describe("Wiki/document operation. list/get/search for wiki pages. document_* for document management."),
|
|
10330
|
+
query: z79.string().optional().describe("Search query for action=search (FTS across page titles and content)"),
|
|
10331
|
+
workspace: z79.string().optional().describe("Wiki workspace slug"),
|
|
10332
|
+
title: z79.string().optional().describe("Fuzzy page title lookup for get"),
|
|
10333
|
+
content: z79.string().optional().describe("Reserved; wiki writes use raw-data ingestion/projection"),
|
|
10334
|
+
folder: z79.string().optional().describe("Optional folder path for list"),
|
|
10335
|
+
document_id: z79.string().optional().describe("Document ID for get/purge/set_importance"),
|
|
10336
|
+
mode: z79.enum(["replace", "append"]).optional().describe("Reserved; direct wiki updates are removed"),
|
|
10337
|
+
section: z79.string().optional().describe("Reserved; direct wiki updates are removed"),
|
|
10338
|
+
user_id: z79.string().optional().describe("User ID for ACL enforcement. When set, workspace access is checked against wiki_acl table."),
|
|
10268
10339
|
// Document management params (absorbed from document tool)
|
|
10269
|
-
workspace_id:
|
|
10270
|
-
filename:
|
|
10271
|
-
mime:
|
|
10272
|
-
source_type:
|
|
10273
|
-
chunks:
|
|
10274
|
-
text:
|
|
10275
|
-
char_offset:
|
|
10276
|
-
page_number:
|
|
10277
|
-
metadata:
|
|
10340
|
+
workspace_id: z79.string().optional().describe("Workspace UUID or slug for document operations"),
|
|
10341
|
+
filename: z79.string().optional().describe("Document filename for action=document_ingest"),
|
|
10342
|
+
mime: z79.string().optional().describe("MIME type for action=document_ingest"),
|
|
10343
|
+
source_type: z79.enum(["upload", "url", "manual", "paste"]).optional().describe("Source type for action=document_ingest"),
|
|
10344
|
+
chunks: z79.array(z79.object({
|
|
10345
|
+
text: z79.string(),
|
|
10346
|
+
char_offset: z79.number().optional(),
|
|
10347
|
+
page_number: z79.number().optional(),
|
|
10348
|
+
metadata: z79.record(z79.string(), z79.unknown()).optional()
|
|
10278
10349
|
})).optional().describe("Document chunks for action=document_ingest"),
|
|
10279
|
-
document_metadata:
|
|
10280
|
-
importance:
|
|
10281
|
-
doc_query:
|
|
10282
|
-
candidates:
|
|
10283
|
-
top_k:
|
|
10284
|
-
limit:
|
|
10285
|
-
offset:
|
|
10350
|
+
document_metadata: z79.record(z79.string(), z79.unknown()).optional().describe("Document metadata for action=document_ingest"),
|
|
10351
|
+
importance: z79.number().int().min(1).max(10).optional().describe("Importance for action=document_set_importance"),
|
|
10352
|
+
doc_query: z79.string().optional().describe("Query for action=document_rerank"),
|
|
10353
|
+
candidates: z79.array(z79.string()).optional().describe("Candidate texts for action=document_rerank"),
|
|
10354
|
+
top_k: z79.coerce.number().int().positive().optional().describe("Top K for action=document_rerank"),
|
|
10355
|
+
limit: z79.number().int().positive().optional().describe("Limit for action=document_list"),
|
|
10356
|
+
offset: z79.number().int().nonnegative().optional().describe("Offset for action=document_list")
|
|
10286
10357
|
}
|
|
10287
10358
|
},
|
|
10288
10359
|
async (input, extra) => {
|
|
@@ -10303,7 +10374,7 @@ function registerWiki(server) {
|
|
|
10303
10374
|
return errorResult9('wiki action "document_rerank" requires at least one candidate');
|
|
10304
10375
|
}
|
|
10305
10376
|
if (user_id && legacyArgs.workspace) {
|
|
10306
|
-
const { checkWikiAccess } = await import("./wiki-acl-
|
|
10377
|
+
const { checkWikiAccess } = await import("./wiki-acl-EZMGL6KW.js");
|
|
10307
10378
|
const { allowed } = await checkWikiAccess(
|
|
10308
10379
|
String(user_id),
|
|
10309
10380
|
String(legacyArgs.workspace),
|
|
@@ -10328,7 +10399,7 @@ function registerWiki(server) {
|
|
|
10328
10399
|
}
|
|
10329
10400
|
|
|
10330
10401
|
// src/mcp/tools/behavior.ts
|
|
10331
|
-
import { z as
|
|
10402
|
+
import { z as z80 } from "zod";
|
|
10332
10403
|
function rowToBehavior2(r) {
|
|
10333
10404
|
return {
|
|
10334
10405
|
id: String(r.id),
|
|
@@ -10357,23 +10428,23 @@ function registerBehavior(server) {
|
|
|
10357
10428
|
title: "Behavior",
|
|
10358
10429
|
description: "Manage behavioral patterns, corrections, and reusable procedures for employees. Actions: store (create new), list (query existing), audit (creation context), deactivate (soft-delete, restricted), reactivate (re-enable deactivated, restricted), purge (hard-delete inactive, or purge_ghosts=true to delete corrupt empty/null-id rows; restricted).",
|
|
10359
10430
|
inputSchema: {
|
|
10360
|
-
action:
|
|
10361
|
-
content:
|
|
10362
|
-
domain:
|
|
10363
|
-
priority:
|
|
10364
|
-
trigger:
|
|
10365
|
-
trigger_action:
|
|
10366
|
-
agent_id:
|
|
10367
|
-
project_name:
|
|
10368
|
-
behavior_id:
|
|
10369
|
-
shared_skills:
|
|
10370
|
-
device_scoped:
|
|
10371
|
-
limit:
|
|
10372
|
-
offset:
|
|
10373
|
-
older_than_days:
|
|
10374
|
-
dry_run:
|
|
10375
|
-
purge_ghosts:
|
|
10376
|
-
bulk:
|
|
10431
|
+
action: z80.enum(["store", "list", "deactivate", "reactivate", "audit", "purge"]).describe("Action to perform"),
|
|
10432
|
+
content: z80.string().max(500).optional().describe("The behavioral instruction \u2014 one clear sentence (store). Not needed when trigger+action are provided for reflex domain."),
|
|
10433
|
+
domain: z80.string().optional().describe("Category: workflow, code-style, tool-use, communication, architecture, testing, reflex. Use 'reflex' for trigger\u2192action behaviors."),
|
|
10434
|
+
priority: z80.enum(["p0", "p1", "p2"]).optional().describe("Priority tier. p0 = always included. p1 = standard (default). p2 = nice-to-have. Forced to p0 for reflex domain."),
|
|
10435
|
+
trigger: z80.string().max(200).optional().describe("Condition that activates this reflex (e.g. 'when customer says cancel', 'when deadline mentioned'). Required when domain='reflex'."),
|
|
10436
|
+
trigger_action: z80.string().max(300).optional().describe("What the agent should do when the trigger fires (e.g. 'offer retention discount', 'flag for manager review'). Required when domain='reflex'."),
|
|
10437
|
+
agent_id: z80.string().optional().describe("Employee name. Defaults to current agent. Pass 'all' to list everyone's (list only)."),
|
|
10438
|
+
project_name: z80.string().optional().describe("Defaults to current project. Pass 'global' for a behavior that applies everywhere (store)."),
|
|
10439
|
+
behavior_id: z80.string().optional().describe("UUID of the behavior (deactivate)"),
|
|
10440
|
+
shared_skills: z80.boolean().optional().describe("When true with action=list, include skills (domain='skill') from ALL agents. Default: false."),
|
|
10441
|
+
device_scoped: z80.boolean().optional().describe("When true, behavior only loads on this device. Default false (global \u2014 loads everywhere). (store)"),
|
|
10442
|
+
limit: z80.coerce.number().int().min(1).max(500).optional().describe("Max rows for list/purge preview. Default 100 for list, 500 for purge."),
|
|
10443
|
+
offset: z80.coerce.number().int().min(0).optional().describe("Pagination offset for list. Default 0."),
|
|
10444
|
+
older_than_days: z80.coerce.number().int().min(0).optional().describe("For purge: only hard-delete inactive behaviors older than this many days. Default 30."),
|
|
10445
|
+
dry_run: z80.boolean().optional().default(true).describe("For purge: preview by default; set false to permanently delete matching inactive behaviors."),
|
|
10446
|
+
purge_ghosts: z80.boolean().optional().describe("For purge: target ghost rows (empty content or NULL id) regardless of active status / age, instead of aged inactive behaviors. Use to clean up corrupt rows that flood behavior list. (purge)"),
|
|
10447
|
+
bulk: z80.boolean().optional().describe("For purge with purge_ghosts=true: drain ALL ghost rows in bounded batches in a single call (handles millions of rows safely) and VACUUM. Use when the ghost table is too large to clear 1000-at-a-time. (purge)")
|
|
10377
10448
|
}
|
|
10378
10449
|
},
|
|
10379
10450
|
async ({ action, content, domain, priority, trigger, trigger_action, agent_id, project_name, behavior_id, shared_skills, device_scoped, limit, offset, older_than_days, dry_run, purge_ghosts, bulk }) => {
|
|
@@ -10624,7 +10695,7 @@ Use /exe-forget to remove any that this supersedes.`;
|
|
|
10624
10695
|
}]
|
|
10625
10696
|
};
|
|
10626
10697
|
}
|
|
10627
|
-
const { bulkPurgeGhostBehaviors } = await import("./behaviors-
|
|
10698
|
+
const { bulkPurgeGhostBehaviors } = await import("./behaviors-J47D342W.js");
|
|
10628
10699
|
const res = await bulkPurgeGhostBehaviors({ batchSize: 5e3, vacuum: true });
|
|
10629
10700
|
return {
|
|
10630
10701
|
content: [{
|
|
@@ -10735,7 +10806,7 @@ Use /exe-forget to remove any that this supersedes.`;
|
|
|
10735
10806
|
return { content: [{ type: "text", text: `Behavior not found: ${behavior_id}` }], isError: true };
|
|
10736
10807
|
}
|
|
10737
10808
|
const row2 = result4.rows[0];
|
|
10738
|
-
const { reactivateBehavior: reactivateBehavior2 } = await import("./behaviors-
|
|
10809
|
+
const { reactivateBehavior: reactivateBehavior2 } = await import("./behaviors-J47D342W.js");
|
|
10739
10810
|
const wasReactivated = await reactivateBehavior2(behavior_id);
|
|
10740
10811
|
if (!wasReactivated) {
|
|
10741
10812
|
return { content: [{ type: "text", text: `Behavior ${behavior_id} is already active.` }] };
|
|
@@ -10805,7 +10876,7 @@ Content: ${row.content}`
|
|
|
10805
10876
|
}
|
|
10806
10877
|
|
|
10807
10878
|
// src/mcp/tools/reminder.ts
|
|
10808
|
-
import { z as
|
|
10879
|
+
import { z as z81 } from "zod";
|
|
10809
10880
|
function registerReminder(server) {
|
|
10810
10881
|
server.registerTool(
|
|
10811
10882
|
"reminder",
|
|
@@ -10813,11 +10884,11 @@ function registerReminder(server) {
|
|
|
10813
10884
|
title: "Reminder",
|
|
10814
10885
|
description: "Manage reminders for the founder. Shown in the boot brief every session. Actions: create (set new), list (view active), complete (mark done).",
|
|
10815
10886
|
inputSchema: {
|
|
10816
|
-
action:
|
|
10817
|
-
text:
|
|
10818
|
-
due_date:
|
|
10819
|
-
reminder_id:
|
|
10820
|
-
include_completed:
|
|
10887
|
+
action: z81.enum(["create", "list", "complete"]).describe("Action to perform"),
|
|
10888
|
+
text: z81.string().optional().describe("What to remind about (create)"),
|
|
10889
|
+
due_date: z81.string().optional().describe("Optional due date \u2014 ISO date (2026-04-01) or null for persistent (create)"),
|
|
10890
|
+
reminder_id: z81.string().optional().describe("Reminder UUID or text substring to match (complete)"),
|
|
10891
|
+
include_completed: z81.boolean().optional().default(false).describe("Include completed reminders (list)")
|
|
10821
10892
|
}
|
|
10822
10893
|
},
|
|
10823
10894
|
async ({ action, text: text5, due_date, reminder_id, include_completed }) => {
|
|
@@ -10870,7 +10941,7 @@ function registerReminder(server) {
|
|
|
10870
10941
|
}
|
|
10871
10942
|
|
|
10872
10943
|
// src/mcp/tools/store-global-procedure.ts
|
|
10873
|
-
import { z as
|
|
10944
|
+
import { z as z82 } from "zod";
|
|
10874
10945
|
function registerStoreGlobalProcedure(server) {
|
|
10875
10946
|
server.registerTool(
|
|
10876
10947
|
"store_global_procedure",
|
|
@@ -10878,10 +10949,10 @@ function registerStoreGlobalProcedure(server) {
|
|
|
10878
10949
|
title: "Store Company Procedure (use global_procedure instead)",
|
|
10879
10950
|
description: "DEPRECATED \u2014 use global_procedure with action='store'. Create a company procedure (customer-owned Layer 0 rule). RESTRICTED: only coordinator or founder sessions.",
|
|
10880
10951
|
inputSchema: {
|
|
10881
|
-
title:
|
|
10882
|
-
content:
|
|
10883
|
-
priority:
|
|
10884
|
-
domain:
|
|
10952
|
+
title: z82.string().describe("Short title for the procedure"),
|
|
10953
|
+
content: z82.string().max(500).describe("The procedure content \u2014 clear, actionable instruction"),
|
|
10954
|
+
priority: z82.enum(["p0", "p1", "p2"]).optional().describe("Priority tier. p0 = always (default)."),
|
|
10955
|
+
domain: z82.string().optional().describe("Category: workflow, code-style, communication, architecture, testing, security")
|
|
10885
10956
|
}
|
|
10886
10957
|
},
|
|
10887
10958
|
async ({ title, content, priority, domain }) => {
|
|
@@ -10953,7 +11024,7 @@ ${lines.join("\n\n")}`
|
|
|
10953
11024
|
}
|
|
10954
11025
|
|
|
10955
11026
|
// src/mcp/tools/deactivate-global-procedure.ts
|
|
10956
|
-
import { z as
|
|
11027
|
+
import { z as z83 } from "zod";
|
|
10957
11028
|
function registerDeactivateGlobalProcedure(server) {
|
|
10958
11029
|
server.registerTool(
|
|
10959
11030
|
"deactivate_global_procedure",
|
|
@@ -10961,7 +11032,7 @@ function registerDeactivateGlobalProcedure(server) {
|
|
|
10961
11032
|
title: "Deactivate Company Procedure (use global_procedure instead)",
|
|
10962
11033
|
description: "DEPRECATED \u2014 use global_procedure with action='deactivate'. Soft-delete a company procedure. RESTRICTED: only coordinator or founder sessions.",
|
|
10963
11034
|
inputSchema: {
|
|
10964
|
-
procedure_id:
|
|
11035
|
+
procedure_id: z83.string().describe("UUID of the company procedure to deactivate")
|
|
10965
11036
|
}
|
|
10966
11037
|
},
|
|
10967
11038
|
async ({ procedure_id }) => {
|
|
@@ -11016,7 +11087,7 @@ Content: ${row.content}`
|
|
|
11016
11087
|
}
|
|
11017
11088
|
|
|
11018
11089
|
// src/mcp/tools/people-roster.ts
|
|
11019
|
-
import { z as
|
|
11090
|
+
import { z as z84 } from "zod";
|
|
11020
11091
|
|
|
11021
11092
|
// src/lib/people.ts
|
|
11022
11093
|
import { readFile, writeFile, mkdir } from "fs/promises";
|
|
@@ -11063,10 +11134,10 @@ function registerAddPerson(server) {
|
|
|
11063
11134
|
title: "Add Person",
|
|
11064
11135
|
description: "Add or update a key human in the people roster. Used for co-founders, partners, customers \u2014 anyone agents need to know about.",
|
|
11065
11136
|
inputSchema: {
|
|
11066
|
-
name:
|
|
11067
|
-
role:
|
|
11068
|
-
relationship:
|
|
11069
|
-
notes:
|
|
11137
|
+
name: z84.string().describe("Person's name"),
|
|
11138
|
+
role: z84.string().describe("Their role (e.g. co-founder, customer, partner)"),
|
|
11139
|
+
relationship: z84.string().describe("Relationship to the organization (e.g. co-founder, early adopter, investor)"),
|
|
11140
|
+
notes: z84.string().optional().describe("Additional context about this person")
|
|
11070
11141
|
}
|
|
11071
11142
|
},
|
|
11072
11143
|
async ({ name, role, relationship, notes }) => {
|
|
@@ -11112,7 +11183,7 @@ function registerGetPerson(server) {
|
|
|
11112
11183
|
title: "Get Person",
|
|
11113
11184
|
description: "Look up a specific person by name from the people roster.",
|
|
11114
11185
|
inputSchema: {
|
|
11115
|
-
name:
|
|
11186
|
+
name: z84.string().describe("Person's name to look up")
|
|
11116
11187
|
}
|
|
11117
11188
|
},
|
|
11118
11189
|
async ({ name }) => {
|
|
@@ -11136,9 +11207,9 @@ Notes: ${person.notes}` : ""}`
|
|
|
11136
11207
|
}
|
|
11137
11208
|
|
|
11138
11209
|
// src/mcp/tools/company-actions.ts
|
|
11139
|
-
import { z as
|
|
11210
|
+
import { z as z85 } from "zod";
|
|
11140
11211
|
var FETCH_TIMEOUT_MS5 = 15e3;
|
|
11141
|
-
var ACTION =
|
|
11212
|
+
var ACTION = z85.enum(["list_connectors", "describe_connector", "preview", "execute", "list_runs", "get_run"]);
|
|
11142
11213
|
function format(payload) {
|
|
11143
11214
|
return ["# Company Actions", "", JSON.stringify(payload, null, 2)].join("\n");
|
|
11144
11215
|
}
|
|
@@ -11150,13 +11221,13 @@ function registerCompanyActions(server) {
|
|
|
11150
11221
|
description: "Preview and execute external connector actions (Asana, WhatsApp) through exe-gateway with audit/safety gates.",
|
|
11151
11222
|
inputSchema: {
|
|
11152
11223
|
action: ACTION.describe("list_connectors, describe_connector, preview, execute, list_runs, get_run"),
|
|
11153
|
-
connector:
|
|
11154
|
-
connector_ref:
|
|
11155
|
-
operation:
|
|
11156
|
-
payload:
|
|
11157
|
-
idempotency_key:
|
|
11158
|
-
confirm_token:
|
|
11159
|
-
run_id:
|
|
11224
|
+
connector: z85.string().optional().describe("Connector to use, e.g. asana, whatsapp, airtable, notion"),
|
|
11225
|
+
connector_ref: z85.string().optional().describe("Exact connector ref from list_connectors when connector names overlap"),
|
|
11226
|
+
operation: z85.string().optional().describe("Connector operation, e.g. create_task or send_message"),
|
|
11227
|
+
payload: z85.record(z85.string(), z85.unknown()).optional().describe("Operation payload"),
|
|
11228
|
+
idempotency_key: z85.string().optional().describe("Stable key to prevent duplicate execution"),
|
|
11229
|
+
confirm_token: z85.string().optional().describe("Optional future approval token"),
|
|
11230
|
+
run_id: z85.string().optional().describe("Run id for get_run")
|
|
11160
11231
|
}
|
|
11161
11232
|
},
|
|
11162
11233
|
async (input) => {
|
|
@@ -11201,8 +11272,8 @@ function registerCompanyActions(server) {
|
|
|
11201
11272
|
}
|
|
11202
11273
|
|
|
11203
11274
|
// src/mcp/tools/workflow.ts
|
|
11204
|
-
import { z as
|
|
11205
|
-
var ACTION2 =
|
|
11275
|
+
import { z as z86 } from "zod";
|
|
11276
|
+
var ACTION2 = z86.enum([
|
|
11206
11277
|
"create_workflow",
|
|
11207
11278
|
"start_workflow",
|
|
11208
11279
|
"get_workflow_status",
|
|
@@ -11210,23 +11281,23 @@ var ACTION2 = z85.enum([
|
|
|
11210
11281
|
"list_workflows",
|
|
11211
11282
|
"list_instances"
|
|
11212
11283
|
]);
|
|
11213
|
-
var StepSchema =
|
|
11214
|
-
name:
|
|
11215
|
-
type:
|
|
11216
|
-
action:
|
|
11217
|
-
type:
|
|
11218
|
-
params:
|
|
11219
|
-
requires_approval:
|
|
11284
|
+
var StepSchema = z86.object({
|
|
11285
|
+
name: z86.string().describe("Human-readable step name"),
|
|
11286
|
+
type: z86.enum(["execute_action", "wait_for_approval", "conditional"]).describe("Step type"),
|
|
11287
|
+
action: z86.object({
|
|
11288
|
+
type: z86.enum(["send_whatsapp", "send_message", "create_task", "update_wiki", "mcp_tool"]),
|
|
11289
|
+
params: z86.record(z86.string(), z86.string()),
|
|
11290
|
+
requires_approval: z86.boolean().optional()
|
|
11220
11291
|
}).optional().describe("Action to execute (for execute_action steps)"),
|
|
11221
|
-
connector:
|
|
11222
|
-
operation:
|
|
11223
|
-
payload:
|
|
11224
|
-
condition:
|
|
11225
|
-
expression:
|
|
11226
|
-
then_step:
|
|
11227
|
-
else_step:
|
|
11292
|
+
connector: z86.string().optional().describe("Connector name (e.g., asana, whatsapp)"),
|
|
11293
|
+
operation: z86.string().optional().describe("Connector operation (e.g., create_task)"),
|
|
11294
|
+
payload: z86.record(z86.string(), z86.unknown()).optional().describe("Operation payload"),
|
|
11295
|
+
condition: z86.object({
|
|
11296
|
+
expression: z86.string().describe("Expression like '{{step.1.result.status}} == completed'"),
|
|
11297
|
+
then_step: z86.number().optional(),
|
|
11298
|
+
else_step: z86.number().optional()
|
|
11228
11299
|
}).optional().describe("Condition for conditional steps"),
|
|
11229
|
-
approval_message:
|
|
11300
|
+
approval_message: z86.string().optional().describe("Message shown when waiting for approval")
|
|
11230
11301
|
});
|
|
11231
11302
|
function registerWorkflowTool(server) {
|
|
11232
11303
|
server.registerTool(
|
|
@@ -11236,14 +11307,14 @@ function registerWorkflowTool(server) {
|
|
|
11236
11307
|
description: "Create, run, and manage multi-step workflows that chain actions with approval gates. Steps reference previous outputs via {{step.N.result}}. Actions: create_workflow, start_workflow, get_workflow_status, approve_workflow_step, list_workflows, list_instances.",
|
|
11237
11308
|
inputSchema: {
|
|
11238
11309
|
action: ACTION2.describe("create_workflow | start_workflow | get_workflow_status | approve_workflow_step | list_workflows | list_instances"),
|
|
11239
|
-
name:
|
|
11240
|
-
description:
|
|
11241
|
-
steps:
|
|
11242
|
-
definition_id:
|
|
11243
|
-
instance_id:
|
|
11244
|
-
context:
|
|
11245
|
-
approved:
|
|
11246
|
-
status_filter:
|
|
11310
|
+
name: z86.string().optional().describe("Workflow name (for create_workflow)"),
|
|
11311
|
+
description: z86.string().optional().describe("Workflow description (for create_workflow)"),
|
|
11312
|
+
steps: z86.array(StepSchema).optional().describe("Workflow steps (for create_workflow)"),
|
|
11313
|
+
definition_id: z86.string().optional().describe("Workflow definition ID (for start_workflow)"),
|
|
11314
|
+
instance_id: z86.string().optional().describe("Workflow instance ID (for get_workflow_status, approve_workflow_step)"),
|
|
11315
|
+
context: z86.record(z86.string(), z86.unknown()).optional().describe("Initial context/record (for start_workflow)"),
|
|
11316
|
+
approved: z86.boolean().optional().describe("Approve (true) or reject (false) the step (for approve_workflow_step)"),
|
|
11317
|
+
status_filter: z86.string().optional().describe("Filter instances by status (for list_instances)")
|
|
11247
11318
|
}
|
|
11248
11319
|
},
|
|
11249
11320
|
async (input) => {
|
|
@@ -11256,7 +11327,7 @@ function registerWorkflowTool(server) {
|
|
|
11256
11327
|
getWorkflowInstance,
|
|
11257
11328
|
listWorkflowInstances,
|
|
11258
11329
|
approveWorkflowStep
|
|
11259
|
-
} = await import("./workflow-engine-
|
|
11330
|
+
} = await import("./workflow-engine-EPPZ226V.js");
|
|
11260
11331
|
try {
|
|
11261
11332
|
switch (input.action) {
|
|
11262
11333
|
case "create_workflow": {
|
|
@@ -11379,17 +11450,17 @@ function formatInstanceStatus(inst, def) {
|
|
|
11379
11450
|
}
|
|
11380
11451
|
|
|
11381
11452
|
// src/mcp/tools/create-bug-report.ts
|
|
11382
|
-
import { z as
|
|
11453
|
+
import { z as z87 } from "zod";
|
|
11383
11454
|
import crypto4 from "crypto";
|
|
11384
11455
|
import { mkdir as mkdir2, writeFile as writeFile2 } from "fs/promises";
|
|
11385
11456
|
import path13 from "path";
|
|
11386
|
-
var CLASSIFICATION =
|
|
11457
|
+
var CLASSIFICATION = z87.enum([
|
|
11387
11458
|
"upstream_bug",
|
|
11388
11459
|
"customer_customization",
|
|
11389
11460
|
"emergency_hotfix",
|
|
11390
11461
|
"unclear"
|
|
11391
11462
|
]);
|
|
11392
|
-
var SEVERITY =
|
|
11463
|
+
var SEVERITY = z87.enum(["p0", "p1", "p2", "p3"]);
|
|
11393
11464
|
function slugify(input) {
|
|
11394
11465
|
return input.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "").slice(0, 80) || "bug-report";
|
|
11395
11466
|
}
|
|
@@ -11483,29 +11554,29 @@ function registerCreateBugReport(server) {
|
|
|
11483
11554
|
title: "Create Bug Report",
|
|
11484
11555
|
description: "Classify and file an exe-os issue as upstream_bug, customer_customization, emergency_hotfix, or unclear. Writes a local report, stores memory, and optionally sends to AskExe support when a support endpoint is configured. IMPORTANT: Before filing, use diagnostics(action='healthcheck') and review orchestration metrics (exe-os-orchestration-metrics --since 1h) to include evidence in your report. Metrics are auto-attached to every bug report.",
|
|
11485
11556
|
inputSchema: {
|
|
11486
|
-
title:
|
|
11557
|
+
title: z87.string().min(3).describe("Short descriptive title"),
|
|
11487
11558
|
classification: CLASSIFICATION.describe(
|
|
11488
11559
|
"upstream_bug = platform defect; customer_customization = local preference; emergency_hotfix = temporary local patch; unclear = needs maintainer triage"
|
|
11489
11560
|
),
|
|
11490
11561
|
severity: SEVERITY.default("p2").describe("p0 critical \u2192 p3 low"),
|
|
11491
|
-
summary:
|
|
11492
|
-
customer_impact:
|
|
11493
|
-
reproduction_steps:
|
|
11494
|
-
expected:
|
|
11495
|
-
actual:
|
|
11496
|
-
files_changed:
|
|
11497
|
-
workaround:
|
|
11498
|
-
local_patch_diff:
|
|
11499
|
-
product:
|
|
11500
|
-
package_version:
|
|
11501
|
-
project_name:
|
|
11502
|
-
implementing_branch:
|
|
11503
|
-
attachments:
|
|
11504
|
-
filename:
|
|
11505
|
-
content:
|
|
11562
|
+
summary: z87.string().min(10).describe("What happened and why it matters"),
|
|
11563
|
+
customer_impact: z87.string().optional().describe("How this affects the customer/founder"),
|
|
11564
|
+
reproduction_steps: z87.array(z87.string()).optional().describe("Steps to reproduce"),
|
|
11565
|
+
expected: z87.string().optional().describe("Expected behavior"),
|
|
11566
|
+
actual: z87.string().optional().describe("Actual behavior"),
|
|
11567
|
+
files_changed: z87.array(z87.string()).optional().describe("Files changed or suspected"),
|
|
11568
|
+
workaround: z87.string().optional().describe("Temporary local workaround/hotfix, if any"),
|
|
11569
|
+
local_patch_diff: z87.string().optional().describe("Small local diff or patch summary"),
|
|
11570
|
+
product: z87.string().optional().describe("Product this bug is for: exe-os, exe-create, exe-wiki, exe-gateway, exe-crm, exe-build. Defaults to exe-os."),
|
|
11571
|
+
package_version: z87.string().optional().describe("Installed package version"),
|
|
11572
|
+
project_name: z87.string().optional().describe("Project/customer context"),
|
|
11573
|
+
implementing_branch: z87.string().optional().describe("Branch name or PR URL that implements/fixes this bug. Recorded on the report so future work can find existing fixes instead of redoing them (bug e324f244)."),
|
|
11574
|
+
attachments: z87.array(z87.object({
|
|
11575
|
+
filename: z87.string().min(1).describe("Filename for the attachment (e.g. error.log, patch.diff)"),
|
|
11576
|
+
content: z87.string().min(1).describe("File content \u2014 plain text (diffs, logs, config snippets)")
|
|
11506
11577
|
})).optional().describe("File attachments: diffs, logs, config snippets, screenshots (text-based)"),
|
|
11507
|
-
send_upstream:
|
|
11508
|
-
on_behalf_of_email:
|
|
11578
|
+
send_upstream: z87.boolean().default(true).describe("Attempt to POST to configured AskExe support endpoint"),
|
|
11579
|
+
on_behalf_of_email: z87.string().email().optional().describe("ADMIN ONLY: file this request owned by another customer's license email; ignored unless caller holds the support admin token")
|
|
11509
11580
|
}
|
|
11510
11581
|
},
|
|
11511
11582
|
async ({
|
|
@@ -11543,7 +11614,7 @@ function registerCreateBugReport(server) {
|
|
|
11543
11614
|
const version = package_version ?? "unknown";
|
|
11544
11615
|
let metricsSnapshot = "";
|
|
11545
11616
|
try {
|
|
11546
|
-
const { getOrchestrationMetrics, formatOrchestrationMetrics } = await import("./orchestration-events-
|
|
11617
|
+
const { getOrchestrationMetrics, formatOrchestrationMetrics } = await import("./orchestration-events-O5P5NEKS.js");
|
|
11547
11618
|
const sinceIso = new Date(Date.now() - 60 * 60 * 1e3).toISOString();
|
|
11548
11619
|
const metrics = await getOrchestrationMetrics({ sinceIso });
|
|
11549
11620
|
if (metrics.totalEvents > 0) {
|
|
@@ -11684,17 +11755,17 @@ Upstream status: ${upstreamStatus}`
|
|
|
11684
11755
|
}
|
|
11685
11756
|
|
|
11686
11757
|
// src/mcp/tools/create-feature-request.ts
|
|
11687
|
-
import { z as
|
|
11758
|
+
import { z as z88 } from "zod";
|
|
11688
11759
|
import crypto5 from "crypto";
|
|
11689
11760
|
import { mkdir as mkdir3, writeFile as writeFile3 } from "fs/promises";
|
|
11690
11761
|
import path14 from "path";
|
|
11691
|
-
var CATEGORY =
|
|
11762
|
+
var CATEGORY = z88.enum([
|
|
11692
11763
|
"upstream_feature",
|
|
11693
11764
|
"local_customization",
|
|
11694
11765
|
"integration",
|
|
11695
11766
|
"unclear"
|
|
11696
11767
|
]);
|
|
11697
|
-
var PRIORITY =
|
|
11768
|
+
var PRIORITY = z88.enum(["p0", "p1", "p2", "p3"]);
|
|
11698
11769
|
function slugify2(input) {
|
|
11699
11770
|
return input.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "").slice(0, 80) || "feature-request";
|
|
11700
11771
|
}
|
|
@@ -11768,26 +11839,26 @@ function registerCreateFeatureRequest(server) {
|
|
|
11768
11839
|
title: "Create Feature Request",
|
|
11769
11840
|
description: "File a feature request for exe-os: upstream_feature (requires platform changes), local_customization (configurable in customer layers), integration (third-party), or unclear. Writes a local report, stores memory, and optionally sends to AskExe.",
|
|
11770
11841
|
inputSchema: {
|
|
11771
|
-
title:
|
|
11842
|
+
title: z88.string().min(3).describe("Short descriptive title"),
|
|
11772
11843
|
category: CATEGORY.describe(
|
|
11773
11844
|
"upstream_feature = platform capability change; local_customization = configurable in customer layers; integration = third-party connector; unclear = needs product triage"
|
|
11774
11845
|
),
|
|
11775
11846
|
priority: PRIORITY.default("p2").describe("p0 critical \u2192 p3 low"),
|
|
11776
|
-
description:
|
|
11777
|
-
use_case:
|
|
11778
|
-
current_workaround:
|
|
11779
|
-
proposed_solution:
|
|
11780
|
-
business_impact:
|
|
11781
|
-
product:
|
|
11782
|
-
package_version:
|
|
11783
|
-
project_name:
|
|
11784
|
-
implementing_branch:
|
|
11785
|
-
attachments:
|
|
11786
|
-
filename:
|
|
11787
|
-
content:
|
|
11847
|
+
description: z88.string().min(10).describe("What capability is needed and why"),
|
|
11848
|
+
use_case: z88.string().optional().describe("Concrete scenario where this feature would be used"),
|
|
11849
|
+
current_workaround: z88.string().optional().describe("How the need is currently addressed, if at all"),
|
|
11850
|
+
proposed_solution: z88.string().optional().describe("Suggested implementation approach"),
|
|
11851
|
+
business_impact: z88.string().optional().describe("Impact on business/workflow if this ships"),
|
|
11852
|
+
product: z88.string().optional().describe("Product this feature is for: exe-os, exe-create, exe-wiki, exe-gateway, exe-crm, exe-build. Defaults to exe-os."),
|
|
11853
|
+
package_version: z88.string().optional().describe("Installed package version"),
|
|
11854
|
+
project_name: z88.string().optional().describe("Project/customer context"),
|
|
11855
|
+
implementing_branch: z88.string().optional().describe("Branch name or PR URL that implements this feature. Recorded on the request so future work can find existing implementations instead of redoing them (bug e324f244)."),
|
|
11856
|
+
attachments: z88.array(z88.object({
|
|
11857
|
+
filename: z88.string().min(1).describe("Filename for the attachment (e.g. mockup.txt, api-sketch.diff)"),
|
|
11858
|
+
content: z88.string().min(1).describe("File content \u2014 plain text (diffs, logs, config snippets)")
|
|
11788
11859
|
})).optional().describe("File attachments: diffs, logs, config snippets, mockups (text-based)"),
|
|
11789
|
-
send_upstream:
|
|
11790
|
-
on_behalf_of_email:
|
|
11860
|
+
send_upstream: z88.boolean().default(true).describe("Attempt to POST to configured AskExe support endpoint"),
|
|
11861
|
+
on_behalf_of_email: z88.string().email().optional().describe("ADMIN ONLY: file this request owned by another customer's license email; ignored unless caller holds the support admin token")
|
|
11791
11862
|
}
|
|
11792
11863
|
},
|
|
11793
11864
|
async ({
|
|
@@ -11943,10 +12014,10 @@ Upstream status: ${upstreamStatus}`
|
|
|
11943
12014
|
}
|
|
11944
12015
|
|
|
11945
12016
|
// src/mcp/tools/update-bug-report.ts
|
|
11946
|
-
import { z as
|
|
12017
|
+
import { z as z89 } from "zod";
|
|
11947
12018
|
import { readdir, readFile as readFile2, writeFile as writeFile4 } from "fs/promises";
|
|
11948
12019
|
import path15 from "path";
|
|
11949
|
-
var STATUS =
|
|
12020
|
+
var STATUS = z89.enum(["open", "triaged", "fixed", "closed", "wontfix"]);
|
|
11950
12021
|
var UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/;
|
|
11951
12022
|
var FRONTMATTER_ID_RE = /^id:\s*([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})\s*$/m;
|
|
11952
12023
|
async function readReportId(filePath) {
|
|
@@ -12053,20 +12124,21 @@ function registerUpdateBugReport(server) {
|
|
|
12053
12124
|
title: "Update Bug Report",
|
|
12054
12125
|
description: "Update a previously filed bug report. As the filing customer (owner) you can add follow-up notes (notes/add_note), attach additional evidence (add_evidence), and request a reopen on a recurring fixed bug (reopen_request). AskExe support (with an admin token) can also move status: open \u2192 triaged \u2192 fixed \u2192 closed (or wontfix). Updates the local file, POSTs the change to AskExe support, and stores a memory.",
|
|
12055
12126
|
inputSchema: {
|
|
12056
|
-
id:
|
|
12127
|
+
id: z89.string().min(8).describe("Bug report UUID (full or 8-char prefix)"),
|
|
12057
12128
|
status: STATUS.optional().describe(
|
|
12058
12129
|
"New status (admin only): open, triaged, fixed, closed, wontfix. Owners cannot set this \u2014 use reopen_request instead."
|
|
12059
12130
|
),
|
|
12060
|
-
fix_version:
|
|
12061
|
-
|
|
12062
|
-
|
|
12063
|
-
|
|
12064
|
-
|
|
12065
|
-
|
|
12066
|
-
|
|
12131
|
+
fix_version: z89.string().optional().describe("Version that fixes this bug (admin only, e.g. '0.9.161')"),
|
|
12132
|
+
product: z89.string().optional().describe("Re-label this bug's product (admin only): exe-os, exe-create, exe-wiki, exe-gateway, exe-crm, exe-build, exe-chat, exe-auth, exe-monitor, exe-db, exe-erp"),
|
|
12133
|
+
notes: z89.string().optional().describe("Follow-up notes about the bug or status change"),
|
|
12134
|
+
add_note: z89.string().optional().describe("Owner follow-up note (alias of notes)"),
|
|
12135
|
+
add_evidence: z89.string().optional().describe("Additional evidence: logs, repro details, stack traces"),
|
|
12136
|
+
reopen_request: z89.boolean().optional().describe("Request a reopen on a recurring fixed/closed bug"),
|
|
12137
|
+
reopen_reason: z89.string().optional().describe("Why the bug should be reopened (recurring symptoms, etc.)"),
|
|
12138
|
+
send_upstream: z89.boolean().default(true).describe("POST the change to AskExe support endpoint")
|
|
12067
12139
|
}
|
|
12068
12140
|
},
|
|
12069
|
-
async ({ id, status: status2, fix_version, notes, add_note, add_evidence, reopen_request, reopen_reason, send_upstream }) => {
|
|
12141
|
+
async ({ id, status: status2, fix_version, product, notes, add_note, add_evidence, reopen_request, reopen_reason, send_upstream }) => {
|
|
12070
12142
|
const { agentId, agentRole } = getActiveAgent();
|
|
12071
12143
|
const config = await loadConfig();
|
|
12072
12144
|
const isAdmin = !!resolveSupportAdminToken(config);
|
|
@@ -12108,6 +12180,7 @@ These do not match \u2014 not updating to avoid mutating the wrong bug. Verify t
|
|
|
12108
12180
|
if (reopen) changeParts.push("reopen requested");
|
|
12109
12181
|
else if (status2) changeParts.push(`marked ${status2}`);
|
|
12110
12182
|
if (fix_version) changeParts.push(`fix v${fix_version}`);
|
|
12183
|
+
if (product) changeParts.push(`product \u2192 ${product}`);
|
|
12111
12184
|
if (add_evidence) changeParts.push("evidence added");
|
|
12112
12185
|
if (followUpNote && !reopen && !status2) changeParts.push("note added");
|
|
12113
12186
|
const change = changeParts.length > 0 ? changeParts.join(", ") : "updated";
|
|
@@ -12151,6 +12224,7 @@ These do not match \u2014 not updating to avoid mutating the wrong bug. Verify t
|
|
|
12151
12224
|
payload.fixed_version = fix_version;
|
|
12152
12225
|
payload.fix_version = fix_version;
|
|
12153
12226
|
}
|
|
12227
|
+
if (product) payload.product = product;
|
|
12154
12228
|
if (followUpNote) payload.triage_notes = followUpNote;
|
|
12155
12229
|
} else {
|
|
12156
12230
|
if (followUpNote) payload.add_note = followUpNote;
|
|
@@ -12170,6 +12244,7 @@ ID: ${fullId}
|
|
|
12170
12244
|
` + (status2 && isAdmin ? `New status: ${status2}
|
|
12171
12245
|
` : "") + (reopen ? `Reopen requested: yes
|
|
12172
12246
|
` : "") + (fix_version && isAdmin ? `Fix version: ${fix_version}
|
|
12247
|
+
` : "") + (product && isAdmin ? `Product: ${product}
|
|
12173
12248
|
` : "") + (add_evidence ? `Evidence: added
|
|
12174
12249
|
` : "") + (followUpNote ? `Note: added
|
|
12175
12250
|
` : "") + `Mode: ${isAdmin ? "admin" : "owner"}
|
|
@@ -12184,10 +12259,10 @@ Upstream status: ${upstreamStatus}`
|
|
|
12184
12259
|
}
|
|
12185
12260
|
|
|
12186
12261
|
// src/mcp/tools/update-feature-request.ts
|
|
12187
|
-
import { z as
|
|
12262
|
+
import { z as z90 } from "zod";
|
|
12188
12263
|
import { readdir as readdir2, readFile as readFile3, writeFile as writeFile5 } from "fs/promises";
|
|
12189
12264
|
import path16 from "path";
|
|
12190
|
-
var STATUS2 =
|
|
12265
|
+
var STATUS2 = z90.enum(["open", "planned", "in_progress", "shipped", "closed", "wontdo"]);
|
|
12191
12266
|
async function findRequestFile(id) {
|
|
12192
12267
|
const dir = path16.join(EXE_AI_DIR, "feature-requests");
|
|
12193
12268
|
try {
|
|
@@ -12247,11 +12322,11 @@ function registerUpdateFeatureRequest(server) {
|
|
|
12247
12322
|
title: "Update Feature Request",
|
|
12248
12323
|
description: "Update the status of a previously filed feature request. Updates local file, POSTs change to AskExe support, and stores a memory. Status flow: open \u2192 planned \u2192 in_progress \u2192 shipped \u2192 closed (or wontdo at any point).",
|
|
12249
12324
|
inputSchema: {
|
|
12250
|
-
id:
|
|
12325
|
+
id: z90.string().min(8).describe("Feature request UUID (full or 8-char prefix)"),
|
|
12251
12326
|
status: STATUS2.describe("New status: open, planned, in_progress, shipped, closed, wontdo"),
|
|
12252
|
-
shipped_version:
|
|
12253
|
-
notes:
|
|
12254
|
-
send_upstream:
|
|
12327
|
+
shipped_version: z90.string().optional().describe("Version that ships this feature (e.g. '0.9.161')"),
|
|
12328
|
+
notes: z90.string().optional().describe("Notes about the status change"),
|
|
12329
|
+
send_upstream: z90.boolean().default(true).describe("POST status change to AskExe support endpoint")
|
|
12255
12330
|
}
|
|
12256
12331
|
},
|
|
12257
12332
|
async ({ id, status: status2, shipped_version, notes, send_upstream }) => {
|
|
@@ -12323,7 +12398,7 @@ Upstream status: ${upstreamStatus}`
|
|
|
12323
12398
|
}
|
|
12324
12399
|
|
|
12325
12400
|
// src/mcp/tools/support.ts
|
|
12326
|
-
import { z as
|
|
12401
|
+
import { z as z91 } from "zod";
|
|
12327
12402
|
function formatRows(rows, mode) {
|
|
12328
12403
|
const lines = [`exe-os support ${mode}`, ""];
|
|
12329
12404
|
for (const row of rows) {
|
|
@@ -12364,7 +12439,7 @@ function registerSupportTools(server) {
|
|
|
12364
12439
|
title: "Support Test",
|
|
12365
12440
|
description: "End-to-end support intake smoke test. Files a clearly marked test report upstream and auto-closes it on AskExe machines with admin credentials.",
|
|
12366
12441
|
inputSchema: {
|
|
12367
|
-
project:
|
|
12442
|
+
project: z91.string().default("support-smoke").describe("Customer/project name, e.g. hygo")
|
|
12368
12443
|
}
|
|
12369
12444
|
},
|
|
12370
12445
|
async ({ project }) => {
|
|
@@ -12382,9 +12457,9 @@ function registerSupportTools(server) {
|
|
|
12382
12457
|
title: "My Bug Reports",
|
|
12383
12458
|
description: "List bug reports you've filed, scoped to your license. Shows status (open/triaged/fixed/closed), severity, and fixed_version so you know when to update.",
|
|
12384
12459
|
inputSchema: {
|
|
12385
|
-
status:
|
|
12386
|
-
limit:
|
|
12387
|
-
offset:
|
|
12460
|
+
status: z91.enum(["all", "open", "triaged", "fixed", "closed", "wontfix"]).default("all").describe("Filter by status. Default: all"),
|
|
12461
|
+
limit: z91.number().min(1).max(500).default(25).describe("Max results per page (1-500)"),
|
|
12462
|
+
offset: z91.number().min(0).default(0).describe("Number of results to skip for pagination. Use next_offset from a prior response.")
|
|
12388
12463
|
}
|
|
12389
12464
|
},
|
|
12390
12465
|
async ({ status: status2, limit, offset }) => {
|
|
@@ -12454,9 +12529,9 @@ function registerSupportTools(server) {
|
|
|
12454
12529
|
title: "My Feature Requests",
|
|
12455
12530
|
description: "List feature requests you've filed, scoped to your license. Shows status (open/planned/in_progress/shipped/closed), priority, and shipped_version so you know when to update.",
|
|
12456
12531
|
inputSchema: {
|
|
12457
|
-
status:
|
|
12458
|
-
limit:
|
|
12459
|
-
offset:
|
|
12532
|
+
status: z91.enum(["all", "open", "planned", "in_progress", "shipped", "closed", "wontdo"]).default("all").describe("Filter by status. Default: all"),
|
|
12533
|
+
limit: z91.number().min(1).max(500).default(25).describe("Max results per page (1-500)"),
|
|
12534
|
+
offset: z91.number().min(0).default(0).describe("Number of results to skip for pagination. Use next_offset from a prior response.")
|
|
12460
12535
|
}
|
|
12461
12536
|
},
|
|
12462
12537
|
async ({ status: status2, limit, offset }) => {
|
|
@@ -12527,8 +12602,8 @@ function registerSupportTools(server) {
|
|
|
12527
12602
|
title: "My Reviews",
|
|
12528
12603
|
description: "List reviews you've filed, scoped to your license. Shows status (open/in_review/approved/merged/closed/rejected), priority, and resolution.",
|
|
12529
12604
|
inputSchema: {
|
|
12530
|
-
status:
|
|
12531
|
-
limit:
|
|
12605
|
+
status: z91.enum(["all", "open", "in_review", "approved", "merged", "closed", "rejected"]).default("all").describe("Filter by status. Default: all"),
|
|
12606
|
+
limit: z91.number().min(1).max(50).default(25).describe("Max results")
|
|
12532
12607
|
}
|
|
12533
12608
|
},
|
|
12534
12609
|
async ({ status: status2, limit }) => {
|
|
@@ -12602,7 +12677,7 @@ import { existsSync as existsSync8 } from "fs";
|
|
|
12602
12677
|
import { dirname, join as join3, parse as pathParse } from "path";
|
|
12603
12678
|
import { fileURLToPath as fileURLToPath2 } from "url";
|
|
12604
12679
|
import { promisify as promisify2 } from "util";
|
|
12605
|
-
import { z as
|
|
12680
|
+
import { z as z92 } from "zod";
|
|
12606
12681
|
function findPackageRoot() {
|
|
12607
12682
|
let dir = dirname(fileURLToPath2(import.meta.url));
|
|
12608
12683
|
const { root } = pathParse(dir);
|
|
@@ -12678,12 +12753,12 @@ function registerCliParityTools(server) {
|
|
|
12678
12753
|
title: "Doctor",
|
|
12679
12754
|
description: "Run exe-os doctor audit. Defaults to read-only diagnostics; optional dry-run/fix flags mirror CLI.",
|
|
12680
12755
|
inputSchema: {
|
|
12681
|
-
agent:
|
|
12682
|
-
project:
|
|
12683
|
-
verbose:
|
|
12684
|
-
conflicts:
|
|
12685
|
-
dry_run:
|
|
12686
|
-
fix:
|
|
12756
|
+
agent: z92.string().optional(),
|
|
12757
|
+
project: z92.string().optional(),
|
|
12758
|
+
verbose: z92.boolean().default(false),
|
|
12759
|
+
conflicts: z92.boolean().default(false),
|
|
12760
|
+
dry_run: z92.boolean().default(false),
|
|
12761
|
+
fix: z92.boolean().default(false)
|
|
12687
12762
|
}
|
|
12688
12763
|
}, async ({ agent, project, verbose, conflicts, dry_run, fix }) => {
|
|
12689
12764
|
const args = [];
|
|
@@ -12700,9 +12775,9 @@ function registerCliParityTools(server) {
|
|
|
12700
12775
|
title: "Rename Employee",
|
|
12701
12776
|
description: "Rename an employee using the same path as `exe-os rename <old> <new>`. Use for customer roster/identity renames.",
|
|
12702
12777
|
inputSchema: {
|
|
12703
|
-
old_name:
|
|
12704
|
-
new_name:
|
|
12705
|
-
dry_run:
|
|
12778
|
+
old_name: z92.string().min(1),
|
|
12779
|
+
new_name: z92.string().min(1),
|
|
12780
|
+
dry_run: z92.boolean().default(false)
|
|
12706
12781
|
}
|
|
12707
12782
|
}, async ({ old_name, new_name, dry_run }) => {
|
|
12708
12783
|
if (dry_run) {
|
|
@@ -12715,7 +12790,7 @@ function registerCliParityTools(server) {
|
|
|
12715
12790
|
server.registerTool("status_brief", {
|
|
12716
12791
|
title: "Status Brief",
|
|
12717
12792
|
description: "Return current employee/tmux status. Mirrors `exe-status` and supports optional deep view for one employee.",
|
|
12718
|
-
inputSchema: { employee:
|
|
12793
|
+
inputSchema: { employee: z92.string().optional() }
|
|
12719
12794
|
}, async ({ employee }) => {
|
|
12720
12795
|
const text5 = await status(employee);
|
|
12721
12796
|
return result2(text5, { ok: true, employee: employee ?? null });
|
|
@@ -12723,7 +12798,7 @@ function registerCliParityTools(server) {
|
|
|
12723
12798
|
server.registerTool("pending_work_summary", {
|
|
12724
12799
|
title: "Pending Work Summary",
|
|
12725
12800
|
description: "Return pending reviews, messages, and notifications using the same summaries as the CLI tools.",
|
|
12726
|
-
inputSchema: { agent:
|
|
12801
|
+
inputSchema: { agent: z92.string().optional() }
|
|
12727
12802
|
}, async ({ agent }) => {
|
|
12728
12803
|
const settled = await Promise.allSettled([
|
|
12729
12804
|
runDistScript("exe-pending-reviews", [], 3e4),
|
|
@@ -12759,7 +12834,7 @@ function registerCliParityTools(server) {
|
|
|
12759
12834
|
server.registerTool("key_rotation_preflight", {
|
|
12760
12835
|
title: "Key Rotation Preflight",
|
|
12761
12836
|
description: "Dry-run key rotation/update preflight. No destructive changes.",
|
|
12762
|
-
inputSchema: { mode:
|
|
12837
|
+
inputSchema: { mode: z92.enum(["rotate", "update"]).default("rotate") }
|
|
12763
12838
|
}, async ({ mode }) => {
|
|
12764
12839
|
const out = await runCommand("exe-os", ["key", mode, "--dry-run"], 6e4);
|
|
12765
12840
|
return result2(out.text, { ok: out.ok, command: out.command, mode }, !out.ok);
|
|
@@ -12785,11 +12860,11 @@ function registerCliParityTools(server) {
|
|
|
12785
12860
|
title: "Stack Update Check",
|
|
12786
12861
|
description: "Plan/check a customer stack update without applying Docker changes. Mirrors `exe-os stack-update --check`.",
|
|
12787
12862
|
inputSchema: {
|
|
12788
|
-
target:
|
|
12789
|
-
manifest:
|
|
12790
|
-
compose_file:
|
|
12791
|
-
env_file:
|
|
12792
|
-
deployment_persona:
|
|
12863
|
+
target: z92.string().optional(),
|
|
12864
|
+
manifest: z92.string().optional(),
|
|
12865
|
+
compose_file: z92.string().optional(),
|
|
12866
|
+
env_file: z92.string().optional(),
|
|
12867
|
+
deployment_persona: z92.enum(["customer", "askexe-control-plane"]).default("customer")
|
|
12793
12868
|
}
|
|
12794
12869
|
}, async ({ target, manifest, compose_file, env_file, deployment_persona }) => {
|
|
12795
12870
|
const args = ["stack-update", "--check", "--deployment-persona", deployment_persona];
|
|
@@ -12808,7 +12883,7 @@ function registerCliParityTools(server) {
|
|
|
12808
12883
|
const out = await runCommand("exe-os", ["cloud", "status"], 45e3);
|
|
12809
12884
|
let healthSection = "";
|
|
12810
12885
|
try {
|
|
12811
|
-
const { getRetrievalHealth: getRetrievalHealth2, formatDegradations: formatDegradations2 } = await import("./retrieval-health-
|
|
12886
|
+
const { getRetrievalHealth: getRetrievalHealth2, formatDegradations: formatDegradations2 } = await import("./retrieval-health-ULVVOIPL.js");
|
|
12812
12887
|
const h = await getRetrievalHealth2();
|
|
12813
12888
|
const lines = [
|
|
12814
12889
|
"",
|
|
@@ -12843,7 +12918,7 @@ function registerCliParityTools(server) {
|
|
|
12843
12918
|
}
|
|
12844
12919
|
|
|
12845
12920
|
// src/mcp/tools/code-context.ts
|
|
12846
|
-
import { z as
|
|
12921
|
+
import { z as z93 } from "zod";
|
|
12847
12922
|
function errorResult10(text5) {
|
|
12848
12923
|
return { content: [{ type: "text", text: text5 }], isError: true };
|
|
12849
12924
|
}
|
|
@@ -12855,20 +12930,20 @@ function registerCodeContext(server) {
|
|
|
12855
12930
|
title: "Code Context",
|
|
12856
12931
|
description: "Persistent codebase context engine with semantic vector search. One consolidated tool to avoid MCP bloat. Actions: index (structural only), index_embed (structural + vector embeddings), search (semantic+lexical hybrid), trace, blast_radius, stats. Search uses RRF fusion of embeddings (cosine similarity) + lexical scoring. Falls back to lexical if daemon unavailable or embeddings are off.",
|
|
12857
12932
|
inputSchema: {
|
|
12858
|
-
action:
|
|
12859
|
-
project_root:
|
|
12860
|
-
query:
|
|
12861
|
-
symbol:
|
|
12862
|
-
file_path:
|
|
12863
|
-
force:
|
|
12864
|
-
limit:
|
|
12865
|
-
offset:
|
|
12866
|
-
refresh_index:
|
|
12867
|
-
languages:
|
|
12868
|
-
paths:
|
|
12869
|
-
depth:
|
|
12870
|
-
max_files:
|
|
12871
|
-
lexical_only:
|
|
12933
|
+
action: z93.enum(["index", "index_embed", "search", "trace", "blast_radius", "stats"]).describe("Code context operation. index_embed = index + generate embeddings for semantic search."),
|
|
12934
|
+
project_root: z93.string().optional().describe("Repository root. Defaults to current working directory."),
|
|
12935
|
+
query: z93.string().optional().describe("Natural language search query (e.g. 'authentication logic', 'database migration'). Semantic search finds conceptual matches, not just keywords."),
|
|
12936
|
+
symbol: z93.string().optional().describe("Symbol/function/class/type name for trace or blast_radius"),
|
|
12937
|
+
file_path: z93.string().optional().describe("File path for blast_radius"),
|
|
12938
|
+
force: z93.boolean().optional().describe("Force rebuild before answering"),
|
|
12939
|
+
limit: z93.coerce.number().int().min(1).max(100).optional().describe("Max results"),
|
|
12940
|
+
offset: z93.coerce.number().int().min(0).optional().describe("Search pagination offset"),
|
|
12941
|
+
refresh_index: z93.boolean().optional().describe("Refresh/rebuild index before searching"),
|
|
12942
|
+
languages: z93.array(z93.string()).optional().describe('Language filters, e.g. ["python", "typescript"]'),
|
|
12943
|
+
paths: z93.array(z93.string()).optional().describe("Path/glob filters"),
|
|
12944
|
+
depth: z93.coerce.number().int().min(1).max(5).optional().describe("Dependent traversal depth for blast_radius"),
|
|
12945
|
+
max_files: z93.coerce.number().int().min(1).max(1e4).optional().describe("Max code files to index"),
|
|
12946
|
+
lexical_only: z93.boolean().optional().describe("Force lexical-only search (skip vector similarity). Default: false \u2014 uses semantic hybrid search.")
|
|
12872
12947
|
}
|
|
12873
12948
|
}, async ({ action, project_root, query, symbol, file_path, force, limit, offset, refresh_index, languages, paths, depth, max_files, lexical_only }) => {
|
|
12874
12949
|
const opts = { projectRoot: project_root, force, maxFiles: max_files };
|
|
@@ -12876,7 +12951,7 @@ function registerCodeContext(server) {
|
|
|
12876
12951
|
const index = buildCodeContextIndex(opts);
|
|
12877
12952
|
let graphExtract;
|
|
12878
12953
|
try {
|
|
12879
|
-
const { autoExtractGraphEntities } = await import("./graph-auto-extract-
|
|
12954
|
+
const { autoExtractGraphEntities } = await import("./graph-auto-extract-AJZUV3PO.js");
|
|
12880
12955
|
graphExtract = await autoExtractGraphEntities(opts.projectRoot);
|
|
12881
12956
|
} catch {
|
|
12882
12957
|
}
|
|
@@ -12951,13 +13026,13 @@ function registerCodeContext(server) {
|
|
|
12951
13026
|
}
|
|
12952
13027
|
|
|
12953
13028
|
// src/mcp/tools/support-inbox.ts
|
|
12954
|
-
import { z as
|
|
13029
|
+
import { z as z94 } from "zod";
|
|
12955
13030
|
import { readFileSync as readFileSync7 } from "fs";
|
|
12956
13031
|
import { join as join4 } from "path";
|
|
12957
13032
|
import { homedir as homedir4 } from "os";
|
|
12958
13033
|
var DEFAULT_ENDPOINT = "https://api.askexe.com/admin/support/bug-reports";
|
|
12959
13034
|
var DEFAULT_OWNER_ENDPOINT = "https://api.askexe.com/v1/support/bug-reports";
|
|
12960
|
-
var STATUS3 =
|
|
13035
|
+
var STATUS3 = z94.enum(["open", "triaged", "fixed", "closed", "wontfix"]);
|
|
12961
13036
|
function adminToken() {
|
|
12962
13037
|
if (process.env.ASKEXE_SUPPORT_ADMIN_TOKEN) return process.env.ASKEXE_SUPPORT_ADMIN_TOKEN;
|
|
12963
13038
|
if (process.env.EXE_SUPPORT_ADMIN_TOKEN) return process.env.EXE_SUPPORT_ADMIN_TOKEN;
|
|
@@ -13064,9 +13139,9 @@ function registerListBugReports(server) {
|
|
|
13064
13139
|
title: "List Bug Reports",
|
|
13065
13140
|
description: "AskExe-internal only: list incoming customer bug reports from the support inbox.",
|
|
13066
13141
|
inputSchema: {
|
|
13067
|
-
status:
|
|
13068
|
-
severity:
|
|
13069
|
-
limit:
|
|
13142
|
+
status: z94.enum(["all", "open", "triaged", "fixed", "closed", "wontfix"]).default("open"),
|
|
13143
|
+
severity: z94.enum(["p0", "p1", "p2", "p3"]).optional(),
|
|
13144
|
+
limit: z94.number().int().min(1).max(100).default(25)
|
|
13070
13145
|
}
|
|
13071
13146
|
},
|
|
13072
13147
|
async ({ status: status2, severity, limit }) => {
|
|
@@ -13096,7 +13171,7 @@ function registerGetBugReport(server) {
|
|
|
13096
13171
|
{
|
|
13097
13172
|
title: "Get Bug Report",
|
|
13098
13173
|
description: "AskExe-internal only: fetch one customer bug report with full markdown payload and comments thread.",
|
|
13099
|
-
inputSchema: { id:
|
|
13174
|
+
inputSchema: { id: z94.string().min(8) }
|
|
13100
13175
|
},
|
|
13101
13176
|
async ({ id }) => {
|
|
13102
13177
|
const data = await requestJson(`${endpoint()}/${encodeURIComponent(id)}`);
|
|
@@ -13113,8 +13188,8 @@ function registerAddBugReportComment(server) {
|
|
|
13113
13188
|
title: "Add Bug Report Comment",
|
|
13114
13189
|
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.",
|
|
13115
13190
|
inputSchema: {
|
|
13116
|
-
id:
|
|
13117
|
-
comment:
|
|
13191
|
+
id: z94.string().min(8),
|
|
13192
|
+
comment: z94.string().min(1).describe("Comment text to append to the bug report thread")
|
|
13118
13193
|
}
|
|
13119
13194
|
},
|
|
13120
13195
|
async ({ id, comment }) => {
|
|
@@ -13132,7 +13207,7 @@ function registerGetBugReportComments(server) {
|
|
|
13132
13207
|
{
|
|
13133
13208
|
title: "Get Bug Report Comments",
|
|
13134
13209
|
description: "AskExe-internal only: list the comments thread on a bug report (GET /comments).",
|
|
13135
|
-
inputSchema: { id:
|
|
13210
|
+
inputSchema: { id: z94.string().min(8) }
|
|
13136
13211
|
},
|
|
13137
13212
|
async ({ id }) => {
|
|
13138
13213
|
const data = await commentRequestJson(id);
|
|
@@ -13147,26 +13222,27 @@ function registerTriageBugReport(server) {
|
|
|
13147
13222
|
title: "Triage Bug Report",
|
|
13148
13223
|
description: "AskExe-internal only: update bug report status and link task/commit/release metadata.",
|
|
13149
13224
|
inputSchema: {
|
|
13150
|
-
id:
|
|
13225
|
+
id: z94.string().min(8),
|
|
13151
13226
|
status: STATUS3.optional(),
|
|
13152
|
-
triage_notes:
|
|
13153
|
-
add_note:
|
|
13154
|
-
linked_task_id:
|
|
13155
|
-
linked_commit:
|
|
13156
|
-
fixed_version:
|
|
13227
|
+
triage_notes: z94.string().optional(),
|
|
13228
|
+
add_note: z94.string().optional().describe("Append a timestamped progress note without changing status or replacing triage_notes"),
|
|
13229
|
+
linked_task_id: z94.string().optional(),
|
|
13230
|
+
linked_commit: z94.string().optional(),
|
|
13231
|
+
fixed_version: z94.string().optional(),
|
|
13232
|
+
product: z94.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")
|
|
13157
13233
|
}
|
|
13158
13234
|
},
|
|
13159
|
-
async ({ id, status: status2, triage_notes, add_note, linked_task_id, linked_commit, fixed_version }) => {
|
|
13235
|
+
async ({ id, status: status2, triage_notes, add_note, linked_task_id, linked_commit, fixed_version, product }) => {
|
|
13160
13236
|
const effectiveStatus = fixed_version && !status2 ? "closed" : status2;
|
|
13161
13237
|
const data = await requestJson(`${endpoint()}/${encodeURIComponent(id)}`, {
|
|
13162
13238
|
method: "PATCH",
|
|
13163
|
-
body: JSON.stringify({ status: effectiveStatus, triage_notes, add_note, linked_task_id, linked_commit, fixed_version })
|
|
13239
|
+
body: JSON.stringify({ status: effectiveStatus, triage_notes, add_note, linked_task_id, linked_commit, fixed_version, product })
|
|
13164
13240
|
});
|
|
13165
13241
|
return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
|
|
13166
13242
|
}
|
|
13167
13243
|
);
|
|
13168
13244
|
}
|
|
13169
|
-
var FEATURE_STATUS =
|
|
13245
|
+
var FEATURE_STATUS = z94.enum(["open", "planned", "in_progress", "shipped", "closed", "wontdo"]);
|
|
13170
13246
|
function featureEndpoint() {
|
|
13171
13247
|
return endpoint().replace(/\/bug-reports\/?$/, "/feature-requests");
|
|
13172
13248
|
}
|
|
@@ -13177,9 +13253,9 @@ function registerListFeatureRequests(server) {
|
|
|
13177
13253
|
title: "List Feature Requests",
|
|
13178
13254
|
description: "AskExe-internal only: list incoming customer feature requests from the support inbox.",
|
|
13179
13255
|
inputSchema: {
|
|
13180
|
-
status:
|
|
13181
|
-
priority:
|
|
13182
|
-
limit:
|
|
13256
|
+
status: z94.enum(["all", "open", "planned", "in_progress", "shipped", "closed", "wontdo"]).default("open"),
|
|
13257
|
+
priority: z94.enum(["p0", "p1", "p2", "p3"]).optional(),
|
|
13258
|
+
limit: z94.number().int().min(1).max(100).default(25)
|
|
13183
13259
|
}
|
|
13184
13260
|
},
|
|
13185
13261
|
async ({ status: status2, priority, limit }) => {
|
|
@@ -13198,7 +13274,7 @@ function registerGetFeatureRequest(server) {
|
|
|
13198
13274
|
{
|
|
13199
13275
|
title: "Get Feature Request",
|
|
13200
13276
|
description: "AskExe-internal only: fetch one customer feature request with full payload.",
|
|
13201
|
-
inputSchema: { id:
|
|
13277
|
+
inputSchema: { id: z94.string().min(8) }
|
|
13202
13278
|
},
|
|
13203
13279
|
async ({ id }) => {
|
|
13204
13280
|
const data = await requestJson(`${featureEndpoint()}/${encodeURIComponent(id)}`);
|
|
@@ -13213,12 +13289,12 @@ function registerTriageFeatureRequest(server) {
|
|
|
13213
13289
|
title: "Triage Feature Request",
|
|
13214
13290
|
description: "AskExe-internal only: update feature request status, response notes, and version metadata.",
|
|
13215
13291
|
inputSchema: {
|
|
13216
|
-
id:
|
|
13292
|
+
id: z94.string().min(8),
|
|
13217
13293
|
status: FEATURE_STATUS.optional(),
|
|
13218
|
-
response_notes:
|
|
13219
|
-
add_note:
|
|
13220
|
-
target_version:
|
|
13221
|
-
shipped_version:
|
|
13294
|
+
response_notes: z94.string().optional(),
|
|
13295
|
+
add_note: z94.string().optional().describe("Append a timestamped progress note without changing status or replacing response_notes"),
|
|
13296
|
+
target_version: z94.string().optional(),
|
|
13297
|
+
shipped_version: z94.string().optional()
|
|
13222
13298
|
}
|
|
13223
13299
|
},
|
|
13224
13300
|
async ({ id, status: status2, response_notes, add_note, target_version, shipped_version }) => {
|
|
@@ -13231,7 +13307,7 @@ function registerTriageFeatureRequest(server) {
|
|
|
13231
13307
|
}
|
|
13232
13308
|
);
|
|
13233
13309
|
}
|
|
13234
|
-
var REVIEW_STATUS =
|
|
13310
|
+
var REVIEW_STATUS = z94.enum(["open", "in_review", "approved", "merged", "closed", "rejected"]);
|
|
13235
13311
|
function reviewEndpoint() {
|
|
13236
13312
|
return endpoint().replace(/\/bug-reports\/?$/, "/reviews");
|
|
13237
13313
|
}
|
|
@@ -13242,9 +13318,9 @@ function registerListReviews(server) {
|
|
|
13242
13318
|
title: "List Reviews",
|
|
13243
13319
|
description: "AskExe-internal only: list incoming review requests from the support inbox.",
|
|
13244
13320
|
inputSchema: {
|
|
13245
|
-
status:
|
|
13246
|
-
priority:
|
|
13247
|
-
limit:
|
|
13321
|
+
status: z94.enum(["all", "open", "in_review", "approved", "merged", "closed", "rejected"]).default("open"),
|
|
13322
|
+
priority: z94.enum(["p0", "p1", "p2", "p3"]).optional(),
|
|
13323
|
+
limit: z94.number().int().min(1).max(100).default(25)
|
|
13248
13324
|
}
|
|
13249
13325
|
},
|
|
13250
13326
|
async ({ status: status2, priority, limit }) => {
|
|
@@ -13263,7 +13339,7 @@ function registerGetReview(server) {
|
|
|
13263
13339
|
{
|
|
13264
13340
|
title: "Get Review",
|
|
13265
13341
|
description: "AskExe-internal only: fetch one review with full payload.",
|
|
13266
|
-
inputSchema: { id:
|
|
13342
|
+
inputSchema: { id: z94.string().min(8) }
|
|
13267
13343
|
},
|
|
13268
13344
|
async ({ id }) => {
|
|
13269
13345
|
const data = await requestJson(`${reviewEndpoint()}/${encodeURIComponent(id)}`);
|
|
@@ -13278,12 +13354,12 @@ function registerTriageReview(server) {
|
|
|
13278
13354
|
title: "Triage Review",
|
|
13279
13355
|
description: "AskExe-internal only: update review status, response notes, and resolution.",
|
|
13280
13356
|
inputSchema: {
|
|
13281
|
-
id:
|
|
13357
|
+
id: z94.string().min(8),
|
|
13282
13358
|
status: REVIEW_STATUS.optional(),
|
|
13283
|
-
response_notes:
|
|
13284
|
-
add_note:
|
|
13285
|
-
resolution:
|
|
13286
|
-
pr_url:
|
|
13359
|
+
response_notes: z94.string().optional(),
|
|
13360
|
+
add_note: z94.string().optional().describe("Append a timestamped progress note without changing status or replacing response_notes"),
|
|
13361
|
+
resolution: z94.string().optional(),
|
|
13362
|
+
pr_url: z94.string().optional()
|
|
13287
13363
|
}
|
|
13288
13364
|
},
|
|
13289
13365
|
async ({ id, status: status2, response_notes, add_note, resolution, pr_url }) => {
|
|
@@ -13297,7 +13373,7 @@ function registerTriageReview(server) {
|
|
|
13297
13373
|
}
|
|
13298
13374
|
|
|
13299
13375
|
// src/mcp/tools/decision.ts
|
|
13300
|
-
import { z as
|
|
13376
|
+
import { z as z95 } from "zod";
|
|
13301
13377
|
function buildHandlers6() {
|
|
13302
13378
|
const tools = /* @__PURE__ */ new Map();
|
|
13303
13379
|
const fake = {
|
|
@@ -13321,12 +13397,12 @@ function registerDecision(server) {
|
|
|
13321
13397
|
title: "Decision",
|
|
13322
13398
|
description: "Store or retrieve authoritative decisions. Actions: store (persist a decision by domain), get (look up a decision by domain/query).",
|
|
13323
13399
|
inputSchema: {
|
|
13324
|
-
action:
|
|
13325
|
-
domain:
|
|
13326
|
-
decision:
|
|
13327
|
-
rationale:
|
|
13328
|
-
query:
|
|
13329
|
-
limit:
|
|
13400
|
+
action: z95.enum(["store", "get"]).describe("Decision operation"),
|
|
13401
|
+
domain: z95.string().optional().describe("Decision domain (e.g. 'architecture', 'hiring')"),
|
|
13402
|
+
decision: z95.string().optional().describe("Decision text for action=store"),
|
|
13403
|
+
rationale: z95.string().optional().describe("Why this decision was made (action=store)"),
|
|
13404
|
+
query: z95.string().optional().describe("Search query for action=get"),
|
|
13405
|
+
limit: z95.coerce.number().optional().describe("Max results for action=get")
|
|
13330
13406
|
}
|
|
13331
13407
|
},
|
|
13332
13408
|
async (input, extra) => {
|
|
@@ -13342,7 +13418,7 @@ function registerDecision(server) {
|
|
|
13342
13418
|
}
|
|
13343
13419
|
|
|
13344
13420
|
// src/mcp/tools/session.ts
|
|
13345
|
-
import { z as
|
|
13421
|
+
import { z as z96 } from "zod";
|
|
13346
13422
|
function buildHandlers7() {
|
|
13347
13423
|
const tools = /* @__PURE__ */ new Map();
|
|
13348
13424
|
const fake = {
|
|
@@ -13390,17 +13466,17 @@ function registerSession(server) {
|
|
|
13390
13466
|
title: "Session",
|
|
13391
13467
|
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).",
|
|
13392
13468
|
inputSchema: {
|
|
13393
|
-
action:
|
|
13394
|
-
session_id:
|
|
13395
|
-
limit:
|
|
13469
|
+
action: z96.enum(["events", "last_response", "set_mode", "get_mode"]).describe("Session operation"),
|
|
13470
|
+
session_id: z96.string().optional().describe("Session ID for action=events"),
|
|
13471
|
+
limit: z96.coerce.number().optional().describe("Max events for action=events"),
|
|
13396
13472
|
// set_mode params
|
|
13397
|
-
mode:
|
|
13473
|
+
mode: z96.enum(["explore", "task"]).optional().describe(
|
|
13398
13474
|
"Mode for action=set_mode. 'explore' = divergent, no deliverable, nudges suppressed. 'task' = default convergent behaviour (resets any active explore session)."
|
|
13399
13475
|
),
|
|
13400
|
-
duration_minutes:
|
|
13476
|
+
duration_minutes: z96.number().optional().describe(
|
|
13401
13477
|
`How long to stay in explore mode in minutes (action=set_mode, mode=explore). Default: ${DEFAULT_EXPLORE_DURATION_MS / 6e4} minutes (1 hour).`
|
|
13402
13478
|
),
|
|
13403
|
-
notes:
|
|
13479
|
+
notes: z96.string().optional().describe("Optional notes about this explore session (action=set_mode)")
|
|
13404
13480
|
}
|
|
13405
13481
|
},
|
|
13406
13482
|
async (input, extra) => {
|
|
@@ -13465,14 +13541,14 @@ All active explore sessions (${active.length}):
|
|
|
13465
13541
|
}
|
|
13466
13542
|
|
|
13467
13543
|
// src/mcp/tools/support-consolidated.ts
|
|
13468
|
-
import { z as
|
|
13544
|
+
import { z as z98 } from "zod";
|
|
13469
13545
|
|
|
13470
13546
|
// src/mcp/tools/create-review.ts
|
|
13471
|
-
import { z as
|
|
13547
|
+
import { z as z97 } from "zod";
|
|
13472
13548
|
import crypto6 from "crypto";
|
|
13473
13549
|
import { mkdir as mkdir4, writeFile as writeFile6 } from "fs/promises";
|
|
13474
13550
|
import path17 from "path";
|
|
13475
|
-
var PRIORITY2 =
|
|
13551
|
+
var PRIORITY2 = z97.enum(["p0", "p1", "p2", "p3"]);
|
|
13476
13552
|
function slugify3(input) {
|
|
13477
13553
|
return input.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "").slice(0, 80) || "review";
|
|
13478
13554
|
}
|
|
@@ -13538,15 +13614,15 @@ function registerCreateReview(server) {
|
|
|
13538
13614
|
title: "Create Review",
|
|
13539
13615
|
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.",
|
|
13540
13616
|
inputSchema: {
|
|
13541
|
-
title:
|
|
13542
|
-
description:
|
|
13617
|
+
title: z97.string().min(3).describe("Short descriptive title"),
|
|
13618
|
+
description: z97.string().optional().describe("What needs review and why"),
|
|
13543
13619
|
priority: PRIORITY2.default("p1").describe("p0 critical -> p3 low"),
|
|
13544
|
-
source:
|
|
13545
|
-
pr_url:
|
|
13546
|
-
product:
|
|
13547
|
-
package_version:
|
|
13548
|
-
project_name:
|
|
13549
|
-
send_upstream:
|
|
13620
|
+
source: z97.string().optional().describe("Source: self-improve, manual, ci, etc."),
|
|
13621
|
+
pr_url: z97.string().optional().describe("PR URL if applicable"),
|
|
13622
|
+
product: z97.string().optional().describe("Product: exe-os (default), exe-create, exe-wiki, exe-gateway, exe-crm, exe-build"),
|
|
13623
|
+
package_version: z97.string().optional().describe("Installed package version"),
|
|
13624
|
+
project_name: z97.string().optional().describe("Project/customer context"),
|
|
13625
|
+
send_upstream: z97.boolean().default(false).describe("Attempt to POST to configured AskExe support endpoint (disabled by default \u2014 review route not yet live)")
|
|
13550
13626
|
}
|
|
13551
13627
|
},
|
|
13552
13628
|
async ({
|
|
@@ -13702,7 +13778,7 @@ function registerSupportConsolidated(server) {
|
|
|
13702
13778
|
title: "Support",
|
|
13703
13779
|
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.",
|
|
13704
13780
|
inputSchema: {
|
|
13705
|
-
action:
|
|
13781
|
+
action: z98.enum([
|
|
13706
13782
|
"create_bug",
|
|
13707
13783
|
"create_feature",
|
|
13708
13784
|
"create_review",
|
|
@@ -13725,40 +13801,40 @@ function registerSupportConsolidated(server) {
|
|
|
13725
13801
|
"health",
|
|
13726
13802
|
"test"
|
|
13727
13803
|
]).describe("Support operation"),
|
|
13728
|
-
title:
|
|
13729
|
-
description:
|
|
13730
|
-
steps_to_reproduce:
|
|
13731
|
-
expected_behavior:
|
|
13732
|
-
actual_behavior:
|
|
13733
|
-
severity:
|
|
13734
|
-
product:
|
|
13735
|
-
use_case:
|
|
13736
|
-
proposed_solution:
|
|
13737
|
-
priority:
|
|
13738
|
-
on_behalf_of_email:
|
|
13739
|
-
id:
|
|
13740
|
-
comment:
|
|
13741
|
-
status:
|
|
13742
|
-
classification:
|
|
13743
|
-
resolution:
|
|
13744
|
-
notes:
|
|
13745
|
-
triage_notes:
|
|
13746
|
-
linked_task_id:
|
|
13747
|
-
linked_commit:
|
|
13748
|
-
fixed_version:
|
|
13749
|
-
shipped_version:
|
|
13750
|
-
add_evidence:
|
|
13751
|
-
reopen_request:
|
|
13752
|
-
reopen_reason:
|
|
13753
|
-
attachments:
|
|
13754
|
-
filename:
|
|
13755
|
-
content:
|
|
13804
|
+
title: z98.string().optional().describe("Bug/feature title"),
|
|
13805
|
+
description: z98.string().optional().describe("Bug/feature description"),
|
|
13806
|
+
steps_to_reproduce: z98.string().optional().describe("Steps to reproduce (bugs)"),
|
|
13807
|
+
expected_behavior: z98.string().optional().describe("Expected behavior (bugs)"),
|
|
13808
|
+
actual_behavior: z98.string().optional().describe("Actual behavior (bugs)"),
|
|
13809
|
+
severity: z98.string().optional().describe("Severity: p0/p1/p2/p3"),
|
|
13810
|
+
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"),
|
|
13811
|
+
use_case: z98.string().optional().describe("Use case (features)"),
|
|
13812
|
+
proposed_solution: z98.string().optional().describe("Proposed solution (features)"),
|
|
13813
|
+
priority: z98.string().optional().describe("Priority (features)"),
|
|
13814
|
+
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)"),
|
|
13815
|
+
id: z98.string().optional().describe("Bug/feature ID for get/triage/add_comment/get_comments"),
|
|
13816
|
+
comment: z98.string().optional().describe("Comment text to append to a bug report thread (add_comment)"),
|
|
13817
|
+
status: z98.string().optional().describe("Filter by status"),
|
|
13818
|
+
classification: z98.string().optional().describe("Triage classification"),
|
|
13819
|
+
resolution: z98.string().optional().describe("Triage resolution"),
|
|
13820
|
+
notes: z98.string().optional().describe("Triage notes (mapped to triage_notes for bug/feature triage)"),
|
|
13821
|
+
triage_notes: z98.string().optional().describe("Triage notes (legacy field name)"),
|
|
13822
|
+
linked_task_id: z98.string().optional().describe("Linked task ID for triage"),
|
|
13823
|
+
linked_commit: z98.string().optional().describe("Linked commit hash for triage"),
|
|
13824
|
+
fixed_version: z98.string().optional().describe("Version that fixes this bug"),
|
|
13825
|
+
shipped_version: z98.string().optional().describe("Version that ships this feature (features only)"),
|
|
13826
|
+
add_evidence: z98.string().optional().describe("Owner self-service: additional evidence (logs, repro, stack traces) for update_bug"),
|
|
13827
|
+
reopen_request: z98.boolean().optional().describe("Owner self-service: request a reopen on a recurring fixed bug (update_bug)"),
|
|
13828
|
+
reopen_reason: z98.string().optional().describe("Owner self-service: why the bug should be reopened (update_bug)"),
|
|
13829
|
+
attachments: z98.array(z98.object({
|
|
13830
|
+
filename: z98.string().min(1).describe("Filename for the attachment"),
|
|
13831
|
+
content: z98.string().min(1).describe("File content \u2014 plain text")
|
|
13756
13832
|
})).optional().describe("File attachments for bug reports / feature requests (diffs, logs, config snippets)"),
|
|
13757
|
-
source:
|
|
13758
|
-
pr_url:
|
|
13759
|
-
review_resolution:
|
|
13760
|
-
limit:
|
|
13761
|
-
offset:
|
|
13833
|
+
source: z98.string().optional().describe("Review source: self-improve, manual, ci"),
|
|
13834
|
+
pr_url: z98.string().optional().describe("PR URL (reviews)"),
|
|
13835
|
+
review_resolution: z98.string().optional().describe("Resolution text (reviews)"),
|
|
13836
|
+
limit: z98.coerce.number().optional().describe("Max results per page (up to 500)"),
|
|
13837
|
+
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.")
|
|
13762
13838
|
}
|
|
13763
13839
|
},
|
|
13764
13840
|
async (input, extra) => {
|
|
@@ -13844,7 +13920,7 @@ function registerSupportConsolidated(server) {
|
|
|
13844
13920
|
}
|
|
13845
13921
|
|
|
13846
13922
|
// src/mcp/tools/diagnostics.ts
|
|
13847
|
-
import { z as
|
|
13923
|
+
import { z as z99 } from "zod";
|
|
13848
13924
|
function buildHandlers9() {
|
|
13849
13925
|
const tools = /* @__PURE__ */ new Map();
|
|
13850
13926
|
const fake = {
|
|
@@ -13865,21 +13941,21 @@ function registerDiagnostics(server) {
|
|
|
13865
13941
|
title: "Diagnostics",
|
|
13866
13942
|
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).`,
|
|
13867
13943
|
inputSchema: {
|
|
13868
|
-
action:
|
|
13944
|
+
action: z99.string().describe(`Diagnostic operation: ${toolNames.join(", ")}`),
|
|
13869
13945
|
// Pass-through params used by various sub-tools
|
|
13870
|
-
agent_id:
|
|
13871
|
-
name:
|
|
13872
|
-
new_name:
|
|
13873
|
-
query:
|
|
13874
|
-
format:
|
|
13875
|
-
limit:
|
|
13876
|
-
from_agent_id:
|
|
13877
|
-
to_agent_id:
|
|
13878
|
-
dry_run:
|
|
13946
|
+
agent_id: z99.string().optional().describe("Agent to probe (drift). Defaults to all agents."),
|
|
13947
|
+
name: z99.string().optional().describe("Employee name (rename_employee)"),
|
|
13948
|
+
new_name: z99.string().optional().describe("New employee name (rename_employee)"),
|
|
13949
|
+
query: z99.string().optional().describe("Search/filter query, or natural language for tool_search"),
|
|
13950
|
+
format: z99.string().optional().describe("Output format"),
|
|
13951
|
+
limit: z99.coerce.number().int().min(1).max(100).optional().describe("Max results for tool_search (default 20)"),
|
|
13952
|
+
from_agent_id: z99.string().optional().describe("Source agent ID to merge from (merge_agent_memories)"),
|
|
13953
|
+
to_agent_id: z99.string().optional().describe("Target agent ID to merge into (merge_agent_memories)"),
|
|
13954
|
+
dry_run: z99.boolean().optional().default(true).describe("Preview mode \u2014 show count without changing (merge_agent_memories). Default: true"),
|
|
13879
13955
|
// Steward params (absorbed from steward tool)
|
|
13880
|
-
operation:
|
|
13881
|
-
target:
|
|
13882
|
-
reason:
|
|
13956
|
+
operation: z99.string().optional().describe("Operation name for steward_check/steward_override"),
|
|
13957
|
+
target: z99.string().optional().describe("Target resource for steward_check/steward_override"),
|
|
13958
|
+
reason: z99.string().optional().describe("Override reason for steward_override")
|
|
13883
13959
|
}
|
|
13884
13960
|
},
|
|
13885
13961
|
async (input, extra) => {
|
|
@@ -14044,7 +14120,7 @@ async function handleMergeAgentMemories(input) {
|
|
|
14044
14120
|
}
|
|
14045
14121
|
async function handleSpawnFailures() {
|
|
14046
14122
|
try {
|
|
14047
|
-
const { getOrchestrationMetrics } = await import("./orchestration-events-
|
|
14123
|
+
const { getOrchestrationMetrics } = await import("./orchestration-events-O5P5NEKS.js");
|
|
14048
14124
|
const metrics = await getOrchestrationMetrics();
|
|
14049
14125
|
const c = metrics.counts;
|
|
14050
14126
|
const attempted = c.tmuxSpawnAttempted;
|
|
@@ -14146,7 +14222,7 @@ async function handleOrchestrationHealth() {
|
|
|
14146
14222
|
async function handleWorkMap() {
|
|
14147
14223
|
try {
|
|
14148
14224
|
const { getAgentLivenessReport } = await import("./agent-heartbeat-I5UPGXAU.js");
|
|
14149
|
-
const { classifyRole } = await import("./session-kill-telemetry-
|
|
14225
|
+
const { classifyRole } = await import("./session-kill-telemetry-IBNCJSI7.js");
|
|
14150
14226
|
const { buildSessionDeathSummary } = await import("./orchestration-health-read-EJWVUARG.js");
|
|
14151
14227
|
const { getPaneCwd } = await import("./lib/tmux-status.js");
|
|
14152
14228
|
const live = getAgentLivenessReport();
|
|
@@ -14281,7 +14357,7 @@ async function handleDrift(input) {
|
|
|
14281
14357
|
}
|
|
14282
14358
|
async function handleSteward(action, input) {
|
|
14283
14359
|
const gate = new StewardGate();
|
|
14284
|
-
const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-
|
|
14360
|
+
const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-SHM4QSRJ.js");
|
|
14285
14361
|
const inputAgent = input.agent_id;
|
|
14286
14362
|
const operation = input.operation;
|
|
14287
14363
|
const target = input.target;
|
|
@@ -14329,7 +14405,7 @@ async function handleSteward(action, input) {
|
|
|
14329
14405
|
}
|
|
14330
14406
|
|
|
14331
14407
|
// src/mcp/tools/dreaming.ts
|
|
14332
|
-
import { z as
|
|
14408
|
+
import { z as z100 } from "zod";
|
|
14333
14409
|
function registerDreaming(server) {
|
|
14334
14410
|
server.registerTool(
|
|
14335
14411
|
"dreaming",
|
|
@@ -14337,10 +14413,10 @@ function registerDreaming(server) {
|
|
|
14337
14413
|
title: "Dreaming",
|
|
14338
14414
|
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).",
|
|
14339
14415
|
inputSchema: {
|
|
14340
|
-
action:
|
|
14341
|
-
agent_id:
|
|
14342
|
-
hours:
|
|
14343
|
-
limit:
|
|
14416
|
+
action: z100.enum(["run", "status", "history"]).describe("Action to perform"),
|
|
14417
|
+
agent_id: z100.string().optional().describe("Agent to analyze. Defaults to calling agent."),
|
|
14418
|
+
hours: z100.coerce.number().min(1).max(720).optional().describe("Lookback window in hours (run). Default 24."),
|
|
14419
|
+
limit: z100.coerce.number().int().min(1).max(50).optional().describe("Max results for history. Default 10.")
|
|
14344
14420
|
}
|
|
14345
14421
|
},
|
|
14346
14422
|
async ({ action, agent_id, hours, limit }) => {
|
|
@@ -14463,7 +14539,7 @@ ${String(row.raw_text)}`
|
|
|
14463
14539
|
}
|
|
14464
14540
|
|
|
14465
14541
|
// src/mcp/tools/steward.ts
|
|
14466
|
-
import { z as
|
|
14542
|
+
import { z as z101 } from "zod";
|
|
14467
14543
|
function errorResult11(text5) {
|
|
14468
14544
|
return { content: [{ type: "text", text: text5 }], isError: true };
|
|
14469
14545
|
}
|
|
@@ -14475,12 +14551,12 @@ function registerSteward(server) {
|
|
|
14475
14551
|
title: "Steward Identity Gate",
|
|
14476
14552
|
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.",
|
|
14477
14553
|
inputSchema: {
|
|
14478
|
-
action:
|
|
14479
|
-
agent:
|
|
14480
|
-
operation:
|
|
14481
|
-
target:
|
|
14482
|
-
reason:
|
|
14483
|
-
limit:
|
|
14554
|
+
action: z101.enum(["check", "audit_log", "override"]).describe("Steward operation to perform"),
|
|
14555
|
+
agent: z101.string().optional().describe("Agent to check (defaults to calling agent for action=check)"),
|
|
14556
|
+
operation: z101.string().optional().describe("Operation name (required for check/override)"),
|
|
14557
|
+
target: z101.string().optional().describe("Target resource (required for check/override)"),
|
|
14558
|
+
reason: z101.string().optional().describe("Override reason (required for action=override)"),
|
|
14559
|
+
limit: z101.number().optional().describe("Max audit entries to return (default: 50)")
|
|
14484
14560
|
}
|
|
14485
14561
|
},
|
|
14486
14562
|
async (input) => {
|
|
@@ -14563,7 +14639,7 @@ function registerSteward(server) {
|
|
|
14563
14639
|
}
|
|
14564
14640
|
|
|
14565
14641
|
// src/mcp/tools/resonance.ts
|
|
14566
|
-
import { z as
|
|
14642
|
+
import { z as z102 } from "zod";
|
|
14567
14643
|
function text4(content, isError = false) {
|
|
14568
14644
|
return { content: [{ type: "text", text: content }], ...isError ? { isError: true } : {} };
|
|
14569
14645
|
}
|
|
@@ -14572,14 +14648,14 @@ function registerResonance(server) {
|
|
|
14572
14648
|
title: "Resonance Network",
|
|
14573
14649
|
description: "Co-activation network queries. Actions: hot_pairs (top co-activated memory pairs), neighbors (co-activation neighbors for a specific memory).",
|
|
14574
14650
|
inputSchema: {
|
|
14575
|
-
action:
|
|
14576
|
-
memory_id:
|
|
14577
|
-
entity_id:
|
|
14578
|
-
limit:
|
|
14651
|
+
action: z102.enum(["hot_pairs", "neighbors"]).describe("Resonance query type"),
|
|
14652
|
+
memory_id: z102.string().optional().describe("Memory ID for neighbors action"),
|
|
14653
|
+
entity_id: z102.string().optional().describe("Deprecated alias for memory_id on neighbors action"),
|
|
14654
|
+
limit: z102.number().optional().describe("Max results (default 20)")
|
|
14579
14655
|
}
|
|
14580
14656
|
}, async ({ action, memory_id, entity_id, limit }) => {
|
|
14581
14657
|
try {
|
|
14582
|
-
const { getHotPairs, getCoActivationNeighbors } = await import("./co-activation-
|
|
14658
|
+
const { getHotPairs, getCoActivationNeighbors } = await import("./co-activation-K44LGZ7A.js");
|
|
14583
14659
|
if (action === "hot_pairs") {
|
|
14584
14660
|
const pairs = await getHotPairs(limit ?? 20);
|
|
14585
14661
|
if (pairs.length === 0) return text4("No co-activation data yet. Pairs are recorded as memories are accessed together in searches.");
|