noodleseed-cli 0.1.4
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 +176 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +625 -0
- package/dist/cli.js.map +1 -0
- package/dist/config.d.ts +52 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +77 -0
- package/dist/config.js.map +1 -0
- package/dist/control-plane.d.ts +33 -0
- package/dist/control-plane.d.ts.map +1 -0
- package/dist/control-plane.js +223 -0
- package/dist/control-plane.js.map +1 -0
- package/dist/deploy.d.ts +62 -0
- package/dist/deploy.d.ts.map +1 -0
- package/dist/deploy.js +182 -0
- package/dist/deploy.js.map +1 -0
- package/dist/dev.d.ts +50 -0
- package/dist/dev.d.ts.map +1 -0
- package/dist/dev.js +223 -0
- package/dist/dev.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/dist/validate.d.ts +37 -0
- package/dist/validate.d.ts.map +1 -0
- package/dist/validate.js +46 -0
- package/dist/validate.js.map +1 -0
- package/node_modules/@noodle-borg/auth/dist/index.d.ts +14 -0
- package/node_modules/@noodle-borg/auth/dist/index.d.ts.map +1 -0
- package/node_modules/@noodle-borg/auth/dist/index.js +14 -0
- package/node_modules/@noodle-borg/auth/dist/index.js.map +1 -0
- package/node_modules/@noodle-borg/auth/dist/jwt-issuer.d.ts +21 -0
- package/node_modules/@noodle-borg/auth/dist/jwt-issuer.d.ts.map +1 -0
- package/node_modules/@noodle-borg/auth/dist/jwt-issuer.js +24 -0
- package/node_modules/@noodle-borg/auth/dist/jwt-issuer.js.map +1 -0
- package/node_modules/@noodle-borg/auth/dist/metadata.d.ts +27 -0
- package/node_modules/@noodle-borg/auth/dist/metadata.d.ts.map +1 -0
- package/node_modules/@noodle-borg/auth/dist/metadata.js +21 -0
- package/node_modules/@noodle-borg/auth/dist/metadata.js.map +1 -0
- package/node_modules/@noodle-borg/auth/dist/signer.d.ts +45 -0
- package/node_modules/@noodle-borg/auth/dist/signer.d.ts.map +1 -0
- package/node_modules/@noodle-borg/auth/dist/signer.js +47 -0
- package/node_modules/@noodle-borg/auth/dist/signer.js.map +1 -0
- package/node_modules/@noodle-borg/auth/dist/verify.d.ts +42 -0
- package/node_modules/@noodle-borg/auth/dist/verify.d.ts.map +1 -0
- package/node_modules/@noodle-borg/auth/dist/verify.js +48 -0
- package/node_modules/@noodle-borg/auth/dist/verify.js.map +1 -0
- package/node_modules/@noodle-borg/auth/package.json +27 -0
- package/node_modules/@noodle-borg/authoring/dist/index.d.ts +200 -0
- package/node_modules/@noodle-borg/authoring/dist/index.d.ts.map +1 -0
- package/node_modules/@noodle-borg/authoring/dist/index.js +504 -0
- package/node_modules/@noodle-borg/authoring/dist/index.js.map +1 -0
- package/node_modules/@noodle-borg/authoring/package.json +29 -0
- package/node_modules/@noodle-borg/compiler/dist/artifact/types.d.ts +203 -0
- package/node_modules/@noodle-borg/compiler/dist/artifact/types.d.ts.map +1 -0
- package/node_modules/@noodle-borg/compiler/dist/artifact/types.js +20 -0
- package/node_modules/@noodle-borg/compiler/dist/artifact/types.js.map +1 -0
- package/node_modules/@noodle-borg/compiler/dist/catalog/in-memory.d.ts +13 -0
- package/node_modules/@noodle-borg/compiler/dist/catalog/in-memory.d.ts.map +1 -0
- package/node_modules/@noodle-borg/compiler/dist/catalog/in-memory.js +19 -0
- package/node_modules/@noodle-borg/compiler/dist/catalog/in-memory.js.map +1 -0
- package/node_modules/@noodle-borg/compiler/dist/catalog/signature.d.ts +11 -0
- package/node_modules/@noodle-borg/compiler/dist/catalog/signature.d.ts.map +1 -0
- package/node_modules/@noodle-borg/compiler/dist/catalog/signature.js +31 -0
- package/node_modules/@noodle-borg/compiler/dist/catalog/signature.js.map +1 -0
- package/node_modules/@noodle-borg/compiler/dist/catalog/types.d.ts +43 -0
- package/node_modules/@noodle-borg/compiler/dist/catalog/types.d.ts.map +1 -0
- package/node_modules/@noodle-borg/compiler/dist/catalog/types.js +11 -0
- package/node_modules/@noodle-borg/compiler/dist/catalog/types.js.map +1 -0
- package/node_modules/@noodle-borg/compiler/dist/cli.d.ts +3 -0
- package/node_modules/@noodle-borg/compiler/dist/cli.d.ts.map +1 -0
- package/node_modules/@noodle-borg/compiler/dist/cli.js +19 -0
- package/node_modules/@noodle-borg/compiler/dist/cli.js.map +1 -0
- package/node_modules/@noodle-borg/compiler/dist/compile.d.ts +50 -0
- package/node_modules/@noodle-borg/compiler/dist/compile.d.ts.map +1 -0
- package/node_modules/@noodle-borg/compiler/dist/compile.js +719 -0
- package/node_modules/@noodle-borg/compiler/dist/compile.js.map +1 -0
- package/node_modules/@noodle-borg/compiler/dist/errors.d.ts +27 -0
- package/node_modules/@noodle-borg/compiler/dist/errors.d.ts.map +1 -0
- package/node_modules/@noodle-borg/compiler/dist/errors.js +2 -0
- package/node_modules/@noodle-borg/compiler/dist/errors.js.map +1 -0
- package/node_modules/@noodle-borg/compiler/dist/index.d.ts +13 -0
- package/node_modules/@noodle-borg/compiler/dist/index.d.ts.map +1 -0
- package/node_modules/@noodle-borg/compiler/dist/index.js +11 -0
- package/node_modules/@noodle-borg/compiler/dist/index.js.map +1 -0
- package/node_modules/@noodle-borg/compiler/dist/manifest/expression.d.ts +136 -0
- package/node_modules/@noodle-borg/compiler/dist/manifest/expression.d.ts.map +1 -0
- package/node_modules/@noodle-borg/compiler/dist/manifest/expression.js +552 -0
- package/node_modules/@noodle-borg/compiler/dist/manifest/expression.js.map +1 -0
- package/node_modules/@noodle-borg/compiler/dist/manifest/naming.d.ts +14 -0
- package/node_modules/@noodle-borg/compiler/dist/manifest/naming.d.ts.map +1 -0
- package/node_modules/@noodle-borg/compiler/dist/manifest/naming.js +18 -0
- package/node_modules/@noodle-borg/compiler/dist/manifest/naming.js.map +1 -0
- package/node_modules/@noodle-borg/compiler/dist/manifest/schema-refs.d.ts +24 -0
- package/node_modules/@noodle-borg/compiler/dist/manifest/schema-refs.d.ts.map +1 -0
- package/node_modules/@noodle-borg/compiler/dist/manifest/schema-refs.js +149 -0
- package/node_modules/@noodle-borg/compiler/dist/manifest/schema-refs.js.map +1 -0
- package/node_modules/@noodle-borg/compiler/dist/manifest/schema.d.ts +97 -0
- package/node_modules/@noodle-borg/compiler/dist/manifest/schema.d.ts.map +1 -0
- package/node_modules/@noodle-borg/compiler/dist/manifest/schema.js +157 -0
- package/node_modules/@noodle-borg/compiler/dist/manifest/schema.js.map +1 -0
- package/node_modules/@noodle-borg/compiler/dist/schema-export.d.ts +6 -0
- package/node_modules/@noodle-borg/compiler/dist/schema-export.d.ts.map +1 -0
- package/node_modules/@noodle-borg/compiler/dist/schema-export.js +28 -0
- package/node_modules/@noodle-borg/compiler/dist/schema-export.js.map +1 -0
- package/node_modules/@noodle-borg/compiler/dist/suggest.d.ts +41 -0
- package/node_modules/@noodle-borg/compiler/dist/suggest.d.ts.map +1 -0
- package/node_modules/@noodle-borg/compiler/dist/suggest.js +105 -0
- package/node_modules/@noodle-borg/compiler/dist/suggest.js.map +1 -0
- package/node_modules/@noodle-borg/compiler/dist/uri-template.d.ts +33 -0
- package/node_modules/@noodle-borg/compiler/dist/uri-template.d.ts.map +1 -0
- package/node_modules/@noodle-borg/compiler/dist/uri-template.js +83 -0
- package/node_modules/@noodle-borg/compiler/dist/uri-template.js.map +1 -0
- package/node_modules/@noodle-borg/compiler/package.json +32 -0
- package/node_modules/@noodle-borg/compute/dist/code-connector.d.ts +45 -0
- package/node_modules/@noodle-borg/compute/dist/code-connector.d.ts.map +1 -0
- package/node_modules/@noodle-borg/compute/dist/code-connector.js +53 -0
- package/node_modules/@noodle-borg/compute/dist/code-connector.js.map +1 -0
- package/node_modules/@noodle-borg/compute/dist/engine.d.ts +73 -0
- package/node_modules/@noodle-borg/compute/dist/engine.d.ts.map +1 -0
- package/node_modules/@noodle-borg/compute/dist/engine.js +31 -0
- package/node_modules/@noodle-borg/compute/dist/engine.js.map +1 -0
- package/node_modules/@noodle-borg/compute/dist/index.d.ts +4 -0
- package/node_modules/@noodle-borg/compute/dist/index.d.ts.map +1 -0
- package/node_modules/@noodle-borg/compute/dist/index.js +4 -0
- package/node_modules/@noodle-borg/compute/dist/index.js.map +1 -0
- package/node_modules/@noodle-borg/compute/dist/quickjs-engine.d.ts +31 -0
- package/node_modules/@noodle-borg/compute/dist/quickjs-engine.d.ts.map +1 -0
- package/node_modules/@noodle-borg/compute/dist/quickjs-engine.js +271 -0
- package/node_modules/@noodle-borg/compute/dist/quickjs-engine.js.map +1 -0
- package/node_modules/@noodle-borg/compute/package.json +29 -0
- package/node_modules/@noodle-borg/connector-defs/dist/compile.d.ts +46 -0
- package/node_modules/@noodle-borg/connector-defs/dist/compile.d.ts.map +1 -0
- package/node_modules/@noodle-borg/connector-defs/dist/compile.js +289 -0
- package/node_modules/@noodle-borg/connector-defs/dist/compile.js.map +1 -0
- package/node_modules/@noodle-borg/connector-defs/dist/index.d.ts +3 -0
- package/node_modules/@noodle-borg/connector-defs/dist/index.d.ts.map +1 -0
- package/node_modules/@noodle-borg/connector-defs/dist/index.js +3 -0
- package/node_modules/@noodle-borg/connector-defs/dist/index.js.map +1 -0
- package/node_modules/@noodle-borg/connector-defs/dist/schema.d.ts +332 -0
- package/node_modules/@noodle-borg/connector-defs/dist/schema.d.ts.map +1 -0
- package/node_modules/@noodle-borg/connector-defs/dist/schema.js +105 -0
- package/node_modules/@noodle-borg/connector-defs/dist/schema.js.map +1 -0
- package/node_modules/@noodle-borg/connector-defs/package.json +32 -0
- package/node_modules/@noodle-borg/connector-http/dist/http-connector.d.ts +86 -0
- package/node_modules/@noodle-borg/connector-http/dist/http-connector.d.ts.map +1 -0
- package/node_modules/@noodle-borg/connector-http/dist/http-connector.js +138 -0
- package/node_modules/@noodle-borg/connector-http/dist/http-connector.js.map +1 -0
- package/node_modules/@noodle-borg/connector-http/dist/index.d.ts +3 -0
- package/node_modules/@noodle-borg/connector-http/dist/index.d.ts.map +1 -0
- package/node_modules/@noodle-borg/connector-http/dist/index.js +3 -0
- package/node_modules/@noodle-borg/connector-http/dist/index.js.map +1 -0
- package/node_modules/@noodle-borg/connector-http/dist/ssrf.d.ts +45 -0
- package/node_modules/@noodle-borg/connector-http/dist/ssrf.d.ts.map +1 -0
- package/node_modules/@noodle-borg/connector-http/dist/ssrf.js +57 -0
- package/node_modules/@noodle-borg/connector-http/dist/ssrf.js.map +1 -0
- package/node_modules/@noodle-borg/connector-http/package.json +30 -0
- package/node_modules/@noodle-borg/protocol/dist/adapter.d.ts +73 -0
- package/node_modules/@noodle-borg/protocol/dist/adapter.d.ts.map +1 -0
- package/node_modules/@noodle-borg/protocol/dist/adapter.js +2 -0
- package/node_modules/@noodle-borg/protocol/dist/adapter.js.map +1 -0
- package/node_modules/@noodle-borg/protocol/dist/adapters/mcp-2025-11-25.d.ts +19 -0
- package/node_modules/@noodle-borg/protocol/dist/adapters/mcp-2025-11-25.d.ts.map +1 -0
- package/node_modules/@noodle-borg/protocol/dist/adapters/mcp-2025-11-25.js +34 -0
- package/node_modules/@noodle-borg/protocol/dist/adapters/mcp-2025-11-25.js.map +1 -0
- package/node_modules/@noodle-borg/protocol/dist/index.d.ts +5 -0
- package/node_modules/@noodle-borg/protocol/dist/index.d.ts.map +1 -0
- package/node_modules/@noodle-borg/protocol/dist/index.js +5 -0
- package/node_modules/@noodle-borg/protocol/dist/index.js.map +1 -0
- package/node_modules/@noodle-borg/protocol/dist/jsonrpc.d.ts +19 -0
- package/node_modules/@noodle-borg/protocol/dist/jsonrpc.d.ts.map +1 -0
- package/node_modules/@noodle-borg/protocol/dist/jsonrpc.js +14 -0
- package/node_modules/@noodle-borg/protocol/dist/jsonrpc.js.map +1 -0
- package/node_modules/@noodle-borg/protocol/dist/mapping.d.ts +133 -0
- package/node_modules/@noodle-borg/protocol/dist/mapping.d.ts.map +1 -0
- package/node_modules/@noodle-borg/protocol/dist/mapping.js +181 -0
- package/node_modules/@noodle-borg/protocol/dist/mapping.js.map +1 -0
- package/node_modules/@noodle-borg/protocol/dist/negotiate.d.ts +13 -0
- package/node_modules/@noodle-borg/protocol/dist/negotiate.d.ts.map +1 -0
- package/node_modules/@noodle-borg/protocol/dist/negotiate.js +18 -0
- package/node_modules/@noodle-borg/protocol/dist/negotiate.js.map +1 -0
- package/node_modules/@noodle-borg/protocol/dist/registry.d.ts +17 -0
- package/node_modules/@noodle-borg/protocol/dist/registry.d.ts.map +1 -0
- package/node_modules/@noodle-borg/protocol/dist/registry.js +33 -0
- package/node_modules/@noodle-borg/protocol/dist/registry.js.map +1 -0
- package/node_modules/@noodle-borg/protocol/dist/sdk-server.d.ts +22 -0
- package/node_modules/@noodle-borg/protocol/dist/sdk-server.d.ts.map +1 -0
- package/node_modules/@noodle-borg/protocol/dist/sdk-server.js +91 -0
- package/node_modules/@noodle-borg/protocol/dist/sdk-server.js.map +1 -0
- package/node_modules/@noodle-borg/protocol/dist/server.d.ts +38 -0
- package/node_modules/@noodle-borg/protocol/dist/server.d.ts.map +1 -0
- package/node_modules/@noodle-borg/protocol/dist/server.js +89 -0
- package/node_modules/@noodle-borg/protocol/dist/server.js.map +1 -0
- package/node_modules/@noodle-borg/protocol/dist/stateless.d.ts +14 -0
- package/node_modules/@noodle-borg/protocol/dist/stateless.d.ts.map +1 -0
- package/node_modules/@noodle-borg/protocol/dist/stateless.js +28 -0
- package/node_modules/@noodle-borg/protocol/dist/stateless.js.map +1 -0
- package/node_modules/@noodle-borg/protocol/dist/widget/bootstrap.d.ts +24 -0
- package/node_modules/@noodle-borg/protocol/dist/widget/bootstrap.d.ts.map +1 -0
- package/node_modules/@noodle-borg/protocol/dist/widget/bootstrap.js +165 -0
- package/node_modules/@noodle-borg/protocol/dist/widget/bootstrap.js.map +1 -0
- package/node_modules/@noodle-borg/protocol/dist/widget/ext-apps-bundle.d.ts +4 -0
- package/node_modules/@noodle-borg/protocol/dist/widget/ext-apps-bundle.d.ts.map +1 -0
- package/node_modules/@noodle-borg/protocol/dist/widget/ext-apps-bundle.js +10 -0
- package/node_modules/@noodle-borg/protocol/dist/widget/ext-apps-bundle.js.map +1 -0
- package/node_modules/@noodle-borg/protocol/dist/widget/inject.d.ts +8 -0
- package/node_modules/@noodle-borg/protocol/dist/widget/inject.d.ts.map +1 -0
- package/node_modules/@noodle-borg/protocol/dist/widget/inject.js +36 -0
- package/node_modules/@noodle-borg/protocol/dist/widget/inject.js.map +1 -0
- package/node_modules/@noodle-borg/protocol/package.json +29 -0
- package/node_modules/@noodle-borg/runtime/dist/broker/map.d.ts +29 -0
- package/node_modules/@noodle-borg/runtime/dist/broker/map.d.ts.map +1 -0
- package/node_modules/@noodle-borg/runtime/dist/broker/map.js +38 -0
- package/node_modules/@noodle-borg/runtime/dist/broker/map.js.map +1 -0
- package/node_modules/@noodle-borg/runtime/dist/broker/secret-box.d.ts +103 -0
- package/node_modules/@noodle-borg/runtime/dist/broker/secret-box.d.ts.map +1 -0
- package/node_modules/@noodle-borg/runtime/dist/broker/secret-box.js +118 -0
- package/node_modules/@noodle-borg/runtime/dist/broker/secret-box.js.map +1 -0
- package/node_modules/@noodle-borg/runtime/dist/broker/static.d.ts +12 -0
- package/node_modules/@noodle-borg/runtime/dist/broker/static.d.ts.map +1 -0
- package/node_modules/@noodle-borg/runtime/dist/broker/static.js +15 -0
- package/node_modules/@noodle-borg/runtime/dist/broker/static.js.map +1 -0
- package/node_modules/@noodle-borg/runtime/dist/broker/types.d.ts +28 -0
- package/node_modules/@noodle-borg/runtime/dist/broker/types.d.ts.map +1 -0
- package/node_modules/@noodle-borg/runtime/dist/broker/types.js +2 -0
- package/node_modules/@noodle-borg/runtime/dist/broker/types.js.map +1 -0
- package/node_modules/@noodle-borg/runtime/dist/connector/in-memory.d.ts +29 -0
- package/node_modules/@noodle-borg/runtime/dist/connector/in-memory.d.ts.map +1 -0
- package/node_modules/@noodle-borg/runtime/dist/connector/in-memory.js +37 -0
- package/node_modules/@noodle-borg/runtime/dist/connector/in-memory.js.map +1 -0
- package/node_modules/@noodle-borg/runtime/dist/connector/types.d.ts +41 -0
- package/node_modules/@noodle-borg/runtime/dist/connector/types.d.ts.map +1 -0
- package/node_modules/@noodle-borg/runtime/dist/connector/types.js +2 -0
- package/node_modules/@noodle-borg/runtime/dist/connector/types.js.map +1 -0
- package/node_modules/@noodle-borg/runtime/dist/eval/evaluate.d.ts +39 -0
- package/node_modules/@noodle-borg/runtime/dist/eval/evaluate.d.ts.map +1 -0
- package/node_modules/@noodle-borg/runtime/dist/eval/evaluate.js +117 -0
- package/node_modules/@noodle-borg/runtime/dist/eval/evaluate.js.map +1 -0
- package/node_modules/@noodle-borg/runtime/dist/execute.d.ts +47 -0
- package/node_modules/@noodle-borg/runtime/dist/execute.d.ts.map +1 -0
- package/node_modules/@noodle-borg/runtime/dist/execute.js +297 -0
- package/node_modules/@noodle-borg/runtime/dist/execute.js.map +1 -0
- package/node_modules/@noodle-borg/runtime/dist/index.d.ts +12 -0
- package/node_modules/@noodle-borg/runtime/dist/index.d.ts.map +1 -0
- package/node_modules/@noodle-borg/runtime/dist/index.js +8 -0
- package/node_modules/@noodle-borg/runtime/dist/index.js.map +1 -0
- package/node_modules/@noodle-borg/runtime/dist/policy/allow-all.d.ts +10 -0
- package/node_modules/@noodle-borg/runtime/dist/policy/allow-all.d.ts.map +1 -0
- package/node_modules/@noodle-borg/runtime/dist/policy/allow-all.js +13 -0
- package/node_modules/@noodle-borg/runtime/dist/policy/allow-all.js.map +1 -0
- package/node_modules/@noodle-borg/runtime/dist/policy/types.d.ts +25 -0
- package/node_modules/@noodle-borg/runtime/dist/policy/types.d.ts.map +1 -0
- package/node_modules/@noodle-borg/runtime/dist/policy/types.js +2 -0
- package/node_modules/@noodle-borg/runtime/dist/policy/types.js.map +1 -0
- package/node_modules/@noodle-borg/runtime/dist/result.d.ts +19 -0
- package/node_modules/@noodle-borg/runtime/dist/result.d.ts.map +1 -0
- package/node_modules/@noodle-borg/runtime/dist/result.js +2 -0
- package/node_modules/@noodle-borg/runtime/dist/result.js.map +1 -0
- package/node_modules/@noodle-borg/runtime/package.json +27 -0
- package/node_modules/@noodle-borg/service/dist/auth/deploy-gate.d.ts +48 -0
- package/node_modules/@noodle-borg/service/dist/auth/deploy-gate.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/auth/deploy-gate.js +79 -0
- package/node_modules/@noodle-borg/service/dist/auth/deploy-gate.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/index.d.ts +7 -0
- package/node_modules/@noodle-borg/service/dist/index.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/index.js +7 -0
- package/node_modules/@noodle-borg/service/dist/index.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/main.d.ts +3 -0
- package/node_modules/@noodle-borg/service/dist/main.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/main.js +171 -0
- package/node_modules/@noodle-borg/service/dist/main.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/oauth/app.d.ts +14 -0
- package/node_modules/@noodle-borg/service/dist/oauth/app.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/oauth/app.js +48 -0
- package/node_modules/@noodle-borg/service/dist/oauth/app.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/oauth/consent.d.ts +18 -0
- package/node_modules/@noodle-borg/service/dist/oauth/consent.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/oauth/consent.js +55 -0
- package/node_modules/@noodle-borg/service/dist/oauth/consent.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/oauth/google.d.ts +31 -0
- package/node_modules/@noodle-borg/service/dist/oauth/google.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/oauth/google.js +39 -0
- package/node_modules/@noodle-borg/service/dist/oauth/google.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/oauth/paths.d.ts +3 -0
- package/node_modules/@noodle-borg/service/dist/oauth/paths.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/oauth/paths.js +19 -0
- package/node_modules/@noodle-borg/service/dist/oauth/paths.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/oauth/provider.d.ts +61 -0
- package/node_modules/@noodle-borg/service/dist/oauth/provider.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/oauth/provider.js +313 -0
- package/node_modules/@noodle-borg/service/dist/oauth/provider.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/oauth/store-postgres.d.ts +29 -0
- package/node_modules/@noodle-borg/service/dist/oauth/store-postgres.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/oauth/store-postgres.js +176 -0
- package/node_modules/@noodle-borg/service/dist/oauth/store-postgres.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/oauth/store.d.ts +85 -0
- package/node_modules/@noodle-borg/service/dist/oauth/store.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/oauth/store.js +57 -0
- package/node_modules/@noodle-borg/service/dist/oauth/store.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/oauth/tokens.d.ts +8 -0
- package/node_modules/@noodle-borg/service/dist/oauth/tokens.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/oauth/tokens.js +13 -0
- package/node_modules/@noodle-borg/service/dist/oauth/tokens.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/secret/kms-master-key.d.ts +36 -0
- package/node_modules/@noodle-borg/service/dist/secret/kms-master-key.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/secret/kms-master-key.js +51 -0
- package/node_modules/@noodle-borg/service/dist/secret/kms-master-key.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/service.d.ts +221 -0
- package/node_modules/@noodle-borg/service/dist/service.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/service.js +1163 -0
- package/node_modules/@noodle-borg/service/dist/service.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/store/cloudsql-pool.d.ts +34 -0
- package/node_modules/@noodle-borg/service/dist/store/cloudsql-pool.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/store/cloudsql-pool.js +38 -0
- package/node_modules/@noodle-borg/service/dist/store/cloudsql-pool.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/store/postgres.d.ts +56 -0
- package/node_modules/@noodle-borg/service/dist/store/postgres.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/store/postgres.js +372 -0
- package/node_modules/@noodle-borg/service/dist/store/postgres.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/store.d.ts +192 -0
- package/node_modules/@noodle-borg/service/dist/store.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/store.js +230 -0
- package/node_modules/@noodle-borg/service/dist/store.js.map +1 -0
- package/node_modules/@noodle-borg/service/package.json +44 -0
- package/node_modules/@noodle-borg/transport-http/dist/caller-auth.d.ts +15 -0
- package/node_modules/@noodle-borg/transport-http/dist/caller-auth.d.ts.map +1 -0
- package/node_modules/@noodle-borg/transport-http/dist/caller-auth.js +38 -0
- package/node_modules/@noodle-borg/transport-http/dist/caller-auth.js.map +1 -0
- package/node_modules/@noodle-borg/transport-http/dist/examples/serve-demo.d.ts +2 -0
- package/node_modules/@noodle-borg/transport-http/dist/examples/serve-demo.d.ts.map +1 -0
- package/node_modules/@noodle-borg/transport-http/dist/examples/serve-demo.js +129 -0
- package/node_modules/@noodle-borg/transport-http/dist/examples/serve-demo.js.map +1 -0
- package/node_modules/@noodle-borg/transport-http/dist/front-door.d.ts +46 -0
- package/node_modules/@noodle-borg/transport-http/dist/front-door.d.ts.map +1 -0
- package/node_modules/@noodle-borg/transport-http/dist/front-door.js +75 -0
- package/node_modules/@noodle-borg/transport-http/dist/front-door.js.map +1 -0
- package/node_modules/@noodle-borg/transport-http/dist/handler.d.ts +142 -0
- package/node_modules/@noodle-borg/transport-http/dist/handler.d.ts.map +1 -0
- package/node_modules/@noodle-borg/transport-http/dist/handler.js +387 -0
- package/node_modules/@noodle-borg/transport-http/dist/handler.js.map +1 -0
- package/node_modules/@noodle-borg/transport-http/dist/index.d.ts +6 -0
- package/node_modules/@noodle-borg/transport-http/dist/index.d.ts.map +1 -0
- package/node_modules/@noodle-borg/transport-http/dist/index.js +6 -0
- package/node_modules/@noodle-borg/transport-http/dist/index.js.map +1 -0
- package/node_modules/@noodle-borg/transport-http/dist/logging.d.ts +41 -0
- package/node_modules/@noodle-borg/transport-http/dist/logging.d.ts.map +1 -0
- package/node_modules/@noodle-borg/transport-http/dist/logging.js +71 -0
- package/node_modules/@noodle-borg/transport-http/dist/logging.js.map +1 -0
- package/node_modules/@noodle-borg/transport-http/dist/serve.d.ts +22 -0
- package/node_modules/@noodle-borg/transport-http/dist/serve.d.ts.map +1 -0
- package/node_modules/@noodle-borg/transport-http/dist/serve.js +25 -0
- package/node_modules/@noodle-borg/transport-http/dist/serve.js.map +1 -0
- package/node_modules/@noodle-borg/transport-http/package.json +30 -0
- package/package.json +78 -0
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import { suggestionFields } from '../suggest.js';
|
|
2
|
+
import { NAME_PATTERN } from './naming.js';
|
|
3
|
+
/**
|
|
4
|
+
* Resolve `$use` references in an authored JSON Schema (docs/SPEC.md "Schemas").
|
|
5
|
+
*
|
|
6
|
+
* Every `{ $use: "<name>" }` node is rewritten to a local `{ $ref: "#/$defs/<name>" }`, and the
|
|
7
|
+
* referenced definitions from `schemasMap` are bundled into the schema's `$defs` so each tool's
|
|
8
|
+
* schema document stays self-contained. Resolution is transitive (a referenced schema may itself
|
|
9
|
+
* use `$use`) and cycle-safe (definitions are bundled by `$ref`, never inlined). `$defs` keys are
|
|
10
|
+
* sorted for deterministic output, and `$defs` is only attached when at least one `$use` was
|
|
11
|
+
* resolved — so schemas without `$use` pass through byte-for-byte.
|
|
12
|
+
*
|
|
13
|
+
* `$use` must be the sole key of its object. External `$ref` rejection is handled downstream by the
|
|
14
|
+
* caller on the resolved schema (so it also scans bundled definitions).
|
|
15
|
+
*/
|
|
16
|
+
export function resolveSchemaUses(schema, schemasMap, path) {
|
|
17
|
+
const errors = [];
|
|
18
|
+
const usedAtRoot = new Set();
|
|
19
|
+
const rewrittenRoot = rewriteNode(schema, path, schemasMap, usedAtRoot, errors);
|
|
20
|
+
// Transitively resolve every referenced definition, guarding against cycles with `visited`.
|
|
21
|
+
const bundled = {};
|
|
22
|
+
const visited = new Set();
|
|
23
|
+
const queue = [...usedAtRoot];
|
|
24
|
+
while (queue.length > 0) {
|
|
25
|
+
const name = queue.shift();
|
|
26
|
+
if (visited.has(name))
|
|
27
|
+
continue;
|
|
28
|
+
visited.add(name);
|
|
29
|
+
const definition = schemasMap[name];
|
|
30
|
+
// `name` is only enqueued after rewriteNode confirmed it exists in schemasMap.
|
|
31
|
+
if (definition === undefined)
|
|
32
|
+
continue;
|
|
33
|
+
const usedHere = new Set();
|
|
34
|
+
bundled[name] = rewriteNode(definition, `schemas.${name}`, schemasMap, usedHere, errors);
|
|
35
|
+
for (const next of usedHere)
|
|
36
|
+
if (!visited.has(next))
|
|
37
|
+
queue.push(next);
|
|
38
|
+
}
|
|
39
|
+
if (errors.length > 0)
|
|
40
|
+
return { schema: rewrittenRoot, errors };
|
|
41
|
+
// No `$use` anywhere: pass the (structurally identical) schema through untouched.
|
|
42
|
+
if (visited.size === 0)
|
|
43
|
+
return { schema: rewrittenRoot, errors };
|
|
44
|
+
const mergedDefs = mergeDefs(rewrittenRoot, bundled, path, errors);
|
|
45
|
+
if (errors.length > 0)
|
|
46
|
+
return { schema: rewrittenRoot, errors };
|
|
47
|
+
return { schema: withDefs(rewrittenRoot, mergedDefs), errors };
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Recursively rewrite `$use` nodes to local `$ref`s. Records each referenced name in `used` and
|
|
51
|
+
* pushes a CompileError for malformed references. Returns a new value; never mutates the input.
|
|
52
|
+
*/
|
|
53
|
+
function rewriteNode(value, path, schemasMap, used, errors) {
|
|
54
|
+
if (Array.isArray(value)) {
|
|
55
|
+
return value.map((item, i) => rewriteNode(item, `${path}.${i}`, schemasMap, used, errors));
|
|
56
|
+
}
|
|
57
|
+
if (value === null || typeof value !== 'object')
|
|
58
|
+
return value;
|
|
59
|
+
const obj = value;
|
|
60
|
+
if ('$use' in obj) {
|
|
61
|
+
const refPath = `${path}.$use`;
|
|
62
|
+
const target = obj.$use;
|
|
63
|
+
if (Object.keys(obj).length !== 1) {
|
|
64
|
+
errors.push({
|
|
65
|
+
code: 'invalid_schema_ref',
|
|
66
|
+
path: refPath,
|
|
67
|
+
message: '$use must be the only key in its object',
|
|
68
|
+
});
|
|
69
|
+
return value;
|
|
70
|
+
}
|
|
71
|
+
if (typeof target !== 'string') {
|
|
72
|
+
errors.push({
|
|
73
|
+
code: 'invalid_schema_ref',
|
|
74
|
+
path: refPath,
|
|
75
|
+
message: '$use must reference a schema name as a string',
|
|
76
|
+
});
|
|
77
|
+
return value;
|
|
78
|
+
}
|
|
79
|
+
if (!NAME_PATTERN.test(target)) {
|
|
80
|
+
errors.push({
|
|
81
|
+
code: 'invalid_name',
|
|
82
|
+
path: refPath,
|
|
83
|
+
message: `$use target "${target}" must use lowercase letters, numbers, and underscores`,
|
|
84
|
+
});
|
|
85
|
+
return value;
|
|
86
|
+
}
|
|
87
|
+
if (!(target in schemasMap)) {
|
|
88
|
+
errors.push({
|
|
89
|
+
code: 'unknown_schema_ref',
|
|
90
|
+
path: refPath,
|
|
91
|
+
message: `$use references schema "${target}", which is not declared in "schemas"`,
|
|
92
|
+
got: target,
|
|
93
|
+
...suggestionFields('unknown_schema_ref', target, Object.keys(schemasMap)),
|
|
94
|
+
});
|
|
95
|
+
return value;
|
|
96
|
+
}
|
|
97
|
+
used.add(target);
|
|
98
|
+
return { $ref: `#/$defs/${target}` };
|
|
99
|
+
}
|
|
100
|
+
const out = {};
|
|
101
|
+
for (const [key, val] of Object.entries(obj)) {
|
|
102
|
+
out[key] = rewriteNode(val, `${path}.${key}`, schemasMap, used, errors);
|
|
103
|
+
}
|
|
104
|
+
return out;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Merge bundled definitions into any tenant-authored `$defs`, sort the keys for determinism, and
|
|
108
|
+
* reject a collision where an authored `$defs.<name>` differs from a bundled definition of the same
|
|
109
|
+
* name.
|
|
110
|
+
*/
|
|
111
|
+
function mergeDefs(root, bundled, path, errors) {
|
|
112
|
+
const authored = root.$defs !== null && typeof root.$defs === 'object' && !Array.isArray(root.$defs)
|
|
113
|
+
? root.$defs
|
|
114
|
+
: {};
|
|
115
|
+
const merged = { ...authored };
|
|
116
|
+
for (const [name, definition] of Object.entries(bundled)) {
|
|
117
|
+
if (name in authored && JSON.stringify(authored[name]) !== JSON.stringify(definition)) {
|
|
118
|
+
errors.push({
|
|
119
|
+
code: 'schema_ref_conflict',
|
|
120
|
+
path: `${path}.$defs.${name}`,
|
|
121
|
+
message: `$use target "${name}" conflicts with an existing $defs entry of the same name`,
|
|
122
|
+
});
|
|
123
|
+
continue;
|
|
124
|
+
}
|
|
125
|
+
merged[name] = definition;
|
|
126
|
+
}
|
|
127
|
+
const sorted = {};
|
|
128
|
+
for (const key of Object.keys(merged).sort())
|
|
129
|
+
sorted[key] = merged[key];
|
|
130
|
+
return sorted;
|
|
131
|
+
}
|
|
132
|
+
/** Return a copy of `root` with `$defs` set, replacing it in place or appending it at the end. */
|
|
133
|
+
function withDefs(root, defs) {
|
|
134
|
+
const out = {};
|
|
135
|
+
let placed = false;
|
|
136
|
+
for (const [key, val] of Object.entries(root)) {
|
|
137
|
+
if (key === '$defs') {
|
|
138
|
+
out[key] = defs;
|
|
139
|
+
placed = true;
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
out[key] = val;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
if (!placed)
|
|
146
|
+
out.$defs = defs;
|
|
147
|
+
return out;
|
|
148
|
+
}
|
|
149
|
+
//# sourceMappingURL=schema-refs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-refs.js","sourceRoot":"","sources":["../../src/manifest/schema-refs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const manifestSchema: z.ZodObject<{
|
|
3
|
+
manifestVersion: z.ZodLiteral<"0.2">;
|
|
4
|
+
server: z.ZodObject<{
|
|
5
|
+
name: z.ZodString;
|
|
6
|
+
version: z.ZodString;
|
|
7
|
+
title: z.ZodString;
|
|
8
|
+
}, z.core.$strip>;
|
|
9
|
+
connectors: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
10
|
+
id: z.ZodString;
|
|
11
|
+
version: z.ZodString;
|
|
12
|
+
}, z.core.$strip>>>;
|
|
13
|
+
schemas: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
|
|
14
|
+
tools: z.ZodArray<z.ZodObject<{
|
|
15
|
+
name: z.ZodString;
|
|
16
|
+
description: z.ZodString;
|
|
17
|
+
inputSchema: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
18
|
+
outputSchema: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
19
|
+
annotations: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
20
|
+
visibility: z.ZodOptional<z.ZodArray<z.ZodEnum<{
|
|
21
|
+
model: "model";
|
|
22
|
+
app: "app";
|
|
23
|
+
}>>>;
|
|
24
|
+
fulfilment: z.ZodObject<{
|
|
25
|
+
use: z.ZodOptional<z.ZodString>;
|
|
26
|
+
args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
27
|
+
steps: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
28
|
+
id: z.ZodString;
|
|
29
|
+
if: z.ZodOptional<z.ZodString>;
|
|
30
|
+
use: z.ZodOptional<z.ZodString>;
|
|
31
|
+
args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
32
|
+
map: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
33
|
+
elicit: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
34
|
+
}, z.core.$strip>>>;
|
|
35
|
+
output: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
36
|
+
}, z.core.$strip>;
|
|
37
|
+
}, z.core.$strip>>;
|
|
38
|
+
resources: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
39
|
+
name: z.ZodString;
|
|
40
|
+
uri: z.ZodString;
|
|
41
|
+
title: z.ZodOptional<z.ZodString>;
|
|
42
|
+
description: z.ZodOptional<z.ZodString>;
|
|
43
|
+
mimeType: z.ZodOptional<z.ZodString>;
|
|
44
|
+
fulfilment: z.ZodObject<{
|
|
45
|
+
use: z.ZodOptional<z.ZodString>;
|
|
46
|
+
args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
47
|
+
steps: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
48
|
+
id: z.ZodString;
|
|
49
|
+
if: z.ZodOptional<z.ZodString>;
|
|
50
|
+
use: z.ZodOptional<z.ZodString>;
|
|
51
|
+
args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
52
|
+
map: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
53
|
+
elicit: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
54
|
+
}, z.core.$strip>>>;
|
|
55
|
+
output: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
56
|
+
}, z.core.$strip>;
|
|
57
|
+
}, z.core.$strip>>>;
|
|
58
|
+
prompts: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
59
|
+
name: z.ZodString;
|
|
60
|
+
title: z.ZodOptional<z.ZodString>;
|
|
61
|
+
description: z.ZodOptional<z.ZodString>;
|
|
62
|
+
arguments: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
63
|
+
name: z.ZodString;
|
|
64
|
+
description: z.ZodOptional<z.ZodString>;
|
|
65
|
+
required: z.ZodOptional<z.ZodBoolean>;
|
|
66
|
+
}, z.core.$strip>>>;
|
|
67
|
+
fulfilment: z.ZodObject<{
|
|
68
|
+
use: z.ZodOptional<z.ZodString>;
|
|
69
|
+
args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
70
|
+
steps: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
71
|
+
id: z.ZodString;
|
|
72
|
+
if: z.ZodOptional<z.ZodString>;
|
|
73
|
+
use: z.ZodOptional<z.ZodString>;
|
|
74
|
+
args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
75
|
+
map: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
76
|
+
elicit: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
77
|
+
}, z.core.$strip>>>;
|
|
78
|
+
output: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
79
|
+
}, z.core.$strip>;
|
|
80
|
+
}, z.core.$strip>>>;
|
|
81
|
+
widgets: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
82
|
+
name: z.ZodString;
|
|
83
|
+
tool: z.ZodString;
|
|
84
|
+
html: z.ZodString;
|
|
85
|
+
title: z.ZodOptional<z.ZodString>;
|
|
86
|
+
description: z.ZodOptional<z.ZodString>;
|
|
87
|
+
csp: z.ZodOptional<z.ZodObject<{
|
|
88
|
+
connectDomains: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
89
|
+
resourceDomains: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
90
|
+
frameDomains: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
91
|
+
baseUriDomains: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
92
|
+
}, z.core.$strip>>;
|
|
93
|
+
permissions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodBoolean>>;
|
|
94
|
+
}, z.core.$strip>>>;
|
|
95
|
+
}, z.core.$strip>;
|
|
96
|
+
export type Manifest = z.infer<typeof manifestSchema>;
|
|
97
|
+
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/manifest/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAqKxB,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBASzB,CAAC;AAEH,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC"}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { NAME_PATTERN } from './naming.js';
|
|
3
|
+
/**
|
|
4
|
+
* Zod schema for the minimal `manifestVersion: "0.2"` subset implemented so far.
|
|
5
|
+
*
|
|
6
|
+
* This validates the manifest's *static shape*. It covers server identity, tools/resources/prompts with
|
|
7
|
+
* single-operation or flow fulfilment, the `connectors` block of named connector references that the
|
|
8
|
+
* resolution pass checks against the catalog, and the `widgets` block (MCP Apps UI resources; ADR 0022).
|
|
9
|
+
* Other optional top-level blocks (`connections`) are out of scope; unknown keys are stripped, not
|
|
10
|
+
* rejected, so the schema stays forward-compatible. See docs/SPEC.md "Manifest Reference".
|
|
11
|
+
*/
|
|
12
|
+
const nameSchema = z
|
|
13
|
+
.string()
|
|
14
|
+
.regex(NAME_PATTERN, 'must use lowercase letters, numbers, and underscores');
|
|
15
|
+
/** A tenant-authored JSON Schema document. Validated as an object here; deep checks run in compile(). */
|
|
16
|
+
const jsonSchemaSchema = z.record(z.string(), z.unknown());
|
|
17
|
+
/** An expression map (`args`/`map`/`output`): field name to a raw value parsed in the compile pass. */
|
|
18
|
+
const exprMapSchema = z.record(z.string(), z.unknown());
|
|
19
|
+
/**
|
|
20
|
+
* A flow step. Zod validates only the static shape; the compile pass enforces "exactly one verb"
|
|
21
|
+
* (`use`/`map`/`elicit`), operation-ref well-formedness, and expression/step-reference validity so
|
|
22
|
+
* those errors carry precise dotted paths and the step union stays open to a future `compute` verb.
|
|
23
|
+
*/
|
|
24
|
+
const stepSchema = z.object({
|
|
25
|
+
id: nameSchema,
|
|
26
|
+
if: z.string().optional(),
|
|
27
|
+
use: z.string().optional(),
|
|
28
|
+
args: exprMapSchema.optional(),
|
|
29
|
+
map: exprMapSchema.optional(),
|
|
30
|
+
elicit: jsonSchemaSchema.optional(),
|
|
31
|
+
});
|
|
32
|
+
/**
|
|
33
|
+
* Fulfilment is single-operation (`use` + `args`) sugar OR a flow (`steps` + `output`). Kept
|
|
34
|
+
* deliberately loose here (all fields optional); the compile pass discriminates on `use` vs `steps`,
|
|
35
|
+
* rejecting "neither/both" as `invalid_fulfilment`, and parses every expression value.
|
|
36
|
+
*/
|
|
37
|
+
const fulfilmentSchema = z.object({
|
|
38
|
+
use: z.string().optional(),
|
|
39
|
+
args: exprMapSchema.optional(),
|
|
40
|
+
steps: z.array(stepSchema).optional(),
|
|
41
|
+
output: exprMapSchema.optional(),
|
|
42
|
+
});
|
|
43
|
+
const toolSchema = z.object({
|
|
44
|
+
name: nameSchema,
|
|
45
|
+
description: z.string().min(1),
|
|
46
|
+
inputSchema: jsonSchemaSchema,
|
|
47
|
+
outputSchema: jsonSchemaSchema.optional(),
|
|
48
|
+
annotations: z.record(z.string(), z.unknown()).optional(),
|
|
49
|
+
/**
|
|
50
|
+
* Tool-surface visibility (SEP-1865 `_meta.ui.visibility`). Default (omitted) = `['model', 'app']`:
|
|
51
|
+
* the model sees and can call it. `['app']` makes it a **UI-only helper** — hidden from `tools/list`
|
|
52
|
+
* (the model never sees it) but still callable from a widget via `callServerTool`. This is a
|
|
53
|
+
* model-surface concern, **not** an authorization boundary (the policy layer remains the gate).
|
|
54
|
+
*/
|
|
55
|
+
visibility: z
|
|
56
|
+
.array(z.enum(['model', 'app']))
|
|
57
|
+
.min(1)
|
|
58
|
+
.optional(),
|
|
59
|
+
fulfilment: fulfilmentSchema,
|
|
60
|
+
});
|
|
61
|
+
/**
|
|
62
|
+
* An MCP resource. Like a tool, it carries a `fulfilment` (it can return a constant or call connectors);
|
|
63
|
+
* its `uri` is a fixed URI or a simple `{var}` URI template (validated in compile()). The compile pass
|
|
64
|
+
* classifies fixed vs template and emits the matcher. Resources have no input/output schema — a templated
|
|
65
|
+
* resource's extracted URI variables are the fulfilment's `input` scope.
|
|
66
|
+
*/
|
|
67
|
+
const resourceSchema = z.object({
|
|
68
|
+
name: nameSchema,
|
|
69
|
+
uri: z.string().min(1),
|
|
70
|
+
title: z.string().min(1).optional(),
|
|
71
|
+
description: z.string().min(1).optional(),
|
|
72
|
+
mimeType: z.string().min(1).optional(),
|
|
73
|
+
fulfilment: fulfilmentSchema,
|
|
74
|
+
});
|
|
75
|
+
/** A prompt argument descriptor (the `prompts/list` shape). Values arrive as strings at `prompts/get`. */
|
|
76
|
+
const promptArgumentSchema = z.object({
|
|
77
|
+
name: nameSchema,
|
|
78
|
+
description: z.string().min(1).optional(),
|
|
79
|
+
required: z.boolean().optional(),
|
|
80
|
+
});
|
|
81
|
+
/**
|
|
82
|
+
* An MCP prompt. Carries a `fulfilment` whose `input` scope is the supplied `arguments` map; its output
|
|
83
|
+
* maps to prompt messages (see the protocol layer). `arguments` is the descriptor list for `prompts/list`.
|
|
84
|
+
*/
|
|
85
|
+
const promptSchema = z.object({
|
|
86
|
+
name: nameSchema,
|
|
87
|
+
title: z.string().min(1).optional(),
|
|
88
|
+
description: z.string().min(1).optional(),
|
|
89
|
+
arguments: z.array(promptArgumentSchema).optional(),
|
|
90
|
+
fulfilment: fulfilmentSchema,
|
|
91
|
+
});
|
|
92
|
+
const serverSchema = z.object({
|
|
93
|
+
name: nameSchema,
|
|
94
|
+
version: z.string().min(1),
|
|
95
|
+
title: z.string().min(1),
|
|
96
|
+
});
|
|
97
|
+
/**
|
|
98
|
+
* A CSP source token: an origin or host — optional `https?://` scheme, optional `*.` wildcard label, a
|
|
99
|
+
* host, optional `:port`. Rejects whitespace, `${…}`, and dangerous schemes (`javascript:`/`data:`) at
|
|
100
|
+
* author time. These are *host*-enforced (the iframe sandbox), but the compiler must not emit a
|
|
101
|
+
* syntactically invalid CSP source to the wire (defense-in-depth + author feedback).
|
|
102
|
+
*/
|
|
103
|
+
const cspDomainSchema = z
|
|
104
|
+
.string()
|
|
105
|
+
.regex(/^(https?:\/\/)?(\*\.)?[A-Za-z0-9.-]+(:\d+)?$/, 'must be an origin or host (e.g. "https://api.example.com" or "*.example.com")');
|
|
106
|
+
/**
|
|
107
|
+
* CSP capability metadata for a widget's `ui://` resource. These are the standardized MCP Apps fields
|
|
108
|
+
* (SEP-1865 `_meta.ui.csp`), enforced by the host iframe sandbox — not by our runtime. Deny-by-default:
|
|
109
|
+
* a widget reaches only the origins it lists. See docs/spec/apps-and-authoring.md.
|
|
110
|
+
*/
|
|
111
|
+
const widgetCspSchema = z.object({
|
|
112
|
+
connectDomains: z.array(cspDomainSchema).optional(),
|
|
113
|
+
resourceDomains: z.array(cspDomainSchema).optional(),
|
|
114
|
+
frameDomains: z.array(cspDomainSchema).optional(),
|
|
115
|
+
baseUriDomains: z.array(cspDomainSchema).optional(),
|
|
116
|
+
});
|
|
117
|
+
/**
|
|
118
|
+
* Upper bound on a widget's inline `html` body. Rich markup + inline CSS/JS is a few KB (the shipped
|
|
119
|
+
* examples are < 3 KB); the cap bounds artifact size so a single widget cannot bloat the stored/served
|
|
120
|
+
* artifact. Counted in UTF-16 code units (~bytes for ASCII).
|
|
121
|
+
*/
|
|
122
|
+
const MAX_WIDGET_HTML = 256 * 1024;
|
|
123
|
+
/**
|
|
124
|
+
* An MCP Apps widget (Phase 2; [ADR 0022](../decisions/0022-adopt-mcp-ui-for-apps-widgets.md)). The
|
|
125
|
+
* compiler desugars each widget into a fixed `ui://<server>/<name>` resource (mimeType
|
|
126
|
+
* `text/html;profile=mcp-app`) and stamps the linking `tool`'s `_meta.ui.resourceUri`. `html` is the
|
|
127
|
+
* self-contained widget body (the raw-`text/html` escape hatch; a declarative `screen` DSL is a later
|
|
128
|
+
* slice). `csp`/`permissions` ride on the resource's `_meta.ui` as host-enforced capability metadata.
|
|
129
|
+
*/
|
|
130
|
+
const widgetSchema = z.object({
|
|
131
|
+
name: nameSchema,
|
|
132
|
+
tool: nameSchema,
|
|
133
|
+
html: z.string().min(1).max(MAX_WIDGET_HTML),
|
|
134
|
+
title: z.string().min(1).optional(),
|
|
135
|
+
description: z.string().min(1).optional(),
|
|
136
|
+
csp: widgetCspSchema.optional(),
|
|
137
|
+
permissions: z.record(z.string(), z.boolean()).optional(),
|
|
138
|
+
});
|
|
139
|
+
/**
|
|
140
|
+
* A named connector reference: the manifest alias (the record key) points to a catalog connector
|
|
141
|
+
* `id` pinned to a `version`. Operation references (`<connector>.<operation>`) use the alias.
|
|
142
|
+
*/
|
|
143
|
+
const connectorRefSchema = z.object({
|
|
144
|
+
id: nameSchema,
|
|
145
|
+
version: z.string().min(1),
|
|
146
|
+
});
|
|
147
|
+
export const manifestSchema = z.object({
|
|
148
|
+
manifestVersion: z.literal('0.2'),
|
|
149
|
+
server: serverSchema,
|
|
150
|
+
connectors: z.record(nameSchema, connectorRefSchema).optional(),
|
|
151
|
+
schemas: z.record(nameSchema, jsonSchemaSchema).optional(),
|
|
152
|
+
tools: z.array(toolSchema).min(1),
|
|
153
|
+
resources: z.array(resourceSchema).optional(),
|
|
154
|
+
prompts: z.array(promptSchema).optional(),
|
|
155
|
+
widgets: z.array(widgetSchema).optional(),
|
|
156
|
+
});
|
|
157
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/manifest/schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Emit the manifest's own contract as a JSON Schema 2020-12 document, generated natively by Zod 4.
|
|
3
|
+
* This both publishes the manifest contract and proves the Zod -> 2020-12 path end to end.
|
|
4
|
+
*/
|
|
5
|
+
export declare function manifestJsonSchema(): Record<string, unknown>;
|
|
6
|
+
//# sourceMappingURL=schema-export.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-export.d.ts","sourceRoot":"","sources":["../src/schema-export.ts"],"names":[],"mappings":"AAKA;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAE5D"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { realpathSync, writeFileSync } from 'node:fs';
|
|
2
|
+
import { fileURLToPath } from 'node:url';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
import { manifestSchema } from './manifest/schema.js';
|
|
5
|
+
/**
|
|
6
|
+
* Emit the manifest's own contract as a JSON Schema 2020-12 document, generated natively by Zod 4.
|
|
7
|
+
* This both publishes the manifest contract and proves the Zod -> 2020-12 path end to end.
|
|
8
|
+
*/
|
|
9
|
+
export function manifestJsonSchema() {
|
|
10
|
+
return z.toJSONSchema(manifestSchema, { target: 'draft-2020-12' });
|
|
11
|
+
}
|
|
12
|
+
function isInvokedDirectly() {
|
|
13
|
+
const entry = process.argv[1];
|
|
14
|
+
if (!entry)
|
|
15
|
+
return false;
|
|
16
|
+
try {
|
|
17
|
+
return realpathSync(entry) === fileURLToPath(import.meta.url);
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
if (isInvokedDirectly()) {
|
|
24
|
+
const out = process.argv[2] ?? 'manifest.schema.json';
|
|
25
|
+
writeFileSync(out, `${JSON.stringify(manifestJsonSchema(), null, 2)}\n`);
|
|
26
|
+
process.stdout.write(`Wrote ${out}\n`);
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=schema-export.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-export.js","sourceRoot":"","sources":["../src/schema-export.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD;;;GAGG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO,CAAC,CAAC,YAAY,CAAC,cAAc,EAAE,EAAE,MAAM,EAAE,eAAe,EAAE,CAA4B,CAAC;AAChG,CAAC;AAED,SAAS,iBAAiB;IACxB,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC9B,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IACzB,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,KAAK,CAAC,KAAK,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,IAAI,iBAAiB,EAAE,EAAE,CAAC;IACxB,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,sBAAsB,CAAC;IACtD,aAAa,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,kBAAkB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IACzE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;AACzC,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generation-friendly nearest-match suggestions for compile-time reference errors.
|
|
3
|
+
*
|
|
4
|
+
* Pure and dependency-free (node builtins only). The compiler attaches `didYouMean` / `suggestions`
|
|
5
|
+
* (and a stable `docAnchor`) to resolution {@link CompileError}s so a *machine* manifest generator can
|
|
6
|
+
* self-correct typos in connector aliases, operation names, and schema references without a human in
|
|
7
|
+
* the loop. See GT-1 in docs/STATUS.md.
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Levenshtein edit distance between `a` and `b`, capped at `cap`: the true distance when it is
|
|
11
|
+
* `<= cap`, otherwise `cap + 1`. Single rolling DP row with a per-row early exit, so probing many
|
|
12
|
+
* far-apart candidates stays cheap. Indices stay within `[0, bl]` by construction; the `?? 0`
|
|
13
|
+
* fallbacks below only satisfy `noUncheckedIndexedAccess` and are never reached.
|
|
14
|
+
*/
|
|
15
|
+
export declare function boundedDistance(a: string, b: string, cap: number): number;
|
|
16
|
+
/**
|
|
17
|
+
* The closest candidate to `probe` within the typo threshold, or `undefined` if none is close enough.
|
|
18
|
+
* Comparison is case-insensitive; ties break to the lexicographically smaller candidate (deterministic).
|
|
19
|
+
*/
|
|
20
|
+
export declare function nearestMatch(probe: string, candidates: readonly string[]): string | undefined;
|
|
21
|
+
/**
|
|
22
|
+
* Up to `limit` candidates ranked by closeness to `probe` (closest first; ties lexicographic). Unlike
|
|
23
|
+
* {@link nearestMatch} this is not gated by the typo threshold — it always offers the nearest few as a
|
|
24
|
+
* candidate set a generator can choose from, even when nothing is a likely single correction.
|
|
25
|
+
*/
|
|
26
|
+
export declare function rankSuggestions(probe: string, candidates: readonly string[], limit?: number): string[];
|
|
27
|
+
/** Optional, generation-friendly fields the compiler attaches to a resolution error. */
|
|
28
|
+
export interface SuggestionFields {
|
|
29
|
+
readonly didYouMean?: string;
|
|
30
|
+
readonly suggestions?: readonly string[];
|
|
31
|
+
readonly docAnchor: string;
|
|
32
|
+
}
|
|
33
|
+
/** A stable, machine-readable docs anchor for an error code (e.g. `compile-errors#unknown-operation`). */
|
|
34
|
+
export declare function docAnchorFor(code: string): string;
|
|
35
|
+
/**
|
|
36
|
+
* Build the `didYouMean` / `suggestions` / `docAnchor` fields for a reference error against the set of
|
|
37
|
+
* known identifiers in scope. Omits `didYouMean`/`suggestions` when there is nothing to offer (e.g. no
|
|
38
|
+
* candidates declared), but always carries a stable `docAnchor`.
|
|
39
|
+
*/
|
|
40
|
+
export declare function suggestionFields(code: string, probe: string, candidates: readonly string[]): SuggestionFields;
|
|
41
|
+
//# sourceMappingURL=suggest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"suggest.d.ts","sourceRoot":"","sources":["../src/suggest.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAyBzE;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,GAAG,SAAS,CAc7F;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,MAAM,EAAE,EAAE,KAAK,SAAI,GAAG,MAAM,EAAE,CAcjG;AAED,wFAAwF;AACxF,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,0GAA0G;AAC1G,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,SAAS,MAAM,EAAE,GAC5B,gBAAgB,CAQlB"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generation-friendly nearest-match suggestions for compile-time reference errors.
|
|
3
|
+
*
|
|
4
|
+
* Pure and dependency-free (node builtins only). The compiler attaches `didYouMean` / `suggestions`
|
|
5
|
+
* (and a stable `docAnchor`) to resolution {@link CompileError}s so a *machine* manifest generator can
|
|
6
|
+
* self-correct typos in connector aliases, operation names, and schema references without a human in
|
|
7
|
+
* the loop. See GT-1 in docs/STATUS.md.
|
|
8
|
+
*/
|
|
9
|
+
/** Typo tolerance for a probe of the given length: 1 for short names, up to 3 for long ones. */
|
|
10
|
+
function typoThreshold(length) {
|
|
11
|
+
return Math.min(3, Math.max(1, Math.floor(length / 3)));
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Levenshtein edit distance between `a` and `b`, capped at `cap`: the true distance when it is
|
|
15
|
+
* `<= cap`, otherwise `cap + 1`. Single rolling DP row with a per-row early exit, so probing many
|
|
16
|
+
* far-apart candidates stays cheap. Indices stay within `[0, bl]` by construction; the `?? 0`
|
|
17
|
+
* fallbacks below only satisfy `noUncheckedIndexedAccess` and are never reached.
|
|
18
|
+
*/
|
|
19
|
+
export function boundedDistance(a, b, cap) {
|
|
20
|
+
if (a === b)
|
|
21
|
+
return 0;
|
|
22
|
+
const al = a.length;
|
|
23
|
+
const bl = b.length;
|
|
24
|
+
if (Math.abs(al - bl) > cap)
|
|
25
|
+
return cap + 1;
|
|
26
|
+
const row = [];
|
|
27
|
+
for (let j = 0; j <= bl; j++)
|
|
28
|
+
row.push(j);
|
|
29
|
+
for (let i = 1; i <= al; i++) {
|
|
30
|
+
let diag = i - 1; // row[0] before this row overwrites it = dp[i-1][0]
|
|
31
|
+
row[0] = i;
|
|
32
|
+
let rowMin = i;
|
|
33
|
+
const ai = a.charCodeAt(i - 1);
|
|
34
|
+
for (let j = 1; j <= bl; j++) {
|
|
35
|
+
const up = row[j] ?? 0; // dp[i-1][j], before overwrite
|
|
36
|
+
const left = row[j - 1] ?? 0; // dp[i][j-1], already updated this row
|
|
37
|
+
const cost = ai === b.charCodeAt(j - 1) ? 0 : 1;
|
|
38
|
+
const v = Math.min(diag + cost, up + 1, left + 1);
|
|
39
|
+
diag = up;
|
|
40
|
+
row[j] = v;
|
|
41
|
+
if (v < rowMin)
|
|
42
|
+
rowMin = v;
|
|
43
|
+
}
|
|
44
|
+
if (rowMin > cap)
|
|
45
|
+
return cap + 1;
|
|
46
|
+
}
|
|
47
|
+
const d = row[bl] ?? cap + 1;
|
|
48
|
+
return d <= cap ? d : cap + 1;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* The closest candidate to `probe` within the typo threshold, or `undefined` if none is close enough.
|
|
52
|
+
* Comparison is case-insensitive; ties break to the lexicographically smaller candidate (deterministic).
|
|
53
|
+
*/
|
|
54
|
+
export function nearestMatch(probe, candidates) {
|
|
55
|
+
const p = probe.toLowerCase();
|
|
56
|
+
const threshold = typoThreshold(probe.length);
|
|
57
|
+
let best;
|
|
58
|
+
let bestDistance = threshold + 1;
|
|
59
|
+
for (const candidate of candidates) {
|
|
60
|
+
const d = boundedDistance(p, candidate.toLowerCase(), threshold);
|
|
61
|
+
if (d > threshold)
|
|
62
|
+
continue;
|
|
63
|
+
if (d < bestDistance || (d === bestDistance && (best === undefined || candidate < best))) {
|
|
64
|
+
best = candidate;
|
|
65
|
+
bestDistance = d;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return best;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Up to `limit` candidates ranked by closeness to `probe` (closest first; ties lexicographic). Unlike
|
|
72
|
+
* {@link nearestMatch} this is not gated by the typo threshold — it always offers the nearest few as a
|
|
73
|
+
* candidate set a generator can choose from, even when nothing is a likely single correction.
|
|
74
|
+
*/
|
|
75
|
+
export function rankSuggestions(probe, candidates, limit = 3) {
|
|
76
|
+
const p = probe.toLowerCase();
|
|
77
|
+
return candidates
|
|
78
|
+
.map((candidate) => ({
|
|
79
|
+
candidate,
|
|
80
|
+
distance: boundedDistance(p, candidate.toLowerCase(), Math.max(p.length, candidate.length)),
|
|
81
|
+
}))
|
|
82
|
+
.sort((x, y) => x.distance - y.distance ||
|
|
83
|
+
(x.candidate < y.candidate ? -1 : x.candidate > y.candidate ? 1 : 0))
|
|
84
|
+
.slice(0, limit)
|
|
85
|
+
.map((scored) => scored.candidate);
|
|
86
|
+
}
|
|
87
|
+
/** A stable, machine-readable docs anchor for an error code (e.g. `compile-errors#unknown-operation`). */
|
|
88
|
+
export function docAnchorFor(code) {
|
|
89
|
+
return `compile-errors#${code.replace(/_/g, '-')}`;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Build the `didYouMean` / `suggestions` / `docAnchor` fields for a reference error against the set of
|
|
93
|
+
* known identifiers in scope. Omits `didYouMean`/`suggestions` when there is nothing to offer (e.g. no
|
|
94
|
+
* candidates declared), but always carries a stable `docAnchor`.
|
|
95
|
+
*/
|
|
96
|
+
export function suggestionFields(code, probe, candidates) {
|
|
97
|
+
const didYouMean = nearestMatch(probe, candidates);
|
|
98
|
+
const suggestions = rankSuggestions(probe, candidates);
|
|
99
|
+
return {
|
|
100
|
+
...(didYouMean !== undefined ? { didYouMean } : {}),
|
|
101
|
+
...(suggestions.length > 0 ? { suggestions } : {}),
|
|
102
|
+
docAnchor: docAnchorFor(code),
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=suggest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"suggest.js","sourceRoot":"","sources":["../src/suggest.ts"],"names":[],"mappings":"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"}
|