@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 @@
|
|
|
1
|
+
{"version":3,"file":"from-api-endpoint.js","sourceRoot":"","sources":["../../../src/adapters/mcp/from-api-endpoint.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { VibesRuntime } from '@vibesdotdev/kernel/api/runtime';
|
|
2
|
+
/** Clients can revalidate old results against their newest cached schemas.
|
|
3
|
+
* Compatible catalogs refresh live; incompatible existing contracts need maintenance. */
|
|
4
|
+
export declare function validateMcpGeneration(candidate: VibesRuntime, previous: VibesRuntime): void;
|
|
5
|
+
//# sourceMappingURL=generation-contract.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generation-contract.d.ts","sourceRoot":"","sources":["../../../src/adapters/mcp/generation-contract.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AASpE;yFACyF;AACzF,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,YAAY,EAAE,QAAQ,EAAE,YAAY,GAAG,IAAI,CAqB3F"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { RuntimeJsonSchemaSourceSchema, toRuntimeJsonSchema } from '@vibesdotdev/kernel/schemas/json-schema';
|
|
2
|
+
function isToolAsset(descriptor) {
|
|
3
|
+
return descriptor.kind === 'tools/tool' && 'schemas' in descriptor;
|
|
4
|
+
}
|
|
5
|
+
/** Clients can revalidate old results against their newest cached schemas.
|
|
6
|
+
* Compatible catalogs refresh live; incompatible existing contracts need maintenance. */
|
|
7
|
+
export function validateMcpGeneration(candidate, previous) {
|
|
8
|
+
// Resources/prompts have distinct capability negotiation. Tool catalogs and
|
|
9
|
+
// schemas refresh in place; a change to these other surfaces needs their
|
|
10
|
+
// transport contract to be prepared too.
|
|
11
|
+
const definitions = (runtime) => JSON.stringify(runtime.hasKind('tools/tool')
|
|
12
|
+
? runtime.query('tools/tool').enabled().descriptors().filter(isToolAsset)
|
|
13
|
+
.filter((descriptor) => descriptor.mcp).map((descriptor) => ({ id: descriptor.id, mcp: descriptor.mcp })).sort((a, b) => a.id.localeCompare(b.id)) : []);
|
|
14
|
+
if (definitions(candidate) !== definitions(previous))
|
|
15
|
+
throw new Error('MCP resource/prompt contract changed; maintenance required');
|
|
16
|
+
const schemaContract = (descriptor) => JSON.stringify({
|
|
17
|
+
input: descriptor.schemas?.input ? toRuntimeJsonSchema(RuntimeJsonSchemaSourceSchema.parse(descriptor.schemas.input), { unrepresentable: 'any' }) : null,
|
|
18
|
+
output: descriptor.schemas?.output ? toRuntimeJsonSchema(RuntimeJsonSchemaSourceSchema.parse(descriptor.schemas.output), { unrepresentable: 'any' }) : null
|
|
19
|
+
});
|
|
20
|
+
if (!candidate.hasKind('tools/tool'))
|
|
21
|
+
return;
|
|
22
|
+
for (const descriptor of candidate.query('tools/tool').enabled().descriptors().filter(isToolAsset)) {
|
|
23
|
+
const previousDescriptor = previous.hasKind('tools/tool') ? previous.assets('tools/tool').descriptor(descriptor.id) : undefined;
|
|
24
|
+
const before = previousDescriptor !== undefined && isToolAsset(previousDescriptor) ? previousDescriptor : undefined;
|
|
25
|
+
if (before && schemaContract(before) !== schemaContract(descriptor))
|
|
26
|
+
throw new Error(`MCP wire schema changed for '${descriptor.id}'; maintenance required`);
|
|
27
|
+
if (!descriptor.schemas?.input)
|
|
28
|
+
throw new Error(`MCP tool '${descriptor.id}' has no input schema`);
|
|
29
|
+
toRuntimeJsonSchema(RuntimeJsonSchemaSourceSchema.parse(descriptor.schemas.input), { unrepresentable: 'any' });
|
|
30
|
+
if (descriptor.schemas.output)
|
|
31
|
+
toRuntimeJsonSchema(RuntimeJsonSchemaSourceSchema.parse(descriptor.schemas.output), { unrepresentable: 'any' });
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=generation-contract.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generation-contract.js","sourceRoot":"","sources":["../../../src/adapters/mcp/generation-contract.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Where the shared MCP host for a workspace advertises itself.
|
|
3
|
+
*
|
|
4
|
+
* WHY A REGISTRY AND NOT A PORT PROBE. The relay has to answer "is there a host
|
|
5
|
+
* I may attach to?" and the honest form of that question includes "…serving THIS
|
|
6
|
+
* workspace?". Probing a well-known port answers neither: port 3000 is the most
|
|
7
|
+
* contended port on a developer machine, and something answering there is not
|
|
8
|
+
* evidence it is a vibes MCP host, let alone one rooted at the same workspace.
|
|
9
|
+
* Attaching to the wrong host would hand an agent another workspace's tools and
|
|
10
|
+
* another workspace's session state, and the symptom would surface far from the
|
|
11
|
+
* cause.
|
|
12
|
+
*
|
|
13
|
+
* So the host writes a claim, and the relay verifies every part of it before
|
|
14
|
+
* trusting it: the process is alive AND is the process that wrote the claim, it
|
|
15
|
+
* is rooted at the same workspace, and it answers. A stale claim (host killed,
|
|
16
|
+
* machine rebooted, pid recycled) fails verification and is treated as "no
|
|
17
|
+
* host" — never as a reason to fail.
|
|
18
|
+
*
|
|
19
|
+
* ONE HOST PER WORKSPACE, not per machine. The runtime daemons are already
|
|
20
|
+
* per-workspace and that is correct: a workspace is the unit that owns a
|
|
21
|
+
* `.vibes` state directory, so two workspaces cannot share one runtime without
|
|
22
|
+
* sharing their sessions. Keying this registry by workspace root keeps the
|
|
23
|
+
* relay consistent with that.
|
|
24
|
+
*
|
|
25
|
+
* SUPERSEDED 2026-10-26 by ADR-0020 (developer root
|
|
26
|
+
* `docs/decisions/ADR-0020-one-global-daemon-set-session-threads.md`): one MCP
|
|
27
|
+
* host per machine forwards every call to the one runtime daemon, where each
|
|
28
|
+
* session is its own thread. Two workspaces share the process, not a runtime.
|
|
29
|
+
* This per-workspace registry stays until the plan's Phase 5 replaces it; do
|
|
30
|
+
* not extend it.
|
|
31
|
+
*/
|
|
32
|
+
import { type RuntimeRef } from '@vibesdotdev/kernel';
|
|
33
|
+
import type { LoggerImplementation } from '@vibesdotdev/logging';
|
|
34
|
+
import { workspaceKey } from '@vibesdotdev/paths/workspace-mcp-host';
|
|
35
|
+
import type { PathRoots } from '@vibesdotdev/paths';
|
|
36
|
+
/** The roots a host claim lives under: the caller's runtime `vibesHome`. */
|
|
37
|
+
export type HostClaimRoots = Pick<PathRoots, 'vibesHome'>;
|
|
38
|
+
/** The runtime a claim is read or written through: its selected filesystem adapter. */
|
|
39
|
+
export type HostClaimRuntime = RuntimeRef;
|
|
40
|
+
export interface McpHostClaim {
|
|
41
|
+
/** Process id of the host, used for liveness. */
|
|
42
|
+
pid: number;
|
|
43
|
+
/** Port the host's HTTP transport listens on. */
|
|
44
|
+
port: number;
|
|
45
|
+
/** Absolute workspace root the host is serving. */
|
|
46
|
+
workspaceRoot: string;
|
|
47
|
+
/** ISO timestamp, for diagnostics and staleness reporting. */
|
|
48
|
+
startedAt: string;
|
|
49
|
+
/**
|
|
50
|
+
* The catalog this host is actually serving.
|
|
51
|
+
*
|
|
52
|
+
* A host resolves its tool catalog ONCE at boot (`selectMcpTools`, called
|
|
53
|
+
* from `buildServer`) and bakes it into a single McpServer. So a client that
|
|
54
|
+
* wanted a different catalog cannot be served correctly by this host — it
|
|
55
|
+
* would silently receive whatever the host booted with. Not a crash: an agent
|
|
56
|
+
* quietly holding the wrong tools, which is harder to notice and worse.
|
|
57
|
+
*
|
|
58
|
+
* Advertising it lets the relay refuse a mismatch instead of papering over
|
|
59
|
+
* it. Undefined means the host did not say, which is treated as "cannot
|
|
60
|
+
* prove a match" — refuse rather than guess.
|
|
61
|
+
*/
|
|
62
|
+
presetId?: string;
|
|
63
|
+
/** Exact Tools-owned policy the host used when baking its catalog. */
|
|
64
|
+
presetPolicyKey?: string;
|
|
65
|
+
/** Existing preset attach identity, computed from this host's actual selected policy. */
|
|
66
|
+
catalogAttachKey?: string;
|
|
67
|
+
/** Harness/client id the host resolved its catalog for. */
|
|
68
|
+
clientId?: string;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Stable, filesystem-safe key for a workspace root.
|
|
72
|
+
*
|
|
73
|
+
* Re-exported, not defined here. Pure identity and portable hashing live in
|
|
74
|
+
* `@vibesdotdev/paths`, because
|
|
75
|
+
* `@vibesdotdev/tools` must compute the same key to find this claim, and `mcp`
|
|
76
|
+
* already depends on `tools` (so `tools` can never depend on `mcp`). One hash,
|
|
77
|
+
* one notion of "which workspace is this", so the claim file, the derived port,
|
|
78
|
+
* and every reader of both can never disagree.
|
|
79
|
+
*/
|
|
80
|
+
export { workspaceKey };
|
|
81
|
+
/**
|
|
82
|
+
* The claim path for `workspaceRoot` under the selected `vibesHome` of the
|
|
83
|
+
* runtime the caller was handed (`getPathRoots(runtime)`, D40); never the
|
|
84
|
+
* process's home and never a literal `.vibes`.
|
|
85
|
+
*/
|
|
86
|
+
export declare function hostRegistryPath(workspaceRoot: string, roots: HostClaimRoots): string;
|
|
87
|
+
/**
|
|
88
|
+
* The relay attestation claim for `workspaceRoot` under the runtime's roots, beside its host
|
|
89
|
+
* claim (RC08 U7). The host writes a fresh secret there each start through
|
|
90
|
+
* runtime-rpc's local-attestation primitive; a same-user relay reads it and
|
|
91
|
+
* presents it as its bearer. The host claim itself carries no secret.
|
|
92
|
+
*/
|
|
93
|
+
export declare function mcpRelayAttestationPath(workspaceRoot: string, roots: HostClaimRoots): string;
|
|
94
|
+
/**
|
|
95
|
+
* Advertise this process as the shared host for `workspaceRoot`, through the
|
|
96
|
+
* runtime's filesystem: an owner-private write the adapter renames into place,
|
|
97
|
+
* so a reader never sees half a claim and no other user can read it.
|
|
98
|
+
*/
|
|
99
|
+
export declare function writeHostClaim(runtime: HostClaimRuntime, claim: McpHostClaim, roots: HostClaimRoots): Promise<void>;
|
|
100
|
+
/**
|
|
101
|
+
* Remove this workspace's claim. Safe to call when none exists.
|
|
102
|
+
*
|
|
103
|
+
* With `owner`, only the process that wrote the claim may withdraw it.
|
|
104
|
+
* Measured 2026-09-06: an orphaned http body from a retired worktree shared
|
|
105
|
+
* the developer root with the live managed host; on SIGTERM its shutdown
|
|
106
|
+
* cleared the root's claim unconditionally, and every relay started after
|
|
107
|
+
* that got "no shared host has advertised a claim" while the real host kept
|
|
108
|
+
* serving. Returns true when a file was removed.
|
|
109
|
+
*/
|
|
110
|
+
export declare function clearHostClaim(runtime: HostClaimRuntime, workspaceRoot: string, roots: HostClaimRoots,
|
|
111
|
+
/** The withdrawing owner, and its logger from its handed runtime for a torn claim file. */
|
|
112
|
+
owner?: {
|
|
113
|
+
pid: number;
|
|
114
|
+
logger: Pick<LoggerImplementation, 'debug'>;
|
|
115
|
+
}): Promise<boolean>;
|
|
116
|
+
/**
|
|
117
|
+
* How a claim's pid is checked against the host's process table: through the
|
|
118
|
+
* runtime's process service (liveness) and host identity (start time).
|
|
119
|
+
*/
|
|
120
|
+
export interface HostProcessProbe {
|
|
121
|
+
/** Whether `pid` is a running process. */
|
|
122
|
+
isRunning: (pid: number) => Promise<boolean>;
|
|
123
|
+
/**
|
|
124
|
+
* Wall-clock start of `pid` in epoch ms, or null when the process table no
|
|
125
|
+
* longer lists it. Throws typed when the table cannot be read: an
|
|
126
|
+
* unanswered probe is not a liveness verdict.
|
|
127
|
+
*/
|
|
128
|
+
processStartMs: (pid: number) => number | null | Promise<number | null>;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* The production probe on `runtime`: its `runtime/process` service and its
|
|
132
|
+
* declared host identity. A host offering neither refuses typed; liveness is
|
|
133
|
+
* never guessed.
|
|
134
|
+
*/
|
|
135
|
+
export declare function hostProcessProbe(runtime: Pick<RuntimeRef, 'hasKind' | 'query'>): Promise<HostProcessProbe>;
|
|
136
|
+
export type HostLookup = {
|
|
137
|
+
status: 'live';
|
|
138
|
+
claim: McpHostClaim;
|
|
139
|
+
url: string;
|
|
140
|
+
} | {
|
|
141
|
+
status: 'none';
|
|
142
|
+
} | {
|
|
143
|
+
status: 'stale';
|
|
144
|
+
claim: McpHostClaim;
|
|
145
|
+
reason: 'dead-process' | 'workspace-mismatch';
|
|
146
|
+
};
|
|
147
|
+
/**
|
|
148
|
+
* Read and VERIFY the claim for a workspace, through `runtime`'s filesystem.
|
|
149
|
+
*
|
|
150
|
+
* Verification is the point of this function. A claim file proves someone once
|
|
151
|
+
* intended to host; it does not prove anyone is hosting now. Returning `stale`
|
|
152
|
+
* rather than `none` for a failed check keeps the difference visible to callers
|
|
153
|
+
* that want to report it — "the host died" and "there was never a host" call for
|
|
154
|
+
* different messages.
|
|
155
|
+
*/
|
|
156
|
+
export declare function readHostClaim(runtime: HostClaimRuntime, workspaceRoot: string, roots: HostClaimRoots, probe: HostProcessProbe,
|
|
157
|
+
/** The reader's logger from its handed runtime: a torn claim file is reported here. */
|
|
158
|
+
logger: Pick<LoggerImplementation, 'debug'>): Promise<HostLookup>;
|
|
159
|
+
//# sourceMappingURL=host-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"host-registry.d.ts","sourceRoot":"","sources":["../../../src/adapters/mcp/host-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Where the shared MCP host for a workspace advertises itself.
|
|
3
|
+
*
|
|
4
|
+
* WHY A REGISTRY AND NOT A PORT PROBE. The relay has to answer "is there a host
|
|
5
|
+
* I may attach to?" and the honest form of that question includes "…serving THIS
|
|
6
|
+
* workspace?". Probing a well-known port answers neither: port 3000 is the most
|
|
7
|
+
* contended port on a developer machine, and something answering there is not
|
|
8
|
+
* evidence it is a vibes MCP host, let alone one rooted at the same workspace.
|
|
9
|
+
* Attaching to the wrong host would hand an agent another workspace's tools and
|
|
10
|
+
* another workspace's session state, and the symptom would surface far from the
|
|
11
|
+
* cause.
|
|
12
|
+
*
|
|
13
|
+
* So the host writes a claim, and the relay verifies every part of it before
|
|
14
|
+
* trusting it: the process is alive AND is the process that wrote the claim, it
|
|
15
|
+
* is rooted at the same workspace, and it answers. A stale claim (host killed,
|
|
16
|
+
* machine rebooted, pid recycled) fails verification and is treated as "no
|
|
17
|
+
* host" — never as a reason to fail.
|
|
18
|
+
*
|
|
19
|
+
* ONE HOST PER WORKSPACE, not per machine. The runtime daemons are already
|
|
20
|
+
* per-workspace and that is correct: a workspace is the unit that owns a
|
|
21
|
+
* `.vibes` state directory, so two workspaces cannot share one runtime without
|
|
22
|
+
* sharing their sessions. Keying this registry by workspace root keeps the
|
|
23
|
+
* relay consistent with that.
|
|
24
|
+
*
|
|
25
|
+
* SUPERSEDED 2026-10-26 by ADR-0020 (developer root
|
|
26
|
+
* `docs/decisions/ADR-0020-one-global-daemon-set-session-threads.md`): one MCP
|
|
27
|
+
* host per machine forwards every call to the one runtime daemon, where each
|
|
28
|
+
* session is its own thread. Two workspaces share the process, not a runtime.
|
|
29
|
+
* This per-workspace registry stays until the plan's Phase 5 replaces it; do
|
|
30
|
+
* not extend it.
|
|
31
|
+
*/
|
|
32
|
+
import * as z from 'zod/v4';
|
|
33
|
+
import { CapabilityError, getRuntimeHostIdentity, isCapabilityError, settle, settleNow, valueFreeFailure } from '@vibesdotdev/kernel';
|
|
34
|
+
import { getRuntimeProcessService } from '@vibesdotdev/kernel/process';
|
|
35
|
+
import { resolveFileSystemAdapter } from '@vibesdotdev/filesystem/client/resolve-adapter';
|
|
36
|
+
import { writeFilePrivate } from '@vibesdotdev/filesystem';
|
|
37
|
+
import { mcpHostClaimPath, workspaceKey } from '@vibesdotdev/paths/workspace-mcp-host';
|
|
38
|
+
/**
|
|
39
|
+
* Host claims are home state (`vibesHome`), not workspace files: they are read
|
|
40
|
+
* and written through the host's unbound filesystem adapter, never the
|
|
41
|
+
* workspace-rooted binding (which refuses paths outside the workspace).
|
|
42
|
+
*/
|
|
43
|
+
const HOME_STATE_FILESYSTEM = { binding: false };
|
|
44
|
+
/**
|
|
45
|
+
* Stable, filesystem-safe key for a workspace root.
|
|
46
|
+
*
|
|
47
|
+
* Re-exported, not defined here. Pure identity and portable hashing live in
|
|
48
|
+
* `@vibesdotdev/paths`, because
|
|
49
|
+
* `@vibesdotdev/tools` must compute the same key to find this claim, and `mcp`
|
|
50
|
+
* already depends on `tools` (so `tools` can never depend on `mcp`). One hash,
|
|
51
|
+
* one notion of "which workspace is this", so the claim file, the derived port,
|
|
52
|
+
* and every reader of both can never disagree.
|
|
53
|
+
*/
|
|
54
|
+
export { workspaceKey };
|
|
55
|
+
/**
|
|
56
|
+
* The claim path for `workspaceRoot` under the selected `vibesHome` of the
|
|
57
|
+
* runtime the caller was handed (`getPathRoots(runtime)`, D40); never the
|
|
58
|
+
* process's home and never a literal `.vibes`.
|
|
59
|
+
*/
|
|
60
|
+
export function hostRegistryPath(workspaceRoot, roots) {
|
|
61
|
+
return mcpHostClaimPath(workspaceRoot, roots);
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* The relay attestation claim for `workspaceRoot` under the runtime's roots, beside its host
|
|
65
|
+
* claim (RC08 U7). The host writes a fresh secret there each start through
|
|
66
|
+
* runtime-rpc's local-attestation primitive; a same-user relay reads it and
|
|
67
|
+
* presents it as its bearer. The host claim itself carries no secret.
|
|
68
|
+
*/
|
|
69
|
+
export function mcpRelayAttestationPath(workspaceRoot, roots) {
|
|
70
|
+
return hostRegistryPath(workspaceRoot, roots).replace(/\.json$/, '.attestation');
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Advertise this process as the shared host for `workspaceRoot`, through the
|
|
74
|
+
* runtime's filesystem: an owner-private write the adapter renames into place,
|
|
75
|
+
* so a reader never sees half a claim and no other user can read it.
|
|
76
|
+
*/
|
|
77
|
+
export async function writeHostClaim(runtime, claim, roots) {
|
|
78
|
+
const filesystem = await resolveFileSystemAdapter(runtime, HOME_STATE_FILESYSTEM);
|
|
79
|
+
const path = hostRegistryPath(claim.workspaceRoot, roots);
|
|
80
|
+
await filesystem.mkdir(filesystem.dirname(path), { recursive: true, mode: 0o700 });
|
|
81
|
+
await writeFilePrivate(filesystem, path, `${JSON.stringify(claim, null, 2)}\n`, 'utf8');
|
|
82
|
+
}
|
|
83
|
+
/** The claim file's text, or null when there is none; any other failure propagates typed. */
|
|
84
|
+
async function readClaimText(runtime, path) {
|
|
85
|
+
const filesystem = await resolveFileSystemAdapter(runtime, HOME_STATE_FILESYSTEM);
|
|
86
|
+
if (!(await filesystem.exists(path)))
|
|
87
|
+
return null;
|
|
88
|
+
const read = await settle(() => filesystem.readFile(path, 'utf8'));
|
|
89
|
+
if (!read.ok) {
|
|
90
|
+
// Withdrawn between the existence check and the read: no claim.
|
|
91
|
+
if (isCapabilityError(read.cause) && read.cause.code === 'NOT_FOUND')
|
|
92
|
+
return null;
|
|
93
|
+
throw new CapabilityError('The MCP host claim cannot be read.', 'UNAVAILABLE', {
|
|
94
|
+
reason: 'mcp-host-claim-unreadable',
|
|
95
|
+
retryable: false,
|
|
96
|
+
details: { failure: valueFreeFailure(read.cause).name },
|
|
97
|
+
cause: read.cause
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
if (isUtf8Text(read.value))
|
|
101
|
+
return read.value;
|
|
102
|
+
return new TextDecoder().decode(read.value);
|
|
103
|
+
}
|
|
104
|
+
function isUtf8Text(value) {
|
|
105
|
+
return typeof value === 'string';
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Remove this workspace's claim. Safe to call when none exists.
|
|
109
|
+
*
|
|
110
|
+
* With `owner`, only the process that wrote the claim may withdraw it.
|
|
111
|
+
* Measured 2026-09-06: an orphaned http body from a retired worktree shared
|
|
112
|
+
* the developer root with the live managed host; on SIGTERM its shutdown
|
|
113
|
+
* cleared the root's claim unconditionally, and every relay started after
|
|
114
|
+
* that got "no shared host has advertised a claim" while the real host kept
|
|
115
|
+
* serving. Returns true when a file was removed.
|
|
116
|
+
*/
|
|
117
|
+
export async function clearHostClaim(runtime, workspaceRoot, roots,
|
|
118
|
+
/** The withdrawing owner, and its logger from its handed runtime for a torn claim file. */
|
|
119
|
+
owner) {
|
|
120
|
+
const path = hostRegistryPath(workspaceRoot, roots);
|
|
121
|
+
const raw = await readClaimText(runtime, path);
|
|
122
|
+
if (raw === null)
|
|
123
|
+
return false; // nothing to withdraw
|
|
124
|
+
if (owner) {
|
|
125
|
+
const claim = parseClaim(raw, owner.logger);
|
|
126
|
+
if (claim && claim.pid !== owner.pid)
|
|
127
|
+
return false; // someone else's live claim
|
|
128
|
+
}
|
|
129
|
+
const filesystem = await resolveFileSystemAdapter(runtime, HOME_STATE_FILESYSTEM);
|
|
130
|
+
await filesystem.remove(path);
|
|
131
|
+
return true;
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* The production probe on `runtime`: its `runtime/process` service and its
|
|
135
|
+
* declared host identity. A host offering neither refuses typed; liveness is
|
|
136
|
+
* never guessed.
|
|
137
|
+
*/
|
|
138
|
+
export async function hostProcessProbe(runtime) {
|
|
139
|
+
const [processes, identity] = await Promise.all([getRuntimeProcessService(runtime), getRuntimeHostIdentity(runtime)]);
|
|
140
|
+
return {
|
|
141
|
+
isRunning: (pid) => processes.isRunning(pid),
|
|
142
|
+
processStartMs: (pid) => identity.readProcessStartMs(pid)
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* `ps` reports elapsed time in whole seconds, and the claim and the probe are
|
|
147
|
+
* not read on the same clock tick. A genuine host is always EARLIER than its
|
|
148
|
+
* claim by however long the runtime took to boot, so the window only has to
|
|
149
|
+
* absorb rounding — 5 s is generous without letting a recycled pid through.
|
|
150
|
+
*/
|
|
151
|
+
const CLAIM_START_TOLERANCE_MS = 5_000;
|
|
152
|
+
/**
|
|
153
|
+
* Is the process at `claim.pid` the one that wrote the claim?
|
|
154
|
+
*
|
|
155
|
+
* Liveness proves a pid exists; it does not prove it is OUR process. The host
|
|
156
|
+
* writes its claim AFTER it boots, so the host that wrote it started before
|
|
157
|
+
* `startedAt`. A pid that started after the claim inherited the number from a
|
|
158
|
+
* host that has since died — the recycled-pid case. A pid the process table no
|
|
159
|
+
* longer lists exited after the liveness check saw it. A table that cannot be
|
|
160
|
+
* read fails typed; liveness is never guessed.
|
|
161
|
+
*/
|
|
162
|
+
async function claimedProcessIsRunning(claim, probe) {
|
|
163
|
+
if (!Number.isSafeInteger(claim.pid) || claim.pid <= 0)
|
|
164
|
+
return false;
|
|
165
|
+
if (!(await probe.isRunning(claim.pid)))
|
|
166
|
+
return false;
|
|
167
|
+
const claimedStartMs = Date.parse(claim.startedAt);
|
|
168
|
+
if (!Number.isFinite(claimedStartMs))
|
|
169
|
+
return true;
|
|
170
|
+
const actualStartMs = await probe.processStartMs(claim.pid);
|
|
171
|
+
if (actualStartMs === null)
|
|
172
|
+
return false;
|
|
173
|
+
return actualStartMs <= claimedStartMs + CLAIM_START_TOLERANCE_MS;
|
|
174
|
+
}
|
|
175
|
+
/** A claim file's shape; the optional catalog fields are read independently of the required ones. */
|
|
176
|
+
const ClaimSchema = z.object({
|
|
177
|
+
pid: z.number(),
|
|
178
|
+
port: z.number(),
|
|
179
|
+
workspaceRoot: z.string(),
|
|
180
|
+
startedAt: z.string(),
|
|
181
|
+
presetId: z.string().optional().catch(undefined),
|
|
182
|
+
presetPolicyKey: z.string().optional().catch(undefined),
|
|
183
|
+
catalogAttachKey: z.string().optional().catch(undefined),
|
|
184
|
+
clientId: z.string().optional().catch(undefined)
|
|
185
|
+
});
|
|
186
|
+
function parseClaim(raw, logger) {
|
|
187
|
+
const parsedJson = settleNow(() => JSON.parse(raw));
|
|
188
|
+
if (!parsedJson.ok) {
|
|
189
|
+
// A torn or hand-edited file is no claim: the relay reports "no host".
|
|
190
|
+
logger.debug('mcp host claim is not valid JSON; treating as no claim', {
|
|
191
|
+
failure: valueFreeFailure(parsedJson.cause)
|
|
192
|
+
});
|
|
193
|
+
return null;
|
|
194
|
+
}
|
|
195
|
+
const parsed = ClaimSchema.safeParse(parsedJson.value);
|
|
196
|
+
if (!parsed.success)
|
|
197
|
+
return null;
|
|
198
|
+
const claim = { pid: parsed.data.pid, port: parsed.data.port, workspaceRoot: parsed.data.workspaceRoot, startedAt: parsed.data.startedAt };
|
|
199
|
+
if (parsed.data.presetId !== undefined)
|
|
200
|
+
claim.presetId = parsed.data.presetId;
|
|
201
|
+
if (parsed.data.presetPolicyKey !== undefined)
|
|
202
|
+
claim.presetPolicyKey = parsed.data.presetPolicyKey;
|
|
203
|
+
if (parsed.data.catalogAttachKey !== undefined)
|
|
204
|
+
claim.catalogAttachKey = parsed.data.catalogAttachKey;
|
|
205
|
+
if (parsed.data.clientId !== undefined)
|
|
206
|
+
claim.clientId = parsed.data.clientId;
|
|
207
|
+
return claim;
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Read and VERIFY the claim for a workspace, through `runtime`'s filesystem.
|
|
211
|
+
*
|
|
212
|
+
* Verification is the point of this function. A claim file proves someone once
|
|
213
|
+
* intended to host; it does not prove anyone is hosting now. Returning `stale`
|
|
214
|
+
* rather than `none` for a failed check keeps the difference visible to callers
|
|
215
|
+
* that want to report it — "the host died" and "there was never a host" call for
|
|
216
|
+
* different messages.
|
|
217
|
+
*/
|
|
218
|
+
export async function readHostClaim(runtime, workspaceRoot, roots, probe,
|
|
219
|
+
/** The reader's logger from its handed runtime: a torn claim file is reported here. */
|
|
220
|
+
logger) {
|
|
221
|
+
const raw = await readClaimText(runtime, hostRegistryPath(workspaceRoot, roots));
|
|
222
|
+
if (raw === null)
|
|
223
|
+
return { status: 'none' };
|
|
224
|
+
const claim = parseClaim(raw, logger);
|
|
225
|
+
if (!claim)
|
|
226
|
+
return { status: 'none' };
|
|
227
|
+
// A claim for a different root in this workspace's slot means the hash
|
|
228
|
+
// collided or the file was hand-edited. Never attach across workspaces.
|
|
229
|
+
if (claim.workspaceRoot !== workspaceRoot) {
|
|
230
|
+
return { status: 'stale', claim, reason: 'workspace-mismatch' };
|
|
231
|
+
}
|
|
232
|
+
if (!(await claimedProcessIsRunning(claim, probe))) {
|
|
233
|
+
return { status: 'stale', claim, reason: 'dead-process' };
|
|
234
|
+
}
|
|
235
|
+
return { status: 'live', claim, url: `http://127.0.0.1:${claim.port}/mcp` };
|
|
236
|
+
}
|
|
237
|
+
//# sourceMappingURL=host-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"host-registry.js","sourceRoot":"","sources":["../../../src/adapters/mcp/host-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export { createMcpAdapter } from './server.consumer.ts';
|
|
2
|
+
export type { McpAdapter, McpAdapterOptions, SamplingRequest, SamplingResult } from '../types.ts';
|
|
3
|
+
export type { McpUser, McpToolResult } from '../../types.ts';
|
|
4
|
+
export { type McpToolContext, type McpHttpRequest, type WorkspaceSource, type WorkspaceContext, type McpServerRuntimeConfig, type McpToolExecutionInfo, type McpRuntimeContext, prepareMcpToolExecution, prepareMcpToolExecutionAsync } from './context.ts';
|
|
5
|
+
export { type McpInputSchema, type McpResponseFormatter, defaultFormatter, tableFormatter, listFormatter } from './formatters.ts';
|
|
6
|
+
export { type McpResourceContent, type VibesResource, type VibesResourceTemplate, type VibesPrompt, type ApiToolConfig, type McpServerConfig, type McpToolMetadata, type McpToolHandler, type McpTool } from './vibes-types.ts';
|
|
7
|
+
export { fromApiEndpoint, type FromApiEndpointConfig, type ApiRequestTransform } from './from-api-endpoint.ts';
|
|
8
|
+
export { ensureSamplingAvailable, buildSamplingMessages } from './sampling.ts';
|
|
9
|
+
export { buildProjectionDoctorReport, runProjectionDoctor } from './projection-doctor.ts';
|
|
10
|
+
export type { ProjectionDoctorChallenge, ProjectionDoctorFinding, ProjectionDoctorReport, ProjectionFailureKind, ProjectionHostAttestation } from './projection-doctor.ts';
|
|
11
|
+
export { wrapToolOutputText, deriveTrustTier, shouldDropFromModelContext, TIER_3_DROP_PLACEHOLDER, TOOL_OUTPUT_TRUST_INSTRUCTION, type TrustTier, type TrustTaggedText } from './trust-tag.ts';
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapters/mcp/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,YAAY,EAAE,UAAU,EAAE,iBAAiB,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAGlG,YAAY,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAG7D,OAAO,EACN,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAC3B,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACtB,uBAAuB,EACvB,4BAA4B,EAC5B,MAAM,cAAc,CAAC;AAGtB,OAAO,EACN,KAAK,cAAc,EACnB,KAAK,oBAAoB,EACzB,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACN,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,KAAK,qBAAqB,EAC1B,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,OAAO,EACZ,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACN,eAAe,EACf,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EACxB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACN,uBAAuB,EACvB,qBAAqB,EACrB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,2BAA2B,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC1F,YAAY,EACX,yBAAyB,EACzB,uBAAuB,EACvB,sBAAsB,EACtB,qBAAqB,EACrB,yBAAyB,EACzB,MAAM,wBAAwB,CAAC;AAIhC,OAAO,EACN,kBAAkB,EAClB,eAAe,EACf,0BAA0B,EAC1B,uBAAuB,EACvB,6BAA6B,EAC7B,KAAK,SAAS,EACd,KAAK,eAAe,EACpB,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export { createMcpAdapter } from "./server.consumer.js";
|
|
2
|
+
// Tool context and types
|
|
3
|
+
export { prepareMcpToolExecution, prepareMcpToolExecutionAsync } from "./context.js";
|
|
4
|
+
// Formatters
|
|
5
|
+
export { defaultFormatter, tableFormatter, listFormatter } from "./formatters.js";
|
|
6
|
+
// Vibes-domain MCP types
|
|
7
|
+
export {} from "./vibes-types.js";
|
|
8
|
+
// Tool helpers
|
|
9
|
+
export { fromApiEndpoint } from "./from-api-endpoint.js";
|
|
10
|
+
export { ensureSamplingAvailable, buildSamplingMessages } from "./sampling.js";
|
|
11
|
+
export { buildProjectionDoctorReport, runProjectionDoctor } from "./projection-doctor.js";
|
|
12
|
+
// Trust-tag wrapper (F4 / VIBA-34). Callers that build the system prompt
|
|
13
|
+
// must include TOOL_OUTPUT_TRUST_INSTRUCTION before any tool-result turns.
|
|
14
|
+
export { wrapToolOutputText, deriveTrustTier, shouldDropFromModelContext, TIER_3_DROP_PLACEHOLDER, TOOL_OUTPUT_TRUST_INSTRUCTION } from "./trust-tag.js";
|
|
15
|
+
// Note: Low-level transport primitives are available from @vibesdotdev/mcp
|
|
16
|
+
// This adapter provides tool-specific MCP server building
|
|
17
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/adapters/mcp/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAMxD,yBAAyB;AACzB,OAAO,EAQN,uBAAuB,EACvB,4BAA4B,EAC5B,MAAM,cAAc,CAAC;AAEtB,aAAa;AACb,OAAO,EAGN,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,MAAM,iBAAiB,CAAC;AAEzB,yBAAyB;AACzB,OAAO,EAUN,MAAM,kBAAkB,CAAC;AAE1B,eAAe;AACf,OAAO,EACN,eAAe,EAGf,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACN,uBAAuB,EACvB,qBAAqB,EACrB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,2BAA2B,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAS1F,yEAAyE;AACzE,2EAA2E;AAC3E,OAAO,EACN,kBAAkB,EAClB,eAAe,EACf,0BAA0B,EAC1B,uBAAuB,EACvB,6BAA6B,EAG7B,MAAM,gBAAgB,CAAC;AAExB,2EAA2E;AAC3E,0DAA0D"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What an agent is told when it is running on a private runtime.
|
|
3
|
+
*
|
|
4
|
+
* `--isolated` is a legitimate mode — it is the only way to debug the runtime
|
|
5
|
+
* itself, or to run a build that is not the one the host is serving. It is also
|
|
6
|
+
* expensive in a way that is completely invisible from inside: a process cannot
|
|
7
|
+
* see the other nine like it. That asymmetry is the whole reason this notice
|
|
8
|
+
* exists. The agent holding this runtime is the only party in a position to
|
|
9
|
+
* release it, and the only one with no way to know it should.
|
|
10
|
+
*
|
|
11
|
+
* It goes in the MCP `instructions` field, NOT a stderr line. Instructions are
|
|
12
|
+
* read into the agent's context at session start; stderr is written where no
|
|
13
|
+
* agent will ever look. A warning nobody reads is indistinguishable from no
|
|
14
|
+
* warning at all — and it is worse, because it lets the author believe the
|
|
15
|
+
* problem was handled.
|
|
16
|
+
*
|
|
17
|
+
* The same diagnosis also has to reach the client that could NOT attach.
|
|
18
|
+
* Standard stdio never falls back to a private runtime — `startStdioMcp`
|
|
19
|
+
* throws — so the thrown message is the only place a failed attach is ever
|
|
20
|
+
* explained. `attachFailureMessage` builds it from the same cause text as the
|
|
21
|
+
* notice (`attachCause`), so the two surfaces cannot drift into telling
|
|
22
|
+
* different stories about one claim.
|
|
23
|
+
*/
|
|
24
|
+
/**
|
|
25
|
+
* A host url as a notice may print it: scheme, host and path only. Userinfo,
|
|
26
|
+
* query and fragment can carry credentials (VIBES_MCP_HOST_URL is operator
|
|
27
|
+
* input) and are dropped; the rest still passes the shared credential redactor.
|
|
28
|
+
* An unparseable value is removed whole.
|
|
29
|
+
*/
|
|
30
|
+
export declare function renderHostUrl(url: string): string;
|
|
31
|
+
/** The commands a failed attach points at. Both exist on the installed CLI. */
|
|
32
|
+
export declare const HOST_STATUS_COMMAND = "vibes dev mcp status";
|
|
33
|
+
export declare const HOST_RESTART_COMMAND = "vibes dev mcp restart";
|
|
34
|
+
/** The part of a host claim a message needs in order to name the process it judged. */
|
|
35
|
+
export interface AttachClaimSummary {
|
|
36
|
+
pid: number;
|
|
37
|
+
port: number;
|
|
38
|
+
workspaceRoot: string;
|
|
39
|
+
startedAt: string;
|
|
40
|
+
presetId?: string;
|
|
41
|
+
}
|
|
42
|
+
export interface IsolatedNoticeInput {
|
|
43
|
+
/** Why this process ended up isolated. */
|
|
44
|
+
reason: 'requested' | 'no-host' | 'stale-host' | 'unreachable' | 'identity-mismatch' | 'transport-unavailable';
|
|
45
|
+
/** For 'identity-mismatch': what the host serves vs what was asked for. */
|
|
46
|
+
mismatch?: {
|
|
47
|
+
hostPreset?: string;
|
|
48
|
+
wantedPreset?: string;
|
|
49
|
+
};
|
|
50
|
+
/** Present when a host was found but could not be used. */
|
|
51
|
+
staleReason?: 'dead-process' | 'workspace-mismatch';
|
|
52
|
+
workspaceRoot?: string;
|
|
53
|
+
/** The claim the relay judged, when it read one, so a message can name the pid it refused. */
|
|
54
|
+
claim?: AttachClaimSummary;
|
|
55
|
+
/** The host url that was tried, when discovery or VIBES_MCP_HOST_URL produced one. */
|
|
56
|
+
url?: string;
|
|
57
|
+
/** True when `url` came from VIBES_MCP_HOST_URL rather than a claim. */
|
|
58
|
+
explicitUrl?: boolean;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* What the relay found when it could not attach: everything the notice knows
|
|
62
|
+
* except `requested`, which is a decision, not a finding.
|
|
63
|
+
*/
|
|
64
|
+
export type AttachFinding = Omit<IsolatedNoticeInput, 'reason'> & {
|
|
65
|
+
reason: Exclude<IsolatedNoticeInput['reason'], 'requested'>;
|
|
66
|
+
};
|
|
67
|
+
/**
|
|
68
|
+
* The cause, as a clause that follows "because" — the ONE description of what
|
|
69
|
+
* the relay found. `reasonLine` frames it for an agent that is now isolated;
|
|
70
|
+
* `attachFailureMessage` frames it for a client that got nothing at all. Two
|
|
71
|
+
* framings, one diagnosis, so they cannot disagree about the same claim.
|
|
72
|
+
*/
|
|
73
|
+
export declare function attachCause(input: IsolatedNoticeInput): string;
|
|
74
|
+
/** One concrete thing to do about the finding. */
|
|
75
|
+
export declare function attachNextStep(finding: AttachFinding): string;
|
|
76
|
+
/** The relay's receipt, as much of it as a message can use. `RelayResult` is assignable. */
|
|
77
|
+
export interface AttachFailureReceipt {
|
|
78
|
+
relayed?: boolean;
|
|
79
|
+
reason?: AttachFinding['reason'] | 'disabled';
|
|
80
|
+
mismatch?: IsolatedNoticeInput['mismatch'];
|
|
81
|
+
staleReason?: IsolatedNoticeInput['staleReason'];
|
|
82
|
+
url?: string;
|
|
83
|
+
claim?: AttachClaimSummary;
|
|
84
|
+
}
|
|
85
|
+
export interface AttachFailureContext {
|
|
86
|
+
workspaceRoot: string;
|
|
87
|
+
/** VIBES_MCP_HOST_URL, when the client set it. */
|
|
88
|
+
hostUrl?: string;
|
|
89
|
+
/** True when PM was asked to start the host before the final attempt. */
|
|
90
|
+
hostStarted?: boolean;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* The error a standard-stdio client sees when it cannot attach.
|
|
94
|
+
*
|
|
95
|
+
* Specific on purpose. The previous text ("check status; --isolated is explicit
|
|
96
|
+
* debugging only") was identical for a dead pid, a foreign workspace, a wrong
|
|
97
|
+
* catalog and a dead socket, while the relay had already worked out which one
|
|
98
|
+
* it was. It still says the load-bearing thing — no private runtime was started
|
|
99
|
+
* — because a silent ~6GB fallback is the failure this path exists to prevent.
|
|
100
|
+
*/
|
|
101
|
+
export declare function attachFailureMessage(receipt: AttachFailureReceipt, context: AttachFailureContext): string;
|
|
102
|
+
/**
|
|
103
|
+
* Build the instructions section. Returns undefined for the shared path, so the
|
|
104
|
+
* normal case adds nothing to the agent's context.
|
|
105
|
+
*
|
|
106
|
+
* The text is THE prompts kind's: `mcp.instructions.private-runtime` when
|
|
107
|
+
* isolation is simply correct, `mcp.instructions.isolated-runtime` otherwise.
|
|
108
|
+
* The cause clause stays `attachCause`, shared with `attachFailureMessage`.
|
|
109
|
+
*/
|
|
110
|
+
export declare function isolatedRuntimeInstructions(input: IsolatedNoticeInput | undefined): string | undefined;
|
|
111
|
+
//# sourceMappingURL=isolated-notice.d.ts.map
|