@vibesdotdev/mcp 0.0.0-stage → 1.0.0-rc.0
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,538 @@
|
|
|
1
|
+
import { loadPurposePresetOverrides } from '@vibesdotdev/tools/config/load';
|
|
2
|
+
import { runtimePurposePresets } from '@vibesdotdev/tools/schemas/presets/registry';
|
|
3
|
+
/**
|
|
4
|
+
* Wire Selfie — the live half of the tool-exposure audit (czar cycle).
|
|
5
|
+
*
|
|
6
|
+
* Spawns the REAL stdio MCP server for a client preset, performs the real
|
|
7
|
+
* initialize → initialized → tools/list handshake over JSON-RPC, and diffs what
|
|
8
|
+
* the wire SERVES against what the registry AUTHORS. This is the only instrument
|
|
9
|
+
* that catches serve-world truth the static/policy views structurally cannot:
|
|
10
|
+
* tools selected by policy but absent from the wire (registration failure or
|
|
11
|
+
* serve-world zombie — the brain outage class), served schemas laundered to
|
|
12
|
+
* empty `{}`, property loss, and stale served bodies whose descriptions the
|
|
13
|
+
* current source cannot produce.
|
|
14
|
+
*
|
|
15
|
+
* Consumer-only (spawns processes). Capture and diff are separated so the diff
|
|
16
|
+
* is pure and unit-testable. See docs/proposals/universal-tools-czar/ (L5).
|
|
17
|
+
*/
|
|
18
|
+
import * as z from 'zod/v4';
|
|
19
|
+
import { CallToolResultSchema } from '@modelcontextprotocol/sdk/types.js';
|
|
20
|
+
import { CapabilityError, composeHostEnv, isCapabilityError, settle, settleNow, valueFreeFailure } from '@vibesdotdev/kernel';
|
|
21
|
+
import { JsonObjectSchema } from '@vibesdotdev/kernel/schemas/json';
|
|
22
|
+
import { getLogger } from '@vibesdotdev/logging';
|
|
23
|
+
import { getRuntimeExecution } from '@vibesdotdev/kernel/execution';
|
|
24
|
+
import { isLifecycleDeadline } from '@vibesdotdev/kernel-rpc';
|
|
25
|
+
import { toRuntimeJsonSchema } from '@vibesdotdev/kernel/schemas/json-schema';
|
|
26
|
+
import { flattenDiscriminatedUnionToObject, resolveMcpDescription } from "../zod-mcp.js";
|
|
27
|
+
import { selectMcpTools } from "./tool-selection.js";
|
|
28
|
+
import { isLocalToolId, localToolsOf } from '@vibesdotdev/tools/local/node/ensure-local-tools';
|
|
29
|
+
import { formatLocalMcpToolDescription } from "./local-origin.js";
|
|
30
|
+
import { resolveProjectionBirthMetadata } from "./projection.js";
|
|
31
|
+
import { JsonRpcMessageSchema, RpcRejectionSchema, ToolsListResultSchema } from "../../schemas/audit.js";
|
|
32
|
+
/**
|
|
33
|
+
* Catalog ceiling in REAL wire bytes for one client's `tools/list`. THE catalog
|
|
34
|
+
* budget — there is deliberately no second one (see tool-audit.ts, where a
|
|
35
|
+
* description-based budget was removed by ruling on 2026-07-25).
|
|
36
|
+
*
|
|
37
|
+
* Descriptions are not the catalog. Measured live 2026-07-24:
|
|
38
|
+
*
|
|
39
|
+
* base `mcp` (67 tools) descriptions 4,984 B (3.1%) TOTAL 162,238 B ~45K tok
|
|
40
|
+
* `mcp:claude` (75 tools) descriptions ~9,129 B (4.1%) TOTAL 224,730 B ~62K tok
|
|
41
|
+
*
|
|
42
|
+
* The retired description budget read 1,621/24,000 "healthy" for `mcp:claude`
|
|
43
|
+
* while that client actually paid ~62K tokens per request. `inputSchema` is the
|
|
44
|
+
* rest, and only a measurement taken ON THE WIRE sees it — hence the Wire Selfie,
|
|
45
|
+
* not the policy view.
|
|
46
|
+
*
|
|
47
|
+
* The cost is concentrated, not spread: `awareness` alone is 38,473 B — 17% of the
|
|
48
|
+
* whole `mcp:claude` catalog in ONE tool — behind a description of a few dozen
|
|
49
|
+
* chars. Then browser 12,020B, workspace-fs 10,840B, knowledge 10,016B, presence
|
|
50
|
+
* 6,331B. A short description is not a small tool; a wide action union is the cost.
|
|
51
|
+
*
|
|
52
|
+
* WHERE THE BYTES ACTUALLY ARE — measured on the `cursor` wire 2026-07-25, after the
|
|
53
|
+
* awareness flattening landed (204,965 B / 75 tools):
|
|
54
|
+
*
|
|
55
|
+
* inputSchema 93,294 B 45.5%
|
|
56
|
+
* outputSchema 71,172 B 34.7% ← 57 of 75 tools carry one
|
|
57
|
+
* _meta 14,577 B 7.1%
|
|
58
|
+
* description 7,486 B 3.7%
|
|
59
|
+
* annotations 6,725 B 3.3%
|
|
60
|
+
*
|
|
61
|
+
* A THIRD of the catalog is `outputSchema`, and an earlier version of this comment
|
|
62
|
+
* said the non-description remainder was `inputSchema` — naming one of the two real
|
|
63
|
+
* costs and omitting the other. That sent a full session's optimization at the input
|
|
64
|
+
* side: for `awareness` (18,253 B) the output schema is 10,848 B, 59% of the tool;
|
|
65
|
+
* `presence` 78%, `applet` 76%, `vibes-work` 68%. Flattening their action unions
|
|
66
|
+
* cannot reach those bytes. THAT IS WHY `ServedTool.parts` exists — a budget that
|
|
67
|
+
* reports a total without its composition prescribes the wrong fix, confidently.
|
|
68
|
+
*
|
|
69
|
+
* `outputSchema` is not dead weight, and this is not a recommendation to drop it: the
|
|
70
|
+
* SDK validates every result against the REGISTERED schema object
|
|
71
|
+
* (`server/mcp.js` `validateToolOutput`), and emits the wire copy from that same
|
|
72
|
+
* object in the `tools/list` projection — two independent reads. Suppressing the wire
|
|
73
|
+
* copy per client policy would keep the validation and drop the bytes; that is a real
|
|
74
|
+
* decision for whoever owns client policy, not something this comment decides.
|
|
75
|
+
*
|
|
76
|
+
* `$defs`/`$ref` is NOT the lever people reach for first: measured on the same wire,
|
|
77
|
+
* every byte-identical repeated sub-schema across all 75 tools totals 8,145 B (4.0%),
|
|
78
|
+
* and the property-level subset a normal emitter would catch is 2,758 B (1.3%).
|
|
79
|
+
*
|
|
80
|
+
* 200,000 bytes ~55K tokens. This FIRES TODAY for the continuity presets
|
|
81
|
+
* (`mcp:claude` at 224,730) and passes for base `mcp` at 162,238 — deliberately, and
|
|
82
|
+
* stated here because an earlier draft of this comment claimed it would not fire on
|
|
83
|
+
* arrival, which was true only for the preset I had measured. The finding is `medium`
|
|
84
|
+
* and does not fail the audit, so it reports real pressure without breaking a gate.
|
|
85
|
+
* When it trips, the first question is whether that tool's action union should be
|
|
86
|
+
* split or deferred — not whether the number should go up.
|
|
87
|
+
*/
|
|
88
|
+
export const WIRE_CATALOG_BUDGET_BYTES = 200_000;
|
|
89
|
+
function asJsonObject(value) {
|
|
90
|
+
const parsed = JsonObjectSchema.safeParse(value);
|
|
91
|
+
return parsed.success ? parsed.data : undefined;
|
|
92
|
+
}
|
|
93
|
+
function isStringValue(value) {
|
|
94
|
+
return typeof value === 'string';
|
|
95
|
+
}
|
|
96
|
+
function isToolAsset(value) {
|
|
97
|
+
return typeof value === 'object' && value !== null && 'id' in value && 'schemas' in value;
|
|
98
|
+
}
|
|
99
|
+
function rejectRpc(code) {
|
|
100
|
+
return new CapabilityError('the MCP child rejected the request', 'INTERNAL', {
|
|
101
|
+
reason: 'mcp-wire-rejected',
|
|
102
|
+
details: { code }
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
function rpcRejectionCode(error) {
|
|
106
|
+
if (!isCapabilityError(error) || error.reason !== 'mcp-wire-rejected')
|
|
107
|
+
return undefined;
|
|
108
|
+
const parsed = RpcRejectionSchema.safeParse(error.details);
|
|
109
|
+
return parsed.success ? parsed.data.code : undefined;
|
|
110
|
+
}
|
|
111
|
+
const DEFAULT_TIMEOUT_MS = 180_000;
|
|
112
|
+
/** Grace for the additive post-initialized re-selection before listing. */
|
|
113
|
+
const LIST_SETTLE_MS = 1_500;
|
|
114
|
+
/**
|
|
115
|
+
* Spawn the real serve and photograph tools/list. Throws on timeout/handshake
|
|
116
|
+
* failure — a wire that can't answer IS the finding, never a silent pass.
|
|
117
|
+
*/
|
|
118
|
+
export async function captureWireSelfie(options) {
|
|
119
|
+
const timeoutMs = options.timeoutMs ?? DEFAULT_TIMEOUT_MS;
|
|
120
|
+
const root = options.cwd;
|
|
121
|
+
const command = options.command;
|
|
122
|
+
const lifecycle = options.runtime.lifecycle;
|
|
123
|
+
const startedAt = Date.now();
|
|
124
|
+
const [cmd, ...cmdArgs] = command;
|
|
125
|
+
if (!cmd)
|
|
126
|
+
throw new Error('Wire Selfie: MCP serve command is empty');
|
|
127
|
+
const proc = await (await getRuntimeExecution(options.runtime)).spawn({
|
|
128
|
+
command: cmd,
|
|
129
|
+
args: cmdArgs,
|
|
130
|
+
cwd: root,
|
|
131
|
+
env: composeHostEnv(options.runtime),
|
|
132
|
+
envMode: 'replace',
|
|
133
|
+
stdin: 'pipe',
|
|
134
|
+
stdout: 'pipe',
|
|
135
|
+
stderr: 'ignore'
|
|
136
|
+
});
|
|
137
|
+
if (!proc.stdin || !proc.stdout) {
|
|
138
|
+
await proc.kill();
|
|
139
|
+
throw new Error('Wire Selfie: the execution provider returned no stdio pipes for the MCP serve child');
|
|
140
|
+
}
|
|
141
|
+
const stdin = proc.stdin.getWriter();
|
|
142
|
+
const stdout = proc.stdout.getReader();
|
|
143
|
+
const encoder = new TextEncoder();
|
|
144
|
+
const pending = new Map();
|
|
145
|
+
let sawListChanged = false;
|
|
146
|
+
let nextId = 1;
|
|
147
|
+
const readerDone = (async () => {
|
|
148
|
+
const decoder = new TextDecoder();
|
|
149
|
+
let buffer = '';
|
|
150
|
+
for (;;) {
|
|
151
|
+
const { done, value: chunk } = await stdout.read();
|
|
152
|
+
if (done)
|
|
153
|
+
break;
|
|
154
|
+
buffer += decoder.decode(chunk, { stream: true });
|
|
155
|
+
let newline = buffer.indexOf('\n');
|
|
156
|
+
while (newline >= 0) {
|
|
157
|
+
const line = buffer.slice(0, newline).trim();
|
|
158
|
+
buffer = buffer.slice(newline + 1);
|
|
159
|
+
newline = buffer.indexOf('\n');
|
|
160
|
+
if (!line.startsWith('{'))
|
|
161
|
+
continue;
|
|
162
|
+
const parsedLine = settleNow(() => JsonRpcMessageSchema.parse(JSON.parse(line)));
|
|
163
|
+
if (!parsedLine.ok) {
|
|
164
|
+
getLogger('mcp', options.runtime).debug('tool audit: non-JSON line from the served child skipped', { failure: valueFreeFailure(parsedLine.cause) });
|
|
165
|
+
continue;
|
|
166
|
+
}
|
|
167
|
+
const msg = parsedLine.value;
|
|
168
|
+
if (msg.method === 'notifications/tools/list_changed')
|
|
169
|
+
sawListChanged = true;
|
|
170
|
+
if (msg.id !== undefined && (msg.result !== undefined || msg.error)) {
|
|
171
|
+
pending.get(msg.id)?.(msg);
|
|
172
|
+
pending.delete(msg.id);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
})();
|
|
177
|
+
function send(message) {
|
|
178
|
+
return stdin.write(encoder.encode(`${JSON.stringify(message)}\n`));
|
|
179
|
+
}
|
|
180
|
+
function request(method, params) {
|
|
181
|
+
const id = nextId++;
|
|
182
|
+
const deadline = timeoutMs - (Date.now() - startedAt);
|
|
183
|
+
const response = new Promise((resolve, reject) => {
|
|
184
|
+
const disarm = lifecycle.timeout(() => {
|
|
185
|
+
pending.delete(id);
|
|
186
|
+
reject(new Error(`Wire Selfie: '${method}' timed out (${timeoutMs}ms total budget)`));
|
|
187
|
+
}, Math.max(deadline, 1));
|
|
188
|
+
pending.set(id, (msg) => {
|
|
189
|
+
disarm();
|
|
190
|
+
if (msg.error)
|
|
191
|
+
reject(rejectRpc(msg.error.code));
|
|
192
|
+
else
|
|
193
|
+
resolve(msg);
|
|
194
|
+
});
|
|
195
|
+
void settle(async () => {
|
|
196
|
+
await send({ jsonrpc: '2.0', id, method, params });
|
|
197
|
+
}).then((sent) => {
|
|
198
|
+
if (sent.ok)
|
|
199
|
+
return;
|
|
200
|
+
disarm();
|
|
201
|
+
pending.delete(id);
|
|
202
|
+
reject(sent.cause);
|
|
203
|
+
});
|
|
204
|
+
});
|
|
205
|
+
const unexpectedExit = proc.exited.then(({ code }) => {
|
|
206
|
+
throw new Error(`Wire Selfie: MCP child exited with code ${code} before '${method}' responded`);
|
|
207
|
+
});
|
|
208
|
+
return Promise.race([response, unexpectedExit]);
|
|
209
|
+
}
|
|
210
|
+
try {
|
|
211
|
+
const initialize = await request('initialize', {
|
|
212
|
+
protocolVersion: '2025-03-26',
|
|
213
|
+
capabilities: {},
|
|
214
|
+
clientInfo: { name: `wire-selfie:${options.clientId}`, version: '1.0.0' }
|
|
215
|
+
});
|
|
216
|
+
const initializeResult = asJsonObject(initialize.result);
|
|
217
|
+
await send({ jsonrpc: '2.0', method: 'notifications/initialized' });
|
|
218
|
+
let birth;
|
|
219
|
+
let birthError;
|
|
220
|
+
const birthAttempt = await settle(() => resolveProjectionBirthMetadata(isStringValue(initializeResult?.instructions) ? initializeResult.instructions : undefined, async (uri) => (await request('resources/read', { uri })).result));
|
|
221
|
+
if (birthAttempt.ok)
|
|
222
|
+
birth = birthAttempt.value;
|
|
223
|
+
else
|
|
224
|
+
birthError = 'Server birth resource is unavailable or invalid; birth evidence could not be verified';
|
|
225
|
+
// A settle grace for the additive post-initialized re-selection: the server
|
|
226
|
+
// signals only a change (list_changed), never "selection complete".
|
|
227
|
+
await lifecycle.delay(LIST_SETTLE_MS);
|
|
228
|
+
const served = [];
|
|
229
|
+
// Re-list once if an additive list_changed lands after our first pass.
|
|
230
|
+
for (let attempt = 0; attempt < 2; attempt++) {
|
|
231
|
+
served.length = 0;
|
|
232
|
+
sawListChanged = false;
|
|
233
|
+
let cursor;
|
|
234
|
+
do {
|
|
235
|
+
const response = await request('tools/list', cursor ? { cursor } : {});
|
|
236
|
+
const result = ToolsListResultSchema.parse(response.result);
|
|
237
|
+
for (const tool of result.tools) {
|
|
238
|
+
// Measure the entry as the wire carried it, before we project it
|
|
239
|
+
// down to property names — this is the only point where the real
|
|
240
|
+
// serialized cost is in hand.
|
|
241
|
+
const wireBytes = new TextEncoder().encode(JSON.stringify(tool)).byteLength;
|
|
242
|
+
const inputSchema = asJsonObject(tool.inputSchema);
|
|
243
|
+
const properties = asJsonObject(inputSchema?.properties);
|
|
244
|
+
served.push({
|
|
245
|
+
name: tool.name,
|
|
246
|
+
description: isStringValue(tool.description) ? tool.description : undefined,
|
|
247
|
+
inputProperties: properties ? Object.keys(properties).sort() : [],
|
|
248
|
+
wireBytes,
|
|
249
|
+
parts: splitWireParts(tool, wireBytes)
|
|
250
|
+
});
|
|
251
|
+
}
|
|
252
|
+
cursor = isStringValue(result?.nextCursor) ? result.nextCursor : undefined;
|
|
253
|
+
} while (cursor);
|
|
254
|
+
if (!sawListChanged)
|
|
255
|
+
break;
|
|
256
|
+
await lifecycle.delay(LIST_SETTLE_MS);
|
|
257
|
+
}
|
|
258
|
+
let canary;
|
|
259
|
+
if (options.canary) {
|
|
260
|
+
const { toolId, input } = options.canary;
|
|
261
|
+
if (!served.some((tool) => tool.name === toolId)) {
|
|
262
|
+
canary = {
|
|
263
|
+
toolId,
|
|
264
|
+
status: 'not-served',
|
|
265
|
+
failureKind: 'projection',
|
|
266
|
+
detail: 'selected read-safe canary was absent from the fresh-spawn catalog'
|
|
267
|
+
};
|
|
268
|
+
}
|
|
269
|
+
else {
|
|
270
|
+
const called = await settle(() => request('tools/call', { name: toolId, arguments: input }));
|
|
271
|
+
if (called.ok) {
|
|
272
|
+
const admitted = CallToolResultSchema.safeParse(called.value.result);
|
|
273
|
+
if (!admitted.success) {
|
|
274
|
+
canary = {
|
|
275
|
+
toolId,
|
|
276
|
+
status: 'failed',
|
|
277
|
+
failureKind: 'schema',
|
|
278
|
+
detail: 'MCP tool call result is not a CallToolResult'
|
|
279
|
+
};
|
|
280
|
+
}
|
|
281
|
+
else if (admitted.data.isError === true) {
|
|
282
|
+
canary = {
|
|
283
|
+
toolId,
|
|
284
|
+
status: 'failed',
|
|
285
|
+
failureKind: 'implementation',
|
|
286
|
+
detail: 'MCP tool call returned isError=true'
|
|
287
|
+
};
|
|
288
|
+
}
|
|
289
|
+
else {
|
|
290
|
+
canary = { toolId, status: 'passed' };
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
else {
|
|
294
|
+
const error = called.cause;
|
|
295
|
+
const rpcCode = rpcRejectionCode(error);
|
|
296
|
+
const failureKind = rpcCode === -32602 ? 'schema' : rpcCode === -32601 ? 'projection' : 'transport';
|
|
297
|
+
canary = {
|
|
298
|
+
toolId,
|
|
299
|
+
status: 'failed',
|
|
300
|
+
failureKind,
|
|
301
|
+
detail: boundedDiagnostic(valueFreeFailure(error).name)
|
|
302
|
+
};
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
const capture = {
|
|
307
|
+
clientId: options.clientId,
|
|
308
|
+
served,
|
|
309
|
+
captureMs: Date.now() - startedAt,
|
|
310
|
+
wireBytes: served.reduce((sum, tool) => sum + tool.wireBytes, 0),
|
|
311
|
+
birth,
|
|
312
|
+
canary
|
|
313
|
+
};
|
|
314
|
+
if (birthError)
|
|
315
|
+
capture.birthError = birthError;
|
|
316
|
+
return capture;
|
|
317
|
+
}
|
|
318
|
+
finally {
|
|
319
|
+
// Killing the child closes its pipes; its stdin needs no separate EOF.
|
|
320
|
+
await proc.kill();
|
|
321
|
+
// The killed child's output ends the reader; bound the drain, never wait on a wedged pipe.
|
|
322
|
+
const drained = await settle(() => lifecycle.wait(() => readerDone, { timeoutMs: 1_000, reason: 'wire-selfie-reader-drain' }));
|
|
323
|
+
if (!drained.ok && !isLifecycleDeadline(drained.cause)) {
|
|
324
|
+
getLogger('mcp', options.runtime).debug('tool audit: wire selfie reader drain failed', { failure: valueFreeFailure(drained.cause) });
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
/**
|
|
329
|
+
* Split one served entry's bytes by tool-entry key. `envelope` is the remainder, so
|
|
330
|
+
* the four parts always sum to `wireBytes` no matter what future keys the SDK adds —
|
|
331
|
+
* a breakdown that silently drops a key would be the same class of lie this exists to
|
|
332
|
+
* prevent. Each part is measured as the JSON the wire carried, including its own key
|
|
333
|
+
* name and separators, so the sum is exact rather than approximately right.
|
|
334
|
+
*/
|
|
335
|
+
export function splitWireParts(tool, wireBytes) {
|
|
336
|
+
// `"key":value,` — the cost of carrying this key at all, as serialized.
|
|
337
|
+
const keyBytes = (key) => key in tool ? new TextEncoder().encode(JSON.stringify(key)).byteLength + 1 + new TextEncoder().encode(JSON.stringify(tool[key])).byteLength + 1 : 0;
|
|
338
|
+
const inputSchema = keyBytes('inputSchema');
|
|
339
|
+
const outputSchema = keyBytes('outputSchema');
|
|
340
|
+
const description = keyBytes('description');
|
|
341
|
+
return {
|
|
342
|
+
inputSchema,
|
|
343
|
+
outputSchema,
|
|
344
|
+
description,
|
|
345
|
+
envelope: Math.max(wireBytes - inputSchema - outputSchema - description, 0)
|
|
346
|
+
};
|
|
347
|
+
}
|
|
348
|
+
/** Top-level property names the authoring path would put on the wire; a conversion failure is logged on `runtime`. */
|
|
349
|
+
function authoredInputProperties(runtime, descriptor) {
|
|
350
|
+
const input = descriptor.schemas?.input;
|
|
351
|
+
if (!(input instanceof z.ZodType))
|
|
352
|
+
return input ? undefined : [];
|
|
353
|
+
const flattened = settleNow(() => flattenDiscriminatedUnionToObject(input));
|
|
354
|
+
if (!flattened.ok) {
|
|
355
|
+
// Authoring-side conversion failure is itself reported by the caller; the reason is logged too.
|
|
356
|
+
getLogger('mcp', runtime).debug('tool audit: input schema could not be flattened', { failure: valueFreeFailure(flattened.cause) });
|
|
357
|
+
return undefined;
|
|
358
|
+
}
|
|
359
|
+
const projected = settleNow(() => toRuntimeJsonSchema(flattened.value, { io: 'input', target: 'draft-7' }));
|
|
360
|
+
if (!projected.ok) {
|
|
361
|
+
getLogger('mcp', runtime).debug('tool audit: input schema could not be flattened', { failure: valueFreeFailure(projected.cause) });
|
|
362
|
+
return undefined;
|
|
363
|
+
}
|
|
364
|
+
const properties = asJsonObject(projected.value.properties);
|
|
365
|
+
return properties ? Object.keys(properties).sort() : [];
|
|
366
|
+
}
|
|
367
|
+
/**
|
|
368
|
+
* Pure diff of a capture against the local registry catalog. Local-catalog
|
|
369
|
+
* coverage caveats are reported as informational findings instead of silently
|
|
370
|
+
* skewing severities — the CLI world's plugin set can differ from serve's.
|
|
371
|
+
*/
|
|
372
|
+
export function diffWireSelfie(runtime, capture, configured) {
|
|
373
|
+
const customPresets = runtimePurposePresets(runtime, configured);
|
|
374
|
+
const descriptors = runtime.assets('tools/tool').descriptors().filter(isToolAsset);
|
|
375
|
+
const byId = new Map(descriptors.map((d) => [d.id, d]));
|
|
376
|
+
const servedByName = new Map(capture.served.map((s) => [s.name, s]));
|
|
377
|
+
const findings = [];
|
|
378
|
+
const localToolIds = localToolsOf(runtime).toolIds;
|
|
379
|
+
// Policy expectation WITHOUT availableIds: the serve world resolves its own
|
|
380
|
+
// loaders; a policy-selected tool missing from the wire is exactly the
|
|
381
|
+
// signal we exist to catch (loader gap there, or registration failure).
|
|
382
|
+
const expected = selectMcpTools(descriptors, { mcpClientId: capture.clientId, customPresets });
|
|
383
|
+
const expectedIds = new Set(expected.descriptors.map((d) => d.id));
|
|
384
|
+
for (const id of expectedIds) {
|
|
385
|
+
if (!servedByName.has(id)) {
|
|
386
|
+
findings.push({
|
|
387
|
+
severity: 'high',
|
|
388
|
+
code: 'selected-not-served',
|
|
389
|
+
toolId: id,
|
|
390
|
+
detail: 'policy-selected for this client but ABSENT from the served wire — serve-world ' +
|
|
391
|
+
'loader gap or schema-registration failure (the brain-outage class); check serve logs'
|
|
392
|
+
});
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
for (const served of capture.served) {
|
|
396
|
+
const descriptor = byId.get(served.name);
|
|
397
|
+
if (!descriptor) {
|
|
398
|
+
findings.push({
|
|
399
|
+
severity: 'low',
|
|
400
|
+
code: 'served-not-in-local-catalog',
|
|
401
|
+
toolId: served.name,
|
|
402
|
+
detail: 'served on the wire but this audit world has no descriptor for it — ' +
|
|
403
|
+
'description/schema diffs skipped (serve world composes more plugins)'
|
|
404
|
+
});
|
|
405
|
+
continue;
|
|
406
|
+
}
|
|
407
|
+
const authored = authoredInputProperties(runtime, descriptor);
|
|
408
|
+
if (authored === undefined) {
|
|
409
|
+
findings.push({
|
|
410
|
+
severity: 'medium',
|
|
411
|
+
code: 'authored-schema-unconvertible',
|
|
412
|
+
toolId: served.name,
|
|
413
|
+
detail: 'local authored input schema failed wire conversion — audit that schema'
|
|
414
|
+
});
|
|
415
|
+
}
|
|
416
|
+
else if (served.inputProperties.length === 0 && authored.length > 0) {
|
|
417
|
+
findings.push({
|
|
418
|
+
severity: 'high',
|
|
419
|
+
code: 'served-empty-schema',
|
|
420
|
+
toolId: served.name,
|
|
421
|
+
detail: `served inputSchema has NO properties while authoring produces [${authored.join(', ')}] — the field-laundering class`
|
|
422
|
+
});
|
|
423
|
+
}
|
|
424
|
+
else if (authored.length > 0) {
|
|
425
|
+
const missing = authored.filter((p) => !served.inputProperties.includes(p));
|
|
426
|
+
if (missing.length > 0) {
|
|
427
|
+
findings.push({
|
|
428
|
+
severity: 'medium',
|
|
429
|
+
code: 'served-property-loss',
|
|
430
|
+
toolId: served.name,
|
|
431
|
+
detail: `served schema is missing authored properties: ${missing.join(', ')}`
|
|
432
|
+
});
|
|
433
|
+
}
|
|
434
|
+
}
|
|
435
|
+
const expectedDescriptionRaw = resolveMcpDescription(descriptor);
|
|
436
|
+
// Local tools are advertised over MCP with a [local] prefix to distinguish them
|
|
437
|
+
// from platform tools. The live audit sees the prefixed description on the wire.
|
|
438
|
+
const isLocal = isLocalToolId(descriptor.id, localToolIds);
|
|
439
|
+
const expectedDescription = formatLocalMcpToolDescription(expectedDescriptionRaw, isLocal);
|
|
440
|
+
if (expectedDescription && served.description !== expectedDescription) {
|
|
441
|
+
findings.push({
|
|
442
|
+
severity: 'medium',
|
|
443
|
+
code: 'served-description-drift',
|
|
444
|
+
toolId: served.name,
|
|
445
|
+
detail: `served description differs from what current source produces — stale served body ` +
|
|
446
|
+
`or wire mangling. served=${JSON.stringify(truncate(served.description ?? '', 80))} ` +
|
|
447
|
+
`expected=${JSON.stringify(truncate(expectedDescription, 80))}`
|
|
448
|
+
});
|
|
449
|
+
}
|
|
450
|
+
if (!expectedIds.has(served.name)) {
|
|
451
|
+
findings.push({
|
|
452
|
+
severity: 'low',
|
|
453
|
+
code: 'served-not-selected',
|
|
454
|
+
toolId: served.name,
|
|
455
|
+
detail: 'on the wire but not in this client\'s policy selection (extra exposure)'
|
|
456
|
+
});
|
|
457
|
+
}
|
|
458
|
+
}
|
|
459
|
+
// Aggregate catalog weight, measured on the wire. Names the worst offenders,
|
|
460
|
+
// because "the catalog is too big" is unactionable and "browser is 12KB behind
|
|
461
|
+
// an 80-char description" is a decision someone can make.
|
|
462
|
+
if (capture.wireBytes > WIRE_CATALOG_BUDGET_BYTES) {
|
|
463
|
+
// Name each offender's own composition, not just its total: "awareness 18253B
|
|
464
|
+
// (59% out)" points at the output schema; "workspace-fs 10840B (86% in)" points
|
|
465
|
+
// at the action union. The old text prescribed "split a wide action union" for
|
|
466
|
+
// both, which is wrong for the first and cost a session to discover.
|
|
467
|
+
const heaviest = [...capture.served]
|
|
468
|
+
.sort((a, b) => b.wireBytes - a.wireBytes)
|
|
469
|
+
.slice(0, 5)
|
|
470
|
+
.map((t) => `${t.name} ${t.wireBytes}B (${describeComposition(t)})`)
|
|
471
|
+
.join(', ');
|
|
472
|
+
const totals = capture.served.reduce((sum, t) => ({
|
|
473
|
+
inputSchema: sum.inputSchema + t.parts.inputSchema,
|
|
474
|
+
outputSchema: sum.outputSchema + t.parts.outputSchema,
|
|
475
|
+
description: sum.description + t.parts.description,
|
|
476
|
+
envelope: sum.envelope + t.parts.envelope
|
|
477
|
+
}), { inputSchema: 0, outputSchema: 0, description: 0, envelope: 0 });
|
|
478
|
+
const pct = (n) => `${Math.round((n / capture.wireBytes) * 100)}%`;
|
|
479
|
+
findings.push({
|
|
480
|
+
severity: 'medium',
|
|
481
|
+
code: 'wire-catalog-budget-exceeded',
|
|
482
|
+
toolId: `client:${capture.clientId}`,
|
|
483
|
+
detail: `tools/list serves ${capture.served.length} tools totalling ${capture.wireBytes} bytes ` +
|
|
484
|
+
`(~${Math.round(capture.wireBytes / 3.6)} tokens), over the ${WIRE_CATALOG_BUDGET_BYTES}-byte ` +
|
|
485
|
+
`catalog budget. Every non-deferring client pays this on every request. ` +
|
|
486
|
+
`Composition: inputSchema ${totals.inputSchema}B (${pct(totals.inputSchema)}), ` +
|
|
487
|
+
`outputSchema ${totals.outputSchema}B (${pct(totals.outputSchema)}), ` +
|
|
488
|
+
`description ${totals.description}B (${pct(totals.description)}), ` +
|
|
489
|
+
`envelope ${totals.envelope}B (${pct(totals.envelope)}). ` +
|
|
490
|
+
`Heaviest: ${heaviest}. Fix what the split names — an input-heavy tool wants its ` +
|
|
491
|
+
`action union split or deferred; an output-heavy one cannot be fixed that way at all. ` +
|
|
492
|
+
`Raising the budget is a real decision, not the default fix`
|
|
493
|
+
});
|
|
494
|
+
}
|
|
495
|
+
findings.sort((a, b) => severityRank(a.severity) - severityRank(b.severity) || a.toolId.localeCompare(b.toolId));
|
|
496
|
+
return {
|
|
497
|
+
view: 'wire',
|
|
498
|
+
clientId: capture.clientId,
|
|
499
|
+
servedCount: capture.served.length,
|
|
500
|
+
expectedCount: expectedIds.size,
|
|
501
|
+
captureMs: capture.captureMs,
|
|
502
|
+
wireBytes: capture.wireBytes,
|
|
503
|
+
findings,
|
|
504
|
+
ok: findings.every((f) => f.severity !== 'high')
|
|
505
|
+
};
|
|
506
|
+
}
|
|
507
|
+
export async function runWireSelfie(runtime, options) {
|
|
508
|
+
const capture = await captureWireSelfie({
|
|
509
|
+
...options,
|
|
510
|
+
runtime,
|
|
511
|
+
cwd: await runtime.context('runtime/workspace-path')
|
|
512
|
+
});
|
|
513
|
+
return diffWireSelfie(runtime, capture, await loadPurposePresetOverrides(runtime));
|
|
514
|
+
}
|
|
515
|
+
/**
|
|
516
|
+
* The dominant key of one entry, as a two-word hint the reader can act on. Reports
|
|
517
|
+
* the majority share only — a 45/40 split gets `mixed`, because calling that one
|
|
518
|
+
* "input-heavy" would aim the remedy at just over half the bytes.
|
|
519
|
+
*/
|
|
520
|
+
function describeComposition(tool) {
|
|
521
|
+
const { inputSchema, outputSchema } = tool.parts;
|
|
522
|
+
const share = (n) => Math.round((n / Math.max(tool.wireBytes, 1)) * 100);
|
|
523
|
+
if (inputSchema >= outputSchema * 2)
|
|
524
|
+
return `${share(inputSchema)}% in`;
|
|
525
|
+
if (outputSchema >= inputSchema * 2)
|
|
526
|
+
return `${share(outputSchema)}% out`;
|
|
527
|
+
return `${share(inputSchema)}% in / ${share(outputSchema)}% out`;
|
|
528
|
+
}
|
|
529
|
+
function truncate(value, max) {
|
|
530
|
+
return value.length > max ? `${value.slice(0, max)}…` : value;
|
|
531
|
+
}
|
|
532
|
+
function severityRank(severity) {
|
|
533
|
+
return severity === 'high' ? 0 : severity === 'medium' ? 1 : 2;
|
|
534
|
+
}
|
|
535
|
+
function boundedDiagnostic(value) {
|
|
536
|
+
return value.length > 240 ? `${value.slice(0, 240)}…` : value;
|
|
537
|
+
}
|
|
538
|
+
//# sourceMappingURL=tool-audit-live.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-audit-live.js","sourceRoot":"","sources":["../../../src/adapters/mcp/tool-audit-live.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool-exposure audit — the czar cycle's reusable core.
|
|
3
|
+
*
|
|
4
|
+
* ONE implementation of "is every declared tool reachable and wire-honest",
|
|
5
|
+
* consumed by both the `vibes dev audit tools` CLI command and (future) a
|
|
6
|
+
* `tools/tool` runtime capability. It does NOT re-implement the exposure funnel:
|
|
7
|
+
* it drives the real `explainMcpToolSelection` (the same mirror the serve path
|
|
8
|
+
* logs) across every MCP client preset, over the real runtime descriptor
|
|
9
|
+
* catalog.
|
|
10
|
+
*
|
|
11
|
+
* SCOPE — this is the POLICY view (world-independent): it audits what each preset
|
|
12
|
+
* *intends* to expose from the declared catalog, plus wire-shape properties of the
|
|
13
|
+
* descriptors. It deliberately does NOT assert loader-resolvability, because that
|
|
14
|
+
* depends on which plugins the *running* world composed — the ambient CLI world
|
|
15
|
+
* is not the MCP serve world, so a bare `available()` here under-reports and would
|
|
16
|
+
* cry "zombie" for tools the serve path loads fine. Serve-world reachability +
|
|
17
|
+
* served-vs-authored schema drift is the job of the live "Wire Selfie" handshake
|
|
18
|
+
* (the earned next in docs/proposals/universal-tools-czar/), which spawns a real
|
|
19
|
+
* serve per preset and diffs tools/list. Keeping v1 honest beats a plausible-wrong
|
|
20
|
+
* verdict. Distinct from the static `scripts/check-tool-coverage.ts` gate (source
|
|
21
|
+
* text scan for descriptor↔loader drift): this drives the LIVE registry policy.
|
|
22
|
+
*/
|
|
23
|
+
import type { VibesRuntime } from '@vibesdotdev/kernel';
|
|
24
|
+
import type { PurposePreset } from '@vibesdotdev/tools/schemas/presets/schema';
|
|
25
|
+
import type { ToolAuditReport } from '../../schemas/audit.ts';
|
|
26
|
+
export type { PresetExposure, ToolAuditFinding, ToolAuditReport } from '../../schemas/audit.ts';
|
|
27
|
+
/**
|
|
28
|
+
* Run the exposure POLICY audit against the live runtime catalog. Pure of
|
|
29
|
+
* process/stdout so the CLI, a scheduled guard, a test, and a future tools/tool
|
|
30
|
+
* can all consume it.
|
|
31
|
+
*/
|
|
32
|
+
export declare function runToolExposureAudit(runtime: VibesRuntime, configured?: Record<string, PurposePreset>): ToolAuditReport;
|
|
33
|
+
/**
|
|
34
|
+
* The orphan rule, extracted so it stays falsifiable: the registry offers no
|
|
35
|
+
* injection point for a synthetic preset set, and under a `*` base catalog no
|
|
36
|
+
* real descriptor can currently trip it end-to-end.
|
|
37
|
+
*
|
|
38
|
+
* A tool is an ACCIDENTAL orphan when no audited preset exposes it AND no
|
|
39
|
+
* preset excluded it on purpose (`disabled-pattern` / `preset-explicit-disable`).
|
|
40
|
+
* Exposure through a catch-all preset counts — a tool served to claude is not
|
|
41
|
+
* orphaned.
|
|
42
|
+
*/
|
|
43
|
+
export declare function isAccidentalOrphan(exposedByAnyPreset: boolean, exclusionReasons: ReadonlySet<string>): boolean;
|
|
44
|
+
//# sourceMappingURL=tool-audit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-audit.d.ts","sourceRoot":"","sources":["../../../src/adapters/mcp/tool-audit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAIxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2CAA2C,CAAC;AAY/E,OAAO,KAAK,EAAoC,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAChG,YAAY,EAAE,cAAc,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEhG;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,GAAG,eAAe,CA2HvH;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CACjC,kBAAkB,EAAE,OAAO,EAC3B,gBAAgB,EAAE,WAAW,CAAC,MAAM,CAAC,GACnC,OAAO,CAKT"}
|