@vibesdotdev/mcp 0.0.0-stage → 1.0.0-rc.1
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/LICENSE +18 -0
- package/README.md +96 -2
- package/dist/adapters/auth-middleware.d.ts +68 -0
- package/dist/adapters/auth-middleware.d.ts.map +1 -0
- package/dist/adapters/auth-middleware.js +161 -0
- package/dist/adapters/auth-middleware.js.map +1 -0
- package/dist/adapters/compatibility.d.ts +20 -0
- package/dist/adapters/compatibility.d.ts.map +1 -0
- package/dist/adapters/compatibility.js +57 -0
- package/dist/adapters/compatibility.js.map +1 -0
- package/dist/adapters/host-context.consumer.d.ts +12 -0
- package/dist/adapters/host-context.consumer.d.ts.map +1 -0
- package/dist/adapters/host-context.consumer.js +10 -0
- package/dist/adapters/host-context.consumer.js.map +1 -0
- package/dist/adapters/host-context.d.ts +32 -0
- package/dist/adapters/host-context.d.ts.map +1 -0
- package/dist/adapters/host-context.js +17 -0
- package/dist/adapters/host-context.js.map +1 -0
- package/dist/adapters/index.d.ts +12 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/index.js +13 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/adapters/mcp/ambient-envelope.d.ts +26 -0
- package/dist/adapters/mcp/ambient-envelope.d.ts.map +1 -0
- package/dist/adapters/mcp/ambient-envelope.js +70 -0
- package/dist/adapters/mcp/ambient-envelope.js.map +1 -0
- package/dist/adapters/mcp/catalog.d.ts +15 -0
- package/dist/adapters/mcp/catalog.d.ts.map +1 -0
- package/dist/adapters/mcp/catalog.js +26 -0
- package/dist/adapters/mcp/catalog.js.map +1 -0
- package/dist/adapters/mcp/connection-identity.d.ts +81 -0
- package/dist/adapters/mcp/connection-identity.d.ts.map +1 -0
- package/dist/adapters/mcp/connection-identity.js +114 -0
- package/dist/adapters/mcp/connection-identity.js.map +1 -0
- package/dist/adapters/mcp/context.d.ts +137 -0
- package/dist/adapters/mcp/context.d.ts.map +1 -0
- package/dist/adapters/mcp/context.js +230 -0
- package/dist/adapters/mcp/context.js.map +1 -0
- package/dist/adapters/mcp/formatters.d.ts +41 -0
- package/dist/adapters/mcp/formatters.d.ts.map +1 -0
- package/dist/adapters/mcp/formatters.js +102 -0
- package/dist/adapters/mcp/formatters.js.map +1 -0
- package/dist/adapters/mcp/from-api-endpoint.d.ts +59 -0
- package/dist/adapters/mcp/from-api-endpoint.d.ts.map +1 -0
- package/dist/adapters/mcp/from-api-endpoint.js +206 -0
- package/dist/adapters/mcp/from-api-endpoint.js.map +1 -0
- package/dist/adapters/mcp/generation-contract.d.ts +5 -0
- package/dist/adapters/mcp/generation-contract.d.ts.map +1 -0
- package/dist/adapters/mcp/generation-contract.js +34 -0
- package/dist/adapters/mcp/generation-contract.js.map +1 -0
- package/dist/adapters/mcp/host-registry.d.ts +159 -0
- package/dist/adapters/mcp/host-registry.d.ts.map +1 -0
- package/dist/adapters/mcp/host-registry.js +237 -0
- package/dist/adapters/mcp/host-registry.js.map +1 -0
- package/dist/adapters/mcp/index.d.ts +12 -0
- package/dist/adapters/mcp/index.d.ts.map +1 -0
- package/dist/adapters/mcp/index.js +17 -0
- package/dist/adapters/mcp/index.js.map +1 -0
- package/dist/adapters/mcp/isolated-notice.d.ts +111 -0
- package/dist/adapters/mcp/isolated-notice.d.ts.map +1 -0
- package/dist/adapters/mcp/isolated-notice.js +217 -0
- package/dist/adapters/mcp/isolated-notice.js.map +1 -0
- package/dist/adapters/mcp/json-rpc.d.ts +16 -0
- package/dist/adapters/mcp/json-rpc.d.ts.map +1 -0
- package/dist/adapters/mcp/json-rpc.js +32 -0
- package/dist/adapters/mcp/json-rpc.js.map +1 -0
- package/dist/adapters/mcp/local-origin.d.ts +18 -0
- package/dist/adapters/mcp/local-origin.d.ts.map +1 -0
- package/dist/adapters/mcp/local-origin.js +37 -0
- package/dist/adapters/mcp/local-origin.js.map +1 -0
- package/dist/adapters/mcp/logging/mcp-cloud.descriptor.d.ts +11 -0
- package/dist/adapters/mcp/logging/mcp-cloud.descriptor.d.ts.map +1 -0
- package/dist/adapters/mcp/logging/mcp-cloud.descriptor.js +21 -0
- package/dist/adapters/mcp/logging/mcp-cloud.descriptor.js.map +1 -0
- package/dist/adapters/mcp/logging/mcp-http.descriptor.d.ts +10 -0
- package/dist/adapters/mcp/logging/mcp-http.descriptor.d.ts.map +1 -0
- package/dist/adapters/mcp/logging/mcp-http.descriptor.js +20 -0
- package/dist/adapters/mcp/logging/mcp-http.descriptor.js.map +1 -0
- package/dist/adapters/mcp/logging/mcp-server.descriptor.d.ts +9 -0
- package/dist/adapters/mcp/logging/mcp-server.descriptor.d.ts.map +1 -0
- package/dist/adapters/mcp/logging/mcp-server.descriptor.js +25 -0
- package/dist/adapters/mcp/logging/mcp-server.descriptor.js.map +1 -0
- package/dist/adapters/mcp/logging/mcp-stdio.descriptor.d.ts +10 -0
- package/dist/adapters/mcp/logging/mcp-stdio.descriptor.d.ts.map +1 -0
- package/dist/adapters/mcp/logging/mcp-stdio.descriptor.js +20 -0
- package/dist/adapters/mcp/logging/mcp-stdio.descriptor.js.map +1 -0
- package/dist/adapters/mcp/mcp-http-session.d.ts +140 -0
- package/dist/adapters/mcp/mcp-http-session.d.ts.map +1 -0
- package/dist/adapters/mcp/mcp-http-session.js +797 -0
- package/dist/adapters/mcp/mcp-http-session.js.map +1 -0
- package/dist/adapters/mcp/mcp-wire-name.d.ts +9 -0
- package/dist/adapters/mcp/mcp-wire-name.d.ts.map +1 -0
- package/dist/adapters/mcp/mcp-wire-name.js +52 -0
- package/dist/adapters/mcp/mcp-wire-name.js.map +1 -0
- package/dist/adapters/mcp/projection-doctor.d.ts +101 -0
- package/dist/adapters/mcp/projection-doctor.d.ts.map +1 -0
- package/dist/adapters/mcp/projection-doctor.js +285 -0
- package/dist/adapters/mcp/projection-doctor.js.map +1 -0
- package/dist/adapters/mcp/projection.d.ts +36 -0
- package/dist/adapters/mcp/projection.d.ts.map +1 -0
- package/dist/adapters/mcp/projection.js +136 -0
- package/dist/adapters/mcp/projection.js.map +1 -0
- package/dist/adapters/mcp/prompts/continuity-wake.prompt.descriptor.d.ts +113 -0
- package/dist/adapters/mcp/prompts/continuity-wake.prompt.descriptor.d.ts.map +1 -0
- package/dist/adapters/mcp/prompts/continuity-wake.prompt.descriptor.js +15 -0
- package/dist/adapters/mcp/prompts/continuity-wake.prompt.descriptor.js.map +1 -0
- package/dist/adapters/mcp/prompts/empty-tool-kind.prompt.descriptor.d.ts +113 -0
- package/dist/adapters/mcp/prompts/empty-tool-kind.prompt.descriptor.d.ts.map +1 -0
- package/dist/adapters/mcp/prompts/empty-tool-kind.prompt.descriptor.js +18 -0
- package/dist/adapters/mcp/prompts/empty-tool-kind.prompt.descriptor.js.map +1 -0
- package/dist/adapters/mcp/prompts/index.d.ts +113 -0
- package/dist/adapters/mcp/prompts/index.d.ts.map +1 -0
- package/dist/adapters/mcp/prompts/index.js +24 -0
- package/dist/adapters/mcp/prompts/index.js.map +1 -0
- package/dist/adapters/mcp/prompts/isolated-runtime.prompt.descriptor.d.ts +114 -0
- package/dist/adapters/mcp/prompts/isolated-runtime.prompt.descriptor.d.ts.map +1 -0
- package/dist/adapters/mcp/prompts/isolated-runtime.prompt.descriptor.js +37 -0
- package/dist/adapters/mcp/prompts/isolated-runtime.prompt.descriptor.js.map +1 -0
- package/dist/adapters/mcp/prompts/local-tools.prompt.descriptor.d.ts +113 -0
- package/dist/adapters/mcp/prompts/local-tools.prompt.descriptor.d.ts.map +1 -0
- package/dist/adapters/mcp/prompts/local-tools.prompt.descriptor.js +20 -0
- package/dist/adapters/mcp/prompts/local-tools.prompt.descriptor.js.map +1 -0
- package/dist/adapters/mcp/prompts/max-tools.prompt.descriptor.d.ts +113 -0
- package/dist/adapters/mcp/prompts/max-tools.prompt.descriptor.d.ts.map +1 -0
- package/dist/adapters/mcp/prompts/max-tools.prompt.descriptor.js +20 -0
- package/dist/adapters/mcp/prompts/max-tools.prompt.descriptor.js.map +1 -0
- package/dist/adapters/mcp/prompts/private-runtime.prompt.descriptor.d.ts +114 -0
- package/dist/adapters/mcp/prompts/private-runtime.prompt.descriptor.d.ts.map +1 -0
- package/dist/adapters/mcp/prompts/private-runtime.prompt.descriptor.js +21 -0
- package/dist/adapters/mcp/prompts/private-runtime.prompt.descriptor.js.map +1 -0
- package/dist/adapters/mcp/prompts/registration-failure.prompt.descriptor.d.ts +113 -0
- package/dist/adapters/mcp/prompts/registration-failure.prompt.descriptor.d.ts.map +1 -0
- package/dist/adapters/mcp/prompts/registration-failure.prompt.descriptor.js +19 -0
- package/dist/adapters/mcp/prompts/registration-failure.prompt.descriptor.js.map +1 -0
- package/dist/adapters/mcp/prompts/required-checklist.prompt.descriptor.d.ts +113 -0
- package/dist/adapters/mcp/prompts/required-checklist.prompt.descriptor.d.ts.map +1 -0
- package/dist/adapters/mcp/prompts/required-checklist.prompt.descriptor.js +18 -0
- package/dist/adapters/mcp/prompts/required-checklist.prompt.descriptor.js.map +1 -0
- package/dist/adapters/mcp/prompts/required-tools-missing.prompt.descriptor.d.ts +113 -0
- package/dist/adapters/mcp/prompts/required-tools-missing.prompt.descriptor.d.ts.map +1 -0
- package/dist/adapters/mcp/prompts/required-tools-missing.prompt.descriptor.js +19 -0
- package/dist/adapters/mcp/prompts/required-tools-missing.prompt.descriptor.js.map +1 -0
- package/dist/adapters/mcp/prompts/unknown-client.prompt.descriptor.d.ts +113 -0
- package/dist/adapters/mcp/prompts/unknown-client.prompt.descriptor.d.ts.map +1 -0
- package/dist/adapters/mcp/prompts/unknown-client.prompt.descriptor.js +18 -0
- package/dist/adapters/mcp/prompts/unknown-client.prompt.descriptor.js.map +1 -0
- package/dist/adapters/mcp/request-context.d.ts +28 -0
- package/dist/adapters/mcp/request-context.d.ts.map +1 -0
- package/dist/adapters/mcp/request-context.js +49 -0
- package/dist/adapters/mcp/request-context.js.map +1 -0
- package/dist/adapters/mcp/roster-announcer.d.ts +3 -0
- package/dist/adapters/mcp/roster-announcer.d.ts.map +1 -0
- package/dist/adapters/mcp/roster-announcer.js +22 -0
- package/dist/adapters/mcp/roster-announcer.js.map +1 -0
- package/dist/adapters/mcp/sampling-context.d.ts +12 -0
- package/dist/adapters/mcp/sampling-context.d.ts.map +1 -0
- package/dist/adapters/mcp/sampling-context.js +30 -0
- package/dist/adapters/mcp/sampling-context.js.map +1 -0
- package/dist/adapters/mcp/sampling.d.ts +17 -0
- package/dist/adapters/mcp/sampling.d.ts.map +1 -0
- package/dist/adapters/mcp/sampling.js +43 -0
- package/dist/adapters/mcp/sampling.js.map +1 -0
- package/dist/adapters/mcp/schemas/index.d.ts +37 -0
- package/dist/adapters/mcp/schemas/index.d.ts.map +1 -0
- package/dist/adapters/mcp/schemas/index.js +5 -0
- package/dist/adapters/mcp/schemas/index.js.map +1 -0
- package/dist/adapters/mcp/schemas/tool-selection.d.ts +12 -0
- package/dist/adapters/mcp/schemas/tool-selection.d.ts.map +1 -0
- package/dist/adapters/mcp/schemas/tool-selection.js +2 -0
- package/dist/adapters/mcp/schemas/tool-selection.js.map +1 -0
- package/dist/adapters/mcp/serve-identity.d.ts +64 -0
- package/dist/adapters/mcp/serve-identity.d.ts.map +1 -0
- package/dist/adapters/mcp/serve-identity.js +220 -0
- package/dist/adapters/mcp/serve-identity.js.map +1 -0
- package/dist/adapters/mcp/server.consumer.d.ts +5 -0
- package/dist/adapters/mcp/server.consumer.d.ts.map +1 -0
- package/dist/adapters/mcp/server.consumer.js +300 -0
- package/dist/adapters/mcp/server.consumer.js.map +1 -0
- package/dist/adapters/mcp/server.d.ts +56 -0
- package/dist/adapters/mcp/server.d.ts.map +1 -0
- package/dist/adapters/mcp/server.js +1423 -0
- package/dist/adapters/mcp/server.js.map +1 -0
- package/dist/adapters/mcp/stale-body.consumer.d.ts +85 -0
- package/dist/adapters/mcp/stale-body.consumer.d.ts.map +1 -0
- package/dist/adapters/mcp/stale-body.consumer.js +183 -0
- package/dist/adapters/mcp/stale-body.consumer.js.map +1 -0
- package/dist/adapters/mcp/startup-refusal.d.ts +8 -0
- package/dist/adapters/mcp/startup-refusal.d.ts.map +1 -0
- package/dist/adapters/mcp/startup-refusal.js +141 -0
- package/dist/adapters/mcp/startup-refusal.js.map +1 -0
- package/dist/adapters/mcp/stdio-relay.d.ts +232 -0
- package/dist/adapters/mcp/stdio-relay.d.ts.map +1 -0
- package/dist/adapters/mcp/stdio-relay.js +1169 -0
- package/dist/adapters/mcp/stdio-relay.js.map +1 -0
- package/dist/adapters/mcp/tool-audit-live.d.ts +109 -0
- package/dist/adapters/mcp/tool-audit-live.d.ts.map +1 -0
- package/dist/adapters/mcp/tool-audit-live.js +538 -0
- package/dist/adapters/mcp/tool-audit-live.js.map +1 -0
- package/dist/adapters/mcp/tool-audit.d.ts +44 -0
- package/dist/adapters/mcp/tool-audit.d.ts.map +1 -0
- package/dist/adapters/mcp/tool-audit.js +168 -0
- package/dist/adapters/mcp/tool-audit.js.map +1 -0
- package/dist/adapters/mcp/tool-catalog.d.ts +179 -0
- package/dist/adapters/mcp/tool-catalog.d.ts.map +1 -0
- package/dist/adapters/mcp/tool-catalog.js +330 -0
- package/dist/adapters/mcp/tool-catalog.js.map +1 -0
- package/dist/adapters/mcp/tool-selection.d.ts +77 -0
- package/dist/adapters/mcp/tool-selection.d.ts.map +1 -0
- package/dist/adapters/mcp/tool-selection.js +266 -0
- package/dist/adapters/mcp/tool-selection.js.map +1 -0
- package/dist/adapters/mcp/transport-registry.d.ts +5 -0
- package/dist/adapters/mcp/transport-registry.d.ts.map +1 -0
- package/dist/adapters/mcp/transport-registry.js +13 -0
- package/dist/adapters/mcp/transport-registry.js.map +1 -0
- package/dist/adapters/mcp/trust-tag.d.ts +69 -0
- package/dist/adapters/mcp/trust-tag.d.ts.map +1 -0
- package/dist/adapters/mcp/trust-tag.js +120 -0
- package/dist/adapters/mcp/trust-tag.js.map +1 -0
- package/dist/adapters/mcp/vibes-types.d.ts +115 -0
- package/dist/adapters/mcp/vibes-types.d.ts.map +1 -0
- package/dist/adapters/mcp/vibes-types.js +7 -0
- package/dist/adapters/mcp/vibes-types.js.map +1 -0
- package/dist/adapters/mcp/web-handler.d.ts +49 -0
- package/dist/adapters/mcp/web-handler.d.ts.map +1 -0
- package/dist/adapters/mcp/web-handler.js +129 -0
- package/dist/adapters/mcp/web-handler.js.map +1 -0
- package/dist/adapters/session-id.d.ts +3 -0
- package/dist/adapters/session-id.d.ts.map +1 -0
- package/dist/adapters/session-id.js +42 -0
- package/dist/adapters/session-id.js.map +1 -0
- package/dist/adapters/transport-bun-http.d.ts +39 -0
- package/dist/adapters/transport-bun-http.d.ts.map +1 -0
- package/dist/adapters/transport-bun-http.js +42 -0
- package/dist/adapters/transport-bun-http.js.map +1 -0
- package/dist/adapters/types.d.ts +135 -0
- package/dist/adapters/types.d.ts.map +1 -0
- package/dist/adapters/types.js +2 -0
- package/dist/adapters/types.js.map +1 -0
- package/dist/adapters/web-compatibility.d.ts +6 -0
- package/dist/adapters/web-compatibility.d.ts.map +1 -0
- package/dist/adapters/web-compatibility.js +13 -0
- package/dist/adapters/web-compatibility.js.map +1 -0
- package/dist/adapters/zod-mcp.d.ts +139 -0
- package/dist/adapters/zod-mcp.d.ts.map +1 -0
- package/dist/adapters/zod-mcp.js +617 -0
- package/dist/adapters/zod-mcp.js.map +1 -0
- package/dist/cli/mcp/audit/dev.audit.tools.descriptor.d.ts +15 -0
- package/dist/cli/mcp/audit/dev.audit.tools.descriptor.d.ts.map +1 -0
- package/dist/cli/mcp/audit/dev.audit.tools.descriptor.js +58 -0
- package/dist/cli/mcp/audit/dev.audit.tools.descriptor.js.map +1 -0
- package/dist/cli/mcp/audit/dev.audit.tools.impl.consumer.d.ts +6 -0
- package/dist/cli/mcp/audit/dev.audit.tools.impl.consumer.d.ts.map +1 -0
- package/dist/cli/mcp/audit/dev.audit.tools.impl.consumer.js +180 -0
- package/dist/cli/mcp/audit/dev.audit.tools.impl.consumer.js.map +1 -0
- package/dist/cli/mcp/lifecycle/dev.mcp.restart.descriptor.d.ts +22 -0
- package/dist/cli/mcp/lifecycle/dev.mcp.restart.descriptor.d.ts.map +1 -0
- package/dist/cli/mcp/lifecycle/dev.mcp.restart.descriptor.js +19 -0
- package/dist/cli/mcp/lifecycle/dev.mcp.restart.descriptor.js.map +1 -0
- package/dist/cli/mcp/lifecycle/dev.mcp.restart.impl.consumer.d.ts +23 -0
- package/dist/cli/mcp/lifecycle/dev.mcp.restart.impl.consumer.d.ts.map +1 -0
- package/dist/cli/mcp/lifecycle/dev.mcp.restart.impl.consumer.js +41 -0
- package/dist/cli/mcp/lifecycle/dev.mcp.restart.impl.consumer.js.map +1 -0
- package/dist/cli/mcp/lifecycle/dev.mcp.serve.descriptor.d.ts +75 -0
- package/dist/cli/mcp/lifecycle/dev.mcp.serve.descriptor.d.ts.map +1 -0
- package/dist/cli/mcp/lifecycle/dev.mcp.serve.descriptor.js +84 -0
- package/dist/cli/mcp/lifecycle/dev.mcp.serve.descriptor.js.map +1 -0
- package/dist/cli/mcp/lifecycle/dev.mcp.start.descriptor.d.ts +35 -0
- package/dist/cli/mcp/lifecycle/dev.mcp.start.descriptor.d.ts.map +1 -0
- package/dist/cli/mcp/lifecycle/dev.mcp.start.descriptor.js +28 -0
- package/dist/cli/mcp/lifecycle/dev.mcp.start.descriptor.js.map +1 -0
- package/dist/cli/mcp/lifecycle/dev.mcp.start.impl.consumer.d.ts +11 -0
- package/dist/cli/mcp/lifecycle/dev.mcp.start.impl.consumer.d.ts.map +1 -0
- package/dist/cli/mcp/lifecycle/dev.mcp.start.impl.consumer.js +47 -0
- package/dist/cli/mcp/lifecycle/dev.mcp.start.impl.consumer.js.map +1 -0
- package/dist/cli/mcp/lifecycle/dev.mcp.stop.descriptor.d.ts +18 -0
- package/dist/cli/mcp/lifecycle/dev.mcp.stop.descriptor.d.ts.map +1 -0
- package/dist/cli/mcp/lifecycle/dev.mcp.stop.descriptor.js +18 -0
- package/dist/cli/mcp/lifecycle/dev.mcp.stop.descriptor.js.map +1 -0
- package/dist/cli/mcp/lifecycle/dev.mcp.stop.impl.consumer.d.ts +12 -0
- package/dist/cli/mcp/lifecycle/dev.mcp.stop.impl.consumer.d.ts.map +1 -0
- package/dist/cli/mcp/lifecycle/dev.mcp.stop.impl.consumer.js +17 -0
- package/dist/cli/mcp/lifecycle/dev.mcp.stop.impl.consumer.js.map +1 -0
- package/dist/cli/mcp/management/dev.mcp.install.descriptor.d.ts +41 -0
- package/dist/cli/mcp/management/dev.mcp.install.descriptor.d.ts.map +1 -0
- package/dist/cli/mcp/management/dev.mcp.install.descriptor.js +49 -0
- package/dist/cli/mcp/management/dev.mcp.install.descriptor.js.map +1 -0
- package/dist/cli/mcp/management/dev.mcp.install.impl.consumer.d.ts +16 -0
- package/dist/cli/mcp/management/dev.mcp.install.impl.consumer.d.ts.map +1 -0
- package/dist/cli/mcp/management/dev.mcp.install.impl.consumer.js +244 -0
- package/dist/cli/mcp/management/dev.mcp.install.impl.consumer.js.map +1 -0
- package/dist/cli/mcp/management/dev.mcp.list.descriptor.d.ts +22 -0
- package/dist/cli/mcp/management/dev.mcp.list.descriptor.d.ts.map +1 -0
- package/dist/cli/mcp/management/dev.mcp.list.descriptor.js +24 -0
- package/dist/cli/mcp/management/dev.mcp.list.descriptor.js.map +1 -0
- package/dist/cli/mcp/management/dev.mcp.list.impl.consumer.d.ts +29 -0
- package/dist/cli/mcp/management/dev.mcp.list.impl.consumer.d.ts.map +1 -0
- package/dist/cli/mcp/management/dev.mcp.list.impl.consumer.js +127 -0
- package/dist/cli/mcp/management/dev.mcp.list.impl.consumer.js.map +1 -0
- package/dist/cli/mcp/management/dev.mcp.status.descriptor.d.ts +48 -0
- package/dist/cli/mcp/management/dev.mcp.status.descriptor.d.ts.map +1 -0
- package/dist/cli/mcp/management/dev.mcp.status.descriptor.js +56 -0
- package/dist/cli/mcp/management/dev.mcp.status.descriptor.js.map +1 -0
- package/dist/cli/mcp/management/dev.mcp.status.impl.consumer.d.ts +9 -0
- package/dist/cli/mcp/management/dev.mcp.status.impl.consumer.d.ts.map +1 -0
- package/dist/cli/mcp/management/dev.mcp.status.impl.consumer.js +253 -0
- package/dist/cli/mcp/management/dev.mcp.status.impl.consumer.js.map +1 -0
- package/dist/cli/mcp/management/install-helpers.d.ts +26 -0
- package/dist/cli/mcp/management/install-helpers.d.ts.map +1 -0
- package/dist/cli/mcp/management/install-helpers.js +95 -0
- package/dist/cli/mcp/management/install-helpers.js.map +1 -0
- package/dist/cli/mcp/management/process-audit.impl.consumer.d.ts +38 -0
- package/dist/cli/mcp/management/process-audit.impl.consumer.d.ts.map +1 -0
- package/dist/cli/mcp/management/process-audit.impl.consumer.js +145 -0
- package/dist/cli/mcp/management/process-audit.impl.consumer.js.map +1 -0
- package/dist/cli/mcp/management/rules-debt-summary.impl.consumer.d.ts +21 -0
- package/dist/cli/mcp/management/rules-debt-summary.impl.consumer.d.ts.map +1 -0
- package/dist/cli/mcp/management/rules-debt-summary.impl.consumer.js +82 -0
- package/dist/cli/mcp/management/rules-debt-summary.impl.consumer.js.map +1 -0
- package/dist/cli/mcp/management/status-doctor.d.ts +22 -0
- package/dist/cli/mcp/management/status-doctor.d.ts.map +1 -0
- package/dist/cli/mcp/management/status-doctor.js +153 -0
- package/dist/cli/mcp/management/status-doctor.js.map +1 -0
- package/dist/cli/mcp/schemas/status-doctor.d.ts +75 -0
- package/dist/cli/mcp/schemas/status-doctor.d.ts.map +1 -0
- package/dist/cli/mcp/schemas/status-doctor.js +2 -0
- package/dist/cli/mcp/schemas/status-doctor.js.map +1 -0
- package/dist/cli/mcp/support/host-port.d.ts +31 -0
- package/dist/cli/mcp/support/host-port.d.ts.map +1 -0
- package/dist/cli/mcp/support/host-port.js +31 -0
- package/dist/cli/mcp/support/host-port.js.map +1 -0
- package/dist/cli/mcp/support/server-process.impl.consumer.d.ts +24 -0
- package/dist/cli/mcp/support/server-process.impl.consumer.d.ts.map +1 -0
- package/dist/cli/mcp/support/server-process.impl.consumer.js +86 -0
- package/dist/cli/mcp/support/server-process.impl.consumer.js.map +1 -0
- package/dist/cli/mcp/support/status-doctor.d.ts +33 -0
- package/dist/cli/mcp/support/status-doctor.d.ts.map +1 -0
- package/dist/cli/mcp/support/status-doctor.js +104 -0
- package/dist/cli/mcp/support/status-doctor.js.map +1 -0
- package/dist/cli/print.d.ts +12 -0
- package/dist/cli/print.d.ts.map +1 -0
- package/dist/cli/print.js +25 -0
- package/dist/cli/print.js.map +1 -0
- package/dist/cli/surface-mcp/client-connection-identity.consumer.d.ts +19 -0
- package/dist/cli/surface-mcp/client-connection-identity.consumer.d.ts.map +1 -0
- package/dist/cli/surface-mcp/client-connection-identity.consumer.js +53 -0
- package/dist/cli/surface-mcp/client-connection-identity.consumer.js.map +1 -0
- package/dist/cli/surface-mcp/dev.mcp.serve.impl.cloud.d.ts +7 -0
- package/dist/cli/surface-mcp/dev.mcp.serve.impl.cloud.d.ts.map +1 -0
- package/dist/cli/surface-mcp/dev.mcp.serve.impl.cloud.js +345 -0
- package/dist/cli/surface-mcp/dev.mcp.serve.impl.cloud.js.map +1 -0
- package/dist/cli/surface-mcp/dev.mcp.serve.impl.consumer.d.ts +12 -0
- package/dist/cli/surface-mcp/dev.mcp.serve.impl.consumer.d.ts.map +1 -0
- package/dist/cli/surface-mcp/dev.mcp.serve.impl.consumer.js +657 -0
- package/dist/cli/surface-mcp/dev.mcp.serve.impl.consumer.js.map +1 -0
- package/dist/cli/surface-mcp/local-dev-flag.d.ts +24 -0
- package/dist/cli/surface-mcp/local-dev-flag.d.ts.map +1 -0
- package/dist/cli/surface-mcp/local-dev-flag.js +37 -0
- package/dist/cli/surface-mcp/local-dev-flag.js.map +1 -0
- package/dist/cli/surface-mcp/shared-host-startup.d.ts +14 -0
- package/dist/cli/surface-mcp/shared-host-startup.d.ts.map +1 -0
- package/dist/cli/surface-mcp/shared-host-startup.js +46 -0
- package/dist/cli/surface-mcp/shared-host-startup.js.map +1 -0
- package/dist/cli/surface-mcp/stdio-relay-transport.d.ts +2 -0
- package/dist/cli/surface-mcp/stdio-relay-transport.d.ts.map +1 -0
- package/dist/cli/surface-mcp/stdio-relay-transport.js +21 -0
- package/dist/cli/surface-mcp/stdio-relay-transport.js.map +1 -0
- package/dist/cli/surface-mcp/teardown.d.ts +17 -0
- package/dist/cli/surface-mcp/teardown.d.ts.map +1 -0
- package/dist/cli/surface-mcp/teardown.js +28 -0
- package/dist/cli/surface-mcp/teardown.js.map +1 -0
- package/dist/client.d.ts +49 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +131 -0
- package/dist/client.js.map +1 -0
- package/dist/config/load.d.ts +6 -0
- package/dist/config/load.d.ts.map +1 -0
- package/dist/config/load.js +18 -0
- package/dist/config/load.js.map +1 -0
- package/dist/config/mcp.config.descriptor.d.ts +108 -0
- package/dist/config/mcp.config.descriptor.d.ts.map +1 -0
- package/dist/config/mcp.config.descriptor.js +63 -0
- package/dist/config/mcp.config.descriptor.js.map +1 -0
- package/dist/docs/mcp.docs.descriptor.d.ts +4 -0
- package/dist/docs/mcp.docs.descriptor.d.ts.map +1 -0
- package/dist/docs/mcp.docs.descriptor.js +44 -0
- package/dist/docs/mcp.docs.descriptor.js.map +1 -0
- package/dist/docs/prompts.docs.descriptor.d.ts +4 -0
- package/dist/docs/prompts.docs.descriptor.d.ts.map +1 -0
- package/dist/docs/prompts.docs.descriptor.js +130 -0
- package/dist/docs/prompts.docs.descriptor.js.map +1 -0
- package/dist/docs/resources.docs.descriptor.d.ts +4 -0
- package/dist/docs/resources.docs.descriptor.d.ts.map +1 -0
- package/dist/docs/resources.docs.descriptor.js +390 -0
- package/dist/docs/resources.docs.descriptor.js.map +1 -0
- package/dist/docs/server.docs.descriptor.d.ts +4 -0
- package/dist/docs/server.docs.descriptor.d.ts.map +1 -0
- package/dist/docs/server.docs.descriptor.js +383 -0
- package/dist/docs/server.docs.descriptor.js.map +1 -0
- package/dist/docs/tools.docs.descriptor.d.ts +4 -0
- package/dist/docs/tools.docs.descriptor.d.ts.map +1 -0
- package/dist/docs/tools.docs.descriptor.js +316 -0
- package/dist/docs/tools.docs.descriptor.js.map +1 -0
- package/dist/harness-identity.descriptors.d.ts +11 -0
- package/dist/harness-identity.descriptors.d.ts.map +1 -0
- package/dist/harness-identity.descriptors.js +41 -0
- package/dist/harness-identity.descriptors.js.map +1 -0
- package/dist/index.d.ts +36 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +36 -0
- package/dist/index.js.map +1 -0
- package/dist/kinds/harness-identity.kind.d.ts +3 -0
- package/dist/kinds/harness-identity.kind.d.ts.map +1 -0
- package/dist/kinds/harness-identity.kind.js +16 -0
- package/dist/kinds/harness-identity.kind.js.map +1 -0
- package/dist/kinds/sampling.kind.d.ts +15 -0
- package/dist/kinds/sampling.kind.d.ts.map +1 -0
- package/dist/kinds/sampling.kind.js +24 -0
- package/dist/kinds/sampling.kind.js.map +1 -0
- package/dist/lifecycle-repeat.d.ts +23 -0
- package/dist/lifecycle-repeat.d.ts.map +1 -0
- package/dist/lifecycle-repeat.js +21 -0
- package/dist/lifecycle-repeat.js.map +1 -0
- package/dist/mcp/dev.mcp.descriptor.d.ts +18 -0
- package/dist/mcp/dev.mcp.descriptor.d.ts.map +1 -0
- package/dist/mcp/dev.mcp.descriptor.js +18 -0
- package/dist/mcp/dev.mcp.descriptor.js.map +1 -0
- package/dist/mcp/index.d.ts +20 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +19 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/mcp.plugin.d.ts +9 -0
- package/dist/mcp/mcp.plugin.d.ts.map +1 -0
- package/dist/mcp/mcp.plugin.js +59 -0
- package/dist/mcp/mcp.plugin.js.map +1 -0
- package/dist/mcp-client.plugin.d.ts +4 -0
- package/dist/mcp-client.plugin.d.ts.map +1 -0
- package/dist/mcp-client.plugin.js +13 -0
- package/dist/mcp-client.plugin.js.map +1 -0
- package/dist/mcp.client.descriptor.d.ts +27 -0
- package/dist/mcp.client.descriptor.d.ts.map +1 -0
- package/dist/mcp.client.descriptor.js +7 -0
- package/dist/mcp.client.descriptor.js.map +1 -0
- package/dist/mcp.consumer.plugin.d.ts +4 -0
- package/dist/mcp.consumer.plugin.d.ts.map +1 -0
- package/dist/mcp.consumer.plugin.js +19 -0
- package/dist/mcp.consumer.plugin.js.map +1 -0
- package/dist/mcp.runtime.plugin.d.ts +10 -0
- package/dist/mcp.runtime.plugin.d.ts.map +1 -0
- package/dist/mcp.runtime.plugin.js +40 -0
- package/dist/mcp.runtime.plugin.js.map +1 -0
- package/dist/root-state.d.ts +3 -0
- package/dist/root-state.d.ts.map +1 -0
- package/dist/root-state.js +3 -0
- package/dist/root-state.js.map +1 -0
- package/dist/schemas/api-endpoint.d.ts +12 -0
- package/dist/schemas/api-endpoint.d.ts.map +1 -0
- package/dist/schemas/api-endpoint.js +11 -0
- package/dist/schemas/api-endpoint.js.map +1 -0
- package/dist/schemas/audit.d.ts +172 -0
- package/dist/schemas/audit.d.ts.map +1 -0
- package/dist/schemas/audit.js +82 -0
- package/dist/schemas/audit.js.map +1 -0
- package/dist/schemas/harness-identity.d.ts +41 -0
- package/dist/schemas/harness-identity.d.ts.map +1 -0
- package/dist/schemas/harness-identity.js +19 -0
- package/dist/schemas/harness-identity.js.map +1 -0
- package/dist/schemas/host-adapters.d.ts +14 -0
- package/dist/schemas/host-adapters.d.ts.map +1 -0
- package/dist/schemas/host-adapters.js +7 -0
- package/dist/schemas/host-adapters.js.map +1 -0
- package/dist/schemas/projection.d.ts +10 -0
- package/dist/schemas/projection.d.ts.map +1 -0
- package/dist/schemas/projection.js +9 -0
- package/dist/schemas/projection.js.map +1 -0
- package/dist/schemas/tool.d.ts +8 -0
- package/dist/schemas/tool.d.ts.map +1 -0
- package/dist/schemas/tool.js +8 -0
- package/dist/schemas/tool.js.map +1 -0
- package/dist/surface-mcp/build-provenance.d.ts +67 -0
- package/dist/surface-mcp/build-provenance.d.ts.map +1 -0
- package/dist/surface-mcp/build-provenance.js +287 -0
- package/dist/surface-mcp/build-provenance.js.map +1 -0
- package/dist/surface-mcp/crash-reporting.d.ts +28 -0
- package/dist/surface-mcp/crash-reporting.d.ts.map +1 -0
- package/dist/surface-mcp/crash-reporting.js +41 -0
- package/dist/surface-mcp/crash-reporting.js.map +1 -0
- package/dist/surface-mcp/executable-freshness-watch.d.ts +89 -0
- package/dist/surface-mcp/executable-freshness-watch.d.ts.map +1 -0
- package/dist/surface-mcp/executable-freshness-watch.js +225 -0
- package/dist/surface-mcp/executable-freshness-watch.js.map +1 -0
- package/dist/surface-mcp/host-provenance-banner.d.ts +49 -0
- package/dist/surface-mcp/host-provenance-banner.d.ts.map +1 -0
- package/dist/surface-mcp/host-provenance-banner.js +135 -0
- package/dist/surface-mcp/host-provenance-banner.js.map +1 -0
- package/dist/surface-mcp/index.d.ts +51 -0
- package/dist/surface-mcp/index.d.ts.map +1 -0
- package/dist/surface-mcp/index.js +92 -0
- package/dist/surface-mcp/index.js.map +1 -0
- package/dist/surface-mcp/local-tools-bootstrap.d.ts +36 -0
- package/dist/surface-mcp/local-tools-bootstrap.d.ts.map +1 -0
- package/dist/surface-mcp/local-tools-bootstrap.js +43 -0
- package/dist/surface-mcp/local-tools-bootstrap.js.map +1 -0
- package/dist/surface-mcp/mcp-serve.plugin.d.ts +9 -0
- package/dist/surface-mcp/mcp-serve.plugin.d.ts.map +1 -0
- package/dist/surface-mcp/mcp-serve.plugin.js +24 -0
- package/dist/surface-mcp/mcp-serve.plugin.js.map +1 -0
- package/dist/surface-mcp/project-config.d.ts +35 -0
- package/dist/surface-mcp/project-config.d.ts.map +1 -0
- package/dist/surface-mcp/project-config.js +74 -0
- package/dist/surface-mcp/project-config.js.map +1 -0
- package/dist/surface-mcp/serve-lifecycle.d.ts +102 -0
- package/dist/surface-mcp/serve-lifecycle.d.ts.map +1 -0
- package/dist/surface-mcp/serve-lifecycle.js +343 -0
- package/dist/surface-mcp/serve-lifecycle.js.map +1 -0
- package/dist/surface-mcp/session-bridge.d.ts +18 -0
- package/dist/surface-mcp/session-bridge.d.ts.map +1 -0
- package/dist/surface-mcp/session-bridge.js +26 -0
- package/dist/surface-mcp/session-bridge.js.map +1 -0
- package/dist/surface-mcp/subscriptions/session.bound.workspace.descriptor.d.ts +13 -0
- package/dist/surface-mcp/subscriptions/session.bound.workspace.descriptor.d.ts.map +1 -0
- package/dist/surface-mcp/subscriptions/session.bound.workspace.descriptor.js +13 -0
- package/dist/surface-mcp/subscriptions/session.bound.workspace.descriptor.js.map +1 -0
- package/dist/surface-mcp/subscriptions/session.bound.workspace.impl.consumer.d.ts +11 -0
- package/dist/surface-mcp/subscriptions/session.bound.workspace.impl.consumer.d.ts.map +1 -0
- package/dist/surface-mcp/subscriptions/session.bound.workspace.impl.consumer.js +36 -0
- package/dist/surface-mcp/subscriptions/session.bound.workspace.impl.consumer.js.map +1 -0
- package/dist/surface-mcp/workspace-warning.d.ts +16 -0
- package/dist/surface-mcp/workspace-warning.d.ts.map +1 -0
- package/dist/surface-mcp/workspace-warning.js +44 -0
- package/dist/surface-mcp/workspace-warning.js.map +1 -0
- package/dist/svelte/index.d.ts +12 -0
- package/dist/svelte/index.d.ts.map +1 -0
- package/dist/svelte/index.js +11 -0
- package/dist/svelte/mcp-svelte.plugin.d.ts +10 -0
- package/dist/svelte/mcp-svelte.plugin.d.ts.map +1 -0
- package/dist/svelte/mcp-svelte.plugin.js +24 -0
- package/dist/svelte/tool-widgets/VibesContextToolCard.svelte +91 -0
- package/dist/svelte/tool-widgets/VibesContextToolCard.svelte.d.ts +9 -0
- package/dist/svelte/tool-widgets/VibesContextToolCard.svelte.d.ts.map +1 -0
- package/dist/svelte/tool-widgets/index.d.ts +3 -0
- package/dist/svelte/tool-widgets/index.d.ts.map +1 -0
- package/dist/svelte/tool-widgets/index.js +2 -0
- package/dist/svelte/tool-widgets/summary.d.ts +48 -0
- package/dist/svelte/tool-widgets/summary.d.ts.map +1 -0
- package/dist/svelte/tool-widgets/summary.js +117 -0
- package/dist/tools/vibes-context/schemas.d.ts +85 -0
- package/dist/tools/vibes-context/schemas.d.ts.map +1 -0
- package/dist/tools/vibes-context/schemas.js +76 -0
- package/dist/tools/vibes-context/schemas.js.map +1 -0
- package/dist/tools/vibes-context/vibes-context.descriptor.d.ts +4 -0
- package/dist/tools/vibes-context/vibes-context.descriptor.d.ts.map +1 -0
- package/dist/tools/vibes-context/vibes-context.descriptor.js +30 -0
- package/dist/tools/vibes-context/vibes-context.descriptor.js.map +1 -0
- package/dist/tools/vibes-context/vibes-context.impl.d.ts +34 -0
- package/dist/tools/vibes-context/vibes-context.impl.d.ts.map +1 -0
- package/dist/tools/vibes-context/vibes-context.impl.js +207 -0
- package/dist/tools/vibes-context/vibes-context.impl.js.map +1 -0
- package/dist/tui/index.d.ts +4 -0
- package/dist/tui/index.d.ts.map +1 -0
- package/dist/tui/index.js +4 -0
- package/dist/tui/index.js.map +1 -0
- package/dist/tui/mcp-health.d.ts +7 -0
- package/dist/tui/mcp-health.d.ts.map +1 -0
- package/dist/tui/mcp-health.js +16 -0
- package/dist/tui/mcp-health.js.map +1 -0
- package/dist/tui/mcp-tui.plugin.d.ts +3 -0
- package/dist/tui/mcp-tui.plugin.d.ts.map +1 -0
- package/dist/tui/mcp-tui.plugin.js +18 -0
- package/dist/tui/mcp-tui.plugin.js.map +1 -0
- package/dist/tui/mcp.tui-app.descriptor.d.ts +4 -0
- package/dist/tui/mcp.tui-app.descriptor.d.ts.map +1 -0
- package/dist/tui/mcp.tui-app.descriptor.js +19 -0
- package/dist/tui/mcp.tui-app.descriptor.js.map +1 -0
- package/dist/tui/mcp.tui-app.impl.consumer.d.ts +4 -0
- package/dist/tui/mcp.tui-app.impl.consumer.d.ts.map +1 -0
- package/dist/tui/mcp.tui-app.impl.consumer.js +48 -0
- package/dist/tui/mcp.tui-app.impl.consumer.js.map +1 -0
- package/dist/tui/mcp.tui-state.descriptor.d.ts +8 -0
- package/dist/tui/mcp.tui-state.descriptor.d.ts.map +1 -0
- package/dist/tui/mcp.tui-state.descriptor.js +37 -0
- package/dist/tui/mcp.tui-state.descriptor.js.map +1 -0
- package/dist/tui/mcp.tui-state.impl.consumer.d.ts +5 -0
- package/dist/tui/mcp.tui-state.impl.consumer.d.ts.map +1 -0
- package/dist/tui/mcp.tui-state.impl.consumer.js +97 -0
- package/dist/tui/mcp.tui-state.impl.consumer.js.map +1 -0
- package/dist/tui/mcp.tui-state.key.d.ts +45 -0
- package/dist/tui/mcp.tui-state.key.d.ts.map +1 -0
- package/dist/tui/mcp.tui-state.key.js +25 -0
- package/dist/tui/mcp.tui-state.key.js.map +1 -0
- package/dist/types.core.d.ts +25 -0
- package/dist/types.core.d.ts.map +1 -0
- package/dist/types.core.js +8 -0
- package/dist/types.core.js.map +1 -0
- package/dist/types.d.ts +71 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/types.registry.d.ts +93 -0
- package/dist/types.registry.d.ts.map +1 -0
- package/dist/types.registry.js +32 -0
- package/dist/types.registry.js.map +1 -0
- package/package.json +323 -4
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { readTerminalLine, tryResolveTerminalTransport } from '@vibesdotdev/cli/support/terminal-input';
|
|
2
|
+
import { getRuntimeStdin } from '@vibesdotdev/kernel';
|
|
3
|
+
import { printLine } from "../../print.js";
|
|
4
|
+
import * as z from 'zod/v4';
|
|
5
|
+
/** A piped answer is one short line. More is a mistake, refused by the host's bounded read. */
|
|
6
|
+
const PROMPT_STDIN_MAX_BYTES = 4096;
|
|
7
|
+
/**
|
|
8
|
+
* One trimmed answer. On a terminal the runtime observed, one typed line.
|
|
9
|
+
* Otherwise the runtime's bounded stdin read; an empty or closed stdin is empty.
|
|
10
|
+
*/
|
|
11
|
+
export async function readPromptLine(runtime, question) {
|
|
12
|
+
if (runtime.localEnvironment.terminal?.()?.stdinIsTerminal === true) {
|
|
13
|
+
return (await readTerminalLine(question, await tryResolveTerminalTransport(runtime))).trim();
|
|
14
|
+
}
|
|
15
|
+
await printLine(runtime, question);
|
|
16
|
+
const stdin = await getRuntimeStdin(runtime);
|
|
17
|
+
const read = await stdin.readStdin({ maxBytes: PROMPT_STDIN_MAX_BYTES });
|
|
18
|
+
return (read.text.split(/\r?\n/, 1)[0] ?? '').trim();
|
|
19
|
+
}
|
|
20
|
+
function normalize(value) {
|
|
21
|
+
return value.toLowerCase().replace(/[^a-z0-9]+/g, '');
|
|
22
|
+
}
|
|
23
|
+
export function getTargetDisplayName(target) {
|
|
24
|
+
return target.name || target.id;
|
|
25
|
+
}
|
|
26
|
+
export function getAllTargets(runtime) {
|
|
27
|
+
const descriptors = runtime.query('external/host').enabled().descriptors();
|
|
28
|
+
return descriptors
|
|
29
|
+
.filter((descriptor) => descriptor.manifest?.mcp?.supported === true)
|
|
30
|
+
.map((descriptor) => ({
|
|
31
|
+
id: descriptor.id,
|
|
32
|
+
name: descriptor.manifest.name ?? descriptor.name ?? descriptor.id,
|
|
33
|
+
transports: descriptor.manifest.mcp.transports.filter((value) => value === 'stdio' || value === 'http' || value === 'sse'),
|
|
34
|
+
aliases: [descriptor.manifest.shortName, ...(descriptor.manifest.hostAliases ?? [])].filter((value) => Boolean(value))
|
|
35
|
+
}));
|
|
36
|
+
}
|
|
37
|
+
export function normalizeTarget(input, targets) {
|
|
38
|
+
const normalized = normalize(input);
|
|
39
|
+
return (targets.find((target) => {
|
|
40
|
+
return [target.id, target.name, ...target.aliases].some((candidate) => normalize(candidate) === normalized);
|
|
41
|
+
}) ?? null);
|
|
42
|
+
}
|
|
43
|
+
export async function resolveMcpAdapter(runtime) {
|
|
44
|
+
return runtime.query('external/adapter').withId('mcp').resolve();
|
|
45
|
+
}
|
|
46
|
+
export async function selectTargets(runtime) {
|
|
47
|
+
const allTargets = getAllTargets(runtime);
|
|
48
|
+
const adapter = await resolveMcpAdapter(runtime);
|
|
49
|
+
const states = await Promise.all(allTargets.map(async (target) => {
|
|
50
|
+
const status = z.object({ configured: z.boolean() }).safeParse(await adapter.execute('status', {
|
|
51
|
+
hostId: target.id,
|
|
52
|
+
global: true
|
|
53
|
+
}));
|
|
54
|
+
const installed = status.success ? status.data.configured : false;
|
|
55
|
+
return { target, installed };
|
|
56
|
+
}));
|
|
57
|
+
await printLine(runtime, '');
|
|
58
|
+
await printLine(runtime, 'Available targets:');
|
|
59
|
+
for (let i = 0; i < allTargets.length; i++) {
|
|
60
|
+
const target = allTargets[i];
|
|
61
|
+
const state = states.find((item) => item.target.id === target.id);
|
|
62
|
+
const status = state?.installed ? '(installed)' : '';
|
|
63
|
+
await printLine(runtime, ` ${i + 1}. ${getTargetDisplayName(target)} ${status}`);
|
|
64
|
+
}
|
|
65
|
+
await printLine(runtime, ` ${allTargets.length + 1}. All targets`);
|
|
66
|
+
await printLine(runtime, '');
|
|
67
|
+
const input = await readPromptLine(runtime, 'Select targets (comma-separated numbers, or Enter for all): ');
|
|
68
|
+
if (!input || input === String(allTargets.length + 1))
|
|
69
|
+
return allTargets;
|
|
70
|
+
const indices = input.split(',').map((value) => parseInt(value.trim(), 10) - 1);
|
|
71
|
+
const selected = [];
|
|
72
|
+
for (const index of indices) {
|
|
73
|
+
if (index < 0 || index >= allTargets.length)
|
|
74
|
+
continue;
|
|
75
|
+
const target = allTargets[index];
|
|
76
|
+
if (target)
|
|
77
|
+
selected.push(target);
|
|
78
|
+
}
|
|
79
|
+
return selected.length > 0 ? selected : allTargets;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Ask for a transport. `localEndpoint` is the endpoint an http install writes
|
|
83
|
+
* for this workspace (`localhost:<its port>/mcp`), computed by the caller from
|
|
84
|
+
* its runtime; nothing here reads the process environment.
|
|
85
|
+
*/
|
|
86
|
+
export async function selectMode(runtime, isLocal, localEndpoint) {
|
|
87
|
+
await printLine(runtime, '');
|
|
88
|
+
await printLine(runtime, 'Transport modes:');
|
|
89
|
+
await printLine(runtime, ' 1. stdio (recommended) - Direct process communication');
|
|
90
|
+
await printLine(runtime, ` 2. http - HTTP endpoint (${isLocal ? localEndpoint : 'mcp.vibes.dev'})`);
|
|
91
|
+
await printLine(runtime, '');
|
|
92
|
+
const answer = await readPromptLine(runtime, 'Select mode (1 or 2, default 1): ');
|
|
93
|
+
return answer === '2' ? 'http' : 'stdio';
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=install-helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install-helpers.js","sourceRoot":"","sources":["../../../../src/cli/mcp/management/install-helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP process audit helpers for stdio client serve processes.
|
|
3
|
+
*/
|
|
4
|
+
import { type RuntimeRef } from '@vibesdotdev/kernel';
|
|
5
|
+
export declare function listMcpServeProcesses(runtime: RuntimeRef): Promise<Array<{
|
|
6
|
+
pid: number;
|
|
7
|
+
ppid: number;
|
|
8
|
+
elapsedSeconds: number | null;
|
|
9
|
+
command: string;
|
|
10
|
+
clientId: string | null;
|
|
11
|
+
mode: 'stdio' | 'http' | 'unknown';
|
|
12
|
+
}>>;
|
|
13
|
+
export declare function groupMcpServeProcessesByClient(processes: Array<{
|
|
14
|
+
pid: number;
|
|
15
|
+
ppid: number;
|
|
16
|
+
elapsedSeconds: number | null;
|
|
17
|
+
command: string;
|
|
18
|
+
clientId: string | null;
|
|
19
|
+
mode: 'stdio' | 'http' | 'unknown';
|
|
20
|
+
}>): Array<{
|
|
21
|
+
clientId: string;
|
|
22
|
+
count: number;
|
|
23
|
+
pids: number[];
|
|
24
|
+
modes: Array<'stdio' | 'http' | 'unknown'>;
|
|
25
|
+
}>;
|
|
26
|
+
export declare function selectDuplicateStdioClientCleanupTargets(processes: Array<{
|
|
27
|
+
pid: number;
|
|
28
|
+
ppid: number;
|
|
29
|
+
elapsedSeconds: number | null;
|
|
30
|
+
command: string;
|
|
31
|
+
clientId: string | null;
|
|
32
|
+
mode: 'stdio' | 'http' | 'unknown';
|
|
33
|
+
}>): Array<{
|
|
34
|
+
clientId: string;
|
|
35
|
+
keepPid: number;
|
|
36
|
+
killPids: number[];
|
|
37
|
+
}>;
|
|
38
|
+
//# sourceMappingURL=process-audit.impl.consumer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"process-audit.impl.consumer.d.ts","sourceRoot":"","sources":["../../../../src/cli/mcp/management/process-audit.impl.consumer.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAkB,KAAK,UAAU,EAAE,MAAM,qBAAqB,CAAC;AA2DtE,wBAAsB,qBAAqB,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CACxE,KAAK,CAAC;IACL,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;CACnC,CAAC,CACF,CA+CA;AAED,wBAAgB,8BAA8B,CAC7C,SAAS,EAAE,KAAK,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;CACnC,CAAC,GACA,KAAK,CAAC;IACR,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,KAAK,EAAE,KAAK,CAAC,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC,CAAC;CAC3C,CAAC,CAsBD;AAED,wBAAgB,wCAAwC,CACvD,SAAS,EAAE,KAAK,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;CACnC,CAAC,GACA,KAAK,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAgClE"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP process audit helpers for stdio client serve processes.
|
|
3
|
+
*/
|
|
4
|
+
import { composeHostEnv } from '@vibesdotdev/kernel';
|
|
5
|
+
import { runCapture } from '@vibesdotdev/kernel/execution';
|
|
6
|
+
import { processTableUnavailable } from '@vibesdotdev/execution-local';
|
|
7
|
+
function parseOptionValue(command, option) {
|
|
8
|
+
const escaped = option.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
9
|
+
const match = command.match(new RegExp(`--${escaped}(?:=|\\s+)([^\\s]+)`));
|
|
10
|
+
return match?.[1] ?? null;
|
|
11
|
+
}
|
|
12
|
+
function parseClientId(command) {
|
|
13
|
+
return parseOptionValue(command, 'client');
|
|
14
|
+
}
|
|
15
|
+
function parseMode(command) {
|
|
16
|
+
const mode = parseOptionValue(command, 'mode');
|
|
17
|
+
if (mode === 'stdio' || mode === 'http')
|
|
18
|
+
return mode;
|
|
19
|
+
// `dev mcp serve` defaults to stdio when mode is not provided.
|
|
20
|
+
return 'stdio';
|
|
21
|
+
}
|
|
22
|
+
function parseElapsedSeconds(etime) {
|
|
23
|
+
if (!etime || etime.trim().length === 0)
|
|
24
|
+
return null;
|
|
25
|
+
const value = etime.trim();
|
|
26
|
+
let days = 0;
|
|
27
|
+
let rest = value;
|
|
28
|
+
if (value.includes('-')) {
|
|
29
|
+
const parts = value.split('-', 2);
|
|
30
|
+
days = Number.parseInt(parts[0] ?? '0', 10);
|
|
31
|
+
rest = parts[1] ?? '';
|
|
32
|
+
if (!Number.isFinite(days) || days < 0)
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
const timeParts = rest.split(':').map((part) => Number.parseInt(part, 10));
|
|
36
|
+
if (timeParts.some((part) => !Number.isFinite(part) || part < 0))
|
|
37
|
+
return null;
|
|
38
|
+
if (timeParts.length === 3) {
|
|
39
|
+
const [hours, minutes, seconds] = timeParts;
|
|
40
|
+
return days * 86400 + hours * 3600 + minutes * 60 + seconds;
|
|
41
|
+
}
|
|
42
|
+
if (timeParts.length === 2) {
|
|
43
|
+
const [minutes, seconds] = timeParts;
|
|
44
|
+
return days * 86400 + minutes * 60 + seconds;
|
|
45
|
+
}
|
|
46
|
+
if (timeParts.length === 1) {
|
|
47
|
+
return days * 86400 + timeParts[0];
|
|
48
|
+
}
|
|
49
|
+
return null;
|
|
50
|
+
}
|
|
51
|
+
function isMcpServeCommand(command) {
|
|
52
|
+
const normalized = command.toLowerCase();
|
|
53
|
+
return (normalized.includes('vibes') &&
|
|
54
|
+
normalized.includes('dev') &&
|
|
55
|
+
normalized.includes('mcp') &&
|
|
56
|
+
normalized.includes('serve'));
|
|
57
|
+
}
|
|
58
|
+
export async function listMcpServeProcesses(runtime) {
|
|
59
|
+
// A table that could not be read is not "no MCP processes": it fails typed.
|
|
60
|
+
// Launched through the runtime's execution provider, on the host's composed
|
|
61
|
+
// environment only (`replace`): `ps` needs nothing the host does not declare.
|
|
62
|
+
const { exitCode, stdout: output } = await runCapture(runtime, 'ps', ['-axo', 'pid=,ppid=,etime=,command='], { env: composeHostEnv(runtime), envMode: 'replace' });
|
|
63
|
+
if (exitCode !== 0)
|
|
64
|
+
throw processTableUnavailable('ps', `exit ${exitCode}`);
|
|
65
|
+
return output
|
|
66
|
+
.split('\n')
|
|
67
|
+
.map((line) => line.trim())
|
|
68
|
+
.filter((line) => line.length > 0)
|
|
69
|
+
.map((line) => {
|
|
70
|
+
const match = line.match(/^(\d+)\s+(\d+)\s+(\S+)\s+(.+)$/);
|
|
71
|
+
if (!match)
|
|
72
|
+
return null;
|
|
73
|
+
const pid = Number.parseInt(match[1] ?? '', 10);
|
|
74
|
+
if (!Number.isInteger(pid) || pid <= 0)
|
|
75
|
+
return null;
|
|
76
|
+
const ppid = Number.parseInt(match[2] ?? '', 10);
|
|
77
|
+
if (!Number.isInteger(ppid) || ppid < 0)
|
|
78
|
+
return null;
|
|
79
|
+
const etime = match[3] ?? '';
|
|
80
|
+
const command = (match[4] ?? '').trim();
|
|
81
|
+
if (!isMcpServeCommand(command))
|
|
82
|
+
return null;
|
|
83
|
+
return {
|
|
84
|
+
pid,
|
|
85
|
+
ppid,
|
|
86
|
+
elapsedSeconds: parseElapsedSeconds(etime),
|
|
87
|
+
command,
|
|
88
|
+
clientId: parseClientId(command),
|
|
89
|
+
mode: parseMode(command)
|
|
90
|
+
};
|
|
91
|
+
})
|
|
92
|
+
.filter((entry) => entry !== null);
|
|
93
|
+
}
|
|
94
|
+
export function groupMcpServeProcessesByClient(processes) {
|
|
95
|
+
const grouped = new Map();
|
|
96
|
+
for (const processInfo of processes) {
|
|
97
|
+
if (!processInfo.clientId)
|
|
98
|
+
continue;
|
|
99
|
+
const existing = grouped.get(processInfo.clientId) ?? { pids: [], modes: new Set() };
|
|
100
|
+
existing.pids.push(processInfo.pid);
|
|
101
|
+
existing.modes.add(processInfo.mode);
|
|
102
|
+
grouped.set(processInfo.clientId, existing);
|
|
103
|
+
}
|
|
104
|
+
return Array.from(grouped.entries())
|
|
105
|
+
.map(([clientId, group]) => ({
|
|
106
|
+
clientId,
|
|
107
|
+
count: group.pids.length,
|
|
108
|
+
pids: [...group.pids].sort((a, b) => a - b),
|
|
109
|
+
modes: [...group.modes].sort()
|
|
110
|
+
}))
|
|
111
|
+
.sort((a, b) => {
|
|
112
|
+
if (b.count !== a.count)
|
|
113
|
+
return b.count - a.count;
|
|
114
|
+
return a.clientId.localeCompare(b.clientId);
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
export function selectDuplicateStdioClientCleanupTargets(processes) {
|
|
118
|
+
const byClient = new Map();
|
|
119
|
+
for (const processInfo of processes) {
|
|
120
|
+
if (processInfo.mode !== 'stdio' || !processInfo.clientId)
|
|
121
|
+
continue;
|
|
122
|
+
const group = byClient.get(processInfo.clientId) ?? [];
|
|
123
|
+
group.push(processInfo);
|
|
124
|
+
byClient.set(processInfo.clientId, group);
|
|
125
|
+
}
|
|
126
|
+
return [...byClient.entries()]
|
|
127
|
+
.map(([clientId, group]) => ({ clientId, group }))
|
|
128
|
+
.filter(({ group }) => group.length > 1)
|
|
129
|
+
.map(({ clientId, group }) => {
|
|
130
|
+
const ordered = [...group].sort((a, b) => {
|
|
131
|
+
const aElapsed = a.elapsedSeconds ?? Number.POSITIVE_INFINITY;
|
|
132
|
+
const bElapsed = b.elapsedSeconds ?? Number.POSITIVE_INFINITY;
|
|
133
|
+
if (aElapsed !== bElapsed)
|
|
134
|
+
return aElapsed - bElapsed;
|
|
135
|
+
return b.pid - a.pid;
|
|
136
|
+
});
|
|
137
|
+
return {
|
|
138
|
+
clientId,
|
|
139
|
+
keepPid: ordered[0].pid,
|
|
140
|
+
killPids: ordered.slice(1).map((entry) => entry.pid)
|
|
141
|
+
};
|
|
142
|
+
})
|
|
143
|
+
.sort((a, b) => a.clientId.localeCompare(b.clientId));
|
|
144
|
+
}
|
|
145
|
+
//# sourceMappingURL=process-audit.impl.consumer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"process-audit.impl.consumer.js","sourceRoot":"","sources":["../../../../src/cli/mcp/management/process-audit.impl.consumer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { type VibesRuntime } from '@vibesdotdev/kernel';
|
|
2
|
+
export declare function collectRulesDebtSummary(runtime: VibesRuntime, paths?: string[]): Promise<{
|
|
3
|
+
scopedPaths: string[];
|
|
4
|
+
exitCode: number;
|
|
5
|
+
totalFindings: number;
|
|
6
|
+
errors: number;
|
|
7
|
+
warnings: number;
|
|
8
|
+
topRules: {
|
|
9
|
+
key: string;
|
|
10
|
+
count: number;
|
|
11
|
+
}[];
|
|
12
|
+
topModules: {
|
|
13
|
+
key: string;
|
|
14
|
+
count: number;
|
|
15
|
+
}[];
|
|
16
|
+
topFeatures: {
|
|
17
|
+
key: string;
|
|
18
|
+
count: number;
|
|
19
|
+
}[];
|
|
20
|
+
}>;
|
|
21
|
+
//# sourceMappingURL=rules-debt-summary.impl.consumer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rules-debt-summary.impl.consumer.d.ts","sourceRoot":"","sources":["../../../../src/cli/mcp/management/rules-debt-summary.impl.consumer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AA6C3E,wBAAsB,uBAAuB,CAAC,OAAO,EAAE,YAAY,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE;;;;;;;aAVrE,MAAM;eAAS,MAAM;;;aAArB,MAAM;eAAS,MAAM;;;aAArB,MAAM;eAAS,MAAM;;GAsDpC"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { requireRuntimeCwd } from '@vibesdotdev/kernel';
|
|
2
|
+
import { runRulesCheckWithReport } from '@vibesdotdev/workspace/rules/services/lint';
|
|
3
|
+
const DEFAULT_RULE_SUMMARY_PATHS = [
|
|
4
|
+
'src/lib/vibes/runtime',
|
|
5
|
+
'src/lib/vibes/runtime-plugin',
|
|
6
|
+
'src/lib/vibes/tools',
|
|
7
|
+
'src/lib/vibes/knowledge',
|
|
8
|
+
'src/lib/vibes/pm',
|
|
9
|
+
'src/lib/mcp'
|
|
10
|
+
];
|
|
11
|
+
function incrementCounter(map, key) {
|
|
12
|
+
map.set(key, (map.get(key) ?? 0) + 1);
|
|
13
|
+
}
|
|
14
|
+
function normalizeModule(path) {
|
|
15
|
+
const parts = path.split('/');
|
|
16
|
+
if (parts[0] === 'src' && parts[1] === 'lib' && parts[2] === 'vibes' && parts[3]) {
|
|
17
|
+
return parts[3];
|
|
18
|
+
}
|
|
19
|
+
return 'other';
|
|
20
|
+
}
|
|
21
|
+
function normalizeFeature(path) {
|
|
22
|
+
const parts = path.split('/');
|
|
23
|
+
if (parts[0] === 'src' && parts[1] === 'lib' && parts[2] === 'vibes' && parts[3] && parts[4]) {
|
|
24
|
+
return `${parts[3]}/${parts[4]}`;
|
|
25
|
+
}
|
|
26
|
+
return 'other';
|
|
27
|
+
}
|
|
28
|
+
function sortTopEntries(map, limit = 8) {
|
|
29
|
+
return Array.from(map.entries())
|
|
30
|
+
.map(([key, count]) => ({ key, count }))
|
|
31
|
+
.sort((a, b) => {
|
|
32
|
+
if (b.count !== a.count)
|
|
33
|
+
return b.count - a.count;
|
|
34
|
+
return a.key.localeCompare(b.key);
|
|
35
|
+
})
|
|
36
|
+
.slice(0, limit);
|
|
37
|
+
}
|
|
38
|
+
export async function collectRulesDebtSummary(runtime, paths) {
|
|
39
|
+
const scopedPaths = Array.isArray(paths) && paths.length > 0
|
|
40
|
+
? paths.filter((path) => path.trim().length > 0)
|
|
41
|
+
: DEFAULT_RULE_SUMMARY_PATHS;
|
|
42
|
+
// The same check `dev workspace rules check --fail-on error` runs, in this
|
|
43
|
+
// process: relative paths resolve from the caller's cwd, rules from the
|
|
44
|
+
// bound workspace. Info stays out of the summary; the old stdout parser
|
|
45
|
+
// counted only ERROR and WARN lines.
|
|
46
|
+
const workspaceRoot = await runtime.context('runtime/workspace-path');
|
|
47
|
+
const report = await runRulesCheckWithReport(scopedPaths, {
|
|
48
|
+
runtime,
|
|
49
|
+
rootDir: workspaceRoot,
|
|
50
|
+
baseDir: requireRuntimeCwd(runtime)
|
|
51
|
+
});
|
|
52
|
+
const rules = new Map();
|
|
53
|
+
const modules = new Map();
|
|
54
|
+
const features = new Map();
|
|
55
|
+
let errors = 0;
|
|
56
|
+
let warnings = 0;
|
|
57
|
+
let totalFindings = 0;
|
|
58
|
+
for (const issue of report.issues) {
|
|
59
|
+
if (issue.severity !== 'error' && issue.severity !== 'warn')
|
|
60
|
+
continue;
|
|
61
|
+
totalFindings += 1;
|
|
62
|
+
if (issue.severity === 'error')
|
|
63
|
+
errors += 1;
|
|
64
|
+
if (issue.severity === 'warn')
|
|
65
|
+
warnings += 1;
|
|
66
|
+
incrementCounter(rules, issue.rule);
|
|
67
|
+
const semanticTarget = issue.target ? `${issue.target.entity}:${issue.target.path}` : 'unscoped';
|
|
68
|
+
incrementCounter(modules, issue.file === undefined ? issue.target?.entity ?? 'unscoped' : normalizeModule(issue.file));
|
|
69
|
+
incrementCounter(features, issue.file === undefined ? semanticTarget : normalizeFeature(issue.file));
|
|
70
|
+
}
|
|
71
|
+
return {
|
|
72
|
+
scopedPaths,
|
|
73
|
+
exitCode: errors > 0 ? 1 : 0,
|
|
74
|
+
totalFindings,
|
|
75
|
+
errors,
|
|
76
|
+
warnings,
|
|
77
|
+
topRules: sortTopEntries(rules),
|
|
78
|
+
topModules: sortTopEntries(modules),
|
|
79
|
+
topFeatures: sortTopEntries(features)
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=rules-debt-summary.impl.consumer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rules-debt-summary.impl.consumer.js","sourceRoot":"","sources":["../../../../src/cli/mcp/management/rules-debt-summary.impl.consumer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { type VibesRuntime } from '@vibesdotdev/kernel';
|
|
2
|
+
import type { McpDoctorReport } from '../schemas/status-doctor.ts';
|
|
3
|
+
export declare function runMcpDoctor(options: {
|
|
4
|
+
/** The runtime the command was handed: PM's client reads its roots and admission, and the rules check runs in-process. */
|
|
5
|
+
runtime: VibesRuntime;
|
|
6
|
+
fix?: boolean;
|
|
7
|
+
cleanupClients?: boolean;
|
|
8
|
+
mode?: 'stdio' | 'http';
|
|
9
|
+
port?: string;
|
|
10
|
+
timeoutMs?: number;
|
|
11
|
+
debtSummary?: boolean;
|
|
12
|
+
debtPaths?: string[];
|
|
13
|
+
/**
|
|
14
|
+
* Workspace to diagnose: the caller's bound workspace. Absent, PM's client
|
|
15
|
+
* names the daemon from the runtime's admitted workspace.
|
|
16
|
+
*/
|
|
17
|
+
workspacePath?: string;
|
|
18
|
+
}): Promise<{
|
|
19
|
+
ready: boolean;
|
|
20
|
+
report: McpDoctorReport;
|
|
21
|
+
}>;
|
|
22
|
+
//# sourceMappingURL=status-doctor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status-doctor.d.ts","sourceRoot":"","sources":["../../../../src/cli/mcp/management/status-doctor.ts"],"names":[],"mappings":"AACA,OAAO,EAAqG,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAM3J,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAoEnE,wBAAsB,YAAY,CAAC,OAAO,EAAE;IAC3C,0HAA0H;IAC1H,OAAO,EAAE,YAAY,CAAC;IACtB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACvB;;;GAiHA"}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import { PMClient } from '@vibesdotdev/pm/client';
|
|
2
|
+
import { CaughtFailureSchema, valueFreeFailure } from '@vibesdotdev/kernel';
|
|
3
|
+
import { getLogger } from '@vibesdotdev/logging';
|
|
4
|
+
import { getRuntimeProcessService } from '@vibesdotdev/kernel/process';
|
|
5
|
+
import { listMcpServeProcesses } from "./process-audit.impl.consumer.js";
|
|
6
|
+
import { collectRulesDebtSummary } from "./rules-debt-summary.impl.consumer.js";
|
|
7
|
+
import { mcpServerProcessId } from "../support/server-process.impl.consumer.js";
|
|
8
|
+
import { cleanupDuplicateClientProcesses, createMcpClientReport, ensureCoreToolCoverage, ensureMcpServer, resolveMcpServerStatus } from "../support/status-doctor.js";
|
|
9
|
+
/**
|
|
10
|
+
* isDaemonReachable bounds its own connect by the timeout it is handed and
|
|
11
|
+
* answers false on expiry. The outer race below only has to catch what never
|
|
12
|
+
* answers at all (a stalled import, a wedged transport), so it sits just past
|
|
13
|
+
* the inner budget rather than competing with it.
|
|
14
|
+
*/
|
|
15
|
+
const PROBE_GRACE_MS = 250;
|
|
16
|
+
/**
|
|
17
|
+
* The daemon probe is the doctor's only source for everything gated below it.
|
|
18
|
+
* A probe that rejects or outlives its budget must not leave the seed values
|
|
19
|
+
* standing as readings: `pm.measured=false` plus the reason says "could not
|
|
20
|
+
* determine", and every PM-derived field keeps its unmeasured seed.
|
|
21
|
+
*/
|
|
22
|
+
async function probeDaemon(runtime, pm, report, timeoutMs) {
|
|
23
|
+
const outerMs = timeoutMs + PROBE_GRACE_MS;
|
|
24
|
+
const logger = getLogger('mcp.doctor', runtime);
|
|
25
|
+
const result = await runtime.lifecycle.wait(() => pm.isDaemonRunning(timeoutMs), {
|
|
26
|
+
timeoutMs: outerMs,
|
|
27
|
+
reason: 'mcp-doctor-pm-daemon-probe'
|
|
28
|
+
}).then(reachable => ({ reachable, failure: undefined }), error => ({ reachable: undefined, failure: CaughtFailureSchema.parse(error) }));
|
|
29
|
+
if (result.failure === undefined) {
|
|
30
|
+
report.pm = { running: result.reachable, reachable: result.reachable, measured: true };
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
logger.warn('PM daemon probe failed', { error: valueFreeFailure(result.failure) });
|
|
34
|
+
report.pm = { running: false, reachable: false, measured: false, error: failureMessage(result.failure) };
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
const failureMessage = (error) => JSON.stringify(valueFreeFailure(error));
|
|
38
|
+
/**
|
|
39
|
+
* Worker readiness. PM answers `false` only when nothing is listening; any
|
|
40
|
+
* other failure is diagnosed on the report, never read as "not running".
|
|
41
|
+
*/
|
|
42
|
+
async function probeWorkersReady(runtime, pm, report, timeoutMs) {
|
|
43
|
+
const logger = getLogger('mcp.doctor', runtime);
|
|
44
|
+
const result = await pm.checkWorkersReady(timeoutMs).then(ready => ({ ready, failure: undefined }), error => ({ ready: undefined, failure: CaughtFailureSchema.parse(error) }));
|
|
45
|
+
if (result.failure === undefined) {
|
|
46
|
+
report.workers.ready = result.ready;
|
|
47
|
+
delete report.workers.error;
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
logger.warn('Worker readiness probe failed', { error: valueFreeFailure(result.failure) });
|
|
51
|
+
report.workers.ready = false;
|
|
52
|
+
report.workers.error = failureMessage(result.failure);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
export async function runMcpDoctor(options) {
|
|
56
|
+
const report = {
|
|
57
|
+
timestamp: new Date().toISOString(),
|
|
58
|
+
pm: { running: false, reachable: false, measured: false },
|
|
59
|
+
mcp: { running: false, status: 'unknown', measured: false },
|
|
60
|
+
workers: { consumerRunning: false, cloudRunning: false, ready: false },
|
|
61
|
+
resources: { total: 0, ready: 0, nonReady: [] },
|
|
62
|
+
tools: { totalEnabled: 0, missing: [] },
|
|
63
|
+
mcpClients: {
|
|
64
|
+
totalServeProcesses: 0,
|
|
65
|
+
clientGroups: [],
|
|
66
|
+
untaggedPids: [],
|
|
67
|
+
heuristicCandidates: []
|
|
68
|
+
},
|
|
69
|
+
debtSummary: null,
|
|
70
|
+
fixes: []
|
|
71
|
+
};
|
|
72
|
+
const pm = new PMClient(undefined, {
|
|
73
|
+
runtime: options.runtime,
|
|
74
|
+
autoStartDaemon: options.fix === true
|
|
75
|
+
});
|
|
76
|
+
const timeoutMs = options.timeoutMs && options.timeoutMs > 0 ? options.timeoutMs : 5000;
|
|
77
|
+
const workerTimeout = timeoutMs;
|
|
78
|
+
await probeDaemon(options.runtime, pm, report, timeoutMs);
|
|
79
|
+
if (options.fix && !report.pm.running) {
|
|
80
|
+
await pm.ensureDaemonRunning();
|
|
81
|
+
report.fixes.push('started pm daemon');
|
|
82
|
+
await probeDaemon(options.runtime, pm, report, timeoutMs);
|
|
83
|
+
}
|
|
84
|
+
let processes = await listMcpServeProcesses(options.runtime);
|
|
85
|
+
report.mcpClients = createMcpClientReport(processes);
|
|
86
|
+
if (options.fix && options.cleanupClients) {
|
|
87
|
+
const cleanup = await cleanupDuplicateClientProcesses(await getRuntimeProcessService(options.runtime), processes);
|
|
88
|
+
if (cleanup.terminated.length > 0) {
|
|
89
|
+
report.fixes.push(`terminated duplicate MCP stdio clients: ${cleanup.terminated.join(', ')}`);
|
|
90
|
+
processes = await listMcpServeProcesses(options.runtime);
|
|
91
|
+
report.mcpClients = createMcpClientReport(processes);
|
|
92
|
+
}
|
|
93
|
+
if (cleanup.failed.length > 0) {
|
|
94
|
+
report.fixes.push(`failed to terminate MCP stdio clients: ${cleanup.failed.join(', ')}`);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
if (report.pm.reachable) {
|
|
98
|
+
const workspaceRoot = options.workspacePath ?? await options.runtime.context('runtime/workspace-path');
|
|
99
|
+
const processScope = { runtime: options.runtime, workspaceRoot };
|
|
100
|
+
const resolved = await resolveMcpServerStatus(pm, processScope);
|
|
101
|
+
report.mcp.status = resolved.processId ? `${resolved.status} (${resolved.processId})` : resolved.status;
|
|
102
|
+
report.mcp.running = resolved.running;
|
|
103
|
+
report.mcp.measured = true;
|
|
104
|
+
if (options.fix && !report.mcp.running) {
|
|
105
|
+
await ensureMcpServer(pm, { runtime: options.runtime, mode: options.mode, port: options.port, workspaceRoot });
|
|
106
|
+
report.fixes.push(`started ${await mcpServerProcessId(options.runtime, workspaceRoot)}`);
|
|
107
|
+
const refreshed = await resolveMcpServerStatus(pm, processScope);
|
|
108
|
+
report.mcp.status = refreshed.processId
|
|
109
|
+
? `${refreshed.status} (${refreshed.processId})`
|
|
110
|
+
: refreshed.status;
|
|
111
|
+
report.mcp.running = refreshed.running;
|
|
112
|
+
}
|
|
113
|
+
report.workers.consumerRunning = await pm.isRunning('vibes-workers-consumer');
|
|
114
|
+
report.workers.cloudRunning = await pm.isRunning('vibes-workers-cloud');
|
|
115
|
+
await probeWorkersReady(options.runtime, pm, report, workerTimeout);
|
|
116
|
+
// A probe that failed is a diagnosis, not an absence: the fix does not guess past it.
|
|
117
|
+
if (options.fix && !report.workers.ready && report.workers.error === undefined) {
|
|
118
|
+
await pm.ensureWorkerRuntime();
|
|
119
|
+
report.fixes.push('ensured worker runtime');
|
|
120
|
+
report.workers.consumerRunning = await pm.isRunning('vibes-workers-consumer');
|
|
121
|
+
report.workers.cloudRunning = await pm.isRunning('vibes-workers-cloud');
|
|
122
|
+
await probeWorkersReady(options.runtime, pm, report, workerTimeout);
|
|
123
|
+
}
|
|
124
|
+
const logger = getLogger('mcp.doctor', options.runtime);
|
|
125
|
+
const result = await pm.getAllResourceStates().then(states => ({ states, failure: undefined }), error => ({ states: undefined, failure: CaughtFailureSchema.parse(error) }));
|
|
126
|
+
if (result.failure === undefined) {
|
|
127
|
+
const resourceStates = result.states;
|
|
128
|
+
report.resources.total = resourceStates.length;
|
|
129
|
+
report.resources.ready = resourceStates.filter(state => state.status === 'ready').length;
|
|
130
|
+
report.resources.nonReady = resourceStates.filter(state => state.status !== 'ready')
|
|
131
|
+
.map(state => ({ id: state.id, status: state.status, error: state.error }));
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
logger.warn('Resource readiness probe failed', { error: valueFreeFailure(result.failure) });
|
|
135
|
+
report.resources.error = failureMessage(result.failure);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
const toolCoverage = await ensureCoreToolCoverage(options.runtime);
|
|
139
|
+
report.tools.totalEnabled = toolCoverage.totalEnabled;
|
|
140
|
+
report.tools.missing = toolCoverage.missing;
|
|
141
|
+
if (options.debtSummary === true) {
|
|
142
|
+
report.debtSummary = await collectRulesDebtSummary(options.runtime, options.debtPaths);
|
|
143
|
+
}
|
|
144
|
+
const ready = report.pm.running &&
|
|
145
|
+
report.pm.reachable &&
|
|
146
|
+
report.mcp.running &&
|
|
147
|
+
report.workers.ready &&
|
|
148
|
+
report.tools.missing.length === 0 &&
|
|
149
|
+
report.resources.nonReady.every((resource) => resource.status !== 'error') &&
|
|
150
|
+
report.resources.error === undefined;
|
|
151
|
+
return { ready, report };
|
|
152
|
+
}
|
|
153
|
+
//# sourceMappingURL=status-doctor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status-doctor.js","sourceRoot":"","sources":["../../../../src/cli/mcp/management/status-doctor.ts"],"names":[],"mappings":"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"}
|