@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,261 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
ChallengeSolution,
|
|
3
|
+
ProviderChallenge,
|
|
4
|
+
ProviderChallengeKind,
|
|
5
|
+
ProviderResolverConfig,
|
|
6
|
+
ProviderResolverVendor,
|
|
7
|
+
} from "../../types.js";
|
|
8
|
+
import type { TraceRecorder } from "../trace.js";
|
|
9
|
+
|
|
10
|
+
const RESOLVER_VENDOR_POLL_OBSERVER = Symbol.for(
|
|
11
|
+
"@apifuse/provider-sdk/runtime/resolver-vendor-poll-observer",
|
|
12
|
+
);
|
|
13
|
+
|
|
14
|
+
/** Internal chain-runner hook; vendor adapters never receive the telemetry sink itself. */
|
|
15
|
+
export function recordResolverVendorPoll(traceRecorder: TraceRecorder | undefined): void {
|
|
16
|
+
(
|
|
17
|
+
traceRecorder as (TraceRecorder & { [RESOLVER_VENDOR_POLL_OBSERVER]?: () => void }) | undefined
|
|
18
|
+
)?.[RESOLVER_VENDOR_POLL_OBSERVER]?.();
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export function attachResolverVendorPollObserver(
|
|
22
|
+
traceRecorder: TraceRecorder,
|
|
23
|
+
observer: () => void,
|
|
24
|
+
): TraceRecorder {
|
|
25
|
+
Object.defineProperty(traceRecorder, RESOLVER_VENDOR_POLL_OBSERVER, { value: observer });
|
|
26
|
+
return traceRecorder;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export const RESOLVER_VENDOR_CAPABILITIES = {
|
|
30
|
+
browser: ["aws_waf", "cloudflare_interstitial"],
|
|
31
|
+
// Every kind listed per vendor is implemented by that vendor's adapter; the
|
|
32
|
+
// per-adapter "agrees with every declared capability" tests iterate this
|
|
33
|
+
// table, so adding a kind here without an implementation fails the suite.
|
|
34
|
+
// 2captcha omits `cloudflare_interstitial` and every Akamai kind: its API
|
|
35
|
+
// offers no measured task type for them, so declaring them
|
|
36
|
+
// would route challenges to a vendor that can only refuse.
|
|
37
|
+
"2captcha": ["turnstile", "recaptcha_v2", "recaptcha_v3", "hcaptcha", "aws_waf"],
|
|
38
|
+
capsolver: [
|
|
39
|
+
"turnstile",
|
|
40
|
+
"recaptcha_v2",
|
|
41
|
+
"recaptcha_v3",
|
|
42
|
+
"hcaptcha",
|
|
43
|
+
"cloudflare_interstitial",
|
|
44
|
+
"aws_waf",
|
|
45
|
+
],
|
|
46
|
+
capmonster: ["turnstile", "recaptcha_v2", "recaptcha_v3", "hcaptcha"],
|
|
47
|
+
// Hyper's /sbsd envelope is measured. Its sensor endpoint is deliberately
|
|
48
|
+
// omitted until that separate protocol is implemented and verified.
|
|
49
|
+
hypersolutions: ["akamai_sbsd"],
|
|
50
|
+
custom: [
|
|
51
|
+
"turnstile",
|
|
52
|
+
"recaptcha_v2",
|
|
53
|
+
"recaptcha_v3",
|
|
54
|
+
"hcaptcha",
|
|
55
|
+
"cloudflare_interstitial",
|
|
56
|
+
"aws_waf",
|
|
57
|
+
"akamai_sec_cpt",
|
|
58
|
+
"akamai_sensor",
|
|
59
|
+
"akamai_sbsd",
|
|
60
|
+
],
|
|
61
|
+
} as const satisfies Readonly<Record<ProviderResolverVendor, readonly ProviderChallengeKind[]>>;
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* SDK-owned fallback policy for hosted resolver vendors. Capability support is
|
|
65
|
+
* applied separately, so each provider receives only vendors that support one
|
|
66
|
+
* or more of its declared challenge kinds.
|
|
67
|
+
*/
|
|
68
|
+
export const DEFAULT_RESOLVER_VENDOR_PREFERENCE = [
|
|
69
|
+
"capsolver",
|
|
70
|
+
"2captcha",
|
|
71
|
+
"hypersolutions",
|
|
72
|
+
] as const satisfies readonly ProviderResolverVendor[];
|
|
73
|
+
|
|
74
|
+
export function resolverVendorSupports(
|
|
75
|
+
vendor: ProviderResolverVendor,
|
|
76
|
+
kind: ProviderChallengeKind,
|
|
77
|
+
): boolean {
|
|
78
|
+
return (RESOLVER_VENDOR_CAPABILITIES[vendor] as readonly ProviderChallengeKind[]).includes(kind);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/** Resolves an explicit provider override or the SDK-owned default vendor chain. */
|
|
82
|
+
export function resolveProviderResolverVendors(
|
|
83
|
+
config: ProviderResolverConfig,
|
|
84
|
+
): readonly ProviderResolverVendor[] {
|
|
85
|
+
if (config.vendors !== undefined) return config.vendors;
|
|
86
|
+
return DEFAULT_RESOLVER_VENDOR_PREFERENCE.filter((vendor) =>
|
|
87
|
+
config.kinds.some((kind) => resolverVendorSupports(vendor, kind)),
|
|
88
|
+
);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
export interface ResolverIdentity {
|
|
92
|
+
readonly proxyUrl: string;
|
|
93
|
+
readonly userAgent: string;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
export interface ResolverIssuingIdentity {
|
|
97
|
+
/** Absent when the adapter genuinely solved without a proxy. */
|
|
98
|
+
readonly proxyUrl?: string;
|
|
99
|
+
readonly userAgent: string;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
export interface ResolverVendorTransport {
|
|
103
|
+
/**
|
|
104
|
+
* Exact stable upstream headers owned by the proxy/profile-bound transport.
|
|
105
|
+
* This does not include dynamic Cookie headers; the transport injects those from its jar.
|
|
106
|
+
* Adapter requests do not receive these headers implicitly and must forward
|
|
107
|
+
* them when their measured protocol requires session-header continuity.
|
|
108
|
+
*/
|
|
109
|
+
readonly sessionHeaders?: Readonly<Record<string, string>>;
|
|
110
|
+
/**
|
|
111
|
+
* Read a cookie from the transport's bound jar for the supplied URL. Responses
|
|
112
|
+
* returned by `fetch` MUST already have been applied to that jar before this
|
|
113
|
+
* method is called. Profile-bound adapters fail closed when this seam is absent.
|
|
114
|
+
*/
|
|
115
|
+
readonly getCookie?: (name: string, url: string) => string | undefined;
|
|
116
|
+
/** Implementations MUST NOT follow redirects and must return the initial response. */
|
|
117
|
+
fetch(
|
|
118
|
+
url: string,
|
|
119
|
+
init: {
|
|
120
|
+
method: "GET" | "POST";
|
|
121
|
+
headers?: Readonly<Record<string, string>>;
|
|
122
|
+
body?: string;
|
|
123
|
+
signal: AbortSignal;
|
|
124
|
+
/** Implementations MUST honor manual redirect handling when the SDK guard sets it. */
|
|
125
|
+
redirect?: "manual";
|
|
126
|
+
/** Maximum UTF-8 response body size; implementations must stop reading at this bound. */
|
|
127
|
+
maxBodyBytes?: number;
|
|
128
|
+
},
|
|
129
|
+
): Promise<{
|
|
130
|
+
readonly status: number;
|
|
131
|
+
readonly headers: Readonly<Record<string, string>>;
|
|
132
|
+
readonly body: string;
|
|
133
|
+
/** Cookies observed on the response, including cache-relevant attributes. */
|
|
134
|
+
readonly cookies: readonly {
|
|
135
|
+
readonly name: string;
|
|
136
|
+
readonly value: string;
|
|
137
|
+
/** Epoch seconds. A session cookie must be undefined, never CDP's -1 sentinel. */
|
|
138
|
+
readonly expires?: number;
|
|
139
|
+
readonly httpOnly: boolean;
|
|
140
|
+
readonly secure: boolean;
|
|
141
|
+
readonly domain?: string;
|
|
142
|
+
readonly path?: string;
|
|
143
|
+
readonly sameSite?: string;
|
|
144
|
+
}[];
|
|
145
|
+
}>;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
/** Metering context the resolver chain hands each vendor adapter for its paid calls. */
|
|
149
|
+
export type ResolverPaidUsageContext = {
|
|
150
|
+
/** 1-based position of the vendor in the provider's declared resolver chain. */
|
|
151
|
+
readonly vendorIndex: number;
|
|
152
|
+
/** SHA-256 scope digest; never the raw affinity, proxy URL, cookie, or IP. */
|
|
153
|
+
readonly resolverIdentityScope?: string;
|
|
154
|
+
};
|
|
155
|
+
|
|
156
|
+
export interface ResolverVendorAdapter {
|
|
157
|
+
readonly id: ProviderResolverVendor;
|
|
158
|
+
readonly requiresTransport?: boolean | ((kind: ProviderChallengeKind) => boolean);
|
|
159
|
+
/**
|
|
160
|
+
* Exact SDK-owned service hosts this adapter may reach through its bound transport,
|
|
161
|
+
* in addition to the provider's `allowedHosts`. Every host must appear in the
|
|
162
|
+
* SDK-owned `RESOLVER_VENDOR_TRANSPORT_HOSTS` entry for `id`; the chain rejects any
|
|
163
|
+
* other declaration with `RESOLVER_VENDOR_HOST_NOT_ALLOWED`, whoever supplied the
|
|
164
|
+
* adapter. The transport handed to `solve` is revoked once `solve` settles.
|
|
165
|
+
*/
|
|
166
|
+
readonly transportAllowedHosts?: readonly string[];
|
|
167
|
+
supports(kind: ProviderChallengeKind): boolean;
|
|
168
|
+
/** Identity the adapter actually used, reported after a successful solve. */
|
|
169
|
+
getIssuingIdentity?(
|
|
170
|
+
solution: ChallengeSolution,
|
|
171
|
+
requestedIdentity: ResolverIdentity | undefined,
|
|
172
|
+
challenge: ProviderChallenge,
|
|
173
|
+
): ResolverIssuingIdentity | undefined;
|
|
174
|
+
solve(
|
|
175
|
+
challenge: ProviderChallenge,
|
|
176
|
+
identity: ResolverIdentity | undefined,
|
|
177
|
+
signal: AbortSignal,
|
|
178
|
+
traceRecorder?: TraceRecorder,
|
|
179
|
+
transport?: ResolverVendorTransport,
|
|
180
|
+
usage?: ResolverPaidUsageContext,
|
|
181
|
+
): Promise<ChallengeSolution>;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
export type ResolverVendorUnavailableReason =
|
|
185
|
+
| "missing_credentials"
|
|
186
|
+
| "missing_proxy_identity"
|
|
187
|
+
| "missing_client_profile"
|
|
188
|
+
| "missing_challenge_input"
|
|
189
|
+
| "missing_transport"
|
|
190
|
+
| "allocation_exhausted"
|
|
191
|
+
| "transport_failure"
|
|
192
|
+
| "timeout"
|
|
193
|
+
| "not_implemented";
|
|
194
|
+
|
|
195
|
+
export type ResolverChallengeVerdictReason = "human_puzzle" | "solve_failed";
|
|
196
|
+
|
|
197
|
+
type ResolverErrorOptions = {
|
|
198
|
+
/** Raw cause; adapters must not place bodies, cookies, headers, credentials, or proxy URLs here. */
|
|
199
|
+
readonly cause?: unknown;
|
|
200
|
+
/** Names of challenge fields required by this adapter but absent from this call's input. */
|
|
201
|
+
readonly missingFields?: readonly string[];
|
|
202
|
+
/** Upstream hostname only; never a URL. */
|
|
203
|
+
readonly upstreamHost?: string;
|
|
204
|
+
/** Adapter-defined sensor-loop phase, such as fetch_script or post_sensor. */
|
|
205
|
+
readonly phase?: string;
|
|
206
|
+
/** One-based sensor-loop round when known. */
|
|
207
|
+
readonly round?: number;
|
|
208
|
+
};
|
|
209
|
+
|
|
210
|
+
export class ResolverVendorUnavailableError extends Error {
|
|
211
|
+
readonly missingFields?: readonly string[];
|
|
212
|
+
readonly upstreamHost?: string;
|
|
213
|
+
readonly phase?: string;
|
|
214
|
+
readonly round?: number;
|
|
215
|
+
|
|
216
|
+
constructor(
|
|
217
|
+
readonly vendor: ProviderResolverVendor,
|
|
218
|
+
readonly reason: ResolverVendorUnavailableReason,
|
|
219
|
+
options: ResolverErrorOptions = {},
|
|
220
|
+
) {
|
|
221
|
+
const missingFields =
|
|
222
|
+
reason === "missing_challenge_input"
|
|
223
|
+
? options.missingFields?.filter((field) => /^[A-Za-z][A-Za-z0-9_]*$/u.test(field))
|
|
224
|
+
: undefined;
|
|
225
|
+
super(
|
|
226
|
+
reason === "missing_challenge_input" &&
|
|
227
|
+
missingFields !== undefined &&
|
|
228
|
+
missingFields.length > 0
|
|
229
|
+
? `Resolver vendor ${vendor} cannot use incomplete challenge input; missing fields: ${missingFields.join(", ")}`
|
|
230
|
+
: `Resolver vendor ${vendor} is unavailable: ${reason}`,
|
|
231
|
+
);
|
|
232
|
+
this.name = "ResolverVendorUnavailableError";
|
|
233
|
+
if (missingFields !== undefined && missingFields.length > 0) {
|
|
234
|
+
this.missingFields = Object.freeze([...missingFields]);
|
|
235
|
+
}
|
|
236
|
+
if (options.cause !== undefined) {
|
|
237
|
+
this.cause = options.cause;
|
|
238
|
+
}
|
|
239
|
+
this.upstreamHost = options.upstreamHost;
|
|
240
|
+
this.phase = options.phase;
|
|
241
|
+
this.round = options.round;
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
export class ResolverChallengeVerdictError extends Error {
|
|
246
|
+
constructor(
|
|
247
|
+
readonly vendor: ProviderResolverVendor,
|
|
248
|
+
readonly reason: ResolverChallengeVerdictReason,
|
|
249
|
+
options: ResolverErrorOptions = {},
|
|
250
|
+
) {
|
|
251
|
+
super(
|
|
252
|
+
reason === "solve_failed"
|
|
253
|
+
? `Resolver vendor ${vendor} attempted the challenge but did not solve it`
|
|
254
|
+
: `Resolver vendor ${vendor} returned a challenge verdict: ${reason}`,
|
|
255
|
+
);
|
|
256
|
+
this.name = "ResolverChallengeVerdictError";
|
|
257
|
+
if (options.cause !== undefined) {
|
|
258
|
+
this.cause = options.cause;
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
}
|