@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,617 @@
|
|
|
1
|
+
import { toJsonSchemaCompat } from '@modelcontextprotocol/sdk/server/zod-json-schema-compat.js';
|
|
2
|
+
import { CapabilityError } from '@vibesdotdev/kernel';
|
|
3
|
+
import * as z from 'zod/v4';
|
|
4
|
+
// Single source of truth (ai-schemas literal, re-exported by tools). Never re-litigate the budget here.
|
|
5
|
+
import { MCP_DESCRIPTION_LIMIT } from '@vibesdotdev/tools/schemas/schema';
|
|
6
|
+
import { omitContextBoundInputs } from '@vibesdotdev/tools/agents/native-tool-definitions';
|
|
7
|
+
// Wire DU flatten owned by tools — invoke gate + tools/list share one algorithm.
|
|
8
|
+
import { flattenDiscriminatedUnionToObject as flattenDiscriminatedUnionToObjectFromTools, flattenRootUnion as flattenRootUnionFromTools, getDiscriminator as getDiscriminatorFromTools, getDiscriminatorOptions as getDiscriminatorOptionsFromTools, isDiscriminatedUnion as isDiscriminatedUnionFromTools, isPlainUnion as isPlainUnionFromTools } from '@vibesdotdev/tools/schemas/discriminated-union-wire';
|
|
9
|
+
export const isPlainUnion = isPlainUnionFromTools;
|
|
10
|
+
function isStringValue(value) {
|
|
11
|
+
return typeof value === 'string';
|
|
12
|
+
}
|
|
13
|
+
function inferWrapType(schema) {
|
|
14
|
+
const type = schema.type;
|
|
15
|
+
if (type === 'object')
|
|
16
|
+
return 'object';
|
|
17
|
+
if (type === 'array')
|
|
18
|
+
return 'array';
|
|
19
|
+
if (isStringValue(type))
|
|
20
|
+
return 'primitive';
|
|
21
|
+
return 'none';
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* JSON Schema string formats whose `pattern` is fully implied by `format`.
|
|
25
|
+
* Zod v4 emits both `format: "uuid"` AND a 96-char regex pattern for UUIDs,
|
|
26
|
+
* and a 600+ char regex for date-time. Stripping the pattern when format is
|
|
27
|
+
* one of these standard names keeps the schema valid (servers still validate
|
|
28
|
+
* via Zod) while shrinking the wire payload significantly.
|
|
29
|
+
*/
|
|
30
|
+
const PATTERN_REDUNDANT_FORMATS = new Set([
|
|
31
|
+
'uuid',
|
|
32
|
+
'date-time',
|
|
33
|
+
'date',
|
|
34
|
+
'time',
|
|
35
|
+
'duration',
|
|
36
|
+
'email',
|
|
37
|
+
'idn-email',
|
|
38
|
+
'uri',
|
|
39
|
+
'uri-reference',
|
|
40
|
+
'iri',
|
|
41
|
+
'iri-reference',
|
|
42
|
+
'hostname',
|
|
43
|
+
'idn-hostname',
|
|
44
|
+
'ipv4',
|
|
45
|
+
'ipv6',
|
|
46
|
+
'regex',
|
|
47
|
+
'json-pointer',
|
|
48
|
+
'relative-json-pointer'
|
|
49
|
+
]);
|
|
50
|
+
/**
|
|
51
|
+
* Serialize a JSON-schema node with recursively sorted keys so structural
|
|
52
|
+
* equality can be tested via string comparison regardless of key order.
|
|
53
|
+
*/
|
|
54
|
+
function canonicalJson(node) {
|
|
55
|
+
if (Array.isArray(node))
|
|
56
|
+
return `[${node.map((item) => canonicalJson(item)).join(',')}]`;
|
|
57
|
+
if (!isJsonObject(node))
|
|
58
|
+
return JSON.stringify(node) ?? 'null';
|
|
59
|
+
const body = Object.entries(node)
|
|
60
|
+
.sort(([left], [right]) => left < right ? -1 : left > right ? 1 : 0)
|
|
61
|
+
.map(([key, value]) => `${JSON.stringify(key)}:${canonicalJson(value)}`)
|
|
62
|
+
.join(',');
|
|
63
|
+
return `{${body}}`;
|
|
64
|
+
}
|
|
65
|
+
const DEDUPED_UNION_KEYS = ['anyOf', 'oneOf'];
|
|
66
|
+
/**
|
|
67
|
+
* How many times a `$ref` into the same cyclic anchor may be expanded along one
|
|
68
|
+
* path before the advertisement terminates in the permissive-but-typed leaf.
|
|
69
|
+
*/
|
|
70
|
+
const RECURSIVE_REF_DEPTH_LIMIT = 3;
|
|
71
|
+
/** Is `value` the object form of a schema node (not an array, null, or a scalar)? */
|
|
72
|
+
function isJsonObject(node) {
|
|
73
|
+
return typeof node === 'object' && node !== null && !Array.isArray(node);
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Is `value` a non-null object of either form — plain object or array? This is
|
|
77
|
+
* the document check every transform entry makes: the shapes a walker descends,
|
|
78
|
+
* a JSON pointer walks through, and a spread copies.
|
|
79
|
+
*/
|
|
80
|
+
function isJsonContainer(value) {
|
|
81
|
+
return typeof value === 'object' && value !== null;
|
|
82
|
+
}
|
|
83
|
+
/** A node whose `$ref` is a string — the only referencing form converters emit. */
|
|
84
|
+
function isLocalRefNode(node) {
|
|
85
|
+
return typeof node.$ref === 'string';
|
|
86
|
+
}
|
|
87
|
+
/** Is `node` the string scalar form of a schema node? */
|
|
88
|
+
function isStringNode(node) {
|
|
89
|
+
return typeof node === 'string';
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* The leaf that terminates a bounded recursion on the wire. The recursive
|
|
93
|
+
* original allows any JSON value at that position, so the leaf names exactly
|
|
94
|
+
* the six JSON types with unconstrained nesting — permissive, but typed.
|
|
95
|
+
*/
|
|
96
|
+
function recursionBoundLeaf() {
|
|
97
|
+
return {
|
|
98
|
+
anyOf: [
|
|
99
|
+
{ type: 'string' },
|
|
100
|
+
{ type: 'number' },
|
|
101
|
+
{ type: 'boolean' },
|
|
102
|
+
{ type: 'null' },
|
|
103
|
+
{ type: 'array' },
|
|
104
|
+
{ type: 'object' }
|
|
105
|
+
],
|
|
106
|
+
description: 'Any JSON value (deeper recursion of the same shape is accepted; the wire schema is depth-bounded).'
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* `array[part]` for a node array without a record cast: canonical numeric
|
|
111
|
+
* strings read the element, `length` reads the length (a number node), every
|
|
112
|
+
* other key is absent.
|
|
113
|
+
*/
|
|
114
|
+
function readArrayMember(array, part) {
|
|
115
|
+
const index = Number(part);
|
|
116
|
+
if (Number.isInteger(index) && index >= 0 && `${index}` === part && index < array.length) {
|
|
117
|
+
return array[index];
|
|
118
|
+
}
|
|
119
|
+
if (part === 'length')
|
|
120
|
+
return array.length;
|
|
121
|
+
return undefined;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Read one JSON-pointer part from a container with `container[part]`
|
|
125
|
+
* semantics: objects read the named property, arrays read their members.
|
|
126
|
+
*/
|
|
127
|
+
function readPointerPart(container, part) {
|
|
128
|
+
if (isJsonObject(container))
|
|
129
|
+
return container[part];
|
|
130
|
+
return readArrayMember(container, part);
|
|
131
|
+
}
|
|
132
|
+
/** Resolve a local JSON pointer (`#/$defs/Foo`, `#/definitions/Foo`, `#`) inside `root`. */
|
|
133
|
+
function resolveLocalRefPointer(root, ref) {
|
|
134
|
+
if (!ref.startsWith('#/'))
|
|
135
|
+
return undefined;
|
|
136
|
+
const parts = ref
|
|
137
|
+
.slice(2)
|
|
138
|
+
.split('/')
|
|
139
|
+
.map((part) => part.replace(/~1/g, '/').replace(/~0/g, '~'));
|
|
140
|
+
let node = root;
|
|
141
|
+
const walked = [];
|
|
142
|
+
for (const part of parts) {
|
|
143
|
+
const next = isJsonContainer(node)
|
|
144
|
+
? readPointerPart(node, part)
|
|
145
|
+
: undefined;
|
|
146
|
+
if (next === undefined)
|
|
147
|
+
return undefined;
|
|
148
|
+
walked.push(part);
|
|
149
|
+
node = next;
|
|
150
|
+
}
|
|
151
|
+
return { path: '#/' + walked.join('/'), node };
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Index every local `$ref` in the document. A cycle must traverse at least one
|
|
155
|
+
* `$ref` (plain object containment is a tree), so the ref graph between anchors
|
|
156
|
+
* fully describes recursion: graph edges from an anchor are the refs found
|
|
157
|
+
* anywhere in that anchor's literal subtree.
|
|
158
|
+
*/
|
|
159
|
+
function indexRefGraph(root) {
|
|
160
|
+
const anchors = new Map();
|
|
161
|
+
const sites = [];
|
|
162
|
+
const walk = (node, path) => {
|
|
163
|
+
if (Array.isArray(node)) {
|
|
164
|
+
node.forEach((item, i) => walk(item, `${path}/${i}`));
|
|
165
|
+
return;
|
|
166
|
+
}
|
|
167
|
+
if (!isJsonObject(node))
|
|
168
|
+
return;
|
|
169
|
+
if (isLocalRefNode(node)) {
|
|
170
|
+
const target = resolveLocalRefPointer(root, node.$ref);
|
|
171
|
+
if (target) {
|
|
172
|
+
sites.push({ at: path, target: target.path });
|
|
173
|
+
if (!anchors.has(target.path))
|
|
174
|
+
anchors.set(target.path, target.node);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
for (const [key, value] of Object.entries(node))
|
|
178
|
+
walk(value, `${path}/${key}`);
|
|
179
|
+
};
|
|
180
|
+
walk(root, '#');
|
|
181
|
+
const edges = new Map();
|
|
182
|
+
for (const anchor of anchors.keys()) {
|
|
183
|
+
const prefix = `${anchor}/`;
|
|
184
|
+
edges.set(anchor, sites
|
|
185
|
+
.filter((site) => site.at === anchor || site.at.startsWith(prefix))
|
|
186
|
+
.map((site) => site.target));
|
|
187
|
+
}
|
|
188
|
+
return { anchors, edges };
|
|
189
|
+
}
|
|
190
|
+
/** Anchor paths whose node can reach itself through `$ref` edges (self or mutual recursion). */
|
|
191
|
+
function computeCyclicRefTargets(root) {
|
|
192
|
+
const { anchors, edges } = indexRefGraph(root);
|
|
193
|
+
const cyclic = new Set();
|
|
194
|
+
for (const anchor of anchors.keys()) {
|
|
195
|
+
// DFS over anchor edges: can `anchor` be reached again from itself?
|
|
196
|
+
const frontier = [...(edges.get(anchor) ?? [])];
|
|
197
|
+
const seen = new Set(frontier);
|
|
198
|
+
while (frontier.length > 0) {
|
|
199
|
+
const current = frontier.pop();
|
|
200
|
+
if (current === anchor) {
|
|
201
|
+
cyclic.add(anchor);
|
|
202
|
+
break;
|
|
203
|
+
}
|
|
204
|
+
for (const next of edges.get(current) ?? []) {
|
|
205
|
+
if (!seen.has(next)) {
|
|
206
|
+
seen.add(next);
|
|
207
|
+
frontier.push(next);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
return cyclic;
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Every cyclic anchor advertised by this schema, as `path -> …` descriptions.
|
|
216
|
+
* Empty for an acyclic schema. Shared by tests and `validateMcpSchema`.
|
|
217
|
+
*/
|
|
218
|
+
export function findJsonSchemaRefCycles(schema) {
|
|
219
|
+
if (!isJsonContainer(schema))
|
|
220
|
+
return [];
|
|
221
|
+
const cyclic = computeCyclicRefTargets(schema);
|
|
222
|
+
return [...cyclic].sort().map((path) => `${path} -> ${path}`);
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Bound recursion in a JSON Schema document for advertisement.
|
|
226
|
+
*
|
|
227
|
+
* `$ref`s into cyclic anchors are expanded inline up to
|
|
228
|
+
* {@link RECURSIVE_REF_DEPTH_LIMIT} expansions per anchor per path, then
|
|
229
|
+
* terminate in the permissive-but-typed JSON leaf. Because NO reference to a
|
|
230
|
+
* cyclic anchor survives as a string, the output is acyclic for every
|
|
231
|
+
* recursion shape (self-referential and mutual). Non-recursive `$ref`s are
|
|
232
|
+
* left exactly as authored — nothing else is loosened.
|
|
233
|
+
*/
|
|
234
|
+
function boundNode(root, node, stack, cyclic) {
|
|
235
|
+
if (Array.isArray(node)) {
|
|
236
|
+
return node.map((item) => boundNode(root, item, stack, cyclic));
|
|
237
|
+
}
|
|
238
|
+
if (!isJsonObject(node))
|
|
239
|
+
return node;
|
|
240
|
+
if (isLocalRefNode(node)) {
|
|
241
|
+
const target = resolveLocalRefPointer(root, node.$ref);
|
|
242
|
+
if (target && cyclic.has(target.path)) {
|
|
243
|
+
// Siblings are the ref node's own keywords minus `$ref`, exactly as
|
|
244
|
+
// spread-then-delete produced them.
|
|
245
|
+
const siblings = {};
|
|
246
|
+
for (const [key, value] of Object.entries(node)) {
|
|
247
|
+
if (key !== '$ref')
|
|
248
|
+
siblings[key] = value;
|
|
249
|
+
}
|
|
250
|
+
const depth = stack.filter((path) => path === target.path).length;
|
|
251
|
+
if (depth >= RECURSIVE_REF_DEPTH_LIMIT) {
|
|
252
|
+
return { ...recursionBoundLeaf(), ...siblings };
|
|
253
|
+
}
|
|
254
|
+
const expanded = boundNode(root, target.node, [...stack, target.path], cyclic);
|
|
255
|
+
if (isJsonObject(expanded))
|
|
256
|
+
return { ...expanded, ...siblings };
|
|
257
|
+
if (Array.isArray(expanded))
|
|
258
|
+
return { ...expanded, ...siblings };
|
|
259
|
+
return siblings;
|
|
260
|
+
}
|
|
261
|
+
return node;
|
|
262
|
+
}
|
|
263
|
+
const out = {};
|
|
264
|
+
for (const [key, value] of Object.entries(node)) {
|
|
265
|
+
out[key] = boundNode(root, value, stack, cyclic);
|
|
266
|
+
}
|
|
267
|
+
return out;
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* Bound recursive `$ref`s in a schema document. Fast path returns the input
|
|
271
|
+
* unchanged when the document has no cyclic anchors (the overwhelming case).
|
|
272
|
+
*/
|
|
273
|
+
function boundRecursiveRefs(schema) {
|
|
274
|
+
if (!isJsonContainer(schema))
|
|
275
|
+
return schema;
|
|
276
|
+
const cyclic = computeCyclicRefTargets(schema);
|
|
277
|
+
if (cyclic.size === 0)
|
|
278
|
+
return schema;
|
|
279
|
+
const bounded = boundNode(schema, schema, [], cyclic);
|
|
280
|
+
return pruneBoundedAnchorEntries(bounded, cyclic);
|
|
281
|
+
}
|
|
282
|
+
/** Container keys under which definition entries live. */
|
|
283
|
+
const DEFINITION_CONTAINER_KEYS = new Set(['definitions', '$defs']);
|
|
284
|
+
/**
|
|
285
|
+
* Drop definition entries that WERE cyclic anchors and are now unreferenced:
|
|
286
|
+
* bounding inlines every `$ref` to a cyclic anchor, so its definition entry is
|
|
287
|
+
* unreachable dead weight. Only entries inside `definitions`/`$defs` are
|
|
288
|
+
* eligible, and only when no remaining `$ref` points at them — a referenced
|
|
289
|
+
* entry, or one that was never cyclic, is left exactly as is.
|
|
290
|
+
*/
|
|
291
|
+
function pruneBoundedAnchorEntries(node, cyclic) {
|
|
292
|
+
const refs = new Set();
|
|
293
|
+
const collectRefs = (value) => {
|
|
294
|
+
if (Array.isArray(value)) {
|
|
295
|
+
value.forEach(collectRefs);
|
|
296
|
+
return;
|
|
297
|
+
}
|
|
298
|
+
if (!isJsonObject(value))
|
|
299
|
+
return;
|
|
300
|
+
if (isLocalRefNode(value))
|
|
301
|
+
refs.add(value.$ref);
|
|
302
|
+
for (const child of Object.values(value))
|
|
303
|
+
collectRefs(child);
|
|
304
|
+
};
|
|
305
|
+
collectRefs(node);
|
|
306
|
+
const prune = (value, path) => {
|
|
307
|
+
if (Array.isArray(value)) {
|
|
308
|
+
return value.map((item, i) => prune(item, `${path}/${i}`));
|
|
309
|
+
}
|
|
310
|
+
if (!isJsonObject(value))
|
|
311
|
+
return value;
|
|
312
|
+
const out = {};
|
|
313
|
+
for (const [key, child] of Object.entries(value)) {
|
|
314
|
+
const childPath = `${path}/${key}`;
|
|
315
|
+
if (DEFINITION_CONTAINER_KEYS.has(key) && isJsonObject(child)) {
|
|
316
|
+
const kept = {};
|
|
317
|
+
for (const [defKey, defValue] of Object.entries(child)) {
|
|
318
|
+
const defPath = `${childPath}/${defKey}`;
|
|
319
|
+
if (cyclic.has(defPath) && !refs.has(defPath))
|
|
320
|
+
continue;
|
|
321
|
+
kept[defKey] = defValue;
|
|
322
|
+
}
|
|
323
|
+
if (Object.keys(kept).length === 0)
|
|
324
|
+
continue;
|
|
325
|
+
out[key] = prune(kept, childPath);
|
|
326
|
+
continue;
|
|
327
|
+
}
|
|
328
|
+
out[key] = prune(child, childPath);
|
|
329
|
+
}
|
|
330
|
+
return out;
|
|
331
|
+
};
|
|
332
|
+
return prune(node, '#');
|
|
333
|
+
}
|
|
334
|
+
/**
|
|
335
|
+
* Drop structurally identical branches from an anyOf/oneOf array, preserving
|
|
336
|
+
* first-seen order. Flattening a discriminated union into one object merges
|
|
337
|
+
* same-named fields from every action variant into a union
|
|
338
|
+
* (`mergeVariantFieldSchemas`), so a field declared identically across N
|
|
339
|
+
* variants used to ship N identical branches on the wire (e.g. ai-generate's
|
|
340
|
+
* `capabilities` ×6, knowledge's `knowledgeBaseId` ×11).
|
|
341
|
+
*/
|
|
342
|
+
function dedupeUnionBranches(out) {
|
|
343
|
+
for (const key of DEDUPED_UNION_KEYS) {
|
|
344
|
+
const branches = out[key];
|
|
345
|
+
if (!isNodeArray(branches) || branches.length < 2)
|
|
346
|
+
continue;
|
|
347
|
+
const seen = new Set();
|
|
348
|
+
const deduped = [];
|
|
349
|
+
for (const branch of branches) {
|
|
350
|
+
const canonical = canonicalJson(branch);
|
|
351
|
+
if (seen.has(canonical))
|
|
352
|
+
continue;
|
|
353
|
+
seen.add(canonical);
|
|
354
|
+
deduped.push(branch);
|
|
355
|
+
}
|
|
356
|
+
if (deduped.length === branches.length)
|
|
357
|
+
continue;
|
|
358
|
+
const survivor = deduped[0];
|
|
359
|
+
if (deduped.length === 1 && survivor !== undefined && isSchemaObject(survivor) && !isArrayValue(survivor)) {
|
|
360
|
+
// All branches were identical — inline the survivor into this node.
|
|
361
|
+
// Annotations already on the parent (description, default, …) win.
|
|
362
|
+
delete out[key];
|
|
363
|
+
for (const [k, v] of Object.entries(survivor)) {
|
|
364
|
+
if (!(k in out))
|
|
365
|
+
out[k] = v;
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
else {
|
|
369
|
+
out[key] = deduped;
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
/**
|
|
374
|
+
* Walk a JSON Schema tree and (a) strip `pattern` where `format` carries the
|
|
375
|
+
* same information, (b) dedupe structurally identical anyOf/oneOf branches,
|
|
376
|
+
* collapsing all-identical unions into their single member, (c) bound
|
|
377
|
+
* recursive `$ref`s so the advertised schema is acyclic — model APIs reject
|
|
378
|
+
* recursive schemas wholesale (`400 Recursive JSON schemas are not currently
|
|
379
|
+
* supported`, observed on the `agent` tool's `JsonValueSchema` metadata), so one
|
|
380
|
+
* recursive field in one tool can take down every session that loads the
|
|
381
|
+
* catalog. Pure transformation; no Zod runtime dependency. Server-side input
|
|
382
|
+
* validation never uses this projection — it parses the registered Zod object.
|
|
383
|
+
*/
|
|
384
|
+
export function tightenJsonSchema(node) {
|
|
385
|
+
const bounded = boundRecursiveRefs(node);
|
|
386
|
+
// Non-container leaves (scalars, undefined) pass both stages through
|
|
387
|
+
// unchanged; only containers reach the recursive tightener.
|
|
388
|
+
return isJsonContainer(bounded) ? tightenJsonSchemaNode(bounded) : bounded;
|
|
389
|
+
}
|
|
390
|
+
function tightenJsonSchemaNode(node) {
|
|
391
|
+
if (Array.isArray(node)) {
|
|
392
|
+
return node.map((item) => tightenJsonSchemaNode(item));
|
|
393
|
+
}
|
|
394
|
+
if (!isJsonObject(node))
|
|
395
|
+
return node;
|
|
396
|
+
const out = {};
|
|
397
|
+
const dropPattern = node.type === 'string' &&
|
|
398
|
+
isStringNode(node.format) &&
|
|
399
|
+
PATTERN_REDUNDANT_FORMATS.has(node.format) &&
|
|
400
|
+
'pattern' in node;
|
|
401
|
+
for (const [k, v] of Object.entries(node)) {
|
|
402
|
+
if (dropPattern && k === 'pattern')
|
|
403
|
+
continue;
|
|
404
|
+
out[k] = tightenJsonSchemaNode(v);
|
|
405
|
+
}
|
|
406
|
+
const additionalProperties = out.additionalProperties;
|
|
407
|
+
if (isJsonObject(additionalProperties) && Object.keys(additionalProperties).length === 0) {
|
|
408
|
+
// Empty `additionalProperties: {}` is a Record bag. Hosts stringify nested
|
|
409
|
+
// values against it; `true` is the same JSON Schema meaning without the map trap.
|
|
410
|
+
out.additionalProperties = true;
|
|
411
|
+
}
|
|
412
|
+
dedupeUnionBranches(out);
|
|
413
|
+
return out;
|
|
414
|
+
}
|
|
415
|
+
function isSchemaObject(value) {
|
|
416
|
+
return typeof value === 'object' && value !== null;
|
|
417
|
+
}
|
|
418
|
+
function isArrayValue(value) {
|
|
419
|
+
return Array.isArray(value);
|
|
420
|
+
}
|
|
421
|
+
function isNodeArray(value) {
|
|
422
|
+
return Array.isArray(value);
|
|
423
|
+
}
|
|
424
|
+
function requireSchemaObject(value) {
|
|
425
|
+
if (!isSchemaObject(value) || isArrayValue(value))
|
|
426
|
+
throw new CapabilityError('MCP schema conversion must produce an object', 'INVALID_INPUT');
|
|
427
|
+
return value;
|
|
428
|
+
}
|
|
429
|
+
export function zodToMcpSchema(schema, options = {}) {
|
|
430
|
+
const builtIn = schema.toJSONSchema?.();
|
|
431
|
+
const produced = builtIn !== undefined && isSchemaObject(builtIn) && !isArrayValue(builtIn)
|
|
432
|
+
? builtIn
|
|
433
|
+
: toJsonSchemaCompat(schema, { strictUnions: true, pipeStrategy: 'input' });
|
|
434
|
+
if (!isSchemaObject(produced) || isArrayValue(produced)) {
|
|
435
|
+
throw new CapabilityError('MCP schema conversion must produce an object', 'INVALID_INPUT');
|
|
436
|
+
}
|
|
437
|
+
const tightened = requireSchemaObject(tightenJsonSchema(produced));
|
|
438
|
+
const withTitle = options.name ? { ...tightened, title: options.name } : tightened;
|
|
439
|
+
const withoutSchemaField = { ...withTitle };
|
|
440
|
+
if (options.removeSchemaField)
|
|
441
|
+
delete withoutSchemaField.schema;
|
|
442
|
+
const projected = omitContextBoundInputs(withoutSchemaField);
|
|
443
|
+
return { schema: projected, wrapType: inferWrapType(projected) };
|
|
444
|
+
}
|
|
445
|
+
/**
|
|
446
|
+
* Wrap a transport's `send` so any outgoing tools/list response (or
|
|
447
|
+
* tools/listChanged update) has its tool schemas tightened before
|
|
448
|
+
* serialization. The MCP SDK does its own Zod→JSON Schema conversion
|
|
449
|
+
* inside its tools/list handler (via `toJsonSchemaCompat`), so the
|
|
450
|
+
* `tightenJsonSchema` step in `zodToMcpSchema` is bypassed for those
|
|
451
|
+
* responses. Wrapping the transport is the lowest-friction interception
|
|
452
|
+
* point that doesn't require monkey-patching the SDK's private state.
|
|
453
|
+
*/
|
|
454
|
+
export function wrapTransportWithSchemaTightening(transport, options) {
|
|
455
|
+
const original = transport.send.bind(transport);
|
|
456
|
+
transport.send = (...args) => {
|
|
457
|
+
const msg = args[0];
|
|
458
|
+
const result = isSchemaObject(msg) && !isArrayValue(msg) && isSchemaObject(msg.result) && !isArrayValue(msg.result) ? msg.result : undefined;
|
|
459
|
+
const tools = result?.tools;
|
|
460
|
+
if (Array.isArray(tools)) {
|
|
461
|
+
for (const tool of tools) {
|
|
462
|
+
if (!isSchemaObject(tool) || isArrayValue(tool))
|
|
463
|
+
throw new CapabilityError('MCP tools/list entries must be objects', 'INVALID_INPUT');
|
|
464
|
+
if (isSchemaObject(tool.inputSchema) && !isArrayValue(tool.inputSchema)) {
|
|
465
|
+
tool.inputSchema = requireSchemaObject(tightenJsonSchema(tool.inputSchema));
|
|
466
|
+
}
|
|
467
|
+
if (options?.omitOutputSchema) {
|
|
468
|
+
delete tool.outputSchema;
|
|
469
|
+
}
|
|
470
|
+
else if (isSchemaObject(tool.outputSchema) && !isArrayValue(tool.outputSchema)) {
|
|
471
|
+
tool.outputSchema = requireSchemaObject(tightenJsonSchema(tool.outputSchema));
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
}
|
|
475
|
+
return original(...args);
|
|
476
|
+
};
|
|
477
|
+
}
|
|
478
|
+
/**
|
|
479
|
+
* Keys that make a JSON Schema well-formed WITHOUT a sibling `type`. A root
|
|
480
|
+
* combinator or reference is a complete schema on its own (JSON Schema
|
|
481
|
+
* 2020-12 §10-11); requiring `type` beside one is simply wrong.
|
|
482
|
+
*/
|
|
483
|
+
const TYPELESS_SCHEMA_FORMS = ['oneOf', 'anyOf', 'allOf', '$ref', 'enum', 'const'];
|
|
484
|
+
/**
|
|
485
|
+
* Structural sanity check for an outgoing MCP `inputSchema`.
|
|
486
|
+
*
|
|
487
|
+
* It USED to require `type` unconditionally, which is a false positive on every
|
|
488
|
+
* root-union tool we ship. Verified 2026-07-25: `awareness` — the heaviest tool on
|
|
489
|
+
* the wire — has a root `oneOf` and no `type`, so this reported
|
|
490
|
+
* "Schema missing 'type'" for a schema that is valid and serving correctly today.
|
|
491
|
+
* A validator that flags correct schemas is worse than none: the first person to
|
|
492
|
+
* wire it up would have chased a phantom.
|
|
493
|
+
*
|
|
494
|
+
* Nothing on the serve path calls this yet (it is public API from
|
|
495
|
+
* `@vibesdotdev/mcp`, its one home). Left exported and
|
|
496
|
+
* correct rather than deleted — constitution §NO DELETE WITHOUT CONSUMER PROOF, and
|
|
497
|
+
* a correct unused check can be wired later; an incorrect one cannot.
|
|
498
|
+
*/
|
|
499
|
+
export function validateMcpSchema(schema) {
|
|
500
|
+
const issues = [];
|
|
501
|
+
if (!isSchemaObject(schema) || isArrayValue(schema))
|
|
502
|
+
return ['Schema is not an object'];
|
|
503
|
+
const hasType = isStringValue(schema.type) || isArrayValue(schema.type);
|
|
504
|
+
const hasTypelessForm = TYPELESS_SCHEMA_FORMS.some((key) => key in schema);
|
|
505
|
+
if (!hasType && !hasTypelessForm) {
|
|
506
|
+
issues.push("Schema missing 'type' (string or string[]) and no oneOf/anyOf/allOf/$ref/enum/const");
|
|
507
|
+
}
|
|
508
|
+
if ('properties' in schema && schema.properties && !isSchemaObject(schema.properties)) {
|
|
509
|
+
issues.push("Schema has invalid 'properties' (must be object)");
|
|
510
|
+
}
|
|
511
|
+
const cycles = findJsonSchemaRefCycles(schema);
|
|
512
|
+
if (cycles.length > 0) {
|
|
513
|
+
issues.push(`Schema is recursive (${cycles.join('; ')}) — model APIs reject recursive schemas`);
|
|
514
|
+
}
|
|
515
|
+
return issues;
|
|
516
|
+
}
|
|
517
|
+
export function validateMcpDescription(description) {
|
|
518
|
+
const trimmed = description.trim();
|
|
519
|
+
if (trimmed.length === 0)
|
|
520
|
+
return ['Description is empty'];
|
|
521
|
+
if (/[\r\n]/.test(trimmed))
|
|
522
|
+
return ['Description must be single-line'];
|
|
523
|
+
if (trimmed.length > MCP_DESCRIPTION_LIMIT) {
|
|
524
|
+
return [`Description exceeds ${MCP_DESCRIPTION_LIMIT} chars (${trimmed.length})`];
|
|
525
|
+
}
|
|
526
|
+
return [];
|
|
527
|
+
}
|
|
528
|
+
function collapseWhitespace(description) {
|
|
529
|
+
return description.replace(/\s+/g, ' ').trim();
|
|
530
|
+
}
|
|
531
|
+
function trimAtWordBoundary(description, limit) {
|
|
532
|
+
if (description.length <= limit)
|
|
533
|
+
return description;
|
|
534
|
+
// Reserve 1 char for a trailing period when we need to append one.
|
|
535
|
+
const bodyLimit = Math.max(1, limit - 1);
|
|
536
|
+
const slice = description.slice(0, bodyLimit).trim();
|
|
537
|
+
const lastSpace = slice.lastIndexOf(' ');
|
|
538
|
+
const candidate = lastSpace > Math.floor(bodyLimit * 0.6) ? slice.slice(0, lastSpace) : slice;
|
|
539
|
+
const cleaned = candidate.replace(/[,:;/-]+$/g, '').trim();
|
|
540
|
+
const withPeriod = cleaned.endsWith('.') || cleaned.endsWith('!') || cleaned.endsWith('?')
|
|
541
|
+
? cleaned
|
|
542
|
+
: `${cleaned}.`;
|
|
543
|
+
// Hard cap: never return more than `limit` (period append must not overflow).
|
|
544
|
+
return withPeriod.length <= limit ? withPeriod : withPeriod.slice(0, limit).trimEnd();
|
|
545
|
+
}
|
|
546
|
+
export function generateMcpDescription(description) {
|
|
547
|
+
const normalized = collapseWhitespace(description);
|
|
548
|
+
if (!normalized)
|
|
549
|
+
return '';
|
|
550
|
+
const candidates = [
|
|
551
|
+
normalized,
|
|
552
|
+
normalized.split(/\bActions?\s*:/i)[0]?.trim(),
|
|
553
|
+
normalized.split(/\bExamples?\s*:/i)[0]?.trim(),
|
|
554
|
+
normalized.split(/\bUse this\b/i)[0]?.trim(),
|
|
555
|
+
normalized.split(/\bThe query parameter\b/i)[0]?.trim(),
|
|
556
|
+
normalized.split(/\bincluding\b/i)[0]?.trim(),
|
|
557
|
+
normalized.replace(/\([^)]*\)/g, '').replace(/\s+/g, ' ').trim(),
|
|
558
|
+
normalized.split(/[;:]/)[0]?.trim(),
|
|
559
|
+
normalized.match(/^(.+?[.!?])(?:\s|$)/)?.[1]?.trim()
|
|
560
|
+
].filter((candidate) => !!candidate);
|
|
561
|
+
for (const candidate of candidates) {
|
|
562
|
+
if (candidate.length <= MCP_DESCRIPTION_LIMIT)
|
|
563
|
+
return candidate;
|
|
564
|
+
}
|
|
565
|
+
return trimAtWordBoundary(normalized, MCP_DESCRIPTION_LIMIT);
|
|
566
|
+
}
|
|
567
|
+
export function resolveMcpDescription(source) {
|
|
568
|
+
// Author-provided mcpDescription is the contract surface: prefer it intact
|
|
569
|
+
// (whitespace-collapsed) when it fits the wire limit so Ex: examples are not
|
|
570
|
+
// discarded by generateMcpDescription's candidate-split heuristics.
|
|
571
|
+
if (source.mcpDescription !== undefined && source.mcpDescription.trim().length > 0) {
|
|
572
|
+
const normalized = collapseWhitespace(source.mcpDescription);
|
|
573
|
+
if (normalized.length > 0 && !/[\r\n]/.test(normalized)) {
|
|
574
|
+
if (normalized.length <= MCP_DESCRIPTION_LIMIT)
|
|
575
|
+
return normalized;
|
|
576
|
+
return generateMcpDescription(normalized);
|
|
577
|
+
}
|
|
578
|
+
}
|
|
579
|
+
const raw = source.description ?? source.name ?? source.id ?? '';
|
|
580
|
+
return generateMcpDescription(raw);
|
|
581
|
+
}
|
|
582
|
+
export const flattenRootUnion = flattenRootUnionFromTools;
|
|
583
|
+
export const isDiscriminatedUnion = isDiscriminatedUnionFromTools;
|
|
584
|
+
export const getDiscriminator = getDiscriminatorFromTools;
|
|
585
|
+
export const getDiscriminatorOptions = getDiscriminatorOptionsFromTools;
|
|
586
|
+
export function wrapDiscriminatedUnion(schema, defaultAction, toolId) {
|
|
587
|
+
if (!isDiscriminatedUnion(schema))
|
|
588
|
+
return schema;
|
|
589
|
+
const discriminator = getDiscriminator(schema);
|
|
590
|
+
const options = getDiscriminatorOptions(schema);
|
|
591
|
+
return z.preprocess((input) => {
|
|
592
|
+
if (!isSchemaObject(input) || isArrayValue(input))
|
|
593
|
+
return input;
|
|
594
|
+
if (!(discriminator in input)) {
|
|
595
|
+
if (defaultAction && options.includes(defaultAction)) {
|
|
596
|
+
return { [discriminator]: defaultAction, ...input };
|
|
597
|
+
}
|
|
598
|
+
throw new Error(`Missing required '${discriminator}' parameter for ${toolId}. ` +
|
|
599
|
+
`Available options: ${options.join(', ')}`);
|
|
600
|
+
}
|
|
601
|
+
return input;
|
|
602
|
+
}, schema);
|
|
603
|
+
}
|
|
604
|
+
/**
|
|
605
|
+
* Flatten a z.discriminatedUnion into a z.object that the MCP SDK can handle.
|
|
606
|
+
* Implementation lives in @vibesdotdev/tools (shared with invoke validation).
|
|
607
|
+
*/
|
|
608
|
+
export const flattenDiscriminatedUnionToObject = flattenDiscriminatedUnionToObjectFromTools;
|
|
609
|
+
export function createMcpTool(config) {
|
|
610
|
+
const { schema } = zodToMcpSchema(config.schema, {
|
|
611
|
+
name: config.name,
|
|
612
|
+
removeSchemaField: true,
|
|
613
|
+
addAliasHints: true
|
|
614
|
+
});
|
|
615
|
+
return { name: config.name, description: config.description, inputSchema: schema };
|
|
616
|
+
}
|
|
617
|
+
//# sourceMappingURL=zod-mcp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zod-mcp.js","sourceRoot":"","sources":["../../src/adapters/zod-mcp.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `vibes dev audit tools` — the universal-tools czar cycle capability.
|
|
3
|
+
*
|
|
4
|
+
* Checks declared tool descriptors through the MCP exposure funnel for every
|
|
5
|
+
* client preset: exposure counts, unintended preset exclusions, and description
|
|
6
|
+
* length limits. Served-catalog evidence requires --live; read-safe canary and
|
|
7
|
+
* host-attestation checks require --doctor. Composed into the existing `dev.audit`
|
|
8
|
+
* group beside `dev.audit.ledger` — NOT a new top-level group and NOT a
|
|
9
|
+
* `tools`-group command (both were killed in docs/proposals/universal-tools-czar/
|
|
10
|
+
* as second-way / slop). `--json` for the scheduled daily czar routine.
|
|
11
|
+
*/
|
|
12
|
+
import type { CLICommandAssetDescriptor } from '@vibesdotdev/cli/schemas/types';
|
|
13
|
+
declare const descriptor: CLICommandAssetDescriptor;
|
|
14
|
+
export default descriptor;
|
|
15
|
+
//# sourceMappingURL=dev.audit.tools.descriptor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dev.audit.tools.descriptor.d.ts","sourceRoot":"","sources":["../../../../src/cli/mcp/audit/dev.audit.tools.descriptor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAEhF,QAAA,MAAM,UAAU,EAAE,yBA8CjB,CAAC;AAEF,eAAe,UAAU,CAAC"}
|