@apifuse/provider-sdk 2.2.0-beta.7 → 2.2.0-beta.70
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/AUTHORING.md +943 -51
- package/CHANGELOG.md +273 -1
- package/LICENSE +21 -0
- package/README.md +117 -29
- package/SUBMISSION.md +3 -2
- package/bin/apifuse-check.ts +293 -13
- package/bin/apifuse-dev.ts +42 -19
- package/bin/apifuse-migrate-deployment.ts +200 -0
- package/bin/apifuse-migrate-operation-declaration.ts +55 -0
- package/bin/apifuse-migrate-shape.ts +202 -0
- package/bin/apifuse-pack-check.ts +19 -6
- package/bin/apifuse-pack-smoke.ts +57 -2
- package/bin/apifuse-pack-types.ts +736 -38
- package/bin/apifuse-perf.ts +59 -23
- package/bin/apifuse-record.ts +923 -94
- package/bin/apifuse-submit-check.ts +2313 -281
- package/bin/apifuse-test.ts +3 -1
- package/bin/submit-check-delimited-text.ts +50 -0
- package/dist/auth-turn/index.d.ts +3 -3
- package/dist/auth-turn/index.js +1 -1
- package/dist/auth.d.ts +14 -0
- package/dist/auth.js +67 -0
- package/dist/ceremonies/index.d.ts +16 -0
- package/dist/ceremonies/index.js +141 -36
- package/dist/cli/commands.d.ts +1 -1
- package/dist/cli/commands.js +30 -0
- package/dist/cli/create.d.ts +1 -1
- package/dist/cli/create.js +8 -2
- package/dist/cli/deployment-intent.d.ts +178 -0
- package/dist/cli/deployment-intent.js +277 -0
- package/dist/cli/local-connection.d.ts +111 -0
- package/dist/cli/local-connection.js +151 -0
- package/dist/cli/migrate-deployment-intent.d.ts +132 -0
- package/dist/cli/migrate-deployment-intent.js +1552 -0
- package/dist/cli/migrate-operation-declaration.d.ts +70 -0
- package/dist/cli/migrate-operation-declaration.js +2206 -0
- package/dist/cli/migrate-operation-shape.d.ts +44 -0
- package/dist/cli/migrate-operation-shape.js +113 -0
- package/dist/cli/migrate-provider-shape.d.ts +56 -0
- package/dist/cli/migrate-provider-shape.js +580 -0
- package/dist/cli/resolver-runtime.d.ts +21 -0
- package/dist/cli/resolver-runtime.js +31 -0
- package/dist/cli/templates/provider/.agents/skills/health-checks-and-fail-closed/SKILL.md.tpl +141 -23
- package/dist/cli/templates/provider/Dockerfile.tpl +1 -1
- package/dist/cli/templates/provider/README.md.tpl +41 -19
- package/dist/cli/templates/provider/index.ts.tpl +6 -3
- package/dist/cli/templates/provider/operations/ping.ts.tpl +4 -1
- package/dist/cli/templates/provider/provider.json.tpl +6 -0
- package/dist/config/loader.d.ts +202 -16
- package/dist/config/loader.js +491 -141
- package/dist/contract-serialization.js +4 -8
- package/dist/contract-types.d.ts +12 -5
- package/dist/contract.js +24 -10
- package/dist/declaration-validation.d.ts +34 -0
- package/dist/declaration-validation.js +305 -0
- package/dist/define.d.ts +71 -29
- package/dist/define.js +807 -69
- package/dist/dev.d.ts +5 -0
- package/dist/dev.js +8 -1
- package/dist/engine.d.ts +129 -0
- package/dist/engine.js +209 -0
- package/dist/error-observability.d.ts +7 -0
- package/dist/error-observability.js +61 -0
- package/dist/error-resolution.d.ts +18 -0
- package/dist/error-resolution.js +243 -0
- package/dist/errors.d.ts +74 -0
- package/dist/errors.js +99 -0
- package/dist/fixture-sanitization.d.ts +28 -0
- package/dist/fixture-sanitization.js +371 -0
- package/dist/handle-meta.d.ts +90 -0
- package/dist/handle-meta.js +73 -0
- package/dist/handle.d.ts +226 -0
- package/dist/handle.js +345 -0
- package/dist/health-scenario.d.ts +1901 -0
- package/dist/health-scenario.js +653 -0
- package/dist/i18n/catalog.js +21 -1
- package/dist/i18n/error-messages.d.ts +86 -0
- package/dist/i18n/error-messages.js +192 -0
- package/dist/i18n/index.d.ts +1 -0
- package/dist/i18n/index.js +1 -0
- package/dist/i18n/keys.d.ts +12 -0
- package/dist/i18n/keys.js +76 -5
- package/dist/i18n/operation-locale-namespace.d.ts +2 -0
- package/dist/i18n/operation-locale-namespace.js +7 -0
- package/dist/index.d.ts +40 -15
- package/dist/index.js +29 -11
- package/dist/lint.d.ts +43 -11
- package/dist/lint.js +2512 -177
- package/dist/native-address.d.ts +43 -0
- package/dist/native-address.js +281 -0
- package/dist/native-egress-policy.d.ts +31 -0
- package/dist/native-egress-policy.js +288 -0
- package/dist/observability.d.ts +5 -2
- package/dist/observability.js +48 -1
- package/dist/provider.d.ts +18 -8
- package/dist/provider.js +11 -6
- package/dist/runtime/auth-flow.d.ts +6 -1
- package/dist/runtime/auth-flow.js +8 -0
- package/dist/runtime/bounded-expiring-map.d.ts +21 -0
- package/dist/runtime/bounded-expiring-map.js +64 -0
- package/dist/runtime/browser-telemetry-binding.d.ts +5 -0
- package/dist/runtime/browser-telemetry-binding.js +83 -0
- package/dist/runtime/browser-telemetry.d.ts +76 -0
- package/dist/runtime/browser-telemetry.js +165 -0
- package/dist/runtime/browser.d.ts +4 -0
- package/dist/runtime/browser.js +688 -83
- package/dist/runtime/cache-telemetry.d.ts +71 -0
- package/dist/runtime/cache-telemetry.js +177 -0
- package/dist/runtime/cache.d.ts +3 -0
- package/dist/runtime/cache.js +245 -23
- package/dist/runtime/capability-response.d.ts +3 -0
- package/dist/runtime/capability-response.js +56 -0
- package/dist/runtime/capability-telemetry.d.ts +46 -0
- package/dist/runtime/capability-telemetry.js +68 -0
- package/dist/runtime/chrome149-header-order.d.ts +58 -0
- package/dist/runtime/chrome149-header-order.js +289 -0
- package/dist/runtime/diagnostic-env-values.d.ts +5 -0
- package/dist/runtime/diagnostic-env-values.js +57 -0
- package/dist/runtime/diagnostic-env.d.ts +14 -0
- package/dist/runtime/diagnostic-env.js +44 -0
- package/dist/runtime/diagnostic-redactor.d.ts +54 -0
- package/dist/runtime/diagnostic-redactor.js +571 -0
- package/dist/runtime/egress-lease.d.ts +65 -0
- package/dist/runtime/egress-lease.js +236 -0
- package/dist/runtime/engine-mode.d.ts +74 -0
- package/dist/runtime/engine-mode.js +152 -0
- package/dist/runtime/env.js +14 -1
- package/dist/runtime/executor.d.ts +3 -2
- package/dist/runtime/executor.js +23 -26
- package/dist/runtime/handle-wordlist.d.ts +43 -0
- package/dist/runtime/handle-wordlist.js +256 -0
- package/dist/runtime/handle.d.ts +71 -0
- package/dist/runtime/handle.js +908 -0
- package/dist/runtime/http-telemetry-binding.d.ts +10 -0
- package/dist/runtime/http-telemetry-binding.js +152 -0
- package/dist/runtime/http-telemetry-guard.d.ts +16 -0
- package/dist/runtime/http-telemetry-guard.js +202 -0
- package/dist/runtime/http-telemetry.d.ts +104 -0
- package/dist/runtime/http-telemetry.js +190 -0
- package/dist/runtime/http.d.ts +34 -0
- package/dist/runtime/http.js +680 -121
- package/dist/runtime/insights.js +2 -2
- package/dist/runtime/instrumentation.d.ts +2 -2
- package/dist/runtime/instrumentation.js +462 -19
- package/dist/runtime/native-network-errors.d.ts +33 -0
- package/dist/runtime/native-network-errors.js +69 -0
- package/dist/runtime/native-network.d.ts +105 -0
- package/dist/runtime/native-network.js +1433 -0
- package/dist/runtime/native-telemetry.d.ts +142 -0
- package/dist/runtime/native-telemetry.js +231 -0
- package/dist/runtime/ocr-telemetry.d.ts +82 -0
- package/dist/runtime/ocr-telemetry.js +192 -0
- package/dist/runtime/ocr.d.ts +29 -0
- package/dist/runtime/ocr.js +468 -0
- package/dist/runtime/otlp.d.ts +71 -2
- package/dist/runtime/otlp.js +398 -16
- package/dist/runtime/provider.d.ts +7 -0
- package/dist/runtime/provider.js +14 -0
- package/dist/runtime/proxy-errors.js +6 -2
- package/dist/runtime/proxy-nodemaven.d.ts +56 -0
- package/dist/runtime/proxy-nodemaven.js +147 -0
- package/dist/runtime/proxy-retry-policy.d.ts +4 -1
- package/dist/runtime/proxy-retry-policy.js +11 -2
- package/dist/runtime/proxy-telemetry.d.ts +133 -3
- package/dist/runtime/proxy-telemetry.js +218 -70
- package/dist/runtime/redirect-hop-headers.d.ts +19 -0
- package/dist/runtime/redirect-hop-headers.js +58 -0
- package/dist/runtime/redirects.d.ts +61 -0
- package/dist/runtime/redirects.js +149 -0
- package/dist/runtime/redis.d.ts +1 -1
- package/dist/runtime/redis.js +4 -2
- package/dist/runtime/request-options.d.ts +75 -1
- package/dist/runtime/request-options.js +588 -0
- package/dist/runtime/request-telemetry.d.ts +70 -0
- package/dist/runtime/request-telemetry.js +229 -0
- package/dist/runtime/resolver-config.d.ts +13 -0
- package/dist/runtime/resolver-config.js +14 -0
- package/dist/runtime/resolver-public.d.ts +3 -0
- package/dist/runtime/resolver-public.js +1 -0
- package/dist/runtime/resolver-runtime-options.d.ts +14 -0
- package/dist/runtime/resolver-runtime-options.js +33 -0
- package/dist/runtime/resolver-shared.d.ts +24 -0
- package/dist/runtime/resolver-shared.js +69 -0
- package/dist/runtime/resolver-span-attributes.d.ts +34 -0
- package/dist/runtime/resolver-span-attributes.js +93 -0
- package/dist/runtime/resolver-telemetry.d.ts +135 -0
- package/dist/runtime/resolver-telemetry.js +204 -0
- package/dist/runtime/resolver-usage.d.ts +32 -0
- package/dist/runtime/resolver-usage.js +54 -0
- package/dist/runtime/resolver-vendors/bindings.d.ts +53 -0
- package/dist/runtime/resolver-vendors/bindings.js +45 -0
- package/dist/runtime/resolver-vendors/browser.d.ts +24 -0
- package/dist/runtime/resolver-vendors/browser.js +423 -0
- package/dist/runtime/resolver-vendors/capsolver.d.ts +22 -0
- package/dist/runtime/resolver-vendors/capsolver.js +544 -0
- package/dist/runtime/resolver-vendors/hosts.d.ts +23 -0
- package/dist/runtime/resolver-vendors/hosts.js +68 -0
- package/dist/runtime/resolver-vendors/hypersolutions.d.ts +27 -0
- package/dist/runtime/resolver-vendors/hypersolutions.js +369 -0
- package/dist/runtime/resolver-vendors/twocaptcha.d.ts +24 -0
- package/dist/runtime/resolver-vendors/twocaptcha.js +425 -0
- package/dist/runtime/resolver-vendors/types.d.ts +125 -0
- package/dist/runtime/resolver-vendors/types.js +106 -0
- package/dist/runtime/resolver.d.ts +79 -0
- package/dist/runtime/resolver.js +1094 -0
- package/dist/runtime/state-telemetry.d.ts +79 -0
- package/dist/runtime/state-telemetry.js +194 -0
- package/dist/runtime/state.d.ts +10 -1
- package/dist/runtime/state.js +322 -82
- package/dist/runtime/stealth-akamai-sbsd.d.ts +54 -0
- package/dist/runtime/stealth-akamai-sbsd.js +142 -0
- package/dist/runtime/stealth-cookies.d.ts +24 -0
- package/dist/runtime/stealth-cookies.js +131 -0
- package/dist/runtime/stealth-owned-headers.d.ts +39 -0
- package/dist/runtime/stealth-owned-headers.js +57 -0
- package/dist/runtime/stealth-telemetry.d.ts +92 -0
- package/dist/runtime/stealth-telemetry.js +179 -0
- package/dist/runtime/stealth.d.ts +45 -6
- package/dist/runtime/stealth.js +1775 -320
- package/dist/runtime/stt-telemetry.d.ts +77 -0
- package/dist/runtime/stt-telemetry.js +176 -0
- package/dist/runtime/stt.js +18 -19
- package/dist/runtime/timeout.d.ts +5 -0
- package/dist/runtime/timeout.js +12 -0
- package/dist/runtime/trace-config.d.ts +12 -0
- package/dist/runtime/trace-config.js +62 -0
- package/dist/runtime/trace.d.ts +17 -0
- package/dist/runtime/trace.js +176 -25
- package/dist/runtime-boundary-lint.d.ts +137 -0
- package/dist/runtime-boundary-lint.js +590 -0
- package/dist/schema.d.ts +20 -0
- package/dist/schema.js +72 -2
- package/dist/serve.d.ts +1 -1
- package/dist/serve.js +1 -1
- package/dist/server/error-observability.d.ts +1 -0
- package/dist/server/error-observability.js +1 -0
- package/dist/server/error-stack-frames.d.ts +35 -0
- package/dist/server/error-stack-frames.js +219 -0
- package/dist/server/index.d.ts +21 -2
- package/dist/server/index.js +11 -2
- package/dist/server/runtime-diagnostics.d.ts +165 -0
- package/dist/server/runtime-diagnostics.js +360 -0
- package/dist/server/sdk-version.d.ts +3 -0
- package/dist/server/sdk-version.js +19 -0
- package/dist/server/self-test-input-tokens.d.ts +2 -1
- package/dist/server/self-test-input-tokens.js +18 -14
- package/dist/server/self-test-redaction.js +8 -33
- package/dist/server/self-test.d.ts +18 -3
- package/dist/server/self-test.js +139 -76
- package/dist/server/sensitive-values.d.ts +26 -0
- package/dist/server/sensitive-values.js +137 -0
- package/dist/server/serve-implementation.d.ts +285 -0
- package/dist/server/serve-implementation.js +3172 -0
- package/dist/server/serve.d.ts +1 -75
- package/dist/server/serve.js +1 -1170
- package/dist/server/state-backend-report.d.ts +70 -0
- package/dist/server/state-backend-report.js +113 -0
- package/dist/server/trace-output.d.ts +7 -0
- package/dist/server/trace-output.js +111 -0
- package/dist/server/types.d.ts +37 -5
- package/dist/server/types.js +34 -1
- package/dist/stateful/errors.d.ts +19 -0
- package/dist/stateful/errors.js +24 -0
- package/dist/stateful/http-provider-event-emitter.d.ts +40 -0
- package/dist/stateful/http-provider-event-emitter.js +237 -0
- package/dist/stateful/http-session-owner-registry.d.ts +44 -0
- package/dist/stateful/http-session-owner-registry.js +210 -0
- package/dist/stateful/index.d.ts +18 -0
- package/dist/stateful/index.js +18 -0
- package/dist/stateful/provider-event-delivery-failures.d.ts +32 -0
- package/dist/stateful/provider-event-delivery-failures.js +43 -0
- package/dist/stateful/provider-event-pipeline-metrics.d.ts +46 -0
- package/dist/stateful/provider-event-pipeline-metrics.js +48 -0
- package/dist/stateful/provider-event-pipeline.d.ts +50 -0
- package/dist/stateful/provider-event-pipeline.js +1 -0
- package/dist/stateful/provider-events.d.ts +101 -0
- package/dist/stateful/provider-events.js +289 -0
- package/dist/stateful/session-key.d.ts +15 -0
- package/dist/stateful/session-key.js +86 -0
- package/dist/stateful/stateful-provider-adapter-context.d.ts +5 -0
- package/dist/stateful/stateful-provider-adapter-context.js +42 -0
- package/dist/stateful/stateful-provider-adapter-metrics.d.ts +15 -0
- package/dist/stateful/stateful-provider-adapter-metrics.js +21 -0
- package/dist/stateful/stateful-provider-adapter.d.ts +98 -0
- package/dist/stateful/stateful-provider-adapter.js +287 -0
- package/dist/stateful/stateful-provider-observability.d.ts +62 -0
- package/dist/stateful/stateful-provider-observability.js +161 -0
- package/dist/stateful/stateful-provider-owner-forwarder.d.ts +41 -0
- package/dist/stateful/stateful-provider-owner-forwarder.js +237 -0
- package/dist/stateful/stateful-provider-runtime-context.d.ts +35 -0
- package/dist/stateful/stateful-provider-runtime-context.js +61 -0
- package/dist/stateful/stateful-provider-runtime-executor.d.ts +34 -0
- package/dist/stateful/stateful-provider-runtime-executor.js +52 -0
- package/dist/stateful/stateful-provider-session-routing.d.ts +67 -0
- package/dist/stateful/stateful-provider-session-routing.js +345 -0
- package/dist/stateful/stateful-provider-session-runtime.d.ts +98 -0
- package/dist/stateful/stateful-provider-session-runtime.js +245 -0
- package/dist/stateful-signing.d.ts +18 -0
- package/dist/stateful-signing.js +27 -0
- package/dist/stealth/profiles.d.ts +15 -4
- package/dist/stealth/profiles.js +169 -211
- package/dist/stream-evidence.d.ts +74 -0
- package/dist/stream-evidence.js +785 -0
- package/dist/stream.js +7 -1
- package/dist/testing/index.d.ts +2 -1
- package/dist/testing/index.js +2 -1
- package/dist/testing/run.d.ts +32 -2
- package/dist/testing/run.js +509 -25
- package/dist/trace-sanitization.d.ts +6 -0
- package/dist/trace-sanitization.js +68 -0
- package/dist/types.d.ts +899 -210
- package/dist/types.js +1 -0
- package/dist/typescript-module.d.ts +39 -0
- package/dist/typescript-module.js +72 -0
- package/package.json +52 -6
- package/src/auth-turn/index.ts +1 -1
- package/src/auth.ts +118 -0
- package/src/ceremonies/index.ts +189 -46
- package/src/cli/commands.ts +37 -0
- package/src/cli/create.ts +8 -2
- package/src/cli/deployment-intent.ts +364 -0
- package/src/cli/local-connection.ts +221 -0
- package/src/cli/migrate-deployment-intent.ts +1908 -0
- package/src/cli/migrate-operation-declaration.ts +3026 -0
- package/src/cli/migrate-operation-shape.ts +184 -0
- package/src/cli/migrate-provider-shape.ts +778 -0
- package/src/cli/resolver-runtime.ts +72 -0
- package/src/cli/templates/provider/.agents/skills/health-checks-and-fail-closed/SKILL.md.tpl +141 -23
- package/src/cli/templates/provider/Dockerfile.tpl +1 -1
- package/src/cli/templates/provider/README.md.tpl +41 -19
- package/src/cli/templates/provider/index.ts.tpl +6 -3
- package/src/cli/templates/provider/operations/ping.ts.tpl +4 -1
- package/src/cli/templates/provider/provider.json.tpl +6 -0
- package/src/config/loader.ts +774 -181
- package/src/contract-serialization.ts +5 -7
- package/src/contract-types.ts +12 -5
- package/src/contract.ts +24 -10
- package/src/declaration-validation.ts +376 -0
- package/src/define.ts +1105 -131
- package/src/dev.ts +13 -1
- package/src/engine.ts +390 -0
- package/src/error-observability.ts +64 -0
- package/src/error-resolution.ts +269 -0
- package/src/errors.ts +157 -0
- package/src/fixture-sanitization.ts +422 -0
- package/src/handle-meta.ts +143 -0
- package/src/handle.ts +694 -0
- package/src/health-scenario.ts +960 -0
- package/src/i18n/catalog.ts +23 -1
- package/src/i18n/error-messages.ts +255 -0
- package/src/i18n/index.ts +1 -0
- package/src/i18n/keys.ts +80 -6
- package/src/i18n/operation-locale-namespace.ts +10 -0
- package/src/index.ts +390 -23
- package/src/lint.ts +2975 -234
- package/src/native-address.ts +340 -0
- package/src/native-egress-policy.ts +358 -0
- package/src/observability.ts +51 -1
- package/src/provider.ts +207 -27
- package/src/runtime/auth-flow.ts +15 -0
- package/src/runtime/bounded-expiring-map.ts +67 -0
- package/src/runtime/browser-telemetry-binding.ts +92 -0
- package/src/runtime/browser-telemetry.ts +289 -0
- package/src/runtime/browser.ts +882 -99
- package/src/runtime/cache-telemetry.ts +247 -0
- package/src/runtime/cache.ts +258 -22
- package/src/runtime/capability-response.ts +53 -0
- package/src/runtime/capability-telemetry.ts +101 -0
- package/src/runtime/chrome149-header-order.ts +330 -0
- package/src/runtime/diagnostic-env-values.ts +56 -0
- package/src/runtime/diagnostic-env.ts +65 -0
- package/src/runtime/diagnostic-redactor.ts +668 -0
- package/src/runtime/egress-lease.ts +341 -0
- package/src/runtime/engine-mode.ts +233 -0
- package/src/runtime/env.ts +15 -1
- package/src/runtime/executor.ts +39 -32
- package/src/runtime/handle-wordlist.ts +266 -0
- package/src/runtime/handle.ts +1180 -0
- package/src/runtime/http-telemetry-binding.ts +162 -0
- package/src/runtime/http-telemetry-guard.ts +208 -0
- package/src/runtime/http-telemetry.ts +292 -0
- package/src/runtime/http.ts +896 -150
- package/src/runtime/insights.ts +2 -2
- package/src/runtime/instrumentation.ts +628 -28
- package/src/runtime/native-network-errors.ts +99 -0
- package/src/runtime/native-network.ts +1853 -0
- package/src/runtime/native-telemetry.ts +366 -0
- package/src/runtime/ocr-telemetry.ts +308 -0
- package/src/runtime/ocr.ts +564 -0
- package/src/runtime/otlp.ts +468 -21
- package/src/runtime/provider.ts +15 -0
- package/src/runtime/proxy-errors.ts +12 -4
- package/src/runtime/proxy-nodemaven.ts +222 -0
- package/src/runtime/proxy-retry-policy.ts +12 -1
- package/src/runtime/proxy-telemetry.ts +358 -103
- package/src/runtime/redirect-hop-headers.ts +71 -0
- package/src/runtime/redirects.ts +215 -0
- package/src/runtime/redis.ts +7 -2
- package/src/runtime/request-options.ts +728 -1
- package/src/runtime/request-telemetry.ts +375 -0
- package/src/runtime/resolver-config.ts +18 -0
- package/src/runtime/resolver-public.ts +44 -0
- package/src/runtime/resolver-runtime-options.ts +50 -0
- package/src/runtime/resolver-shared.ts +113 -0
- package/src/runtime/resolver-span-attributes.ts +139 -0
- package/src/runtime/resolver-telemetry.ts +362 -0
- package/src/runtime/resolver-usage.ts +99 -0
- package/src/runtime/resolver-vendors/bindings.ts +61 -0
- package/src/runtime/resolver-vendors/browser.ts +591 -0
- package/src/runtime/resolver-vendors/capsolver.ts +727 -0
- package/src/runtime/resolver-vendors/hosts.ts +81 -0
- package/src/runtime/resolver-vendors/hypersolutions.ts +480 -0
- package/src/runtime/resolver-vendors/twocaptcha.ts +555 -0
- package/src/runtime/resolver-vendors/types.ts +261 -0
- package/src/runtime/resolver.ts +1543 -0
- package/src/runtime/state-telemetry.ts +298 -0
- package/src/runtime/state.ts +435 -89
- package/src/runtime/stealth-akamai-sbsd.ts +207 -0
- package/src/runtime/stealth-cookies.ts +155 -0
- package/src/runtime/stealth-owned-headers.ts +67 -0
- package/src/runtime/stealth-telemetry.ts +309 -0
- package/src/runtime/stealth.ts +2275 -372
- package/src/runtime/stt-telemetry.ts +282 -0
- package/src/runtime/stt.ts +96 -91
- package/src/runtime/timeout.ts +18 -0
- package/src/runtime/trace-config.ts +78 -0
- package/src/runtime/trace.ts +257 -35
- package/src/runtime-boundary-lint.ts +707 -0
- package/src/schema.ts +80 -2
- package/src/serve.ts +6 -1
- package/src/server/error-observability.ts +1 -0
- package/src/server/error-stack-frames.ts +214 -0
- package/src/server/index.ts +184 -2
- package/src/server/runtime-diagnostics.ts +522 -0
- package/src/server/sdk-version.ts +22 -0
- package/src/server/self-test-input-tokens.ts +29 -14
- package/src/server/self-test-redaction.ts +10 -40
- package/src/server/self-test.ts +205 -89
- package/src/server/sensitive-values.ts +211 -0
- package/src/server/serve-implementation.ts +4596 -0
- package/src/server/serve.ts +1 -1685
- package/src/server/state-backend-report.ts +185 -0
- package/src/server/trace-output.ts +189 -0
- package/src/server/types.ts +34 -1
- package/src/stateful/README.md +146 -0
- package/src/stateful/errors.ts +35 -0
- package/src/stateful/http-provider-event-emitter.ts +314 -0
- package/src/stateful/http-session-owner-registry.ts +306 -0
- package/src/stateful/index.ts +18 -0
- package/src/stateful/provider-event-delivery-failures.ts +80 -0
- package/src/stateful/provider-event-pipeline-metrics.ts +95 -0
- package/src/stateful/provider-event-pipeline.ts +61 -0
- package/src/stateful/provider-events.ts +462 -0
- package/src/stateful/session-key.ts +111 -0
- package/src/stateful/stateful-provider-adapter-context.ts +59 -0
- package/src/stateful/stateful-provider-adapter-metrics.ts +48 -0
- package/src/stateful/stateful-provider-adapter.ts +562 -0
- package/src/stateful/stateful-provider-observability.ts +261 -0
- package/src/stateful/stateful-provider-owner-forwarder.ts +310 -0
- package/src/stateful/stateful-provider-runtime-context.ts +96 -0
- package/src/stateful/stateful-provider-runtime-executor.ts +96 -0
- package/src/stateful/stateful-provider-session-routing.ts +546 -0
- package/src/stateful/stateful-provider-session-runtime.ts +403 -0
- package/src/stateful-signing.ts +46 -0
- package/src/stealth/profiles.ts +212 -231
- package/src/stream-evidence.ts +988 -0
- package/src/stream.ts +8 -1
- package/src/testing/index.ts +10 -1
- package/src/testing/run.ts +685 -19
- package/src/trace-sanitization.ts +110 -0
- package/src/types.ts +1014 -273
- package/src/typescript-module.ts +100 -0
- package/dist/choice-token.d.ts +0 -24
- package/dist/choice-token.js +0 -74
- package/dist/runtime/choice.d.ts +0 -15
- package/dist/runtime/choice.js +0 -413
- package/src/choice-token.ts +0 -165
- package/src/runtime/choice.ts +0 -686
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* JSON object of `connection.secrets`, keyed exactly as the provider reads
|
|
3
|
+
* them through `ctx.credential.get(...)`.
|
|
4
|
+
*
|
|
5
|
+
* A single JSON value rather than one variable per key on purpose:
|
|
6
|
+
* platform-managed providers must not declare `credential.keys` (the SDK lint
|
|
7
|
+
* rejects it), so the key names are known only to the provider's own source.
|
|
8
|
+
* There is no derivation from an env name that would be right for every
|
|
9
|
+
* provider, and guessing one would be a second, lossy contract next to the
|
|
10
|
+
* gateway's.
|
|
11
|
+
*/
|
|
12
|
+
export const LOCAL_CONNECTION_SECRETS_ENV = "APIFUSE__LOCAL_CONNECTION__SECRETS";
|
|
13
|
+
/** Stable local connection id, mirroring the CLIs' other `local-*` scopes. */
|
|
14
|
+
export const LOCAL_CONNECTION_ID = "local-connection";
|
|
15
|
+
/** Auth modes whose providers read a credential the gateway supplies. */
|
|
16
|
+
export function providerRequiresConnection(provider) {
|
|
17
|
+
const mode = provider.auth?.mode;
|
|
18
|
+
return mode !== undefined && mode !== "none";
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Parses repeated `--credential key=value` arguments.
|
|
22
|
+
*
|
|
23
|
+
* Splits on the first `=` only: a base64 or URL-shaped secret routinely
|
|
24
|
+
* contains more.
|
|
25
|
+
*/
|
|
26
|
+
export function parseCredentialOverrides(values) {
|
|
27
|
+
const secrets = {};
|
|
28
|
+
for (const [index, value] of values.entries()) {
|
|
29
|
+
// The offending argument is never echoed. `--credential =secret` and
|
|
30
|
+
// `--credential secret` are both malformed *and* carry the credential, so
|
|
31
|
+
// quoting the input to be helpful would print it to stderr — before any
|
|
32
|
+
// redaction context exists, so no caller could scrub it.
|
|
33
|
+
const separator = value.indexOf("=");
|
|
34
|
+
if (separator <= 0) {
|
|
35
|
+
return {
|
|
36
|
+
ok: false,
|
|
37
|
+
reason: `--credential #${index + 1} is not of the form key=value; its value is not echoed here because it may be the credential.`,
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
const key = value.slice(0, separator).trim();
|
|
41
|
+
if (key.length === 0) {
|
|
42
|
+
return {
|
|
43
|
+
ok: false,
|
|
44
|
+
reason: `--credential #${index + 1} has an empty key; its value is not echoed here because it may be the credential.`,
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
secrets[key] = value.slice(separator + 1);
|
|
48
|
+
}
|
|
49
|
+
return { ok: true, secrets };
|
|
50
|
+
}
|
|
51
|
+
/** Reads {@link LOCAL_CONNECTION_SECRETS_ENV} into a secrets map. */
|
|
52
|
+
export function parseEnvironmentSecrets(raw) {
|
|
53
|
+
if (raw === undefined || raw.trim().length === 0) {
|
|
54
|
+
return { ok: true, secrets: {} };
|
|
55
|
+
}
|
|
56
|
+
let parsed;
|
|
57
|
+
try {
|
|
58
|
+
parsed = JSON.parse(raw);
|
|
59
|
+
}
|
|
60
|
+
catch (error) {
|
|
61
|
+
return {
|
|
62
|
+
ok: false,
|
|
63
|
+
reason: `${LOCAL_CONNECTION_SECRETS_ENV} is not valid JSON: ${error instanceof Error ? error.message : String(error)}`,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) {
|
|
67
|
+
return {
|
|
68
|
+
ok: false,
|
|
69
|
+
reason: `${LOCAL_CONNECTION_SECRETS_ENV} must be a JSON object of credential key to string value.`,
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
const secrets = {};
|
|
73
|
+
for (const [key, value] of Object.entries(parsed)) {
|
|
74
|
+
if (typeof value !== "string") {
|
|
75
|
+
return {
|
|
76
|
+
ok: false,
|
|
77
|
+
reason: `${LOCAL_CONNECTION_SECRETS_ENV}.${key} must be a string (received ${typeof value}); the value is not echoed here.`,
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
secrets[key] = value;
|
|
81
|
+
}
|
|
82
|
+
return { ok: true, secrets };
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Resolves the connection to attach for one local invocation.
|
|
86
|
+
*
|
|
87
|
+
* Three outcomes, and the middle one is the point of the change:
|
|
88
|
+
*
|
|
89
|
+
* - the provider needs no credential (`auth.mode` absent or `"none"`) →
|
|
90
|
+
* no connection, exactly as before;
|
|
91
|
+
* - the provider needs one and none is configured → `ok: false` with a
|
|
92
|
+
* message naming both ways to supply it. The caller surfaces that instead
|
|
93
|
+
* of letting the provider fail deep inside a handler on a `MISSING_SECRET`
|
|
94
|
+
* that reads like an upstream problem;
|
|
95
|
+
* - the provider needs one and it is configured → the gateway's envelope
|
|
96
|
+
* shape.
|
|
97
|
+
*
|
|
98
|
+
* CLI overrides win over the environment so a one-off run does not need the
|
|
99
|
+
* shell variable unset.
|
|
100
|
+
*/
|
|
101
|
+
export function resolveLocalConnection(provider, options = {}) {
|
|
102
|
+
const fromEnv = parseEnvironmentSecrets((options.env ?? process.env)[LOCAL_CONNECTION_SECRETS_ENV]);
|
|
103
|
+
if (!fromEnv.ok)
|
|
104
|
+
return fromEnv;
|
|
105
|
+
const fromArgs = parseCredentialOverrides(options.overrides ?? []);
|
|
106
|
+
if (!fromArgs.ok)
|
|
107
|
+
return fromArgs;
|
|
108
|
+
const secrets = { ...fromEnv.secrets, ...fromArgs.secrets };
|
|
109
|
+
const mode = provider.auth?.mode;
|
|
110
|
+
if (!providerRequiresConnection(provider)) {
|
|
111
|
+
if (Object.keys(secrets).length > 0) {
|
|
112
|
+
return {
|
|
113
|
+
ok: false,
|
|
114
|
+
reason: `Provider "${provider.id}" declares auth.mode ${JSON.stringify(mode ?? "none")}, which takes no credential. Remove the supplied credential values.`,
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
return { ok: true, connection: undefined };
|
|
118
|
+
}
|
|
119
|
+
if (Object.keys(secrets).length === 0) {
|
|
120
|
+
return {
|
|
121
|
+
ok: false,
|
|
122
|
+
reason: missingLocalConnectionMessage(provider.id, mode ?? "none"),
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
return {
|
|
126
|
+
ok: true,
|
|
127
|
+
connection: {
|
|
128
|
+
id: LOCAL_CONNECTION_ID,
|
|
129
|
+
// `mode` is narrowed by providerRequiresConnection above.
|
|
130
|
+
mode: mode ?? "none",
|
|
131
|
+
secrets,
|
|
132
|
+
metadata: {},
|
|
133
|
+
externalRef: "",
|
|
134
|
+
},
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
/** The message a caller prints when a needed credential is not configured. */
|
|
138
|
+
export function missingLocalConnectionMessage(providerId, mode) {
|
|
139
|
+
const platformManaged = mode === "platform-managed";
|
|
140
|
+
return [
|
|
141
|
+
`Provider "${providerId}" declares auth.mode "${mode}", so the gateway injects a credential on every invocation and this command has none.`,
|
|
142
|
+
platformManaged
|
|
143
|
+
? "The value is the platform-owned key an operator holds; it is not a provider secret and is not derivable from the checkout."
|
|
144
|
+
: "Supply the same credential the gateway would resolve for a connection.",
|
|
145
|
+
"Supply it with one of:",
|
|
146
|
+
" --credential <key>=<value> (repeatable)",
|
|
147
|
+
` ${LOCAL_CONNECTION_SECRETS_ENV}='{"<key>":"<value>"}'`,
|
|
148
|
+
"The keys are the ones the provider passes to ctx.credential.get(...).",
|
|
149
|
+
"Pass --no-credential to run without one anyway (the provider will fail the way it does in production when the credential is unavailable).",
|
|
150
|
+
].join("\n");
|
|
151
|
+
}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import type { ProviderDeploymentOverrides } from "../types.js";
|
|
2
|
+
import { type ResolvedDeploymentIntent } from "./deployment-intent.js";
|
|
3
|
+
export declare const TYPESCRIPT_REQUIRED_MESSAGE = "apifuse migrate-deployment requires typescript; install it in the workspace running the CLI (bun add -d typescript)";
|
|
4
|
+
/**
|
|
5
|
+
* Deployment-intent migration: retire a provider repository's standalone
|
|
6
|
+
* `deploy.ts`.
|
|
7
|
+
*
|
|
8
|
+
* End state: deployment intent lives only in the `deployment` key of the
|
|
9
|
+
* `defineProvider({...})` declaration, and only the fields that differ from
|
|
10
|
+
* the runtime profile are written. Everything else goes: the `deploy.ts`
|
|
11
|
+
* file, a `deployment` extra on a `{ ...provider, deployment }` default
|
|
12
|
+
* export, and an `import deployment from "./deploy"`. The `/deploy.ts`
|
|
13
|
+
* CODEOWNERS lock is kept by default: the platform still honors a committed
|
|
14
|
+
* legacy file until its fallback is retired, so re-adding one must keep
|
|
15
|
+
* needing operator review. `dropCodeownersLock` removes it once that
|
|
16
|
+
* fallback is gone.
|
|
17
|
+
*
|
|
18
|
+
* The transform never regenerates values from the profile — it moves the
|
|
19
|
+
* values the file actually declares (hand-edited "mirrors" exist in the
|
|
20
|
+
* fleet) and proves equivalence: the key it writes must resolve to exactly
|
|
21
|
+
* what the legacy file resolved to, or it refuses. Like the other codemods
|
|
22
|
+
* it is conservative: anything it cannot fully account for is reported as
|
|
23
|
+
* `refused` with a reason rather than partially migrated.
|
|
24
|
+
*/
|
|
25
|
+
/** How the `defineProvider()` declaration literal was located. */
|
|
26
|
+
export type DeploymentDeclarationShape =
|
|
27
|
+
/** `defineProvider({ ... })` — the literal is the argument (spreads inside are fine). */
|
|
28
|
+
"literal-argument"
|
|
29
|
+
/** `const declaration = { ... }; defineProvider(declaration)` — top-level const literal. */
|
|
30
|
+
| "variable-literal-argument";
|
|
31
|
+
export interface DeploymentIntentMigrationInput {
|
|
32
|
+
/** Current `index.ts` text. */
|
|
33
|
+
readonly indexSource: string;
|
|
34
|
+
/** Current `deploy.ts` text, or undefined when the repository has none. */
|
|
35
|
+
readonly deploySource?: string;
|
|
36
|
+
/** Current `.github/CODEOWNERS` text, or undefined when absent. */
|
|
37
|
+
readonly codeownersSource?: string;
|
|
38
|
+
/**
|
|
39
|
+
* Remove the `/deploy.ts` CODEOWNERS lock (and the scaffold's TEMPORARY
|
|
40
|
+
* comment above it). Off by default — see the module comment.
|
|
41
|
+
*/
|
|
42
|
+
readonly dropCodeownersLock?: boolean;
|
|
43
|
+
readonly indexFileName?: string;
|
|
44
|
+
}
|
|
45
|
+
export type DeploymentIntentMigration = {
|
|
46
|
+
readonly status: "migrated";
|
|
47
|
+
readonly shape: DeploymentDeclarationShape;
|
|
48
|
+
readonly indexSource: string;
|
|
49
|
+
readonly indexChanged: boolean;
|
|
50
|
+
readonly codeownersSource?: string;
|
|
51
|
+
readonly codeownersChanged: boolean;
|
|
52
|
+
/** True when `deploy.ts` existed and must be deleted. */
|
|
53
|
+
readonly removeDeployFile: boolean;
|
|
54
|
+
/** Resolved view the legacy `deploy.ts` declared, when it existed. */
|
|
55
|
+
readonly legacy?: ResolvedDeploymentIntent;
|
|
56
|
+
/** The minimal key now authored in the declaration (empty = profile defaults). */
|
|
57
|
+
readonly intent: ProviderDeploymentOverrides;
|
|
58
|
+
/** What the key resolves to; equals `legacy` when a legacy file existed. */
|
|
59
|
+
readonly resolved: ResolvedDeploymentIntent;
|
|
60
|
+
readonly notes: readonly string[];
|
|
61
|
+
} | {
|
|
62
|
+
readonly status: "unchanged";
|
|
63
|
+
readonly notes: readonly string[];
|
|
64
|
+
} | {
|
|
65
|
+
readonly status: "refused";
|
|
66
|
+
readonly reason: string;
|
|
67
|
+
};
|
|
68
|
+
/**
|
|
69
|
+
* Emitted above the key only when it carries `runtime`: the deployment
|
|
70
|
+
* runtime axis sits next to the execution `runtime` property and must not
|
|
71
|
+
* be read as the same axis.
|
|
72
|
+
*/
|
|
73
|
+
export declare const DEPLOYMENT_RUNTIME_AXIS_COMMENT = "// Deployment runtime axis (shared | dedicated | browser); not the execution runtime above.";
|
|
74
|
+
export declare function migrateDeploymentIntent(input: DeploymentIntentMigrationInput): DeploymentIntentMigration;
|
|
75
|
+
/**
|
|
76
|
+
* Statically read the `deployment` key authored inside the declaration
|
|
77
|
+
* literal of `indexSource` (undefined when absent). Used to prove round
|
|
78
|
+
* trips: the value the transform wrote must resolve to the legacy view.
|
|
79
|
+
*/
|
|
80
|
+
export declare function readDeclaredDeploymentIntent(indexSource: string, fileName?: string): {
|
|
81
|
+
readonly ok: true;
|
|
82
|
+
readonly value: unknown;
|
|
83
|
+
} | {
|
|
84
|
+
readonly ok: false;
|
|
85
|
+
readonly reason: string;
|
|
86
|
+
};
|
|
87
|
+
/**
|
|
88
|
+
* Line (1-based) of a `deployment` property attached to a spread default
|
|
89
|
+
* export (`export default { ...provider, deployment }`), or undefined when
|
|
90
|
+
* the module has no such legacy surface. Used by `apifuse check`: the loaded
|
|
91
|
+
* module cannot tell that extra apart from a declaration-level key, so the
|
|
92
|
+
* source shape is inspected instead.
|
|
93
|
+
*/
|
|
94
|
+
export declare function findSpreadExportDeploymentProperty(indexSource: string, fileName?: string): {
|
|
95
|
+
readonly line: number;
|
|
96
|
+
} | undefined;
|
|
97
|
+
/** Parse a legacy `deploy.ts` module text into the resolved deployment view. */
|
|
98
|
+
export declare function readLegacyDeployFile(deploySource: string): {
|
|
99
|
+
readonly ok: true;
|
|
100
|
+
readonly value: ResolvedDeploymentIntent;
|
|
101
|
+
readonly raw: unknown;
|
|
102
|
+
} | {
|
|
103
|
+
readonly ok: false;
|
|
104
|
+
readonly reason: string;
|
|
105
|
+
};
|
|
106
|
+
/**
|
|
107
|
+
* Repository sources (other than index.ts and deploy.ts themselves) that
|
|
108
|
+
* import the deploy module — `import x from "../deploy"`, re-exports, dynamic
|
|
109
|
+
* `import("./deploy")`, `require("./deploy")`. Deleting deploy.ts while one
|
|
110
|
+
* exists breaks that consumer, so the command refuses until it is removed.
|
|
111
|
+
* `files` carry paths relative to or absolute under `providerRoot`.
|
|
112
|
+
*/
|
|
113
|
+
export declare function findDeployModuleConsumers(providerRoot: string, files: readonly {
|
|
114
|
+
readonly path: string;
|
|
115
|
+
readonly text: string;
|
|
116
|
+
}[]): string[];
|
|
117
|
+
/**
|
|
118
|
+
* Remove the `/deploy.ts` CODEOWNERS line and, when it is preceded by the
|
|
119
|
+
* exact platform-scaffold comment block, that block too. Any other content
|
|
120
|
+
* is preserved byte for byte.
|
|
121
|
+
*/
|
|
122
|
+
export declare function stripCodeownersDeployLock(text: string): {
|
|
123
|
+
readonly text: string;
|
|
124
|
+
readonly changed: boolean;
|
|
125
|
+
};
|
|
126
|
+
/**
|
|
127
|
+
* Format the key's object literal starting at column `indent.length +
|
|
128
|
+
* "deployment: ".length`: inline when it fits the line width, otherwise
|
|
129
|
+
* expanded one property per line (recursively), trailing commas included —
|
|
130
|
+
* the same decisions a formatter would keep.
|
|
131
|
+
*/
|
|
132
|
+
export declare function formatIntentLiteral(intent: ProviderDeploymentOverrides, indent: string, unit: string): string;
|