@askexenow/exe-os 0.9.323 → 0.9.324
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/stack-manifests/v0.9.json +110 -2
- package/dist/{active-agent-67BHUBV2.js → active-agent-CVSB2EER.js} +3 -3
- package/dist/{active-agent-IGVX2AAK.js → active-agent-IUVRZOSF.js} +3 -3
- package/dist/{agentic-ontology-I5MEKVGE.js → agentic-ontology-2QFPBIQP.js} +1 -1
- package/dist/{backfill-metadata-N5VVCYFT.js → backfill-metadata-W3PRQPVV.js} +4 -4
- package/dist/{behaviors-2YYG72ZH.js → behaviors-MQCADHAD.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 +5 -5
- package/dist/bin/backfill-responses.js +5 -5
- package/dist/bin/backfill-vectors.js +7 -7
- package/dist/bin/bulk-sync-postgres.js +11 -11
- package/dist/bin/cc-doctor.js +4 -4
- package/dist/bin/cleanup-stale-review-tasks.js +14 -14
- package/dist/bin/cli.js +16 -16
- package/dist/bin/deferred-daemon-restart.js +68 -68
- package/dist/bin/exe-agent-config.js +2 -2
- package/dist/bin/exe-agent.js +5 -5
- package/dist/bin/exe-assign.js +7 -7
- package/dist/bin/exe-boot.js +23 -23
- package/dist/bin/exe-call.js +5 -5
- package/dist/bin/exe-cloud.js +11 -11
- package/dist/bin/exe-config-dump.js +2 -2
- package/dist/bin/exe-dispatch.js +14 -14
- package/dist/bin/exe-doctor.js +4 -4
- package/dist/bin/exe-export-behaviors.js +7 -7
- package/dist/bin/exe-forget.js +6 -6
- package/dist/bin/exe-gateway.js +7 -7
- package/dist/bin/exe-healthcheck.js +4 -4
- package/dist/bin/exe-heartbeat.js +14 -14
- package/dist/bin/exe-kill.js +17 -17
- package/dist/bin/exe-launch-agent.js +24 -24
- package/dist/bin/exe-new-employee.js +9 -9
- package/dist/bin/exe-pending-messages.js +15 -15
- package/dist/bin/exe-pending-notifications.js +14 -14
- package/dist/bin/exe-pending-reviews.js +14 -14
- package/dist/bin/exe-rename.js +5 -5
- package/dist/bin/exe-review.js +16 -16
- package/dist/bin/exe-search.js +5 -5
- package/dist/bin/exe-session-cleanup.js +18 -18
- package/dist/bin/exe-settings.js +11 -11
- package/dist/bin/exe-start-codex.js +51 -34
- package/dist/bin/exe-start-opencode.js +8 -8
- package/dist/bin/exe-status.js +15 -15
- package/dist/bin/exe-support.js +3 -3
- package/dist/bin/exe-team.js +3 -3
- package/dist/bin/git-sweep.js +15 -15
- 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.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/pre-publish.js +1 -1
- package/dist/bin/registry-proxy.js +1 -1
- package/dist/bin/scan-tasks.js +14 -14
- 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-RC4JYXCG.js → capability-cards-STD3NMCR.js} +2 -2
- package/dist/{capacity-monitor-EDIGJSVQ.js → capacity-monitor-6O3PWYNM.js} +15 -15
- package/dist/{catchup-brief-YVSBRXYZ.js → catchup-brief-EDQ3VZCF.js} +17 -17
- package/dist/{chunk-EZHNCIO5.js → chunk-2E2NKFXK.js} +1 -1
- package/dist/{chunk-CMZIAR5S.js → chunk-2NY7LZT7.js} +1 -1
- package/dist/{chunk-XYJXJWKH.js → chunk-2QD5M47V.js} +3 -3
- package/dist/{chunk-3MUV2GDZ.js → chunk-2YWUZPHE.js} +2 -2
- package/dist/{chunk-A3CRB4PS.js → chunk-2ZW4AQ24.js} +3 -3
- package/dist/{chunk-H7FI3AWZ.js → chunk-376J36IW.js} +4 -4
- package/dist/{chunk-2COLYLE6.js → chunk-5VT45EV6.js} +1 -1
- package/dist/{chunk-HAA4N3NI.js → chunk-5YCOEPEX.js} +1 -1
- package/dist/{chunk-JTF4UVXK.js → chunk-6FWMLTF2.js} +1 -1
- package/dist/{chunk-IKFL4OLM.js → chunk-6XAAJ5OV.js} +1 -1
- package/dist/{chunk-ZU2UK4BC.js → chunk-7M6TXYRQ.js} +10 -10
- package/dist/{chunk-3LZILUET.js → chunk-7PLMYXPG.js} +1 -1
- package/dist/{chunk-DDKDN4HV.js → chunk-A47MXY2I.js} +7 -0
- package/dist/{chunk-SSIUJXOL.js → chunk-AEFZEJKW.js} +1 -1
- package/dist/{chunk-IKOAALTW.js → chunk-AVKZIG4A.js} +1 -1
- package/dist/{chunk-GHARDROH.js → chunk-BB5IKY7B.js} +2 -2
- package/dist/{chunk-UPLY33F7.js → chunk-BC7IIR3A.js} +64 -38
- package/dist/{chunk-WRA6OO5V.js → chunk-BDJQWBWF.js} +3 -3
- package/dist/{chunk-L5TUAHLX.js → chunk-BMSAJ2IH.js} +1 -1
- package/dist/{chunk-5HXJI7SX.js → chunk-C7B44DJI.js} +1 -1
- package/dist/{chunk-3QJ3GDQZ.js → chunk-CS6MYGNB.js} +3 -3
- package/dist/{chunk-4GK6JTEV.js → chunk-CSPHV5DJ.js} +1 -1
- package/dist/{chunk-RYJH6S55.js → chunk-DYUISOIT.js} +1 -1
- package/dist/{chunk-PGEADAZL.js → chunk-EWDTTTZP.js} +3 -3
- package/dist/{chunk-5CRFNQ7L.js → chunk-F2RK5YWB.js} +36 -27
- package/dist/{chunk-364VBQIC.js → chunk-F6TJIWN5.js} +1 -1
- package/dist/{chunk-644DVREV.js → chunk-FPTBCPI3.js} +2 -2
- package/dist/{chunk-W33H7TWW.js → chunk-GIFDGNIL.js} +1 -1
- package/dist/{chunk-NQPAG7CB.js → chunk-HAYDXMW6.js} +3 -3
- package/dist/{chunk-UB322YIG.js → chunk-HBKYKN3S.js} +1 -1
- package/dist/{chunk-WCXFNUMD.js → chunk-HZ5J2GFE.js} +7 -7
- package/dist/{chunk-5ZQMGI3V.js → chunk-ID3V4BWS.js} +1 -1
- package/dist/{chunk-3CT3GN2B.js → chunk-JRD7ARQ6.js} +60 -2
- package/dist/{chunk-BKOGHVRO.js → chunk-KJOQLNX2.js} +1 -1
- package/dist/{chunk-QBRBLEXP.js → chunk-KK67DSCO.js} +8 -8
- package/dist/{chunk-UW5QD52P.js → chunk-KLDQFOFY.js} +9 -9
- package/dist/{chunk-XK7HAEFC.js → chunk-KUJGADX6.js} +67 -16
- package/dist/{chunk-AVEOL6NP.js → chunk-KWWHRJGG.js} +638 -535
- package/dist/{chunk-W377NZE4.js → chunk-LUOQCGBO.js} +1 -1
- package/dist/{chunk-A6ODMODG.js → chunk-LWAGAC3H.js} +1 -1
- package/dist/{chunk-SE7TU5GX.js → chunk-MB2YT5VQ.js} +2 -2
- package/dist/{chunk-I4IMPAZQ.js → chunk-MCEXBLLK.js} +3 -3
- package/dist/{chunk-VH345O6X.js → chunk-MIWPKWXQ.js} +1 -1
- package/dist/{chunk-T3OGIK3Y.js → chunk-MKIFYIXC.js} +1 -1
- package/dist/{chunk-VQEZ3ZNK.js → chunk-MWIX3YKA.js} +4 -4
- package/dist/{chunk-A6I36KVN.js → chunk-NBDTQVWU.js} +2 -2
- package/dist/{chunk-SXN3TRJ4.js → chunk-NGACCR2M.js} +1 -1
- package/dist/{chunk-VJL2BGX2.js → chunk-PGFYWVOB.js} +1 -1
- package/dist/{chunk-DDRASSJI.js → chunk-PGUISLOT.js} +5 -5
- package/dist/{chunk-QCWZMS7B.js → chunk-PJTEZLAM.js} +1 -1
- package/dist/{chunk-4VW5KF6X.js → chunk-POOMY3CS.js} +4 -4
- package/dist/{chunk-S6XKC36B.js → chunk-PV7IG4V6.js} +1 -1
- package/dist/{chunk-3VYAQUWZ.js → chunk-QDI77B3E.js} +1 -1
- package/dist/{chunk-46AMZT3C.js → chunk-QGOMYIVT.js} +14 -5
- package/dist/{chunk-CCYEO6EG.js → chunk-QQFZ32WS.js} +5 -5
- package/dist/{chunk-2RR2CJCX.js → chunk-SOXUF34Y.js} +2 -2
- package/dist/{chunk-NW6V3XVK.js → chunk-SPO2RLOB.js} +1 -1
- package/dist/{chunk-GMDLNJ5E.js → chunk-T3XHH5FE.js} +5 -5
- package/dist/{chunk-CP4LIKCX.js → chunk-TA3A4UQL.js} +1 -1
- package/dist/{chunk-WYHCMHTL.js → chunk-TGVKQ3QB.js} +3 -3
- package/dist/{chunk-YOS4FN26.js → chunk-TNS6U2K7.js} +2 -2
- package/dist/{chunk-LX2TYKEQ.js → chunk-UAIMI7CK.js} +1 -1
- package/dist/{chunk-YTPNOTUS.js → chunk-UXYQLOFW.js} +8 -8
- package/dist/{chunk-IFXE7QYT.js → chunk-UYOW7U24.js} +1 -1
- package/dist/{chunk-YS7VW7KR.js → chunk-V4VYIHSL.js} +1 -1
- package/dist/{chunk-SAUO2ZLB.js → chunk-VDUHWQFA.js} +1 -1
- package/dist/{chunk-EAHLB7YN.js → chunk-W5GBB23I.js} +1 -1
- package/dist/{chunk-A2K7YIRL.js → chunk-WF3J6GJZ.js} +2 -2
- package/dist/{chunk-E72VLAJH.js → chunk-WGHTISNK.js} +3 -3
- package/dist/{chunk-7PXMLHPG.js → chunk-WGOAILWE.js} +2 -2
- package/dist/{chunk-ZR57QAJ2.js → chunk-WJICX53Z.js} +1 -1
- package/dist/{chunk-U3VSCPGX.js → chunk-Y2KBHLEO.js} +1 -1
- package/dist/{chunk-HYNNAM4R.js → chunk-Y34FDPOY.js} +5 -5
- package/dist/{chunk-6UR7C2NX.js → chunk-YBHOWK3L.js} +2 -2
- package/dist/{chunk-DZVQ23CM.js → chunk-ZDNJ3TSB.js} +7 -7
- package/dist/{chunk-KIXTW4VH.js → chunk-ZRZ2Z6RZ.js} +1 -1
- package/dist/{cleanup-graph-garbage-5KI4MSDC.js → cleanup-graph-garbage-2YH52ADR.js} +4 -4
- package/dist/{co-activation-JRDKF2M3.js → co-activation-7F3J2GC7.js} +2 -2
- package/dist/{co-occurrence-JGFIAEKR.js → co-occurrence-B36Q5GY3.js} +2 -2
- package/dist/{code-context-index-NODPVXHC.js → code-context-index-2PUBBQOE.js} +2 -2
- package/dist/{crdt-sync-NOWBFD5N.js → crdt-sync-MXHPR6V6.js} +1 -1
- package/dist/{crm-webhook-FXSSAHON.js → crm-webhook-56MWGMRY.js} +2 -2
- package/dist/{cto-delegation-gate-J6DDJFAB.js → cto-delegation-gate-26BD7NEE.js} +13 -13
- package/dist/{daemon-orchestration-HIZMZ2Y5.js → daemon-orchestration-IBP6PWEG.js} +17 -17
- package/dist/{db-backup-I5GQBRIG.js → db-backup-XLID57KW.js} +1 -1
- package/dist/{doc-graph-extractor-TAZHM63R.js → doc-graph-extractor-VBZ6XTTE.js} +2 -2
- package/dist/{documents-XXOQ5QIJ.js → documents-C5LYSJT3.js} +7 -7
- package/dist/{dreaming-V275C7L2.js → dreaming-LMVDIC5C.js} +14 -14
- package/dist/{exe-drift-VOJZYOIO.js → exe-drift-T3K6WA47.js} +3 -3
- package/dist/{exe-export-EDQDGZV3.js → exe-export-QCTASWXI.js} +7 -7
- package/dist/{exe-import-DV7GKBZD.js → exe-import-WNP5A7VA.js} +7 -7
- package/dist/{exe-key-6SLYWY36.js → exe-key-JM3JXE2E.js} +68 -68
- package/dist/{exe-snapshot-TDQI34DW.js → exe-snapshot-ODDJUEM5.js} +17 -17
- package/dist/{fast-db-init-SNHHRW3L.js → fast-db-init-O6A3TK3F.js} +1 -1
- package/dist/{founder-context-UZVRU4HI.js → founder-context-FYTF4IMD.js} +2 -2
- package/dist/gateway/index.js +11 -11
- package/dist/{git-staleness-TRCX6FVG.js → git-staleness-YA5J6VYJ.js} +2 -2
- package/dist/{global-procedures-LH4JG3CR.js → global-procedures-76NDWTYN.js} +4 -4
- package/dist/{graph-auto-extract-YTXHYR35.js → graph-auto-extract-I7QL2TY5.js} +2 -2
- package/dist/hooks/bug-report-worker.js +16 -16
- package/dist/hooks/codex-stop-task-finalizer.js +16 -16
- package/dist/hooks/commit-complete.js +16 -16
- package/dist/hooks/error-recall.js +6 -6
- package/dist/hooks/exe-heartbeat-hook.js +3 -3
- package/dist/hooks/ingest-worker.js +2 -2
- 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 +15 -15
- package/dist/hooks/post-tool-combined.js +8 -8
- package/dist/hooks/pre-compact.js +16 -16
- package/dist/hooks/pre-tool-use.js +19 -19
- package/dist/hooks/prompt-submit.js +29 -29
- package/dist/hooks/session-end.js +21 -21
- package/dist/hooks/session-start.js +12 -12
- package/dist/hooks/stop.js +22 -22
- package/dist/hooks/subagent-stop.js +15 -15
- package/dist/hooks/summary-worker.js +19 -19
- package/dist/index.js +23 -23
- package/dist/{installer-U7D3PAR5.js → installer-3EYHBKWB.js} +5 -5
- package/dist/{installer-WHO23TIO.js → installer-3VZMDDMJ.js} +5 -5
- package/dist/{installer-W4SHZFOR.js → installer-GYABVCB7.js} +5 -5
- package/dist/{intercom-queue-2XB622OR.js → intercom-queue-ZCNT4LYU.js} +13 -13
- package/dist/lib/cloud-sync.js +11 -11
- package/dist/lib/consolidation.js +5 -5
- package/dist/lib/database.js +2 -2
- package/dist/lib/db-daemon-client.js +2 -2
- package/dist/lib/db.js +2 -2
- package/dist/lib/device-registry.js +1 -1
- package/dist/lib/embedder.js +2 -2
- package/dist/lib/employee-templates.js +5 -5
- package/dist/lib/employees.js +2 -2
- package/dist/lib/exe-daemon-client.js +1 -1
- package/dist/lib/exe-daemon.js +125 -62
- package/dist/lib/hybrid-search.js +5 -5
- package/dist/lib/identity.js +2 -2
- package/dist/lib/license.js +2 -2
- package/dist/lib/messaging.js +14 -14
- 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 +6 -4
- package/dist/lib/skill-learning.js +6 -6
- package/dist/lib/store.js +4 -4
- package/dist/lib/task-router.js +3 -3
- package/dist/lib/tasks.js +15 -15
- package/dist/lib/tmux-routing.js +15 -13
- package/dist/lib/token-spend.js +3 -3
- package/dist/{license-gate-7CYKGRXW.js → license-gate-73XGUIVP.js} +3 -3
- package/dist/{license-sync-H4TVZ7PR.js → license-sync-CG5YRUVH.js} +2 -2
- package/dist/mcp/register-tools.js +67 -67
- package/dist/mcp/server.js +71 -71
- 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 +17 -17
- 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 +17 -17
- package/dist/mcp/tools/send-message.js +16 -16
- package/dist/mcp/tools/update-task.js +16 -16
- package/dist/{mcp-http-config-LEBUOECG.js → mcp-http-config-TT7PXZLX.js} +3 -3
- package/dist/{memory-cards-47XM3VWW.js → memory-cards-6NGUDUDN.js} +4 -4
- package/dist/{memory-graph-extractor-COD5E52L.js → memory-graph-extractor-FIMS3VQR.js} +3 -3
- package/dist/{memory-poisoning-defense-SBYOEXT3.js → memory-poisoning-defense-M3LOQ3XU.js} +2 -2
- package/dist/{memory-pressure-watchdog-T276SDOR.js → memory-pressure-watchdog-45GABDWH.js} +14 -14
- package/dist/{memory-queue-client-IQ52W7W4.js → memory-queue-client-BDYKFNB4.js} +2 -2
- package/dist/{memory-reflection-UZK5MHG2.js → memory-reflection-LANCFYK2.js} +2 -2
- package/dist/{notifications-O5DH4O35.js → notifications-N5NKUYAU.js} +13 -13
- package/dist/{orchestration-events-65YDDRF4.js → orchestration-events-KVNRNIPR.js} +3 -3
- package/dist/{orchestrator-NHMTDGWJ.js → orchestrator-VTF5BR26.js} +15 -15
- package/dist/{pipeline-router-2KJQDX5O.js → pipeline-router-KQAYWDPH.js} +3 -3
- package/dist/{plan-limits-NQQN5C4S.js → plan-limits-EUZI4X5W.js} +5 -5
- package/dist/{projection-worker-IUCBINZH.js → projection-worker-FG6G226D.js} +2 -2
- package/dist/{prospective-memory-U2TISMIW.js → prospective-memory-FVDNUSIL.js} +2 -2
- package/dist/{reranker-D6NSD5A3.js → reranker-54Q3L32E.js} +1 -1
- package/dist/{retrieval-health-LBNMCYNF.js → retrieval-health-YJ7CXYVD.js} +1 -1
- package/dist/{review-polling-ZJWELHBP.js → review-polling-TKXYSXH6.js} +14 -14
- package/dist/runtime/index.js +17 -17
- package/dist/{session-events-GRHFFRZV.js → session-events-WQHTP65R.js} +14 -14
- package/dist/{session-kill-telemetry-ALV4KMWS.js → session-kill-telemetry-2HSE7IGH.js} +14 -14
- package/dist/{session-scope-JB5TBNCX.js → session-scope-RBKAC75W.js} +13 -13
- package/dist/{setup-wizard-5STOE3PS.js → setup-wizard-AA6ZV57H.js} +1 -1
- package/dist/{skill-refinement-JB2LRDLS.js → skill-refinement-QI35LMTZ.js} +3 -3
- package/dist/{stack-update-ZG4YS7WS.js → stack-update-BE6PX4AG.js} +3 -3
- package/dist/{steward-gate-TE63SGPL.js → steward-gate-2XD5BXH6.js} +3 -3
- package/dist/{task-enforcement-72WZMQGC.js → task-enforcement-DMOCBRLB.js} +14 -14
- package/dist/{task-scope-FLDBFGWR.js → task-scope-ULBNFBFH.js} +13 -13
- package/dist/{tasks-crud-DKOSSXTD.js → tasks-crud-6SJOKES5.js} +15 -13
- package/dist/{tasks-notify-WEWKM6B3.js → tasks-notify-TESRABUM.js} +14 -14
- package/dist/{tasks-review-MHCL7PNP.js → tasks-review-INDAGLWJ.js} +13 -13
- package/dist/{telemetry-upload-K2MZ4O6U.js → telemetry-upload-6XB3Q3IH.js} +7 -7
- package/dist/{token-budget-MZZ5DLOH.js → token-budget-NOF27AZC.js} +3 -3
- package/dist/{tool-capability-index-M3FUNMFF.js → tool-capability-index-EFBBPTBI.js} +1 -1
- package/dist/{tool-telemetry-ERE5FRVC.js → tool-telemetry-OEK6KQFF.js} +1 -1
- package/dist/tui/App.js +22 -22
- package/dist/{tui-data-JDBTFDAF.js → tui-data-EG6LEZFF.js} +13 -13
- package/dist/{worker-gate-3OR47E4T.js → worker-gate-YA35VMAN.js} +1 -1
- package/dist/{workflow-engine-JLVEE2CI.js → workflow-engine-3AVKRE5I.js} +2 -2
- package/dist/{worktree-WLPHLZ2S.js → worktree-72QYYL5L.js} +4 -4
- package/dist/{worktree-sweep-S6AYDLAQ.js → worktree-sweep-GDISKGQ2.js} +5 -5
- package/package.json +3 -3
- package/release-notes.json +35 -67
- /package/dist/{chunk-VW326Q5R.js → chunk-24WPWCD6.js} +0 -0
- /package/dist/{chunk-TVY65H23.js → chunk-4O3N7I5Z.js} +0 -0
- /package/dist/{chunk-MV5OSOP4.js → chunk-7577GDDG.js} +0 -0
- /package/dist/{chunk-B2ONIFHD.js → chunk-EWKZKO7F.js} +0 -0
- /package/dist/{chunk-FU767JXE.js → chunk-H43BPGIV.js} +0 -0
- /package/dist/{chunk-RYZR4NNE.js → chunk-IHRXCNSC.js} +0 -0
- /package/dist/{chunk-SSM2JHQ4.js → chunk-NIB2N6L2.js} +0 -0
- /package/dist/{chunk-HWVEDRZA.js → chunk-QMUSJESS.js} +0 -0
- /package/dist/{chunk-AI3BK3JD.js → chunk-RXS2LBKE.js} +0 -0
- /package/dist/{chunk-2G75BF5J.js → chunk-SNFYZFXY.js} +0 -0
- /package/dist/{chunk-6IJ47YFD.js → chunk-TSYMWC53.js} +0 -0
- /package/dist/{chunk-X2K2LHFO.js → chunk-UBYAKNRF.js} +0 -0
- /package/dist/{core-memory-4AZ2CSQZ.js → core-memory-NKKP2XUB.js} +0 -0
- /package/dist/{entity-boost-WV4GGNN2.js → entity-boost-DRIUFTYB.js} +0 -0
- /package/dist/{message-queue-client-JZ7TIOTZ.js → message-queue-client-4ERC7HLX.js} +0 -0
- /package/dist/{oauth-server-LUJ5P2BH.js → oauth-server-PECJREY2.js} +0 -0
- /package/dist/{project-boot-TOFNGMHM.js → project-boot-SFKP2MFW.js} +0 -0
- /package/dist/{wiki-acl-3JA23DH3.js → wiki-acl-QIBDNXSM.js} +0 -0
|
@@ -2,10 +2,10 @@ import {
|
|
|
2
2
|
exportOrchestration,
|
|
3
3
|
importOrchestration,
|
|
4
4
|
validatePackage
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-MCEXBLLK.js";
|
|
6
6
|
import {
|
|
7
7
|
runDriftProbes
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-CSPHV5DJ.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-POOMY3CS.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-C7B44DJI.js";
|
|
27
27
|
import {
|
|
28
28
|
StewardGate
|
|
29
|
-
} from "./chunk-
|
|
29
|
+
} from "./chunk-MKIFYIXC.js";
|
|
30
30
|
import {
|
|
31
31
|
DreamingEngine
|
|
32
|
-
} from "./chunk-
|
|
32
|
+
} from "./chunk-WGHTISNK.js";
|
|
33
33
|
import {
|
|
34
34
|
isRerankerAvailable,
|
|
35
35
|
rerankWithScores
|
|
36
|
-
} from "./chunk-
|
|
36
|
+
} from "./chunk-NIB2N6L2.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-KK67DSCO.js";
|
|
45
48
|
import {
|
|
46
49
|
listRecentSessionEvents
|
|
47
|
-
} from "./chunk-
|
|
50
|
+
} from "./chunk-UAIMI7CK.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-EWKZKO7F.js";
|
|
54
60
|
import {
|
|
55
61
|
getToolCapabilityIndex
|
|
56
|
-
} from "./chunk-
|
|
62
|
+
} from "./chunk-SNFYZFXY.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-QBRBLEXP.js";
|
|
64
67
|
import {
|
|
65
68
|
getCachedLicenseGate,
|
|
66
69
|
refreshLicenseGate
|
|
67
|
-
} from "./chunk-
|
|
68
|
-
import {
|
|
69
|
-
getToolUsageStats
|
|
70
|
-
} from "./chunk-B2ONIFHD.js";
|
|
70
|
+
} from "./chunk-SPO2RLOB.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-QQFZ32WS.js";
|
|
78
78
|
import {
|
|
79
79
|
registerUpdateTask
|
|
80
|
-
} from "./chunk-
|
|
80
|
+
} from "./chunk-TGVKQ3QB.js";
|
|
81
81
|
import {
|
|
82
82
|
registerCreateReminder
|
|
83
|
-
} from "./chunk-
|
|
83
|
+
} from "./chunk-2NY7LZT7.js";
|
|
84
84
|
import {
|
|
85
85
|
registerListReminders
|
|
86
|
-
} from "./chunk-
|
|
86
|
+
} from "./chunk-TA3A4UQL.js";
|
|
87
87
|
import {
|
|
88
88
|
registerCompleteReminder
|
|
89
|
-
} from "./chunk-
|
|
89
|
+
} from "./chunk-6XAAJ5OV.js";
|
|
90
90
|
import {
|
|
91
91
|
registerDeactivateBehavior
|
|
92
|
-
} from "./chunk-
|
|
92
|
+
} from "./chunk-376J36IW.js";
|
|
93
93
|
import {
|
|
94
94
|
completeReminder,
|
|
95
95
|
createReminder,
|
|
96
96
|
listReminders
|
|
97
|
-
} from "./chunk-
|
|
97
|
+
} from "./chunk-W5GBB23I.js";
|
|
98
98
|
import {
|
|
99
99
|
registerSendMessage
|
|
100
|
-
} from "./chunk-
|
|
100
|
+
} from "./chunk-FPTBCPI3.js";
|
|
101
101
|
import {
|
|
102
102
|
registerCreateTask
|
|
103
|
-
} from "./chunk-
|
|
103
|
+
} from "./chunk-UXYQLOFW.js";
|
|
104
104
|
import {
|
|
105
105
|
registerListTasks
|
|
106
|
-
} from "./chunk-
|
|
106
|
+
} from "./chunk-2QD5M47V.js";
|
|
107
107
|
import {
|
|
108
108
|
TOKENS_PER_IDLE_MINUTE,
|
|
109
109
|
countKillsSince,
|
|
110
110
|
sumTokensSavedSince
|
|
111
|
-
} from "./chunk-
|
|
111
|
+
} from "./chunk-EWDTTTZP.js";
|
|
112
112
|
import {
|
|
113
113
|
registerImportConversations
|
|
114
|
-
} from "./chunk-
|
|
114
|
+
} from "./chunk-2ZW4AQ24.js";
|
|
115
115
|
import {
|
|
116
116
|
createSchedule,
|
|
117
117
|
parseHumanCron
|
|
118
|
-
} from "./chunk-
|
|
118
|
+
} from "./chunk-NBDTQVWU.js";
|
|
119
119
|
import {
|
|
120
120
|
status
|
|
121
|
-
} from "./chunk-
|
|
121
|
+
} from "./chunk-BDJQWBWF.js";
|
|
122
122
|
import {
|
|
123
123
|
getAgentSpend
|
|
124
|
-
} from "./chunk-
|
|
124
|
+
} from "./chunk-5VT45EV6.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-QDI77B3E.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-T3XHH5FE.js";
|
|
144
144
|
import {
|
|
145
145
|
formatDegradations,
|
|
146
146
|
getRetrievalHealth
|
|
147
|
-
} from "./chunk-
|
|
147
|
+
} from "./chunk-24WPWCD6.js";
|
|
148
148
|
import {
|
|
149
149
|
hasFailures,
|
|
150
150
|
runHealth,
|
|
151
151
|
runTest
|
|
152
|
-
} from "./chunk-
|
|
152
|
+
} from "./chunk-HBKYKN3S.js";
|
|
153
153
|
import {
|
|
154
154
|
isSupportReportSentStatus,
|
|
155
155
|
markSupportReportSent
|
|
@@ -160,28 +160,28 @@ import {
|
|
|
160
160
|
} from "./chunk-2XZ6X3PJ.js";
|
|
161
161
|
import {
|
|
162
162
|
renderClientCOOTemplate
|
|
163
|
-
} from "./chunk-
|
|
163
|
+
} from "./chunk-WJICX53Z.js";
|
|
164
164
|
import {
|
|
165
165
|
deactivateGlobalProcedure,
|
|
166
166
|
loadGlobalProcedures,
|
|
167
167
|
storeGlobalProcedure
|
|
168
|
-
} from "./chunk-
|
|
168
|
+
} from "./chunk-YBHOWK3L.js";
|
|
169
169
|
import {
|
|
170
170
|
PLATFORM_PROCEDURES
|
|
171
|
-
} from "./chunk-
|
|
171
|
+
} from "./chunk-A47MXY2I.js";
|
|
172
172
|
import {
|
|
173
173
|
clearCloudReuploadRequired,
|
|
174
174
|
cloudSync,
|
|
175
175
|
getCloudReuploadRequired,
|
|
176
176
|
markCloudReuploadRequired
|
|
177
|
-
} from "./chunk-
|
|
177
|
+
} from "./chunk-HZ5J2GFE.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-F2RK5YWB.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-WF3J6GJZ.js";
|
|
194
194
|
import {
|
|
195
195
|
countUnconsolidated,
|
|
196
196
|
groupMemories,
|
|
197
197
|
runConsolidation,
|
|
198
198
|
selectUnconsolidated
|
|
199
|
-
} from "./chunk-
|
|
199
|
+
} from "./chunk-TNS6U2K7.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-ZRZ2Z6RZ.js";
|
|
207
207
|
import {
|
|
208
208
|
detectDcrIncompatibleConnectorsFromDisk,
|
|
209
209
|
detectExternalMcpFailures,
|
|
@@ -213,17 +213,17 @@ import {
|
|
|
213
213
|
} from "./chunk-5RACW3LX.js";
|
|
214
214
|
import {
|
|
215
215
|
updateTask
|
|
216
|
-
} from "./chunk-
|
|
216
|
+
} from "./chunk-ZDNJ3TSB.js";
|
|
217
217
|
import {
|
|
218
218
|
fastDbInit
|
|
219
|
-
} from "./chunk-
|
|
219
|
+
} from "./chunk-QMUSJESS.js";
|
|
220
220
|
import {
|
|
221
221
|
MAX_CONCURRENT_WORKERS
|
|
222
|
-
} from "./chunk-
|
|
222
|
+
} from "./chunk-6FWMLTF2.js";
|
|
223
223
|
import {
|
|
224
224
|
hybridSearch,
|
|
225
225
|
recentRecords
|
|
226
|
-
} from "./chunk-
|
|
226
|
+
} from "./chunk-7M6TXYRQ.js";
|
|
227
227
|
import {
|
|
228
228
|
buildFtsMatch,
|
|
229
229
|
tokenizeForFts
|
|
@@ -233,10 +233,10 @@ import {
|
|
|
233
233
|
flushBatch,
|
|
234
234
|
initStore,
|
|
235
235
|
writeMemory
|
|
236
|
-
} from "./chunk-
|
|
236
|
+
} from "./chunk-KLDQFOFY.js";
|
|
237
237
|
import {
|
|
238
238
|
getActiveAgent
|
|
239
|
-
} from "./chunk-
|
|
239
|
+
} from "./chunk-ID3V4BWS.js";
|
|
240
240
|
import {
|
|
241
241
|
getMySession,
|
|
242
242
|
resolveExeSession,
|
|
@@ -245,13 +245,13 @@ import {
|
|
|
245
245
|
sessionScopeFilter,
|
|
246
246
|
updateTaskStatus,
|
|
247
247
|
writeCheckpoint
|
|
248
|
-
} from "./chunk-
|
|
248
|
+
} from "./chunk-KUJGADX6.js";
|
|
249
249
|
import {
|
|
250
250
|
listSessions
|
|
251
|
-
} from "./chunk-
|
|
251
|
+
} from "./chunk-JRD7ARQ6.js";
|
|
252
252
|
import {
|
|
253
253
|
recordOrchestrationEventBestEffort
|
|
254
|
-
} from "./chunk-
|
|
254
|
+
} from "./chunk-F6TJIWN5.js";
|
|
255
255
|
import {
|
|
256
256
|
DEFAULT_MODELS,
|
|
257
257
|
KNOWN_RUNTIMES,
|
|
@@ -268,7 +268,7 @@ import {
|
|
|
268
268
|
assertEmployeeLimit,
|
|
269
269
|
assertFeature,
|
|
270
270
|
assertMemoryLimit
|
|
271
|
-
} from "./chunk-
|
|
271
|
+
} from "./chunk-BB5IKY7B.js";
|
|
272
272
|
import {
|
|
273
273
|
getProjectName
|
|
274
274
|
} from "./chunk-OPU3NYOO.js";
|
|
@@ -287,7 +287,7 @@ import {
|
|
|
287
287
|
isScheduledTrigger,
|
|
288
288
|
loadTriggers,
|
|
289
289
|
sanitizeParam
|
|
290
|
-
} from "./chunk-
|
|
290
|
+
} from "./chunk-4O3N7I5Z.js";
|
|
291
291
|
import {
|
|
292
292
|
pushConversationToCRM
|
|
293
293
|
} from "./chunk-ML4S5SHZ.js";
|
|
@@ -308,7 +308,7 @@ import {
|
|
|
308
308
|
loadEmployeesSync,
|
|
309
309
|
saveEmployees,
|
|
310
310
|
updateIdentity
|
|
311
|
-
} from "./chunk-
|
|
311
|
+
} from "./chunk-QGOMYIVT.js";
|
|
312
312
|
import {
|
|
313
313
|
getEventLoopLagMs,
|
|
314
314
|
isDaemonAlive,
|
|
@@ -330,7 +330,7 @@ import {
|
|
|
330
330
|
refreshLicense,
|
|
331
331
|
saveLicense,
|
|
332
332
|
validateLicense
|
|
333
|
-
} from "./chunk-
|
|
333
|
+
} from "./chunk-BMSAJ2IH.js";
|
|
334
334
|
import {
|
|
335
335
|
EXE_AI_DIR,
|
|
336
336
|
loadConfig
|
|
@@ -514,7 +514,7 @@ function registerRecallMyMemory(server) {
|
|
|
514
514
|
}) => {
|
|
515
515
|
try {
|
|
516
516
|
if (!isInitialized()) {
|
|
517
|
-
const { fastDbInit: fastDbInit2 } = await import("./fast-db-init-
|
|
517
|
+
const { fastDbInit: fastDbInit2 } = await import("./fast-db-init-O6A3TK3F.js");
|
|
518
518
|
await fastDbInit2();
|
|
519
519
|
}
|
|
520
520
|
if (!recent && !query) {
|
|
@@ -561,7 +561,7 @@ function registerRecallMyMemory(server) {
|
|
|
561
561
|
let federatedCount = 0;
|
|
562
562
|
if (!recent && query && results.length < FEDERATION_THRESHOLD) {
|
|
563
563
|
try {
|
|
564
|
-
const { searchCodeContextSemantic: searchCodeContextSemantic2 } = await import("./code-context-index-
|
|
564
|
+
const { searchCodeContextSemantic: searchCodeContextSemantic2 } = await import("./code-context-index-2PUBBQOE.js");
|
|
565
565
|
const codeResults = await Promise.race([
|
|
566
566
|
searchCodeContextSemantic2(query, { limit: 5 }),
|
|
567
567
|
new Promise((_, rej) => setTimeout(() => rej(new Error("timeout")), 2e3))
|
|
@@ -799,7 +799,7 @@ function registerStoreMemory(server) {
|
|
|
799
799
|
}
|
|
800
800
|
const { agentId, agentRole } = getActiveAgent();
|
|
801
801
|
if (kind === "prospective") {
|
|
802
|
-
const { createProspectiveMemory } = await import("./prospective-memory-
|
|
802
|
+
const { createProspectiveMemory } = await import("./prospective-memory-FVDNUSIL.js");
|
|
803
803
|
let sessionScope = null;
|
|
804
804
|
try {
|
|
805
805
|
const { resolveExeSession: resolveExeSession2 } = await import("./lib/tmux-routing.js");
|
|
@@ -1785,7 +1785,7 @@ async function handleSupersede(input) {
|
|
|
1785
1785
|
}
|
|
1786
1786
|
try {
|
|
1787
1787
|
const { getClient: getClient2 } = await import("./lib/database.js");
|
|
1788
|
-
const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-
|
|
1788
|
+
const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-IUVRZOSF.js");
|
|
1789
1789
|
const { writeMemory: writeMemory2, flushBatch: flushBatch2 } = await import("./lib/store.js");
|
|
1790
1790
|
const { randomUUID: randomUUID2 } = await import("crypto");
|
|
1791
1791
|
const client = getClient2();
|
|
@@ -1838,7 +1838,7 @@ New memory id: ${newId}`
|
|
|
1838
1838
|
}
|
|
1839
1839
|
async function handleResonanceQuery(input) {
|
|
1840
1840
|
try {
|
|
1841
|
-
const { getHotPairs, getCoActivationNeighbors } = await import("./co-activation-
|
|
1841
|
+
const { getHotPairs, getCoActivationNeighbors } = await import("./co-activation-7F3J2GC7.js");
|
|
1842
1842
|
const subAction = input.resonance_action ?? "hot_pairs";
|
|
1843
1843
|
const limit = input.limit ?? 20;
|
|
1844
1844
|
if (subAction === "hot_pairs") {
|
|
@@ -1933,7 +1933,7 @@ function registerMemory(server) {
|
|
|
1933
1933
|
return handleResonanceQuery(input);
|
|
1934
1934
|
}
|
|
1935
1935
|
if (action === "update_working_memory" || action === "get_working_memory") {
|
|
1936
|
-
const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-
|
|
1936
|
+
const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-IUVRZOSF.js");
|
|
1937
1937
|
const { agentId } = getActiveAgent2();
|
|
1938
1938
|
const { readWorkingMemoryWithMeta, writeWorkingMemory, WORKING_MEMORY_MAX_BYTES } = await import("./working-memory-PY4AG577.js");
|
|
1939
1939
|
if (action === "get_working_memory") {
|
|
@@ -1959,9 +1959,9 @@ function registerMemory(server) {
|
|
|
1959
1959
|
}
|
|
1960
1960
|
}
|
|
1961
1961
|
if (action === "core_get" || action === "core_set" || action === "core_delete") {
|
|
1962
|
-
const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-
|
|
1962
|
+
const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-IUVRZOSF.js");
|
|
1963
1963
|
const { agentId } = getActiveAgent2();
|
|
1964
|
-
const { getCoreMemory, setCoreMemory, deleteCoreMemory, formatCoreMemoryBlock } = await import("./core-memory-
|
|
1964
|
+
const { getCoreMemory, setCoreMemory, deleteCoreMemory, formatCoreMemoryBlock } = await import("./core-memory-NKKP2XUB.js");
|
|
1965
1965
|
if (action === "core_get") {
|
|
1966
1966
|
const entries = await getCoreMemory(agentId);
|
|
1967
1967
|
const block = formatCoreMemoryBlock(entries);
|
|
@@ -2013,12 +2013,12 @@ function registerMemory(server) {
|
|
|
2013
2013
|
if (!storeTrigger || !storeTriggerAction) {
|
|
2014
2014
|
return errorResult('memory action "store" with kind="reflex" requires trigger and trigger_action fields');
|
|
2015
2015
|
}
|
|
2016
|
-
const { formatReflexContent, storeReflexBehavior: storeReflexBehavior2 } = await import("./behaviors-
|
|
2016
|
+
const { formatReflexContent, storeReflexBehavior: storeReflexBehavior2 } = await import("./behaviors-MQCADHAD.js");
|
|
2017
2017
|
const reflexText = formatReflexContent(storeTrigger, storeTriggerAction);
|
|
2018
2018
|
legacyArgs.text ??= reflexText;
|
|
2019
2019
|
legacyArgs.query ??= reflexText;
|
|
2020
2020
|
try {
|
|
2021
|
-
const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-
|
|
2021
|
+
const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-IUVRZOSF.js");
|
|
2022
2022
|
const { getProjectName: getProjectName2 } = await import("./project-name-EWG5KAZP.js");
|
|
2023
2023
|
const agent = getActiveAgent2();
|
|
2024
2024
|
const behaviorId = await storeReflexBehavior2({
|
|
@@ -2374,7 +2374,7 @@ function registerCloseTask(server) {
|
|
|
2374
2374
|
async ({ task_id, result: result3, status: status2 }) => {
|
|
2375
2375
|
const agent = getActiveAgent();
|
|
2376
2376
|
try {
|
|
2377
|
-
const { StewardGate: StewardGate2 } = await import("./steward-gate-
|
|
2377
|
+
const { StewardGate: StewardGate2 } = await import("./steward-gate-2XD5BXH6.js");
|
|
2378
2378
|
const steward = new StewardGate2();
|
|
2379
2379
|
const gateDecision = await steward.checkAuthority(agent.agentId || "unknown", "close_task", task_id);
|
|
2380
2380
|
if (!gateDecision.allowed) {
|
|
@@ -2555,8 +2555,8 @@ ${preflightWarnings.join("\n")}`;
|
|
|
2555
2555
|
if (mergeNote) text5 += mergeNote;
|
|
2556
2556
|
if (status2 === "closed" && assignee) {
|
|
2557
2557
|
try {
|
|
2558
|
-
const { cleanupAgentWorktree } = await import("./worktree-sweep-
|
|
2559
|
-
const { getGitRoot } = await import("./worktree-
|
|
2558
|
+
const { cleanupAgentWorktree } = await import("./worktree-sweep-GDISKGQ2.js");
|
|
2559
|
+
const { getGitRoot } = await import("./worktree-72QYYL5L.js");
|
|
2560
2560
|
const repoRoot = getGitRoot(baseDir);
|
|
2561
2561
|
if (repoRoot) {
|
|
2562
2562
|
const cleanupNotes = cleanupAgentWorktree(repoRoot, assignee);
|
|
@@ -2605,8 +2605,8 @@ ${preflightWarnings.join("\n")}`;
|
|
|
2605
2605
|
} catch {
|
|
2606
2606
|
}
|
|
2607
2607
|
try {
|
|
2608
|
-
const { cleanupAgentWorktree } = await import("./worktree-sweep-
|
|
2609
|
-
const { getGitRoot } = await import("./worktree-
|
|
2608
|
+
const { cleanupAgentWorktree } = await import("./worktree-sweep-GDISKGQ2.js");
|
|
2609
|
+
const { getGitRoot } = await import("./worktree-72QYYL5L.js");
|
|
2610
2610
|
const root = getGitRoot(_baseDir);
|
|
2611
2611
|
if (root) {
|
|
2612
2612
|
const notes = cleanupAgentWorktree(root, _assignee);
|
|
@@ -2709,7 +2709,7 @@ function registerResumeEmployee(server) {
|
|
|
2709
2709
|
},
|
|
2710
2710
|
async ({ agent_id, project_name }) => {
|
|
2711
2711
|
if (!isInitialized()) {
|
|
2712
|
-
const { fastDbInit: fastDbInit2 } = await import("./fast-db-init-
|
|
2712
|
+
const { fastDbInit: fastDbInit2 } = await import("./fast-db-init-O6A3TK3F.js");
|
|
2713
2713
|
await fastDbInit2();
|
|
2714
2714
|
}
|
|
2715
2715
|
const client = getClient();
|
|
@@ -2735,7 +2735,7 @@ function registerResumeEmployee(server) {
|
|
|
2735
2735
|
};
|
|
2736
2736
|
}
|
|
2737
2737
|
try {
|
|
2738
|
-
const { isTmuxSessionAlive } = await import("./tasks-crud-
|
|
2738
|
+
const { isTmuxSessionAlive } = await import("./tasks-crud-6SJOKES5.js");
|
|
2739
2739
|
const now = (/* @__PURE__ */ new Date()).toISOString();
|
|
2740
2740
|
for (const row of openTasks.rows) {
|
|
2741
2741
|
const status2 = String(row.status);
|
|
@@ -2763,7 +2763,7 @@ function registerResumeEmployee(server) {
|
|
|
2763
2763
|
}
|
|
2764
2764
|
let checkpointInfo = "";
|
|
2765
2765
|
try {
|
|
2766
|
-
const { readLatestCheckpoint } = await import("./tasks-crud-
|
|
2766
|
+
const { readLatestCheckpoint } = await import("./tasks-crud-6SJOKES5.js");
|
|
2767
2767
|
const checkpoint = await readLatestCheckpoint(agent_id);
|
|
2768
2768
|
if (checkpoint) {
|
|
2769
2769
|
const filesTouched = checkpoint.files_touched?.length > 0 ? checkpoint.files_touched.join(", ") : "none";
|
|
@@ -3179,7 +3179,7 @@ function registerTask(server) {
|
|
|
3179
3179
|
const missing2 = missingRequiredFields2(args, REQUIRED_FIELDS2.create_group);
|
|
3180
3180
|
if (missing2.length > 0) return errorResult2(`task action "create_group" missing required field(s): ${missing2.join(", ")}`);
|
|
3181
3181
|
try {
|
|
3182
|
-
const { createTaskGroup } = await import("./tasks-crud-
|
|
3182
|
+
const { createTaskGroup } = await import("./tasks-crud-6SJOKES5.js");
|
|
3183
3183
|
const group = await createTaskGroup({
|
|
3184
3184
|
title: args.title,
|
|
3185
3185
|
coordinator: args.coordinator,
|
|
@@ -3198,7 +3198,7 @@ function registerTask(server) {
|
|
|
3198
3198
|
const missing2 = missingRequiredFields2(args, REQUIRED_FIELDS2.group_status);
|
|
3199
3199
|
if (missing2.length > 0) return errorResult2(`task action "group_status" missing required field(s): ${missing2.join(", ")}`);
|
|
3200
3200
|
try {
|
|
3201
|
-
const { getGroupStatus } = await import("./tasks-crud-
|
|
3201
|
+
const { getGroupStatus } = await import("./tasks-crud-6SJOKES5.js");
|
|
3202
3202
|
const status2 = await getGroupStatus(args.group_id);
|
|
3203
3203
|
return { content: [{ type: "text", text: JSON.stringify(status2, null, 2) }] };
|
|
3204
3204
|
} catch (err) {
|
|
@@ -3210,7 +3210,7 @@ function registerTask(server) {
|
|
|
3210
3210
|
const missing2 = missingRequiredFields2(args, REQUIRED_FIELDS2.group_results);
|
|
3211
3211
|
if (missing2.length > 0) return errorResult2(`task action "group_results" missing required field(s): ${missing2.join(", ")}`);
|
|
3212
3212
|
try {
|
|
3213
|
-
const { getGroupResults } = await import("./tasks-crud-
|
|
3213
|
+
const { getGroupResults } = await import("./tasks-crud-6SJOKES5.js");
|
|
3214
3214
|
const results = await getGroupResults(args.group_id);
|
|
3215
3215
|
return { content: [{ type: "text", text: JSON.stringify(results, null, 2) }] };
|
|
3216
3216
|
} catch (err) {
|
|
@@ -3461,7 +3461,7 @@ function registerMessage(server) {
|
|
|
3461
3461
|
if (msgType && msgPayload) {
|
|
3462
3462
|
try {
|
|
3463
3463
|
const { buildTypedMessage, serializeMessage } = await import("./typed-messages-TKDGVPHS.js");
|
|
3464
|
-
const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-
|
|
3464
|
+
const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-IUVRZOSF.js");
|
|
3465
3465
|
const { sendMessage } = await import("./lib/messaging.js");
|
|
3466
3466
|
const { agentId } = getActiveAgent2();
|
|
3467
3467
|
const envelope = buildTypedMessage({
|
|
@@ -3495,7 +3495,7 @@ ID: ${msg.id}`
|
|
|
3495
3495
|
if (action === "read") {
|
|
3496
3496
|
try {
|
|
3497
3497
|
const { getPendingMessages } = await import("./lib/messaging.js");
|
|
3498
|
-
const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-
|
|
3498
|
+
const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-IUVRZOSF.js");
|
|
3499
3499
|
const { agentId } = getActiveAgent2();
|
|
3500
3500
|
const messages = await getPendingMessages(agentId);
|
|
3501
3501
|
if (messages.length === 0) {
|
|
@@ -3858,8 +3858,8 @@ function registerIngestDocument(server) {
|
|
|
3858
3858
|
},
|
|
3859
3859
|
async (input) => {
|
|
3860
3860
|
try {
|
|
3861
|
-
const { assertFeature: assertFeature2 } = await import("./plan-limits-
|
|
3862
|
-
const { assertMemoryLimit: assertMemoryLimit2 } = await import("./plan-limits-
|
|
3861
|
+
const { assertFeature: assertFeature2 } = await import("./plan-limits-EUZI4X5W.js");
|
|
3862
|
+
const { assertMemoryLimit: assertMemoryLimit2 } = await import("./plan-limits-EUZI4X5W.js");
|
|
3863
3863
|
await assertFeature2("wiki");
|
|
3864
3864
|
await assertMemoryLimit2();
|
|
3865
3865
|
const result3 = await ingestDocument(input);
|
|
@@ -3930,8 +3930,8 @@ function registerPurgeDocument(server) {
|
|
|
3930
3930
|
},
|
|
3931
3931
|
async ({ document_id }) => {
|
|
3932
3932
|
try {
|
|
3933
|
-
const { StewardGate: StewardGate2 } = await import("./steward-gate-
|
|
3934
|
-
const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-
|
|
3933
|
+
const { StewardGate: StewardGate2 } = await import("./steward-gate-2XD5BXH6.js");
|
|
3934
|
+
const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-IUVRZOSF.js");
|
|
3935
3935
|
const steward = new StewardGate2();
|
|
3936
3936
|
const agent = getActiveAgent2();
|
|
3937
3937
|
const gateDecision = await steward.checkAuthority(agent.agentId || "unknown", "purge_document", document_id);
|
|
@@ -4101,7 +4101,7 @@ function registerDocument(server) {
|
|
|
4101
4101
|
const { action: _action, ...legacyArgs } = input;
|
|
4102
4102
|
if (action === "list" && (legacyArgs.workspace_id === void 0 || legacyArgs.workspace_id === null || legacyArgs.workspace_id === "")) {
|
|
4103
4103
|
try {
|
|
4104
|
-
const { resolveDefaultWorkspaceId, listWorkspaces } = await import("./documents-
|
|
4104
|
+
const { resolveDefaultWorkspaceId, listWorkspaces } = await import("./documents-C5LYSJT3.js");
|
|
4105
4105
|
const defaultId = await resolveDefaultWorkspaceId();
|
|
4106
4106
|
if (defaultId) {
|
|
4107
4107
|
legacyArgs.workspace_id = defaultId;
|
|
@@ -5128,7 +5128,7 @@ async function handleTrigger(limit) {
|
|
|
5128
5128
|
if (rows.rows.length === 0) {
|
|
5129
5129
|
return text3("No conversations found to re-process.");
|
|
5130
5130
|
}
|
|
5131
|
-
const { ingest } = await import("./pipeline-router-
|
|
5131
|
+
const { ingest } = await import("./pipeline-router-KQAYWDPH.js");
|
|
5132
5132
|
const results = [];
|
|
5133
5133
|
for (const row of rows.rows) {
|
|
5134
5134
|
const r = row;
|
|
@@ -5759,8 +5759,8 @@ function registerMergeEntities(server) {
|
|
|
5759
5759
|
},
|
|
5760
5760
|
async ({ source_name, source_type, target_name, target_type }) => {
|
|
5761
5761
|
try {
|
|
5762
|
-
const { StewardGate: StewardGate2 } = await import("./steward-gate-
|
|
5763
|
-
const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-
|
|
5762
|
+
const { StewardGate: StewardGate2 } = await import("./steward-gate-2XD5BXH6.js");
|
|
5763
|
+
const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-IUVRZOSF.js");
|
|
5764
5764
|
const steward = new StewardGate2();
|
|
5765
5765
|
const agent = getActiveAgent2();
|
|
5766
5766
|
const gateDecision = await steward.checkAuthority(agent.agentId || "unknown", "merge_entities", `${source_name}\u2192${target_name}`);
|
|
@@ -5968,7 +5968,7 @@ async function handleExtractFromDocument(args) {
|
|
|
5968
5968
|
return errorResult7('graph action "extract_from_document" requires document_id');
|
|
5969
5969
|
}
|
|
5970
5970
|
try {
|
|
5971
|
-
const { extractGraphFromExistingDocument } = await import("./doc-graph-extractor-
|
|
5971
|
+
const { extractGraphFromExistingDocument } = await import("./doc-graph-extractor-VBZ6XTTE.js");
|
|
5972
5972
|
const result3 = await extractGraphFromExistingDocument(documentId);
|
|
5973
5973
|
const lines = [
|
|
5974
5974
|
`## Graph Extraction for Document ${documentId}`,
|
|
@@ -5995,7 +5995,7 @@ async function handleCleanupGarbage(args) {
|
|
|
5995
5995
|
const doMerge = !garbageOnly;
|
|
5996
5996
|
let mod;
|
|
5997
5997
|
try {
|
|
5998
|
-
mod = await import("./cleanup-graph-garbage-
|
|
5998
|
+
mod = await import("./cleanup-graph-garbage-2YH52ADR.js");
|
|
5999
5999
|
} catch (err) {
|
|
6000
6000
|
return errorResult7(`cleanup_garbage: failed to load cleanup module \u2014 ${err instanceof Error ? err.message : String(err)}`);
|
|
6001
6001
|
}
|
|
@@ -6136,7 +6136,7 @@ function registerGraph(server) {
|
|
|
6136
6136
|
}
|
|
6137
6137
|
|
|
6138
6138
|
// src/mcp/tools/config.ts
|
|
6139
|
-
import { z as
|
|
6139
|
+
import { z as z77 } from "zod";
|
|
6140
6140
|
|
|
6141
6141
|
// src/mcp/tools/set-agent-config.ts
|
|
6142
6142
|
import { z as z48 } from "zod";
|
|
@@ -6854,7 +6854,7 @@ async function getAgentSessionLoad() {
|
|
|
6854
6854
|
return { sessions: [], totalLive: 0, busySessions: 0, idleSessions: 0 };
|
|
6855
6855
|
}
|
|
6856
6856
|
const { getClient: getClient2 } = await import("./lib/database.js");
|
|
6857
|
-
const { sessionScopeFilter: sessionScopeFilter2 } = await import("./task-scope-
|
|
6857
|
+
const { sessionScopeFilter: sessionScopeFilter2 } = await import("./task-scope-ULBNFBFH.js");
|
|
6858
6858
|
const client = getClient2();
|
|
6859
6859
|
const scope = sessionScopeFilter2();
|
|
6860
6860
|
for (const s of liveAgentSessions) {
|
|
@@ -6981,7 +6981,7 @@ ${mode} Applying repairs...
|
|
|
6981
6981
|
`];
|
|
6982
6982
|
if (!isDryRun) {
|
|
6983
6983
|
try {
|
|
6984
|
-
const { createBackup: createBackup2 } = await import("./db-backup-
|
|
6984
|
+
const { createBackup: createBackup2 } = await import("./db-backup-XLID57KW.js");
|
|
6985
6985
|
const backupPath = await createBackup2("pre-fix");
|
|
6986
6986
|
if (backupPath) {
|
|
6987
6987
|
fixLog.push(` Backup created: ${backupPath.split("/").pop()}`);
|
|
@@ -7220,7 +7220,7 @@ async function cloudStatusText() {
|
|
|
7220
7220
|
if (lastReuploadedAt) lines.push(`- Last re-upload: ${lastReuploadedAt}`);
|
|
7221
7221
|
lines.push("");
|
|
7222
7222
|
try {
|
|
7223
|
-
const { getRetrievalHealth: getRetrievalHealth2, formatDegradations: formatDegradations2 } = await import("./retrieval-health-
|
|
7223
|
+
const { getRetrievalHealth: getRetrievalHealth2, formatDegradations: formatDegradations2 } = await import("./retrieval-health-YJ7CXYVD.js");
|
|
7224
7224
|
const h = await getRetrievalHealth2();
|
|
7225
7225
|
lines.push(formatDegradations2(h.degradations, "Health / Degradations"));
|
|
7226
7226
|
lines.push("");
|
|
@@ -8579,16 +8579,115 @@ Valid: ${license.valid ? "yes" : "no"}`);
|
|
|
8579
8579
|
);
|
|
8580
8580
|
}
|
|
8581
8581
|
|
|
8582
|
-
// src/mcp/tools/
|
|
8582
|
+
// src/mcp/tools/set-customer-plan.ts
|
|
8583
8583
|
import { z as z68 } from "zod";
|
|
8584
|
-
var
|
|
8585
|
-
|
|
8586
|
-
|
|
8587
|
-
|
|
8584
|
+
var PLAN = z68.enum(["free", "pro", "team", "agency", "enterprise"]);
|
|
8585
|
+
var REFRESH_REMINDER = "Customer must run `refresh_license` (or reboot) to pick up the new plan and updated agent limit.";
|
|
8586
|
+
async function sendSetPlan(payload) {
|
|
8587
|
+
if (process.env.VITEST || process.env.NODE_ENV === "test") {
|
|
8588
|
+
return { status: "skipped: test environment" };
|
|
8589
|
+
}
|
|
8590
|
+
const config = await loadConfig();
|
|
8591
|
+
const routerUrl = process.env.API_ROUTER_URL?.replace(/\/+$/, "");
|
|
8592
|
+
const endpoint2 = process.env.EXE_SET_CUSTOMER_PLAN_ENDPOINT || (routerUrl ? `${routerUrl}/admin/customer/plan` : "https://api.askexe.com/admin/customer/plan");
|
|
8593
|
+
const licenseKey = loadLicense() || process.env.EXE_LICENSE_KEY || config.cloud?.apiKey;
|
|
8594
|
+
const licenseToken = readCachedLicenseToken();
|
|
8595
|
+
try {
|
|
8596
|
+
const parsed = new URL(endpoint2);
|
|
8597
|
+
if (parsed.protocol !== "https:" && !["localhost", "127.0.0.1", "::1"].includes(parsed.hostname)) {
|
|
8598
|
+
return { status: "failed: insecure endpoint rejected" };
|
|
8599
|
+
}
|
|
8600
|
+
const response = await fetch(parsed, {
|
|
8601
|
+
method: "POST",
|
|
8602
|
+
headers: {
|
|
8603
|
+
"content-type": "application/json",
|
|
8604
|
+
...licenseKey ? { "x-exe-license-key": licenseKey } : {},
|
|
8605
|
+
...licenseToken ? { "x-exe-license-token": licenseToken } : {},
|
|
8606
|
+
...supportAdminHeaders(config)
|
|
8607
|
+
},
|
|
8608
|
+
body: JSON.stringify(payload),
|
|
8609
|
+
signal: AbortSignal.timeout(1e4)
|
|
8610
|
+
});
|
|
8611
|
+
let body;
|
|
8612
|
+
try {
|
|
8613
|
+
body = await response.json();
|
|
8614
|
+
} catch {
|
|
8615
|
+
body = void 0;
|
|
8616
|
+
}
|
|
8617
|
+
if (!response.ok) return { status: `failed: HTTP ${response.status}`, body };
|
|
8618
|
+
return { status: "sent", body };
|
|
8619
|
+
} catch (err) {
|
|
8620
|
+
return { status: `failed: ${err instanceof Error ? err.message : String(err)}` };
|
|
8621
|
+
}
|
|
8622
|
+
}
|
|
8623
|
+
function buildSetPlanPayload(input) {
|
|
8624
|
+
const payload = { plan: input.plan };
|
|
8625
|
+
if (input.email) payload.email = input.email;
|
|
8626
|
+
if (input.license_key) payload.license_key = input.license_key;
|
|
8627
|
+
return payload;
|
|
8628
|
+
}
|
|
8629
|
+
function registerSetCustomerPlan(server) {
|
|
8630
|
+
server.registerTool(
|
|
8631
|
+
"set_customer_plan",
|
|
8632
|
+
{
|
|
8633
|
+
title: "Set Customer Plan",
|
|
8634
|
+
description: "ADMIN ONLY: set a customer's entitlement plan (free/pro/team/agency/enterprise) in the D1 users table (source of truth). Identify the customer by email OR license_key. Requires the AskExe support admin token; a customer license key alone is rejected by the server.",
|
|
8635
|
+
inputSchema: {
|
|
8636
|
+
email: z68.string().email().optional().describe("Customer email that identifies the target user"),
|
|
8637
|
+
license_key: z68.string().optional().describe("Customer license key (exe_sk_*) \u2014 alternative to email"),
|
|
8638
|
+
plan: PLAN.describe("New entitlement plan: free, pro, team, agency, or enterprise")
|
|
8639
|
+
}
|
|
8640
|
+
},
|
|
8641
|
+
async ({ email, license_key, plan }) => {
|
|
8642
|
+
if (!email && !license_key) {
|
|
8643
|
+
return {
|
|
8644
|
+
content: [{ type: "text", text: "set_customer_plan requires email or license_key to identify the customer." }],
|
|
8645
|
+
isError: true
|
|
8646
|
+
};
|
|
8647
|
+
}
|
|
8648
|
+
const config = await loadConfig();
|
|
8649
|
+
if (!resolveSupportAdminToken(config)) {
|
|
8650
|
+
return {
|
|
8651
|
+
content: [{
|
|
8652
|
+
type: "text",
|
|
8653
|
+
text: "set_customer_plan is admin-only and requires the AskExe support admin token (ASKEXE_SUPPORT_ADMIN_TOKEN env or config.support.adminToken). No token configured."
|
|
8654
|
+
}],
|
|
8655
|
+
isError: true
|
|
8656
|
+
};
|
|
8657
|
+
}
|
|
8658
|
+
const payload = buildSetPlanPayload({ email, license_key, plan });
|
|
8659
|
+
const result3 = await sendSetPlan(payload);
|
|
8660
|
+
if (result3.status !== "sent" && result3.status !== "skipped: test environment") {
|
|
8661
|
+
return {
|
|
8662
|
+
content: [{ type: "text", text: `Failed to set plan: ${result3.status}` }],
|
|
8663
|
+
isError: true
|
|
8664
|
+
};
|
|
8665
|
+
}
|
|
8666
|
+
const record = result3.body ?? {};
|
|
8667
|
+
const lines = [];
|
|
8668
|
+
lines.push("## Customer Plan Updated\n");
|
|
8669
|
+
lines.push(`- **Email:** ${record.email ?? email ?? "(by license_key)"}`);
|
|
8670
|
+
lines.push(`- **Plan:** ${record.plan ?? plan}`);
|
|
8671
|
+
if (record.org_id !== void 0) lines.push(`- **Org:** ${record.org_id ?? "none"}`);
|
|
8672
|
+
if (record.parent_user_id !== void 0) lines.push(`- **Parent user:** ${record.parent_user_id ?? "none"}`);
|
|
8673
|
+
lines.push(`- **Status:** ${result3.status}`);
|
|
8674
|
+
lines.push("");
|
|
8675
|
+
lines.push(REFRESH_REMINDER);
|
|
8676
|
+
return { content: [{ type: "text", text: lines.join("\n") }] };
|
|
8677
|
+
}
|
|
8678
|
+
);
|
|
8679
|
+
}
|
|
8680
|
+
|
|
8681
|
+
// src/mcp/tools/create-trigger.ts
|
|
8682
|
+
import { z as z69 } from "zod";
|
|
8683
|
+
var conditionSchema = z69.object({
|
|
8684
|
+
field: z69.string().describe("Dot-path field to evaluate, e.g., 'stage' or 'amount'"),
|
|
8685
|
+
op: z69.enum(["eq", "neq", "gt", "lt", "gte", "lte", "contains", "not_contains"]).describe("Comparison operator"),
|
|
8686
|
+
value: z69.string().or(z69.number()).or(z69.boolean()).describe("Value to compare against")
|
|
8588
8687
|
});
|
|
8589
|
-
var actionSchema =
|
|
8590
|
-
type:
|
|
8591
|
-
params:
|
|
8688
|
+
var actionSchema = z69.object({
|
|
8689
|
+
type: z69.enum(["send_whatsapp", "send_message", "create_task", "mcp_tool"]).describe("Action type to execute"),
|
|
8690
|
+
params: z69.record(z69.string(), z69.string()).describe(
|
|
8592
8691
|
"Action parameters. Supports {{record.field}} templates for dynamic values."
|
|
8593
8692
|
)
|
|
8594
8693
|
});
|
|
@@ -8599,24 +8698,24 @@ function registerCreateTrigger(server) {
|
|
|
8599
8698
|
title: "Create Trigger",
|
|
8600
8699
|
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.).",
|
|
8601
8700
|
inputSchema: {
|
|
8602
|
-
name:
|
|
8603
|
-
event:
|
|
8701
|
+
name: z69.string().describe("Human-readable trigger name"),
|
|
8702
|
+
event: z69.string().describe(
|
|
8604
8703
|
'CRM event to match, e.g., "Deal.updated", "Order.created", "*" for all'
|
|
8605
8704
|
),
|
|
8606
|
-
conditions:
|
|
8607
|
-
actions:
|
|
8608
|
-
project:
|
|
8609
|
-
enabled:
|
|
8610
|
-
schedule:
|
|
8705
|
+
conditions: z69.array(conditionSchema).default([]).describe("Conditions that must all match (AND logic)"),
|
|
8706
|
+
actions: z69.array(actionSchema).min(1).describe("Actions to execute when trigger fires"),
|
|
8707
|
+
project: z69.string().optional().describe("Scope trigger to a specific project"),
|
|
8708
|
+
enabled: z69.boolean().default(true).describe("Whether trigger is active"),
|
|
8709
|
+
schedule: z69.string().optional().describe(
|
|
8611
8710
|
'Cron schedule for time-based triggers, e.g., "0 9 * * *" or "Monday 9am"'
|
|
8612
8711
|
),
|
|
8613
|
-
query:
|
|
8712
|
+
query: z69.string().optional().describe(
|
|
8614
8713
|
"CRM GraphQL query to run on schedule (required if schedule is set)"
|
|
8615
8714
|
)
|
|
8616
8715
|
}
|
|
8617
8716
|
},
|
|
8618
8717
|
async ({ name, event, conditions, actions, project, enabled, schedule, query }) => {
|
|
8619
|
-
const { assertFeature: assertFeature2 } = await import("./plan-limits-
|
|
8718
|
+
const { assertFeature: assertFeature2 } = await import("./plan-limits-EUZI4X5W.js");
|
|
8620
8719
|
const gatedActions = {
|
|
8621
8720
|
send_whatsapp: "external_agents",
|
|
8622
8721
|
update_wiki: "wiki"
|
|
@@ -8690,7 +8789,7 @@ Enabled: ${trigger.enabled}` + scheduleInfo;
|
|
|
8690
8789
|
}
|
|
8691
8790
|
|
|
8692
8791
|
// src/mcp/tools/list-triggers.ts
|
|
8693
|
-
import { z as
|
|
8792
|
+
import { z as z70 } from "zod";
|
|
8694
8793
|
function registerListTriggers(server) {
|
|
8695
8794
|
server.registerTool(
|
|
8696
8795
|
"list_triggers",
|
|
@@ -8698,7 +8797,7 @@ function registerListTriggers(server) {
|
|
|
8698
8797
|
title: "List Triggers",
|
|
8699
8798
|
description: "List configured CRM event triggers and scheduled automations.",
|
|
8700
8799
|
inputSchema: {
|
|
8701
|
-
project:
|
|
8800
|
+
project: z70.string().optional().describe("Filter triggers by project name")
|
|
8702
8801
|
}
|
|
8703
8802
|
},
|
|
8704
8803
|
async ({ project }) => {
|
|
@@ -8733,7 +8832,7 @@ function registerListTriggers(server) {
|
|
|
8733
8832
|
}
|
|
8734
8833
|
|
|
8735
8834
|
// src/mcp/tools/apply-starter-pack.ts
|
|
8736
|
-
import { z as
|
|
8835
|
+
import { z as z71 } from "zod";
|
|
8737
8836
|
|
|
8738
8837
|
// src/automation/starter-packs/index.ts
|
|
8739
8838
|
import { readFileSync as readFileSync3, readdirSync as readdirSync2, existsSync as existsSync5 } from "fs";
|
|
@@ -8917,17 +9016,17 @@ function registerApplyStarterPack(server) {
|
|
|
8917
9016
|
title: "Apply Starter Pack",
|
|
8918
9017
|
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.",
|
|
8919
9018
|
inputSchema: {
|
|
8920
|
-
industry:
|
|
9019
|
+
industry: z71.string().describe(
|
|
8921
9020
|
'Industry pack to apply (e.g., "distribution"). Use without args to list available packs.'
|
|
8922
9021
|
),
|
|
8923
|
-
project:
|
|
8924
|
-
agent_name:
|
|
9022
|
+
project: z71.string().describe("Project name to scope the triggers to"),
|
|
9023
|
+
agent_name: z71.string().optional().describe(
|
|
8925
9024
|
"Optional. Lowercase alphanumeric name for the Client COO agent. Required (alongside company_name and founder_name) to provision a COO."
|
|
8926
9025
|
),
|
|
8927
|
-
company_name:
|
|
9026
|
+
company_name: z71.string().optional().describe(
|
|
8928
9027
|
"Optional. The client company the COO serves. Required to provision a COO."
|
|
8929
9028
|
),
|
|
8930
|
-
founder_name:
|
|
9029
|
+
founder_name: z71.string().optional().describe(
|
|
8931
9030
|
"Optional. The founder the COO reports to. Required to provision a COO."
|
|
8932
9031
|
)
|
|
8933
9032
|
}
|
|
@@ -9072,7 +9171,7 @@ ${err.message}`
|
|
|
9072
9171
|
}
|
|
9073
9172
|
|
|
9074
9173
|
// src/mcp/tools/load-skill.ts
|
|
9075
|
-
import { z as
|
|
9174
|
+
import { z as z72 } from "zod";
|
|
9076
9175
|
import { readFileSync as readFileSync4, readdirSync as readdirSync3, statSync } from "fs";
|
|
9077
9176
|
import path10 from "path";
|
|
9078
9177
|
import { homedir as homedir3 } from "os";
|
|
@@ -9102,7 +9201,7 @@ function registerLoadSkill(server) {
|
|
|
9102
9201
|
title: "Load Skill",
|
|
9103
9202
|
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.",
|
|
9104
9203
|
inputSchema: {
|
|
9105
|
-
skill_name:
|
|
9204
|
+
skill_name: z72.string().describe(
|
|
9106
9205
|
"Skill to load (e.g. 'seo', 'code-reviewer', 'frontend-design'). Pass 'list' to see all available skills."
|
|
9107
9206
|
)
|
|
9108
9207
|
}
|
|
@@ -9159,7 +9258,7 @@ ${available.map((s) => `- ${s}`).join("\n")}` : "\n\nNo skills found in ~/.claud
|
|
|
9159
9258
|
// src/mcp/tools/export-orchestration.ts
|
|
9160
9259
|
import { mkdirSync as mkdirSync3, writeFileSync as writeFileSync5 } from "fs";
|
|
9161
9260
|
import path11 from "path";
|
|
9162
|
-
import { z as
|
|
9261
|
+
import { z as z73 } from "zod";
|
|
9163
9262
|
function registerExportOrchestration(server) {
|
|
9164
9263
|
server.registerTool(
|
|
9165
9264
|
"export_orchestration",
|
|
@@ -9167,7 +9266,7 @@ function registerExportOrchestration(server) {
|
|
|
9167
9266
|
title: "Export Orchestration",
|
|
9168
9267
|
description: "Export roster, identities, behaviors, and customer procedures to a JSON package.",
|
|
9169
9268
|
inputSchema: {
|
|
9170
|
-
output_path:
|
|
9269
|
+
output_path: z73.string().describe("File path to write the JSON package")
|
|
9171
9270
|
}
|
|
9172
9271
|
},
|
|
9173
9272
|
async ({ output_path }) => {
|
|
@@ -9198,7 +9297,7 @@ function registerExportOrchestration(server) {
|
|
|
9198
9297
|
|
|
9199
9298
|
// src/mcp/tools/import-orchestration.ts
|
|
9200
9299
|
import { readFileSync as readFileSync5 } from "fs";
|
|
9201
|
-
import { z as
|
|
9300
|
+
import { z as z74 } from "zod";
|
|
9202
9301
|
function registerImportOrchestration(server) {
|
|
9203
9302
|
server.registerTool(
|
|
9204
9303
|
"import_orchestration",
|
|
@@ -9206,8 +9305,8 @@ function registerImportOrchestration(server) {
|
|
|
9206
9305
|
title: "Import Orchestration",
|
|
9207
9306
|
description: "Import roster, identities, behaviors, and procedures from an orchestration package. Restricted to coordinator/founder.",
|
|
9208
9307
|
inputSchema: {
|
|
9209
|
-
package_path:
|
|
9210
|
-
merge_strategy:
|
|
9308
|
+
package_path: z74.string().describe("Path to the orchestration package JSON file"),
|
|
9309
|
+
merge_strategy: z74.enum(["replace", "merge"]).default("merge").describe("How to apply the package: both strategies are additive-only \u2014 existing data is never deleted or overwritten")
|
|
9211
9310
|
}
|
|
9212
9311
|
},
|
|
9213
9312
|
async ({ package_path, merge_strategy }) => {
|
|
@@ -9247,7 +9346,7 @@ function registerImportOrchestration(server) {
|
|
|
9247
9346
|
}
|
|
9248
9347
|
|
|
9249
9348
|
// src/mcp/tools/global-procedure.ts
|
|
9250
|
-
import { z as
|
|
9349
|
+
import { z as z75 } from "zod";
|
|
9251
9350
|
function registerCompanyProcedureTool(server, toolName) {
|
|
9252
9351
|
server.registerTool(
|
|
9253
9352
|
toolName,
|
|
@@ -9255,13 +9354,13 @@ function registerCompanyProcedureTool(server, toolName) {
|
|
|
9255
9354
|
title: "Company Procedure",
|
|
9256
9355
|
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.",
|
|
9257
9356
|
inputSchema: {
|
|
9258
|
-
action:
|
|
9259
|
-
title:
|
|
9260
|
-
content:
|
|
9261
|
-
priority:
|
|
9262
|
-
domain:
|
|
9263
|
-
kind:
|
|
9264
|
-
procedure_id:
|
|
9357
|
+
action: z75.enum(["store", "list", "deactivate"]).describe("Action to perform"),
|
|
9358
|
+
title: z75.string().optional().describe("Short title for the procedure or value (store)"),
|
|
9359
|
+
content: z75.string().max(500).optional().describe("The content \u2014 clear, actionable instruction or guiding principle (store)"),
|
|
9360
|
+
priority: z75.enum(["p0", "p1", "p2"]).optional().describe("Priority tier. p0 = always (default). p1 = standard. p2 = nice-to-have."),
|
|
9361
|
+
domain: z75.string().optional().describe("Category: workflow, code-style, communication, architecture, testing, security"),
|
|
9362
|
+
kind: z75.enum(["procedure", "value"]).optional().describe("Type: 'procedure' (operational instruction) or 'value' (company principle). Default: procedure."),
|
|
9363
|
+
procedure_id: z75.string().optional().describe("UUID of the company procedure (deactivate)")
|
|
9265
9364
|
}
|
|
9266
9365
|
},
|
|
9267
9366
|
async ({ action, title, content, priority, domain, kind, procedure_id }) => {
|
|
@@ -9386,8 +9485,8 @@ function registerGlobalProcedure(server) {
|
|
|
9386
9485
|
}
|
|
9387
9486
|
|
|
9388
9487
|
// src/mcp/tools/get-session-events.ts
|
|
9389
|
-
import { z as
|
|
9390
|
-
var EVENT_TYPE =
|
|
9488
|
+
import { z as z76 } from "zod";
|
|
9489
|
+
var EVENT_TYPE = z76.enum([
|
|
9391
9490
|
"user_prompt",
|
|
9392
9491
|
"assistant_response",
|
|
9393
9492
|
"tool_call",
|
|
@@ -9417,11 +9516,11 @@ function registerGetSessionEvents(server) {
|
|
|
9417
9516
|
title: "Get Session Events",
|
|
9418
9517
|
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.",
|
|
9419
9518
|
inputSchema: {
|
|
9420
|
-
agent_id:
|
|
9421
|
-
session_id:
|
|
9519
|
+
agent_id: z76.string().optional().describe("Agent to inspect. Defaults to active agent. COO/CTO may inspect others."),
|
|
9520
|
+
session_id: z76.string().optional().describe("Optional exact runtime session id."),
|
|
9422
9521
|
event_type: EVENT_TYPE.optional().describe("Filter to one event type."),
|
|
9423
|
-
project_name:
|
|
9424
|
-
limit:
|
|
9522
|
+
project_name: z76.string().optional().describe("Optional project filter. Pass 'all' for all projects."),
|
|
9523
|
+
limit: z76.number().int().min(1).max(100).default(20).describe("Number of events to return.")
|
|
9425
9524
|
}
|
|
9426
9525
|
},
|
|
9427
9526
|
async ({ agent_id, session_id, event_type, project_name, limit }) => {
|
|
@@ -9457,8 +9556,8 @@ function registerGetLastAssistantResponse(server) {
|
|
|
9457
9556
|
title: "Get Last Assistant Response",
|
|
9458
9557
|
description: "Return the exact last assistant response for an agent from the session event journal. Use for 'what was the last thing you said?'",
|
|
9459
9558
|
inputSchema: {
|
|
9460
|
-
agent_id:
|
|
9461
|
-
project_name:
|
|
9559
|
+
agent_id: z76.string().optional().describe("Agent to inspect. Defaults to active agent. COO/CTO may inspect others."),
|
|
9560
|
+
project_name: z76.string().optional().describe("Optional project filter. Pass 'all' for all projects.")
|
|
9462
9561
|
}
|
|
9463
9562
|
},
|
|
9464
9563
|
async ({ agent_id, project_name }) => {
|
|
@@ -9510,6 +9609,7 @@ var ACTION_TO_TOOL2 = {
|
|
|
9510
9609
|
list_licenses: "list_licenses",
|
|
9511
9610
|
activate_license: "activate_license",
|
|
9512
9611
|
refresh_license: "refresh_license",
|
|
9612
|
+
set_customer_plan: "set_customer_plan",
|
|
9513
9613
|
create_trigger: "create_trigger",
|
|
9514
9614
|
list_triggers: "list_triggers",
|
|
9515
9615
|
apply_starter_pack: "apply_starter_pack",
|
|
@@ -9568,6 +9668,7 @@ function buildHandlers5() {
|
|
|
9568
9668
|
registerListLicenses(localServer);
|
|
9569
9669
|
registerActivateLicense(localServer);
|
|
9570
9670
|
registerRefreshLicense(localServer);
|
|
9671
|
+
registerSetCustomerPlan(localServer);
|
|
9571
9672
|
registerCreateTrigger(localServer);
|
|
9572
9673
|
registerListTriggers(localServer);
|
|
9573
9674
|
registerApplyStarterPack(localServer);
|
|
@@ -9584,8 +9685,8 @@ function buildHandlers5() {
|
|
|
9584
9685
|
}
|
|
9585
9686
|
async function handleDreaming(action, args) {
|
|
9586
9687
|
try {
|
|
9587
|
-
const { DreamingEngine: DreamingEngine2 } = await import("./dreaming-
|
|
9588
|
-
const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-
|
|
9688
|
+
const { DreamingEngine: DreamingEngine2 } = await import("./dreaming-LMVDIC5C.js");
|
|
9689
|
+
const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-IUVRZOSF.js");
|
|
9589
9690
|
const { getClient: getClient2 } = await import("./lib/database.js");
|
|
9590
9691
|
const agentId = args.agent_id ?? getActiveAgent2().agentId;
|
|
9591
9692
|
if (action === "dreaming_run") {
|
|
@@ -9669,51 +9770,51 @@ function registerConfig(server) {
|
|
|
9669
9770
|
title: "Config",
|
|
9670
9771
|
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.",
|
|
9671
9772
|
inputSchema: {
|
|
9672
|
-
action:
|
|
9673
|
-
agent_id:
|
|
9674
|
-
role:
|
|
9675
|
-
runtime:
|
|
9676
|
-
model:
|
|
9677
|
-
reasoning_effort:
|
|
9678
|
-
dry_run:
|
|
9679
|
-
fix:
|
|
9680
|
-
verbose:
|
|
9681
|
-
project_name:
|
|
9682
|
-
since:
|
|
9683
|
-
limit:
|
|
9684
|
-
output_path:
|
|
9685
|
-
input_path:
|
|
9686
|
-
strategy:
|
|
9687
|
-
license_key:
|
|
9688
|
-
email:
|
|
9689
|
-
plan:
|
|
9690
|
-
name:
|
|
9691
|
-
event:
|
|
9692
|
-
conditions:
|
|
9693
|
-
actions:
|
|
9694
|
-
enabled:
|
|
9695
|
-
schedule:
|
|
9696
|
-
query:
|
|
9697
|
-
skill_name:
|
|
9698
|
-
pack_name:
|
|
9699
|
-
title:
|
|
9700
|
-
content:
|
|
9701
|
-
priority:
|
|
9702
|
-
domain:
|
|
9703
|
-
procedure_id:
|
|
9704
|
-
subaction:
|
|
9705
|
-
max_clusters:
|
|
9706
|
-
force:
|
|
9707
|
-
cloud_action:
|
|
9708
|
-
confirm_local_db_source_of_truth:
|
|
9709
|
-
domain_name:
|
|
9710
|
-
phase:
|
|
9773
|
+
action: z77.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."),
|
|
9774
|
+
agent_id: z77.string().optional().describe("Agent id for set_agent_config/agent_spend/session queries/hire"),
|
|
9775
|
+
role: z77.string().optional().describe("Role template for action=hire: coo, cto, cmo, gm, principal-engineer, content-specialist, ai-specialist, staff-code-reviewer"),
|
|
9776
|
+
runtime: z77.string().optional().describe("Runtime for set_agent_config"),
|
|
9777
|
+
model: z77.string().optional().describe("Model for set_agent_config"),
|
|
9778
|
+
reasoning_effort: z77.string().optional().describe("Reasoning effort for Codex agents"),
|
|
9779
|
+
dry_run: z77.boolean().optional().describe("Preview without applying where supported"),
|
|
9780
|
+
fix: z77.boolean().optional().describe("Apply fixes for memory_audit where supported"),
|
|
9781
|
+
verbose: z77.boolean().optional().describe("Verbose output where supported"),
|
|
9782
|
+
project_name: z77.string().optional().describe("Project filter/name"),
|
|
9783
|
+
since: z77.string().optional().describe("ISO lower-bound timestamp"),
|
|
9784
|
+
limit: z77.coerce.number().optional().describe("Result limit"),
|
|
9785
|
+
output_path: z77.string().optional().describe("Output path for export/backup"),
|
|
9786
|
+
input_path: z77.string().optional().describe("Input path for import_orchestration"),
|
|
9787
|
+
strategy: z77.enum(["merge", "replace"]).optional().describe("Import strategy; replace must still be additive-only per platform rules"),
|
|
9788
|
+
license_key: z77.string().optional().describe("License key for activation/status"),
|
|
9789
|
+
email: z77.string().optional().describe("Customer email for license creation"),
|
|
9790
|
+
plan: z77.string().optional().describe("License plan"),
|
|
9791
|
+
name: z77.string().optional().describe("Trigger/starter pack/procedure/client name"),
|
|
9792
|
+
event: z77.string().optional().describe("Trigger event"),
|
|
9793
|
+
conditions: z77.array(z77.record(z77.string(), z77.unknown())).optional().describe("Trigger conditions"),
|
|
9794
|
+
actions: z77.array(z77.record(z77.string(), z77.unknown())).optional().describe("Trigger actions"),
|
|
9795
|
+
enabled: z77.boolean().optional().describe("Trigger enabled flag"),
|
|
9796
|
+
schedule: z77.string().optional().describe("Trigger schedule"),
|
|
9797
|
+
query: z77.string().optional().describe("Trigger query or filter"),
|
|
9798
|
+
skill_name: z77.string().optional().describe("Skill name for load_skill"),
|
|
9799
|
+
pack_name: z77.string().optional().describe("Starter pack name"),
|
|
9800
|
+
title: z77.string().optional().describe("Procedure title"),
|
|
9801
|
+
content: z77.string().optional().describe("Procedure content"),
|
|
9802
|
+
priority: z77.enum(["p0", "p1", "p2"]).optional().describe("Procedure priority"),
|
|
9803
|
+
domain: z77.string().optional().describe("Procedure domain"),
|
|
9804
|
+
procedure_id: z77.string().optional().describe("Procedure id for deactivate"),
|
|
9805
|
+
subaction: z77.enum(["store", "list", "deactivate"]).optional().describe("Nested action for company_procedure/global_procedure"),
|
|
9806
|
+
max_clusters: z77.coerce.number().optional().describe("Consolidation max clusters"),
|
|
9807
|
+
force: z77.boolean().optional().describe("Force operation where supported"),
|
|
9808
|
+
cloud_action: z77.enum(["status", "sync", "reupload"]).optional().describe("Nested operation for action=cloud_sync"),
|
|
9809
|
+
confirm_local_db_source_of_truth: z77.string().optional().describe("Required for cloud_action=reupload; must exactly equal LOCAL DB IS SOURCE OF TRUTH"),
|
|
9810
|
+
domain_name: z77.string().optional().describe("Client deployment domain"),
|
|
9811
|
+
phase: z77.enum(["phase_1_coo", "phase_2_executives", "phase_3_parallel_org", "1", "2", "3"]).optional().describe("Orchestration phase for orchestration_phase action"),
|
|
9711
9812
|
// Identity params (absorbed from identity tool)
|
|
9712
|
-
identity_content:
|
|
9813
|
+
identity_content: z77.string().optional().describe("Full exe.md content for action=identity_update"),
|
|
9713
9814
|
// Session params (absorbed from session tool)
|
|
9714
|
-
session_id:
|
|
9815
|
+
session_id: z77.string().optional().describe("Session ID for action=session_events"),
|
|
9715
9816
|
// Dreaming params (absorbed from dreaming tool)
|
|
9716
|
-
hours:
|
|
9817
|
+
hours: z77.coerce.number().min(1).max(720).optional().describe("Lookback window in hours for action=dreaming_run/restart_telemetry. Default 24.")
|
|
9717
9818
|
}
|
|
9718
9819
|
}, async (input, extra) => {
|
|
9719
9820
|
const action = input.action;
|
|
@@ -9727,6 +9828,8 @@ function registerConfig(server) {
|
|
|
9727
9828
|
if (action === "export_orchestration" && !args.output_path) return errorResult8('config action "export_orchestration" requires output_path');
|
|
9728
9829
|
if (action === "import_orchestration" && !args.input_path) return errorResult8('config action "import_orchestration" requires input_path');
|
|
9729
9830
|
if (action === "activate_license" && !args.license_key) return errorResult8('config action "activate_license" requires license_key');
|
|
9831
|
+
if (action === "set_customer_plan" && (!args.email && !args.license_key)) return errorResult8('config action "set_customer_plan" requires email or license_key');
|
|
9832
|
+
if (action === "set_customer_plan" && !args.plan) return errorResult8('config action "set_customer_plan" requires plan (free/pro/team/agency/enterprise)');
|
|
9730
9833
|
if (action === "create_trigger" && (!args.name || !args.event || !Array.isArray(args.actions))) return errorResult8('config action "create_trigger" requires name, event, and actions');
|
|
9731
9834
|
if ((action === "company_procedure" || action === "global_procedure") && args.action === "store" && (!args.title || !args.content)) return errorResult8(`config action "${action}" subaction=store requires title and content`);
|
|
9732
9835
|
if (action === "identity_update" && (!args.agent_id || !args.identity_content)) {
|
|
@@ -9741,8 +9844,8 @@ function registerConfig(server) {
|
|
|
9741
9844
|
}
|
|
9742
9845
|
if (action === "closeout") {
|
|
9743
9846
|
try {
|
|
9744
|
-
const { DreamingEngine: DreamingEngine2 } = await import("./dreaming-
|
|
9745
|
-
const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-
|
|
9847
|
+
const { DreamingEngine: DreamingEngine2 } = await import("./dreaming-LMVDIC5C.js");
|
|
9848
|
+
const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-IUVRZOSF.js");
|
|
9746
9849
|
const { writeMemory: writeMemory2, flushBatch: flushBatch2 } = await import("./lib/store.js");
|
|
9747
9850
|
const { randomUUID: randomUUID2 } = await import("crypto");
|
|
9748
9851
|
const { getProjectName: getProjectName2 } = await import("./project-name-EWG5KAZP.js");
|
|
@@ -9813,7 +9916,7 @@ function registerConfig(server) {
|
|
|
9813
9916
|
}
|
|
9814
9917
|
if (action === "capability_cards") {
|
|
9815
9918
|
try {
|
|
9816
|
-
const { getAllCapabilityCards, findAgentForTask } = await import("./capability-cards-
|
|
9919
|
+
const { getAllCapabilityCards, findAgentForTask } = await import("./capability-cards-STD3NMCR.js");
|
|
9817
9920
|
const cards = getAllCapabilityCards();
|
|
9818
9921
|
const taskQuery = args.query;
|
|
9819
9922
|
if (taskQuery) {
|
|
@@ -9864,7 +9967,7 @@ function registerConfig(server) {
|
|
|
9864
9967
|
const existing = loadEmployeesSync2();
|
|
9865
9968
|
if (existing.some((e) => e.name === employeeName)) return errorResult8(`Employee "${employeeName}" already exists.`);
|
|
9866
9969
|
try {
|
|
9867
|
-
const { assertEmployeeLimit: assertEmployeeLimit2 } = await import("./plan-limits-
|
|
9970
|
+
const { assertEmployeeLimit: assertEmployeeLimit2 } = await import("./plan-limits-EUZI4X5W.js");
|
|
9868
9971
|
await assertEmployeeLimit2();
|
|
9869
9972
|
} catch (e) {
|
|
9870
9973
|
return errorResult8(e instanceof Error ? e.message : "Employee limit reached.");
|
|
@@ -9905,7 +10008,7 @@ You are ${employeeName}. Role: ${role}.`, "utf-8");
|
|
|
9905
10008
|
}
|
|
9906
10009
|
try {
|
|
9907
10010
|
const { generateSessionWrappers } = await import("./lib/session-wrappers.js");
|
|
9908
|
-
const { resolvePackageRoot } = await import("./installer-
|
|
10011
|
+
const { resolvePackageRoot } = await import("./installer-3EYHBKWB.js");
|
|
9909
10012
|
generateSessionWrappers(resolvePackageRoot());
|
|
9910
10013
|
} catch {
|
|
9911
10014
|
}
|
|
@@ -9975,10 +10078,10 @@ You are ${employeeName}. Role: ${role}.`, "utf-8");
|
|
|
9975
10078
|
}
|
|
9976
10079
|
|
|
9977
10080
|
// src/mcp/tools/wiki.ts
|
|
9978
|
-
import { z as
|
|
10081
|
+
import { z as z80 } from "zod";
|
|
9979
10082
|
|
|
9980
10083
|
// src/mcp/tools/list-wiki-pages.ts
|
|
9981
|
-
import { z as
|
|
10084
|
+
import { z as z78 } from "zod";
|
|
9982
10085
|
var FETCH_TIMEOUT_MS2 = 1e4;
|
|
9983
10086
|
function registerListWikiPages(server) {
|
|
9984
10087
|
server.registerTool(
|
|
@@ -9987,12 +10090,12 @@ function registerListWikiPages(server) {
|
|
|
9987
10090
|
title: "List Wiki Pages",
|
|
9988
10091
|
description: "List documents in an exe-wiki workspace. Optionally filter by folder.",
|
|
9989
10092
|
inputSchema: {
|
|
9990
|
-
workspace:
|
|
9991
|
-
folder:
|
|
10093
|
+
workspace: z78.string().describe('Wiki workspace slug (e.g., "hygo")'),
|
|
10094
|
+
folder: z78.string().optional().describe("Filter by folder path")
|
|
9992
10095
|
}
|
|
9993
10096
|
},
|
|
9994
10097
|
async ({ workspace, folder }) => {
|
|
9995
|
-
const { assertFeature: assertFeature2 } = await import("./plan-limits-
|
|
10098
|
+
const { assertFeature: assertFeature2 } = await import("./plan-limits-EUZI4X5W.js");
|
|
9996
10099
|
await assertFeature2("wiki");
|
|
9997
10100
|
const apiUrl = process.env.EXE_WIKI_API_URL;
|
|
9998
10101
|
const apiKey = process.env.EXE_WIKI_API_KEY;
|
|
@@ -10077,7 +10180,7 @@ function registerListWikiPages(server) {
|
|
|
10077
10180
|
}
|
|
10078
10181
|
|
|
10079
10182
|
// src/mcp/tools/get-wiki-page.ts
|
|
10080
|
-
import { z as
|
|
10183
|
+
import { z as z79 } from "zod";
|
|
10081
10184
|
var FETCH_TIMEOUT_MS3 = 1e4;
|
|
10082
10185
|
function registerGetWikiPage(server) {
|
|
10083
10186
|
server.registerTool(
|
|
@@ -10086,13 +10189,13 @@ function registerGetWikiPage(server) {
|
|
|
10086
10189
|
title: "Get Wiki Page",
|
|
10087
10190
|
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.",
|
|
10088
10191
|
inputSchema: {
|
|
10089
|
-
workspace:
|
|
10090
|
-
document_id:
|
|
10091
|
-
title:
|
|
10192
|
+
workspace: z79.string().describe('Wiki workspace slug (e.g., "hygo")'),
|
|
10193
|
+
document_id: z79.string().optional().describe("Specific document ID (exact lookup)"),
|
|
10194
|
+
title: z79.string().optional().describe("Search by title (fuzzy match)")
|
|
10092
10195
|
}
|
|
10093
10196
|
},
|
|
10094
10197
|
async ({ workspace, document_id, title }) => {
|
|
10095
|
-
const { assertFeature: assertFeature2 } = await import("./plan-limits-
|
|
10198
|
+
const { assertFeature: assertFeature2 } = await import("./plan-limits-EUZI4X5W.js");
|
|
10096
10199
|
await assertFeature2("wiki");
|
|
10097
10200
|
const apiUrl = process.env.EXE_WIKI_API_URL;
|
|
10098
10201
|
const apiKey = process.env.EXE_WIKI_API_KEY;
|
|
@@ -10286,10 +10389,10 @@ async function handleWikiSearch(input) {
|
|
|
10286
10389
|
const userId = input.user_id;
|
|
10287
10390
|
if (!workspace) return errorResult9('wiki action "search" requires workspace');
|
|
10288
10391
|
if (!query) return errorResult9('wiki action "search" requires query');
|
|
10289
|
-
const { assertFeature: assertFeature2 } = await import("./plan-limits-
|
|
10392
|
+
const { assertFeature: assertFeature2 } = await import("./plan-limits-EUZI4X5W.js");
|
|
10290
10393
|
await assertFeature2("wiki");
|
|
10291
10394
|
if (userId) {
|
|
10292
|
-
const { checkWikiAccess } = await import("./wiki-acl-
|
|
10395
|
+
const { checkWikiAccess } = await import("./wiki-acl-QIBDNXSM.js");
|
|
10293
10396
|
const { allowed } = await checkWikiAccess(String(userId), String(workspace), "read");
|
|
10294
10397
|
if (!allowed) {
|
|
10295
10398
|
return errorResult9(`Access denied: user "${userId}" does not have read access to workspace "${workspace}"`);
|
|
@@ -10344,34 +10447,34 @@ function registerWiki(server) {
|
|
|
10344
10447
|
title: "Wiki",
|
|
10345
10448
|
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.",
|
|
10346
10449
|
inputSchema: {
|
|
10347
|
-
action:
|
|
10348
|
-
query:
|
|
10349
|
-
workspace:
|
|
10350
|
-
title:
|
|
10351
|
-
content:
|
|
10352
|
-
folder:
|
|
10353
|
-
document_id:
|
|
10354
|
-
mode:
|
|
10355
|
-
section:
|
|
10356
|
-
user_id:
|
|
10450
|
+
action: z80.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."),
|
|
10451
|
+
query: z80.string().optional().describe("Search query for action=search (FTS across page titles and content)"),
|
|
10452
|
+
workspace: z80.string().optional().describe("Wiki workspace slug"),
|
|
10453
|
+
title: z80.string().optional().describe("Fuzzy page title lookup for get"),
|
|
10454
|
+
content: z80.string().optional().describe("Reserved; wiki writes use raw-data ingestion/projection"),
|
|
10455
|
+
folder: z80.string().optional().describe("Optional folder path for list"),
|
|
10456
|
+
document_id: z80.string().optional().describe("Document ID for get/purge/set_importance"),
|
|
10457
|
+
mode: z80.enum(["replace", "append"]).optional().describe("Reserved; direct wiki updates are removed"),
|
|
10458
|
+
section: z80.string().optional().describe("Reserved; direct wiki updates are removed"),
|
|
10459
|
+
user_id: z80.string().optional().describe("User ID for ACL enforcement. When set, workspace access is checked against wiki_acl table."),
|
|
10357
10460
|
// Document management params (absorbed from document tool)
|
|
10358
|
-
workspace_id:
|
|
10359
|
-
filename:
|
|
10360
|
-
mime:
|
|
10361
|
-
source_type:
|
|
10362
|
-
chunks:
|
|
10363
|
-
text:
|
|
10364
|
-
char_offset:
|
|
10365
|
-
page_number:
|
|
10366
|
-
metadata:
|
|
10461
|
+
workspace_id: z80.string().optional().describe("Workspace UUID or slug for document operations"),
|
|
10462
|
+
filename: z80.string().optional().describe("Document filename for action=document_ingest"),
|
|
10463
|
+
mime: z80.string().optional().describe("MIME type for action=document_ingest"),
|
|
10464
|
+
source_type: z80.enum(["upload", "url", "manual", "paste"]).optional().describe("Source type for action=document_ingest"),
|
|
10465
|
+
chunks: z80.array(z80.object({
|
|
10466
|
+
text: z80.string(),
|
|
10467
|
+
char_offset: z80.number().optional(),
|
|
10468
|
+
page_number: z80.number().optional(),
|
|
10469
|
+
metadata: z80.record(z80.string(), z80.unknown()).optional()
|
|
10367
10470
|
})).optional().describe("Document chunks for action=document_ingest"),
|
|
10368
|
-
document_metadata:
|
|
10369
|
-
importance:
|
|
10370
|
-
doc_query:
|
|
10371
|
-
candidates:
|
|
10372
|
-
top_k:
|
|
10373
|
-
limit:
|
|
10374
|
-
offset:
|
|
10471
|
+
document_metadata: z80.record(z80.string(), z80.unknown()).optional().describe("Document metadata for action=document_ingest"),
|
|
10472
|
+
importance: z80.number().int().min(1).max(10).optional().describe("Importance for action=document_set_importance"),
|
|
10473
|
+
doc_query: z80.string().optional().describe("Query for action=document_rerank"),
|
|
10474
|
+
candidates: z80.array(z80.string()).optional().describe("Candidate texts for action=document_rerank"),
|
|
10475
|
+
top_k: z80.coerce.number().int().positive().optional().describe("Top K for action=document_rerank"),
|
|
10476
|
+
limit: z80.number().int().positive().optional().describe("Limit for action=document_list"),
|
|
10477
|
+
offset: z80.number().int().nonnegative().optional().describe("Offset for action=document_list")
|
|
10375
10478
|
}
|
|
10376
10479
|
},
|
|
10377
10480
|
async (input, extra) => {
|
|
@@ -10392,7 +10495,7 @@ function registerWiki(server) {
|
|
|
10392
10495
|
return errorResult9('wiki action "document_rerank" requires at least one candidate');
|
|
10393
10496
|
}
|
|
10394
10497
|
if (user_id && legacyArgs.workspace) {
|
|
10395
|
-
const { checkWikiAccess } = await import("./wiki-acl-
|
|
10498
|
+
const { checkWikiAccess } = await import("./wiki-acl-QIBDNXSM.js");
|
|
10396
10499
|
const { allowed } = await checkWikiAccess(
|
|
10397
10500
|
String(user_id),
|
|
10398
10501
|
String(legacyArgs.workspace),
|
|
@@ -10417,7 +10520,7 @@ function registerWiki(server) {
|
|
|
10417
10520
|
}
|
|
10418
10521
|
|
|
10419
10522
|
// src/mcp/tools/behavior.ts
|
|
10420
|
-
import { z as
|
|
10523
|
+
import { z as z81 } from "zod";
|
|
10421
10524
|
function rowToBehavior2(r) {
|
|
10422
10525
|
return {
|
|
10423
10526
|
id: String(r.id),
|
|
@@ -10446,23 +10549,23 @@ function registerBehavior(server) {
|
|
|
10446
10549
|
title: "Behavior",
|
|
10447
10550
|
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).",
|
|
10448
10551
|
inputSchema: {
|
|
10449
|
-
action:
|
|
10450
|
-
content:
|
|
10451
|
-
domain:
|
|
10452
|
-
priority:
|
|
10453
|
-
trigger:
|
|
10454
|
-
trigger_action:
|
|
10455
|
-
agent_id:
|
|
10456
|
-
project_name:
|
|
10457
|
-
behavior_id:
|
|
10458
|
-
shared_skills:
|
|
10459
|
-
device_scoped:
|
|
10460
|
-
limit:
|
|
10461
|
-
offset:
|
|
10462
|
-
older_than_days:
|
|
10463
|
-
dry_run:
|
|
10464
|
-
purge_ghosts:
|
|
10465
|
-
bulk:
|
|
10552
|
+
action: z81.enum(["store", "list", "deactivate", "reactivate", "audit", "purge"]).describe("Action to perform"),
|
|
10553
|
+
content: z81.string().max(500).optional().describe("The behavioral instruction \u2014 one clear sentence (store). Not needed when trigger+action are provided for reflex domain."),
|
|
10554
|
+
domain: z81.string().optional().describe("Category: workflow, code-style, tool-use, communication, architecture, testing, reflex. Use 'reflex' for trigger\u2192action behaviors."),
|
|
10555
|
+
priority: z81.enum(["p0", "p1", "p2"]).optional().describe("Priority tier. p0 = always included. p1 = standard (default). p2 = nice-to-have. Forced to p0 for reflex domain."),
|
|
10556
|
+
trigger: z81.string().max(200).optional().describe("Condition that activates this reflex (e.g. 'when customer says cancel', 'when deadline mentioned'). Required when domain='reflex'."),
|
|
10557
|
+
trigger_action: z81.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'."),
|
|
10558
|
+
agent_id: z81.string().optional().describe("Employee name. Defaults to current agent. Pass 'all' to list everyone's (list only)."),
|
|
10559
|
+
project_name: z81.string().optional().describe("Defaults to current project. Pass 'global' for a behavior that applies everywhere (store)."),
|
|
10560
|
+
behavior_id: z81.string().optional().describe("UUID of the behavior (deactivate)"),
|
|
10561
|
+
shared_skills: z81.boolean().optional().describe("When true with action=list, include skills (domain='skill') from ALL agents. Default: false."),
|
|
10562
|
+
device_scoped: z81.boolean().optional().describe("When true, behavior only loads on this device. Default false (global \u2014 loads everywhere). (store)"),
|
|
10563
|
+
limit: z81.coerce.number().int().min(1).max(500).optional().describe("Max rows for list/purge preview. Default 100 for list, 500 for purge."),
|
|
10564
|
+
offset: z81.coerce.number().int().min(0).optional().describe("Pagination offset for list. Default 0."),
|
|
10565
|
+
older_than_days: z81.coerce.number().int().min(0).optional().describe("For purge: only hard-delete inactive behaviors older than this many days. Default 30."),
|
|
10566
|
+
dry_run: z81.boolean().optional().default(true).describe("For purge: preview by default; set false to permanently delete matching inactive behaviors."),
|
|
10567
|
+
purge_ghosts: z81.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)"),
|
|
10568
|
+
bulk: z81.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)")
|
|
10466
10569
|
}
|
|
10467
10570
|
},
|
|
10468
10571
|
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 }) => {
|
|
@@ -10713,7 +10816,7 @@ Use /exe-forget to remove any that this supersedes.`;
|
|
|
10713
10816
|
}]
|
|
10714
10817
|
};
|
|
10715
10818
|
}
|
|
10716
|
-
const { bulkPurgeGhostBehaviors } = await import("./behaviors-
|
|
10819
|
+
const { bulkPurgeGhostBehaviors } = await import("./behaviors-MQCADHAD.js");
|
|
10717
10820
|
const res = await bulkPurgeGhostBehaviors({ batchSize: 5e3, vacuum: true });
|
|
10718
10821
|
return {
|
|
10719
10822
|
content: [{
|
|
@@ -10824,7 +10927,7 @@ Use /exe-forget to remove any that this supersedes.`;
|
|
|
10824
10927
|
return { content: [{ type: "text", text: `Behavior not found: ${behavior_id}` }], isError: true };
|
|
10825
10928
|
}
|
|
10826
10929
|
const row2 = result4.rows[0];
|
|
10827
|
-
const { reactivateBehavior: reactivateBehavior2 } = await import("./behaviors-
|
|
10930
|
+
const { reactivateBehavior: reactivateBehavior2 } = await import("./behaviors-MQCADHAD.js");
|
|
10828
10931
|
const wasReactivated = await reactivateBehavior2(behavior_id);
|
|
10829
10932
|
if (!wasReactivated) {
|
|
10830
10933
|
return { content: [{ type: "text", text: `Behavior ${behavior_id} is already active.` }] };
|
|
@@ -10894,7 +10997,7 @@ Content: ${row.content}`
|
|
|
10894
10997
|
}
|
|
10895
10998
|
|
|
10896
10999
|
// src/mcp/tools/reminder.ts
|
|
10897
|
-
import { z as
|
|
11000
|
+
import { z as z82 } from "zod";
|
|
10898
11001
|
function registerReminder(server) {
|
|
10899
11002
|
server.registerTool(
|
|
10900
11003
|
"reminder",
|
|
@@ -10902,11 +11005,11 @@ function registerReminder(server) {
|
|
|
10902
11005
|
title: "Reminder",
|
|
10903
11006
|
description: "Manage reminders for the founder. Shown in the boot brief every session. Actions: create (set new), list (view active), complete (mark done).",
|
|
10904
11007
|
inputSchema: {
|
|
10905
|
-
action:
|
|
10906
|
-
text:
|
|
10907
|
-
due_date:
|
|
10908
|
-
reminder_id:
|
|
10909
|
-
include_completed:
|
|
11008
|
+
action: z82.enum(["create", "list", "complete"]).describe("Action to perform"),
|
|
11009
|
+
text: z82.string().optional().describe("What to remind about (create)"),
|
|
11010
|
+
due_date: z82.string().optional().describe("Optional due date \u2014 ISO date (2026-04-01) or null for persistent (create)"),
|
|
11011
|
+
reminder_id: z82.string().optional().describe("Reminder UUID or text substring to match (complete)"),
|
|
11012
|
+
include_completed: z82.boolean().optional().default(false).describe("Include completed reminders (list)")
|
|
10910
11013
|
}
|
|
10911
11014
|
},
|
|
10912
11015
|
async ({ action, text: text5, due_date, reminder_id, include_completed }) => {
|
|
@@ -10959,7 +11062,7 @@ function registerReminder(server) {
|
|
|
10959
11062
|
}
|
|
10960
11063
|
|
|
10961
11064
|
// src/mcp/tools/store-global-procedure.ts
|
|
10962
|
-
import { z as
|
|
11065
|
+
import { z as z83 } from "zod";
|
|
10963
11066
|
function registerStoreGlobalProcedure(server) {
|
|
10964
11067
|
server.registerTool(
|
|
10965
11068
|
"store_global_procedure",
|
|
@@ -10967,10 +11070,10 @@ function registerStoreGlobalProcedure(server) {
|
|
|
10967
11070
|
title: "Store Company Procedure (use global_procedure instead)",
|
|
10968
11071
|
description: "DEPRECATED \u2014 use global_procedure with action='store'. Create a company procedure (customer-owned Layer 0 rule). RESTRICTED: only coordinator or founder sessions.",
|
|
10969
11072
|
inputSchema: {
|
|
10970
|
-
title:
|
|
10971
|
-
content:
|
|
10972
|
-
priority:
|
|
10973
|
-
domain:
|
|
11073
|
+
title: z83.string().describe("Short title for the procedure"),
|
|
11074
|
+
content: z83.string().max(500).describe("The procedure content \u2014 clear, actionable instruction"),
|
|
11075
|
+
priority: z83.enum(["p0", "p1", "p2"]).optional().describe("Priority tier. p0 = always (default)."),
|
|
11076
|
+
domain: z83.string().optional().describe("Category: workflow, code-style, communication, architecture, testing, security")
|
|
10974
11077
|
}
|
|
10975
11078
|
},
|
|
10976
11079
|
async ({ title, content, priority, domain }) => {
|
|
@@ -11042,7 +11145,7 @@ ${lines.join("\n\n")}`
|
|
|
11042
11145
|
}
|
|
11043
11146
|
|
|
11044
11147
|
// src/mcp/tools/deactivate-global-procedure.ts
|
|
11045
|
-
import { z as
|
|
11148
|
+
import { z as z84 } from "zod";
|
|
11046
11149
|
function registerDeactivateGlobalProcedure(server) {
|
|
11047
11150
|
server.registerTool(
|
|
11048
11151
|
"deactivate_global_procedure",
|
|
@@ -11050,7 +11153,7 @@ function registerDeactivateGlobalProcedure(server) {
|
|
|
11050
11153
|
title: "Deactivate Company Procedure (use global_procedure instead)",
|
|
11051
11154
|
description: "DEPRECATED \u2014 use global_procedure with action='deactivate'. Soft-delete a company procedure. RESTRICTED: only coordinator or founder sessions.",
|
|
11052
11155
|
inputSchema: {
|
|
11053
|
-
procedure_id:
|
|
11156
|
+
procedure_id: z84.string().describe("UUID of the company procedure to deactivate")
|
|
11054
11157
|
}
|
|
11055
11158
|
},
|
|
11056
11159
|
async ({ procedure_id }) => {
|
|
@@ -11105,7 +11208,7 @@ Content: ${row.content}`
|
|
|
11105
11208
|
}
|
|
11106
11209
|
|
|
11107
11210
|
// src/mcp/tools/people-roster.ts
|
|
11108
|
-
import { z as
|
|
11211
|
+
import { z as z85 } from "zod";
|
|
11109
11212
|
|
|
11110
11213
|
// src/lib/people.ts
|
|
11111
11214
|
import { readFile, writeFile, mkdir } from "fs/promises";
|
|
@@ -11152,10 +11255,10 @@ function registerAddPerson(server) {
|
|
|
11152
11255
|
title: "Add Person",
|
|
11153
11256
|
description: "Add or update a key human in the people roster. Used for co-founders, partners, customers \u2014 anyone agents need to know about.",
|
|
11154
11257
|
inputSchema: {
|
|
11155
|
-
name:
|
|
11156
|
-
role:
|
|
11157
|
-
relationship:
|
|
11158
|
-
notes:
|
|
11258
|
+
name: z85.string().describe("Person's name"),
|
|
11259
|
+
role: z85.string().describe("Their role (e.g. co-founder, customer, partner)"),
|
|
11260
|
+
relationship: z85.string().describe("Relationship to the organization (e.g. co-founder, early adopter, investor)"),
|
|
11261
|
+
notes: z85.string().optional().describe("Additional context about this person")
|
|
11159
11262
|
}
|
|
11160
11263
|
},
|
|
11161
11264
|
async ({ name, role, relationship, notes }) => {
|
|
@@ -11201,7 +11304,7 @@ function registerGetPerson(server) {
|
|
|
11201
11304
|
title: "Get Person",
|
|
11202
11305
|
description: "Look up a specific person by name from the people roster.",
|
|
11203
11306
|
inputSchema: {
|
|
11204
|
-
name:
|
|
11307
|
+
name: z85.string().describe("Person's name to look up")
|
|
11205
11308
|
}
|
|
11206
11309
|
},
|
|
11207
11310
|
async ({ name }) => {
|
|
@@ -11225,9 +11328,9 @@ Notes: ${person.notes}` : ""}`
|
|
|
11225
11328
|
}
|
|
11226
11329
|
|
|
11227
11330
|
// src/mcp/tools/company-actions.ts
|
|
11228
|
-
import { z as
|
|
11331
|
+
import { z as z86 } from "zod";
|
|
11229
11332
|
var FETCH_TIMEOUT_MS5 = 15e3;
|
|
11230
|
-
var ACTION =
|
|
11333
|
+
var ACTION = z86.enum(["list_connectors", "describe_connector", "preview", "execute", "list_runs", "get_run"]);
|
|
11231
11334
|
function format(payload) {
|
|
11232
11335
|
return ["# Company Actions", "", JSON.stringify(payload, null, 2)].join("\n");
|
|
11233
11336
|
}
|
|
@@ -11239,13 +11342,13 @@ function registerCompanyActions(server) {
|
|
|
11239
11342
|
description: "Preview and execute external connector actions (Asana, WhatsApp) through exe-gateway with audit/safety gates.",
|
|
11240
11343
|
inputSchema: {
|
|
11241
11344
|
action: ACTION.describe("list_connectors, describe_connector, preview, execute, list_runs, get_run"),
|
|
11242
|
-
connector:
|
|
11243
|
-
connector_ref:
|
|
11244
|
-
operation:
|
|
11245
|
-
payload:
|
|
11246
|
-
idempotency_key:
|
|
11247
|
-
confirm_token:
|
|
11248
|
-
run_id:
|
|
11345
|
+
connector: z86.string().optional().describe("Connector to use, e.g. asana, whatsapp, airtable, notion"),
|
|
11346
|
+
connector_ref: z86.string().optional().describe("Exact connector ref from list_connectors when connector names overlap"),
|
|
11347
|
+
operation: z86.string().optional().describe("Connector operation, e.g. create_task or send_message"),
|
|
11348
|
+
payload: z86.record(z86.string(), z86.unknown()).optional().describe("Operation payload"),
|
|
11349
|
+
idempotency_key: z86.string().optional().describe("Stable key to prevent duplicate execution"),
|
|
11350
|
+
confirm_token: z86.string().optional().describe("Optional future approval token"),
|
|
11351
|
+
run_id: z86.string().optional().describe("Run id for get_run")
|
|
11249
11352
|
}
|
|
11250
11353
|
},
|
|
11251
11354
|
async (input) => {
|
|
@@ -11290,8 +11393,8 @@ function registerCompanyActions(server) {
|
|
|
11290
11393
|
}
|
|
11291
11394
|
|
|
11292
11395
|
// src/mcp/tools/workflow.ts
|
|
11293
|
-
import { z as
|
|
11294
|
-
var ACTION2 =
|
|
11396
|
+
import { z as z87 } from "zod";
|
|
11397
|
+
var ACTION2 = z87.enum([
|
|
11295
11398
|
"create_workflow",
|
|
11296
11399
|
"start_workflow",
|
|
11297
11400
|
"get_workflow_status",
|
|
@@ -11299,23 +11402,23 @@ var ACTION2 = z86.enum([
|
|
|
11299
11402
|
"list_workflows",
|
|
11300
11403
|
"list_instances"
|
|
11301
11404
|
]);
|
|
11302
|
-
var StepSchema =
|
|
11303
|
-
name:
|
|
11304
|
-
type:
|
|
11305
|
-
action:
|
|
11306
|
-
type:
|
|
11307
|
-
params:
|
|
11308
|
-
requires_approval:
|
|
11405
|
+
var StepSchema = z87.object({
|
|
11406
|
+
name: z87.string().describe("Human-readable step name"),
|
|
11407
|
+
type: z87.enum(["execute_action", "wait_for_approval", "conditional"]).describe("Step type"),
|
|
11408
|
+
action: z87.object({
|
|
11409
|
+
type: z87.enum(["send_whatsapp", "send_message", "create_task", "update_wiki", "mcp_tool"]),
|
|
11410
|
+
params: z87.record(z87.string(), z87.string()),
|
|
11411
|
+
requires_approval: z87.boolean().optional()
|
|
11309
11412
|
}).optional().describe("Action to execute (for execute_action steps)"),
|
|
11310
|
-
connector:
|
|
11311
|
-
operation:
|
|
11312
|
-
payload:
|
|
11313
|
-
condition:
|
|
11314
|
-
expression:
|
|
11315
|
-
then_step:
|
|
11316
|
-
else_step:
|
|
11413
|
+
connector: z87.string().optional().describe("Connector name (e.g., asana, whatsapp)"),
|
|
11414
|
+
operation: z87.string().optional().describe("Connector operation (e.g., create_task)"),
|
|
11415
|
+
payload: z87.record(z87.string(), z87.unknown()).optional().describe("Operation payload"),
|
|
11416
|
+
condition: z87.object({
|
|
11417
|
+
expression: z87.string().describe("Expression like '{{step.1.result.status}} == completed'"),
|
|
11418
|
+
then_step: z87.number().optional(),
|
|
11419
|
+
else_step: z87.number().optional()
|
|
11317
11420
|
}).optional().describe("Condition for conditional steps"),
|
|
11318
|
-
approval_message:
|
|
11421
|
+
approval_message: z87.string().optional().describe("Message shown when waiting for approval")
|
|
11319
11422
|
});
|
|
11320
11423
|
function registerWorkflowTool(server) {
|
|
11321
11424
|
server.registerTool(
|
|
@@ -11325,14 +11428,14 @@ function registerWorkflowTool(server) {
|
|
|
11325
11428
|
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.",
|
|
11326
11429
|
inputSchema: {
|
|
11327
11430
|
action: ACTION2.describe("create_workflow | start_workflow | get_workflow_status | approve_workflow_step | list_workflows | list_instances"),
|
|
11328
|
-
name:
|
|
11329
|
-
description:
|
|
11330
|
-
steps:
|
|
11331
|
-
definition_id:
|
|
11332
|
-
instance_id:
|
|
11333
|
-
context:
|
|
11334
|
-
approved:
|
|
11335
|
-
status_filter:
|
|
11431
|
+
name: z87.string().optional().describe("Workflow name (for create_workflow)"),
|
|
11432
|
+
description: z87.string().optional().describe("Workflow description (for create_workflow)"),
|
|
11433
|
+
steps: z87.array(StepSchema).optional().describe("Workflow steps (for create_workflow)"),
|
|
11434
|
+
definition_id: z87.string().optional().describe("Workflow definition ID (for start_workflow)"),
|
|
11435
|
+
instance_id: z87.string().optional().describe("Workflow instance ID (for get_workflow_status, approve_workflow_step)"),
|
|
11436
|
+
context: z87.record(z87.string(), z87.unknown()).optional().describe("Initial context/record (for start_workflow)"),
|
|
11437
|
+
approved: z87.boolean().optional().describe("Approve (true) or reject (false) the step (for approve_workflow_step)"),
|
|
11438
|
+
status_filter: z87.string().optional().describe("Filter instances by status (for list_instances)")
|
|
11336
11439
|
}
|
|
11337
11440
|
},
|
|
11338
11441
|
async (input) => {
|
|
@@ -11345,7 +11448,7 @@ function registerWorkflowTool(server) {
|
|
|
11345
11448
|
getWorkflowInstance,
|
|
11346
11449
|
listWorkflowInstances,
|
|
11347
11450
|
approveWorkflowStep
|
|
11348
|
-
} = await import("./workflow-engine-
|
|
11451
|
+
} = await import("./workflow-engine-3AVKRE5I.js");
|
|
11349
11452
|
try {
|
|
11350
11453
|
switch (input.action) {
|
|
11351
11454
|
case "create_workflow": {
|
|
@@ -11468,17 +11571,17 @@ function formatInstanceStatus(inst, def) {
|
|
|
11468
11571
|
}
|
|
11469
11572
|
|
|
11470
11573
|
// src/mcp/tools/create-bug-report.ts
|
|
11471
|
-
import { z as
|
|
11574
|
+
import { z as z88 } from "zod";
|
|
11472
11575
|
import crypto4 from "crypto";
|
|
11473
11576
|
import { mkdir as mkdir2, writeFile as writeFile2 } from "fs/promises";
|
|
11474
11577
|
import path13 from "path";
|
|
11475
|
-
var CLASSIFICATION =
|
|
11578
|
+
var CLASSIFICATION = z88.enum([
|
|
11476
11579
|
"upstream_bug",
|
|
11477
11580
|
"customer_customization",
|
|
11478
11581
|
"emergency_hotfix",
|
|
11479
11582
|
"unclear"
|
|
11480
11583
|
]);
|
|
11481
|
-
var SEVERITY =
|
|
11584
|
+
var SEVERITY = z88.enum(["p0", "p1", "p2", "p3"]);
|
|
11482
11585
|
function slugify(input) {
|
|
11483
11586
|
return input.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "").slice(0, 80) || "bug-report";
|
|
11484
11587
|
}
|
|
@@ -11572,29 +11675,29 @@ function registerCreateBugReport(server) {
|
|
|
11572
11675
|
title: "Create Bug Report",
|
|
11573
11676
|
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.",
|
|
11574
11677
|
inputSchema: {
|
|
11575
|
-
title:
|
|
11678
|
+
title: z88.string().min(3).describe("Short descriptive title"),
|
|
11576
11679
|
classification: CLASSIFICATION.describe(
|
|
11577
11680
|
"upstream_bug = platform defect; customer_customization = local preference; emergency_hotfix = temporary local patch; unclear = needs maintainer triage"
|
|
11578
11681
|
),
|
|
11579
11682
|
severity: SEVERITY.default("p2").describe("p0 critical \u2192 p3 low"),
|
|
11580
|
-
summary:
|
|
11581
|
-
customer_impact:
|
|
11582
|
-
reproduction_steps:
|
|
11583
|
-
expected:
|
|
11584
|
-
actual:
|
|
11585
|
-
files_changed:
|
|
11586
|
-
workaround:
|
|
11587
|
-
local_patch_diff:
|
|
11588
|
-
product:
|
|
11589
|
-
package_version:
|
|
11590
|
-
project_name:
|
|
11591
|
-
implementing_branch:
|
|
11592
|
-
attachments:
|
|
11593
|
-
filename:
|
|
11594
|
-
content:
|
|
11683
|
+
summary: z88.string().min(10).describe("What happened and why it matters"),
|
|
11684
|
+
customer_impact: z88.string().optional().describe("How this affects the customer/founder"),
|
|
11685
|
+
reproduction_steps: z88.array(z88.string()).optional().describe("Steps to reproduce"),
|
|
11686
|
+
expected: z88.string().optional().describe("Expected behavior"),
|
|
11687
|
+
actual: z88.string().optional().describe("Actual behavior"),
|
|
11688
|
+
files_changed: z88.array(z88.string()).optional().describe("Files changed or suspected"),
|
|
11689
|
+
workaround: z88.string().optional().describe("Temporary local workaround/hotfix, if any"),
|
|
11690
|
+
local_patch_diff: z88.string().optional().describe("Small local diff or patch summary"),
|
|
11691
|
+
product: z88.string().optional().describe("Product this bug is for: exe-os, exe-create, exe-wiki, exe-gateway, exe-crm, exe-build. Defaults to exe-os."),
|
|
11692
|
+
package_version: z88.string().optional().describe("Installed package version"),
|
|
11693
|
+
project_name: z88.string().optional().describe("Project/customer context"),
|
|
11694
|
+
implementing_branch: z88.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)."),
|
|
11695
|
+
attachments: z88.array(z88.object({
|
|
11696
|
+
filename: z88.string().min(1).describe("Filename for the attachment (e.g. error.log, patch.diff)"),
|
|
11697
|
+
content: z88.string().min(1).describe("File content \u2014 plain text (diffs, logs, config snippets)")
|
|
11595
11698
|
})).optional().describe("File attachments: diffs, logs, config snippets, screenshots (text-based)"),
|
|
11596
|
-
send_upstream:
|
|
11597
|
-
on_behalf_of_email:
|
|
11699
|
+
send_upstream: z88.boolean().default(true).describe("Attempt to POST to configured AskExe support endpoint"),
|
|
11700
|
+
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")
|
|
11598
11701
|
}
|
|
11599
11702
|
},
|
|
11600
11703
|
async ({
|
|
@@ -11632,7 +11735,7 @@ function registerCreateBugReport(server) {
|
|
|
11632
11735
|
const version = package_version ?? "unknown";
|
|
11633
11736
|
let metricsSnapshot = "";
|
|
11634
11737
|
try {
|
|
11635
|
-
const { getOrchestrationMetrics, formatOrchestrationMetrics } = await import("./orchestration-events-
|
|
11738
|
+
const { getOrchestrationMetrics, formatOrchestrationMetrics } = await import("./orchestration-events-KVNRNIPR.js");
|
|
11636
11739
|
const sinceIso = new Date(Date.now() - 60 * 60 * 1e3).toISOString();
|
|
11637
11740
|
const metrics = await getOrchestrationMetrics({ sinceIso });
|
|
11638
11741
|
if (metrics.totalEvents > 0) {
|
|
@@ -11773,17 +11876,17 @@ Upstream status: ${upstreamStatus}`
|
|
|
11773
11876
|
}
|
|
11774
11877
|
|
|
11775
11878
|
// src/mcp/tools/create-feature-request.ts
|
|
11776
|
-
import { z as
|
|
11879
|
+
import { z as z89 } from "zod";
|
|
11777
11880
|
import crypto5 from "crypto";
|
|
11778
11881
|
import { mkdir as mkdir3, writeFile as writeFile3 } from "fs/promises";
|
|
11779
11882
|
import path14 from "path";
|
|
11780
|
-
var CATEGORY =
|
|
11883
|
+
var CATEGORY = z89.enum([
|
|
11781
11884
|
"upstream_feature",
|
|
11782
11885
|
"local_customization",
|
|
11783
11886
|
"integration",
|
|
11784
11887
|
"unclear"
|
|
11785
11888
|
]);
|
|
11786
|
-
var PRIORITY =
|
|
11889
|
+
var PRIORITY = z89.enum(["p0", "p1", "p2", "p3"]);
|
|
11787
11890
|
function slugify2(input) {
|
|
11788
11891
|
return input.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "").slice(0, 80) || "feature-request";
|
|
11789
11892
|
}
|
|
@@ -11857,26 +11960,26 @@ function registerCreateFeatureRequest(server) {
|
|
|
11857
11960
|
title: "Create Feature Request",
|
|
11858
11961
|
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.",
|
|
11859
11962
|
inputSchema: {
|
|
11860
|
-
title:
|
|
11963
|
+
title: z89.string().min(3).describe("Short descriptive title"),
|
|
11861
11964
|
category: CATEGORY.describe(
|
|
11862
11965
|
"upstream_feature = platform capability change; local_customization = configurable in customer layers; integration = third-party connector; unclear = needs product triage"
|
|
11863
11966
|
),
|
|
11864
11967
|
priority: PRIORITY.default("p2").describe("p0 critical \u2192 p3 low"),
|
|
11865
|
-
description:
|
|
11866
|
-
use_case:
|
|
11867
|
-
current_workaround:
|
|
11868
|
-
proposed_solution:
|
|
11869
|
-
business_impact:
|
|
11870
|
-
product:
|
|
11871
|
-
package_version:
|
|
11872
|
-
project_name:
|
|
11873
|
-
implementing_branch:
|
|
11874
|
-
attachments:
|
|
11875
|
-
filename:
|
|
11876
|
-
content:
|
|
11968
|
+
description: z89.string().min(10).describe("What capability is needed and why"),
|
|
11969
|
+
use_case: z89.string().optional().describe("Concrete scenario where this feature would be used"),
|
|
11970
|
+
current_workaround: z89.string().optional().describe("How the need is currently addressed, if at all"),
|
|
11971
|
+
proposed_solution: z89.string().optional().describe("Suggested implementation approach"),
|
|
11972
|
+
business_impact: z89.string().optional().describe("Impact on business/workflow if this ships"),
|
|
11973
|
+
product: z89.string().optional().describe("Product this feature is for: exe-os, exe-create, exe-wiki, exe-gateway, exe-crm, exe-build. Defaults to exe-os."),
|
|
11974
|
+
package_version: z89.string().optional().describe("Installed package version"),
|
|
11975
|
+
project_name: z89.string().optional().describe("Project/customer context"),
|
|
11976
|
+
implementing_branch: z89.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)."),
|
|
11977
|
+
attachments: z89.array(z89.object({
|
|
11978
|
+
filename: z89.string().min(1).describe("Filename for the attachment (e.g. mockup.txt, api-sketch.diff)"),
|
|
11979
|
+
content: z89.string().min(1).describe("File content \u2014 plain text (diffs, logs, config snippets)")
|
|
11877
11980
|
})).optional().describe("File attachments: diffs, logs, config snippets, mockups (text-based)"),
|
|
11878
|
-
send_upstream:
|
|
11879
|
-
on_behalf_of_email:
|
|
11981
|
+
send_upstream: z89.boolean().default(true).describe("Attempt to POST to configured AskExe support endpoint"),
|
|
11982
|
+
on_behalf_of_email: z89.string().email().optional().describe("ADMIN ONLY: file this request owned by another customer's license email; ignored unless caller holds the support admin token")
|
|
11880
11983
|
}
|
|
11881
11984
|
},
|
|
11882
11985
|
async ({
|
|
@@ -12032,10 +12135,10 @@ Upstream status: ${upstreamStatus}`
|
|
|
12032
12135
|
}
|
|
12033
12136
|
|
|
12034
12137
|
// src/mcp/tools/update-bug-report.ts
|
|
12035
|
-
import { z as
|
|
12138
|
+
import { z as z90 } from "zod";
|
|
12036
12139
|
import { readdir, readFile as readFile2, writeFile as writeFile4 } from "fs/promises";
|
|
12037
12140
|
import path15 from "path";
|
|
12038
|
-
var STATUS =
|
|
12141
|
+
var STATUS = z90.enum(["open", "triaged", "fixed", "closed", "wontfix"]);
|
|
12039
12142
|
var UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/;
|
|
12040
12143
|
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;
|
|
12041
12144
|
async function readReportId(filePath) {
|
|
@@ -12142,18 +12245,18 @@ function registerUpdateBugReport(server) {
|
|
|
12142
12245
|
title: "Update Bug Report",
|
|
12143
12246
|
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.",
|
|
12144
12247
|
inputSchema: {
|
|
12145
|
-
id:
|
|
12248
|
+
id: z90.string().min(8).describe("Bug report UUID (full or 8-char prefix)"),
|
|
12146
12249
|
status: STATUS.optional().describe(
|
|
12147
12250
|
"New status (admin only): open, triaged, fixed, closed, wontfix. Owners cannot set this \u2014 use reopen_request instead."
|
|
12148
12251
|
),
|
|
12149
|
-
fix_version:
|
|
12150
|
-
product:
|
|
12151
|
-
notes:
|
|
12152
|
-
add_note:
|
|
12153
|
-
add_evidence:
|
|
12154
|
-
reopen_request:
|
|
12155
|
-
reopen_reason:
|
|
12156
|
-
send_upstream:
|
|
12252
|
+
fix_version: z90.string().optional().describe("Version that fixes this bug (admin only, e.g. '0.9.161')"),
|
|
12253
|
+
product: z90.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"),
|
|
12254
|
+
notes: z90.string().optional().describe("Follow-up notes about the bug or status change"),
|
|
12255
|
+
add_note: z90.string().optional().describe("Owner follow-up note (alias of notes)"),
|
|
12256
|
+
add_evidence: z90.string().optional().describe("Additional evidence: logs, repro details, stack traces"),
|
|
12257
|
+
reopen_request: z90.boolean().optional().describe("Request a reopen on a recurring fixed/closed bug"),
|
|
12258
|
+
reopen_reason: z90.string().optional().describe("Why the bug should be reopened (recurring symptoms, etc.)"),
|
|
12259
|
+
send_upstream: z90.boolean().default(true).describe("POST the change to AskExe support endpoint")
|
|
12157
12260
|
}
|
|
12158
12261
|
},
|
|
12159
12262
|
async ({ id, status: status2, fix_version, product, notes, add_note, add_evidence, reopen_request, reopen_reason, send_upstream }) => {
|
|
@@ -12277,10 +12380,10 @@ Upstream status: ${upstreamStatus}`
|
|
|
12277
12380
|
}
|
|
12278
12381
|
|
|
12279
12382
|
// src/mcp/tools/update-feature-request.ts
|
|
12280
|
-
import { z as
|
|
12383
|
+
import { z as z91 } from "zod";
|
|
12281
12384
|
import { readdir as readdir2, readFile as readFile3, writeFile as writeFile5 } from "fs/promises";
|
|
12282
12385
|
import path16 from "path";
|
|
12283
|
-
var STATUS2 =
|
|
12386
|
+
var STATUS2 = z91.enum(["open", "planned", "in_progress", "shipped", "closed", "wontdo"]);
|
|
12284
12387
|
async function findRequestFile(id) {
|
|
12285
12388
|
const dir = path16.join(EXE_AI_DIR, "feature-requests");
|
|
12286
12389
|
try {
|
|
@@ -12340,11 +12443,11 @@ function registerUpdateFeatureRequest(server) {
|
|
|
12340
12443
|
title: "Update Feature Request",
|
|
12341
12444
|
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).",
|
|
12342
12445
|
inputSchema: {
|
|
12343
|
-
id:
|
|
12446
|
+
id: z91.string().min(8).describe("Feature request UUID (full or 8-char prefix)"),
|
|
12344
12447
|
status: STATUS2.describe("New status: open, planned, in_progress, shipped, closed, wontdo"),
|
|
12345
|
-
shipped_version:
|
|
12346
|
-
notes:
|
|
12347
|
-
send_upstream:
|
|
12448
|
+
shipped_version: z91.string().optional().describe("Version that ships this feature (e.g. '0.9.161')"),
|
|
12449
|
+
notes: z91.string().optional().describe("Notes about the status change"),
|
|
12450
|
+
send_upstream: z91.boolean().default(true).describe("POST status change to AskExe support endpoint")
|
|
12348
12451
|
}
|
|
12349
12452
|
},
|
|
12350
12453
|
async ({ id, status: status2, shipped_version, notes, send_upstream }) => {
|
|
@@ -12416,7 +12519,7 @@ Upstream status: ${upstreamStatus}`
|
|
|
12416
12519
|
}
|
|
12417
12520
|
|
|
12418
12521
|
// src/mcp/tools/support.ts
|
|
12419
|
-
import { z as
|
|
12522
|
+
import { z as z92 } from "zod";
|
|
12420
12523
|
function formatRows(rows, mode) {
|
|
12421
12524
|
const lines = [`exe-os support ${mode}`, ""];
|
|
12422
12525
|
for (const row of rows) {
|
|
@@ -12457,7 +12560,7 @@ function registerSupportTools(server) {
|
|
|
12457
12560
|
title: "Support Test",
|
|
12458
12561
|
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.",
|
|
12459
12562
|
inputSchema: {
|
|
12460
|
-
project:
|
|
12563
|
+
project: z92.string().default("support-smoke").describe("Customer/project name, e.g. hygo")
|
|
12461
12564
|
}
|
|
12462
12565
|
},
|
|
12463
12566
|
async ({ project }) => {
|
|
@@ -12475,9 +12578,9 @@ function registerSupportTools(server) {
|
|
|
12475
12578
|
title: "My Bug Reports",
|
|
12476
12579
|
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.",
|
|
12477
12580
|
inputSchema: {
|
|
12478
|
-
status:
|
|
12479
|
-
limit:
|
|
12480
|
-
offset:
|
|
12581
|
+
status: z92.enum(["all", "open", "triaged", "fixed", "closed", "wontfix"]).default("all").describe("Filter by status. Default: all"),
|
|
12582
|
+
limit: z92.number().min(1).max(500).default(25).describe("Max results per page (1-500)"),
|
|
12583
|
+
offset: z92.number().min(0).default(0).describe("Number of results to skip for pagination. Use next_offset from a prior response.")
|
|
12481
12584
|
}
|
|
12482
12585
|
},
|
|
12483
12586
|
async ({ status: status2, limit, offset }) => {
|
|
@@ -12547,9 +12650,9 @@ function registerSupportTools(server) {
|
|
|
12547
12650
|
title: "My Feature Requests",
|
|
12548
12651
|
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.",
|
|
12549
12652
|
inputSchema: {
|
|
12550
|
-
status:
|
|
12551
|
-
limit:
|
|
12552
|
-
offset:
|
|
12653
|
+
status: z92.enum(["all", "open", "planned", "in_progress", "shipped", "closed", "wontdo"]).default("all").describe("Filter by status. Default: all"),
|
|
12654
|
+
limit: z92.number().min(1).max(500).default(25).describe("Max results per page (1-500)"),
|
|
12655
|
+
offset: z92.number().min(0).default(0).describe("Number of results to skip for pagination. Use next_offset from a prior response.")
|
|
12553
12656
|
}
|
|
12554
12657
|
},
|
|
12555
12658
|
async ({ status: status2, limit, offset }) => {
|
|
@@ -12620,8 +12723,8 @@ function registerSupportTools(server) {
|
|
|
12620
12723
|
title: "My Reviews",
|
|
12621
12724
|
description: "List reviews you've filed, scoped to your license. Shows status (open/in_review/approved/merged/closed/rejected), priority, and resolution.",
|
|
12622
12725
|
inputSchema: {
|
|
12623
|
-
status:
|
|
12624
|
-
limit:
|
|
12726
|
+
status: z92.enum(["all", "open", "in_review", "approved", "merged", "closed", "rejected"]).default("all").describe("Filter by status. Default: all"),
|
|
12727
|
+
limit: z92.number().min(1).max(50).default(25).describe("Max results")
|
|
12625
12728
|
}
|
|
12626
12729
|
},
|
|
12627
12730
|
async ({ status: status2, limit }) => {
|
|
@@ -12695,7 +12798,7 @@ import { existsSync as existsSync8 } from "fs";
|
|
|
12695
12798
|
import { dirname, join as join3, parse as pathParse } from "path";
|
|
12696
12799
|
import { fileURLToPath as fileURLToPath2 } from "url";
|
|
12697
12800
|
import { promisify as promisify2 } from "util";
|
|
12698
|
-
import { z as
|
|
12801
|
+
import { z as z93 } from "zod";
|
|
12699
12802
|
function findPackageRoot() {
|
|
12700
12803
|
let dir = dirname(fileURLToPath2(import.meta.url));
|
|
12701
12804
|
const { root } = pathParse(dir);
|
|
@@ -12771,12 +12874,12 @@ function registerCliParityTools(server) {
|
|
|
12771
12874
|
title: "Doctor",
|
|
12772
12875
|
description: "Run exe-os doctor audit. Defaults to read-only diagnostics; optional dry-run/fix flags mirror CLI.",
|
|
12773
12876
|
inputSchema: {
|
|
12774
|
-
agent:
|
|
12775
|
-
project:
|
|
12776
|
-
verbose:
|
|
12777
|
-
conflicts:
|
|
12778
|
-
dry_run:
|
|
12779
|
-
fix:
|
|
12877
|
+
agent: z93.string().optional(),
|
|
12878
|
+
project: z93.string().optional(),
|
|
12879
|
+
verbose: z93.boolean().default(false),
|
|
12880
|
+
conflicts: z93.boolean().default(false),
|
|
12881
|
+
dry_run: z93.boolean().default(false),
|
|
12882
|
+
fix: z93.boolean().default(false)
|
|
12780
12883
|
}
|
|
12781
12884
|
}, async ({ agent, project, verbose, conflicts, dry_run, fix }) => {
|
|
12782
12885
|
const args = [];
|
|
@@ -12793,9 +12896,9 @@ function registerCliParityTools(server) {
|
|
|
12793
12896
|
title: "Rename Employee",
|
|
12794
12897
|
description: "Rename an employee using the same path as `exe-os rename <old> <new>`. Use for customer roster/identity renames.",
|
|
12795
12898
|
inputSchema: {
|
|
12796
|
-
old_name:
|
|
12797
|
-
new_name:
|
|
12798
|
-
dry_run:
|
|
12899
|
+
old_name: z93.string().min(1),
|
|
12900
|
+
new_name: z93.string().min(1),
|
|
12901
|
+
dry_run: z93.boolean().default(false)
|
|
12799
12902
|
}
|
|
12800
12903
|
}, async ({ old_name, new_name, dry_run }) => {
|
|
12801
12904
|
if (dry_run) {
|
|
@@ -12808,7 +12911,7 @@ function registerCliParityTools(server) {
|
|
|
12808
12911
|
server.registerTool("status_brief", {
|
|
12809
12912
|
title: "Status Brief",
|
|
12810
12913
|
description: "Return current employee/tmux status. Mirrors `exe-status` and supports optional deep view for one employee.",
|
|
12811
|
-
inputSchema: { employee:
|
|
12914
|
+
inputSchema: { employee: z93.string().optional() }
|
|
12812
12915
|
}, async ({ employee }) => {
|
|
12813
12916
|
const text5 = await status(employee);
|
|
12814
12917
|
return result2(text5, { ok: true, employee: employee ?? null });
|
|
@@ -12816,7 +12919,7 @@ function registerCliParityTools(server) {
|
|
|
12816
12919
|
server.registerTool("pending_work_summary", {
|
|
12817
12920
|
title: "Pending Work Summary",
|
|
12818
12921
|
description: "Return pending reviews, messages, and notifications using the same summaries as the CLI tools.",
|
|
12819
|
-
inputSchema: { agent:
|
|
12922
|
+
inputSchema: { agent: z93.string().optional() }
|
|
12820
12923
|
}, async ({ agent }) => {
|
|
12821
12924
|
const settled = await Promise.allSettled([
|
|
12822
12925
|
runDistScript("exe-pending-reviews", [], 3e4),
|
|
@@ -12852,7 +12955,7 @@ function registerCliParityTools(server) {
|
|
|
12852
12955
|
server.registerTool("key_rotation_preflight", {
|
|
12853
12956
|
title: "Key Rotation Preflight",
|
|
12854
12957
|
description: "Dry-run key rotation/update preflight. No destructive changes.",
|
|
12855
|
-
inputSchema: { mode:
|
|
12958
|
+
inputSchema: { mode: z93.enum(["rotate", "update"]).default("rotate") }
|
|
12856
12959
|
}, async ({ mode }) => {
|
|
12857
12960
|
const out = await runCommand("exe-os", ["key", mode, "--dry-run"], 6e4);
|
|
12858
12961
|
return result2(out.text, { ok: out.ok, command: out.command, mode }, !out.ok);
|
|
@@ -12878,11 +12981,11 @@ function registerCliParityTools(server) {
|
|
|
12878
12981
|
title: "Stack Update Check",
|
|
12879
12982
|
description: "Plan/check a customer stack update without applying Docker changes. Mirrors `exe-os stack-update --check`.",
|
|
12880
12983
|
inputSchema: {
|
|
12881
|
-
target:
|
|
12882
|
-
manifest:
|
|
12883
|
-
compose_file:
|
|
12884
|
-
env_file:
|
|
12885
|
-
deployment_persona:
|
|
12984
|
+
target: z93.string().optional(),
|
|
12985
|
+
manifest: z93.string().optional(),
|
|
12986
|
+
compose_file: z93.string().optional(),
|
|
12987
|
+
env_file: z93.string().optional(),
|
|
12988
|
+
deployment_persona: z93.enum(["customer", "askexe-control-plane"]).default("customer")
|
|
12886
12989
|
}
|
|
12887
12990
|
}, async ({ target, manifest, compose_file, env_file, deployment_persona }) => {
|
|
12888
12991
|
const args = ["stack-update", "--check", "--deployment-persona", deployment_persona];
|
|
@@ -12901,7 +13004,7 @@ function registerCliParityTools(server) {
|
|
|
12901
13004
|
const out = await runCommand("exe-os", ["cloud", "status"], 45e3);
|
|
12902
13005
|
let healthSection = "";
|
|
12903
13006
|
try {
|
|
12904
|
-
const { getRetrievalHealth: getRetrievalHealth2, formatDegradations: formatDegradations2 } = await import("./retrieval-health-
|
|
13007
|
+
const { getRetrievalHealth: getRetrievalHealth2, formatDegradations: formatDegradations2 } = await import("./retrieval-health-YJ7CXYVD.js");
|
|
12905
13008
|
const h = await getRetrievalHealth2();
|
|
12906
13009
|
const lines = [
|
|
12907
13010
|
"",
|
|
@@ -12936,7 +13039,7 @@ function registerCliParityTools(server) {
|
|
|
12936
13039
|
}
|
|
12937
13040
|
|
|
12938
13041
|
// src/mcp/tools/code-context.ts
|
|
12939
|
-
import { z as
|
|
13042
|
+
import { z as z94 } from "zod";
|
|
12940
13043
|
function errorResult10(text5) {
|
|
12941
13044
|
return { content: [{ type: "text", text: text5 }], isError: true };
|
|
12942
13045
|
}
|
|
@@ -12948,20 +13051,20 @@ function registerCodeContext(server) {
|
|
|
12948
13051
|
title: "Code Context",
|
|
12949
13052
|
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.",
|
|
12950
13053
|
inputSchema: {
|
|
12951
|
-
action:
|
|
12952
|
-
project_root:
|
|
12953
|
-
query:
|
|
12954
|
-
symbol:
|
|
12955
|
-
file_path:
|
|
12956
|
-
force:
|
|
12957
|
-
limit:
|
|
12958
|
-
offset:
|
|
12959
|
-
refresh_index:
|
|
12960
|
-
languages:
|
|
12961
|
-
paths:
|
|
12962
|
-
depth:
|
|
12963
|
-
max_files:
|
|
12964
|
-
lexical_only:
|
|
13054
|
+
action: z94.enum(["index", "index_embed", "search", "trace", "blast_radius", "stats"]).describe("Code context operation. index_embed = index + generate embeddings for semantic search."),
|
|
13055
|
+
project_root: z94.string().optional().describe("Repository root. Defaults to current working directory."),
|
|
13056
|
+
query: z94.string().optional().describe("Natural language search query (e.g. 'authentication logic', 'database migration'). Semantic search finds conceptual matches, not just keywords."),
|
|
13057
|
+
symbol: z94.string().optional().describe("Symbol/function/class/type name for trace or blast_radius"),
|
|
13058
|
+
file_path: z94.string().optional().describe("File path for blast_radius"),
|
|
13059
|
+
force: z94.boolean().optional().describe("Force rebuild before answering"),
|
|
13060
|
+
limit: z94.coerce.number().int().min(1).max(100).optional().describe("Max results"),
|
|
13061
|
+
offset: z94.coerce.number().int().min(0).optional().describe("Search pagination offset"),
|
|
13062
|
+
refresh_index: z94.boolean().optional().describe("Refresh/rebuild index before searching"),
|
|
13063
|
+
languages: z94.array(z94.string()).optional().describe('Language filters, e.g. ["python", "typescript"]'),
|
|
13064
|
+
paths: z94.array(z94.string()).optional().describe("Path/glob filters"),
|
|
13065
|
+
depth: z94.coerce.number().int().min(1).max(5).optional().describe("Dependent traversal depth for blast_radius"),
|
|
13066
|
+
max_files: z94.coerce.number().int().min(1).max(1e4).optional().describe("Max code files to index"),
|
|
13067
|
+
lexical_only: z94.boolean().optional().describe("Force lexical-only search (skip vector similarity). Default: false \u2014 uses semantic hybrid search.")
|
|
12965
13068
|
}
|
|
12966
13069
|
}, async ({ action, project_root, query, symbol, file_path, force, limit, offset, refresh_index, languages, paths, depth, max_files, lexical_only }) => {
|
|
12967
13070
|
const opts = { projectRoot: project_root, force, maxFiles: max_files };
|
|
@@ -12969,7 +13072,7 @@ function registerCodeContext(server) {
|
|
|
12969
13072
|
const index = buildCodeContextIndex(opts);
|
|
12970
13073
|
let graphExtract;
|
|
12971
13074
|
try {
|
|
12972
|
-
const { autoExtractGraphEntities } = await import("./graph-auto-extract-
|
|
13075
|
+
const { autoExtractGraphEntities } = await import("./graph-auto-extract-I7QL2TY5.js");
|
|
12973
13076
|
graphExtract = await autoExtractGraphEntities(opts.projectRoot);
|
|
12974
13077
|
} catch {
|
|
12975
13078
|
}
|
|
@@ -13044,13 +13147,13 @@ function registerCodeContext(server) {
|
|
|
13044
13147
|
}
|
|
13045
13148
|
|
|
13046
13149
|
// src/mcp/tools/support-inbox.ts
|
|
13047
|
-
import { z as
|
|
13150
|
+
import { z as z95 } from "zod";
|
|
13048
13151
|
import { readFileSync as readFileSync7 } from "fs";
|
|
13049
13152
|
import { join as join4 } from "path";
|
|
13050
13153
|
import { homedir as homedir4 } from "os";
|
|
13051
13154
|
var DEFAULT_ENDPOINT = "https://api.askexe.com/admin/support/bug-reports";
|
|
13052
13155
|
var DEFAULT_OWNER_ENDPOINT = "https://api.askexe.com/v1/support/bug-reports";
|
|
13053
|
-
var STATUS3 =
|
|
13156
|
+
var STATUS3 = z95.enum(["open", "triaged", "fixed", "closed", "wontfix"]);
|
|
13054
13157
|
function adminToken() {
|
|
13055
13158
|
if (process.env.ASKEXE_SUPPORT_ADMIN_TOKEN) return process.env.ASKEXE_SUPPORT_ADMIN_TOKEN;
|
|
13056
13159
|
if (process.env.EXE_SUPPORT_ADMIN_TOKEN) return process.env.EXE_SUPPORT_ADMIN_TOKEN;
|
|
@@ -13157,9 +13260,9 @@ function registerListBugReports(server) {
|
|
|
13157
13260
|
title: "List Bug Reports",
|
|
13158
13261
|
description: "AskExe-internal only: list incoming customer bug reports from the support inbox.",
|
|
13159
13262
|
inputSchema: {
|
|
13160
|
-
status:
|
|
13161
|
-
severity:
|
|
13162
|
-
limit:
|
|
13263
|
+
status: z95.enum(["all", "open", "triaged", "fixed", "closed", "wontfix"]).default("open"),
|
|
13264
|
+
severity: z95.enum(["p0", "p1", "p2", "p3"]).optional(),
|
|
13265
|
+
limit: z95.number().int().min(1).max(100).default(25)
|
|
13163
13266
|
}
|
|
13164
13267
|
},
|
|
13165
13268
|
async ({ status: status2, severity, limit }) => {
|
|
@@ -13189,7 +13292,7 @@ function registerGetBugReport(server) {
|
|
|
13189
13292
|
{
|
|
13190
13293
|
title: "Get Bug Report",
|
|
13191
13294
|
description: "AskExe-internal only: fetch one customer bug report with full markdown payload and comments thread.",
|
|
13192
|
-
inputSchema: { id:
|
|
13295
|
+
inputSchema: { id: z95.string().min(8) }
|
|
13193
13296
|
},
|
|
13194
13297
|
async ({ id }) => {
|
|
13195
13298
|
const data = await requestJson(`${endpoint()}/${encodeURIComponent(id)}`);
|
|
@@ -13206,8 +13309,8 @@ function registerAddBugReportComment(server) {
|
|
|
13206
13309
|
title: "Add Bug Report Comment",
|
|
13207
13310
|
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.",
|
|
13208
13311
|
inputSchema: {
|
|
13209
|
-
id:
|
|
13210
|
-
comment:
|
|
13312
|
+
id: z95.string().min(8),
|
|
13313
|
+
comment: z95.string().min(1).describe("Comment text to append to the bug report thread")
|
|
13211
13314
|
}
|
|
13212
13315
|
},
|
|
13213
13316
|
async ({ id, comment }) => {
|
|
@@ -13225,7 +13328,7 @@ function registerGetBugReportComments(server) {
|
|
|
13225
13328
|
{
|
|
13226
13329
|
title: "Get Bug Report Comments",
|
|
13227
13330
|
description: "AskExe-internal only: list the comments thread on a bug report (GET /comments).",
|
|
13228
|
-
inputSchema: { id:
|
|
13331
|
+
inputSchema: { id: z95.string().min(8) }
|
|
13229
13332
|
},
|
|
13230
13333
|
async ({ id }) => {
|
|
13231
13334
|
const data = await commentRequestJson(id);
|
|
@@ -13240,14 +13343,14 @@ function registerTriageBugReport(server) {
|
|
|
13240
13343
|
title: "Triage Bug Report",
|
|
13241
13344
|
description: "AskExe-internal only: update bug report status and link task/commit/release metadata.",
|
|
13242
13345
|
inputSchema: {
|
|
13243
|
-
id:
|
|
13346
|
+
id: z95.string().min(8),
|
|
13244
13347
|
status: STATUS3.optional(),
|
|
13245
|
-
triage_notes:
|
|
13246
|
-
add_note:
|
|
13247
|
-
linked_task_id:
|
|
13248
|
-
linked_commit:
|
|
13249
|
-
fixed_version:
|
|
13250
|
-
product:
|
|
13348
|
+
triage_notes: z95.string().optional(),
|
|
13349
|
+
add_note: z95.string().optional().describe("Append a timestamped progress note without changing status or replacing triage_notes"),
|
|
13350
|
+
linked_task_id: z95.string().optional(),
|
|
13351
|
+
linked_commit: z95.string().optional(),
|
|
13352
|
+
fixed_version: z95.string().optional(),
|
|
13353
|
+
product: z95.string().optional().describe("Re-label this bug's product: exe-os, exe-create, exe-wiki, exe-gateway, exe-crm, exe-build, exe-chat, exe-auth, exe-monitor, exe-db, exe-erp")
|
|
13251
13354
|
}
|
|
13252
13355
|
},
|
|
13253
13356
|
async ({ id, status: status2, triage_notes, add_note, linked_task_id, linked_commit, fixed_version, product }) => {
|
|
@@ -13260,7 +13363,7 @@ function registerTriageBugReport(server) {
|
|
|
13260
13363
|
}
|
|
13261
13364
|
);
|
|
13262
13365
|
}
|
|
13263
|
-
var FEATURE_STATUS =
|
|
13366
|
+
var FEATURE_STATUS = z95.enum(["open", "planned", "in_progress", "shipped", "closed", "wontdo"]);
|
|
13264
13367
|
function featureEndpoint() {
|
|
13265
13368
|
return endpoint().replace(/\/bug-reports\/?$/, "/feature-requests");
|
|
13266
13369
|
}
|
|
@@ -13271,9 +13374,9 @@ function registerListFeatureRequests(server) {
|
|
|
13271
13374
|
title: "List Feature Requests",
|
|
13272
13375
|
description: "AskExe-internal only: list incoming customer feature requests from the support inbox.",
|
|
13273
13376
|
inputSchema: {
|
|
13274
|
-
status:
|
|
13275
|
-
priority:
|
|
13276
|
-
limit:
|
|
13377
|
+
status: z95.enum(["all", "open", "planned", "in_progress", "shipped", "closed", "wontdo"]).default("open"),
|
|
13378
|
+
priority: z95.enum(["p0", "p1", "p2", "p3"]).optional(),
|
|
13379
|
+
limit: z95.number().int().min(1).max(100).default(25)
|
|
13277
13380
|
}
|
|
13278
13381
|
},
|
|
13279
13382
|
async ({ status: status2, priority, limit }) => {
|
|
@@ -13292,7 +13395,7 @@ function registerGetFeatureRequest(server) {
|
|
|
13292
13395
|
{
|
|
13293
13396
|
title: "Get Feature Request",
|
|
13294
13397
|
description: "AskExe-internal only: fetch one customer feature request with full payload.",
|
|
13295
|
-
inputSchema: { id:
|
|
13398
|
+
inputSchema: { id: z95.string().min(8) }
|
|
13296
13399
|
},
|
|
13297
13400
|
async ({ id }) => {
|
|
13298
13401
|
const data = await requestJson(`${featureEndpoint()}/${encodeURIComponent(id)}`);
|
|
@@ -13307,12 +13410,12 @@ function registerTriageFeatureRequest(server) {
|
|
|
13307
13410
|
title: "Triage Feature Request",
|
|
13308
13411
|
description: "AskExe-internal only: update feature request status, response notes, and version metadata.",
|
|
13309
13412
|
inputSchema: {
|
|
13310
|
-
id:
|
|
13413
|
+
id: z95.string().min(8),
|
|
13311
13414
|
status: FEATURE_STATUS.optional(),
|
|
13312
|
-
response_notes:
|
|
13313
|
-
add_note:
|
|
13314
|
-
target_version:
|
|
13315
|
-
shipped_version:
|
|
13415
|
+
response_notes: z95.string().optional(),
|
|
13416
|
+
add_note: z95.string().optional().describe("Append a timestamped progress note without changing status or replacing response_notes"),
|
|
13417
|
+
target_version: z95.string().optional(),
|
|
13418
|
+
shipped_version: z95.string().optional()
|
|
13316
13419
|
}
|
|
13317
13420
|
},
|
|
13318
13421
|
async ({ id, status: status2, response_notes, add_note, target_version, shipped_version }) => {
|
|
@@ -13325,7 +13428,7 @@ function registerTriageFeatureRequest(server) {
|
|
|
13325
13428
|
}
|
|
13326
13429
|
);
|
|
13327
13430
|
}
|
|
13328
|
-
var REVIEW_STATUS =
|
|
13431
|
+
var REVIEW_STATUS = z95.enum(["open", "in_review", "approved", "merged", "closed", "rejected"]);
|
|
13329
13432
|
function reviewEndpoint() {
|
|
13330
13433
|
return endpoint().replace(/\/bug-reports\/?$/, "/reviews");
|
|
13331
13434
|
}
|
|
@@ -13336,9 +13439,9 @@ function registerListReviews(server) {
|
|
|
13336
13439
|
title: "List Reviews",
|
|
13337
13440
|
description: "AskExe-internal only: list incoming review requests from the support inbox.",
|
|
13338
13441
|
inputSchema: {
|
|
13339
|
-
status:
|
|
13340
|
-
priority:
|
|
13341
|
-
limit:
|
|
13442
|
+
status: z95.enum(["all", "open", "in_review", "approved", "merged", "closed", "rejected"]).default("open"),
|
|
13443
|
+
priority: z95.enum(["p0", "p1", "p2", "p3"]).optional(),
|
|
13444
|
+
limit: z95.number().int().min(1).max(100).default(25)
|
|
13342
13445
|
}
|
|
13343
13446
|
},
|
|
13344
13447
|
async ({ status: status2, priority, limit }) => {
|
|
@@ -13357,7 +13460,7 @@ function registerGetReview(server) {
|
|
|
13357
13460
|
{
|
|
13358
13461
|
title: "Get Review",
|
|
13359
13462
|
description: "AskExe-internal only: fetch one review with full payload.",
|
|
13360
|
-
inputSchema: { id:
|
|
13463
|
+
inputSchema: { id: z95.string().min(8) }
|
|
13361
13464
|
},
|
|
13362
13465
|
async ({ id }) => {
|
|
13363
13466
|
const data = await requestJson(`${reviewEndpoint()}/${encodeURIComponent(id)}`);
|
|
@@ -13372,12 +13475,12 @@ function registerTriageReview(server) {
|
|
|
13372
13475
|
title: "Triage Review",
|
|
13373
13476
|
description: "AskExe-internal only: update review status, response notes, and resolution.",
|
|
13374
13477
|
inputSchema: {
|
|
13375
|
-
id:
|
|
13478
|
+
id: z95.string().min(8),
|
|
13376
13479
|
status: REVIEW_STATUS.optional(),
|
|
13377
|
-
response_notes:
|
|
13378
|
-
add_note:
|
|
13379
|
-
resolution:
|
|
13380
|
-
pr_url:
|
|
13480
|
+
response_notes: z95.string().optional(),
|
|
13481
|
+
add_note: z95.string().optional().describe("Append a timestamped progress note without changing status or replacing response_notes"),
|
|
13482
|
+
resolution: z95.string().optional(),
|
|
13483
|
+
pr_url: z95.string().optional()
|
|
13381
13484
|
}
|
|
13382
13485
|
},
|
|
13383
13486
|
async ({ id, status: status2, response_notes, add_note, resolution, pr_url }) => {
|
|
@@ -13391,7 +13494,7 @@ function registerTriageReview(server) {
|
|
|
13391
13494
|
}
|
|
13392
13495
|
|
|
13393
13496
|
// src/mcp/tools/decision.ts
|
|
13394
|
-
import { z as
|
|
13497
|
+
import { z as z96 } from "zod";
|
|
13395
13498
|
function buildHandlers6() {
|
|
13396
13499
|
const tools = /* @__PURE__ */ new Map();
|
|
13397
13500
|
const fake = {
|
|
@@ -13415,12 +13518,12 @@ function registerDecision(server) {
|
|
|
13415
13518
|
title: "Decision",
|
|
13416
13519
|
description: "Store or retrieve authoritative decisions. Actions: store (persist a decision by domain), get (look up a decision by domain/query).",
|
|
13417
13520
|
inputSchema: {
|
|
13418
|
-
action:
|
|
13419
|
-
domain:
|
|
13420
|
-
decision:
|
|
13421
|
-
rationale:
|
|
13422
|
-
query:
|
|
13423
|
-
limit:
|
|
13521
|
+
action: z96.enum(["store", "get"]).describe("Decision operation"),
|
|
13522
|
+
domain: z96.string().optional().describe("Decision domain (e.g. 'architecture', 'hiring')"),
|
|
13523
|
+
decision: z96.string().optional().describe("Decision text for action=store"),
|
|
13524
|
+
rationale: z96.string().optional().describe("Why this decision was made (action=store)"),
|
|
13525
|
+
query: z96.string().optional().describe("Search query for action=get"),
|
|
13526
|
+
limit: z96.coerce.number().optional().describe("Max results for action=get")
|
|
13424
13527
|
}
|
|
13425
13528
|
},
|
|
13426
13529
|
async (input, extra) => {
|
|
@@ -13436,7 +13539,7 @@ function registerDecision(server) {
|
|
|
13436
13539
|
}
|
|
13437
13540
|
|
|
13438
13541
|
// src/mcp/tools/session.ts
|
|
13439
|
-
import { z as
|
|
13542
|
+
import { z as z97 } from "zod";
|
|
13440
13543
|
function buildHandlers7() {
|
|
13441
13544
|
const tools = /* @__PURE__ */ new Map();
|
|
13442
13545
|
const fake = {
|
|
@@ -13484,17 +13587,17 @@ function registerSession(server) {
|
|
|
13484
13587
|
title: "Session",
|
|
13485
13588
|
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).",
|
|
13486
13589
|
inputSchema: {
|
|
13487
|
-
action:
|
|
13488
|
-
session_id:
|
|
13489
|
-
limit:
|
|
13590
|
+
action: z97.enum(["events", "last_response", "set_mode", "get_mode"]).describe("Session operation"),
|
|
13591
|
+
session_id: z97.string().optional().describe("Session ID for action=events"),
|
|
13592
|
+
limit: z97.coerce.number().optional().describe("Max events for action=events"),
|
|
13490
13593
|
// set_mode params
|
|
13491
|
-
mode:
|
|
13594
|
+
mode: z97.enum(["explore", "task"]).optional().describe(
|
|
13492
13595
|
"Mode for action=set_mode. 'explore' = divergent, no deliverable, nudges suppressed. 'task' = default convergent behaviour (resets any active explore session)."
|
|
13493
13596
|
),
|
|
13494
|
-
duration_minutes:
|
|
13597
|
+
duration_minutes: z97.number().optional().describe(
|
|
13495
13598
|
`How long to stay in explore mode in minutes (action=set_mode, mode=explore). Default: ${DEFAULT_EXPLORE_DURATION_MS / 6e4} minutes (1 hour).`
|
|
13496
13599
|
),
|
|
13497
|
-
notes:
|
|
13600
|
+
notes: z97.string().optional().describe("Optional notes about this explore session (action=set_mode)")
|
|
13498
13601
|
}
|
|
13499
13602
|
},
|
|
13500
13603
|
async (input, extra) => {
|
|
@@ -13559,14 +13662,14 @@ All active explore sessions (${active.length}):
|
|
|
13559
13662
|
}
|
|
13560
13663
|
|
|
13561
13664
|
// src/mcp/tools/support-consolidated.ts
|
|
13562
|
-
import { z as
|
|
13665
|
+
import { z as z99 } from "zod";
|
|
13563
13666
|
|
|
13564
13667
|
// src/mcp/tools/create-review.ts
|
|
13565
|
-
import { z as
|
|
13668
|
+
import { z as z98 } from "zod";
|
|
13566
13669
|
import crypto6 from "crypto";
|
|
13567
13670
|
import { mkdir as mkdir4, writeFile as writeFile6 } from "fs/promises";
|
|
13568
13671
|
import path17 from "path";
|
|
13569
|
-
var PRIORITY2 =
|
|
13672
|
+
var PRIORITY2 = z98.enum(["p0", "p1", "p2", "p3"]);
|
|
13570
13673
|
function slugify3(input) {
|
|
13571
13674
|
return input.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "").slice(0, 80) || "review";
|
|
13572
13675
|
}
|
|
@@ -13632,15 +13735,15 @@ function registerCreateReview(server) {
|
|
|
13632
13735
|
title: "Create Review",
|
|
13633
13736
|
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.",
|
|
13634
13737
|
inputSchema: {
|
|
13635
|
-
title:
|
|
13636
|
-
description:
|
|
13738
|
+
title: z98.string().min(3).describe("Short descriptive title"),
|
|
13739
|
+
description: z98.string().optional().describe("What needs review and why"),
|
|
13637
13740
|
priority: PRIORITY2.default("p1").describe("p0 critical -> p3 low"),
|
|
13638
|
-
source:
|
|
13639
|
-
pr_url:
|
|
13640
|
-
product:
|
|
13641
|
-
package_version:
|
|
13642
|
-
project_name:
|
|
13643
|
-
send_upstream:
|
|
13741
|
+
source: z98.string().optional().describe("Source: self-improve, manual, ci, etc."),
|
|
13742
|
+
pr_url: z98.string().optional().describe("PR URL if applicable"),
|
|
13743
|
+
product: z98.string().optional().describe("Product: exe-os (default), exe-create, exe-wiki, exe-gateway, exe-crm, exe-build"),
|
|
13744
|
+
package_version: z98.string().optional().describe("Installed package version"),
|
|
13745
|
+
project_name: z98.string().optional().describe("Project/customer context"),
|
|
13746
|
+
send_upstream: z98.boolean().default(false).describe("Attempt to POST to configured AskExe support endpoint (disabled by default \u2014 review route not yet live)")
|
|
13644
13747
|
}
|
|
13645
13748
|
},
|
|
13646
13749
|
async ({
|
|
@@ -13796,7 +13899,7 @@ function registerSupportConsolidated(server) {
|
|
|
13796
13899
|
title: "Support",
|
|
13797
13900
|
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.",
|
|
13798
13901
|
inputSchema: {
|
|
13799
|
-
action:
|
|
13902
|
+
action: z99.enum([
|
|
13800
13903
|
"create_bug",
|
|
13801
13904
|
"create_feature",
|
|
13802
13905
|
"create_review",
|
|
@@ -13819,40 +13922,40 @@ function registerSupportConsolidated(server) {
|
|
|
13819
13922
|
"health",
|
|
13820
13923
|
"test"
|
|
13821
13924
|
]).describe("Support operation"),
|
|
13822
|
-
title:
|
|
13823
|
-
description:
|
|
13824
|
-
steps_to_reproduce:
|
|
13825
|
-
expected_behavior:
|
|
13826
|
-
actual_behavior:
|
|
13827
|
-
severity:
|
|
13828
|
-
product:
|
|
13829
|
-
use_case:
|
|
13830
|
-
proposed_solution:
|
|
13831
|
-
priority:
|
|
13832
|
-
on_behalf_of_email:
|
|
13833
|
-
id:
|
|
13834
|
-
comment:
|
|
13835
|
-
status:
|
|
13836
|
-
classification:
|
|
13837
|
-
resolution:
|
|
13838
|
-
notes:
|
|
13839
|
-
triage_notes:
|
|
13840
|
-
linked_task_id:
|
|
13841
|
-
linked_commit:
|
|
13842
|
-
fixed_version:
|
|
13843
|
-
shipped_version:
|
|
13844
|
-
add_evidence:
|
|
13845
|
-
reopen_request:
|
|
13846
|
-
reopen_reason:
|
|
13847
|
-
attachments:
|
|
13848
|
-
filename:
|
|
13849
|
-
content:
|
|
13925
|
+
title: z99.string().optional().describe("Bug/feature title"),
|
|
13926
|
+
description: z99.string().optional().describe("Bug/feature description"),
|
|
13927
|
+
steps_to_reproduce: z99.string().optional().describe("Steps to reproduce (bugs)"),
|
|
13928
|
+
expected_behavior: z99.string().optional().describe("Expected behavior (bugs)"),
|
|
13929
|
+
actual_behavior: z99.string().optional().describe("Actual behavior (bugs)"),
|
|
13930
|
+
severity: z99.string().optional().describe("Severity: p0/p1/p2/p3"),
|
|
13931
|
+
product: z99.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"),
|
|
13932
|
+
use_case: z99.string().optional().describe("Use case (features)"),
|
|
13933
|
+
proposed_solution: z99.string().optional().describe("Proposed solution (features)"),
|
|
13934
|
+
priority: z99.string().optional().describe("Priority (features)"),
|
|
13935
|
+
on_behalf_of_email: z99.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)"),
|
|
13936
|
+
id: z99.string().optional().describe("Bug/feature ID for get/triage/add_comment/get_comments"),
|
|
13937
|
+
comment: z99.string().optional().describe("Comment text to append to a bug report thread (add_comment)"),
|
|
13938
|
+
status: z99.string().optional().describe("Filter by status"),
|
|
13939
|
+
classification: z99.string().optional().describe("Triage classification"),
|
|
13940
|
+
resolution: z99.string().optional().describe("Triage resolution"),
|
|
13941
|
+
notes: z99.string().optional().describe("Triage notes (mapped to triage_notes for bug/feature triage)"),
|
|
13942
|
+
triage_notes: z99.string().optional().describe("Triage notes (legacy field name)"),
|
|
13943
|
+
linked_task_id: z99.string().optional().describe("Linked task ID for triage"),
|
|
13944
|
+
linked_commit: z99.string().optional().describe("Linked commit hash for triage"),
|
|
13945
|
+
fixed_version: z99.string().optional().describe("Version that fixes this bug"),
|
|
13946
|
+
shipped_version: z99.string().optional().describe("Version that ships this feature (features only)"),
|
|
13947
|
+
add_evidence: z99.string().optional().describe("Owner self-service: additional evidence (logs, repro, stack traces) for update_bug"),
|
|
13948
|
+
reopen_request: z99.boolean().optional().describe("Owner self-service: request a reopen on a recurring fixed bug (update_bug)"),
|
|
13949
|
+
reopen_reason: z99.string().optional().describe("Owner self-service: why the bug should be reopened (update_bug)"),
|
|
13950
|
+
attachments: z99.array(z99.object({
|
|
13951
|
+
filename: z99.string().min(1).describe("Filename for the attachment"),
|
|
13952
|
+
content: z99.string().min(1).describe("File content \u2014 plain text")
|
|
13850
13953
|
})).optional().describe("File attachments for bug reports / feature requests (diffs, logs, config snippets)"),
|
|
13851
|
-
source:
|
|
13852
|
-
pr_url:
|
|
13853
|
-
review_resolution:
|
|
13854
|
-
limit:
|
|
13855
|
-
offset:
|
|
13954
|
+
source: z99.string().optional().describe("Review source: self-improve, manual, ci"),
|
|
13955
|
+
pr_url: z99.string().optional().describe("PR URL (reviews)"),
|
|
13956
|
+
review_resolution: z99.string().optional().describe("Resolution text (reviews)"),
|
|
13957
|
+
limit: z99.coerce.number().optional().describe("Max results per page (up to 500)"),
|
|
13958
|
+
offset: z99.coerce.number().optional().describe("Number of results to skip for pagination (list_my_bugs/list_my_features). Use next_offset from a prior response.")
|
|
13856
13959
|
}
|
|
13857
13960
|
},
|
|
13858
13961
|
async (input, extra) => {
|
|
@@ -13938,7 +14041,7 @@ function registerSupportConsolidated(server) {
|
|
|
13938
14041
|
}
|
|
13939
14042
|
|
|
13940
14043
|
// src/mcp/tools/diagnostics.ts
|
|
13941
|
-
import { z as
|
|
14044
|
+
import { z as z100 } from "zod";
|
|
13942
14045
|
function buildHandlers9() {
|
|
13943
14046
|
const tools = /* @__PURE__ */ new Map();
|
|
13944
14047
|
const fake = {
|
|
@@ -13959,21 +14062,21 @@ function registerDiagnostics(server) {
|
|
|
13959
14062
|
title: "Diagnostics",
|
|
13960
14063
|
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).`,
|
|
13961
14064
|
inputSchema: {
|
|
13962
|
-
action:
|
|
14065
|
+
action: z100.string().describe(`Diagnostic operation: ${toolNames.join(", ")}`),
|
|
13963
14066
|
// Pass-through params used by various sub-tools
|
|
13964
|
-
agent_id:
|
|
13965
|
-
name:
|
|
13966
|
-
new_name:
|
|
13967
|
-
query:
|
|
13968
|
-
format:
|
|
13969
|
-
limit:
|
|
13970
|
-
from_agent_id:
|
|
13971
|
-
to_agent_id:
|
|
13972
|
-
dry_run:
|
|
14067
|
+
agent_id: z100.string().optional().describe("Agent to probe (drift). Defaults to all agents."),
|
|
14068
|
+
name: z100.string().optional().describe("Employee name (rename_employee)"),
|
|
14069
|
+
new_name: z100.string().optional().describe("New employee name (rename_employee)"),
|
|
14070
|
+
query: z100.string().optional().describe("Search/filter query, or natural language for tool_search"),
|
|
14071
|
+
format: z100.string().optional().describe("Output format"),
|
|
14072
|
+
limit: z100.coerce.number().int().min(1).max(100).optional().describe("Max results for tool_search (default 20)"),
|
|
14073
|
+
from_agent_id: z100.string().optional().describe("Source agent ID to merge from (merge_agent_memories)"),
|
|
14074
|
+
to_agent_id: z100.string().optional().describe("Target agent ID to merge into (merge_agent_memories)"),
|
|
14075
|
+
dry_run: z100.boolean().optional().default(true).describe("Preview mode \u2014 show count without changing (merge_agent_memories). Default: true"),
|
|
13973
14076
|
// Steward params (absorbed from steward tool)
|
|
13974
|
-
operation:
|
|
13975
|
-
target:
|
|
13976
|
-
reason:
|
|
14077
|
+
operation: z100.string().optional().describe("Operation name for steward_check/steward_override"),
|
|
14078
|
+
target: z100.string().optional().describe("Target resource for steward_check/steward_override"),
|
|
14079
|
+
reason: z100.string().optional().describe("Override reason for steward_override")
|
|
13977
14080
|
}
|
|
13978
14081
|
},
|
|
13979
14082
|
async (input, extra) => {
|
|
@@ -14138,7 +14241,7 @@ async function handleMergeAgentMemories(input) {
|
|
|
14138
14241
|
}
|
|
14139
14242
|
async function handleSpawnFailures() {
|
|
14140
14243
|
try {
|
|
14141
|
-
const { getOrchestrationMetrics } = await import("./orchestration-events-
|
|
14244
|
+
const { getOrchestrationMetrics } = await import("./orchestration-events-KVNRNIPR.js");
|
|
14142
14245
|
const metrics = await getOrchestrationMetrics();
|
|
14143
14246
|
const c = metrics.counts;
|
|
14144
14247
|
const attempted = c.tmuxSpawnAttempted;
|
|
@@ -14240,7 +14343,7 @@ async function handleOrchestrationHealth() {
|
|
|
14240
14343
|
async function handleWorkMap() {
|
|
14241
14344
|
try {
|
|
14242
14345
|
const { getAgentLivenessReport } = await import("./agent-heartbeat-I5UPGXAU.js");
|
|
14243
|
-
const { classifyRole } = await import("./session-kill-telemetry-
|
|
14346
|
+
const { classifyRole } = await import("./session-kill-telemetry-2HSE7IGH.js");
|
|
14244
14347
|
const { buildSessionDeathSummary } = await import("./orchestration-health-read-EJWVUARG.js");
|
|
14245
14348
|
const { getPaneCwd } = await import("./lib/tmux-status.js");
|
|
14246
14349
|
const live = getAgentLivenessReport();
|
|
@@ -14375,7 +14478,7 @@ async function handleDrift(input) {
|
|
|
14375
14478
|
}
|
|
14376
14479
|
async function handleSteward(action, input) {
|
|
14377
14480
|
const gate = new StewardGate();
|
|
14378
|
-
const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-
|
|
14481
|
+
const { getActiveAgent: getActiveAgent2 } = await import("./active-agent-IUVRZOSF.js");
|
|
14379
14482
|
const inputAgent = input.agent_id;
|
|
14380
14483
|
const operation = input.operation;
|
|
14381
14484
|
const target = input.target;
|
|
@@ -14423,7 +14526,7 @@ async function handleSteward(action, input) {
|
|
|
14423
14526
|
}
|
|
14424
14527
|
|
|
14425
14528
|
// src/mcp/tools/dreaming.ts
|
|
14426
|
-
import { z as
|
|
14529
|
+
import { z as z101 } from "zod";
|
|
14427
14530
|
function registerDreaming(server) {
|
|
14428
14531
|
server.registerTool(
|
|
14429
14532
|
"dreaming",
|
|
@@ -14431,10 +14534,10 @@ function registerDreaming(server) {
|
|
|
14431
14534
|
title: "Dreaming",
|
|
14432
14535
|
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).",
|
|
14433
14536
|
inputSchema: {
|
|
14434
|
-
action:
|
|
14435
|
-
agent_id:
|
|
14436
|
-
hours:
|
|
14437
|
-
limit:
|
|
14537
|
+
action: z101.enum(["run", "status", "history"]).describe("Action to perform"),
|
|
14538
|
+
agent_id: z101.string().optional().describe("Agent to analyze. Defaults to calling agent."),
|
|
14539
|
+
hours: z101.coerce.number().min(1).max(720).optional().describe("Lookback window in hours (run). Default 24."),
|
|
14540
|
+
limit: z101.coerce.number().int().min(1).max(50).optional().describe("Max results for history. Default 10.")
|
|
14438
14541
|
}
|
|
14439
14542
|
},
|
|
14440
14543
|
async ({ action, agent_id, hours, limit }) => {
|
|
@@ -14557,7 +14660,7 @@ ${String(row.raw_text)}`
|
|
|
14557
14660
|
}
|
|
14558
14661
|
|
|
14559
14662
|
// src/mcp/tools/steward.ts
|
|
14560
|
-
import { z as
|
|
14663
|
+
import { z as z102 } from "zod";
|
|
14561
14664
|
function errorResult11(text5) {
|
|
14562
14665
|
return { content: [{ type: "text", text: text5 }], isError: true };
|
|
14563
14666
|
}
|
|
@@ -14569,12 +14672,12 @@ function registerSteward(server) {
|
|
|
14569
14672
|
title: "Steward Identity Gate",
|
|
14570
14673
|
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.",
|
|
14571
14674
|
inputSchema: {
|
|
14572
|
-
action:
|
|
14573
|
-
agent:
|
|
14574
|
-
operation:
|
|
14575
|
-
target:
|
|
14576
|
-
reason:
|
|
14577
|
-
limit:
|
|
14675
|
+
action: z102.enum(["check", "audit_log", "override"]).describe("Steward operation to perform"),
|
|
14676
|
+
agent: z102.string().optional().describe("Agent to check (defaults to calling agent for action=check)"),
|
|
14677
|
+
operation: z102.string().optional().describe("Operation name (required for check/override)"),
|
|
14678
|
+
target: z102.string().optional().describe("Target resource (required for check/override)"),
|
|
14679
|
+
reason: z102.string().optional().describe("Override reason (required for action=override)"),
|
|
14680
|
+
limit: z102.number().optional().describe("Max audit entries to return (default: 50)")
|
|
14578
14681
|
}
|
|
14579
14682
|
},
|
|
14580
14683
|
async (input) => {
|
|
@@ -14657,7 +14760,7 @@ function registerSteward(server) {
|
|
|
14657
14760
|
}
|
|
14658
14761
|
|
|
14659
14762
|
// src/mcp/tools/resonance.ts
|
|
14660
|
-
import { z as
|
|
14763
|
+
import { z as z103 } from "zod";
|
|
14661
14764
|
function text4(content, isError = false) {
|
|
14662
14765
|
return { content: [{ type: "text", text: content }], ...isError ? { isError: true } : {} };
|
|
14663
14766
|
}
|
|
@@ -14666,14 +14769,14 @@ function registerResonance(server) {
|
|
|
14666
14769
|
title: "Resonance Network",
|
|
14667
14770
|
description: "Co-activation network queries. Actions: hot_pairs (top co-activated memory pairs), neighbors (co-activation neighbors for a specific memory).",
|
|
14668
14771
|
inputSchema: {
|
|
14669
|
-
action:
|
|
14670
|
-
memory_id:
|
|
14671
|
-
entity_id:
|
|
14672
|
-
limit:
|
|
14772
|
+
action: z103.enum(["hot_pairs", "neighbors"]).describe("Resonance query type"),
|
|
14773
|
+
memory_id: z103.string().optional().describe("Memory ID for neighbors action"),
|
|
14774
|
+
entity_id: z103.string().optional().describe("Deprecated alias for memory_id on neighbors action"),
|
|
14775
|
+
limit: z103.number().optional().describe("Max results (default 20)")
|
|
14673
14776
|
}
|
|
14674
14777
|
}, async ({ action, memory_id, entity_id, limit }) => {
|
|
14675
14778
|
try {
|
|
14676
|
-
const { getHotPairs, getCoActivationNeighbors } = await import("./co-activation-
|
|
14779
|
+
const { getHotPairs, getCoActivationNeighbors } = await import("./co-activation-7F3J2GC7.js");
|
|
14677
14780
|
if (action === "hot_pairs") {
|
|
14678
14781
|
const pairs = await getHotPairs(limit ?? 20);
|
|
14679
14782
|
if (pairs.length === 0) return text4("No co-activation data yet. Pairs are recorded as memories are accessed together in searches.");
|