@noodleseed/one 0.92.0 → 0.94.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/dist/deploy.js +1 -1
- package/dist/deploy.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/platform-support.js +2 -2
- package/dist/platform-support.js.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/curated/error-fixes.d.ts.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/curated/error-fixes.js +8 -0
- package/node_modules/@noodle-borg/agent-kit/dist/curated/error-fixes.js.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/generated/example-files.js +3 -3
- package/node_modules/@noodle-borg/agent-kit/dist/generated/example-files.js.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.d.ts.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.js +9 -0
- package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.js.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/plugin-bundle.d.ts.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/plugin-bundle.js +8 -0
- package/node_modules/@noodle-borg/agent-kit/dist/plugin-bundle.js.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/plugin-launcher.d.ts.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/plugin-launcher.js +24 -1
- package/node_modules/@noodle-borg/agent-kit/dist/plugin-launcher.js.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/plugin-manifests.js +30 -22
- package/node_modules/@noodle-borg/agent-kit/dist/plugin-manifests.js.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/plugin-marketplace-docs.d.ts.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/plugin-marketplace-docs.js +15 -0
- package/node_modules/@noodle-borg/agent-kit/dist/plugin-marketplace-docs.js.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/plugin-platform-support.d.ts +13 -0
- package/node_modules/@noodle-borg/agent-kit/dist/plugin-platform-support.d.ts.map +1 -0
- package/node_modules/@noodle-borg/agent-kit/dist/plugin-platform-support.js +13 -0
- package/node_modules/@noodle-borg/agent-kit/dist/plugin-platform-support.js.map +1 -0
- package/node_modules/@noodle-borg/agent-kit/dist/skill-authoring-auth-ref.d.ts +2 -0
- package/node_modules/@noodle-borg/agent-kit/dist/skill-authoring-auth-ref.d.ts.map +1 -0
- package/node_modules/@noodle-borg/agent-kit/dist/skill-authoring-auth-ref.js +171 -0
- package/node_modules/@noodle-borg/agent-kit/dist/skill-authoring-auth-ref.js.map +1 -0
- package/node_modules/@noodle-borg/agent-kit/dist/skill-authoring-refs.d.ts.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/skill-authoring-refs.js +3 -97
- package/node_modules/@noodle-borg/agent-kit/dist/skill-authoring-refs.js.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/package.json +1 -1
- package/node_modules/@noodle-borg/auth/dist/claims.d.ts +2 -0
- package/node_modules/@noodle-borg/auth/dist/claims.d.ts.map +1 -1
- package/node_modules/@noodle-borg/auth/dist/claims.js +15 -0
- package/node_modules/@noodle-borg/auth/dist/claims.js.map +1 -1
- package/node_modules/@noodle-borg/auth/dist/index.d.ts +2 -2
- package/node_modules/@noodle-borg/auth/dist/index.d.ts.map +1 -1
- package/node_modules/@noodle-borg/auth/dist/index.js +1 -1
- package/node_modules/@noodle-borg/auth/dist/index.js.map +1 -1
- package/node_modules/@noodle-borg/auth/dist/verify.d.ts +10 -1
- package/node_modules/@noodle-borg/auth/dist/verify.d.ts.map +1 -1
- package/node_modules/@noodle-borg/auth/dist/verify.js +9 -2
- package/node_modules/@noodle-borg/auth/dist/verify.js.map +1 -1
- package/node_modules/@noodle-borg/authoring/dist/connectors.d.ts +2 -2
- package/node_modules/@noodle-borg/authoring/dist/connectors.d.ts.map +1 -1
- package/node_modules/@noodle-borg/authoring/dist/connectors.js +4 -1
- package/node_modules/@noodle-borg/authoring/dist/connectors.js.map +1 -1
- package/node_modules/@noodle-borg/authoring/dist/customer-auth.d.ts +13 -0
- package/node_modules/@noodle-borg/authoring/dist/customer-auth.d.ts.map +1 -1
- package/node_modules/@noodle-borg/authoring/dist/customer-auth.js +31 -2
- package/node_modules/@noodle-borg/authoring/dist/customer-auth.js.map +1 -1
- package/node_modules/@noodle-borg/authoring/dist/customer-endpoint.d.ts +10 -0
- package/node_modules/@noodle-borg/authoring/dist/customer-endpoint.d.ts.map +1 -0
- package/node_modules/@noodle-borg/authoring/dist/customer-endpoint.js +18 -0
- package/node_modules/@noodle-borg/authoring/dist/customer-endpoint.js.map +1 -0
- package/node_modules/@noodle-borg/authoring/dist/index.d.ts +2 -1
- package/node_modules/@noodle-borg/authoring/dist/index.d.ts.map +1 -1
- package/node_modules/@noodle-borg/authoring/dist/index.js +1 -0
- package/node_modules/@noodle-borg/authoring/dist/index.js.map +1 -1
- package/node_modules/@noodle-borg/authoring/dist/server.d.ts +1 -1
- package/node_modules/@noodle-borg/authoring/dist/server.d.ts.map +1 -1
- package/node_modules/@noodle-borg/authoring/dist/server.js +1 -13
- package/node_modules/@noodle-borg/authoring/dist/server.js.map +1 -1
- package/node_modules/@noodle-borg/compiler/dist/artifact/assemble.d.ts +27 -0
- package/node_modules/@noodle-borg/compiler/dist/artifact/assemble.d.ts.map +1 -0
- package/node_modules/@noodle-borg/compiler/dist/artifact/assemble.js +73 -0
- package/node_modules/@noodle-borg/compiler/dist/artifact/assemble.js.map +1 -0
- package/node_modules/@noodle-borg/compiler/dist/artifact/catalog-emission.d.ts +50 -0
- package/node_modules/@noodle-borg/compiler/dist/artifact/catalog-emission.d.ts.map +1 -0
- package/node_modules/@noodle-borg/compiler/dist/artifact/catalog-emission.js +119 -0
- package/node_modules/@noodle-borg/compiler/dist/artifact/catalog-emission.js.map +1 -0
- package/node_modules/@noodle-borg/compiler/dist/artifact/types.d.ts +22 -1
- package/node_modules/@noodle-borg/compiler/dist/artifact/types.d.ts.map +1 -1
- package/node_modules/@noodle-borg/compiler/dist/artifact/types.js +5 -1
- package/node_modules/@noodle-borg/compiler/dist/artifact/types.js.map +1 -1
- package/node_modules/@noodle-borg/compiler/dist/catalog/in-memory.js +1 -1
- package/node_modules/@noodle-borg/compiler/dist/catalog/in-memory.js.map +1 -1
- package/node_modules/@noodle-borg/compiler/dist/catalog/types.d.ts +8 -0
- package/node_modules/@noodle-borg/compiler/dist/catalog/types.d.ts.map +1 -1
- package/node_modules/@noodle-borg/compiler/dist/catalog/types.js +0 -9
- package/node_modules/@noodle-borg/compiler/dist/catalog/types.js.map +1 -1
- package/node_modules/@noodle-borg/compiler/dist/compile.d.ts +1 -11
- package/node_modules/@noodle-borg/compiler/dist/compile.d.ts.map +1 -1
- package/node_modules/@noodle-borg/compiler/dist/compile.js +29 -163
- package/node_modules/@noodle-borg/compiler/dist/compile.js.map +1 -1
- package/node_modules/@noodle-borg/compiler/dist/context-compile.d.ts +2 -1
- package/node_modules/@noodle-borg/compiler/dist/context-compile.d.ts.map +1 -1
- package/node_modules/@noodle-borg/compiler/dist/context-compile.js +3 -1
- package/node_modules/@noodle-borg/compiler/dist/context-compile.js.map +1 -1
- package/node_modules/@noodle-borg/compiler/dist/customer-endpoint.d.ts +34 -0
- package/node_modules/@noodle-borg/compiler/dist/customer-endpoint.d.ts.map +1 -0
- package/node_modules/@noodle-borg/compiler/dist/customer-endpoint.js +240 -0
- package/node_modules/@noodle-borg/compiler/dist/customer-endpoint.js.map +1 -0
- package/node_modules/@noodle-borg/compiler/dist/customer-routing.d.ts +24 -0
- package/node_modules/@noodle-borg/compiler/dist/customer-routing.d.ts.map +1 -0
- package/node_modules/@noodle-borg/compiler/dist/customer-routing.js +136 -0
- package/node_modules/@noodle-borg/compiler/dist/customer-routing.js.map +1 -0
- package/node_modules/@noodle-borg/compiler/dist/errors.d.ts +1 -1
- package/node_modules/@noodle-borg/compiler/dist/errors.d.ts.map +1 -1
- package/node_modules/@noodle-borg/compiler/dist/fulfilment-emit.d.ts +7 -3
- package/node_modules/@noodle-borg/compiler/dist/fulfilment-emit.d.ts.map +1 -1
- package/node_modules/@noodle-borg/compiler/dist/fulfilment-emit.js +7 -1
- package/node_modules/@noodle-borg/compiler/dist/fulfilment-emit.js.map +1 -1
- package/node_modules/@noodle-borg/compiler/dist/index.d.ts +3 -2
- package/node_modules/@noodle-borg/compiler/dist/index.d.ts.map +1 -1
- package/node_modules/@noodle-borg/compiler/dist/index.js +1 -0
- package/node_modules/@noodle-borg/compiler/dist/index.js.map +1 -1
- package/node_modules/@noodle-borg/compiler/dist/manifest/auth-schema.d.ts +110 -0
- package/node_modules/@noodle-borg/compiler/dist/manifest/auth-schema.d.ts.map +1 -0
- package/node_modules/@noodle-borg/compiler/dist/manifest/auth-schema.js +191 -0
- package/node_modules/@noodle-borg/compiler/dist/manifest/auth-schema.js.map +1 -0
- package/node_modules/@noodle-borg/compiler/dist/manifest/schema.d.ts +12 -0
- package/node_modules/@noodle-borg/compiler/dist/manifest/schema.d.ts.map +1 -1
- package/node_modules/@noodle-borg/compiler/dist/manifest/schema.js +1 -73
- package/node_modules/@noodle-borg/compiler/dist/manifest/schema.js.map +1 -1
- package/node_modules/@noodle-borg/compiler/package.json +1 -0
- package/node_modules/@noodle-borg/compute/dist/code-connector.d.ts +1 -0
- package/node_modules/@noodle-borg/compute/dist/code-connector.d.ts.map +1 -1
- package/node_modules/@noodle-borg/compute/dist/code-connector.js.map +1 -1
- package/node_modules/@noodle-borg/connector-defs/dist/call-graph.d.ts.map +1 -1
- package/node_modules/@noodle-borg/connector-defs/dist/call-graph.js +6 -6
- package/node_modules/@noodle-borg/connector-defs/dist/call-graph.js.map +1 -1
- package/node_modules/@noodle-borg/connector-defs/dist/compile-auth.d.ts +2 -0
- package/node_modules/@noodle-borg/connector-defs/dist/compile-auth.d.ts.map +1 -1
- package/node_modules/@noodle-borg/connector-defs/dist/compile-auth.js +12 -9
- package/node_modules/@noodle-borg/connector-defs/dist/compile-auth.js.map +1 -1
- package/node_modules/@noodle-borg/connector-defs/dist/compile-http.d.ts +14 -0
- package/node_modules/@noodle-borg/connector-defs/dist/compile-http.d.ts.map +1 -0
- package/node_modules/@noodle-borg/connector-defs/dist/compile-http.js +347 -0
- package/node_modules/@noodle-borg/connector-defs/dist/compile-http.js.map +1 -0
- package/node_modules/@noodle-borg/connector-defs/dist/compile.d.ts +4 -2
- package/node_modules/@noodle-borg/connector-defs/dist/compile.d.ts.map +1 -1
- package/node_modules/@noodle-borg/connector-defs/dist/compile.js +17 -333
- package/node_modules/@noodle-borg/connector-defs/dist/compile.js.map +1 -1
- package/node_modules/@noodle-borg/connector-defs/dist/customer-routing.d.ts +11 -0
- package/node_modules/@noodle-borg/connector-defs/dist/customer-routing.d.ts.map +1 -0
- package/node_modules/@noodle-borg/connector-defs/dist/customer-routing.js +124 -0
- package/node_modules/@noodle-borg/connector-defs/dist/customer-routing.js.map +1 -0
- package/node_modules/@noodle-borg/connector-defs/dist/http-headers.d.ts +4 -0
- package/node_modules/@noodle-borg/connector-defs/dist/http-headers.d.ts.map +1 -0
- package/node_modules/@noodle-borg/connector-defs/dist/http-headers.js +52 -0
- package/node_modules/@noodle-borg/connector-defs/dist/http-headers.js.map +1 -0
- package/node_modules/@noodle-borg/connector-defs/dist/identity-key.d.ts +5 -0
- package/node_modules/@noodle-borg/connector-defs/dist/identity-key.d.ts.map +1 -0
- package/node_modules/@noodle-borg/connector-defs/dist/identity-key.js +9 -0
- package/node_modules/@noodle-borg/connector-defs/dist/identity-key.js.map +1 -0
- package/node_modules/@noodle-borg/connector-defs/dist/schema.d.ts +33 -3
- package/node_modules/@noodle-borg/connector-defs/dist/schema.d.ts.map +1 -1
- package/node_modules/@noodle-borg/connector-defs/dist/schema.js +22 -3
- package/node_modules/@noodle-borg/connector-defs/dist/schema.js.map +1 -1
- package/node_modules/@noodle-borg/connector-http/dist/customer-route.d.ts +17 -0
- package/node_modules/@noodle-borg/connector-http/dist/customer-route.d.ts.map +1 -0
- package/node_modules/@noodle-borg/connector-http/dist/customer-route.js +77 -0
- package/node_modules/@noodle-borg/connector-http/dist/customer-route.js.map +1 -0
- package/node_modules/@noodle-borg/connector-http/dist/http-connector.d.ts +2 -2
- package/node_modules/@noodle-borg/connector-http/dist/http-connector.d.ts.map +1 -1
- package/node_modules/@noodle-borg/connector-http/dist/http-connector.js +64 -67
- package/node_modules/@noodle-borg/connector-http/dist/http-connector.js.map +1 -1
- package/node_modules/@noodle-borg/connector-http/dist/http-response.d.ts.map +1 -1
- package/node_modules/@noodle-borg/connector-http/dist/http-response.js +23 -21
- package/node_modules/@noodle-borg/connector-http/dist/http-response.js.map +1 -1
- package/node_modules/@noodle-borg/connector-http/dist/ssrf.d.ts.map +1 -1
- package/node_modules/@noodle-borg/connector-http/dist/ssrf.js +17 -2
- package/node_modules/@noodle-borg/connector-http/dist/ssrf.js.map +1 -1
- package/node_modules/@noodle-borg/connector-http/dist/url-resolution.d.ts +4 -0
- package/node_modules/@noodle-borg/connector-http/dist/url-resolution.d.ts.map +1 -0
- package/node_modules/@noodle-borg/connector-http/dist/url-resolution.js +31 -0
- package/node_modules/@noodle-borg/connector-http/dist/url-resolution.js.map +1 -0
- package/node_modules/@noodle-borg/module/dist/contract.d.ts +14 -2
- package/node_modules/@noodle-borg/module/dist/contract.d.ts.map +1 -1
- package/node_modules/@noodle-borg/module/dist/contract.js.map +1 -1
- package/node_modules/@noodle-borg/protocol/dist/mapping.d.ts.map +1 -1
- package/node_modules/@noodle-borg/protocol/dist/mapping.js +17 -0
- package/node_modules/@noodle-borg/protocol/dist/mapping.js.map +1 -1
- package/node_modules/@noodle-borg/protocol/dist/sdk-server.d.ts +4 -0
- package/node_modules/@noodle-borg/protocol/dist/sdk-server.d.ts.map +1 -1
- package/node_modules/@noodle-borg/protocol/dist/sdk-server.js +7 -1
- package/node_modules/@noodle-borg/protocol/dist/sdk-server.js.map +1 -1
- package/node_modules/@noodle-borg/runtime/dist/broker/types.d.ts +24 -3
- package/node_modules/@noodle-borg/runtime/dist/broker/types.d.ts.map +1 -1
- package/node_modules/@noodle-borg/runtime/dist/broker/types.js +21 -0
- package/node_modules/@noodle-borg/runtime/dist/broker/types.js.map +1 -1
- package/node_modules/@noodle-borg/runtime/dist/confirmation.d.ts.map +1 -1
- package/node_modules/@noodle-borg/runtime/dist/confirmation.js +10 -0
- package/node_modules/@noodle-borg/runtime/dist/confirmation.js.map +1 -1
- package/node_modules/@noodle-borg/runtime/dist/connector/failure-details.d.ts +8 -0
- package/node_modules/@noodle-borg/runtime/dist/connector/failure-details.d.ts.map +1 -0
- package/node_modules/@noodle-borg/runtime/dist/connector/failure-details.js +53 -0
- package/node_modules/@noodle-borg/runtime/dist/connector/failure-details.js.map +1 -0
- package/node_modules/@noodle-borg/runtime/dist/connector/types.d.ts +7 -0
- package/node_modules/@noodle-borg/runtime/dist/connector/types.d.ts.map +1 -1
- package/node_modules/@noodle-borg/runtime/dist/connector/types.js +15 -0
- package/node_modules/@noodle-borg/runtime/dist/connector/types.js.map +1 -1
- package/node_modules/@noodle-borg/runtime/dist/customer-routing.d.ts +45 -0
- package/node_modules/@noodle-borg/runtime/dist/customer-routing.d.ts.map +1 -0
- package/node_modules/@noodle-borg/runtime/dist/customer-routing.js +135 -0
- package/node_modules/@noodle-borg/runtime/dist/customer-routing.js.map +1 -0
- package/node_modules/@noodle-borg/runtime/dist/execute.d.ts +10 -49
- package/node_modules/@noodle-borg/runtime/dist/execute.d.ts.map +1 -1
- package/node_modules/@noodle-borg/runtime/dist/execute.js +14 -363
- package/node_modules/@noodle-borg/runtime/dist/execute.js.map +1 -1
- package/node_modules/@noodle-borg/runtime/dist/index.d.ts +4 -2
- package/node_modules/@noodle-borg/runtime/dist/index.d.ts.map +1 -1
- package/node_modules/@noodle-borg/runtime/dist/index.js +4 -2
- package/node_modules/@noodle-borg/runtime/dist/index.js.map +1 -1
- package/node_modules/@noodle-borg/runtime/dist/interactive.d.ts.map +1 -1
- package/node_modules/@noodle-borg/runtime/dist/interactive.js +7 -0
- package/node_modules/@noodle-borg/runtime/dist/interactive.js.map +1 -1
- package/node_modules/@noodle-borg/runtime/dist/operation-credential.d.ts +16 -0
- package/node_modules/@noodle-borg/runtime/dist/operation-credential.d.ts.map +1 -0
- package/node_modules/@noodle-borg/runtime/dist/operation-credential.js +58 -0
- package/node_modules/@noodle-borg/runtime/dist/operation-credential.js.map +1 -0
- package/node_modules/@noodle-borg/runtime/dist/operation-execution.d.ts +48 -0
- package/node_modules/@noodle-borg/runtime/dist/operation-execution.d.ts.map +1 -0
- package/node_modules/@noodle-borg/runtime/dist/operation-execution.js +328 -0
- package/node_modules/@noodle-borg/runtime/dist/operation-execution.js.map +1 -0
- package/node_modules/@noodle-borg/runtime/dist/prepared-action-match.d.ts +3 -0
- package/node_modules/@noodle-borg/runtime/dist/prepared-action-match.d.ts.map +1 -0
- package/node_modules/@noodle-borg/runtime/dist/prepared-action-match.js +48 -0
- package/node_modules/@noodle-borg/runtime/dist/prepared-action-match.js.map +1 -0
- package/node_modules/@noodle-borg/runtime/dist/result.d.ts +1 -1
- package/node_modules/@noodle-borg/runtime/dist/result.d.ts.map +1 -1
- package/node_modules/@noodle-borg/runtime/dist/result.js.map +1 -1
- package/node_modules/@noodle-borg/runtime/dist/routed-output-guard.d.ts +15 -0
- package/node_modules/@noodle-borg/runtime/dist/routed-output-guard.d.ts.map +1 -0
- package/node_modules/@noodle-borg/runtime/dist/routed-output-guard.js +163 -0
- package/node_modules/@noodle-borg/runtime/dist/routed-output-guard.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/assistant-customer-issuer.d.ts +8 -0
- package/node_modules/@noodle-borg/service/dist/assistant-customer-issuer.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/assistant-customer-issuer.js +13 -0
- package/node_modules/@noodle-borg/service/dist/assistant-customer-issuer.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/assistant-interactive.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/assistant-interactive.js +2 -1
- package/node_modules/@noodle-borg/service/dist/assistant-interactive.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/control-plane-auth-bootstrap.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/control-plane-auth-bootstrap.js +1 -1
- package/node_modules/@noodle-borg/service/dist/control-plane-auth-bootstrap.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/credential-binding-index.d.ts +2 -0
- package/node_modules/@noodle-borg/service/dist/credential-binding-index.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/credential-binding-index.js +5 -1
- package/node_modules/@noodle-borg/service/dist/credential-binding-index.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/credential-broker-delegated-refresh.d.ts +47 -0
- package/node_modules/@noodle-borg/service/dist/credential-broker-delegated-refresh.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/credential-broker-delegated-refresh.js +165 -0
- package/node_modules/@noodle-borg/service/dist/credential-broker-delegated-refresh.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/credential-broker-delegated-token-exchange.d.ts +18 -0
- package/node_modules/@noodle-borg/service/dist/credential-broker-delegated-token-exchange.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/credential-broker-delegated-token-exchange.js +112 -0
- package/node_modules/@noodle-borg/service/dist/credential-broker-delegated-token-exchange.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/credential-broker.d.ts +6 -24
- package/node_modules/@noodle-borg/service/dist/credential-broker.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/credential-broker.js +23 -271
- package/node_modules/@noodle-borg/service/dist/credential-broker.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/credential-probe-route.d.ts +20 -0
- package/node_modules/@noodle-borg/service/dist/credential-probe-route.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/credential-probe-route.js +28 -0
- package/node_modules/@noodle-borg/service/dist/credential-probe-route.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/credential-probes.d.ts +3 -1
- package/node_modules/@noodle-borg/service/dist/credential-probes.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/credential-probes.js +54 -13
- package/node_modules/@noodle-borg/service/dist/credential-probes.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/credential-route-guard.d.ts +9 -0
- package/node_modules/@noodle-borg/service/dist/credential-route-guard.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/credential-route-guard.js +34 -0
- package/node_modules/@noodle-borg/service/dist/credential-route-guard.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/credential-route-key.d.ts +12 -0
- package/node_modules/@noodle-borg/service/dist/credential-route-key.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/credential-route-key.js +17 -0
- package/node_modules/@noodle-borg/service/dist/credential-route-key.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/customer-verifier.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/customer-verifier.js +72 -21
- package/node_modules/@noodle-borg/service/dist/customer-verifier.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/delegated-token-exchange.d.ts +3 -1
- package/node_modules/@noodle-borg/service/dist/delegated-token-exchange.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/delegated-token-exchange.js +24 -2
- package/node_modules/@noodle-borg/service/dist/delegated-token-exchange.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/developer-mcp/mount.js +6 -5
- package/node_modules/@noodle-borg/service/dist/developer-mcp/mount.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/external-credential-binding-broker.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/external-credential-binding-broker.js +4 -3
- package/node_modules/@noodle-borg/service/dist/external-credential-binding-broker.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/google-workload-identity-probe.d.ts +2 -1
- package/node_modules/@noodle-borg/service/dist/google-workload-identity-probe.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/google-workload-identity-probe.js +23 -7
- package/node_modules/@noodle-borg/service/dist/google-workload-identity-probe.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/google-workload-identity.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/google-workload-identity.js +6 -5
- package/node_modules/@noodle-borg/service/dist/google-workload-identity.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/managed-config-broker-options.d.ts +18 -0
- package/node_modules/@noodle-borg/service/dist/managed-config-broker-options.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/managed-config-broker-options.js +2 -0
- package/node_modules/@noodle-borg/service/dist/managed-config-broker-options.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/oauth/platform-principal-guard.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/oauth/platform-principal-guard.js +6 -5
- package/node_modules/@noodle-borg/service/dist/oauth/platform-principal-guard.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/oauth/provider.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/oauth/provider.js +10 -8
- package/node_modules/@noodle-borg/service/dist/oauth/provider.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/oauth/service-bootstrap.js +5 -5
- package/node_modules/@noodle-borg/service/dist/oauth/service-bootstrap.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/assistant-agent.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/assistant-agent.js +3 -2
- package/node_modules/@noodle-borg/service/dist/routes/assistant-agent.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/assistant-interaction-resolution.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/assistant-interaction-resolution.js +2 -1
- package/node_modules/@noodle-borg/service/dist/routes/assistant-interaction-resolution.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/assistant-interactions.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/assistant-interactions.js +3 -2
- package/node_modules/@noodle-borg/service/dist/routes/assistant-interactions.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/assistant.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/assistant.js +8 -7
- package/node_modules/@noodle-borg/service/dist/routes/assistant.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/auth-doctor-live.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/auth-doctor-live.js +6 -3
- package/node_modules/@noodle-borg/service/dist/routes/auth-doctor-live.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/store.d.ts +3 -1
- package/node_modules/@noodle-borg/service/dist/store.d.ts.map +1 -1
- package/node_modules/@noodle-borg/transport-http/dist/handler.js +18 -2
- package/node_modules/@noodle-borg/transport-http/dist/handler.js.map +1 -1
- package/node_modules/@noodle-borg/transport-http/dist/identity-authorization.d.ts +2 -0
- package/node_modules/@noodle-borg/transport-http/dist/identity-authorization.d.ts.map +1 -1
- package/node_modules/@noodle-borg/transport-http/dist/identity-authorization.js +27 -9
- package/node_modules/@noodle-borg/transport-http/dist/identity-authorization.js.map +1 -1
- package/node_modules/tldts/LICENSE +13 -0
- package/node_modules/tldts/README.md +368 -0
- package/node_modules/tldts/bin/cli.js +21 -0
- package/node_modules/tldts/dist/cjs/index.js +1170 -0
- package/node_modules/tldts/dist/cjs/index.js.map +1 -0
- package/node_modules/tldts/dist/cjs/src/data/trie.js +12 -0
- package/node_modules/tldts/dist/cjs/src/data/trie.js.map +1 -0
- package/node_modules/tldts/dist/cjs/src/suffix-trie.js +170 -0
- package/node_modules/tldts/dist/cjs/src/suffix-trie.js.map +1 -0
- package/node_modules/tldts/dist/cjs/tsconfig.tsbuildinfo +1 -0
- package/node_modules/tldts/dist/es6/index.js +41 -0
- package/node_modules/tldts/dist/es6/index.js.map +1 -0
- package/node_modules/tldts/dist/es6/src/data/trie.js +9 -0
- package/node_modules/tldts/dist/es6/src/data/trie.js.map +1 -0
- package/node_modules/tldts/dist/es6/src/suffix-trie.js +167 -0
- package/node_modules/tldts/dist/es6/src/suffix-trie.js.map +1 -0
- package/node_modules/tldts/dist/es6/tsconfig.bundle.tsbuildinfo +1 -0
- package/node_modules/tldts/dist/index.cjs.min.js +2 -0
- package/node_modules/tldts/dist/index.cjs.min.js.map +1 -0
- package/node_modules/tldts/dist/index.esm.min.js +2 -0
- package/node_modules/tldts/dist/index.esm.min.js.map +1 -0
- package/node_modules/tldts/dist/index.umd.min.js +2 -0
- package/node_modules/tldts/dist/index.umd.min.js.map +1 -0
- package/node_modules/tldts/dist/types/index.d.ts +8 -0
- package/node_modules/tldts/dist/types/src/data/trie.d.ts +7 -0
- package/node_modules/tldts/dist/types/src/suffix-trie.d.ts +5 -0
- package/node_modules/tldts/index.ts +74 -0
- package/node_modules/tldts/package.json +89 -0
- package/node_modules/tldts/src/data/trie.ts +8 -0
- package/node_modules/tldts/src/suffix-trie.ts +207 -0
- package/node_modules/tldts-core/LICENSE +13 -0
- package/node_modules/tldts-core/README.md +3 -0
- package/node_modules/tldts-core/dist/cjs/index.js +955 -0
- package/node_modules/tldts-core/dist/cjs/index.js.map +1 -0
- package/node_modules/tldts-core/dist/cjs/src/domain-without-suffix.js +15 -0
- package/node_modules/tldts-core/dist/cjs/src/domain-without-suffix.js.map +1 -0
- package/node_modules/tldts-core/dist/cjs/src/domain.js +83 -0
- package/node_modules/tldts-core/dist/cjs/src/domain.js.map +1 -0
- package/node_modules/tldts-core/dist/cjs/src/extract-hostname.js +439 -0
- package/node_modules/tldts-core/dist/cjs/src/extract-hostname.js.map +1 -0
- package/node_modules/tldts-core/dist/cjs/src/factory.js +128 -0
- package/node_modules/tldts-core/dist/cjs/src/factory.js.map +1 -0
- package/node_modules/tldts-core/dist/cjs/src/is-ip.js +72 -0
- package/node_modules/tldts-core/dist/cjs/src/is-ip.js.map +1 -0
- package/node_modules/tldts-core/dist/cjs/src/is-special-use.js +65 -0
- package/node_modules/tldts-core/dist/cjs/src/is-special-use.js.map +1 -0
- package/node_modules/tldts-core/dist/cjs/src/is-valid.js +80 -0
- package/node_modules/tldts-core/dist/cjs/src/is-valid.js.map +1 -0
- package/node_modules/tldts-core/dist/cjs/src/lookup/fast-path.js +69 -0
- package/node_modules/tldts-core/dist/cjs/src/lookup/fast-path.js.map +1 -0
- package/node_modules/tldts-core/dist/cjs/src/lookup/interface.js +3 -0
- package/node_modules/tldts-core/dist/cjs/src/lookup/interface.js.map +1 -0
- package/node_modules/tldts-core/dist/cjs/src/options.js +23 -0
- package/node_modules/tldts-core/dist/cjs/src/options.js.map +1 -0
- package/node_modules/tldts-core/dist/cjs/src/subdomain.js +14 -0
- package/node_modules/tldts-core/dist/cjs/src/subdomain.js.map +1 -0
- package/node_modules/tldts-core/dist/cjs/tsconfig.tsbuildinfo +1 -0
- package/node_modules/tldts-core/dist/es6/index.js +4 -0
- package/node_modules/tldts-core/dist/es6/index.js.map +1 -0
- package/node_modules/tldts-core/dist/es6/src/domain-without-suffix.js +12 -0
- package/node_modules/tldts-core/dist/es6/src/domain-without-suffix.js.map +1 -0
- package/node_modules/tldts-core/dist/es6/src/domain.js +80 -0
- package/node_modules/tldts-core/dist/es6/src/domain.js.map +1 -0
- package/node_modules/tldts-core/dist/es6/src/extract-hostname.js +435 -0
- package/node_modules/tldts-core/dist/es6/src/extract-hostname.js.map +1 -0
- package/node_modules/tldts-core/dist/es6/src/factory.js +123 -0
- package/node_modules/tldts-core/dist/es6/src/factory.js.map +1 -0
- package/node_modules/tldts-core/dist/es6/src/is-ip.js +69 -0
- package/node_modules/tldts-core/dist/es6/src/is-ip.js.map +1 -0
- package/node_modules/tldts-core/dist/es6/src/is-special-use.js +62 -0
- package/node_modules/tldts-core/dist/es6/src/is-special-use.js.map +1 -0
- package/node_modules/tldts-core/dist/es6/src/is-valid.js +77 -0
- package/node_modules/tldts-core/dist/es6/src/is-valid.js.map +1 -0
- package/node_modules/tldts-core/dist/es6/src/lookup/fast-path.js +66 -0
- package/node_modules/tldts-core/dist/es6/src/lookup/fast-path.js.map +1 -0
- package/node_modules/tldts-core/dist/es6/src/lookup/interface.js +2 -0
- package/node_modules/tldts-core/dist/es6/src/lookup/interface.js.map +1 -0
- package/node_modules/tldts-core/dist/es6/src/options.js +20 -0
- package/node_modules/tldts-core/dist/es6/src/options.js.map +1 -0
- package/node_modules/tldts-core/dist/es6/src/subdomain.js +11 -0
- package/node_modules/tldts-core/dist/es6/src/subdomain.js.map +1 -0
- package/node_modules/tldts-core/dist/es6/tsconfig.bundle.tsbuildinfo +1 -0
- package/node_modules/tldts-core/dist/types/index.d.ts +4 -0
- package/node_modules/tldts-core/dist/types/src/domain-without-suffix.d.ts +6 -0
- package/node_modules/tldts-core/dist/types/src/domain.d.ts +5 -0
- package/node_modules/tldts-core/dist/types/src/extract-hostname.d.ts +17 -0
- package/node_modules/tldts-core/dist/types/src/factory.d.ts +29 -0
- package/node_modules/tldts-core/dist/types/src/is-ip.d.ts +6 -0
- package/node_modules/tldts-core/dist/types/src/is-special-use.d.ts +5 -0
- package/node_modules/tldts-core/dist/types/src/is-valid.d.ts +15 -0
- package/node_modules/tldts-core/dist/types/src/lookup/fast-path.d.ts +2 -0
- package/node_modules/tldts-core/dist/types/src/lookup/interface.d.ts +9 -0
- package/node_modules/tldts-core/dist/types/src/options.d.ts +11 -0
- package/node_modules/tldts-core/dist/types/src/subdomain.d.ts +4 -0
- package/node_modules/tldts-core/index.ts +10 -0
- package/node_modules/tldts-core/package.json +68 -0
- package/node_modules/tldts-core/src/domain-without-suffix.ts +14 -0
- package/node_modules/tldts-core/src/domain.ts +100 -0
- package/node_modules/tldts-core/src/extract-hostname.ts +480 -0
- package/node_modules/tldts-core/src/factory.ts +199 -0
- package/node_modules/tldts-core/src/is-ip.ts +87 -0
- package/node_modules/tldts-core/src/is-special-use.ts +65 -0
- package/node_modules/tldts-core/src/is-valid.ts +89 -0
- package/node_modules/tldts-core/src/lookup/fast-path.ts +80 -0
- package/node_modules/tldts-core/src/lookup/interface.ts +10 -0
- package/node_modules/tldts-core/src/options.ts +45 -0
- package/node_modules/tldts-core/src/subdomain.ts +11 -0
- package/package.json +3 -1
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { createPluginCompatibility } from './plugin-compatibility.js';
|
|
2
|
+
import { PLUGIN_UNSUPPORTED_NATIVE_WINDOWS } from './plugin-platform-support.js';
|
|
2
3
|
const COMPATIBILITY_RELATIVE_PATH = {
|
|
3
4
|
'claude-code': '../noodle-plugin-compatibility.json',
|
|
4
5
|
codex: '../../../noodle-plugin-compatibility.json',
|
|
@@ -12,6 +13,7 @@ export function renderPluginLauncher(options) {
|
|
|
12
13
|
}).cliVersion;
|
|
13
14
|
const host = options.host;
|
|
14
15
|
const compatibilityRelativePath = COMPATIBILITY_RELATIVE_PATH[host];
|
|
16
|
+
const nativeWindowsError = JSON.stringify(PLUGIN_UNSUPPORTED_NATIVE_WINDOWS);
|
|
15
17
|
return [
|
|
16
18
|
'#!/usr/bin/env node',
|
|
17
19
|
"import { spawn } from 'node:child_process';",
|
|
@@ -29,7 +31,25 @@ export function renderPluginLauncher(options) {
|
|
|
29
31
|
' NOODLE_CONFIG_HOME: configHome,',
|
|
30
32
|
' NOODLE_PLUGIN_COMPATIBILITY_FILE: compatibilityFile,',
|
|
31
33
|
'};',
|
|
32
|
-
|
|
34
|
+
'const argv = process.argv.slice(2);',
|
|
35
|
+
"const WINDOWS_DISCOVERY_COMMANDS = new Set(['--help', '-h', 'help', '--version', '-v', 'version']);",
|
|
36
|
+
`const NATIVE_WINDOWS_ERROR = ${nativeWindowsError};`,
|
|
37
|
+
'function rejectUnsupportedNativeWindows(argv) {',
|
|
38
|
+
" if (process.platform !== 'win32' || WINDOWS_DISCOVERY_COMMANDS.has(argv[0] ?? '')) return false;",
|
|
39
|
+
" if (argv.includes('--json')) {",
|
|
40
|
+
' process.stdout.write(`${JSON.stringify({ ok: false, error: NATIVE_WINDOWS_ERROR })}\\n`);',
|
|
41
|
+
' } else {',
|
|
42
|
+
' process.stderr.write(`${[',
|
|
43
|
+
' `${NATIVE_WINDOWS_ERROR.code}: ${NATIVE_WINDOWS_ERROR.message}`,',
|
|
44
|
+
' `Cause: ${NATIVE_WINDOWS_ERROR.cause}`,',
|
|
45
|
+
' `Fix: ${NATIVE_WINDOWS_ERROR.fix}`,',
|
|
46
|
+
' `Next: ${NATIVE_WINDOWS_ERROR.next}`,',
|
|
47
|
+
" ].join('\\n')}\\n`);",
|
|
48
|
+
' }',
|
|
49
|
+
' process.exitCode = 2;',
|
|
50
|
+
' return true;',
|
|
51
|
+
'}',
|
|
52
|
+
"const npmArgs = ['exec', '--yes', `--package=${CLI_PACKAGE}`, '--', 'noodle', ...argv];",
|
|
33
53
|
"const npmCli = join(dirname(process.execPath), 'node_modules', 'npm', 'bin', 'npm-cli.js');",
|
|
34
54
|
"const command = process.platform === 'win32' ? process.execPath : 'npm';",
|
|
35
55
|
"const commandArgs = process.platform === 'win32' ? [npmCli, ...npmArgs] : npmArgs;",
|
|
@@ -39,6 +59,7 @@ export function renderPluginLauncher(options) {
|
|
|
39
59
|
"let stderrTail = '';",
|
|
40
60
|
'let bootstrapFailureDetected = false;',
|
|
41
61
|
'let launchFailed = false;',
|
|
62
|
+
'function launchCli() {',
|
|
42
63
|
'const child = spawn(',
|
|
43
64
|
' command,',
|
|
44
65
|
' commandArgs,',
|
|
@@ -79,6 +100,8 @@ export function renderPluginLauncher(options) {
|
|
|
79
100
|
' }',
|
|
80
101
|
' process.exitCode = code ?? 1;',
|
|
81
102
|
'});',
|
|
103
|
+
'}',
|
|
104
|
+
'if (!rejectUnsupportedNativeWindows(argv)) launchCli();',
|
|
82
105
|
'',
|
|
83
106
|
].join('\n');
|
|
84
107
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-launcher.js","sourceRoot":"","sources":["../src/plugin-launcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"plugin-launcher.js","sourceRoot":"","sources":["../src/plugin-launcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,iCAAiC,EAAE,MAAM,8BAA8B,CAAC;AASjF,MAAM,2BAA2B,GAAuC;IACtE,aAAa,EAAE,qCAAqC;IACpD,KAAK,EAAE,2CAA2C;IAClD,MAAM,EAAE,2CAA2C;CACpD,CAAC;AAEF,8FAA8F;AAC9F,MAAM,UAAU,oBAAoB,CAAC,OAAoC;IACvE,MAAM,UAAU,GAAG,yBAAyB,CAAC;QAC3C,aAAa,EAAE,OAAO;QACtB,UAAU,EAAE,OAAO,CAAC,UAAU;KAC/B,CAAC,CAAC,UAAU,CAAC;IACd,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAC1B,MAAM,yBAAyB,GAAG,2BAA2B,CAAC,IAAI,CAAC,CAAC;IACpE,MAAM,kBAAkB,GAAG,IAAI,CAAC,SAAS,CAAC,iCAAiC,CAAC,CAAC;IAC7E,OAAO;QACL,qBAAqB;QACrB,6CAA6C;QAC7C,2CAA2C;QAC3C,qDAAqD;QACrD,oCAAoC;QACpC,EAAE;QACF,wCAAwC,UAAU,IAAI;QACtD,iBAAiB,IAAI,IAAI;QACzB,+EAA+E,yBAAyB,KAAK;QAC7G,yEAAyE;QACzE,eAAe;QACf,mBAAmB;QACnB,0BAA0B,IAAI,IAAI;QAClC,mCAAmC;QACnC,wDAAwD;QACxD,IAAI;QACJ,qCAAqC;QACrC,qGAAqG;QACrG,gCAAgC,kBAAkB,GAAG;QACrD,iDAAiD;QACjD,oGAAoG;QACpG,kCAAkC;QAClC,+FAA+F;QAC/F,YAAY;QACZ,+BAA+B;QAC/B,wEAAwE;QACxE,+CAA+C;QAC/C,2CAA2C;QAC3C,6CAA6C;QAC7C,0BAA0B;QAC1B,KAAK;QACL,yBAAyB;QACzB,gBAAgB;QAChB,GAAG;QACH,yFAAyF;QACzF,6FAA6F;QAC7F,0EAA0E;QAC1E,oFAAoF;QACpF,sCAAsC;QACtC,2BAA2B;QAC3B,4OAA4O;QAC5O,sBAAsB;QACtB,uCAAuC;QACvC,2BAA2B;QAC3B,wBAAwB;QACxB,sBAAsB;QACtB,YAAY;QACZ,gBAAgB;QAChB,iEAAiE;QACjE,IAAI;QACJ,sCAAsC;QACtC,+BAA+B;QAC/B,+BAA+B;QAC/B,4CAA4C;QAC5C,kEAAkE;QAClE,oDAAoD;QACpD,KAAK;QACL,kCAAkC;QAClC,wBAAwB;QACxB,qIAAqI;QACrI,yBAAyB;QACzB,KAAK;QACL,yCAAyC;QACzC,6BAA6B;QAC7B,0BAA0B;QAC1B,wCAAwC;QACxC,aAAa;QACb,KAAK;QACL,wDAAwD;QACxD,wBAAwB;QACxB,kBAAkB;QAClB,gBAAgB;QAChB,8CAA8C;QAC9C,uFAAuF;QACvF,iBAAiB;QACjB,oEAAoE;QACpE,+EAA+E;QAC/E,sEAAsE;QACtE,YAAY;QACZ,UAAU;QACV,QAAQ;QACR,6DAA6D;QAC7D,KAAK;QACL,iCAAiC;QACjC,KAAK;QACL,GAAG;QACH,yDAAyD;QACzD,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
|
|
@@ -91,30 +91,38 @@ export function renderCursorDeveloperMcpConfig(compatibility) {
|
|
|
91
91
|
};
|
|
92
92
|
}
|
|
93
93
|
function localReadinessMcp(host, compatibility, includeType) {
|
|
94
|
+
const args = [
|
|
95
|
+
'plugin-mcp',
|
|
96
|
+
'--plugin-host',
|
|
97
|
+
host,
|
|
98
|
+
'--plugin-version',
|
|
99
|
+
compatibility.pluginVersion,
|
|
100
|
+
'--agent-kit-version',
|
|
101
|
+
compatibility.schemaVersion === 2 ? compatibility.agentKitVersion : compatibility.pluginVersion,
|
|
102
|
+
'--plugin-content-hash',
|
|
103
|
+
compatibility.schemaVersion === 2 ? compatibility.pluginContentHash : DEVELOPMENT_CONTENT_HASH,
|
|
104
|
+
'--developer-mcp-url',
|
|
105
|
+
compatibility.developerMcpUrl,
|
|
106
|
+
'--developer-mcp-capability-version',
|
|
107
|
+
compatibility.developerMcpCapabilityVersion,
|
|
108
|
+
];
|
|
109
|
+
if (host === 'claude-code') {
|
|
110
|
+
return {
|
|
111
|
+
...(includeType ? { type: 'stdio' } : {}),
|
|
112
|
+
command: 'node',
|
|
113
|
+
args: ['${CLAUDE_PLUGIN_ROOT}/bin/noodle-plugin.mjs', ...args],
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
if (host === 'codex') {
|
|
117
|
+
return {
|
|
118
|
+
command: 'node',
|
|
119
|
+
args: ['skills/noodle-seed/scripts/noodle-plugin.mjs', ...args],
|
|
120
|
+
cwd: '.',
|
|
121
|
+
};
|
|
122
|
+
}
|
|
94
123
|
return {
|
|
95
|
-
...(includeType ? { type: 'stdio' } : {}),
|
|
96
124
|
command: 'npx',
|
|
97
|
-
args: [
|
|
98
|
-
'--yes',
|
|
99
|
-
`@noodleseed/one@${compatibility.cliVersion}`,
|
|
100
|
-
'plugin-mcp',
|
|
101
|
-
'--plugin-host',
|
|
102
|
-
host,
|
|
103
|
-
'--plugin-version',
|
|
104
|
-
compatibility.pluginVersion,
|
|
105
|
-
'--agent-kit-version',
|
|
106
|
-
compatibility.schemaVersion === 2
|
|
107
|
-
? compatibility.agentKitVersion
|
|
108
|
-
: compatibility.pluginVersion,
|
|
109
|
-
'--plugin-content-hash',
|
|
110
|
-
compatibility.schemaVersion === 2
|
|
111
|
-
? compatibility.pluginContentHash
|
|
112
|
-
: DEVELOPMENT_CONTENT_HASH,
|
|
113
|
-
'--developer-mcp-url',
|
|
114
|
-
compatibility.developerMcpUrl,
|
|
115
|
-
'--developer-mcp-capability-version',
|
|
116
|
-
compatibility.developerMcpCapabilityVersion,
|
|
117
|
-
],
|
|
125
|
+
args: ['--yes', `@noodleseed/one@${compatibility.cliVersion}`, ...args],
|
|
118
126
|
};
|
|
119
127
|
}
|
|
120
128
|
//# sourceMappingURL=plugin-manifests.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-manifests.js","sourceRoot":"","sources":["../src/plugin-manifests.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"plugin-manifests.js","sourceRoot":"","sources":["../src/plugin-manifests.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-marketplace-docs.d.ts","sourceRoot":"","sources":["../src/plugin-marketplace-docs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"plugin-marketplace-docs.d.ts","sourceRoot":"","sources":["../src/plugin-marketplace-docs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAG3D,UAAU,sBAAsB;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;CAClC;AAoJD,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,sBAAsB,GAC9B,SAAS,gBAAgB,EAAE,CAO7B"}
|
|
@@ -1,8 +1,19 @@
|
|
|
1
|
+
import { PLUGIN_WINDOWS_SUPPORT } from './plugin-platform-support.js';
|
|
1
2
|
function installation({ pluginName, marketplaceName }) {
|
|
2
3
|
return `# Install Noodle Seed
|
|
3
4
|
|
|
4
5
|
Install the plugin once in your coding agent. It will use the compatible, plugin-managed Noodle CLI and connect the authenticated Noodle Developer MCP when those capabilities are available.
|
|
5
6
|
|
|
7
|
+
## Supported platforms
|
|
8
|
+
|
|
9
|
+
Use the plugin on macOS, or on Windows from ${PLUGIN_WINDOWS_SUPPORT.supportedShell} with Linux Node.js and npm. Native ${PLUGIN_WINDOWS_SUPPORT.unsupportedShells} are not supported execution shells. From PowerShell, install the supported environment with:
|
|
10
|
+
|
|
11
|
+
\`\`\`powershell
|
|
12
|
+
${PLUGIN_WINDOWS_SUPPORT.installCommand}
|
|
13
|
+
\`\`\`
|
|
14
|
+
|
|
15
|
+
Then open the Ubuntu Bash shell and run the host and plugin installation there.
|
|
16
|
+
|
|
6
17
|
## Claude Code
|
|
7
18
|
|
|
8
19
|
Run these slash commands inside Claude Code:
|
|
@@ -111,6 +122,10 @@ The launcher preserves the original npm diagnostic. When npm cannot download or
|
|
|
111
122
|
|
|
112
123
|
A normal \`noodle\` validation, compile, test, or deployment error is not rewritten as a bootstrap failure: its original output and exit code pass through unchanged.
|
|
113
124
|
|
|
125
|
+
## Readiness reports \`unsupported_platform\` on Windows
|
|
126
|
+
|
|
127
|
+
Run the host from ${PLUGIN_WINDOWS_SUPPORT.supportedShell}, not native ${PLUGIN_WINDOWS_SUPPORT.unsupportedShells}. From PowerShell, run \`${PLUGIN_WINDOWS_SUPPORT.installCommand}\`, then install Linux Node.js 24 and the coding-agent host inside Ubuntu before reinstalling the plugin.
|
|
128
|
+
|
|
114
129
|
## Build Readiness is disconnected
|
|
115
130
|
|
|
116
131
|
Restart the host after installation so it reloads the bundled MCP configuration. If the host cannot render MCP Apps, continue headlessly: validation, tests, and deploy still return structured results to the agent.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-marketplace-docs.js","sourceRoot":"","sources":["../src/plugin-marketplace-docs.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"plugin-marketplace-docs.js","sourceRoot":"","sources":["../src/plugin-marketplace-docs.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAQtE,SAAS,YAAY,CAAC,EAAE,UAAU,EAAE,eAAe,EAA0B;IAC3E,OAAO;;;;;;8CAMqC,sBAAsB,CAAC,cAAc,uCAAuC,sBAAsB,CAAC,iBAAiB;;;EAGhK,sBAAsB,CAAC,cAAc;;;;;;;;;;;kBAWrB,UAAU,IAAI,eAAe;;;;;;;;;mBAS5B,UAAU,IAAI,eAAe;;;;;;;;;;;;;;;;;;;kDAmBE,eAAe;kDACf,eAAe;;;;;yCAKxB,UAAU,IAAI,eAAe;qCACjC,UAAU;;CAE9C,CAAC;AACF,CAAC;AAED,SAAS,UAAU;IACjB,OAAO;;;;;;;;;;;;;;;;;CAiBR,CAAC;AACF,CAAC;AAED,SAAS,sBAAsB;IAC7B,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2BR,CAAC;AACF,CAAC;AAED,SAAS,eAAe;IACtB,OAAO;;;;;;;;;;;;;;oBAcW,sBAAsB,CAAC,cAAc,gBAAgB,sBAAsB,CAAC,iBAAiB,4BAA4B,sBAAsB,CAAC,cAAc;;;;;;;;;;;;;;;CAejL,CAAC;AACF,CAAC;AAED,MAAM,UAAU,2BAA2B,CACzC,OAA+B;IAE/B,OAAO;QACL,EAAE,IAAI,EAAE,sBAAsB,EAAE,OAAO,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE;QAChE,EAAE,IAAI,EAAE,sBAAsB,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE;QACvD,EAAE,IAAI,EAAE,kCAAkC,EAAE,OAAO,EAAE,sBAAsB,EAAE,EAAE;QAC/E,EAAE,IAAI,EAAE,yBAAyB,EAAE,OAAO,EAAE,eAAe,EAAE,EAAE;KAChE,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export declare const PLUGIN_WINDOWS_SUPPORT: {
|
|
2
|
+
readonly supportedShell: "WSL2 Ubuntu Bash";
|
|
3
|
+
readonly unsupportedShells: "PowerShell, Command Prompt, and Git Bash";
|
|
4
|
+
readonly installCommand: "wsl --install -d Ubuntu";
|
|
5
|
+
};
|
|
6
|
+
export declare const PLUGIN_UNSUPPORTED_NATIVE_WINDOWS: {
|
|
7
|
+
readonly code: "unsupported_platform";
|
|
8
|
+
readonly message: "Noodle CLI commands run on macOS or Windows through WSL2.";
|
|
9
|
+
readonly cause: "Native PowerShell, Command Prompt, and Git Bash are not supported.";
|
|
10
|
+
readonly fix: "Install WSL2 with Ubuntu and run Noodle from its Bash shell.";
|
|
11
|
+
readonly next: "wsl --install -d Ubuntu";
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=plugin-platform-support.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-platform-support.d.ts","sourceRoot":"","sources":["../src/plugin-platform-support.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,sBAAsB;;;;CAIzB,CAAC;AAEX,eAAO,MAAM,iCAAiC;;;;;;CAMpC,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export const PLUGIN_WINDOWS_SUPPORT = {
|
|
2
|
+
supportedShell: 'WSL2 Ubuntu Bash',
|
|
3
|
+
unsupportedShells: 'PowerShell, Command Prompt, and Git Bash',
|
|
4
|
+
installCommand: 'wsl --install -d Ubuntu',
|
|
5
|
+
};
|
|
6
|
+
export const PLUGIN_UNSUPPORTED_NATIVE_WINDOWS = {
|
|
7
|
+
code: 'unsupported_platform',
|
|
8
|
+
message: 'Noodle CLI commands run on macOS or Windows through WSL2.',
|
|
9
|
+
cause: `Native ${PLUGIN_WINDOWS_SUPPORT.unsupportedShells} are not supported.`,
|
|
10
|
+
fix: 'Install WSL2 with Ubuntu and run Noodle from its Bash shell.',
|
|
11
|
+
next: PLUGIN_WINDOWS_SUPPORT.installCommand,
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=plugin-platform-support.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-platform-support.js","sourceRoot":"","sources":["../src/plugin-platform-support.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,cAAc,EAAE,kBAAkB;IAClC,iBAAiB,EAAE,0CAA0C;IAC7D,cAAc,EAAE,yBAAyB;CACjC,CAAC;AAEX,MAAM,CAAC,MAAM,iCAAiC,GAAG;IAC/C,IAAI,EAAE,sBAAsB;IAC5B,OAAO,EAAE,2DAA2D;IACpE,KAAK,EAAE,UAAU,sBAAsB,CAAC,iBAAiB,qBAAqB;IAC9E,GAAG,EAAE,8DAA8D;IACnE,IAAI,EAAE,sBAAsB,CAAC,cAAc;CACnC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-authoring-auth-ref.d.ts","sourceRoot":"","sources":["../src/skill-authoring-auth-ref.ts"],"names":[],"mappings":"AAEA,wBAAgB,mCAAmC,IAAI,SAAS,MAAM,EAAE,CAwKvE"}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
// Curated customer authentication, authorization, and delegated downstream auth guidance.
|
|
2
|
+
export function renderCustomerAuthAuthoringSections() {
|
|
3
|
+
return [
|
|
4
|
+
'## Customer OAuth for remote MCP clients',
|
|
5
|
+
'',
|
|
6
|
+
'For `customerAuth.oidc(...)` and `.federatedOidc(...)`, the application developer owns the standards-compliant authorization server. Noodle verifies its access tokens; it does not proxy discovery, create OAuth clients, or repair the upstream server. For issuer `https://id.example.com/oauth`, publish the path-inserted RFC 8414 document at `https://id.example.com/.well-known/oauth-authorization-server/oauth` as direct unauthenticated HTTP 200 JSON — never a login redirect.',
|
|
7
|
+
'',
|
|
8
|
+
'That metadata must expose HTTPS `authorization_endpoint`, `token_endpoint`, `jwks_uri`, and RFC 7591 `registration_endpoint`; advertise authorization-code and refresh-token grants, Dynamic Client Registration, PKCE with `code_challenge_methods_supported: ["S256"]`, and public clients with `token_endpoint_auth_methods_supported: ["none"]`. Implement RFC 8707 `resource`, mint access-token `aud` for the exact MCP resource URL, and publish only public signing keys in JWKS. Run `noodle auth doctor src/server.ts`; its issuer-readiness probes perform bounded read-only GET checks and never register a client. A successful `noodle deploy --access customers` reports the same readiness without turning a diagnostic failure into a failed deployment.',
|
|
9
|
+
'',
|
|
10
|
+
'## Auth-derived customer API endpoints',
|
|
11
|
+
'',
|
|
12
|
+
'Use a customer endpoint when the verified IdP selects a different API base URL for each SaaS customer. The claim contains the complete base URL; tool input and `${user}` do not select it. Declare one named policy, use that reference as the connector `baseUrl`, and map its claim path in direct OIDC or on every federated issuer:',
|
|
13
|
+
'',
|
|
14
|
+
'```ts',
|
|
15
|
+
"import { connector, customerAuth, customerEndpoint, secret, server, tool, variable, z } from '@noodleseed/one';",
|
|
16
|
+
'',
|
|
17
|
+
"const customerApi = customerEndpoint('customer_api', {",
|
|
18
|
+
" allowedHttpsHostSuffixes: ['api.noodleseed.dev'],",
|
|
19
|
+
'});',
|
|
20
|
+
'',
|
|
21
|
+
"const api = connector('customer_api_connector').version('1.0.0').http({",
|
|
22
|
+
' baseUrl: customerApi,',
|
|
23
|
+
' auth: {',
|
|
24
|
+
" kind: 'delegatedTokenExchange',",
|
|
25
|
+
" tokenUrl: 'https://id.noodleseed.dev/oauth/token',",
|
|
26
|
+
" clientId: variable('CUSTOMER_API_CLIENT_ID'),",
|
|
27
|
+
" clientSecret: secret('CUSTOMER_API_CLIENT_SECRET'),",
|
|
28
|
+
' },',
|
|
29
|
+
' operations: {',
|
|
30
|
+
' list_records: {',
|
|
31
|
+
" type: 'read',",
|
|
32
|
+
" method: 'GET',",
|
|
33
|
+
" path: '/records',",
|
|
34
|
+
' input: z.object({}),',
|
|
35
|
+
' output: z.object({ records: z.array(z.unknown()).max(100) }),',
|
|
36
|
+
' },',
|
|
37
|
+
' },',
|
|
38
|
+
'});',
|
|
39
|
+
'',
|
|
40
|
+
'export default server(',
|
|
41
|
+
" 'customer_records',",
|
|
42
|
+
' {',
|
|
43
|
+
" title: 'Customer records',",
|
|
44
|
+
" version: '1.0.0',",
|
|
45
|
+
' use: { api },',
|
|
46
|
+
' auth: customerAuth.oidc({',
|
|
47
|
+
" issuer: 'https://id.noodleseed.dev',",
|
|
48
|
+
" audience: 'https://org.cloud.noodleseed.dev/app/mcp',",
|
|
49
|
+
' routing: {',
|
|
50
|
+
' endpoints: {',
|
|
51
|
+
" customer_api: { claim: 'tenant.api_base_url' },",
|
|
52
|
+
' },',
|
|
53
|
+
' },',
|
|
54
|
+
' }),',
|
|
55
|
+
' },',
|
|
56
|
+
' [',
|
|
57
|
+
" tool('list_records', {",
|
|
58
|
+
" description: 'List records for the signed-in customer.',",
|
|
59
|
+
' input: z.object({}),',
|
|
60
|
+
' output: z.object({ records: z.array(z.unknown()).max(100) }),',
|
|
61
|
+
' fulfil: ({ connectors }) => {',
|
|
62
|
+
' const result = connectors.api.listRecords();',
|
|
63
|
+
' return { records: result.records };',
|
|
64
|
+
' },',
|
|
65
|
+
' }),',
|
|
66
|
+
' ],',
|
|
67
|
+
');',
|
|
68
|
+
'```',
|
|
69
|
+
'',
|
|
70
|
+
'`customerEndpoint` accepts exactly one non-empty policy arm: exact HTTPS origins, or HTTPS hostname suffixes. Exact policies may authorize an explicit non-default port; suffix policies allow port 443 and match only the exact host or dot-boundary subdomains. Do not add connector `allowedOrigins` to a customer-routed connector. Its fixed credential/token endpoints are validated independently and cannot come from caller claims.',
|
|
71
|
+
'',
|
|
72
|
+
'Every federated issuer must repeat every endpoint key used by the app, although each issuer may choose a different claim path. Endpoint names use lowercase letters, numbers, and underscores. Resolved claims must be exact absolute HTTPS URLs of at most 2,048 UTF-8 bytes with no userinfo, query, fragment, IP literal, special-use host, or unsafe whitespace/control characters. The runtime preserves a canonical optional base path.',
|
|
73
|
+
'',
|
|
74
|
+
'Resolved customer URLs are private routing authority: they never enter the manifest/artifact, `${user}`, logs, model output, widgets, confirmation review, cache keys, or delegated-token-exchange assertions. Routed read operations may be used by tools, including their declared nested connector calls. Customer-routed action operations fail compilation with `customer_endpoint_action_unsupported`; routed resources, prompts, and ambient context fail with `customer_endpoint_surface_unsupported` in this release.',
|
|
75
|
+
'',
|
|
76
|
+
'At runtime, a missing, malformed, or disallowed claim returns the same safe `connector_route_unavailable` tool error before credential lookup or connector egress. `tools/list` remains based only on roles and scopes, so route availability neither reveals tenant topology nor changes the existing authorization filter.',
|
|
77
|
+
'',
|
|
78
|
+
'## Per-tool authorization',
|
|
79
|
+
'',
|
|
80
|
+
'Keep endpoint authentication in `customerAuth.*(...)`, then narrow individual tools with the optional typed `authorization` rule. Every `requiredScopes` value is required; any one `allowedRoles` value is sufficient; when both lists are present, both conditions apply. Omit `authorization` for an unrestricted tool. Do not invent a policy expression language or infer authorization from tool arguments, page context, connector output, email domains, or other unverified data.',
|
|
81
|
+
'',
|
|
82
|
+
'```ts',
|
|
83
|
+
'auth: customerAuth.oidc({',
|
|
84
|
+
" issuer: 'https://id.example.com',",
|
|
85
|
+
" audience: 'https://api.example.com/mcp',",
|
|
86
|
+
" claims: { roles: 'permissions.roles', scopes: 'permissions.scopes' },",
|
|
87
|
+
'}),',
|
|
88
|
+
'',
|
|
89
|
+
"tool('list_org_apps', {",
|
|
90
|
+
' authorization: {',
|
|
91
|
+
" requiredScopes: ['org_apps:read'],",
|
|
92
|
+
" allowedRoles: ['org_admin', 'org_member'],",
|
|
93
|
+
' },',
|
|
94
|
+
' // input, output, and fulfilment...',
|
|
95
|
+
'})',
|
|
96
|
+
'```',
|
|
97
|
+
'',
|
|
98
|
+
'Role values are trusted only from the explicitly configured claim path (or the platform-private bridge role claim). Direct OIDC scopes default to standard `scope`, `scp`, or `scopes` claims unless `claims.scopes` is configured. Embedded-assistant backends pass verified `user.roles` and `user.scopes` separately during `createAssistantSession(...)`; page context never grants either. Claim values must be a string or string array; malformed or oversized values fail closed. Eligible tools remain in authored order in `tools/list`; ineligible tools are omitted and a guessed direct call is still denied before argument validation or connector execution. Scope denials use MCP OAuth step-up metadata without disclosing role names.',
|
|
99
|
+
'',
|
|
100
|
+
'## Delegated downstream auth (call your API as the signed-in user)',
|
|
101
|
+
'',
|
|
102
|
+
'Use delegated connector auth when the downstream API must enforce its own per-user authorization — a shared service credential plus a forwarded user id would bypass it. Three shapes exist; pick by who owns the downstream:',
|
|
103
|
+
'',
|
|
104
|
+
'- **`delegatedTokenExchange`** — your own API. The platform signs a short-lived, verifiable assertion of the signed-in user and exchanges it at a token endpoint you implement (RFC 8693). It works with verified customer OIDC identities and the built-in Firebase/Microsoft adapters; no per-user OAuth enrollment. Embedded-assistant sessions support this exchange for static connectors. Customer-routed connectors require a direct or federated MCP OIDC request and fail closed in embedded-assistant sessions because those sessions carry no IdP endpoint claim.',
|
|
105
|
+
'- **`delegatedOAuth` with `provider: "firebase" | "microsoft"`** — Noodle-managed bridge providers using stored per-user refresh tokens. Requires the matching `customerAuth` bridge; any other provider string is the compile error `unsupported_delegated_provider`.',
|
|
106
|
+
'- **`delegatedSessionCookie`** — Firebase-managed session-cookie apps only; not a generic mechanism.',
|
|
107
|
+
'',
|
|
108
|
+
'### The connector (your `server.ts`)',
|
|
109
|
+
'',
|
|
110
|
+
'```ts',
|
|
111
|
+
'auth: {',
|
|
112
|
+
" kind: 'delegatedTokenExchange',",
|
|
113
|
+
" tokenUrl: 'https://app.example.com/api/assistant/oauth/token', // fixed HTTPS; static connectors also allowlist its origin",
|
|
114
|
+
" clientId: variable('EXAMPLE_DELEG_CLIENT_ID'),",
|
|
115
|
+
" clientSecret: secret('EXAMPLE_DELEG_CLIENT_SECRET'),",
|
|
116
|
+
" scopes: ['time_off'], // optional",
|
|
117
|
+
" audience: 'example-api', // optional; assertion + request audience, defaults to tokenUrl",
|
|
118
|
+
" authMethod: 'client_secret_basic', // default; client_secret_post supported",
|
|
119
|
+
'}',
|
|
120
|
+
'```',
|
|
121
|
+
'',
|
|
122
|
+
'Inside tools, `${user.subject}` / `${user.email}` / `${user.name}` / `${user.locale}` / `${user.timeZone}` / `${user.claims.*}` stay available as verified context; the delegated credential is what makes the *downstream call itself* run as that user.',
|
|
123
|
+
'',
|
|
124
|
+
'### The exchange request your endpoint receives',
|
|
125
|
+
'',
|
|
126
|
+
'The broker POSTs `application/x-www-form-urlencoded` to `tokenUrl` with `Authorization: Basic base64(clientId:clientSecret)` (or `client_id`/`client_secret` form fields for `client_secret_post`):',
|
|
127
|
+
'',
|
|
128
|
+
'```',
|
|
129
|
+
'grant_type=urn:ietf:params:oauth:grant-type:token-exchange',
|
|
130
|
+
'subject_token=<RS256 JWT signed by the platform>',
|
|
131
|
+
'subject_token_type=urn:ietf:params:oauth:token-type:jwt',
|
|
132
|
+
'scope=time_off (space-joined, when configured)',
|
|
133
|
+
'audience=example-api (when configured)',
|
|
134
|
+
'```',
|
|
135
|
+
'',
|
|
136
|
+
'The `subject_token` claims: `iss` (platform issuer; JWKS at `{iss}/.well-known/jwks.json`), `sub` (verified user id), `aud` (your configured audience or the tokenUrl), `email`, `name`, `claims` (declared session claims), `tenant` (`org/app/env`), `deployment`, `iat`, `exp` (about 120 s), `jti`. A routed exchange adds `route: { key, fingerprint }`, never the customer URL; credential cache and single-flight keys include that route binding. Respond with `{ "access_token": "...", "token_type": "Bearer", "expires_in": 900 }`; the broker caches per user + connector + scopes + route until `expires_in` minus 300 s and presents the token downstream as `Authorization: Bearer`.',
|
|
137
|
+
'',
|
|
138
|
+
'### The downstream token endpoint (your backend)',
|
|
139
|
+
'',
|
|
140
|
+
'```ts',
|
|
141
|
+
'// POST /api/assistant/oauth/token — Node example with jose.',
|
|
142
|
+
"import { createRemoteJWKSet, jwtVerify } from 'jose';",
|
|
143
|
+
'',
|
|
144
|
+
'const PLATFORM_ISSUER = process.env.NOODLE_PLATFORM_ISSUER!; // e.g. https://cloud.noodleseed.dev',
|
|
145
|
+
'const jwks = createRemoteJWKSet(new URL(`${PLATFORM_ISSUER}/.well-known/jwks.json`));',
|
|
146
|
+
'',
|
|
147
|
+
'export async function tokenEndpoint(req: Request): Promise<Response> {',
|
|
148
|
+
' // 1. Authenticate the broker client credential (client_secret_basic).',
|
|
149
|
+
" const basic = req.headers.get('authorization') ?? '';",
|
|
150
|
+
" const [clientId, clientSecret] = atob(basic.replace(/^Basic /, '')).split(':');",
|
|
151
|
+
' if (!isValidClient(clientId, clientSecret)) return new Response(null, { status: 401 });',
|
|
152
|
+
' // 2. Verify the platform-signed user assertion (never trust a plaintext user id).',
|
|
153
|
+
' const form = new URLSearchParams(await req.text());',
|
|
154
|
+
" const { payload } = await jwtVerify(form.get('subject_token') ?? '', jwks, {",
|
|
155
|
+
' issuer: PLATFORM_ISSUER,',
|
|
156
|
+
" audience: 'https://app.example.com/api/assistant/oauth/token', // your tokenUrl or configured audience",
|
|
157
|
+
' });',
|
|
158
|
+
" if (payload.deployment !== undefined && payload.tenant !== 'your-org/your-app/prod') {",
|
|
159
|
+
' return new Response(null, { status: 403 }); // optionally pin the calling deployment',
|
|
160
|
+
' }',
|
|
161
|
+
' // 3. Mint your own short-lived user-scoped token; your API enforces per-user rules from it.',
|
|
162
|
+
" const accessToken = await issueAccessToken(String(payload.sub), clientId, form.get('scope') ?? '');",
|
|
163
|
+
' return Response.json({ access_token: accessToken, token_type: "Bearer", expires_in: 900 });',
|
|
164
|
+
'}',
|
|
165
|
+
'```',
|
|
166
|
+
'',
|
|
167
|
+
'Diagnose statically with `noodle auth doctor`; set a short-lived real customer token only in `NOODLE_CUSTOMER_TOKEN` and add `--live --org <org> --app <app> --env <env>` to perform one exchange per delegated binding without invoking a business tool. Common failures include structured `credential_unavailable` reasons such as `caller_identity_not_customer`. Direct/federated OIDC verification assigns the customer identity at the trusted verifier boundary; never ask an IdP to mint a Noodle-specific classification claim.',
|
|
168
|
+
'',
|
|
169
|
+
];
|
|
170
|
+
}
|
|
171
|
+
//# sourceMappingURL=skill-authoring-auth-ref.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-authoring-auth-ref.js","sourceRoot":"","sources":["../src/skill-authoring-auth-ref.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-authoring-refs.d.ts","sourceRoot":"","sources":["../src/skill-authoring-refs.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"skill-authoring-refs.d.ts","sourceRoot":"","sources":["../src/skill-authoring-refs.ts"],"names":[],"mappings":"AAiBA,wBAAgB,gCAAgC,IAAI,MAAM,CA2MzD;AAWD,wBAAgB,6BAA6B,IAAI,MAAM,CA0QtD;AAmDD,wBAAgB,uBAAuB,IAAI,MAAM,CA0DhD"}
|
|
@@ -5,6 +5,7 @@ import { HOOK_NOTES } from './curated/hook-notes.js';
|
|
|
5
5
|
import { BUNDLED_EXAMPLE_FILES, BUNDLED_EXAMPLE_NAMES } from './generated/example-files.js';
|
|
6
6
|
import { REACT_HOOKS } from './generated/surface.js';
|
|
7
7
|
import { mdTable } from './md.js';
|
|
8
|
+
import { renderCustomerAuthAuthoringSections } from './skill-authoring-auth-ref.js';
|
|
8
9
|
// ----------------------------------------------------------------------------
|
|
9
10
|
// references/authoring-workflow.md (CURATED)
|
|
10
11
|
//
|
|
@@ -24,6 +25,7 @@ export function renderAuthoringWorkflowReference() {
|
|
|
24
25
|
'- Connectors',
|
|
25
26
|
'- HTTP connector example (full server)',
|
|
26
27
|
'- Customer OAuth for remote MCP clients',
|
|
28
|
+
'- Auth-derived customer API endpoints',
|
|
27
29
|
'- Per-tool authorization',
|
|
28
30
|
'- Delegated downstream auth (call your API as the signed-in user)',
|
|
29
31
|
'- Invocation context',
|
|
@@ -119,103 +121,7 @@ export function renderAuthoringWorkflowReference() {
|
|
|
119
121
|
'',
|
|
120
122
|
'More: `auth.kind` is `bearer` | `apiKey` (needs `header`) | `clientCredentials` | `delegatedOAuth` | `delegatedSessionCookie` | `delegatedTokenExchange`. For client credentials use `{ kind: "clientCredentials", tokenUrl, clientId, clientSecret, scopes? }` (RFC-6749 grant); for a non-standard partner token endpoint add `profile: "custom"` with a `custom: { requestFormat, clientIdField, clientSecretField, tokenResponsePath, expirySource }` descriptor. Do not put credential headers in operation `headers`; use connector `auth`. Use `.compute(name, { input, output, run })` for a sandboxed transform; `provides:` (instead of `use:`) exposes a connector only to compute `callOperation`; and `noodle import openapi <file>` generates a connector from an OpenAPI spec.',
|
|
121
123
|
'',
|
|
122
|
-
|
|
123
|
-
'',
|
|
124
|
-
'For `customerAuth.oidc(...)` and `.federatedOidc(...)`, the application developer owns the standards-compliant authorization server. Noodle verifies its access tokens; it does not proxy discovery, create OAuth clients, or repair the upstream server. For issuer `https://id.example.com/oauth`, publish the path-inserted RFC 8414 document at `https://id.example.com/.well-known/oauth-authorization-server/oauth` as direct unauthenticated HTTP 200 JSON — never a login redirect.',
|
|
125
|
-
'',
|
|
126
|
-
'That metadata must expose HTTPS `authorization_endpoint`, `token_endpoint`, `jwks_uri`, and RFC 7591 `registration_endpoint`; advertise authorization-code and refresh-token grants, Dynamic Client Registration, PKCE with `code_challenge_methods_supported: ["S256"]`, and public clients with `token_endpoint_auth_methods_supported: ["none"]`. Implement RFC 8707 `resource`, mint access-token `aud` for the exact MCP resource URL, and publish only public signing keys in JWKS. Run `noodle auth doctor src/server.ts`; its issuer-readiness probes perform bounded read-only GET checks and never register a client. A successful `noodle deploy --access customers` reports the same readiness without turning a diagnostic failure into a failed deployment.',
|
|
127
|
-
'',
|
|
128
|
-
'## Per-tool authorization',
|
|
129
|
-
'',
|
|
130
|
-
'Keep endpoint authentication in `customerAuth.*(...)`, then narrow individual tools with the optional typed `authorization` rule. Every `requiredScopes` value is required; any one `allowedRoles` value is sufficient; when both lists are present, both conditions apply. Omit `authorization` for an unrestricted tool. Do not invent a policy expression language or infer authorization from tool arguments, page context, connector output, email domains, or other unverified data.',
|
|
131
|
-
'',
|
|
132
|
-
'```ts',
|
|
133
|
-
'auth: customerAuth.oidc({',
|
|
134
|
-
" issuer: 'https://id.example.com',",
|
|
135
|
-
" audience: 'https://api.example.com/mcp',",
|
|
136
|
-
" claims: { roles: 'permissions.roles', scopes: 'permissions.scopes' },",
|
|
137
|
-
'}),',
|
|
138
|
-
'',
|
|
139
|
-
"tool('list_org_apps', {",
|
|
140
|
-
' authorization: {',
|
|
141
|
-
" requiredScopes: ['org_apps:read'],",
|
|
142
|
-
" allowedRoles: ['org_admin', 'org_member'],",
|
|
143
|
-
' },',
|
|
144
|
-
' // input, output, and fulfilment...',
|
|
145
|
-
'})',
|
|
146
|
-
'```',
|
|
147
|
-
'',
|
|
148
|
-
'Role values are trusted only from the explicitly configured claim path (or the platform-private bridge role claim). Direct OIDC scopes default to standard `scope`, `scp`, or `scopes` claims unless `claims.scopes` is configured. Embedded-assistant backends pass verified `user.roles` and `user.scopes` separately during `createAssistantSession(...)`; page context never grants either. Claim values must be a string or string array; malformed or oversized values fail closed. Eligible tools remain in authored order in `tools/list`; ineligible tools are omitted and a guessed direct call is still denied before argument validation or connector execution. Scope denials use MCP OAuth step-up metadata without disclosing role names.',
|
|
149
|
-
'',
|
|
150
|
-
'## Delegated downstream auth (call your API as the signed-in user)',
|
|
151
|
-
'',
|
|
152
|
-
'Use delegated connector auth when the downstream API must enforce its own per-user authorization — a shared service credential plus a forwarded user id would bypass it. Three shapes exist; pick by who owns the downstream:',
|
|
153
|
-
'',
|
|
154
|
-
'- **`delegatedTokenExchange`** — your own API. The platform signs a short-lived, verifiable assertion of the signed-in user and exchanges it at a token endpoint you implement (RFC 8693). Works with verified customer OIDC identities, the built-in Firebase/Microsoft adapters, and embedded-assistant sessions; no per-user OAuth enrollment.',
|
|
155
|
-
'- **`delegatedOAuth` with `provider: "firebase" | "microsoft"`** — Noodle-managed bridge providers using stored per-user refresh tokens. Requires the matching `customerAuth` bridge; any other provider string is the compile error `unsupported_delegated_provider`.',
|
|
156
|
-
'- **`delegatedSessionCookie`** — Firebase-managed session-cookie apps only; not a generic mechanism.',
|
|
157
|
-
'',
|
|
158
|
-
'### The connector (your `server.ts`)',
|
|
159
|
-
'',
|
|
160
|
-
'```ts',
|
|
161
|
-
'auth: {',
|
|
162
|
-
" kind: 'delegatedTokenExchange',",
|
|
163
|
-
" tokenUrl: 'https://app.example.com/api/assistant/oauth/token', // origin must be in allowedOrigins",
|
|
164
|
-
" clientId: variable('EXAMPLE_DELEG_CLIENT_ID'),",
|
|
165
|
-
" clientSecret: secret('EXAMPLE_DELEG_CLIENT_SECRET'),",
|
|
166
|
-
" scopes: ['time_off'], // optional",
|
|
167
|
-
" audience: 'example-api', // optional; assertion + request audience, defaults to tokenUrl",
|
|
168
|
-
" authMethod: 'client_secret_basic', // default; client_secret_post supported",
|
|
169
|
-
'}',
|
|
170
|
-
'```',
|
|
171
|
-
'',
|
|
172
|
-
'Inside tools, `${user.subject}` / `${user.email}` / `${user.name}` / `${user.locale}` / `${user.timeZone}` / `${user.claims.*}` stay available as verified context; the delegated credential is what makes the *downstream call itself* run as that user.',
|
|
173
|
-
'',
|
|
174
|
-
'### The exchange request your endpoint receives',
|
|
175
|
-
'',
|
|
176
|
-
'The broker POSTs `application/x-www-form-urlencoded` to `tokenUrl` with `Authorization: Basic base64(clientId:clientSecret)` (or `client_id`/`client_secret` form fields for `client_secret_post`):',
|
|
177
|
-
'',
|
|
178
|
-
'```',
|
|
179
|
-
'grant_type=urn:ietf:params:oauth:grant-type:token-exchange',
|
|
180
|
-
'subject_token=<RS256 JWT signed by the platform>',
|
|
181
|
-
'subject_token_type=urn:ietf:params:oauth:token-type:jwt',
|
|
182
|
-
'scope=time_off (space-joined, when configured)',
|
|
183
|
-
'audience=example-api (when configured)',
|
|
184
|
-
'```',
|
|
185
|
-
'',
|
|
186
|
-
'The `subject_token` claims: `iss` (platform issuer; JWKS at `{iss}/.well-known/jwks.json`), `sub` (verified user id), `aud` (your configured audience or the tokenUrl), `email`, `name`, `claims` (declared session claims), `tenant` (`org/app/env`), `deployment`, `iat`, `exp` (about 120 s), `jti`. Respond with `{ "access_token": "...", "token_type": "Bearer", "expires_in": 900 }`; the broker caches per user + connector + scopes until `expires_in` minus 300 s and presents the token downstream as `Authorization: Bearer`.',
|
|
187
|
-
'',
|
|
188
|
-
'### The downstream token endpoint (your backend)',
|
|
189
|
-
'',
|
|
190
|
-
'```ts',
|
|
191
|
-
'// POST /api/assistant/oauth/token — Node example with jose.',
|
|
192
|
-
"import { createRemoteJWKSet, jwtVerify } from 'jose';",
|
|
193
|
-
'',
|
|
194
|
-
'const PLATFORM_ISSUER = process.env.NOODLE_PLATFORM_ISSUER!; // e.g. https://cloud.noodleseed.dev',
|
|
195
|
-
'const jwks = createRemoteJWKSet(new URL(`${PLATFORM_ISSUER}/.well-known/jwks.json`));',
|
|
196
|
-
'',
|
|
197
|
-
'export async function tokenEndpoint(req: Request): Promise<Response> {',
|
|
198
|
-
' // 1. Authenticate the broker client credential (client_secret_basic).',
|
|
199
|
-
" const basic = req.headers.get('authorization') ?? '';",
|
|
200
|
-
" const [clientId, clientSecret] = atob(basic.replace(/^Basic /, '')).split(':');",
|
|
201
|
-
' if (!isValidClient(clientId, clientSecret)) return new Response(null, { status: 401 });',
|
|
202
|
-
' // 2. Verify the platform-signed user assertion (never trust a plaintext user id).',
|
|
203
|
-
' const form = new URLSearchParams(await req.text());',
|
|
204
|
-
" const { payload } = await jwtVerify(form.get('subject_token') ?? '', jwks, {",
|
|
205
|
-
' issuer: PLATFORM_ISSUER,',
|
|
206
|
-
" audience: 'https://app.example.com/api/assistant/oauth/token', // your tokenUrl or configured audience",
|
|
207
|
-
' });',
|
|
208
|
-
" if (payload.deployment !== undefined && payload.tenant !== 'your-org/your-app/prod') {",
|
|
209
|
-
' return new Response(null, { status: 403 }); // optionally pin the calling deployment',
|
|
210
|
-
' }',
|
|
211
|
-
' // 3. Mint your own short-lived user-scoped token; your API enforces per-user rules from it.',
|
|
212
|
-
" const accessToken = await issueAccessToken(String(payload.sub), clientId, form.get('scope') ?? '');",
|
|
213
|
-
' return Response.json({ access_token: accessToken, token_type: "Bearer", expires_in: 900 });',
|
|
214
|
-
'}',
|
|
215
|
-
'```',
|
|
216
|
-
'',
|
|
217
|
-
'Diagnose statically with `noodle auth doctor`; set a short-lived real customer token only in `NOODLE_CUSTOMER_TOKEN` and add `--live --org <org> --app <app> --env <env>` to perform one exchange per delegated binding without invoking a business tool. Common failures include structured `credential_unavailable` reasons such as `caller_identity_not_customer`. Direct/federated OIDC verification assigns the customer identity at the trusted verifier boundary; never ask an IdP to mint a Noodle-specific classification claim.',
|
|
218
|
-
'',
|
|
124
|
+
...renderCustomerAuthAuthoringSections(),
|
|
219
125
|
'## Design tools for the model',
|
|
220
126
|
'',
|
|
221
127
|
'Shape tools around what a user says, not 1:1 around API endpoints. `references/tool-design.md` owns the doctrine: intent-shaped tools, titles and annotations, bounded outputs, a small tool surface, and deliberate context.',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-authoring-refs.js","sourceRoot":"","sources":["../src/skill-authoring-refs.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAC3F,8FAA8F;AAC9F,4FAA4F;AAC5F,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAC5F,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"skill-authoring-refs.js","sourceRoot":"","sources":["../src/skill-authoring-refs.ts"],"names":[],"mappings":"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"}
|