@toa.io/extensions.exposition 1.0.0-alpha.29 → 1.0.0-alpha.291
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/CHANGELOG.md +35 -0
- package/components/exposition.octets/manifest.toa.yaml +58 -0
- package/components/exposition.octets/operations/delete.js +5 -0
- package/components/exposition.octets/operations/get.js +8 -0
- package/components/exposition.octets/operations/head.js +5 -0
- package/components/exposition.octets/operations/put.js +142 -0
- package/components/exposition.octets/types/index.d.ts +3 -0
- package/components/exposition.octets/types/toa.d.ts +41 -0
- package/components/identity.bans/manifest.toa.yaml +26 -8
- package/components/identity.bans/operations/transit.js +2 -6
- package/components/identity.bans/source/transit.ts +1 -1
- package/components/identity.bans/tsconfig.json +2 -1
- package/components/identity.bans/tsconfig.tsbuildinfo +1 -0
- package/components/identity.bans/types/index.d.ts +3 -0
- package/components/identity.bans/types/toa.d.ts +34 -0
- package/components/identity.basic/events/principal.js +8 -4
- package/components/identity.basic/manifest.toa.yaml +202 -29
- package/components/identity.basic/migrations/0002-indexes.yaml +13 -0
- package/components/identity.basic/operations/add.js +13 -0
- package/components/identity.basic/operations/authenticate.js +20 -17
- package/components/identity.basic/operations/check.js +14 -0
- package/components/identity.basic/operations/delete.js +7 -0
- package/components/identity.basic/operations/incept.js +34 -16
- package/components/identity.basic/operations/info.js +7 -0
- package/components/identity.basic/operations/lib/credentials.js +12 -0
- package/components/identity.basic/operations/transit.js +42 -21
- package/components/identity.basic/source/add.ts +18 -0
- package/components/identity.basic/source/authenticate.ts +31 -23
- package/components/identity.basic/source/check.ts +24 -0
- package/components/identity.basic/source/delete.ts +18 -0
- package/components/identity.basic/source/incept.ts +52 -14
- package/components/identity.basic/source/info.ts +22 -0
- package/components/identity.basic/source/lib/credentials.test.ts +18 -0
- package/components/identity.basic/source/lib/credentials.ts +12 -0
- package/components/identity.basic/source/transit.ts +64 -27
- package/components/identity.basic/tsconfig.json +2 -1
- package/components/identity.basic/tsconfig.tsbuildinfo +1 -0
- package/components/identity.basic/types/index.d.ts +26 -0
- package/components/identity.basic/types/toa.d.ts +121 -0
- package/components/identity.clients/manifest.toa.yaml +239 -0
- package/components/identity.clients/migrations/0002-indexes.yaml +4 -0
- package/components/identity.clients/operations/describe.js +44 -0
- package/components/identity.clients/operations/lib/Context.js +2 -0
- package/components/identity.clients/operations/lib/Entity.js +2 -0
- package/components/identity.clients/operations/lib/canonical.js +24 -0
- package/components/identity.clients/operations/lib/cimd.js +87 -0
- package/components/identity.clients/operations/lib/errors.js +5 -0
- package/components/identity.clients/operations/lib/index.js +7 -0
- package/components/identity.clients/operations/lib/redirect.js +35 -0
- package/components/identity.clients/operations/register.js +84 -0
- package/components/identity.clients/source/describe.ts +63 -0
- package/components/identity.clients/source/lib/Context.ts +41 -0
- package/components/identity.clients/source/lib/Entity.ts +31 -0
- package/components/identity.clients/source/lib/canonical.test.ts +43 -0
- package/components/identity.clients/source/lib/canonical.ts +27 -0
- package/components/identity.clients/source/lib/cimd.test.ts +122 -0
- package/components/identity.clients/source/lib/cimd.ts +112 -0
- package/components/identity.clients/source/lib/errors.ts +4 -0
- package/components/identity.clients/source/lib/index.ts +6 -0
- package/components/identity.clients/source/lib/redirect.test.ts +47 -0
- package/components/identity.clients/source/lib/redirect.ts +39 -0
- package/components/identity.clients/source/register.ts +125 -0
- package/components/identity.clients/tsconfig.json +10 -0
- package/components/identity.clients/tsconfig.tsbuildinfo +1 -0
- package/components/identity.clients/types/index.d.ts +3 -0
- package/components/identity.clients/types/toa.d.ts +109 -0
- package/components/identity.credentials/manifest.toa.yaml +78 -0
- package/components/identity.credentials/operations/list.js +32 -0
- package/components/identity.credentials/source/list.test.ts +70 -0
- package/components/identity.credentials/source/list.ts +92 -0
- package/components/identity.credentials/tsconfig.json +10 -0
- package/components/identity.credentials/tsconfig.tsbuildinfo +1 -0
- package/components/identity.credentials/types/index.d.ts +3 -0
- package/components/identity.credentials/types/toa.d.ts +30 -0
- package/components/identity.federation/events/principal.js +7 -8
- package/components/identity.federation/manifest.toa.yaml +258 -65
- package/components/identity.federation/migrations/0002-indexes.yaml +25 -0
- package/components/identity.federation/operations/authenticate.js +31 -20
- package/components/identity.federation/operations/create.js +29 -0
- package/components/identity.federation/operations/decode.js +9 -0
- package/components/identity.federation/operations/delete.js +7 -0
- package/components/identity.federation/operations/incept.js +9 -13
- package/components/identity.federation/operations/lib/Configuration.js +2 -0
- package/components/identity.federation/operations/lib/Ctx.js +2 -0
- package/components/identity.federation/operations/lib/Payload.js +2 -0
- package/components/identity.federation/operations/lib/decode.js +36 -0
- package/components/identity.federation/operations/lib/discovery.js +34 -0
- package/components/identity.federation/operations/lib/errors.js +45 -0
- package/components/identity.federation/operations/lib/exchange.js +90 -0
- package/components/identity.federation/operations/lib/index.js +5 -0
- package/components/identity.federation/operations/lib/jose.js +2 -0
- package/components/identity.federation/operations/lib/principal.js +14 -0
- package/components/identity.federation/operations/lib/resolve.js +13 -0
- package/components/identity.federation/operations/list.js +12 -0
- package/components/identity.federation/operations/types/Scheme.js +2 -0
- package/components/identity.federation/operations/types/configuration.js +2 -3
- package/components/identity.federation/operations/types/context.js +2 -3
- package/components/identity.federation/operations/types/entity.js +2 -3
- package/components/identity.federation/operations/types/index.js +5 -20
- package/components/identity.federation/source/authenticate.ts +50 -19
- package/components/identity.federation/source/create.ts +44 -0
- package/components/identity.federation/source/decode.ts +14 -0
- package/components/identity.federation/source/delete.ts +19 -0
- package/components/identity.federation/source/incept.ts +12 -15
- package/components/identity.federation/source/lib/Configuration.ts +39 -0
- package/components/identity.federation/source/lib/Ctx.ts +9 -0
- package/components/identity.federation/source/lib/Payload.ts +6 -0
- package/components/identity.federation/source/lib/decode.ts +44 -0
- package/components/identity.federation/source/lib/discovery.test.ts +60 -0
- package/components/identity.federation/source/lib/discovery.ts +50 -0
- package/components/identity.federation/source/lib/errors.ts +54 -0
- package/components/identity.federation/source/lib/exchange.ts +123 -0
- package/components/identity.federation/source/lib/index.ts +5 -0
- package/components/identity.federation/source/lib/jose.d.ts +1 -0
- package/components/identity.federation/source/lib/jose.js +1 -0
- package/components/identity.federation/source/lib/principal.ts +19 -0
- package/components/identity.federation/source/lib/resolve.ts +21 -0
- package/components/identity.federation/source/list.test.ts +41 -0
- package/components/identity.federation/source/list.ts +21 -0
- package/components/identity.federation/source/types/Scheme.ts +1 -0
- package/components/identity.federation/source/types/configuration.ts +12 -4
- package/components/identity.federation/source/types/context.ts +22 -38
- package/components/identity.federation/source/types/entity.ts +3 -0
- package/components/identity.federation/source/types/index.ts +4 -3
- package/components/identity.federation/tsconfig.json +3 -2
- package/components/identity.federation/tsconfig.tsbuildinfo +1 -0
- package/components/identity.federation/types/index.d.ts +3 -0
- package/components/identity.federation/types/toa.d.ts +127 -0
- package/components/identity.grants/manifest.toa.yaml +241 -0
- package/components/identity.grants/migrations/0002-indexes.yaml +5 -0
- package/components/identity.grants/operations/authorize.js +54 -0
- package/components/identity.grants/operations/exchange.js +92 -0
- package/components/identity.grants/operations/lib/code.js +30 -0
- package/components/identity.grants/operations/lib/identify.js +15 -0
- package/components/identity.grants/operations/lib/index.js +3 -0
- package/components/identity.grants/operations/list.js +18 -0
- package/components/identity.grants/operations/revoke.js +26 -0
- package/components/identity.grants/source/authorize.ts +98 -0
- package/components/identity.grants/source/exchange.ts +134 -0
- package/components/identity.grants/source/lib/code.ts +51 -0
- package/components/identity.grants/source/lib/identify.ts +16 -0
- package/components/identity.grants/source/lib/index.ts +3 -0
- package/components/identity.grants/source/list.ts +28 -0
- package/components/identity.grants/source/revoke.ts +40 -0
- package/components/identity.grants/tsconfig.json +10 -0
- package/components/identity.grants/tsconfig.tsbuildinfo +1 -0
- package/components/identity.grants/types/index.d.ts +60 -0
- package/components/identity.grants/types/toa.d.ts +108 -0
- package/components/identity.keys/manifest.toa.yaml +79 -0
- package/components/identity.keys/migrations/0002-indexes.yaml +4 -0
- package/components/identity.keys/operations/create.js +12 -0
- package/components/identity.keys/operations/disable.js +5 -0
- package/components/identity.keys/operations/revoke.js +12 -0
- package/components/identity.keys/receivers/identity.bans.created.js +1 -0
- package/components/identity.keys/receivers/identity.bans.updated.js +1 -0
- package/components/identity.keys/receivers/identity.roles.deleted.js +1 -0
- package/components/identity.keys/source/create.ts +34 -0
- package/components/identity.keys/source/disable.ts +9 -0
- package/components/identity.keys/source/revoke.ts +30 -0
- package/components/identity.keys/tsconfig.json +10 -0
- package/components/identity.keys/tsconfig.tsbuildinfo +1 -0
- package/components/identity.keys/types/index.d.ts +3 -0
- package/components/identity.keys/types/toa.d.ts +47 -0
- package/components/identity.otp/manifest.toa.yaml +96 -0
- package/components/identity.otp/migrations/0002-indexes.yaml +5 -0
- package/components/identity.otp/operations/authenticate.js +44 -0
- package/components/identity.otp/operations/issue.js +19 -0
- package/components/identity.otp/operations/lib/Context.js +2 -0
- package/components/identity.otp/operations/lib/Entity.js +2 -0
- package/components/identity.otp/operations/lib/index.js +2 -0
- package/components/identity.otp/source/authenticate.ts +70 -0
- package/components/identity.otp/source/issue.ts +35 -0
- package/components/identity.otp/source/lib/Context.ts +17 -0
- package/components/identity.otp/source/lib/Entity.ts +6 -0
- package/components/identity.otp/source/lib/index.ts +1 -0
- package/components/identity.otp/tsconfig.json +10 -0
- package/components/identity.otp/tsconfig.tsbuildinfo +1 -0
- package/components/identity.otp/types/index.d.ts +3 -0
- package/components/identity.otp/types/toa.d.ts +56 -0
- package/components/identity.passkeys/manifest.toa.yaml +302 -0
- package/components/identity.passkeys/migrations/0002-indexes.yaml +11 -0
- package/components/identity.passkeys/operations/authenticate.js +32 -0
- package/components/identity.passkeys/operations/challenge.js +72 -0
- package/components/identity.passkeys/operations/create.js +57 -0
- package/components/identity.passkeys/operations/delete.js +9 -0
- package/components/identity.passkeys/operations/lib/const.js +2 -0
- package/components/identity.passkeys/operations/list.js +12 -0
- package/components/identity.passkeys/operations/types/Configuration.js +2 -0
- package/components/identity.passkeys/operations/types/Context.js +2 -0
- package/components/identity.passkeys/operations/types/Passkey.js +2 -0
- package/components/identity.passkeys/operations/types/index.js +2 -0
- package/components/identity.passkeys/operations/use.js +56 -0
- package/components/identity.passkeys/source/authenticate.ts +49 -0
- package/components/identity.passkeys/source/challenge.ts +119 -0
- package/components/identity.passkeys/source/create.ts +83 -0
- package/components/identity.passkeys/source/delete.ts +19 -0
- package/components/identity.passkeys/source/errors.test.ts +34 -0
- package/components/identity.passkeys/source/lib/const.ts +1 -0
- package/components/identity.passkeys/source/list.ts +21 -0
- package/components/identity.passkeys/source/types/Configuration.ts +6 -0
- package/components/identity.passkeys/source/types/Context.ts +17 -0
- package/components/identity.passkeys/source/types/Passkey.ts +12 -0
- package/components/identity.passkeys/source/types/index.ts +2 -0
- package/components/identity.passkeys/source/use.ts +81 -0
- package/components/identity.passkeys/source/webauthn.test.ts +26 -0
- package/components/identity.passkeys/tsconfig.json +10 -0
- package/components/identity.passkeys/tsconfig.tsbuildinfo +1 -0
- package/components/identity.passkeys/types/index.d.ts +3 -0
- package/components/identity.passkeys/types/toa.d.ts +120 -0
- package/components/identity.roles/manifest.toa.yaml +46 -13
- package/components/identity.roles/migrations/0002-indexes.yaml +8 -0
- package/components/identity.roles/operations/grant.js +11 -11
- package/components/identity.roles/operations/lib/Entity.js +2 -3
- package/components/identity.roles/operations/list.js +2 -6
- package/components/identity.roles/operations/principal.js +30 -10
- package/components/identity.roles/receivers/identity.federation.principal.js +4 -0
- package/components/identity.roles/source/grant.ts +16 -10
- package/components/identity.roles/source/list.ts +2 -2
- package/components/identity.roles/source/principal.ts +34 -8
- package/components/identity.roles/tsconfig.json +2 -1
- package/components/identity.roles/tsconfig.tsbuildinfo +1 -0
- package/components/identity.roles/types/index.d.ts +3 -0
- package/components/identity.roles/types/toa.d.ts +43 -0
- package/components/identity.tokens/manifest.toa.yaml +222 -29
- package/components/identity.tokens/operations/authenticate.js +29 -20
- package/components/identity.tokens/operations/decrypt.js +138 -25
- package/components/identity.tokens/operations/encrypt.js +33 -18
- package/components/identity.tokens/operations/issue.js +55 -0
- package/components/identity.tokens/operations/lib/form.js +24 -0
- package/components/identity.tokens/operations/lib/index.js +4 -0
- package/components/identity.tokens/operations/lib/jose.js +2 -0
- package/components/identity.tokens/operations/lib/key.js +7 -0
- package/components/identity.tokens/operations/lib/pad.js +2 -0
- package/components/identity.tokens/operations/revoke.js +2 -6
- package/components/identity.tokens/receivers/identity.bans.created.js +1 -3
- package/components/identity.tokens/receivers/identity.bans.updated.js +1 -3
- package/components/identity.tokens/source/authenticate.test.ts +74 -25
- package/components/identity.tokens/source/authenticate.ts +33 -19
- package/components/identity.tokens/source/decrypt.test.ts +173 -18
- package/components/identity.tokens/source/decrypt.ts +180 -21
- package/components/identity.tokens/source/encrypt.test.ts +107 -16
- package/components/identity.tokens/source/encrypt.ts +44 -17
- package/components/identity.tokens/source/issue.test.ts +73 -0
- package/components/identity.tokens/source/issue.ts +83 -0
- package/components/identity.tokens/source/lib/form.test.ts +25 -0
- package/components/identity.tokens/source/lib/form.ts +27 -0
- package/components/identity.tokens/source/lib/index.ts +4 -0
- package/components/identity.tokens/source/lib/jose.d.ts +1 -0
- package/components/identity.tokens/source/lib/jose.js +1 -0
- package/components/identity.tokens/source/lib/key.ts +8 -0
- package/components/identity.tokens/source/lib/pad.ts +1 -0
- package/components/identity.tokens/source/lib/paseto.test.ts +62 -0
- package/components/identity.tokens/source/revoke.ts +2 -2
- package/components/identity.tokens/tsconfig.json +2 -1
- package/components/identity.tokens/tsconfig.tsbuildinfo +1 -0
- package/components/identity.tokens/types/index.d.ts +70 -0
- package/components/identity.tokens/types/toa.d.ts +113 -0
- package/{components/context.toa.yaml → context.toa.yaml} +8 -4
- package/cucumber.mjs +7 -0
- package/documentation/access.md +112 -28
- package/documentation/authorities.md +9 -11
- package/documentation/cache.md +27 -4
- package/documentation/components.md +204 -63
- package/documentation/consent.md +101 -0
- package/documentation/credentials.md +88 -0
- package/documentation/dev.md +30 -0
- package/documentation/discovery.md +81 -0
- package/documentation/flow.md +44 -0
- package/documentation/help.md +122 -0
- package/documentation/identity.md +164 -18
- package/documentation/introspection.md +123 -0
- package/documentation/io.md +115 -4
- package/documentation/ip.md +24 -0
- package/documentation/map.md +123 -0
- package/documentation/mcp.md +183 -0
- package/documentation/notes/desync.jpg +0 -0
- package/documentation/notes/peers.md +59 -0
- package/documentation/notes/throttling.md +122 -0
- package/documentation/oauth.md +180 -0
- package/documentation/octets.md +146 -73
- package/documentation/passkeys.md +11 -0
- package/documentation/protocol.md +41 -6
- package/documentation/query.md +56 -7
- package/documentation/rpc.md +154 -0
- package/documentation/tracing.md +70 -0
- package/documentation/tree.md +17 -1
- package/features/access.feature +123 -3
- package/features/auth.assert.feature +55 -0
- package/features/auth.bearer.feature +120 -0
- package/features/auth.claims.feature +171 -0
- package/features/auth.incept.feature +166 -0
- package/features/auth.input.feature +59 -0
- package/features/authorities.feature +41 -2
- package/features/authorities.federation.feature +21 -20
- package/features/authorities.tokens.feature +1 -2
- package/features/body.feature +27 -0
- package/features/cache.feature +143 -8
- package/features/configuration.feature +206 -0
- package/features/cors.feature +59 -8
- package/features/credentials.feature +106 -0
- package/features/dev.feature +90 -0
- package/features/discovery.feature +213 -0
- package/features/discovery.ui.feature +213 -0
- package/features/dynamic.feature +83 -1
- package/features/errors.feature +38 -5
- package/features/etag.feature +139 -3
- package/features/flow.feature +148 -0
- package/features/help.feature +512 -0
- package/features/identity.bans.feature +66 -3
- package/features/identity.basic.feature +282 -17
- package/features/identity.feature +158 -0
- package/features/identity.federation.feature +226 -38
- package/features/identity.otp.feature +142 -0
- package/features/identity.roles.feature +305 -4
- package/features/identity.tokens.custom.feature +430 -0
- package/features/identity.tokens.feature +6 -104
- package/features/interruptions.feature +20 -0
- package/features/introspection.feature +565 -0
- package/features/introspection.map.feature +108 -0
- package/features/io.feature +0 -1
- package/features/io.throttle.feature +166 -0
- package/features/map.feature +360 -0
- package/features/mcp.feature +753 -0
- package/features/methods.feature +48 -0
- package/features/oauth.clients.feature +195 -0
- package/features/oauth.discovery.feature +164 -0
- package/features/oauth.grants.feature +301 -0
- package/features/octets.cloudinary.feature +233 -0
- package/features/octets.download.feature +194 -0
- package/features/octets.entries.feature +13 -61
- package/features/octets.feature +96 -55
- package/features/octets.head.feature +40 -0
- package/features/octets.location.feature +83 -0
- package/features/octets.meta.feature +64 -16
- package/features/octets.workflows.feature +333 -68
- package/features/passkeys.feature +66 -0
- package/features/probes.feature +8 -4
- package/features/query.feature +128 -0
- package/features/realtime.feature +34 -0
- package/features/require.feature +1 -2
- package/features/response.feature +30 -1
- package/features/routes.feature +85 -0
- package/features/rpc.feature +429 -0
- package/features/server.feature +21 -0
- package/features/site/_app/immutable/asset.js +1 -0
- package/features/site/favicon.ico +0 -0
- package/features/site/index.html +10 -0
- package/features/steps/.env.example +5 -0
- package/features/steps/Captures.ts +15 -1
- package/features/steps/Cloudinary.ts +12 -0
- package/features/steps/Common.ts +31 -3
- package/features/steps/Components.ts +74 -14
- package/features/steps/Database.ts +57 -16
- package/features/steps/Gateway.ts +157 -49
- package/features/steps/HTTP.ts +41 -19
- package/features/steps/IDP.ts +361 -0
- package/features/steps/Identity.ts +54 -0
- package/features/steps/OTP.ts +42 -0
- package/features/steps/Parameters.ts +151 -10
- package/features/steps/Probe.ts +38 -0
- package/features/steps/Realtime.ts +175 -0
- package/features/steps/Workspace.ts +19 -12
- package/features/steps/components/audit/manifest.toa.yaml +20 -0
- package/features/steps/components/audit/operations/record.js +5 -0
- package/features/steps/components/echo/manifest.toa.yaml +50 -5
- package/features/steps/components/echo/operations/affect.js +1 -5
- package/features/steps/components/echo/operations/compute.js +1 -5
- package/features/steps/components/echo/operations/echo.js +3 -0
- package/features/steps/components/echo/operations/error.js +1 -5
- package/features/steps/components/echo/operations/identity.js +1 -5
- package/features/steps/components/echo/operations/parameters.js +3 -0
- package/features/steps/components/echo/operations/ping.js +3 -0
- package/features/steps/components/echo/operations/unwrap.js +3 -0
- package/features/steps/components/echo.beacon/manifest.toa.yaml +2 -0
- package/features/steps/components/echo.beacon/operations/hello.js +3 -0
- package/features/steps/components/greeter/manifest.toa.yaml +0 -1
- package/features/steps/components/greeter/operations/greet.js +1 -5
- package/features/steps/components/notify/manifest.toa.yaml +20 -0
- package/features/steps/components/notify/operations/send.js +5 -0
- package/features/steps/components/octets.tester/manifest.toa.yaml +60 -6
- package/features/steps/components/octets.tester/operations/authority.js +3 -0
- package/features/steps/components/octets.tester/operations/bar.js +2 -5
- package/features/steps/components/octets.tester/operations/baz.js +3 -5
- package/features/steps/components/octets.tester/operations/concat.js +2 -4
- package/features/steps/components/octets.tester/operations/echo.js +3 -5
- package/features/steps/components/octets.tester/operations/err.js +2 -4
- package/features/steps/components/octets.tester/operations/foo.js +3 -5
- package/features/steps/components/octets.tester/operations/id.js +5 -0
- package/features/steps/components/octets.tester/operations/identity.js +5 -0
- package/features/steps/components/octets.tester/operations/redirect.js +17 -0
- package/features/steps/components/octets.tester/operations/yex.js +14 -0
- package/features/steps/components/octets.tester/operations/yield.js +11 -0
- package/features/steps/components/orders/manifest.toa.yaml +30 -0
- package/features/steps/components/orders/operations/create.js +7 -0
- package/features/steps/components/pots/manifest.toa.yaml +77 -15
- package/features/steps/components/pots/migrations/0002-indexes.yaml +4 -0
- package/features/steps/components/pricing/manifest.toa.yaml +13 -0
- package/features/steps/components/pricing/operations/quote.js +3 -0
- package/features/steps/components/sequences/manifest.toa.yaml +2 -2
- package/features/steps/components/sequences/operations/numbers.js +2 -4
- package/features/steps/components/sequences/operations/tokens.js +5 -7
- package/features/steps/components/users/manifest.toa.yaml +20 -4
- package/features/steps/components/users/operations/create.js +11 -0
- package/features/steps/components/users.properties/manifest.toa.yaml +12 -4
- package/features/steps/map.ts +30 -0
- package/features/streams.feature +4 -0
- package/features/timestamps.feature +41 -0
- package/features/timing.feature +2 -22
- package/features/tracing.feature +123 -0
- package/package.json +35 -25
- package/readme.md +37 -7
- package/schemas/annotation.cos.yaml +125 -6
- package/schemas/call.cos.yaml +18 -0
- package/schemas/directive.cos.yaml +7 -3
- package/schemas/io/throttle.cos.yaml +81 -0
- package/schemas/method.cos.yaml +23 -8
- package/schemas/node.cos.yaml +22 -5
- package/schemas/octets/delete.cos.yaml +15 -2
- package/schemas/octets/get.cos.yaml +5 -0
- package/schemas/octets/put.cos.yaml +31 -0
- package/schemas/octets/workflow.cos.yaml +0 -1
- package/schemas/query.cos.yaml +31 -17
- package/schemas/querystring.cos.yaml +19 -6
- package/schemas/range.cos.yaml +10 -2
- package/schemas/route.cos.yaml +6 -2
- package/source/Annotation.ts +82 -1
- package/source/Branch.test.ts +40 -0
- package/source/Branch.ts +37 -1
- package/source/Composition.ts +10 -16
- package/source/Context.ts +5 -2
- package/source/Directive.test.ts +132 -30
- package/source/Directive.ts +189 -37
- package/source/Discovery/Explorer.ts +34 -0
- package/source/Discovery/Site.test.ts +147 -0
- package/source/Discovery/Site.ts +202 -0
- package/source/Discovery/index.ts +3 -0
- package/source/Discovery/tree.test.ts +175 -0
- package/source/Discovery/tree.ts +77 -0
- package/source/Discovery/trunk.ts +33 -0
- package/source/Endpoint.test.ts +67 -0
- package/source/Endpoint.ts +94 -45
- package/source/Factory.ts +30 -48
- package/source/Gateway.ts +337 -44
- package/source/HTTP/Context.ts +96 -42
- package/source/HTTP/Probe.ts +99 -0
- package/source/HTTP/Server.ts +337 -78
- package/source/HTTP/Timing.ts +7 -33
- package/source/HTTP/address.test.ts +28 -0
- package/source/HTTP/address.ts +16 -0
- package/source/HTTP/exceptions.ts +49 -23
- package/source/HTTP/formats/form.ts +21 -0
- package/source/HTTP/formats/index.ts +24 -10
- package/source/HTTP/formats/json.ts +3 -5
- package/source/HTTP/formats/msgpack.ts +3 -5
- package/source/HTTP/formats/text.ts +3 -5
- package/source/HTTP/formats/yaml.test.ts +22 -0
- package/source/HTTP/formats/yaml.ts +29 -6
- package/source/HTTP/index.ts +6 -4
- package/source/HTTP/messages.test.ts +126 -19
- package/source/HTTP/messages.ts +127 -51
- package/source/HTTP/types.ts +39 -0
- package/source/Interception.ts +18 -5
- package/source/Introspection.ts +179 -0
- package/source/MCP/Server.ts +335 -0
- package/source/MCP/discover.ts +51 -0
- package/source/MCP/errors.ts +80 -0
- package/source/MCP/index.ts +1 -0
- package/source/MCP/schema.test.ts +91 -0
- package/source/MCP/schema.ts +94 -0
- package/source/MCP/tools.ts +144 -0
- package/source/MCP/types.ts +84 -0
- package/source/Mapping.ts +75 -29
- package/source/Query.test.ts +22 -5
- package/source/Query.ts +200 -39
- package/source/RPC/Context.ts +75 -0
- package/source/RPC/Dispatcher.ts +150 -0
- package/source/RPC/errors.test.ts +77 -0
- package/source/RPC/errors.ts +82 -0
- package/source/RPC/index.ts +1 -0
- package/source/RPC/names.test.ts +141 -0
- package/source/RPC/names.ts +176 -0
- package/source/RPC/types.ts +34 -0
- package/source/RTD/Context.ts +7 -4
- package/source/RTD/Directives.ts +103 -10
- package/source/RTD/Endpoint.ts +19 -5
- package/source/RTD/Match.ts +1 -1
- package/source/RTD/Method.ts +25 -4
- package/source/RTD/Node.ts +118 -33
- package/source/RTD/Route.ts +55 -21
- package/source/RTD/Tree.ts +96 -17
- package/source/RTD/expiration.test.ts +81 -0
- package/source/RTD/factory.ts +82 -21
- package/source/RTD/index.ts +8 -8
- package/source/RTD/segment.test.ts +13 -10
- package/source/RTD/segment.ts +33 -8
- package/source/RTD/syntax/index.ts +2 -2
- package/source/RTD/syntax/parse.test.ts +39 -31
- package/source/RTD/syntax/parse.ts +68 -51
- package/source/RTD/syntax/types.ts +25 -4
- package/source/RTD/walk.test.ts +147 -0
- package/source/Remotes.test.ts +55 -18
- package/source/Remotes.ts +20 -11
- package/source/Tenant.ts +54 -16
- package/source/const.ts +45 -0
- package/source/deployment.ts +58 -26
- package/source/directives/auth/Anonymous.test.ts +70 -0
- package/source/directives/auth/Anonymous.ts +27 -6
- package/source/directives/auth/Anyone.ts +23 -0
- package/source/directives/auth/Assert.ts +43 -0
- package/source/directives/auth/Authorization.test.ts +24 -0
- package/source/directives/auth/Authorization.ts +299 -68
- package/source/directives/auth/Delegate.test.ts +36 -0
- package/source/directives/auth/Delegate.ts +31 -12
- package/source/directives/auth/Echo.ts +18 -6
- package/source/directives/auth/Federation.ts +104 -0
- package/source/directives/auth/Id.ts +24 -6
- package/source/directives/auth/Incept.ts +101 -32
- package/source/directives/auth/Input.ts +92 -0
- package/source/directives/auth/Role.test.ts +79 -41
- package/source/directives/auth/Role.ts +59 -26
- package/source/directives/auth/Rule.ts +41 -10
- package/source/directives/auth/Scheme.ts +15 -10
- package/source/directives/auth/create.ts +11 -0
- package/source/directives/auth/index.ts +1 -1
- package/source/directives/auth/schemes.test.ts +18 -0
- package/source/directives/auth/schemes.ts +36 -6
- package/source/directives/auth/split.ts +4 -5
- package/source/directives/auth/types.ts +48 -13
- package/source/directives/cache/Cache.ts +70 -13
- package/source/directives/cache/Control.ts +36 -40
- package/source/directives/cache/Exact.ts +2 -2
- package/source/directives/cache/etag.ts +38 -0
- package/source/directives/cache/index.ts +1 -1
- package/source/directives/cache/types.ts +1 -1
- package/source/directives/cors/CORS.test.ts +75 -0
- package/source/directives/cors/CORS.ts +49 -23
- package/source/directives/cors/index.ts +1 -1
- package/source/directives/dev/Development.ts +20 -14
- package/source/directives/dev/Faulty.ts +31 -0
- package/source/directives/dev/Sleep.ts +53 -0
- package/source/directives/dev/Stub.ts +4 -4
- package/source/directives/dev/Throw.ts +4 -4
- package/source/directives/dev/index.ts +1 -1
- package/source/directives/dev/types.ts +2 -2
- package/source/directives/flow/Compose.ts +98 -0
- package/source/directives/flow/Fetch.ts +86 -0
- package/source/directives/flow/Flow.ts +43 -0
- package/source/directives/flow/index.ts +3 -0
- package/source/directives/flow/types.ts +7 -0
- package/source/directives/help/Family.ts +122 -0
- package/source/directives/help/Help.test.ts +227 -0
- package/source/directives/help/Help.ts +47 -0
- package/source/directives/help/Parameters.ts +47 -0
- package/source/directives/help/described.ts +57 -0
- package/source/directives/help/index.ts +45 -0
- package/source/directives/index.ts +32 -12
- package/source/directives/io/Directive.ts +9 -3
- package/source/directives/io/IO.ts +89 -14
- package/source/directives/io/Input.ts +26 -21
- package/source/directives/io/Output.ts +43 -31
- package/source/directives/io/Status.test.ts +88 -0
- package/source/directives/io/Status.ts +47 -0
- package/source/directives/io/Throttle.ts +30 -0
- package/source/directives/io/index.ts +1 -1
- package/source/directives/io/lib/throttle/Configuration.test.ts +72 -0
- package/source/directives/io/lib/throttle/Configuration.ts +68 -0
- package/source/directives/io/lib/throttle/Keys.ts +53 -0
- package/source/directives/io/lib/throttle/Quotas.test.ts +411 -0
- package/source/directives/io/lib/throttle/Quotas.ts +190 -0
- package/source/directives/io/lib/throttle/Sync.test.ts +163 -0
- package/source/directives/io/lib/throttle/Sync.ts +93 -0
- package/source/directives/io/lib/throttle/Warning.test.ts +32 -0
- package/source/directives/io/lib/throttle/Warning.ts +29 -0
- package/source/directives/io/lib/throttle/components/Component.ts +7 -0
- package/source/directives/io/lib/throttle/components/IP.ts +30 -0
- package/source/directives/io/lib/throttle/components/Identity.ts +19 -0
- package/source/directives/io/lib/throttle/components/Path.ts +8 -0
- package/source/directives/io/lib/throttle/components/Route.ts +19 -0
- package/source/directives/io/lib/throttle/components/Segment.ts +19 -0
- package/source/directives/io/lib/throttle/components/index.ts +19 -0
- package/source/directives/io/lib/throttle/conditions/Condition.ts +5 -0
- package/source/directives/io/lib/throttle/conditions/Status.ts +17 -0
- package/source/directives/io/lib/throttle/conditions/index.ts +11 -0
- package/source/directives/io/lib/throttle/index.ts +4 -0
- package/source/directives/io/schemas.test.ts +40 -0
- package/source/directives/io/schemas.ts +9 -5
- package/source/directives/map/Authority.ts +15 -0
- package/source/directives/map/Buffer.ts +15 -0
- package/source/directives/map/Claims.ts +63 -0
- package/source/directives/map/Directive.ts +4 -0
- package/source/directives/map/Headers.ts +60 -0
- package/source/directives/map/Language.ts +45 -0
- package/source/directives/map/Languages.ts +17 -0
- package/source/directives/map/Map.ts +85 -0
- package/source/directives/map/Mapping.ts +45 -0
- package/source/directives/{vary → map}/Properties.ts +3 -5
- package/source/directives/map/Segments.ts +52 -0
- package/source/directives/map/index.ts +3 -0
- package/source/directives/mcp/MCP.ts +33 -0
- package/source/directives/mcp/Tool.test.ts +56 -0
- package/source/directives/mcp/Tool.ts +32 -0
- package/source/directives/mcp/index.ts +6 -0
- package/source/directives/oauth/Discovery.ts +66 -0
- package/source/directives/oauth/documents.ts +110 -0
- package/source/directives/oauth/index.ts +3 -0
- package/source/directives/octets/Context.ts +10 -6
- package/source/directives/octets/Delete.ts +48 -37
- package/source/directives/octets/Directive.ts +15 -4
- package/source/directives/octets/Get.ts +88 -0
- package/source/directives/octets/Octets.ts +44 -33
- package/source/directives/octets/Put.ts +186 -0
- package/source/directives/octets/Workflow.ts +34 -22
- package/source/directives/octets/bytes.test.ts +33 -0
- package/source/directives/octets/bytes.ts +18 -0
- package/source/directives/octets/index.ts +1 -1
- package/source/directives/octets/schemas.test.ts +14 -15
- package/source/directives/octets/schemas.ts +8 -12
- package/source/directives/octets/types.ts +3 -1
- package/source/directives/octets/workflows/Execution.ts +74 -20
- package/source/directives/octets/workflows/Workflow.ts +30 -16
- package/source/directives/octets/workflows/index.ts +1 -1
- package/source/directives/require/Directive.ts +2 -2
- package/source/directives/require/Headers.ts +6 -7
- package/source/directives/require/Require.ts +7 -8
- package/source/directives/require/index.ts +1 -1
- package/source/exceptions.ts +32 -13
- package/source/index.ts +11 -5
- package/source/io.ts +1 -1
- package/source/manifest.test.ts +15 -10
- package/source/manifest.ts +27 -22
- package/source/octets.d.ts +17 -0
- package/source/root.ts +22 -6
- package/source/schemas.test.ts +31 -0
- package/source/schemas.ts +7 -5
- package/source/service.ts +94 -0
- package/source/shortcuts.ts +14 -0
- package/source/userland.ts +47 -0
- package/transpiled/Annotation.d.ts +63 -1
- package/transpiled/Annotation.js +1 -2
- package/transpiled/Branch.d.ts +25 -1
- package/transpiled/Branch.js +14 -2
- package/transpiled/Branch.js.map +1 -1
- package/transpiled/Composition.d.ts +3 -4
- package/transpiled/Composition.js +13 -22
- package/transpiled/Composition.js.map +1 -1
- package/transpiled/Context.d.ts +3 -2
- package/transpiled/Context.js +1 -2
- package/transpiled/Directive.d.ts +33 -8
- package/transpiled/Directive.js +120 -32
- package/transpiled/Directive.js.map +1 -1
- package/transpiled/Discovery/Explorer.d.ts +11 -0
- package/transpiled/Discovery/Explorer.js +29 -0
- package/transpiled/Discovery/Explorer.js.map +1 -0
- package/transpiled/Discovery/Site.d.ts +43 -0
- package/transpiled/Discovery/Site.js +171 -0
- package/transpiled/Discovery/Site.js.map +1 -0
- package/transpiled/Discovery/index.d.ts +3 -0
- package/transpiled/Discovery/index.js +4 -0
- package/transpiled/Discovery/index.js.map +1 -0
- package/transpiled/Discovery/tree.d.ts +26 -0
- package/transpiled/Discovery/tree.js +50 -0
- package/transpiled/Discovery/tree.js.map +1 -0
- package/transpiled/Discovery/trunk.d.ts +13 -0
- package/transpiled/Discovery/trunk.js +29 -0
- package/transpiled/Discovery/trunk.js.map +1 -0
- package/transpiled/Endpoint.d.ts +19 -7
- package/transpiled/Endpoint.js +68 -58
- package/transpiled/Endpoint.js.map +1 -1
- package/transpiled/Factory.d.ts +8 -7
- package/transpiled/Factory.js +23 -69
- package/transpiled/Factory.js.map +1 -1
- package/transpiled/Gateway.d.ts +59 -6
- package/transpiled/Gateway.js +240 -51
- package/transpiled/Gateway.js.map +1 -1
- package/transpiled/HTTP/Context.d.ts +24 -14
- package/transpiled/HTTP/Context.js +73 -34
- package/transpiled/HTTP/Context.js.map +1 -1
- package/transpiled/HTTP/Probe.d.ts +26 -0
- package/transpiled/HTTP/Probe.js +80 -0
- package/transpiled/HTTP/Probe.js.map +1 -0
- package/transpiled/HTTP/Server.d.ts +30 -10
- package/transpiled/HTTP/Server.js +250 -93
- package/transpiled/HTTP/Server.js.map +1 -1
- package/transpiled/HTTP/Timing.d.ts +2 -6
- package/transpiled/HTTP/Timing.js +5 -25
- package/transpiled/HTTP/Timing.js.map +1 -1
- package/transpiled/HTTP/address.d.ts +7 -0
- package/transpiled/HTTP/address.js +14 -0
- package/transpiled/HTTP/address.js.map +1 -0
- package/transpiled/HTTP/exceptions.d.ts +21 -9
- package/transpiled/HTTP/exceptions.js +40 -36
- package/transpiled/HTTP/exceptions.js.map +1 -1
- package/transpiled/HTTP/formats/form.d.ts +9 -0
- package/transpiled/HTTP/formats/form.js +18 -0
- package/transpiled/HTTP/formats/form.js.map +1 -0
- package/transpiled/HTTP/formats/index.d.ts +10 -4
- package/transpiled/HTTP/formats/index.js +19 -35
- package/transpiled/HTTP/formats/index.js.map +1 -1
- package/transpiled/HTTP/formats/json.d.ts +1 -3
- package/transpiled/HTTP/formats/json.js +6 -12
- package/transpiled/HTTP/formats/json.js.map +1 -1
- package/transpiled/HTTP/formats/msgpack.d.ts +0 -2
- package/transpiled/HTTP/formats/msgpack.js +7 -12
- package/transpiled/HTTP/formats/msgpack.js.map +1 -1
- package/transpiled/HTTP/formats/text.d.ts +1 -3
- package/transpiled/HTTP/formats/text.js +6 -12
- package/transpiled/HTTP/formats/text.js.map +1 -1
- package/transpiled/HTTP/formats/yaml.d.ts +1 -3
- package/transpiled/HTTP/formats/yaml.js +26 -37
- package/transpiled/HTTP/formats/yaml.js.map +1 -1
- package/transpiled/HTTP/index.d.ts +6 -4
- package/transpiled/HTTP/index.js +6 -20
- package/transpiled/HTTP/index.js.map +1 -1
- package/transpiled/HTTP/messages.d.ts +26 -4
- package/transpiled/HTTP/messages.js +80 -41
- package/transpiled/HTTP/messages.js.map +1 -1
- package/transpiled/HTTP/types.d.ts +37 -0
- package/transpiled/HTTP/types.js +2 -0
- package/transpiled/HTTP/types.js.map +1 -0
- package/transpiled/Interception.d.ts +7 -2
- package/transpiled/Interception.js +8 -6
- package/transpiled/Interception.js.map +1 -1
- package/transpiled/Introspection.d.ts +83 -0
- package/transpiled/Introspection.js +79 -0
- package/transpiled/Introspection.js.map +1 -0
- package/transpiled/MCP/Server.d.ts +41 -0
- package/transpiled/MCP/Server.js +191 -0
- package/transpiled/MCP/Server.js.map +1 -0
- package/transpiled/MCP/discover.d.ts +13 -0
- package/transpiled/MCP/discover.js +29 -0
- package/transpiled/MCP/discover.js.map +1 -0
- package/transpiled/MCP/errors.d.ts +24 -0
- package/transpiled/MCP/errors.js +67 -0
- package/transpiled/MCP/errors.js.map +1 -0
- package/transpiled/MCP/index.d.ts +1 -0
- package/transpiled/MCP/index.js +2 -0
- package/transpiled/MCP/index.js.map +1 -0
- package/transpiled/MCP/schema.d.ts +18 -0
- package/transpiled/MCP/schema.js +70 -0
- package/transpiled/MCP/schema.js.map +1 -0
- package/transpiled/MCP/tools.d.ts +31 -0
- package/transpiled/MCP/tools.js +109 -0
- package/transpiled/MCP/tools.js.map +1 -0
- package/transpiled/MCP/types.d.ts +66 -0
- package/transpiled/MCP/types.js +13 -0
- package/transpiled/MCP/types.js.map +1 -0
- package/transpiled/Mapping.d.ts +17 -6
- package/transpiled/Mapping.js +50 -24
- package/transpiled/Mapping.js.map +1 -1
- package/transpiled/Query.d.ts +39 -6
- package/transpiled/Query.js +144 -48
- package/transpiled/Query.js.map +1 -1
- package/transpiled/RPC/Context.d.ts +11 -0
- package/transpiled/RPC/Context.js +56 -0
- package/transpiled/RPC/Context.js.map +1 -0
- package/transpiled/RPC/Dispatcher.d.ts +19 -0
- package/transpiled/RPC/Dispatcher.js +103 -0
- package/transpiled/RPC/Dispatcher.js.map +1 -0
- package/transpiled/RPC/errors.d.ts +18 -0
- package/transpiled/RPC/errors.js +67 -0
- package/transpiled/RPC/errors.js.map +1 -0
- package/transpiled/RPC/index.d.ts +1 -0
- package/transpiled/RPC/index.js +2 -0
- package/transpiled/RPC/index.js.map +1 -0
- package/transpiled/RPC/names.d.ts +31 -0
- package/transpiled/RPC/names.js +121 -0
- package/transpiled/RPC/names.js.map +1 -0
- package/transpiled/RPC/types.d.ts +27 -0
- package/transpiled/RPC/types.js +8 -0
- package/transpiled/RPC/types.js.map +1 -0
- package/transpiled/RTD/Context.d.ts +6 -4
- package/transpiled/RTD/Context.js +1 -2
- package/transpiled/RTD/Directives.d.ts +72 -7
- package/transpiled/RTD/Directives.js +1 -2
- package/transpiled/RTD/Endpoint.d.ts +12 -4
- package/transpiled/RTD/Endpoint.js +1 -2
- package/transpiled/RTD/Match.d.ts +1 -1
- package/transpiled/RTD/Match.js +1 -2
- package/transpiled/RTD/Method.d.ts +11 -2
- package/transpiled/RTD/Method.js +12 -5
- package/transpiled/RTD/Method.js.map +1 -1
- package/transpiled/RTD/Node.d.ts +43 -5
- package/transpiled/RTD/Node.js +75 -21
- package/transpiled/RTD/Node.js.map +1 -1
- package/transpiled/RTD/Route.d.ts +8 -6
- package/transpiled/RTD/Route.js +40 -10
- package/transpiled/RTD/Route.js.map +1 -1
- package/transpiled/RTD/Tree.d.ts +14 -5
- package/transpiled/RTD/Tree.js +70 -12
- package/transpiled/RTD/Tree.js.map +1 -1
- package/transpiled/RTD/factory.d.ts +4 -3
- package/transpiled/RTD/factory.js +57 -15
- package/transpiled/RTD/factory.js.map +1 -1
- package/transpiled/RTD/index.d.ts +8 -8
- package/transpiled/RTD/index.js +8 -37
- package/transpiled/RTD/index.js.map +1 -1
- package/transpiled/RTD/segment.d.ts +8 -0
- package/transpiled/RTD/segment.js +21 -7
- package/transpiled/RTD/segment.js.map +1 -1
- package/transpiled/RTD/syntax/index.d.ts +2 -2
- package/transpiled/RTD/syntax/index.js +2 -18
- package/transpiled/RTD/syntax/index.js.map +1 -1
- package/transpiled/RTD/syntax/parse.d.ts +1 -1
- package/transpiled/RTD/syntax/parse.js +38 -54
- package/transpiled/RTD/syntax/parse.js.map +1 -1
- package/transpiled/RTD/syntax/types.d.ts +14 -3
- package/transpiled/RTD/syntax/types.js +10 -4
- package/transpiled/RTD/syntax/types.js.map +1 -1
- package/transpiled/Remotes.d.ts +7 -7
- package/transpiled/Remotes.js +15 -16
- package/transpiled/Remotes.js.map +1 -1
- package/transpiled/Tenant.d.ts +15 -4
- package/transpiled/Tenant.js +39 -14
- package/transpiled/Tenant.js.map +1 -1
- package/transpiled/const.d.ts +36 -0
- package/transpiled/const.js +37 -0
- package/transpiled/const.js.map +1 -0
- package/transpiled/deployment.d.ts +4 -1
- package/transpiled/deployment.js +51 -54
- package/transpiled/deployment.js.map +1 -1
- package/transpiled/directives/auth/Anonymous.d.ts +17 -2
- package/transpiled/directives/auth/Anonymous.js +23 -9
- package/transpiled/directives/auth/Anonymous.js.map +1 -1
- package/transpiled/directives/auth/Anyone.d.ts +10 -0
- package/transpiled/directives/auth/Anyone.js +17 -0
- package/transpiled/directives/auth/Anyone.js.map +1 -0
- package/transpiled/directives/auth/Assert.d.ts +9 -0
- package/transpiled/directives/auth/Assert.js +33 -0
- package/transpiled/directives/auth/Assert.js.map +1 -0
- package/transpiled/directives/auth/Authorization.d.ts +44 -8
- package/transpiled/directives/auth/Authorization.js +223 -85
- package/transpiled/directives/auth/Authorization.js.map +1 -1
- package/transpiled/directives/auth/Delegate.d.ts +13 -4
- package/transpiled/directives/auth/Delegate.js +23 -10
- package/transpiled/directives/auth/Delegate.js.map +1 -1
- package/transpiled/directives/auth/Echo.d.ts +6 -4
- package/transpiled/directives/auth/Echo.js +14 -9
- package/transpiled/directives/auth/Echo.js.map +1 -1
- package/transpiled/directives/auth/Federation.d.ts +21 -0
- package/transpiled/directives/auth/Federation.js +54 -0
- package/transpiled/directives/auth/Federation.js.map +1 -0
- package/transpiled/directives/auth/Id.d.ts +12 -3
- package/transpiled/directives/auth/Id.js +13 -5
- package/transpiled/directives/auth/Id.js.map +1 -1
- package/transpiled/directives/auth/Incept.d.ts +11 -6
- package/transpiled/directives/auth/Incept.js +67 -50
- package/transpiled/directives/auth/Incept.js.map +1 -1
- package/transpiled/directives/auth/Input.d.ts +15 -0
- package/transpiled/directives/auth/Input.js +49 -0
- package/transpiled/directives/auth/Input.js.map +1 -0
- package/transpiled/directives/auth/Role.d.ts +12 -3
- package/transpiled/directives/auth/Role.js +28 -16
- package/transpiled/directives/auth/Role.js.map +1 -1
- package/transpiled/directives/auth/Rule.d.ts +8 -5
- package/transpiled/directives/auth/Rule.js +23 -7
- package/transpiled/directives/auth/Rule.js.map +1 -1
- package/transpiled/directives/auth/Scheme.d.ts +4 -2
- package/transpiled/directives/auth/Scheme.js +11 -35
- package/transpiled/directives/auth/Scheme.js.map +1 -1
- package/transpiled/directives/auth/create.d.ts +2 -0
- package/transpiled/directives/auth/create.js +10 -0
- package/transpiled/directives/auth/create.js.map +1 -0
- package/transpiled/directives/auth/index.d.ts +1 -1
- package/transpiled/directives/auth/index.js +2 -5
- package/transpiled/directives/auth/index.js.map +1 -1
- package/transpiled/directives/auth/schemes.d.ts +26 -3
- package/transpiled/directives/auth/schemes.js +32 -8
- package/transpiled/directives/auth/schemes.js.map +1 -1
- package/transpiled/directives/auth/split.d.ts +1 -1
- package/transpiled/directives/auth/split.js +3 -30
- package/transpiled/directives/auth/split.js.map +1 -1
- package/transpiled/directives/auth/types.d.ts +37 -12
- package/transpiled/directives/auth/types.js +1 -2
- package/transpiled/directives/cache/Cache.d.ts +6 -6
- package/transpiled/directives/cache/Cache.js +54 -14
- package/transpiled/directives/cache/Cache.js.map +1 -1
- package/transpiled/directives/cache/Control.d.ts +3 -3
- package/transpiled/directives/cache/Control.js +16 -22
- package/transpiled/directives/cache/Control.js.map +1 -1
- package/transpiled/directives/cache/Exact.d.ts +1 -1
- package/transpiled/directives/cache/Exact.js +2 -6
- package/transpiled/directives/cache/Exact.js.map +1 -1
- package/transpiled/directives/cache/etag.d.ts +10 -0
- package/transpiled/directives/cache/etag.js +30 -0
- package/transpiled/directives/cache/etag.js.map +1 -0
- package/transpiled/directives/cache/index.d.ts +1 -1
- package/transpiled/directives/cache/index.js +2 -5
- package/transpiled/directives/cache/index.js.map +1 -1
- package/transpiled/directives/cache/types.d.ts +1 -1
- package/transpiled/directives/cache/types.js +1 -2
- package/transpiled/directives/cors/CORS.d.ts +10 -3
- package/transpiled/directives/cors/CORS.js +38 -21
- package/transpiled/directives/cors/CORS.js.map +1 -1
- package/transpiled/directives/cors/index.d.ts +1 -1
- package/transpiled/directives/cors/index.js +2 -5
- package/transpiled/directives/cors/index.js.map +1 -1
- package/transpiled/directives/dev/Development.d.ts +4 -4
- package/transpiled/directives/dev/Development.js +19 -15
- package/transpiled/directives/dev/Development.js.map +1 -1
- package/transpiled/directives/dev/Faulty.d.ts +8 -0
- package/transpiled/directives/dev/Faulty.js +19 -0
- package/transpiled/directives/dev/Faulty.js.map +1 -0
- package/transpiled/directives/dev/Sleep.d.ts +9 -0
- package/transpiled/directives/dev/Sleep.js +41 -0
- package/transpiled/directives/dev/Sleep.js.map +1 -0
- package/transpiled/directives/dev/Stub.d.ts +2 -2
- package/transpiled/directives/dev/Stub.js +1 -5
- package/transpiled/directives/dev/Stub.js.map +1 -1
- package/transpiled/directives/dev/Throw.d.ts +2 -2
- package/transpiled/directives/dev/Throw.js +1 -5
- package/transpiled/directives/dev/Throw.js.map +1 -1
- package/transpiled/directives/dev/index.d.ts +1 -1
- package/transpiled/directives/dev/index.js +2 -5
- package/transpiled/directives/dev/index.js.map +1 -1
- package/transpiled/directives/dev/types.d.ts +2 -2
- package/transpiled/directives/dev/types.js +1 -2
- package/transpiled/directives/flow/Compose.d.ts +9 -0
- package/transpiled/directives/flow/Compose.js +71 -0
- package/transpiled/directives/flow/Compose.js.map +1 -0
- package/transpiled/directives/flow/Fetch.d.ts +12 -0
- package/transpiled/directives/flow/Fetch.js +51 -0
- package/transpiled/directives/flow/Fetch.js.map +1 -0
- package/transpiled/directives/flow/Flow.d.ts +10 -0
- package/transpiled/directives/flow/Flow.js +29 -0
- package/transpiled/directives/flow/Flow.js.map +1 -0
- package/transpiled/directives/flow/index.d.ts +2 -0
- package/transpiled/directives/flow/index.js +3 -0
- package/transpiled/directives/flow/index.js.map +1 -0
- package/transpiled/directives/flow/types.d.ts +6 -0
- package/transpiled/directives/flow/types.js +2 -0
- package/transpiled/directives/flow/types.js.map +1 -0
- package/transpiled/directives/help/Family.d.ts +28 -0
- package/transpiled/directives/help/Family.js +83 -0
- package/transpiled/directives/help/Family.js.map +1 -0
- package/transpiled/directives/help/Help.d.ts +22 -0
- package/transpiled/directives/help/Help.js +36 -0
- package/transpiled/directives/help/Help.js.map +1 -0
- package/transpiled/directives/help/Parameters.d.ts +18 -0
- package/transpiled/directives/help/Parameters.js +34 -0
- package/transpiled/directives/help/Parameters.js.map +1 -0
- package/transpiled/directives/help/described.d.ts +16 -0
- package/transpiled/directives/help/described.js +23 -0
- package/transpiled/directives/help/described.js.map +1 -0
- package/transpiled/directives/help/index.d.ts +22 -0
- package/transpiled/directives/help/index.js +34 -0
- package/transpiled/directives/help/index.js.map +1 -0
- package/transpiled/directives/index.d.ts +6 -2
- package/transpiled/directives/index.js +30 -13
- package/transpiled/directives/index.js.map +1 -1
- package/transpiled/directives/io/Directive.d.ts +8 -3
- package/transpiled/directives/io/Directive.js +1 -2
- package/transpiled/directives/io/IO.d.ts +24 -5
- package/transpiled/directives/io/IO.js +60 -17
- package/transpiled/directives/io/IO.js.map +1 -1
- package/transpiled/directives/io/Input.d.ts +5 -4
- package/transpiled/directives/io/Input.js +18 -38
- package/transpiled/directives/io/Input.js.map +1 -1
- package/transpiled/directives/io/Message.js +1 -2
- package/transpiled/directives/io/Output.d.ts +8 -4
- package/transpiled/directives/io/Output.js +24 -40
- package/transpiled/directives/io/Output.js.map +1 -1
- package/transpiled/directives/io/Status.d.ts +19 -0
- package/transpiled/directives/io/Status.js +34 -0
- package/transpiled/directives/io/Status.js.map +1 -0
- package/transpiled/directives/io/Throttle.d.ts +11 -0
- package/transpiled/directives/io/Throttle.js +22 -0
- package/transpiled/directives/io/Throttle.js.map +1 -0
- package/transpiled/directives/io/index.d.ts +1 -1
- package/transpiled/directives/io/index.js +2 -5
- package/transpiled/directives/io/index.js.map +1 -1
- package/transpiled/directives/io/lib/throttle/Configuration.d.ts +26 -0
- package/transpiled/directives/io/lib/throttle/Configuration.js +31 -0
- package/transpiled/directives/io/lib/throttle/Configuration.js.map +1 -0
- package/transpiled/directives/io/lib/throttle/Keys.d.ts +14 -0
- package/transpiled/directives/io/lib/throttle/Keys.js +32 -0
- package/transpiled/directives/io/lib/throttle/Keys.js.map +1 -0
- package/transpiled/directives/io/lib/throttle/Quotas.d.ts +70 -0
- package/transpiled/directives/io/lib/throttle/Quotas.js +142 -0
- package/transpiled/directives/io/lib/throttle/Quotas.js.map +1 -0
- package/transpiled/directives/io/lib/throttle/Sync.d.ts +29 -0
- package/transpiled/directives/io/lib/throttle/Sync.js +70 -0
- package/transpiled/directives/io/lib/throttle/Sync.js.map +1 -0
- package/transpiled/directives/io/lib/throttle/Warning.d.ts +11 -0
- package/transpiled/directives/io/lib/throttle/Warning.js +24 -0
- package/transpiled/directives/io/lib/throttle/Warning.js.map +1 -0
- package/transpiled/directives/io/lib/throttle/components/Component.d.ts +6 -0
- package/transpiled/directives/io/lib/throttle/components/Component.js +2 -0
- package/transpiled/directives/io/lib/throttle/components/Component.js.map +1 -0
- package/transpiled/directives/io/lib/throttle/components/IP.d.ts +14 -0
- package/transpiled/directives/io/lib/throttle/components/IP.js +24 -0
- package/transpiled/directives/io/lib/throttle/components/IP.js.map +1 -0
- package/transpiled/directives/io/lib/throttle/components/Identity.d.ts +11 -0
- package/transpiled/directives/io/lib/throttle/components/Identity.js +12 -0
- package/transpiled/directives/io/lib/throttle/components/Identity.js.map +1 -0
- package/transpiled/directives/io/lib/throttle/components/Path.d.ts +5 -0
- package/transpiled/directives/io/lib/throttle/components/Path.js +6 -0
- package/transpiled/directives/io/lib/throttle/components/Path.js.map +1 -0
- package/transpiled/directives/io/lib/throttle/components/Route.d.ts +12 -0
- package/transpiled/directives/io/lib/throttle/components/Route.js +16 -0
- package/transpiled/directives/io/lib/throttle/components/Route.js.map +1 -0
- package/transpiled/directives/io/lib/throttle/components/Segment.d.ts +9 -0
- package/transpiled/directives/io/lib/throttle/components/Segment.js +13 -0
- package/transpiled/directives/io/lib/throttle/components/Segment.js.map +1 -0
- package/transpiled/directives/io/lib/throttle/components/index.d.ts +5 -0
- package/transpiled/directives/io/lib/throttle/components/index.js +13 -0
- package/transpiled/directives/io/lib/throttle/components/index.js.map +1 -0
- package/transpiled/directives/io/lib/throttle/conditions/Condition.d.ts +4 -0
- package/transpiled/directives/io/lib/throttle/conditions/Condition.js +2 -0
- package/transpiled/directives/io/lib/throttle/conditions/Condition.js.map +1 -0
- package/transpiled/directives/io/lib/throttle/conditions/Status.d.ts +7 -0
- package/transpiled/directives/io/lib/throttle/conditions/Status.js +12 -0
- package/transpiled/directives/io/lib/throttle/conditions/Status.js.map +1 -0
- package/transpiled/directives/io/lib/throttle/conditions/index.d.ts +5 -0
- package/transpiled/directives/io/lib/throttle/conditions/index.js +5 -0
- package/transpiled/directives/io/lib/throttle/conditions/index.js.map +1 -0
- package/transpiled/directives/io/lib/throttle/index.d.ts +4 -0
- package/transpiled/directives/io/lib/throttle/index.js +5 -0
- package/transpiled/directives/io/lib/throttle/index.js.map +1 -0
- package/transpiled/directives/io/schemas.d.ts +6 -4
- package/transpiled/directives/io/schemas.js +8 -13
- package/transpiled/directives/io/schemas.js.map +1 -1
- package/transpiled/directives/map/Authority.d.ts +6 -0
- package/transpiled/directives/map/Authority.js +12 -0
- package/transpiled/directives/map/Authority.js.map +1 -0
- package/transpiled/directives/map/Buffer.d.ts +6 -0
- package/transpiled/directives/map/Buffer.js +12 -0
- package/transpiled/directives/map/Buffer.js.map +1 -0
- package/transpiled/directives/map/Claims.d.ts +10 -0
- package/transpiled/directives/map/Claims.js +37 -0
- package/transpiled/directives/map/Claims.js.map +1 -0
- package/transpiled/directives/map/Directive.d.ts +3 -0
- package/transpiled/directives/map/Directive.js +2 -0
- package/transpiled/directives/map/Directive.js.map +1 -0
- package/transpiled/directives/map/Headers.d.ts +14 -0
- package/transpiled/directives/map/Headers.js +43 -0
- package/transpiled/directives/map/Headers.js.map +1 -0
- package/transpiled/directives/map/Language.d.ts +10 -0
- package/transpiled/directives/map/Language.js +31 -0
- package/transpiled/directives/map/Language.js.map +1 -0
- package/transpiled/directives/map/Languages.d.ts +4 -0
- package/transpiled/directives/map/Languages.js +10 -0
- package/transpiled/directives/map/Languages.js.map +1 -0
- package/transpiled/directives/map/Map.d.ts +15 -0
- package/transpiled/directives/map/Map.js +50 -0
- package/transpiled/directives/map/Map.js.map +1 -0
- package/transpiled/directives/map/Mapping.d.ts +26 -0
- package/transpiled/directives/map/Mapping.js +29 -0
- package/transpiled/directives/map/Mapping.js.map +1 -0
- package/transpiled/directives/{vary → map}/Properties.d.ts +2 -2
- package/transpiled/directives/map/Properties.js +10 -0
- package/transpiled/directives/map/Properties.js.map +1 -0
- package/transpiled/directives/map/Segments.d.ts +9 -0
- package/transpiled/directives/map/Segments.js +32 -0
- package/transpiled/directives/map/Segments.js.map +1 -0
- package/transpiled/directives/map/index.d.ts +2 -0
- package/transpiled/directives/map/index.js +3 -0
- package/transpiled/directives/map/index.js.map +1 -0
- package/transpiled/directives/mcp/MCP.d.ts +18 -0
- package/transpiled/directives/mcp/MCP.js +25 -0
- package/transpiled/directives/mcp/MCP.js.map +1 -0
- package/transpiled/directives/mcp/Tool.d.ts +12 -0
- package/transpiled/directives/mcp/Tool.js +23 -0
- package/transpiled/directives/mcp/Tool.js.map +1 -0
- package/transpiled/directives/mcp/index.d.ts +4 -0
- package/transpiled/directives/mcp/index.js +4 -0
- package/transpiled/directives/mcp/index.js.map +1 -0
- package/transpiled/directives/oauth/Discovery.d.ts +23 -0
- package/transpiled/directives/oauth/Discovery.js +55 -0
- package/transpiled/directives/oauth/Discovery.js.map +1 -0
- package/transpiled/directives/oauth/documents.d.ts +9 -0
- package/transpiled/directives/oauth/documents.js +82 -0
- package/transpiled/directives/oauth/documents.js.map +1 -0
- package/transpiled/directives/oauth/index.d.ts +2 -0
- package/transpiled/directives/oauth/index.js +3 -0
- package/transpiled/directives/oauth/index.js.map +1 -0
- package/transpiled/directives/octets/Context.d.ts +2 -2
- package/transpiled/directives/octets/Context.js +4 -31
- package/transpiled/directives/octets/Context.js.map +1 -1
- package/transpiled/directives/octets/Delete.d.ts +6 -6
- package/transpiled/directives/octets/Delete.js +23 -47
- package/transpiled/directives/octets/Delete.js.map +1 -1
- package/transpiled/directives/octets/Directive.d.ts +9 -3
- package/transpiled/directives/octets/Directive.js +1 -5
- package/transpiled/directives/octets/Directive.js.map +1 -1
- package/transpiled/directives/octets/Get.d.ts +17 -0
- package/transpiled/directives/octets/Get.js +69 -0
- package/transpiled/directives/octets/Get.js.map +1 -0
- package/transpiled/directives/octets/Octets.d.ts +9 -6
- package/transpiled/directives/octets/Octets.js +27 -26
- package/transpiled/directives/octets/Octets.js.map +1 -1
- package/transpiled/directives/octets/Put.d.ts +33 -0
- package/transpiled/directives/octets/Put.js +82 -0
- package/transpiled/directives/octets/Put.js.map +1 -0
- package/transpiled/directives/octets/Workflow.d.ts +6 -6
- package/transpiled/directives/octets/Workflow.js +14 -36
- package/transpiled/directives/octets/Workflow.js.map +1 -1
- package/transpiled/directives/octets/bytes.d.ts +1 -0
- package/transpiled/directives/octets/bytes.js +14 -0
- package/transpiled/directives/octets/bytes.js.map +1 -0
- package/transpiled/directives/octets/index.d.ts +1 -1
- package/transpiled/directives/octets/index.js +2 -5
- package/transpiled/directives/octets/index.js.map +1 -1
- package/transpiled/directives/octets/schemas.d.ts +6 -10
- package/transpiled/directives/octets/schemas.js +8 -17
- package/transpiled/directives/octets/schemas.js.map +1 -1
- package/transpiled/directives/octets/types.d.ts +3 -1
- package/transpiled/directives/octets/types.js +1 -2
- package/transpiled/directives/octets/workflows/Execution.d.ts +9 -4
- package/transpiled/directives/octets/workflows/Execution.js +47 -15
- package/transpiled/directives/octets/workflows/Execution.js.map +1 -1
- package/transpiled/directives/octets/workflows/Workflow.d.ts +10 -5
- package/transpiled/directives/octets/workflows/Workflow.js +16 -14
- package/transpiled/directives/octets/workflows/Workflow.js.map +1 -1
- package/transpiled/directives/octets/workflows/index.d.ts +1 -1
- package/transpiled/directives/octets/workflows/index.js +1 -5
- package/transpiled/directives/octets/workflows/index.js.map +1 -1
- package/transpiled/directives/require/Directive.d.ts +2 -2
- package/transpiled/directives/require/Directive.js +1 -2
- package/transpiled/directives/require/Headers.d.ts +3 -3
- package/transpiled/directives/require/Headers.js +4 -8
- package/transpiled/directives/require/Headers.js.map +1 -1
- package/transpiled/directives/require/Require.d.ts +4 -4
- package/transpiled/directives/require/Require.js +8 -15
- package/transpiled/directives/require/Require.js.map +1 -1
- package/transpiled/directives/require/index.d.ts +1 -1
- package/transpiled/directives/require/index.js +2 -5
- package/transpiled/directives/require/index.js.map +1 -1
- package/transpiled/discovery.js +1 -2
- package/transpiled/exceptions.d.ts +1 -1
- package/transpiled/exceptions.js +16 -34
- package/transpiled/exceptions.js.map +1 -1
- package/transpiled/index.d.ts +7 -5
- package/transpiled/index.js +4 -11
- package/transpiled/index.js.map +1 -1
- package/transpiled/io.d.ts +1 -1
- package/transpiled/io.js +1 -2
- package/transpiled/manifest.d.ts +1 -1
- package/transpiled/manifest.js +22 -49
- package/transpiled/manifest.js.map +1 -1
- package/transpiled/root.d.ts +1 -1
- package/transpiled/root.js +22 -11
- package/transpiled/root.js.map +1 -1
- package/transpiled/schemas.d.ts +5 -3
- package/transpiled/schemas.js +8 -13
- package/transpiled/schemas.js.map +1 -1
- package/transpiled/service.d.ts +7 -0
- package/transpiled/service.js +74 -0
- package/transpiled/service.js.map +1 -0
- package/transpiled/shortcuts.d.ts +3 -0
- package/transpiled/shortcuts.js +13 -0
- package/transpiled/shortcuts.js.map +1 -0
- package/transpiled/userland.d.ts +39 -0
- package/transpiled/userland.js +7 -0
- package/transpiled/userland.js.map +1 -0
- package/tsconfig.json +2 -1
- package/tsconfig.tsbuildinfo +1 -0
- package/ui/dist/_app/env.js +1 -0
- package/ui/dist/_app/immutable/assets/0.Bl7vLmIK.css +2 -0
- package/ui/dist/_app/immutable/assets/2.BC0-Jhqu.css +1 -0
- package/ui/dist/_app/immutable/assets/inter-cyrillic-ext-wght-normal.BOeWTOD4.woff2 +0 -0
- package/ui/dist/_app/immutable/assets/inter-cyrillic-wght-normal.DqGufNeO.woff2 +0 -0
- package/ui/dist/_app/immutable/assets/inter-greek-ext-wght-normal.DlzME5K_.woff2 +0 -0
- package/ui/dist/_app/immutable/assets/inter-greek-wght-normal.CkhJZR-_.woff2 +0 -0
- package/ui/dist/_app/immutable/assets/inter-latin-ext-wght-normal.DO1Apj_S.woff2 +0 -0
- package/ui/dist/_app/immutable/assets/inter-latin-wght-normal.Dx4kXJAl.woff2 +0 -0
- package/ui/dist/_app/immutable/assets/inter-vietnamese-wght-normal.CBcvBZtf.woff2 +0 -0
- package/ui/dist/_app/immutable/chunks/B_pK3U1C.js +6 -0
- package/ui/dist/_app/immutable/chunks/Bjy-W4x2.js +81 -0
- package/ui/dist/_app/immutable/chunks/CiKbPLyY.js +1 -0
- package/ui/dist/_app/immutable/chunks/D9tE1yyO.js +1 -0
- package/ui/dist/_app/immutable/chunks/DjIYL2zC.js +3 -0
- package/ui/dist/_app/immutable/chunks/xihTtKlq.js +1 -0
- package/ui/dist/_app/immutable/entry/app.DMqmL4NY.js +2 -0
- package/ui/dist/_app/immutable/entry/start.CRe7HWBI.js +1 -0
- package/ui/dist/_app/immutable/nodes/0.D9m-6cbM.js +1 -0
- package/ui/dist/_app/immutable/nodes/1.Cgi_RcSO.js +1 -0
- package/ui/dist/_app/immutable/nodes/2.D_Cbxgz4.js +14 -0
- package/ui/dist/_app/version.json +1 -0
- package/ui/dist/apple-touch-icon.png +0 -0
- package/ui/dist/favicon-96x96.png +0 -0
- package/ui/dist/favicon.ico +0 -0
- package/ui/dist/index.html +66 -0
- package/components/identity.bans/operations/transit.d.ts +0 -14
- package/components/identity.bans/operations/transit.js.map +0 -1
- package/components/identity.bans/operations/tsconfig.tsbuildinfo +0 -1
- package/components/identity.basic/operations/authenticate.d.ts +0 -13
- package/components/identity.basic/operations/authenticate.js.map +0 -1
- package/components/identity.basic/operations/incept.d.ts +0 -12
- package/components/identity.basic/operations/incept.js.map +0 -1
- package/components/identity.basic/operations/transit.d.ts +0 -12
- package/components/identity.basic/operations/transit.js.map +0 -1
- package/components/identity.basic/operations/tsconfig.tsbuildinfo +0 -1
- package/components/identity.basic/operations/types.d.ts +0 -40
- package/components/identity.basic/operations/types.js +0 -3
- package/components/identity.basic/operations/types.js.map +0 -1
- package/components/identity.basic/source/types.ts +0 -44
- package/components/identity.federation/operations/authenticate.d.ts +0 -3
- package/components/identity.federation/operations/authenticate.js.map +0 -1
- package/components/identity.federation/operations/incept.d.ts +0 -11
- package/components/identity.federation/operations/incept.js.map +0 -1
- package/components/identity.federation/operations/lib/assertions-as-values.d.ts +0 -4
- package/components/identity.federation/operations/lib/assertions-as-values.js +0 -45
- package/components/identity.federation/operations/lib/assertions-as-values.js.map +0 -1
- package/components/identity.federation/operations/lib/jwt.d.ts +0 -19
- package/components/identity.federation/operations/lib/jwt.js +0 -136
- package/components/identity.federation/operations/lib/jwt.js.map +0 -1
- package/components/identity.federation/operations/tsconfig.tsbuildinfo +0 -1
- package/components/identity.federation/operations/types/configuration.d.ts +0 -15
- package/components/identity.federation/operations/types/configuration.js.map +0 -1
- package/components/identity.federation/operations/types/context.d.ts +0 -56
- package/components/identity.federation/operations/types/context.js.map +0 -1
- package/components/identity.federation/operations/types/entity.d.ts +0 -6
- package/components/identity.federation/operations/types/entity.js.map +0 -1
- package/components/identity.federation/operations/types/index.d.ts +0 -3
- package/components/identity.federation/operations/types/index.js.map +0 -1
- package/components/identity.federation/source/lib/assertions-as-values.ts +0 -19
- package/components/identity.federation/source/lib/jwt.test.ts +0 -56
- package/components/identity.federation/source/lib/jwt.ts +0 -170
- package/components/identity.roles/operations/grant.d.ts +0 -10
- package/components/identity.roles/operations/grant.js.map +0 -1
- package/components/identity.roles/operations/lib/Entity.d.ts +0 -5
- package/components/identity.roles/operations/lib/Entity.js.map +0 -1
- package/components/identity.roles/operations/list.d.ts +0 -2
- package/components/identity.roles/operations/list.js.map +0 -1
- package/components/identity.roles/operations/principal.d.ts +0 -13
- package/components/identity.roles/operations/principal.js.map +0 -1
- package/components/identity.roles/operations/tsconfig.tsbuildinfo +0 -1
- package/components/identity.tokens/operations/authenticate.d.ts +0 -9
- package/components/identity.tokens/operations/authenticate.js.map +0 -1
- package/components/identity.tokens/operations/decrypt.d.ts +0 -3
- package/components/identity.tokens/operations/decrypt.js.map +0 -1
- package/components/identity.tokens/operations/encrypt.d.ts +0 -8
- package/components/identity.tokens/operations/encrypt.js.map +0 -1
- package/components/identity.tokens/operations/revoke.d.ts +0 -2
- package/components/identity.tokens/operations/revoke.js.map +0 -1
- package/components/identity.tokens/operations/tsconfig.tsbuildinfo +0 -1
- package/components/identity.tokens/operations/types.d.ts +0 -46
- package/components/identity.tokens/operations/types.js +0 -3
- package/components/identity.tokens/operations/types.js.map +0 -1
- package/components/identity.tokens/source/types.ts +0 -55
- package/components/octets.storage/manifest.toa.yaml +0 -21
- package/components/octets.storage/operations/delete.js +0 -7
- package/components/octets.storage/operations/fetch.js +0 -46
- package/components/octets.storage/operations/get.js +0 -7
- package/components/octets.storage/operations/list.js +0 -7
- package/components/octets.storage/operations/store.js +0 -11
- package/cucumber.js +0 -7
- package/documentation/vary.md +0 -69
- package/entity.json +0 -0
- package/features/steps/IdP.ts +0 -154
- package/features/steps/components/octets.tester/operations/diversify.js +0 -14
- package/features/vary.feature +0 -252
- package/schemas/octets/context.cos.yaml +0 -1
- package/schemas/octets/fetch.cos.yaml +0 -3
- package/schemas/octets/list.cos.yaml +0 -2
- package/schemas/octets/permute.cos.yaml +0 -1
- package/schemas/octets/store.cos.yaml +0 -3
- package/source/directives/octets/Fetch.ts +0 -100
- package/source/directives/octets/List.ts +0 -72
- package/source/directives/octets/Store.ts +0 -126
- package/source/directives/vary/Directive.ts +0 -7
- package/source/directives/vary/Embed.ts +0 -68
- package/source/directives/vary/Vary.ts +0 -50
- package/source/directives/vary/embeddings/Authority.ts +0 -8
- package/source/directives/vary/embeddings/Embedding.ts +0 -7
- package/source/directives/vary/embeddings/Header.ts +0 -32
- package/source/directives/vary/embeddings/Language.ts +0 -31
- package/source/directives/vary/embeddings/Parameter.ts +0 -14
- package/source/directives/vary/embeddings/index.ts +0 -13
- package/source/directives/vary/index.ts +0 -3
- package/source/index.test.ts +0 -9
- package/transpiled/directives/octets/Fetch.d.ts +0 -18
- package/transpiled/directives/octets/Fetch.js +0 -92
- package/transpiled/directives/octets/Fetch.js.map +0 -1
- package/transpiled/directives/octets/List.d.ts +0 -16
- package/transpiled/directives/octets/List.js +0 -74
- package/transpiled/directives/octets/List.js.map +0 -1
- package/transpiled/directives/octets/Store.d.ts +0 -24
- package/transpiled/directives/octets/Store.js +0 -95
- package/transpiled/directives/octets/Store.js.map +0 -1
- package/transpiled/directives/vary/Directive.d.ts +0 -6
- package/transpiled/directives/vary/Directive.js +0 -3
- package/transpiled/directives/vary/Directive.js.map +0 -1
- package/transpiled/directives/vary/Embed.d.ts +0 -11
- package/transpiled/directives/vary/Embed.js +0 -51
- package/transpiled/directives/vary/Embed.js.map +0 -1
- package/transpiled/directives/vary/Properties.js +0 -16
- package/transpiled/directives/vary/Properties.js.map +0 -1
- package/transpiled/directives/vary/Vary.d.ts +0 -10
- package/transpiled/directives/vary/Vary.js +0 -36
- package/transpiled/directives/vary/Vary.js.map +0 -1
- package/transpiled/directives/vary/embeddings/Authority.d.ts +0 -5
- package/transpiled/directives/vary/embeddings/Authority.js +0 -10
- package/transpiled/directives/vary/embeddings/Authority.js.map +0 -1
- package/transpiled/directives/vary/embeddings/Embedding.d.ts +0 -6
- package/transpiled/directives/vary/embeddings/Embedding.js +0 -3
- package/transpiled/directives/vary/embeddings/Embedding.js.map +0 -1
- package/transpiled/directives/vary/embeddings/Header.d.ts +0 -7
- package/transpiled/directives/vary/embeddings/Header.js +0 -28
- package/transpiled/directives/vary/embeddings/Header.js.map +0 -1
- package/transpiled/directives/vary/embeddings/Language.d.ts +0 -7
- package/transpiled/directives/vary/embeddings/Language.js +0 -28
- package/transpiled/directives/vary/embeddings/Language.js.map +0 -1
- package/transpiled/directives/vary/embeddings/Parameter.d.ts +0 -7
- package/transpiled/directives/vary/embeddings/Parameter.js +0 -14
- package/transpiled/directives/vary/embeddings/Parameter.js.map +0 -1
- package/transpiled/directives/vary/embeddings/index.d.ts +0 -5
- package/transpiled/directives/vary/embeddings/index.js +0 -14
- package/transpiled/directives/vary/embeddings/index.js.map +0 -1
- package/transpiled/directives/vary/index.d.ts +0 -2
- package/transpiled/directives/vary/index.js +0 -6
- package/transpiled/directives/vary/index.js.map +0 -1
- package/transpiled/tsconfig.tsbuildinfo +0 -1
package/documentation/io.md
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# I/O restrictions
|
|
2
2
|
|
|
3
3
|
The Exposition comes with `io` directives to control access to the operation's input and output
|
|
4
|
-
properties.
|
|
4
|
+
properties, and to let an operation state the status of its reply.
|
|
5
5
|
|
|
6
|
-
##
|
|
6
|
+
## Input
|
|
7
7
|
|
|
8
8
|
The `io:input` optional directive contains a list of properties that are allowed to be specified in
|
|
9
9
|
the request body.
|
|
@@ -22,7 +22,7 @@ not in the list, the request will be rejected with a `400` status code.
|
|
|
22
22
|
> Therefore, `io:input` is only applicable to operations which input is an object or an
|
|
23
23
|
> array of objects.
|
|
24
24
|
|
|
25
|
-
##
|
|
25
|
+
## Output
|
|
26
26
|
|
|
27
27
|
The `io:output` mandatory directive contains a list of properties that are allowed to be included in
|
|
28
28
|
the response body.
|
|
@@ -53,4 +53,115 @@ GET:
|
|
|
53
53
|
io:output: false
|
|
54
54
|
```
|
|
55
55
|
|
|
56
|
-
Output restrictions are not applied to stream responses
|
|
56
|
+
Output restrictions are not applied to stream responses, nor to a reply the gateway built out of an
|
|
57
|
+
exception — an operation that returns an error is answered with a code and a message of the
|
|
58
|
+
gateway's own, and a list of permitted properties has nothing to say about those. A reply the
|
|
59
|
+
operation returned is restricted whatever status it carries, see [Status](#status).
|
|
60
|
+
|
|
61
|
+
## Status
|
|
62
|
+
|
|
63
|
+
The `io:status` optional directive names a property of the reply that carries the status of the
|
|
64
|
+
response. The property is removed from the body.
|
|
65
|
+
|
|
66
|
+
```yaml
|
|
67
|
+
POST:
|
|
68
|
+
endpoint: register
|
|
69
|
+
io:status: status
|
|
70
|
+
io:output: [client_id, client_name, error, error_description]
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
```javascript
|
|
74
|
+
return { status: 400, error: 'invalid_redirect_uri' }
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
```http
|
|
78
|
+
400 Bad Request
|
|
79
|
+
|
|
80
|
+
error: invalid_redirect_uri
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
A reply that does not carry the property is answered with the status it would have been. A property
|
|
84
|
+
that is not a number is an error.
|
|
85
|
+
|
|
86
|
+
This is for an outcome the operation knows and the transport does not — a protocol that states its
|
|
87
|
+
error as a body rather than as a status of its own, or a request that created where it might have
|
|
88
|
+
updated. Such an operation returns no error: both replies are its output, and `io:output` permits
|
|
89
|
+
the properties of both. An operation that does return an error is unaffected — that reply is the
|
|
90
|
+
gateway's, and is not restricted.
|
|
91
|
+
|
|
92
|
+
## Throttling
|
|
93
|
+
|
|
94
|
+
The `io:throttle` directive limits the rate of requests meeting the specified criteria.
|
|
95
|
+
|
|
96
|
+
```yaml
|
|
97
|
+
exposition:
|
|
98
|
+
/:
|
|
99
|
+
io:throttle:
|
|
100
|
+
key:
|
|
101
|
+
- route
|
|
102
|
+
- ip
|
|
103
|
+
condition:
|
|
104
|
+
status: 404
|
|
105
|
+
requests: 500
|
|
106
|
+
interval: 30
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
Requests are metered per `key`. A key may spend `requests` at once, and earns them back at a rate of
|
|
110
|
+
`requests` per `interval` seconds. A request carrying a key with nothing left to spend is answered
|
|
111
|
+
`429 Too Many Requests`, with a `Retry-After` saying how long until one would be admitted again.
|
|
112
|
+
`interval` is in seconds.
|
|
113
|
+
|
|
114
|
+
So `requests` is the burst, and `requests / interval` the rate it is repaid at. There is no window to
|
|
115
|
+
save a budget up in and spend twice across the edge of, and no lockout to sit out: a key that has
|
|
116
|
+
overspent is admitted again as soon as it has earned a single request back, and a client that keeps
|
|
117
|
+
asking meanwhile is not penalised for it.
|
|
118
|
+
|
|
119
|
+
`requests` is a budget for the **whole group** of gateway instances, not for one of them. Instances
|
|
120
|
+
reconcile through Redis on a timer, so they converge on one number rather than each enforcing the
|
|
121
|
+
limit separately. Between two of those, an instance goes on what it alone has spent — so the group
|
|
122
|
+
can overshoot by what the other instances admit within that window, and by no more. The window is a
|
|
123
|
+
tenth of `interval`, between a quarter of a second and two seconds, whatever `interval` is. Precise
|
|
124
|
+
per-request enforcement is not what this is for.
|
|
125
|
+
|
|
126
|
+
An instance that cannot reach Redis keeps throttling on what it has seen itself and keeps serving,
|
|
127
|
+
and reports what it could not the next time it gets through.
|
|
128
|
+
|
|
129
|
+
### Key components
|
|
130
|
+
|
|
131
|
+
What a request is metered against. Give one, or a list — a list keys on the combination, so
|
|
132
|
+
`[route, ip]` meters each address separately on each route.
|
|
133
|
+
|
|
134
|
+
- `ip` — the client address, as the request context resolved it. See [Client address](ip.md) for
|
|
135
|
+
where it is read from and why.
|
|
136
|
+
- `path` — the path the request came in on, `/users/1`.
|
|
137
|
+
- `route` — the route as declared, `/users/:id`. Every path matching the route shares one budget,
|
|
138
|
+
which `path` cannot do: keyed on `path`, walking ids is a way around the limit.
|
|
139
|
+
- `identity` — the authenticated identity. Requests carrying none share a single budget between
|
|
140
|
+
them, so pair it with `ip` if that matters.
|
|
141
|
+
- `segment: <name>` — the value bound to a named route segment, `1` for `:id` in `/users/:id`.
|
|
142
|
+
|
|
143
|
+
### Conditions
|
|
144
|
+
|
|
145
|
+
What is metered, as opposed to what it is metered against. A request that fails a condition is served
|
|
146
|
+
and costs nothing. Conditions are evaluated against the response, so they cannot decide whether to
|
|
147
|
+
refuse a request — only whether it is charged for, once it has been answered.
|
|
148
|
+
|
|
149
|
+
- `status: <code>` — charge only for responses with this status.
|
|
150
|
+
|
|
151
|
+
```yaml
|
|
152
|
+
io:throttle:
|
|
153
|
+
key: ip
|
|
154
|
+
condition:
|
|
155
|
+
status: 404
|
|
156
|
+
requests: 20
|
|
157
|
+
interval: 600
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
An address may probe for twenty missing paths at once, and thereafter for one every thirty seconds.
|
|
161
|
+
Requests that find something are served and never counted against it.
|
|
162
|
+
|
|
163
|
+
## Introspection
|
|
164
|
+
|
|
165
|
+
What these admit is what [`OPTIONS`](introspection.md) states: `io:input` restricts the input
|
|
166
|
+
schema, `io:output` the output schema, and a method declaring no `io:output` states no output at
|
|
167
|
+
all — nothing of the reply is sent.
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Client address
|
|
2
|
+
|
|
3
|
+
The address a request comes from is resolved once, into the request context, and read from there
|
|
4
|
+
by whatever keys on it: the meter of [failed authentications](identity.md#failed-authentications)
|
|
5
|
+
and the `ip` key of [`io:throttle`](io.md#key-components).
|
|
6
|
+
|
|
7
|
+
```yaml
|
|
8
|
+
# context.toa.yaml
|
|
9
|
+
|
|
10
|
+
exposition:
|
|
11
|
+
ip: cf-connecting-ip
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
`ip` names the header the address is read from. In production the gateway sits behind a load
|
|
15
|
+
balancer, an ingress or a CDN: the connection it accepts comes from that machine, so every client
|
|
16
|
+
shares one address and nothing tells them apart. The edge is the one that saw the client connect,
|
|
17
|
+
and it writes the client's address into a header of its own, `CF-Connecting-IP`, `X-Real-IP` or
|
|
18
|
+
`X-Forwarded-For`, depending on the infrastructure. A client may send any of these headers too, so
|
|
19
|
+
the gateway trusts none of them on its own: the deployment names the one its edge overwrites, and
|
|
20
|
+
where the header holds a list, the last value is the one the edge appended.
|
|
21
|
+
|
|
22
|
+
The connection's address is never used. Without `ip`, or for a request that does not carry the
|
|
23
|
+
header, the request has no address: the bouncer and a throttle keyed on `ip` let it through and
|
|
24
|
+
say so in the log, once per hundred seconds rather than once per request.
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
# HTTP context mapping
|
|
2
|
+
|
|
3
|
+
The `map` directive family is used to map HTTP request parts to operation call input properties.
|
|
4
|
+
|
|
5
|
+
[Features](../features/map.feature).
|
|
6
|
+
|
|
7
|
+
## TL;DR
|
|
8
|
+
|
|
9
|
+
```yaml
|
|
10
|
+
exposition:
|
|
11
|
+
/:group:
|
|
12
|
+
languages: [en, fr] # supported languages
|
|
13
|
+
GET:
|
|
14
|
+
map:authority: hostname # request authority (e.g., hostname)
|
|
15
|
+
map:language: lang # requested language
|
|
16
|
+
map:headers: # raw header values
|
|
17
|
+
token: x-access-token
|
|
18
|
+
map:buffer: body # unparsed request body
|
|
19
|
+
map:segments: # route parameters
|
|
20
|
+
group: group
|
|
21
|
+
map:claims: # Bearer token claims
|
|
22
|
+
address: email
|
|
23
|
+
verified: email_verified
|
|
24
|
+
endpoint: observe
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
The operation input type must be an object.
|
|
28
|
+
If the input already contains the specified keys, they will be overwritten.
|
|
29
|
+
|
|
30
|
+
## Authority
|
|
31
|
+
|
|
32
|
+
The `map:authority` directive maps the [authority identifier](authorities.md) to an operation call
|
|
33
|
+
input property specified by the directive value.
|
|
34
|
+
|
|
35
|
+
### Language
|
|
36
|
+
|
|
37
|
+
The `map:language` mapping sets the [most matching](https://github.com/jshttp/negotiator) language
|
|
38
|
+
code based on the `accept-language` request header and a list of supported languages defined by
|
|
39
|
+
the `map:languages` directive, and also adds `accept-language` to the `Vary` HTTP response header
|
|
40
|
+
value.
|
|
41
|
+
|
|
42
|
+
If none of the supported languages match, the first supported language is used.
|
|
43
|
+
|
|
44
|
+
> `map:languages` has a shorthand form: `languages: [en, fr]`.
|
|
45
|
+
|
|
46
|
+
## Header values
|
|
47
|
+
|
|
48
|
+
The `map:headers` directive maps the values of HTTP request headers to operation call input
|
|
49
|
+
properties.
|
|
50
|
+
The value of the directive is a map where keys are the names of the input properties and values are
|
|
51
|
+
the names of the HTTP request headers.
|
|
52
|
+
|
|
53
|
+
The names of these headers are then included in the `Vary` HTTP response header
|
|
54
|
+
and [Access-Control-Allow-Headers](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Headers)
|
|
55
|
+
of the [CORS](protocol.md#cors).
|
|
56
|
+
|
|
57
|
+
[Multiple header fields](https://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.2) are combined
|
|
58
|
+
as a comma-separated list.
|
|
59
|
+
|
|
60
|
+
## Raw body
|
|
61
|
+
|
|
62
|
+
The `map:buffer` directive maps the unparsed request body to an operation call input property.
|
|
63
|
+
The directive value is the name of the input property.
|
|
64
|
+
|
|
65
|
+
```yaml
|
|
66
|
+
/webhook:
|
|
67
|
+
POST:
|
|
68
|
+
map:buffer: body
|
|
69
|
+
map:headers:
|
|
70
|
+
signature: x-signature
|
|
71
|
+
endpoint: verify
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
The body is read from the request stream as raw bytes and delivered as a UTF-8 string.
|
|
75
|
+
|
|
76
|
+
Body parsing is bypassed, so the route does not depend on a supported `Content-Type` or format decoding. The request stream is consumed; a route with `map:buffer` cannot also receive a parsed body from the same request.
|
|
77
|
+
|
|
78
|
+
## Route parameters
|
|
79
|
+
|
|
80
|
+
The `map:segments` directive maps the values of route parameters to operation call input properties.
|
|
81
|
+
The value of the directive is a map where keys are the names of the input properties, and values are
|
|
82
|
+
the names of the route parameters.
|
|
83
|
+
|
|
84
|
+
Parameter name may be prefixed with `~`
|
|
85
|
+
to indicate that the parameter should not be available to the
|
|
86
|
+
remaining directives or used as criteria in the operation call.
|
|
87
|
+
|
|
88
|
+
```yaml
|
|
89
|
+
/:id/:tag:
|
|
90
|
+
POST:
|
|
91
|
+
map:segments:
|
|
92
|
+
id: id
|
|
93
|
+
tag: ~tag
|
|
94
|
+
endpoint: create
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
Wildcard routes are supported by using `**` as the parameter name.
|
|
98
|
+
|
|
99
|
+
```yaml
|
|
100
|
+
/path/to/**:
|
|
101
|
+
GET:
|
|
102
|
+
map:segments:
|
|
103
|
+
path: '**'
|
|
104
|
+
endpoint: observe
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
## Bearer token claims
|
|
108
|
+
|
|
109
|
+
The `map:claims` directive maps the values of
|
|
110
|
+
the [token claims](https://datatracker.ietf.org/doc/html/rfc7519#section-4).
|
|
111
|
+
The value of the directive is a map where keys are the names of the input properties and values are
|
|
112
|
+
the names of the claims.
|
|
113
|
+
|
|
114
|
+
If the claim is not present in the token or the request is not authenticated using
|
|
115
|
+
the [`Bearer` scheme](identity.md#bearer-scheme), the input properties are not set.
|
|
116
|
+
|
|
117
|
+
## Introspection
|
|
118
|
+
|
|
119
|
+
A property a mapping fills is not the caller's to send, so [`OPTIONS`](introspection.md) takes it
|
|
120
|
+
out of the input. `map:headers` states it under `headers`, naming the header it is read from, and
|
|
121
|
+
`map:segments` under `route`, named as the property rather than as the segment. The rest —
|
|
122
|
+
`map:claims`, `map:authority`, `map:language`, `map:buffer` — come from the request itself, and a
|
|
123
|
+
caller has nowhere to put one.
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
# Model Context Protocol
|
|
2
|
+
|
|
3
|
+
An application annotates it, and the methods it names as tools are what a model may call.
|
|
4
|
+
|
|
5
|
+
```yaml
|
|
6
|
+
exposition:
|
|
7
|
+
mcp:
|
|
8
|
+
name: Teapots
|
|
9
|
+
instructions: A pot is read by its id. A pot that is brewing cannot be emptied.
|
|
10
|
+
origins: [https://claude.ai]
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
<dl>
|
|
14
|
+
<dt><code>name</code></dt>
|
|
15
|
+
<dd>Required. What the server calls itself, which a client shows a user.</dd>
|
|
16
|
+
<dt><code>instructions</code></dt>
|
|
17
|
+
<dd>What a model is told before it calls anything here.</dd>
|
|
18
|
+
<dt><code>origins</code></dt>
|
|
19
|
+
<dd>Browser origins the endpoint answers. A request carrying an <code>Origin</code> that is not
|
|
20
|
+
listed is <code>403</code>, and an empty list admits none; a request carrying none is unaffected.</dd>
|
|
21
|
+
<dt><code>anonymous</code></dt>
|
|
22
|
+
<dd>Whether the endpoint answers without a credential. It does not unless it says so.</dd>
|
|
23
|
+
</dl>
|
|
24
|
+
|
|
25
|
+
Without the annotation `/.mcp` is a path like any other, and nothing answers there. The path is
|
|
26
|
+
fixed: one an application could choose is one it could collide with a route of its own.
|
|
27
|
+
|
|
28
|
+
## What a tool is
|
|
29
|
+
|
|
30
|
+
A tool is an RTD method that says it is one, named as the [procedure](rpc.md#the-name) it is:
|
|
31
|
+
|
|
32
|
+
```yaml
|
|
33
|
+
/pots:
|
|
34
|
+
GET:
|
|
35
|
+
mcp:tool: true
|
|
36
|
+
help:method: Every pot there is, newest first.
|
|
37
|
+
endpoint: enumerate
|
|
38
|
+
/hot:
|
|
39
|
+
GET:
|
|
40
|
+
query: { criteria: temperature=gt=80 }
|
|
41
|
+
mcp:tool: true
|
|
42
|
+
help:method:
|
|
43
|
+
title: Hot pots
|
|
44
|
+
description: The pots that are too hot to pour.
|
|
45
|
+
endpoint: enumerate
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
A default denies, and a tree holds everything an application serves — its identity endpoints, its
|
|
49
|
+
uploads, the machinery of the authorization flow the model already came through. Publishing all of
|
|
50
|
+
it would spend a model's context on what it has no business calling.
|
|
51
|
+
|
|
52
|
+
`mcp:tool` says only whether the method is published. What the tool is called and what it is for is
|
|
53
|
+
[`help:method`](help.md), which is what describes the method everywhere else as well — a tool a
|
|
54
|
+
model cannot read the purpose of is one it cannot choose, so declare one beside the other.
|
|
55
|
+
|
|
56
|
+
A declaration is inherited by everything below it, as every directive is, and the nearer one wins —
|
|
57
|
+
so a node publishes a subtree, and `mcp:tool: false` withdraws one method of it.
|
|
58
|
+
|
|
59
|
+
A route whose name a client [cannot spell](rpc.md#what-has-a-name) is refused where the directive
|
|
60
|
+
is built, rather than served as a tool that is quietly never listed.
|
|
61
|
+
|
|
62
|
+
`tools/list` answers every published method this caller may reach — a method whose directives refuse
|
|
63
|
+
them is not listed, and a route with [no name](rpc.md#what-has-a-name) is not either. `tools/call`
|
|
64
|
+
answers `404` to a name that is not published, whether or not a route would have taken it: what an
|
|
65
|
+
application did not publish is not reachable by guessing what it would have been called.
|
|
66
|
+
|
|
67
|
+
`annotations` are read from the verb: `GET` and `HEAD` are `readOnlyHint`, `DELETE` is
|
|
68
|
+
`destructiveHint`, `PUT` and `DELETE` are `idempotentHint`.
|
|
69
|
+
|
|
70
|
+
## What a tool takes
|
|
71
|
+
|
|
72
|
+
`inputSchema` is the procedure's `params`, which is what the method
|
|
73
|
+
[says of itself](introspection.md): a route variable by the name the template gives it, the
|
|
74
|
+
querystring under `query`, and what is left is the body. `io:input` restricts it, and a property
|
|
75
|
+
`map` fills is not there — a call carries no headers of its own.
|
|
76
|
+
|
|
77
|
+
`query` carries what selects records — `criteria`, `sort`, `limit`, `omit`, `search` — beside the
|
|
78
|
+
parameters the resource declares. `OPTIONS` states only the latter, because the former is the same
|
|
79
|
+
of every queryable resource; here it is stated, because here it is something the caller sends.
|
|
80
|
+
|
|
81
|
+
```yaml
|
|
82
|
+
type: object
|
|
83
|
+
properties:
|
|
84
|
+
id: { type: string, pattern: ^[a-fA-F0-9]{32}$ }
|
|
85
|
+
query:
|
|
86
|
+
type: object
|
|
87
|
+
properties:
|
|
88
|
+
criteria: { type: string }
|
|
89
|
+
sort: { type: string }
|
|
90
|
+
limit: { type: integer, minimum: 1, maximum: 100, default: 10 }
|
|
91
|
+
omit: { type: integer, minimum: 0, maximum: 1000, default: 0 }
|
|
92
|
+
required: [id]
|
|
93
|
+
additionalProperties: false
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
## What a tool answers
|
|
97
|
+
|
|
98
|
+
`content` carries one `text` block holding the reply's JSON, and `structuredContent` the reply
|
|
99
|
+
itself. A reply of nothing is an empty `content`.
|
|
100
|
+
|
|
101
|
+
`outputSchema` is what the operation declares, restricted by `io:output`. An operation's `output` is
|
|
102
|
+
optional and normalizes to `{}`, which describes nothing, and none is stated for it — an
|
|
103
|
+
application that wants the schema declares the operation's `output`.
|
|
104
|
+
|
|
105
|
+
An operation that refuses answers a result with `isError: true` carrying its message, not an error
|
|
106
|
+
of the protocol: it is something a model reads and may correct itself by.
|
|
107
|
+
|
|
108
|
+
## Two revisions
|
|
109
|
+
|
|
110
|
+
Both are answered from one endpoint that remembers nothing between requests.
|
|
111
|
+
[`2026-07-28`](https://modelcontextprotocol.io/specification/2026-07-28) carries the version and
|
|
112
|
+
the client's capabilities in every request; `2025-11-25` opens with `initialize`. Which one a
|
|
113
|
+
request is, is read from `MCP-Protocol-Version`, or from
|
|
114
|
+
`_meta['io.modelcontextprotocol/protocolVersion']` where the header is absent; `initialize` is one
|
|
115
|
+
by itself, and a request naming no version is of a revision that sent none.
|
|
116
|
+
|
|
117
|
+
| method | |
|
|
118
|
+
| --------------------------- | -------------------------------------------------------------------------- |
|
|
119
|
+
| `server/discover` | what is served, and who serves it |
|
|
120
|
+
| `tools/list` | every tool this caller may reach, in a stable order |
|
|
121
|
+
| `tools/call` | the call the tool is |
|
|
122
|
+
| `initialize` | the same as `server/discover`, in the shape a client of `2025-11-25` reads |
|
|
123
|
+
| `notifications/initialized` | `202`, and nothing done |
|
|
124
|
+
| `ping` | `{}` |
|
|
125
|
+
|
|
126
|
+
`POST` only, one message per request; `GET` and `DELETE` are `405`. An `Mcp-Session-Id` is ignored
|
|
127
|
+
and none is minted, a `Last-Event-ID` is ignored, and `accept` is negotiated as everywhere else.
|
|
128
|
+
|
|
129
|
+
Of the modern revision, `MCP-Protocol-Version` and `Mcp-Method` are required, and `Mcp-Name` for a
|
|
130
|
+
`tools/call`; each must say what the body says. `_meta` states the protocol version and the client's
|
|
131
|
+
capabilities. Every result carries `resultType` and names the server in its own `_meta`, and a
|
|
132
|
+
`server/discover` or a `tools/list` carries how long it may be held: half an hour, `public` for the
|
|
133
|
+
first and `private` for the second, which is filtered by the identity that asked.
|
|
134
|
+
|
|
135
|
+
Neither `listChanged` nor a subscription is declared: both are a stream held open, and this endpoint
|
|
136
|
+
holds none.
|
|
137
|
+
|
|
138
|
+
## Authorization
|
|
139
|
+
|
|
140
|
+
The endpoint is a protected resource, and an application advertises it as one:
|
|
141
|
+
|
|
142
|
+
```yaml
|
|
143
|
+
exposition:
|
|
144
|
+
oauth:
|
|
145
|
+
authorize: https://app.example.com/oauth/authorize
|
|
146
|
+
resources: ['/.mcp']
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
Its RFC 9728 document is then read at `/.well-known/oauth-protected-resource/.mcp`, and the
|
|
150
|
+
canonical URI of the resource is `https://api.example.com/.mcp`. See [OAuth](oauth.md).
|
|
151
|
+
|
|
152
|
+
A request without a credential is `401`, carrying the challenge that names that document — which is
|
|
153
|
+
where the flow starts. A call the identity is not authorized to make is `403` with
|
|
154
|
+
`error="insufficient_scope"`. Each tool is authorized as the resource it is, against the path and
|
|
155
|
+
the verb its name states.
|
|
156
|
+
|
|
157
|
+
A route that is [`anonymous`](access.md#anonymous) is reached here whatever the client presented:
|
|
158
|
+
the rule that refuses a credentialed request is about a cacheable reply, and what a tool answers is
|
|
159
|
+
not one. So a resource that is public over HTTP is a public tool, and nothing in a manifest has to
|
|
160
|
+
say it twice.
|
|
161
|
+
|
|
162
|
+
## What refuses
|
|
163
|
+
|
|
164
|
+
| | |
|
|
165
|
+
| -------- | ------------------------------------------------------ |
|
|
166
|
+
| `-32700` | the body is not readable |
|
|
167
|
+
| `-32600` | the body is not one JSON-RPC message |
|
|
168
|
+
| `-32601` | no method of that name, at `404` |
|
|
169
|
+
| `-32602` | the arguments do not fit, or `_meta` states too little |
|
|
170
|
+
| `-32603` | anything the gateway did not mean to answer |
|
|
171
|
+
| `-32020` | a header says one thing and the body another |
|
|
172
|
+
| `-32022` | a revision neither served, naming both |
|
|
173
|
+
|
|
174
|
+
The codes MCP reserves for itself are `-32020` to `-32099`, and it has an implementation use none of
|
|
175
|
+
`-32000` to `-32019` — which is where [JSON-RPC](rpc.md#what-refuses) has this gateway's own, so none
|
|
176
|
+
of those is answered here.
|
|
177
|
+
|
|
178
|
+
## References
|
|
179
|
+
|
|
180
|
+
- [The specification](https://modelcontextprotocol.io/specification/2026-07-28)
|
|
181
|
+
- [JSON-RPC](rpc.md), where a procedure gets its name
|
|
182
|
+
- [Introspection](introspection.md), which is what a tool's schemas are
|
|
183
|
+
- [Features](../features/mcp.feature)
|
|
Binary file
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# Distributed Peer Discovery
|
|
2
|
+
|
|
3
|
+
## Problem
|
|
4
|
+
|
|
5
|
+
Modulo partitioning algorithm `taks.id % replicas == index` requires
|
|
6
|
+
to know the number of task processing instances running in the cluster,
|
|
7
|
+
and the own index of the current instance.
|
|
8
|
+
|
|
9
|
+
## Forces
|
|
10
|
+
|
|
11
|
+
1. Static configuration is not an option (due to dynamic scaling / failover).
|
|
12
|
+
2. In a distributed system, there is no concept of a _global current time_.
|
|
13
|
+
|
|
14
|
+
## Solution
|
|
15
|
+
|
|
16
|
+
An algorithm that emits `(index, replicas)` once per `interval` seconds, using common Redis
|
|
17
|
+
key and atomic increment.
|
|
18
|
+
|
|
19
|
+
Define the following parameters:
|
|
20
|
+
|
|
21
|
+
- `name`: a name of the task processing (e.g. `mail-sender`)
|
|
22
|
+
- `interval`: indexing interval that is deliberately greater than the expected clock skew among
|
|
23
|
+
instances
|
|
24
|
+
|
|
25
|
+
At the start of each `interval` in [Unix epoch](https://en.wikipedia.org/wiki/Unix_time):
|
|
26
|
+
|
|
27
|
+
1. Calculate an ordinal number of the current interval: `number = ceil(now() / interval)`
|
|
28
|
+
2. Compose a `key` as `{name}:{number}`
|
|
29
|
+
3. Atomically increment a `key` in Redis ([INCR](https://redis.io/docs/latest/commands/incr/))
|
|
30
|
+
4. If `index` is defined (see 5)
|
|
31
|
+
|
|
32
|
+
- get the value of previous key `{name}:{number-1}` as `replicas`
|
|
33
|
+
- if the `replicas` is defined, emit `(index, replicas)` **algorithm result**
|
|
34
|
+
|
|
35
|
+
5. Store the response (3) in `index`.
|
|
36
|
+
|
|
37
|
+
## Safe index transition
|
|
38
|
+
|
|
39
|
+
If the `index` or `replicas` changes, the algorithm consumer must stop consuming new tasks
|
|
40
|
+
and execute _safe index transition_, to prevent task duplication or loss.
|
|
41
|
+
|
|
42
|
+
The transition can be implemented in a manner similar to the described algorithm, using a dedicated
|
|
43
|
+
`{name}:transition` key.
|
|
44
|
+
However, this process is considered outside the scope of this document.
|
|
45
|
+
|
|
46
|
+
## Extension
|
|
47
|
+
|
|
48
|
+
If the system clocks are too precisely synchronized (skew is less than a round-trip time to Redis),
|
|
49
|
+
this may result in continuous [index transitions](#safe-index-transition).
|
|
50
|
+
|
|
51
|
+
To mitigate this, the algorithm can be extended with a random delay:
|
|
52
|
+
|
|
53
|
+
1. Before starting the algorithm, define a random constant clock skew, significantly smaller than
|
|
54
|
+
`interval`: `skew = random() * (interval / 2)`
|
|
55
|
+
2. Start the algorithm at each `interval + skew`.
|
|
56
|
+
|
|
57
|
+
## Caveats
|
|
58
|
+
|
|
59
|
+
- The first result will become known between `interval` and `interval × 2` seconds.
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
# Decentralized Request Throttling
|
|
2
|
+
|
|
3
|
+
> **Superseded.** The design below was never implemented. `io:throttle` is now a
|
|
4
|
+
> [GCRA](https://en.wikipedia.org/wiki/Generic_cell_rate_algorithm) deciding in each process, with
|
|
5
|
+
> its state periodically reconciled through Redis by way of the `atom` aspect's `meter`. It
|
|
6
|
+
> answers the same forces the same way — decide locally, reconcile in the background, never fail the
|
|
7
|
+
> request path — and the section below records what it does instead. The problem statement and the
|
|
8
|
+
> forces have not changed.
|
|
9
|
+
|
|
10
|
+
## Problem
|
|
11
|
+
|
|
12
|
+
To prevent an unnecessary load, API requests should be throttled when made maliciously or due to an
|
|
13
|
+
error.
|
|
14
|
+
|
|
15
|
+
## Context
|
|
16
|
+
|
|
17
|
+
1. The [API Gateway](https://microservices.io/patterns/apigateway.html) of a distributed system runs
|
|
18
|
+
in multiple instances, each with an in-memory state that does not allow tracking the current
|
|
19
|
+
quota usage.
|
|
20
|
+
2. Precise quota enforcement (per request, per second) is not critical; the goal is to prevent
|
|
21
|
+
significant overuse.
|
|
22
|
+
3. Quota configuration is static.
|
|
23
|
+
|
|
24
|
+
## Forces
|
|
25
|
+
|
|
26
|
+
1. No per request IO is allowed (centralized solutions do not fit).
|
|
27
|
+
2. In a distributed system, there is no concept of a _global current time_.
|
|
28
|
+
3. Failure to retrieve the quota state should not result in Gateway failure.
|
|
29
|
+
|
|
30
|
+
## Solution
|
|
31
|
+
|
|
32
|
+
Implement in-memory quotas in each process, periodically synchronizing them asynchronously using
|
|
33
|
+
Redis.
|
|
34
|
+
|
|
35
|
+
Consider a basic throttling rule:
|
|
36
|
+
|
|
37
|
+
1. No more than `MAX_REQUESTS` within `INTERVAL` time for any API route (`KEY`).
|
|
38
|
+
2. If the limit is exceeded, block requests to `KEY` for `COOLDOWN` seconds.
|
|
39
|
+
|
|
40
|
+
### Concept
|
|
41
|
+
|
|
42
|
+
1. Divide `INTERVAL` into `N` spans (`N >= 2`).
|
|
43
|
+
2. At the end of each span,
|
|
44
|
+
atomically increment the value in Redis ([INCRBY](https://redis.io/docs/latest/commands/incrby/))
|
|
45
|
+
by the number of requests received for each `KEY`, using a key composed of the `KEY` and the
|
|
46
|
+
current ordinal number of `INTERVAL`
|
|
47
|
+
in [Unix epoch](https://en.wikipedia.org/wiki/Unix_time).
|
|
48
|
+
3. If the returned value exceeds `MAX_REQUESTS`, block access to `KEY`, remove after `COOLDOWN`.
|
|
49
|
+
4. If the write operation fails and `REQUESTS > MAX_REQUESTS / N` (i.e., the quota is exceeded
|
|
50
|
+
locally), block access to `KEY`, remove after `COOLDOWN`.
|
|
51
|
+
|
|
52
|
+
Each API Gateway instance will generate the `KEY` based on its own local time,
|
|
53
|
+
which, in general, will lead to simultaneous writes (from Redis’s local time perspective) to
|
|
54
|
+
different `KEY`s. However, the total contribution of each node to each `KEY` will correspond to the
|
|
55
|
+
actual request rate experienced by that node.
|
|
56
|
+
|
|
57
|
+
<img src="desync.jpg" alt="Desynchronization" />
|
|
58
|
+
|
|
59
|
+
Dividing the `INTERVAL` into spans smooths the desynchronization effect.
|
|
60
|
+
|
|
61
|
+
### Extension
|
|
62
|
+
|
|
63
|
+
Introduce `nodes`, the approximate number of active API Gateway instances, to improve the algorithm.
|
|
64
|
+
|
|
65
|
+
1. Initially, `nodes` equals to `1`.
|
|
66
|
+
2. During each `INTERVAL`, sum the total request count for each `KEY`, keep current and previous
|
|
67
|
+
values.
|
|
68
|
+
3. At the end of each interval:
|
|
69
|
+
|
|
70
|
+
- Read the value from the `KEY` for the previous interval. At this point, it is assumed that all
|
|
71
|
+
nodes have switched to the next interval.
|
|
72
|
+
- Update the `nodes` value by dividing response form Redis by the number of `REQUESTS` counted for
|
|
73
|
+
the previous interval.
|
|
74
|
+
- Set the previous value to the current value.
|
|
75
|
+
- Set the current value to `0`
|
|
76
|
+
|
|
77
|
+
4. Update point 4 of the [Concept](#concept): `REQUESTS * nodes > MAX_REQUESTS / N`.
|
|
78
|
+
This will increase the precision of the local quota enforcement.
|
|
79
|
+
5. Add a new step: if `REQUESTS * nodes > MAX_REQUESTS`, block access to `KEY`, remove after
|
|
80
|
+
`COOLDOWN`.
|
|
81
|
+
|
|
82
|
+
When nodes are added or removed, the algorithm will adapt in the upcoming intervals.
|
|
83
|
+
|
|
84
|
+
### Caveats
|
|
85
|
+
|
|
86
|
+
1. In the worst case scenario (really, really unlikely), the quota is exceeded by `MAX_REQUESTS / N`
|
|
87
|
+
in a span on each node.
|
|
88
|
+
2. Time desynchronization between nodes should be insignificant for the selected `INTERVAL` (i.e.,
|
|
89
|
+
`INTERVAL` >> desync). See Extension point 3.
|
|
90
|
+
|
|
91
|
+
## What was implemented instead
|
|
92
|
+
|
|
93
|
+
Windows were dropped for a GCRA. A key holds one theoretical arrival time: the moment it would be
|
|
94
|
+
back at zero if nothing more arrived. An admitted request pushes it `interval / requests`
|
|
95
|
+
milliseconds further out, time drags it back, and a request is admitted while it stays within
|
|
96
|
+
`interval` of now. So `requests` is what a key may spend at once and `requests / interval` the rate
|
|
97
|
+
it earns back, with no window edge to burst across and no lockout to time out of — which is why
|
|
98
|
+
`cooldown` is gone.
|
|
99
|
+
|
|
100
|
+
Deciding reads nothing but a local map, so the request path stays free of I/O, exactly as force 1
|
|
101
|
+
demands. What the other gateways have spent arrives on a timer, as **debt**: the milliseconds a key
|
|
102
|
+
owes, draining at a millisecond a millisecond. Debt is the right thing to send for two reasons.
|
|
103
|
+
|
|
104
|
+
1. It is a duration, not a moment, so processes exchanging it need not agree on the time — force 2,
|
|
105
|
+
answered by not needing an answer. The one clock that matters is Redis', read inside the script.
|
|
106
|
+
2. It is additive in admissions, so a process reports only its own increments and Redis keeps the
|
|
107
|
+
running total. Nothing has to be divided by a number of nodes, which is as well: the gateway
|
|
108
|
+
cannot observe how many of it there are.
|
|
109
|
+
|
|
110
|
+
The consequences worth knowing:
|
|
111
|
+
|
|
112
|
+
- **Reconciling is decoupled from `interval`.** The timer runs at a tenth of `interval`, clamped
|
|
113
|
+
between 250ms and 2s, so a minute-long budget is no staler than a second-long one. The overshoot
|
|
114
|
+
is bounded by what the other instances admit within one tick — the caveat that replaces the old
|
|
115
|
+
note's `MAX_REQUESTS / N` per span.
|
|
116
|
+
- **The cost is one round trip a tick**, not one per key. Every quota in the process flushes into a
|
|
117
|
+
single script call, which matters because a limiter keyed on `ip` watches as many keys as it has
|
|
118
|
+
clients.
|
|
119
|
+
- **Redis keys expire on their own**, after the debt on them plus a grace, so nothing sweeps them.
|
|
120
|
+
- **Failure degrades, as force 3 demands.** A tick that cannot reach Redis leaves its debt to the
|
|
121
|
+
next one rather than losing it; until then the instance throttles on what it alone has seen, and
|
|
122
|
+
keeps serving.
|