pi-codex-auto-review 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -0
- package/NOTICE +10 -0
- package/README.md +77 -0
- package/dist/approvals.d.ts +72 -0
- package/dist/approvals.js +167 -0
- package/dist/approvals.js.map +1 -0
- package/dist/audit.d.ts +28 -0
- package/dist/audit.js +40 -0
- package/dist/audit.js.map +1 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +70 -0
- package/dist/cli.js.map +1 -0
- package/dist/context-files.d.ts +14 -0
- package/dist/context-files.js +113 -0
- package/dist/context-files.js.map +1 -0
- package/dist/contracts.d.ts +258 -0
- package/dist/contracts.js +102 -0
- package/dist/contracts.js.map +1 -0
- package/dist/index.d.ts +28 -0
- package/dist/index.js +106 -0
- package/dist/index.js.map +1 -0
- package/dist/native/darwin-arm64/artifact.json +5 -0
- package/dist/native/darwin-arm64/pi-guard-execpolicy +0 -0
- package/dist/native/linux-x64/artifact.json +5 -0
- package/dist/native/linux-x64/pi-guard-execpolicy +0 -0
- package/dist/policy/domains.d.ts +5 -0
- package/dist/policy/domains.js +18 -0
- package/dist/policy/domains.js.map +1 -0
- package/dist/policy/index.d.ts +56 -0
- package/dist/policy/index.js +304 -0
- package/dist/policy/index.js.map +1 -0
- package/dist/policy/paths.d.ts +5 -0
- package/dist/policy/paths.js +54 -0
- package/dist/policy/paths.js.map +1 -0
- package/dist/policy/rules.d.ts +36 -0
- package/dist/policy/rules.js +61 -0
- package/dist/policy/rules.js.map +1 -0
- package/dist/policy/shell.d.ts +14 -0
- package/dist/policy/shell.js +122 -0
- package/dist/policy/shell.js.map +1 -0
- package/dist/reports.d.ts +21 -0
- package/dist/reports.js +42 -0
- package/dist/reports.js.map +1 -0
- package/dist/review/context.d.ts +25 -0
- package/dist/review/context.js +108 -0
- package/dist/review/context.js.map +1 -0
- package/dist/review/investigation.d.ts +39 -0
- package/dist/review/investigation.js +36 -0
- package/dist/review/investigation.js.map +1 -0
- package/dist/review/lifecycle.d.ts +29 -0
- package/dist/review/lifecycle.js +71 -0
- package/dist/review/lifecycle.js.map +1 -0
- package/dist/review/policy.d.ts +4 -0
- package/dist/review/policy.js +15 -0
- package/dist/review/policy.js.map +1 -0
- package/dist/review/upstream-policy.d.ts +2 -0
- package/dist/review/upstream-policy.js +210 -0
- package/dist/review/upstream-policy.js.map +1 -0
- package/dist/reviewer.d.ts +45 -0
- package/dist/reviewer.js +148 -0
- package/dist/reviewer.js.map +1 -0
- package/dist/sandbox/broker.d.ts +1 -0
- package/dist/sandbox/broker.js +135 -0
- package/dist/sandbox/broker.js.map +1 -0
- package/dist/sandbox/config.d.ts +5 -0
- package/dist/sandbox/config.js +91 -0
- package/dist/sandbox/config.js.map +1 -0
- package/dist/sandbox/executor.d.ts +20 -0
- package/dist/sandbox/executor.js +144 -0
- package/dist/sandbox/executor.js.map +1 -0
- package/dist/sandbox/hard-links.d.ts +4 -0
- package/dist/sandbox/hard-links.js +145 -0
- package/dist/sandbox/hard-links.js.map +1 -0
- package/dist/sandbox/linux-read-paths.d.ts +7 -0
- package/dist/sandbox/linux-read-paths.js +47 -0
- package/dist/sandbox/linux-read-paths.js.map +1 -0
- package/dist/sandbox/paths.d.ts +3 -0
- package/dist/sandbox/paths.js +10 -0
- package/dist/sandbox/paths.js.map +1 -0
- package/dist/sandbox/runtime-write-paths.d.ts +2 -0
- package/dist/sandbox/runtime-write-paths.js +8 -0
- package/dist/sandbox/runtime-write-paths.js.map +1 -0
- package/dist/sandbox/seccomp.d.ts +5 -0
- package/dist/sandbox/seccomp.js +16 -0
- package/dist/sandbox/seccomp.js.map +1 -0
- package/dist/sandbox/worker.d.ts +1 -0
- package/dist/sandbox/worker.js +73 -0
- package/dist/sandbox/worker.js.map +1 -0
- package/dist/signals.d.ts +10 -0
- package/dist/signals.js +21 -0
- package/dist/signals.js.map +1 -0
- package/dist/startup.d.ts +22 -0
- package/dist/startup.js +100 -0
- package/dist/startup.js.map +1 -0
- package/dist/tools/controller.d.ts +63 -0
- package/dist/tools/controller.js +286 -0
- package/dist/tools/controller.js.map +1 -0
- package/dist/tools/external.d.ts +30 -0
- package/dist/tools/external.js +24 -0
- package/dist/tools/external.js.map +1 -0
- package/dist/tools/mcp.d.ts +17 -0
- package/dist/tools/mcp.js +186 -0
- package/dist/tools/mcp.js.map +1 -0
- package/docs/publishing.md +73 -0
- package/docs/security/dependencies.md +43 -0
- package/docs/testing/auto-review-protection.md +130 -0
- package/docs/usage.md +217 -0
- package/native/execpolicy/LICENSE +201 -0
- package/native/execpolicy/NOTICE +6 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/LICENSE +201 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/README.md +901 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/cli.d.ts +3 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/cli.d.ts.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/cli.js +472 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/cli.js.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/index.d.ts +19 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/index.d.ts.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/index.js +17 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/index.js.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/address.d.ts +52 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/address.d.ts.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/address.js +153 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/address.js.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/aws-sigv4.d.ts +164 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/aws-sigv4.d.ts.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/aws-sigv4.js +246 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/aws-sigv4.js.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/body-substitution.d.ts +58 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/body-substitution.d.ts.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/body-substitution.js +128 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/body-substitution.js.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-aws-pairs.d.ts +124 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-aws-pairs.d.ts.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-aws-pairs.js +258 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-aws-pairs.js.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-decode.d.ts +87 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-decode.d.ts.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-decode.js +138 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-decode.js.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-extract.d.ts +67 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-extract.d.ts.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-extract.js +113 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-extract.js.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-mask-env.d.ts +70 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-mask-env.d.ts.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-mask-env.js +171 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-mask-env.js.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-mask-files.d.ts +120 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-mask-files.d.ts.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-mask-files.js +281 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-mask-files.js.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-sentinel.d.ts +108 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-sentinel.d.ts.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-sentinel.js +208 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-sentinel.js.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/domain-pattern.d.ts +82 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/domain-pattern.d.ts.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/domain-pattern.js +155 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/domain-pattern.js.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/generate-seccomp-filter.d.ts +44 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/generate-seccomp-filter.d.ts.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/generate-seccomp-filter.js +220 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/generate-seccomp-filter.js.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/http-proxy.d.ts +150 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/http-proxy.d.ts.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/http-proxy.js +678 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/http-proxy.js.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/java-proxy-agent.d.ts +32 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/java-proxy-agent.d.ts.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/java-proxy-agent.js +111 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/java-proxy-agent.js.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/linux-sandbox-utils.d.ts +305 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/linux-sandbox-utils.d.ts.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/linux-sandbox-utils.js +2605 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/linux-sandbox-utils.js.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/linux-violation-monitor.d.ts +55 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/linux-violation-monitor.d.ts.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/linux-violation-monitor.js +152 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/linux-violation-monitor.js.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/listen-in-range.d.ts +12 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/listen-in-range.d.ts.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/listen-in-range.js +43 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/listen-in-range.js.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/macos-sandbox-utils.d.ts +116 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/macos-sandbox-utils.d.ts.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/macos-sandbox-utils.js +1195 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/macos-sandbox-utils.js.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/mitm-ca.d.ts +200 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/mitm-ca.d.ts.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/mitm-ca.js +443 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/mitm-ca.js.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/mitm-leaf.d.ts +28 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/mitm-leaf.d.ts.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/mitm-leaf.js +114 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/mitm-leaf.js.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/mux-proxy.d.ts +59 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/mux-proxy.d.ts.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/mux-proxy.js +159 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/mux-proxy.js.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/parent-proxy.d.ts +147 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/parent-proxy.d.ts.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/parent-proxy.js +445 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/parent-proxy.js.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/read-deny-glob.d.ts +17 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/read-deny-glob.d.ts.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/read-deny-glob.js +163 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/read-deny-glob.js.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/request-filter.d.ts +83 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/request-filter.d.ts.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/request-filter.js +212 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/request-filter.js.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/resolved-address-guard.d.ts +76 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/resolved-address-guard.d.ts.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/resolved-address-guard.js +221 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/resolved-address-guard.js.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/sandbox-config.d.ts +1691 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/sandbox-config.d.ts.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/sandbox-config.js +1233 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/sandbox-config.js.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/sandbox-manager.d.ts +97 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/sandbox-manager.d.ts.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/sandbox-manager.js +1937 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/sandbox-manager.js.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/sandbox-schemas.d.ts +113 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/sandbox-schemas.d.ts.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/sandbox-schemas.js +3 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/sandbox-schemas.js.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/sandbox-utils.d.ts +411 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/sandbox-utils.d.ts.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/sandbox-utils.js +1408 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/sandbox-utils.js.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/sandbox-violation-store.d.ts +37 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/sandbox-violation-store.d.ts.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/sandbox-violation-store.js +125 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/sandbox-violation-store.js.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/socks-proxy.d.ts +57 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/socks-proxy.d.ts.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/socks-proxy.js +332 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/socks-proxy.js.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/tls-terminate-proxy.d.ts +100 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/tls-terminate-proxy.d.ts.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/tls-terminate-proxy.js +546 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/tls-terminate-proxy.js.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/windows-sandbox-utils.d.ts +923 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/windows-sandbox-utils.d.ts.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/windows-sandbox-utils.js +1419 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/windows-sandbox-utils.js.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/config-loader.d.ts +31 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/config-loader.d.ts.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/config-loader.js +69 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/config-loader.js.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/debug.d.ts +7 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/debug.d.ts.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/debug.js +25 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/debug.js.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/platform.d.ts +15 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/platform.d.ts.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/platform.js +49 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/platform.js.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/ripgrep.d.ts +17 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/ripgrep.d.ts.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/ripgrep.js +37 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/ripgrep.js.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/shell-quote.d.ts +27 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/shell-quote.d.ts.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/shell-quote.js +47 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/shell-quote.js.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/which.d.ts +9 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/which.d.ts.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/which.js +25 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/which.js.map +1 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/package.json +88 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/vendor/java-proxy-agent/build.ts +95 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/vendor/java-proxy-agent/srt-proxy-agent.jar +0 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/vendor/seccomp/arm64/apply-seccomp +0 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/vendor/seccomp/build.ts +69 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/vendor/seccomp/x64/apply-seccomp +0 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/vendor/srt-win/arm64/srt-win.exe +0 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/vendor/srt-win/build.ts +28 -0
- package/node_modules/@anthropic-ai/sandbox-runtime/vendor/srt-win/x64/srt-win.exe +0 -0
- package/node_modules/@pondwader/socks5-server/.github/workflows/ci.yml +27 -0
- package/node_modules/@pondwader/socks5-server/LICENSE +20 -0
- package/node_modules/@pondwader/socks5-server/README.md +151 -0
- package/node_modules/@pondwader/socks5-server/dist/index.d.mts +87 -0
- package/node_modules/@pondwader/socks5-server/dist/index.d.ts +87 -0
- package/node_modules/@pondwader/socks5-server/dist/index.js +346 -0
- package/node_modules/@pondwader/socks5-server/dist/index.mjs +307 -0
- package/node_modules/@pondwader/socks5-server/package.json +31 -0
- package/node_modules/commander/LICENSE +22 -0
- package/node_modules/commander/Readme.md +1157 -0
- package/node_modules/commander/esm.mjs +16 -0
- package/node_modules/commander/index.js +24 -0
- package/node_modules/commander/lib/argument.js +149 -0
- package/node_modules/commander/lib/command.js +2509 -0
- package/node_modules/commander/lib/error.js +39 -0
- package/node_modules/commander/lib/help.js +520 -0
- package/node_modules/commander/lib/option.js +330 -0
- package/node_modules/commander/lib/suggestSimilar.js +101 -0
- package/node_modules/commander/package-support.json +16 -0
- package/node_modules/commander/package.json +84 -0
- package/node_modules/commander/typings/esm.d.mts +3 -0
- package/node_modules/commander/typings/index.d.ts +969 -0
- package/node_modules/node-forge/.editorconfig +17 -0
- package/node_modules/node-forge/.eslintrc.js +24 -0
- package/node_modules/node-forge/.github/workflows/main.yaml +96 -0
- package/node_modules/node-forge/.istanbul.yml +2 -0
- package/node_modules/node-forge/.npmignore +15 -0
- package/node_modules/node-forge/CHANGELOG.md +555 -0
- package/node_modules/node-forge/CONTRIBUTING.md +18 -0
- package/node_modules/node-forge/LICENSE +331 -0
- package/node_modules/node-forge/README.md +2071 -0
- package/node_modules/node-forge/RELEASE.md +19 -0
- package/node_modules/node-forge/SECURITY.md +5 -0
- package/node_modules/node-forge/examples/create-cert.js +110 -0
- package/node_modules/node-forge/examples/create-csr.js +66 -0
- package/node_modules/node-forge/examples/create-pkcs12.js +160 -0
- package/node_modules/node-forge/examples/imap.js +46 -0
- package/node_modules/node-forge/examples/sign-p7.js +115 -0
- package/node_modules/node-forge/examples/tls.js +189 -0
- package/node_modules/node-forge/flash/PooledSocket.as +18 -0
- package/node_modules/node-forge/flash/README.md +48 -0
- package/node_modules/node-forge/flash/SocketEvent.as +36 -0
- package/node_modules/node-forge/flash/SocketPool.as +754 -0
- package/node_modules/node-forge/flash/mod_fsp/README +135 -0
- package/node_modules/node-forge/flash/mod_fsp/mod_fsp.c +415 -0
- package/node_modules/node-forge/flash/package.json +28 -0
- package/node_modules/node-forge/flash/policyserver.js +65 -0
- package/node_modules/node-forge/flash/policyserver.py +112 -0
- package/node_modules/node-forge/flash/swf/SocketPool.swf +0 -0
- package/node_modules/node-forge/karma-sauce.conf.js +79 -0
- package/node_modules/node-forge/karma.conf.js +133 -0
- package/node_modules/node-forge/lib/aes.js +1091 -0
- package/node_modules/node-forge/lib/aesCipherSuites.js +282 -0
- package/node_modules/node-forge/lib/asn1-validator.js +91 -0
- package/node_modules/node-forge/lib/asn1.js +1503 -0
- package/node_modules/node-forge/lib/baseN.js +186 -0
- package/node_modules/node-forge/lib/cipher.js +230 -0
- package/node_modules/node-forge/lib/cipherModes.js +999 -0
- package/node_modules/node-forge/lib/des.js +496 -0
- package/node_modules/node-forge/lib/ed25519.js +1091 -0
- package/node_modules/node-forge/lib/forge.js +13 -0
- package/node_modules/node-forge/lib/form.js +149 -0
- package/node_modules/node-forge/lib/hmac.js +146 -0
- package/node_modules/node-forge/lib/http.js +1346 -0
- package/node_modules/node-forge/lib/index.all.js +16 -0
- package/node_modules/node-forge/lib/index.js +33 -0
- package/node_modules/node-forge/lib/jsbn.js +1294 -0
- package/node_modules/node-forge/lib/kem.js +168 -0
- package/node_modules/node-forge/lib/log.js +319 -0
- package/node_modules/node-forge/lib/md.all.js +13 -0
- package/node_modules/node-forge/lib/md.js +11 -0
- package/node_modules/node-forge/lib/md5.js +289 -0
- package/node_modules/node-forge/lib/mgf.js +12 -0
- package/node_modules/node-forge/lib/mgf1.js +57 -0
- package/node_modules/node-forge/lib/oids.js +180 -0
- package/node_modules/node-forge/lib/pbe.js +1023 -0
- package/node_modules/node-forge/lib/pbkdf2.js +211 -0
- package/node_modules/node-forge/lib/pem.js +237 -0
- package/node_modules/node-forge/lib/pkcs1.js +276 -0
- package/node_modules/node-forge/lib/pkcs12.js +1078 -0
- package/node_modules/node-forge/lib/pkcs7.js +1260 -0
- package/node_modules/node-forge/lib/pkcs7asn1.js +410 -0
- package/node_modules/node-forge/lib/pki.js +102 -0
- package/node_modules/node-forge/lib/prime.js +297 -0
- package/node_modules/node-forge/lib/prime.worker.js +168 -0
- package/node_modules/node-forge/lib/prng.js +419 -0
- package/node_modules/node-forge/lib/pss.js +241 -0
- package/node_modules/node-forge/lib/random.js +191 -0
- package/node_modules/node-forge/lib/rc2.js +410 -0
- package/node_modules/node-forge/lib/rsa.js +1973 -0
- package/node_modules/node-forge/lib/sha1.js +319 -0
- package/node_modules/node-forge/lib/sha256.js +327 -0
- package/node_modules/node-forge/lib/sha512.js +561 -0
- package/node_modules/node-forge/lib/socket.js +287 -0
- package/node_modules/node-forge/lib/ssh.js +236 -0
- package/node_modules/node-forge/lib/tls.js +4282 -0
- package/node_modules/node-forge/lib/tlssocket.js +249 -0
- package/node_modules/node-forge/lib/util.js +2652 -0
- package/node_modules/node-forge/lib/x509.js +3251 -0
- package/node_modules/node-forge/lib/xhr.js +738 -0
- package/node_modules/node-forge/package.json +123 -0
- package/node_modules/node-forge/tests/.eslintrc.js +5 -0
- package/node_modules/node-forge/tests/README.md +4 -0
- package/node_modules/node-forge/tests/benchmarks/aes-speed.js +62 -0
- package/node_modules/node-forge/tests/benchmarks/so-44303784.js +246 -0
- package/node_modules/node-forge/tests/flash/README.md +7 -0
- package/node_modules/node-forge/tests/flash/Test.as +96 -0
- package/node_modules/node-forge/tests/flash/build-flash.xml +7 -0
- package/node_modules/node-forge/tests/flash/index.html +28 -0
- package/node_modules/node-forge/tests/index.html +33 -0
- package/node_modules/node-forge/tests/issues/heartbleed.js +55 -0
- package/node_modules/node-forge/tests/issues/issue-428.html +95 -0
- package/node_modules/node-forge/tests/issues/issue-428.js +375 -0
- package/node_modules/node-forge/tests/karma/index.js +8 -0
- package/node_modules/node-forge/tests/karma/testWorker.js +65 -0
- package/node_modules/node-forge/tests/karma/web-worker-rsa.js +55 -0
- package/node_modules/node-forge/tests/legacy/common.html +65 -0
- package/node_modules/node-forge/tests/legacy/common.js +2199 -0
- package/node_modules/node-forge/tests/legacy/form.html +148 -0
- package/node_modules/node-forge/tests/legacy/form.js +40 -0
- package/node_modules/node-forge/tests/legacy/http.html +235 -0
- package/node_modules/node-forge/tests/legacy/index.html +70 -0
- package/node_modules/node-forge/tests/legacy/keygen.html +113 -0
- package/node_modules/node-forge/tests/legacy/login.css +26 -0
- package/node_modules/node-forge/tests/legacy/loginDemo.html +32 -0
- package/node_modules/node-forge/tests/legacy/loginDemo.js +149 -0
- package/node_modules/node-forge/tests/legacy/performance.html +533 -0
- package/node_modules/node-forge/tests/legacy/result.txt +1 -0
- package/node_modules/node-forge/tests/legacy/socketPool.html +302 -0
- package/node_modules/node-forge/tests/legacy/tasks.html +54 -0
- package/node_modules/node-forge/tests/legacy/tasks.js +378 -0
- package/node_modules/node-forge/tests/legacy/tls.html +389 -0
- package/node_modules/node-forge/tests/legacy/webid.html +89 -0
- package/node_modules/node-forge/tests/legacy/webid.js +313 -0
- package/node_modules/node-forge/tests/legacy/ws-webid.js +120 -0
- package/node_modules/node-forge/tests/legacy/xhr.html +67 -0
- package/node_modules/node-forge/tests/legacy/xhr.js +590 -0
- package/node_modules/node-forge/tests/pocs/ghsa-2328-f5f3-gj25.js +85 -0
- package/node_modules/node-forge/tests/pocs/ghsa-ppp5-5v6c-4jwp.js +166 -0
- package/node_modules/node-forge/tests/pocs/ghsa-q67f-28xg-22rw.js +103 -0
- package/node_modules/node-forge/tests/security/cve-2025-12816.js +75 -0
- package/node_modules/node-forge/tests/security/ghsa-554w-wpv2-vw27.js +81 -0
- package/node_modules/node-forge/tests/security/index.js +3 -0
- package/node_modules/node-forge/tests/server.crt +26 -0
- package/node_modules/node-forge/tests/server.js +87 -0
- package/node_modules/node-forge/tests/server.key +27 -0
- package/node_modules/node-forge/tests/support/task.js +718 -0
- package/node_modules/node-forge/tests/tests.css +61 -0
- package/node_modules/node-forge/tests/unit/aes.js +1498 -0
- package/node_modules/node-forge/tests/unit/asn1.js +1337 -0
- package/node_modules/node-forge/tests/unit/csr.js +129 -0
- package/node_modules/node-forge/tests/unit/des.js +231 -0
- package/node_modules/node-forge/tests/unit/ed25519.js +395 -0
- package/node_modules/node-forge/tests/unit/forge.js +2 -0
- package/node_modules/node-forge/tests/unit/hmac.js +64 -0
- package/node_modules/node-forge/tests/unit/index.html +20 -0
- package/node_modules/node-forge/tests/unit/index.js +27 -0
- package/node_modules/node-forge/tests/unit/jsbn.js +40 -0
- package/node_modules/node-forge/tests/unit/kem.js +167 -0
- package/node_modules/node-forge/tests/unit/md5.js +114 -0
- package/node_modules/node-forge/tests/unit/mgf1.js +16 -0
- package/node_modules/node-forge/tests/unit/pbkdf2.js +182 -0
- package/node_modules/node-forge/tests/unit/pem.js +159 -0
- package/node_modules/node-forge/tests/unit/pkcs1.js +1077 -0
- package/node_modules/node-forge/tests/unit/pkcs12.js +739 -0
- package/node_modules/node-forge/tests/unit/pkcs7.js +792 -0
- package/node_modules/node-forge/tests/unit/random.js +48 -0
- package/node_modules/node-forge/tests/unit/rc2.js +88 -0
- package/node_modules/node-forge/tests/unit/rsa.js +1278 -0
- package/node_modules/node-forge/tests/unit/sha1.js +72 -0
- package/node_modules/node-forge/tests/unit/sha256.js +79 -0
- package/node_modules/node-forge/tests/unit/sha512.js +200 -0
- package/node_modules/node-forge/tests/unit/ssh.js +175 -0
- package/node_modules/node-forge/tests/unit/tls.js +175 -0
- package/node_modules/node-forge/tests/unit/util.js +595 -0
- package/node_modules/node-forge/tests/unit/x509.js +1986 -0
- package/node_modules/node-forge/tests/websockets/server-webid.js +495 -0
- package/node_modules/node-forge/tests/websockets/server-ws.js +158 -0
- package/node_modules/node-forge/webpack-tests.config.js +26 -0
- package/node_modules/node-forge/webpack.config.js +130 -0
- package/node_modules/zod/LICENSE +21 -0
- package/node_modules/zod/README.md +208 -0
- package/node_modules/zod/index.cjs +33 -0
- package/node_modules/zod/index.d.cts +4 -0
- package/node_modules/zod/index.d.ts +4 -0
- package/node_modules/zod/index.js +4 -0
- package/node_modules/zod/package.json +118 -0
- package/node_modules/zod/src/index.ts +4 -0
- package/node_modules/zod/src/v3/ZodError.ts +330 -0
- package/node_modules/zod/src/v3/benchmarks/datetime.ts +58 -0
- package/node_modules/zod/src/v3/benchmarks/discriminatedUnion.ts +80 -0
- package/node_modules/zod/src/v3/benchmarks/index.ts +59 -0
- package/node_modules/zod/src/v3/benchmarks/ipv4.ts +57 -0
- package/node_modules/zod/src/v3/benchmarks/object.ts +69 -0
- package/node_modules/zod/src/v3/benchmarks/primitives.ts +162 -0
- package/node_modules/zod/src/v3/benchmarks/realworld.ts +63 -0
- package/node_modules/zod/src/v3/benchmarks/string.ts +55 -0
- package/node_modules/zod/src/v3/benchmarks/union.ts +80 -0
- package/node_modules/zod/src/v3/errors.ts +13 -0
- package/node_modules/zod/src/v3/external.ts +6 -0
- package/node_modules/zod/src/v3/helpers/enumUtil.ts +17 -0
- package/node_modules/zod/src/v3/helpers/errorUtil.ts +8 -0
- package/node_modules/zod/src/v3/helpers/parseUtil.ts +176 -0
- package/node_modules/zod/src/v3/helpers/partialUtil.ts +34 -0
- package/node_modules/zod/src/v3/helpers/typeAliases.ts +2 -0
- package/node_modules/zod/src/v3/helpers/util.ts +224 -0
- package/node_modules/zod/src/v3/index.ts +4 -0
- package/node_modules/zod/src/v3/locales/en.ts +124 -0
- package/node_modules/zod/src/v3/standard-schema.ts +113 -0
- package/node_modules/zod/src/v3/tests/Mocker.ts +54 -0
- package/node_modules/zod/src/v3/tests/all-errors.test.ts +157 -0
- package/node_modules/zod/src/v3/tests/anyunknown.test.ts +28 -0
- package/node_modules/zod/src/v3/tests/array.test.ts +71 -0
- package/node_modules/zod/src/v3/tests/async-parsing.test.ts +388 -0
- package/node_modules/zod/src/v3/tests/async-refinements.test.ts +46 -0
- package/node_modules/zod/src/v3/tests/base.test.ts +29 -0
- package/node_modules/zod/src/v3/tests/bigint.test.ts +55 -0
- package/node_modules/zod/src/v3/tests/branded.test.ts +53 -0
- package/node_modules/zod/src/v3/tests/catch.test.ts +220 -0
- package/node_modules/zod/src/v3/tests/coerce.test.ts +133 -0
- package/node_modules/zod/src/v3/tests/complex.test.ts +56 -0
- package/node_modules/zod/src/v3/tests/custom.test.ts +31 -0
- package/node_modules/zod/src/v3/tests/date.test.ts +32 -0
- package/node_modules/zod/src/v3/tests/deepmasking.test.ts +186 -0
- package/node_modules/zod/src/v3/tests/default.test.ts +112 -0
- package/node_modules/zod/src/v3/tests/description.test.ts +33 -0
- package/node_modules/zod/src/v3/tests/discriminated-unions.test.ts +315 -0
- package/node_modules/zod/src/v3/tests/enum.test.ts +80 -0
- package/node_modules/zod/src/v3/tests/error.test.ts +551 -0
- package/node_modules/zod/src/v3/tests/firstparty.test.ts +87 -0
- package/node_modules/zod/src/v3/tests/firstpartyschematypes.test.ts +21 -0
- package/node_modules/zod/src/v3/tests/function.test.ts +257 -0
- package/node_modules/zod/src/v3/tests/generics.test.ts +48 -0
- package/node_modules/zod/src/v3/tests/instanceof.test.ts +37 -0
- package/node_modules/zod/src/v3/tests/intersection.test.ts +110 -0
- package/node_modules/zod/src/v3/tests/language-server.source.ts +76 -0
- package/node_modules/zod/src/v3/tests/language-server.test.ts +207 -0
- package/node_modules/zod/src/v3/tests/literal.test.ts +36 -0
- package/node_modules/zod/src/v3/tests/map.test.ts +110 -0
- package/node_modules/zod/src/v3/tests/masking.test.ts +4 -0
- package/node_modules/zod/src/v3/tests/mocker.test.ts +19 -0
- package/node_modules/zod/src/v3/tests/nan.test.ts +21 -0
- package/node_modules/zod/src/v3/tests/nativeEnum.test.ts +87 -0
- package/node_modules/zod/src/v3/tests/nullable.test.ts +42 -0
- package/node_modules/zod/src/v3/tests/number.test.ts +176 -0
- package/node_modules/zod/src/v3/tests/object-augmentation.test.ts +29 -0
- package/node_modules/zod/src/v3/tests/object-in-es5-env.test.ts +29 -0
- package/node_modules/zod/src/v3/tests/object.test.ts +434 -0
- package/node_modules/zod/src/v3/tests/optional.test.ts +42 -0
- package/node_modules/zod/src/v3/tests/parseUtil.test.ts +23 -0
- package/node_modules/zod/src/v3/tests/parser.test.ts +41 -0
- package/node_modules/zod/src/v3/tests/partials.test.ts +243 -0
- package/node_modules/zod/src/v3/tests/pickomit.test.ts +111 -0
- package/node_modules/zod/src/v3/tests/pipeline.test.ts +29 -0
- package/node_modules/zod/src/v3/tests/preprocess.test.ts +186 -0
- package/node_modules/zod/src/v3/tests/primitive.test.ts +440 -0
- package/node_modules/zod/src/v3/tests/promise.test.ts +90 -0
- package/node_modules/zod/src/v3/tests/readonly.test.ts +194 -0
- package/node_modules/zod/src/v3/tests/record.test.ts +171 -0
- package/node_modules/zod/src/v3/tests/recursive.test.ts +197 -0
- package/node_modules/zod/src/v3/tests/refine.test.ts +313 -0
- package/node_modules/zod/src/v3/tests/safeparse.test.ts +27 -0
- package/node_modules/zod/src/v3/tests/set.test.ts +142 -0
- package/node_modules/zod/src/v3/tests/standard-schema.test.ts +83 -0
- package/node_modules/zod/src/v3/tests/string.test.ts +916 -0
- package/node_modules/zod/src/v3/tests/transformer.test.ts +233 -0
- package/node_modules/zod/src/v3/tests/tuple.test.ts +90 -0
- package/node_modules/zod/src/v3/tests/unions.test.ts +57 -0
- package/node_modules/zod/src/v3/tests/validations.test.ts +133 -0
- package/node_modules/zod/src/v3/tests/void.test.ts +15 -0
- package/node_modules/zod/src/v3/types.ts +5136 -0
- package/node_modules/zod/src/v4/classic/checks.ts +30 -0
- package/node_modules/zod/src/v4/classic/coerce.ts +27 -0
- package/node_modules/zod/src/v4/classic/compat.ts +66 -0
- package/node_modules/zod/src/v4/classic/errors.ts +75 -0
- package/node_modules/zod/src/v4/classic/external.ts +50 -0
- package/node_modules/zod/src/v4/classic/index.ts +5 -0
- package/node_modules/zod/src/v4/classic/iso.ts +90 -0
- package/node_modules/zod/src/v4/classic/parse.ts +33 -0
- package/node_modules/zod/src/v4/classic/schemas.ts +2054 -0
- package/node_modules/zod/src/v4/classic/tests/anyunknown.test.ts +26 -0
- package/node_modules/zod/src/v4/classic/tests/array.test.ts +264 -0
- package/node_modules/zod/src/v4/classic/tests/assignability.test.ts +210 -0
- package/node_modules/zod/src/v4/classic/tests/async-parsing.test.ts +381 -0
- package/node_modules/zod/src/v4/classic/tests/async-refinements.test.ts +68 -0
- package/node_modules/zod/src/v4/classic/tests/base.test.ts +7 -0
- package/node_modules/zod/src/v4/classic/tests/bigint.test.ts +54 -0
- package/node_modules/zod/src/v4/classic/tests/brand.test.ts +63 -0
- package/node_modules/zod/src/v4/classic/tests/catch.test.ts +252 -0
- package/node_modules/zod/src/v4/classic/tests/coalesce.test.ts +20 -0
- package/node_modules/zod/src/v4/classic/tests/coerce.test.ts +160 -0
- package/node_modules/zod/src/v4/classic/tests/continuability.test.ts +352 -0
- package/node_modules/zod/src/v4/classic/tests/custom.test.ts +40 -0
- package/node_modules/zod/src/v4/classic/tests/date.test.ts +31 -0
- package/node_modules/zod/src/v4/classic/tests/datetime.test.ts +296 -0
- package/node_modules/zod/src/v4/classic/tests/default.test.ts +313 -0
- package/node_modules/zod/src/v4/classic/tests/description.test.ts +32 -0
- package/node_modules/zod/src/v4/classic/tests/discriminated-unions.test.ts +619 -0
- package/node_modules/zod/src/v4/classic/tests/enum.test.ts +285 -0
- package/node_modules/zod/src/v4/classic/tests/error-utils.test.ts +527 -0
- package/node_modules/zod/src/v4/classic/tests/error.test.ts +711 -0
- package/node_modules/zod/src/v4/classic/tests/file.test.ts +91 -0
- package/node_modules/zod/src/v4/classic/tests/firstparty.test.ts +175 -0
- package/node_modules/zod/src/v4/classic/tests/function.test.ts +268 -0
- package/node_modules/zod/src/v4/classic/tests/generics.test.ts +72 -0
- package/node_modules/zod/src/v4/classic/tests/index.test.ts +829 -0
- package/node_modules/zod/src/v4/classic/tests/instanceof.test.ts +34 -0
- package/node_modules/zod/src/v4/classic/tests/intersection.test.ts +171 -0
- package/node_modules/zod/src/v4/classic/tests/json.test.ts +108 -0
- package/node_modules/zod/src/v4/classic/tests/lazy.test.ts +227 -0
- package/node_modules/zod/src/v4/classic/tests/literal.test.ts +92 -0
- package/node_modules/zod/src/v4/classic/tests/map.test.ts +196 -0
- package/node_modules/zod/src/v4/classic/tests/nan.test.ts +21 -0
- package/node_modules/zod/src/v4/classic/tests/nested-refine.test.ts +168 -0
- package/node_modules/zod/src/v4/classic/tests/nonoptional.test.ts +86 -0
- package/node_modules/zod/src/v4/classic/tests/nullable.test.ts +22 -0
- package/node_modules/zod/src/v4/classic/tests/number.test.ts +247 -0
- package/node_modules/zod/src/v4/classic/tests/object.test.ts +563 -0
- package/node_modules/zod/src/v4/classic/tests/optional.test.ts +123 -0
- package/node_modules/zod/src/v4/classic/tests/partial.test.ts +147 -0
- package/node_modules/zod/src/v4/classic/tests/pickomit.test.ts +127 -0
- package/node_modules/zod/src/v4/classic/tests/pipe.test.ts +81 -0
- package/node_modules/zod/src/v4/classic/tests/prefault.test.ts +37 -0
- package/node_modules/zod/src/v4/classic/tests/preprocess.test.ts +298 -0
- package/node_modules/zod/src/v4/classic/tests/primitive.test.ts +175 -0
- package/node_modules/zod/src/v4/classic/tests/promise.test.ts +81 -0
- package/node_modules/zod/src/v4/classic/tests/prototypes.test.ts +23 -0
- package/node_modules/zod/src/v4/classic/tests/readonly.test.ts +252 -0
- package/node_modules/zod/src/v4/classic/tests/record.test.ts +342 -0
- package/node_modules/zod/src/v4/classic/tests/recursive-types.test.ts +356 -0
- package/node_modules/zod/src/v4/classic/tests/refine.test.ts +532 -0
- package/node_modules/zod/src/v4/classic/tests/registries.test.ts +204 -0
- package/node_modules/zod/src/v4/classic/tests/set.test.ts +179 -0
- package/node_modules/zod/src/v4/classic/tests/standard-schema.test.ts +57 -0
- package/node_modules/zod/src/v4/classic/tests/string-formats.test.ts +109 -0
- package/node_modules/zod/src/v4/classic/tests/string.test.ts +881 -0
- package/node_modules/zod/src/v4/classic/tests/stringbool.test.ts +66 -0
- package/node_modules/zod/src/v4/classic/tests/template-literal.test.ts +758 -0
- package/node_modules/zod/src/v4/classic/tests/to-json-schema.test.ts +2314 -0
- package/node_modules/zod/src/v4/classic/tests/transform.test.ts +250 -0
- package/node_modules/zod/src/v4/classic/tests/tuple.test.ts +163 -0
- package/node_modules/zod/src/v4/classic/tests/union.test.ts +94 -0
- package/node_modules/zod/src/v4/classic/tests/validations.test.ts +283 -0
- package/node_modules/zod/src/v4/classic/tests/void.test.ts +12 -0
- package/node_modules/zod/src/v4/core/api.ts +1594 -0
- package/node_modules/zod/src/v4/core/checks.ts +1283 -0
- package/node_modules/zod/src/v4/core/config.ts +15 -0
- package/node_modules/zod/src/v4/core/core.ts +134 -0
- package/node_modules/zod/src/v4/core/doc.ts +44 -0
- package/node_modules/zod/src/v4/core/errors.ts +424 -0
- package/node_modules/zod/src/v4/core/function.ts +176 -0
- package/node_modules/zod/src/v4/core/index.ts +15 -0
- package/node_modules/zod/src/v4/core/json-schema.ts +143 -0
- package/node_modules/zod/src/v4/core/parse.ts +94 -0
- package/node_modules/zod/src/v4/core/regexes.ts +135 -0
- package/node_modules/zod/src/v4/core/registries.ts +96 -0
- package/node_modules/zod/src/v4/core/schemas.ts +3842 -0
- package/node_modules/zod/src/v4/core/standard-schema.ts +64 -0
- package/node_modules/zod/src/v4/core/tests/index.test.ts +46 -0
- package/node_modules/zod/src/v4/core/tests/locales/be.test.ts +124 -0
- package/node_modules/zod/src/v4/core/tests/locales/en.test.ts +22 -0
- package/node_modules/zod/src/v4/core/tests/locales/ru.test.ts +128 -0
- package/node_modules/zod/src/v4/core/tests/locales/tr.test.ts +69 -0
- package/node_modules/zod/src/v4/core/to-json-schema.ts +977 -0
- package/node_modules/zod/src/v4/core/util.ts +775 -0
- package/node_modules/zod/src/v4/core/versions.ts +5 -0
- package/node_modules/zod/src/v4/core/zsf.ts +323 -0
- package/node_modules/zod/src/v4/index.ts +4 -0
- package/node_modules/zod/src/v4/locales/ar.ts +125 -0
- package/node_modules/zod/src/v4/locales/az.ts +121 -0
- package/node_modules/zod/src/v4/locales/be.ts +184 -0
- package/node_modules/zod/src/v4/locales/ca.ts +127 -0
- package/node_modules/zod/src/v4/locales/cs.ts +142 -0
- package/node_modules/zod/src/v4/locales/de.ts +124 -0
- package/node_modules/zod/src/v4/locales/en.ts +127 -0
- package/node_modules/zod/src/v4/locales/eo.ts +125 -0
- package/node_modules/zod/src/v4/locales/es.ts +125 -0
- package/node_modules/zod/src/v4/locales/fa.ts +134 -0
- package/node_modules/zod/src/v4/locales/fi.ts +131 -0
- package/node_modules/zod/src/v4/locales/fr-CA.ts +126 -0
- package/node_modules/zod/src/v4/locales/fr.ts +124 -0
- package/node_modules/zod/src/v4/locales/he.ts +125 -0
- package/node_modules/zod/src/v4/locales/hu.ts +126 -0
- package/node_modules/zod/src/v4/locales/id.ts +125 -0
- package/node_modules/zod/src/v4/locales/index.ts +39 -0
- package/node_modules/zod/src/v4/locales/it.ts +125 -0
- package/node_modules/zod/src/v4/locales/ja.ts +122 -0
- package/node_modules/zod/src/v4/locales/kh.ts +126 -0
- package/node_modules/zod/src/v4/locales/ko.ts +131 -0
- package/node_modules/zod/src/v4/locales/mk.ts +127 -0
- package/node_modules/zod/src/v4/locales/ms.ts +124 -0
- package/node_modules/zod/src/v4/locales/nl.ts +126 -0
- package/node_modules/zod/src/v4/locales/no.ts +124 -0
- package/node_modules/zod/src/v4/locales/ota.ts +125 -0
- package/node_modules/zod/src/v4/locales/pl.ts +126 -0
- package/node_modules/zod/src/v4/locales/ps.ts +133 -0
- package/node_modules/zod/src/v4/locales/pt.ts +123 -0
- package/node_modules/zod/src/v4/locales/ru.ts +184 -0
- package/node_modules/zod/src/v4/locales/sl.ts +126 -0
- package/node_modules/zod/src/v4/locales/sv.ts +127 -0
- package/node_modules/zod/src/v4/locales/ta.ts +125 -0
- package/node_modules/zod/src/v4/locales/th.ts +126 -0
- package/node_modules/zod/src/v4/locales/tr.ts +121 -0
- package/node_modules/zod/src/v4/locales/ua.ts +126 -0
- package/node_modules/zod/src/v4/locales/ur.ts +126 -0
- package/node_modules/zod/src/v4/locales/vi.ts +125 -0
- package/node_modules/zod/src/v4/locales/zh-CN.ts +123 -0
- package/node_modules/zod/src/v4/locales/zh-TW.ts +125 -0
- package/node_modules/zod/src/v4/mini/checks.ts +32 -0
- package/node_modules/zod/src/v4/mini/coerce.ts +22 -0
- package/node_modules/zod/src/v4/mini/external.ts +40 -0
- package/node_modules/zod/src/v4/mini/index.ts +3 -0
- package/node_modules/zod/src/v4/mini/iso.ts +62 -0
- package/node_modules/zod/src/v4/mini/parse.ts +1 -0
- package/node_modules/zod/src/v4/mini/schemas.ts +1579 -0
- package/node_modules/zod/src/v4/mini/tests/assignability.test.ts +129 -0
- package/node_modules/zod/src/v4/mini/tests/brand.test.ts +51 -0
- package/node_modules/zod/src/v4/mini/tests/checks.test.ts +144 -0
- package/node_modules/zod/src/v4/mini/tests/computed.test.ts +36 -0
- package/node_modules/zod/src/v4/mini/tests/error.test.ts +22 -0
- package/node_modules/zod/src/v4/mini/tests/functions.test.ts +43 -0
- package/node_modules/zod/src/v4/mini/tests/index.test.ts +871 -0
- package/node_modules/zod/src/v4/mini/tests/number.test.ts +95 -0
- package/node_modules/zod/src/v4/mini/tests/object.test.ts +185 -0
- package/node_modules/zod/src/v4/mini/tests/prototypes.test.ts +43 -0
- package/node_modules/zod/src/v4/mini/tests/recursive-types.test.ts +275 -0
- package/node_modules/zod/src/v4/mini/tests/string.test.ts +299 -0
- package/node_modules/zod/src/v4-mini/index.ts +1 -0
- package/node_modules/zod/v3/ZodError.cjs +138 -0
- package/node_modules/zod/v3/ZodError.d.cts +164 -0
- package/node_modules/zod/v3/ZodError.d.ts +164 -0
- package/node_modules/zod/v3/ZodError.js +133 -0
- package/node_modules/zod/v3/errors.cjs +17 -0
- package/node_modules/zod/v3/errors.d.cts +5 -0
- package/node_modules/zod/v3/errors.d.ts +5 -0
- package/node_modules/zod/v3/errors.js +9 -0
- package/node_modules/zod/v3/external.cjs +22 -0
- package/node_modules/zod/v3/external.d.cts +6 -0
- package/node_modules/zod/v3/external.d.ts +6 -0
- package/node_modules/zod/v3/external.js +6 -0
- package/node_modules/zod/v3/helpers/enumUtil.cjs +2 -0
- package/node_modules/zod/v3/helpers/enumUtil.d.cts +8 -0
- package/node_modules/zod/v3/helpers/enumUtil.d.ts +8 -0
- package/node_modules/zod/v3/helpers/enumUtil.js +1 -0
- package/node_modules/zod/v3/helpers/errorUtil.cjs +9 -0
- package/node_modules/zod/v3/helpers/errorUtil.d.cts +9 -0
- package/node_modules/zod/v3/helpers/errorUtil.d.ts +9 -0
- package/node_modules/zod/v3/helpers/errorUtil.js +6 -0
- package/node_modules/zod/v3/helpers/parseUtil.cjs +124 -0
- package/node_modules/zod/v3/helpers/parseUtil.d.cts +78 -0
- package/node_modules/zod/v3/helpers/parseUtil.d.ts +78 -0
- package/node_modules/zod/v3/helpers/parseUtil.js +109 -0
- package/node_modules/zod/v3/helpers/partialUtil.cjs +2 -0
- package/node_modules/zod/v3/helpers/partialUtil.d.cts +8 -0
- package/node_modules/zod/v3/helpers/partialUtil.d.ts +8 -0
- package/node_modules/zod/v3/helpers/partialUtil.js +1 -0
- package/node_modules/zod/v3/helpers/typeAliases.cjs +2 -0
- package/node_modules/zod/v3/helpers/typeAliases.d.cts +2 -0
- package/node_modules/zod/v3/helpers/typeAliases.d.ts +2 -0
- package/node_modules/zod/v3/helpers/typeAliases.js +1 -0
- package/node_modules/zod/v3/helpers/util.cjs +137 -0
- package/node_modules/zod/v3/helpers/util.d.cts +85 -0
- package/node_modules/zod/v3/helpers/util.d.ts +85 -0
- package/node_modules/zod/v3/helpers/util.js +133 -0
- package/node_modules/zod/v3/index.cjs +33 -0
- package/node_modules/zod/v3/index.d.cts +4 -0
- package/node_modules/zod/v3/index.d.ts +4 -0
- package/node_modules/zod/v3/index.js +4 -0
- package/node_modules/zod/v3/locales/en.cjs +111 -0
- package/node_modules/zod/v3/locales/en.d.cts +3 -0
- package/node_modules/zod/v3/locales/en.d.ts +3 -0
- package/node_modules/zod/v3/locales/en.js +109 -0
- package/node_modules/zod/v3/standard-schema.cjs +2 -0
- package/node_modules/zod/v3/standard-schema.d.cts +102 -0
- package/node_modules/zod/v3/standard-schema.d.ts +102 -0
- package/node_modules/zod/v3/standard-schema.js +1 -0
- package/node_modules/zod/v3/types.cjs +3775 -0
- package/node_modules/zod/v3/types.d.cts +1031 -0
- package/node_modules/zod/v3/types.d.ts +1031 -0
- package/node_modules/zod/v3/types.js +3693 -0
- package/node_modules/zod/v4/classic/checks.cjs +32 -0
- package/node_modules/zod/v4/classic/checks.d.cts +1 -0
- package/node_modules/zod/v4/classic/checks.d.ts +1 -0
- package/node_modules/zod/v4/classic/checks.js +1 -0
- package/node_modules/zod/v4/classic/coerce.cjs +47 -0
- package/node_modules/zod/v4/classic/coerce.d.cts +17 -0
- package/node_modules/zod/v4/classic/coerce.d.ts +17 -0
- package/node_modules/zod/v4/classic/coerce.js +17 -0
- package/node_modules/zod/v4/classic/compat.cjs +57 -0
- package/node_modules/zod/v4/classic/compat.d.cts +46 -0
- package/node_modules/zod/v4/classic/compat.d.ts +46 -0
- package/node_modules/zod/v4/classic/compat.js +27 -0
- package/node_modules/zod/v4/classic/errors.cjs +67 -0
- package/node_modules/zod/v4/classic/errors.d.cts +30 -0
- package/node_modules/zod/v4/classic/errors.d.ts +30 -0
- package/node_modules/zod/v4/classic/errors.js +41 -0
- package/node_modules/zod/v4/classic/external.cjs +70 -0
- package/node_modules/zod/v4/classic/external.d.cts +13 -0
- package/node_modules/zod/v4/classic/external.d.ts +13 -0
- package/node_modules/zod/v4/classic/external.js +18 -0
- package/node_modules/zod/v4/classic/index.cjs +33 -0
- package/node_modules/zod/v4/classic/index.d.cts +4 -0
- package/node_modules/zod/v4/classic/index.d.ts +4 -0
- package/node_modules/zod/v4/classic/index.js +4 -0
- package/node_modules/zod/v4/classic/iso.cjs +60 -0
- package/node_modules/zod/v4/classic/iso.d.cts +22 -0
- package/node_modules/zod/v4/classic/iso.d.ts +22 -0
- package/node_modules/zod/v4/classic/iso.js +30 -0
- package/node_modules/zod/v4/classic/parse.cjs +32 -0
- package/node_modules/zod/v4/classic/parse.d.cts +23 -0
- package/node_modules/zod/v4/classic/parse.d.ts +23 -0
- package/node_modules/zod/v4/classic/parse.js +6 -0
- package/node_modules/zod/v4/classic/schemas.cjs +1109 -0
- package/node_modules/zod/v4/classic/schemas.d.cts +630 -0
- package/node_modules/zod/v4/classic/schemas.d.ts +630 -0
- package/node_modules/zod/v4/classic/schemas.js +1006 -0
- package/node_modules/zod/v4/core/api.cjs +1039 -0
- package/node_modules/zod/v4/core/api.d.cts +284 -0
- package/node_modules/zod/v4/core/api.d.ts +284 -0
- package/node_modules/zod/v4/core/api.js +906 -0
- package/node_modules/zod/v4/core/checks.cjs +591 -0
- package/node_modules/zod/v4/core/checks.d.cts +278 -0
- package/node_modules/zod/v4/core/checks.d.ts +278 -0
- package/node_modules/zod/v4/core/checks.js +565 -0
- package/node_modules/zod/v4/core/core.cjs +67 -0
- package/node_modules/zod/v4/core/core.d.cts +49 -0
- package/node_modules/zod/v4/core/core.d.ts +49 -0
- package/node_modules/zod/v4/core/core.js +61 -0
- package/node_modules/zod/v4/core/doc.cjs +39 -0
- package/node_modules/zod/v4/core/doc.d.cts +14 -0
- package/node_modules/zod/v4/core/doc.d.ts +14 -0
- package/node_modules/zod/v4/core/doc.js +35 -0
- package/node_modules/zod/v4/core/errors.cjs +226 -0
- package/node_modules/zod/v4/core/errors.d.cts +208 -0
- package/node_modules/zod/v4/core/errors.d.ts +208 -0
- package/node_modules/zod/v4/core/errors.js +195 -0
- package/node_modules/zod/v4/core/function.cjs +102 -0
- package/node_modules/zod/v4/core/function.d.cts +52 -0
- package/node_modules/zod/v4/core/function.d.ts +52 -0
- package/node_modules/zod/v4/core/function.js +75 -0
- package/node_modules/zod/v4/core/index.cjs +44 -0
- package/node_modules/zod/v4/core/index.d.cts +15 -0
- package/node_modules/zod/v4/core/index.d.ts +15 -0
- package/node_modules/zod/v4/core/index.js +15 -0
- package/node_modules/zod/v4/core/json-schema.cjs +2 -0
- package/node_modules/zod/v4/core/json-schema.d.cts +87 -0
- package/node_modules/zod/v4/core/json-schema.d.ts +87 -0
- package/node_modules/zod/v4/core/json-schema.js +1 -0
- package/node_modules/zod/v4/core/parse.cjs +87 -0
- package/node_modules/zod/v4/core/parse.d.cts +25 -0
- package/node_modules/zod/v4/core/parse.d.ts +25 -0
- package/node_modules/zod/v4/core/parse.js +57 -0
- package/node_modules/zod/v4/core/regexes.cjs +103 -0
- package/node_modules/zod/v4/core/regexes.d.cts +62 -0
- package/node_modules/zod/v4/core/regexes.d.ts +62 -0
- package/node_modules/zod/v4/core/regexes.js +95 -0
- package/node_modules/zod/v4/core/registries.cjs +56 -0
- package/node_modules/zod/v4/core/registries.d.cts +35 -0
- package/node_modules/zod/v4/core/registries.d.ts +35 -0
- package/node_modules/zod/v4/core/registries.js +51 -0
- package/node_modules/zod/v4/core/schemas.cjs +1748 -0
- package/node_modules/zod/v4/core/schemas.d.cts +1041 -0
- package/node_modules/zod/v4/core/schemas.d.ts +1041 -0
- package/node_modules/zod/v4/core/schemas.js +1717 -0
- package/node_modules/zod/v4/core/standard-schema.cjs +2 -0
- package/node_modules/zod/v4/core/standard-schema.d.cts +55 -0
- package/node_modules/zod/v4/core/standard-schema.d.ts +55 -0
- package/node_modules/zod/v4/core/standard-schema.js +1 -0
- package/node_modules/zod/v4/core/to-json-schema.cjs +854 -0
- package/node_modules/zod/v4/core/to-json-schema.d.cts +88 -0
- package/node_modules/zod/v4/core/to-json-schema.d.ts +88 -0
- package/node_modules/zod/v4/core/to-json-schema.js +849 -0
- package/node_modules/zod/v4/core/util.cjs +539 -0
- package/node_modules/zod/v4/core/util.d.cts +183 -0
- package/node_modules/zod/v4/core/util.d.ts +183 -0
- package/node_modules/zod/v4/core/util.js +493 -0
- package/node_modules/zod/v4/core/versions.cjs +8 -0
- package/node_modules/zod/v4/core/versions.d.cts +5 -0
- package/node_modules/zod/v4/core/versions.d.ts +5 -0
- package/node_modules/zod/v4/core/versions.js +5 -0
- package/node_modules/zod/v4/index.cjs +22 -0
- package/node_modules/zod/v4/index.d.cts +3 -0
- package/node_modules/zod/v4/index.d.ts +3 -0
- package/node_modules/zod/v4/index.js +3 -0
- package/node_modules/zod/v4/locales/ar.cjs +142 -0
- package/node_modules/zod/v4/locales/ar.d.cts +4 -0
- package/node_modules/zod/v4/locales/ar.d.ts +4 -0
- package/node_modules/zod/v4/locales/ar.js +116 -0
- package/node_modules/zod/v4/locales/az.cjs +141 -0
- package/node_modules/zod/v4/locales/az.d.cts +4 -0
- package/node_modules/zod/v4/locales/az.d.ts +4 -0
- package/node_modules/zod/v4/locales/az.js +115 -0
- package/node_modules/zod/v4/locales/be.cjs +190 -0
- package/node_modules/zod/v4/locales/be.d.cts +4 -0
- package/node_modules/zod/v4/locales/be.d.ts +4 -0
- package/node_modules/zod/v4/locales/be.js +164 -0
- package/node_modules/zod/v4/locales/ca.cjs +144 -0
- package/node_modules/zod/v4/locales/ca.d.cts +4 -0
- package/node_modules/zod/v4/locales/ca.d.ts +4 -0
- package/node_modules/zod/v4/locales/ca.js +118 -0
- package/node_modules/zod/v4/locales/cs.cjs +161 -0
- package/node_modules/zod/v4/locales/cs.d.cts +4 -0
- package/node_modules/zod/v4/locales/cs.d.ts +4 -0
- package/node_modules/zod/v4/locales/cs.js +135 -0
- package/node_modules/zod/v4/locales/de.cjs +142 -0
- package/node_modules/zod/v4/locales/de.d.cts +4 -0
- package/node_modules/zod/v4/locales/de.d.ts +4 -0
- package/node_modules/zod/v4/locales/de.js +116 -0
- package/node_modules/zod/v4/locales/en.cjs +145 -0
- package/node_modules/zod/v4/locales/en.d.cts +5 -0
- package/node_modules/zod/v4/locales/en.d.ts +5 -0
- package/node_modules/zod/v4/locales/en.js +117 -0
- package/node_modules/zod/v4/locales/eo.cjs +144 -0
- package/node_modules/zod/v4/locales/eo.d.cts +5 -0
- package/node_modules/zod/v4/locales/eo.d.ts +5 -0
- package/node_modules/zod/v4/locales/eo.js +116 -0
- package/node_modules/zod/v4/locales/es.cjs +143 -0
- package/node_modules/zod/v4/locales/es.d.cts +4 -0
- package/node_modules/zod/v4/locales/es.d.ts +4 -0
- package/node_modules/zod/v4/locales/es.js +117 -0
- package/node_modules/zod/v4/locales/fa.cjs +148 -0
- package/node_modules/zod/v4/locales/fa.d.cts +4 -0
- package/node_modules/zod/v4/locales/fa.d.ts +4 -0
- package/node_modules/zod/v4/locales/fa.js +122 -0
- package/node_modules/zod/v4/locales/fi.cjs +148 -0
- package/node_modules/zod/v4/locales/fi.d.cts +4 -0
- package/node_modules/zod/v4/locales/fi.d.ts +4 -0
- package/node_modules/zod/v4/locales/fi.js +122 -0
- package/node_modules/zod/v4/locales/fr-CA.cjs +143 -0
- package/node_modules/zod/v4/locales/fr-CA.d.cts +4 -0
- package/node_modules/zod/v4/locales/fr-CA.d.ts +4 -0
- package/node_modules/zod/v4/locales/fr-CA.js +117 -0
- package/node_modules/zod/v4/locales/fr.cjs +142 -0
- package/node_modules/zod/v4/locales/fr.d.cts +4 -0
- package/node_modules/zod/v4/locales/fr.d.ts +4 -0
- package/node_modules/zod/v4/locales/fr.js +116 -0
- package/node_modules/zod/v4/locales/he.cjs +143 -0
- package/node_modules/zod/v4/locales/he.d.cts +4 -0
- package/node_modules/zod/v4/locales/he.d.ts +4 -0
- package/node_modules/zod/v4/locales/he.js +117 -0
- package/node_modules/zod/v4/locales/hu.cjs +143 -0
- package/node_modules/zod/v4/locales/hu.d.cts +4 -0
- package/node_modules/zod/v4/locales/hu.d.ts +4 -0
- package/node_modules/zod/v4/locales/hu.js +117 -0
- package/node_modules/zod/v4/locales/id.cjs +142 -0
- package/node_modules/zod/v4/locales/id.d.cts +4 -0
- package/node_modules/zod/v4/locales/id.d.ts +4 -0
- package/node_modules/zod/v4/locales/id.js +116 -0
- package/node_modules/zod/v4/locales/index.cjs +84 -0
- package/node_modules/zod/v4/locales/index.d.cts +39 -0
- package/node_modules/zod/v4/locales/index.d.ts +39 -0
- package/node_modules/zod/v4/locales/index.js +39 -0
- package/node_modules/zod/v4/locales/it.cjs +143 -0
- package/node_modules/zod/v4/locales/it.d.cts +4 -0
- package/node_modules/zod/v4/locales/it.d.ts +4 -0
- package/node_modules/zod/v4/locales/it.js +117 -0
- package/node_modules/zod/v4/locales/ja.cjs +141 -0
- package/node_modules/zod/v4/locales/ja.d.cts +4 -0
- package/node_modules/zod/v4/locales/ja.d.ts +4 -0
- package/node_modules/zod/v4/locales/ja.js +115 -0
- package/node_modules/zod/v4/locales/kh.cjs +143 -0
- package/node_modules/zod/v4/locales/kh.d.cts +4 -0
- package/node_modules/zod/v4/locales/kh.d.ts +4 -0
- package/node_modules/zod/v4/locales/kh.js +117 -0
- package/node_modules/zod/v4/locales/ko.cjs +147 -0
- package/node_modules/zod/v4/locales/ko.d.cts +4 -0
- package/node_modules/zod/v4/locales/ko.d.ts +4 -0
- package/node_modules/zod/v4/locales/ko.js +121 -0
- package/node_modules/zod/v4/locales/mk.cjs +144 -0
- package/node_modules/zod/v4/locales/mk.d.cts +4 -0
- package/node_modules/zod/v4/locales/mk.d.ts +4 -0
- package/node_modules/zod/v4/locales/mk.js +118 -0
- package/node_modules/zod/v4/locales/ms.cjs +142 -0
- package/node_modules/zod/v4/locales/ms.d.cts +4 -0
- package/node_modules/zod/v4/locales/ms.d.ts +4 -0
- package/node_modules/zod/v4/locales/ms.js +116 -0
- package/node_modules/zod/v4/locales/nl.cjs +143 -0
- package/node_modules/zod/v4/locales/nl.d.cts +4 -0
- package/node_modules/zod/v4/locales/nl.d.ts +4 -0
- package/node_modules/zod/v4/locales/nl.js +117 -0
- package/node_modules/zod/v4/locales/no.cjs +142 -0
- package/node_modules/zod/v4/locales/no.d.cts +4 -0
- package/node_modules/zod/v4/locales/no.d.ts +4 -0
- package/node_modules/zod/v4/locales/no.js +116 -0
- package/node_modules/zod/v4/locales/ota.cjs +143 -0
- package/node_modules/zod/v4/locales/ota.d.cts +4 -0
- package/node_modules/zod/v4/locales/ota.d.ts +4 -0
- package/node_modules/zod/v4/locales/ota.js +117 -0
- package/node_modules/zod/v4/locales/pl.cjs +143 -0
- package/node_modules/zod/v4/locales/pl.d.cts +4 -0
- package/node_modules/zod/v4/locales/pl.d.ts +4 -0
- package/node_modules/zod/v4/locales/pl.js +117 -0
- package/node_modules/zod/v4/locales/ps.cjs +148 -0
- package/node_modules/zod/v4/locales/ps.d.cts +4 -0
- package/node_modules/zod/v4/locales/ps.d.ts +4 -0
- package/node_modules/zod/v4/locales/ps.js +122 -0
- package/node_modules/zod/v4/locales/pt.cjs +142 -0
- package/node_modules/zod/v4/locales/pt.d.cts +4 -0
- package/node_modules/zod/v4/locales/pt.d.ts +4 -0
- package/node_modules/zod/v4/locales/pt.js +116 -0
- package/node_modules/zod/v4/locales/ru.cjs +190 -0
- package/node_modules/zod/v4/locales/ru.d.cts +4 -0
- package/node_modules/zod/v4/locales/ru.d.ts +4 -0
- package/node_modules/zod/v4/locales/ru.js +164 -0
- package/node_modules/zod/v4/locales/sl.cjs +143 -0
- package/node_modules/zod/v4/locales/sl.d.cts +4 -0
- package/node_modules/zod/v4/locales/sl.d.ts +4 -0
- package/node_modules/zod/v4/locales/sl.js +117 -0
- package/node_modules/zod/v4/locales/sv.cjs +144 -0
- package/node_modules/zod/v4/locales/sv.d.cts +4 -0
- package/node_modules/zod/v4/locales/sv.d.ts +4 -0
- package/node_modules/zod/v4/locales/sv.js +118 -0
- package/node_modules/zod/v4/locales/ta.cjs +143 -0
- package/node_modules/zod/v4/locales/ta.d.cts +4 -0
- package/node_modules/zod/v4/locales/ta.d.ts +4 -0
- package/node_modules/zod/v4/locales/ta.js +117 -0
- package/node_modules/zod/v4/locales/th.cjs +143 -0
- package/node_modules/zod/v4/locales/th.d.cts +4 -0
- package/node_modules/zod/v4/locales/th.d.ts +4 -0
- package/node_modules/zod/v4/locales/th.js +117 -0
- package/node_modules/zod/v4/locales/tr.cjs +143 -0
- package/node_modules/zod/v4/locales/tr.d.cts +5 -0
- package/node_modules/zod/v4/locales/tr.d.ts +5 -0
- package/node_modules/zod/v4/locales/tr.js +115 -0
- package/node_modules/zod/v4/locales/ua.cjs +143 -0
- package/node_modules/zod/v4/locales/ua.d.cts +4 -0
- package/node_modules/zod/v4/locales/ua.d.ts +4 -0
- package/node_modules/zod/v4/locales/ua.js +117 -0
- package/node_modules/zod/v4/locales/ur.cjs +143 -0
- package/node_modules/zod/v4/locales/ur.d.cts +4 -0
- package/node_modules/zod/v4/locales/ur.d.ts +4 -0
- package/node_modules/zod/v4/locales/ur.js +117 -0
- package/node_modules/zod/v4/locales/vi.cjs +142 -0
- package/node_modules/zod/v4/locales/vi.d.cts +4 -0
- package/node_modules/zod/v4/locales/vi.d.ts +4 -0
- package/node_modules/zod/v4/locales/vi.js +116 -0
- package/node_modules/zod/v4/locales/zh-CN.cjs +142 -0
- package/node_modules/zod/v4/locales/zh-CN.d.cts +4 -0
- package/node_modules/zod/v4/locales/zh-CN.d.ts +4 -0
- package/node_modules/zod/v4/locales/zh-CN.js +116 -0
- package/node_modules/zod/v4/locales/zh-TW.cjs +143 -0
- package/node_modules/zod/v4/locales/zh-TW.d.cts +4 -0
- package/node_modules/zod/v4/locales/zh-TW.d.ts +4 -0
- package/node_modules/zod/v4/locales/zh-TW.js +117 -0
- package/node_modules/zod/v4/mini/checks.cjs +34 -0
- package/node_modules/zod/v4/mini/checks.d.cts +1 -0
- package/node_modules/zod/v4/mini/checks.d.ts +1 -0
- package/node_modules/zod/v4/mini/checks.js +1 -0
- package/node_modules/zod/v4/mini/coerce.cjs +47 -0
- package/node_modules/zod/v4/mini/coerce.d.cts +7 -0
- package/node_modules/zod/v4/mini/coerce.d.ts +7 -0
- package/node_modules/zod/v4/mini/coerce.js +17 -0
- package/node_modules/zod/v4/mini/external.cjs +62 -0
- package/node_modules/zod/v4/mini/external.d.cts +11 -0
- package/node_modules/zod/v4/mini/external.d.ts +11 -0
- package/node_modules/zod/v4/mini/external.js +13 -0
- package/node_modules/zod/v4/mini/index.cjs +32 -0
- package/node_modules/zod/v4/mini/index.d.cts +3 -0
- package/node_modules/zod/v4/mini/index.d.ts +3 -0
- package/node_modules/zod/v4/mini/index.js +3 -0
- package/node_modules/zod/v4/mini/iso.cjs +60 -0
- package/node_modules/zod/v4/mini/iso.d.cts +22 -0
- package/node_modules/zod/v4/mini/iso.d.ts +22 -0
- package/node_modules/zod/v4/mini/iso.js +30 -0
- package/node_modules/zod/v4/mini/parse.cjs +8 -0
- package/node_modules/zod/v4/mini/parse.d.cts +1 -0
- package/node_modules/zod/v4/mini/parse.d.ts +1 -0
- package/node_modules/zod/v4/mini/parse.js +1 -0
- package/node_modules/zod/v4/mini/schemas.cjs +839 -0
- package/node_modules/zod/v4/mini/schemas.d.cts +356 -0
- package/node_modules/zod/v4/mini/schemas.d.ts +356 -0
- package/node_modules/zod/v4/mini/schemas.js +732 -0
- package/node_modules/zod/v4-mini/index.cjs +17 -0
- package/node_modules/zod/v4-mini/index.d.cts +1 -0
- package/node_modules/zod/v4-mini/index.d.ts +1 -0
- package/node_modules/zod/v4-mini/index.js +1 -0
- package/package.json +97 -0
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Streaming sentinel→real substitution for forwarded HTTP request bodies.
|
|
3
|
+
*
|
|
4
|
+
* The proxy substitutes masked-credential sentinels in request headers
|
|
5
|
+
* (SentinelRegistry.substituteInHeaders); a credential a tool places in a
|
|
6
|
+
* request body (JSON payload, form post) would otherwise reach the API as
|
|
7
|
+
* the useless fake. Sentinels are exact-match strings over `[a-z0-9_-]`, so
|
|
8
|
+
* they survive JSON, form-urlencoded, multipart, and XML verbatim — a raw
|
|
9
|
+
* byte scan needs no format parsing. Bodies are never buffered whole:
|
|
10
|
+
* memory is bounded by one chunk plus a hold-back of `maxSentinelLength - 1`
|
|
11
|
+
* bytes carried across chunk boundaries.
|
|
12
|
+
*
|
|
13
|
+
* Fail-safe direction: substitution is fake→real, so a missed sentinel
|
|
14
|
+
* (compressed body, base64-wrapped, split by an encoder) means the FAKE
|
|
15
|
+
* value reaches the API and auth fails — never a leaked secret.
|
|
16
|
+
*/
|
|
17
|
+
import { Transform } from 'node:stream';
|
|
18
|
+
import { logForDebugging } from '../utils/debug.js';
|
|
19
|
+
import { BODYLESS_METHODS } from './request-filter.js';
|
|
20
|
+
/** True when substitution cannot change the body length. */
|
|
21
|
+
export function allLengthMatched(pairs) {
|
|
22
|
+
return pairs.every(p => p.sentinel.length === p.realValue.length);
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Build the substitution Transform for one forwarded request, or undefined
|
|
26
|
+
* when the body must keep the existing bare pipe, byte-identical: bodyless
|
|
27
|
+
* method, no credential injectable at `destHost`, or a Content-Encoding the
|
|
28
|
+
* byte scan cannot see through.
|
|
29
|
+
*
|
|
30
|
+
* When substitution can change the body length (some injectable sentinel is
|
|
31
|
+
* not length-matched with its real value — e.g. a caller-minted JWT-shaped
|
|
32
|
+
* fake), Content-Length is deleted from `fwdHeaders` so the outbound
|
|
33
|
+
* request re-frames as chunked; otherwise Content-Length stays verbatim.
|
|
34
|
+
*/
|
|
35
|
+
export function prepareBodySubstitution(getBodySubstitutions, req, fwdHeaders, destHost) {
|
|
36
|
+
if (getBodySubstitutions === undefined)
|
|
37
|
+
return undefined;
|
|
38
|
+
// A bodyless-method request can still carry a declared body (GET-with-body
|
|
39
|
+
// APIs are legal HTTP and forwarded today) — skip only when there is
|
|
40
|
+
// provably nothing to scan.
|
|
41
|
+
const declaresBody = req.headers['content-length'] !== undefined ||
|
|
42
|
+
req.headers['transfer-encoding'] !== undefined;
|
|
43
|
+
if (BODYLESS_METHODS.has(req.method ?? 'GET') && !declaresBody) {
|
|
44
|
+
return undefined;
|
|
45
|
+
}
|
|
46
|
+
const pairs = getBodySubstitutions(destHost);
|
|
47
|
+
if (!pairs?.length)
|
|
48
|
+
return undefined;
|
|
49
|
+
if (req.headers['content-encoding'] !== undefined) {
|
|
50
|
+
// Fail-safe direction: an encoded body cannot be scanned for sentinel
|
|
51
|
+
// bytes, so it passes through unchanged — a sentinel in it reaches the
|
|
52
|
+
// upstream as the useless fake and auth fails, but the real secret
|
|
53
|
+
// cannot leak. Warn so the resulting 401 is diagnosable.
|
|
54
|
+
logForDebugging(`[body-substitution] ${destHost}: request body has Content-Encoding ` +
|
|
55
|
+
`"${String(req.headers['content-encoding'])}"; masked-credential ` +
|
|
56
|
+
`substitution skipped — a sentinel in this body reaches the ` +
|
|
57
|
+
`upstream as the fake value`, { level: 'warn' });
|
|
58
|
+
return undefined;
|
|
59
|
+
}
|
|
60
|
+
if (!allLengthMatched(pairs)) {
|
|
61
|
+
delete fwdHeaders['content-length'];
|
|
62
|
+
}
|
|
63
|
+
return createBodySubstitutionTransform(pairs);
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Transform that replaces every occurrence of each pair's sentinel bytes
|
|
67
|
+
* with its real-value bytes.
|
|
68
|
+
*
|
|
69
|
+
* Boundary-safe: the last `maxSentinelLength - 1` bytes of each chunk are
|
|
70
|
+
* held back and prepended to the next chunk, so a sentinel split across any
|
|
71
|
+
* chunk boundary is still seen whole; the hold-back is flushed on stream
|
|
72
|
+
* end. Replacement is left-to-right, resuming after each replacement — the
|
|
73
|
+
* substituted real value is never rescanned. Backpressure propagates
|
|
74
|
+
* through normal Transform semantics.
|
|
75
|
+
*/
|
|
76
|
+
export function createBodySubstitutionTransform(pairs) {
|
|
77
|
+
const maxLen = Math.max(...pairs.map(p => p.sentinel.length));
|
|
78
|
+
let carry;
|
|
79
|
+
return new Transform({
|
|
80
|
+
transform(chunk, encoding, callback) {
|
|
81
|
+
const buf = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk, encoding);
|
|
82
|
+
const work = carry?.length ? Buffer.concat([carry, buf]) : buf;
|
|
83
|
+
const { out, tail } = substitute(work, pairs, maxLen);
|
|
84
|
+
carry = tail;
|
|
85
|
+
callback(null, out);
|
|
86
|
+
},
|
|
87
|
+
flush(callback) {
|
|
88
|
+
// The hold-back cannot contain a complete sentinel — the scan loop
|
|
89
|
+
// only stops when no full match remains — so it flushes verbatim.
|
|
90
|
+
callback(null, carry?.length ? carry : undefined);
|
|
91
|
+
},
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
function substitute(work, pairs, maxLen) {
|
|
95
|
+
const parts = [];
|
|
96
|
+
let pos = 0;
|
|
97
|
+
for (;;) {
|
|
98
|
+
// Earliest match across all pairs (typically 1–3 sentinels per host).
|
|
99
|
+
// Matching is earliest-position-then-registration-order, not
|
|
100
|
+
// longest-match — sound because no sentinel is a substring of another
|
|
101
|
+
// (registerWithSentinel's caller contract).
|
|
102
|
+
let matchIdx = -1;
|
|
103
|
+
let matchPair;
|
|
104
|
+
for (const p of pairs) {
|
|
105
|
+
const i = work.indexOf(p.sentinel, pos);
|
|
106
|
+
if (i !== -1 && (matchIdx === -1 || i < matchIdx)) {
|
|
107
|
+
matchIdx = i;
|
|
108
|
+
matchPair = p;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
if (matchPair === undefined)
|
|
112
|
+
break;
|
|
113
|
+
parts.push(work.subarray(pos, matchIdx), matchPair.realValue);
|
|
114
|
+
pos = matchIdx + matchPair.sentinel.length;
|
|
115
|
+
}
|
|
116
|
+
// Hold back the longest suffix that could still be a proper prefix of a
|
|
117
|
+
// sentinel completed by the next chunk. A partial match of a sentinel of
|
|
118
|
+
// length L occupies at most L-1 trailing bytes, so maxLen-1 always covers
|
|
119
|
+
// it. Copied (not a subarray view) so the carry never aliases a buffer
|
|
120
|
+
// the stream may reuse.
|
|
121
|
+
const tailStart = Math.max(pos, work.length - (maxLen - 1));
|
|
122
|
+
parts.push(work.subarray(pos, tailStart));
|
|
123
|
+
return {
|
|
124
|
+
out: Buffer.concat(parts),
|
|
125
|
+
tail: Buffer.from(work.subarray(tailStart)),
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=body-substitution.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"body-substitution.js","sourceRoot":"","sources":["../../src/sandbox/body-substitution.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Linked AWS credential pairs for SigV4 re-signing.
|
|
3
|
+
*
|
|
4
|
+
* The sentinel registry maps independent name→value fakes, but SigV4
|
|
5
|
+
* needs the access key id, secret access key, and optional session token
|
|
6
|
+
* linked as ONE credential: the signature is an HMAC derived from the
|
|
7
|
+
* secret, so a request signed with the fake secret must be re-signed with
|
|
8
|
+
* the real one — and the only reliable trigger is the fake access key id
|
|
9
|
+
* appearing in the signature's credential scope.
|
|
10
|
+
*
|
|
11
|
+
* Pairs come from two sources (see {@link registerAwsPairs}):
|
|
12
|
+
* - an explicit `credentials.awsPairs` grouping, for non-standard
|
|
13
|
+
* variable names;
|
|
14
|
+
* - auto-detection of the conventional AWS_ACCESS_KEY_ID /
|
|
15
|
+
* AWS_SECRET_ACCESS_KEY / AWS_SESSION_TOKEN trio when those vars are
|
|
16
|
+
* masked whole-value — the names the AWS SDKs and CLI actually read, so
|
|
17
|
+
* masking them is the opt-in.
|
|
18
|
+
*
|
|
19
|
+
* {@link createSigv4Planner} builds the per-request hook the
|
|
20
|
+
* TLS-terminating proxy runs: exact-match the referenced access key id
|
|
21
|
+
* against registered pair sentinels, classify the signature shape, and
|
|
22
|
+
* either plan a re-sign (header-sigv4) or apply the configured
|
|
23
|
+
* deny/passthrough policy (streaming, presigned, sigv4a).
|
|
24
|
+
*/
|
|
25
|
+
import type { IncomingHttpHeaders } from 'node:http';
|
|
26
|
+
import type { HostMatcher } from './credential-sentinel.js';
|
|
27
|
+
import type { AwsPairConfig, CredentialEnvVarConfig, Sigv4Config } from './sandbox-config.js';
|
|
28
|
+
/** Conventional env var names the AWS SDKs and CLI read credentials from. */
|
|
29
|
+
export declare const AWS_ACCESS_KEY_ID_VAR = "AWS_ACCESS_KEY_ID";
|
|
30
|
+
export declare const AWS_SECRET_ACCESS_KEY_VAR = "AWS_SECRET_ACCESS_KEY";
|
|
31
|
+
export declare const AWS_SESSION_TOKEN_VAR = "AWS_SESSION_TOKEN";
|
|
32
|
+
export interface AwsCredentialPair {
|
|
33
|
+
/** The fake access key id the sandboxed process holds (the sentinel). */
|
|
34
|
+
readonly accessKeyIdSentinel: string;
|
|
35
|
+
readonly realAccessKeyId: string;
|
|
36
|
+
readonly realSecretAccessKey: string;
|
|
37
|
+
readonly realSessionToken?: string;
|
|
38
|
+
/**
|
|
39
|
+
* Hosts where the pair may be injected — the access-key-id entry's
|
|
40
|
+
* effective injectHosts. Requests to other hosts keep the fake
|
|
41
|
+
* signature untouched, same as ordinary sentinel substitution.
|
|
42
|
+
*/
|
|
43
|
+
readonly injectHosts: readonly string[];
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* AWS pairs for one sandbox session, keyed by the access-key-id sentinel.
|
|
47
|
+
* Like the sentinel registry, it lives only in process memory — never
|
|
48
|
+
* written to disk, never logged.
|
|
49
|
+
*/
|
|
50
|
+
export declare class AwsPairRegistry {
|
|
51
|
+
private readonly bySentinel;
|
|
52
|
+
/** Insert or replace the pair keyed on its access-key-id sentinel. */
|
|
53
|
+
register(pair: AwsCredentialPair): void;
|
|
54
|
+
/** Exact-match lookup by the fake access key id; never pattern-based. */
|
|
55
|
+
lookup(accessKeyIdSentinel: string): AwsCredentialPair | undefined;
|
|
56
|
+
get size(): number;
|
|
57
|
+
/** Drop every pair. Called on session teardown. */
|
|
58
|
+
clear(): void;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Register AWS credential pairs from the masked env vars.
|
|
62
|
+
*
|
|
63
|
+
* Runs after `buildMaskedEnvVars`: `setEnvVars` maps each masked variable
|
|
64
|
+
* to its fake in-sandbox value, which for whole-value masking IS the
|
|
65
|
+
* sentinel. Pair specs are the explicit `credentials.awsPairs` entries
|
|
66
|
+
* plus — when none of them claims a conventional name — an implicit
|
|
67
|
+
* AWS_ACCESS_KEY_ID / AWS_SECRET_ACCESS_KEY / AWS_SESSION_TOKEN spec.
|
|
68
|
+
*
|
|
69
|
+
* A spec registers only when both the access-key-id and secret variables
|
|
70
|
+
* were actually masked (present in the host env, whole-value entries in
|
|
71
|
+
* `setEnvVars`); the session token joins the pair when its variable was
|
|
72
|
+
* masked too. A partially available spec is skipped — with one loud
|
|
73
|
+
* warning for the dangerous half-masking: a masked secret without a
|
|
74
|
+
* masked access key id means SigV4 requests carry a real key id (so
|
|
75
|
+
* nothing triggers re-signing) over a fake-secret signature that can
|
|
76
|
+
* never verify.
|
|
77
|
+
*/
|
|
78
|
+
export declare function registerAwsPairs(envVars: readonly CredentialEnvVarConfig[], awsPairs: readonly AwsPairConfig[] | undefined, allowedDomains: readonly string[], setEnvVars: Readonly<Record<string, string>>, registry: AwsPairRegistry, env?: Record<string, string | undefined>): void;
|
|
79
|
+
export type Sigv4Policy = 'deny' | 'passthrough';
|
|
80
|
+
export declare function resolveSigv4Policies(config: Sigv4Config | undefined): {
|
|
81
|
+
streaming: "passthrough" | "deny";
|
|
82
|
+
presigned: "passthrough" | "deny";
|
|
83
|
+
sigv4a: "passthrough" | "deny";
|
|
84
|
+
};
|
|
85
|
+
/** Decision for one request, produced before header substitution runs. */
|
|
86
|
+
export type Sigv4Plan = {
|
|
87
|
+
action: 'deny';
|
|
88
|
+
reason: string;
|
|
89
|
+
} | {
|
|
90
|
+
action: 'resign';
|
|
91
|
+
/**
|
|
92
|
+
* Payload hash to sign. `undefined` means the client signed a
|
|
93
|
+
* literal body hash (or none): the caller must buffer the body,
|
|
94
|
+
* SHA-256 it, and pass the hex digest to `apply` — the hash must
|
|
95
|
+
* cover the bytes actually sent upstream.
|
|
96
|
+
*/
|
|
97
|
+
payloadHash: string | undefined;
|
|
98
|
+
/**
|
|
99
|
+
* Mutate the outgoing (post-substitution) headers in place:
|
|
100
|
+
* replace Authorization with the real-credential signature, pin
|
|
101
|
+
* x-amz-content-sha256 to the signed hash, and inject the real
|
|
102
|
+
* session token when the pair carries one.
|
|
103
|
+
*/
|
|
104
|
+
apply(headers: IncomingHttpHeaders, hostHeader: string, payloadHash: string): void;
|
|
105
|
+
};
|
|
106
|
+
/**
|
|
107
|
+
* Per-request SigV4 hook for the TLS-terminating proxy. Returns
|
|
108
|
+
* `undefined` when the request is not the re-signer's to handle (no
|
|
109
|
+
* SigV4 signature, unknown/real access key id, destination outside the
|
|
110
|
+
* pair's injectHosts, or a passthrough policy) — the proxy then forwards
|
|
111
|
+
* it exactly as before this feature existed.
|
|
112
|
+
*
|
|
113
|
+
* Must be called with the ORIGINAL client headers, before sentinel
|
|
114
|
+
* substitution: detection matches the fake access key id, which
|
|
115
|
+
* substitution would have already replaced.
|
|
116
|
+
*/
|
|
117
|
+
export type PlanSigv4 = (method: string, requestTarget: string, headers: IncomingHttpHeaders, destHost: string) => Sigv4Plan | undefined;
|
|
118
|
+
/**
|
|
119
|
+
* Build the {@link PlanSigv4} hook from the session's pair registry and
|
|
120
|
+
* configured policies. `matches` is the same host matcher used for
|
|
121
|
+
* sentinel substitution, so injectHosts gating is consistent across both.
|
|
122
|
+
*/
|
|
123
|
+
export declare function createSigv4Planner(registry: AwsPairRegistry, config: Sigv4Config | undefined, matches: HostMatcher): PlanSigv4;
|
|
124
|
+
//# sourceMappingURL=credential-aws-pairs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"credential-aws-pairs.d.ts","sourceRoot":"","sources":["../../src/sandbox/credential-aws-pairs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAA;AASpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AAC3D,OAAO,KAAK,EACV,aAAa,EACb,sBAAsB,EACtB,WAAW,EACZ,MAAM,qBAAqB,CAAA;AAE5B,6EAA6E;AAC7E,eAAO,MAAM,qBAAqB,sBAAsB,CAAA;AACxD,eAAO,MAAM,yBAAyB,0BAA0B,CAAA;AAChE,eAAO,MAAM,qBAAqB,sBAAsB,CAAA;AAExD,MAAM,WAAW,iBAAiB;IAChC,yEAAyE;IACzE,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAA;IACpC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;IAChC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAA;IACpC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;IAClC;;;;OAIG;IACH,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAA;CACxC;AAED;;;;GAIG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAuC;IAElE,sEAAsE;IACtE,QAAQ,CAAC,IAAI,EAAE,iBAAiB,GAAG,IAAI;IAIvC,yEAAyE;IACzE,MAAM,CAAC,mBAAmB,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAIlE,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,mDAAmD;IACnD,KAAK,IAAI,IAAI;CAGd;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,SAAS,sBAAsB,EAAE,EAC1C,QAAQ,EAAE,SAAS,aAAa,EAAE,GAAG,SAAS,EAC9C,cAAc,EAAE,SAAS,MAAM,EAAE,EACjC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAC5C,QAAQ,EAAE,eAAe,EACzB,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,GACpD,IAAI,CAmFN;AAED,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,aAAa,CAAA;AAQhD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS;;;;EAMnE;AAED,0EAA0E;AAC1E,MAAM,MAAM,SAAS,GACjB;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAClC;IACE,MAAM,EAAE,QAAQ,CAAA;IAChB;;;;;OAKG;IACH,WAAW,EAAE,MAAM,GAAG,SAAS,CAAA;IAC/B;;;;;OAKG;IACH,KAAK,CACH,OAAO,EAAE,mBAAmB,EAC5B,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,GAClB,IAAI,CAAA;CACR,CAAA;AAEL;;;;;;;;;;GAUG;AACH,MAAM,MAAM,SAAS,GAAG,CACtB,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,mBAAmB,EAC5B,QAAQ,EAAE,MAAM,KACb,SAAS,GAAG,SAAS,CAAA;AAE1B;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,eAAe,EACzB,MAAM,EAAE,WAAW,GAAG,SAAS,EAC/B,OAAO,EAAE,WAAW,GACnB,SAAS,CAoHX"}
|
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Linked AWS credential pairs for SigV4 re-signing.
|
|
3
|
+
*
|
|
4
|
+
* The sentinel registry maps independent name→value fakes, but SigV4
|
|
5
|
+
* needs the access key id, secret access key, and optional session token
|
|
6
|
+
* linked as ONE credential: the signature is an HMAC derived from the
|
|
7
|
+
* secret, so a request signed with the fake secret must be re-signed with
|
|
8
|
+
* the real one — and the only reliable trigger is the fake access key id
|
|
9
|
+
* appearing in the signature's credential scope.
|
|
10
|
+
*
|
|
11
|
+
* Pairs come from two sources (see {@link registerAwsPairs}):
|
|
12
|
+
* - an explicit `credentials.awsPairs` grouping, for non-standard
|
|
13
|
+
* variable names;
|
|
14
|
+
* - auto-detection of the conventional AWS_ACCESS_KEY_ID /
|
|
15
|
+
* AWS_SECRET_ACCESS_KEY / AWS_SESSION_TOKEN trio when those vars are
|
|
16
|
+
* masked whole-value — the names the AWS SDKs and CLI actually read, so
|
|
17
|
+
* masking them is the opt-in.
|
|
18
|
+
*
|
|
19
|
+
* {@link createSigv4Planner} builds the per-request hook the
|
|
20
|
+
* TLS-terminating proxy runs: exact-match the referenced access key id
|
|
21
|
+
* against registered pair sentinels, classify the signature shape, and
|
|
22
|
+
* either plan a re-sign (header-sigv4) or apply the configured
|
|
23
|
+
* deny/passthrough policy (streaming, presigned, sigv4a).
|
|
24
|
+
*/
|
|
25
|
+
import { logForDebugging } from '../utils/debug.js';
|
|
26
|
+
import { detectSigv4, parseSigv4Authorization, signSigv4, singleHeader, UNSIGNED_PAYLOAD, } from './aws-sigv4.js';
|
|
27
|
+
/** Conventional env var names the AWS SDKs and CLI read credentials from. */
|
|
28
|
+
export const AWS_ACCESS_KEY_ID_VAR = 'AWS_ACCESS_KEY_ID';
|
|
29
|
+
export const AWS_SECRET_ACCESS_KEY_VAR = 'AWS_SECRET_ACCESS_KEY';
|
|
30
|
+
export const AWS_SESSION_TOKEN_VAR = 'AWS_SESSION_TOKEN';
|
|
31
|
+
/**
|
|
32
|
+
* AWS pairs for one sandbox session, keyed by the access-key-id sentinel.
|
|
33
|
+
* Like the sentinel registry, it lives only in process memory — never
|
|
34
|
+
* written to disk, never logged.
|
|
35
|
+
*/
|
|
36
|
+
export class AwsPairRegistry {
|
|
37
|
+
constructor() {
|
|
38
|
+
this.bySentinel = new Map();
|
|
39
|
+
}
|
|
40
|
+
/** Insert or replace the pair keyed on its access-key-id sentinel. */
|
|
41
|
+
register(pair) {
|
|
42
|
+
this.bySentinel.set(pair.accessKeyIdSentinel, pair);
|
|
43
|
+
}
|
|
44
|
+
/** Exact-match lookup by the fake access key id; never pattern-based. */
|
|
45
|
+
lookup(accessKeyIdSentinel) {
|
|
46
|
+
return this.bySentinel.get(accessKeyIdSentinel);
|
|
47
|
+
}
|
|
48
|
+
get size() {
|
|
49
|
+
return this.bySentinel.size;
|
|
50
|
+
}
|
|
51
|
+
/** Drop every pair. Called on session teardown. */
|
|
52
|
+
clear() {
|
|
53
|
+
this.bySentinel.clear();
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Register AWS credential pairs from the masked env vars.
|
|
58
|
+
*
|
|
59
|
+
* Runs after `buildMaskedEnvVars`: `setEnvVars` maps each masked variable
|
|
60
|
+
* to its fake in-sandbox value, which for whole-value masking IS the
|
|
61
|
+
* sentinel. Pair specs are the explicit `credentials.awsPairs` entries
|
|
62
|
+
* plus — when none of them claims a conventional name — an implicit
|
|
63
|
+
* AWS_ACCESS_KEY_ID / AWS_SECRET_ACCESS_KEY / AWS_SESSION_TOKEN spec.
|
|
64
|
+
*
|
|
65
|
+
* A spec registers only when both the access-key-id and secret variables
|
|
66
|
+
* were actually masked (present in the host env, whole-value entries in
|
|
67
|
+
* `setEnvVars`); the session token joins the pair when its variable was
|
|
68
|
+
* masked too. A partially available spec is skipped — with one loud
|
|
69
|
+
* warning for the dangerous half-masking: a masked secret without a
|
|
70
|
+
* masked access key id means SigV4 requests carry a real key id (so
|
|
71
|
+
* nothing triggers re-signing) over a fake-secret signature that can
|
|
72
|
+
* never verify.
|
|
73
|
+
*/
|
|
74
|
+
export function registerAwsPairs(envVars, awsPairs, allowedDomains, setEnvVars, registry, env = process.env) {
|
|
75
|
+
const specs = [...(awsPairs ?? [])];
|
|
76
|
+
const explicitNames = new Set(specs.flatMap(p => [
|
|
77
|
+
p.accessKeyIdVar,
|
|
78
|
+
p.secretAccessKeyVar,
|
|
79
|
+
...(p.sessionTokenVar ? [p.sessionTokenVar] : []),
|
|
80
|
+
]));
|
|
81
|
+
const conventional = [
|
|
82
|
+
AWS_ACCESS_KEY_ID_VAR,
|
|
83
|
+
AWS_SECRET_ACCESS_KEY_VAR,
|
|
84
|
+
AWS_SESSION_TOKEN_VAR,
|
|
85
|
+
];
|
|
86
|
+
if (!conventional.some(n => explicitNames.has(n))) {
|
|
87
|
+
specs.push({
|
|
88
|
+
accessKeyIdVar: AWS_ACCESS_KEY_ID_VAR,
|
|
89
|
+
secretAccessKeyVar: AWS_SECRET_ACCESS_KEY_VAR,
|
|
90
|
+
sessionTokenVar: AWS_SESSION_TOKEN_VAR,
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
// A variable is usable as a pair member when it has a whole-value
|
|
94
|
+
// mask entry AND was actually masked at runtime (set in the host env).
|
|
95
|
+
const wholeValueEntry = (name) => envVars.find(v => v.name === name &&
|
|
96
|
+
v.mode === 'mask' &&
|
|
97
|
+
v.extract === undefined &&
|
|
98
|
+
v.decode === undefined);
|
|
99
|
+
const maskedSentinel = (name) => wholeValueEntry(name) !== undefined ? setEnvVars[name] : undefined;
|
|
100
|
+
for (const spec of specs) {
|
|
101
|
+
const akidSentinel = maskedSentinel(spec.accessKeyIdVar);
|
|
102
|
+
const secretMasked = maskedSentinel(spec.secretAccessKeyVar) !== undefined;
|
|
103
|
+
const realAkid = env[spec.accessKeyIdVar];
|
|
104
|
+
const realSecret = env[spec.secretAccessKeyVar];
|
|
105
|
+
if (akidSentinel === undefined ||
|
|
106
|
+
!secretMasked ||
|
|
107
|
+
realAkid === undefined ||
|
|
108
|
+
realSecret === undefined) {
|
|
109
|
+
if (secretMasked && akidSentinel === undefined) {
|
|
110
|
+
const msg = `[sandbox-runtime] WARNING: "${spec.secretAccessKeyVar}" is ` +
|
|
111
|
+
`masked but "${spec.accessKeyIdVar}" is not, so no AWS ` +
|
|
112
|
+
`credential pair was registered. SigV4 requests will be signed ` +
|
|
113
|
+
`with the masked placeholder secret and the proxy cannot ` +
|
|
114
|
+
`detect or re-sign them — they will fail upstream. Mask both ` +
|
|
115
|
+
`variables (whole-value) to enable re-signing.`;
|
|
116
|
+
console.warn(msg);
|
|
117
|
+
logForDebugging(msg, { level: 'warn' });
|
|
118
|
+
}
|
|
119
|
+
continue;
|
|
120
|
+
}
|
|
121
|
+
const akidEntry = wholeValueEntry(spec.accessKeyIdVar);
|
|
122
|
+
const sessionSentinel = spec.sessionTokenVar !== undefined
|
|
123
|
+
? maskedSentinel(spec.sessionTokenVar)
|
|
124
|
+
: undefined;
|
|
125
|
+
const realSessionToken = sessionSentinel !== undefined && spec.sessionTokenVar !== undefined
|
|
126
|
+
? env[spec.sessionTokenVar]
|
|
127
|
+
: undefined;
|
|
128
|
+
registry.register({
|
|
129
|
+
accessKeyIdSentinel: akidSentinel,
|
|
130
|
+
realAccessKeyId: realAkid,
|
|
131
|
+
realSecretAccessKey: realSecret,
|
|
132
|
+
...(realSessionToken !== undefined ? { realSessionToken } : {}),
|
|
133
|
+
injectHosts: akidEntry.injectHosts ?? allowedDomains,
|
|
134
|
+
});
|
|
135
|
+
logForDebugging(`[credential-aws] registered SigV4 pair for ` +
|
|
136
|
+
`${spec.accessKeyIdVar}/${spec.secretAccessKeyVar}` +
|
|
137
|
+
(realSessionToken !== undefined ? ` (+session token)` : ''));
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
export function resolveSigv4Policies(config) {
|
|
141
|
+
return {
|
|
142
|
+
streaming: config?.streaming ?? 'deny',
|
|
143
|
+
presigned: config?.presigned ?? 'deny',
|
|
144
|
+
sigv4a: config?.sigv4a ?? 'deny',
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Build the {@link PlanSigv4} hook from the session's pair registry and
|
|
149
|
+
* configured policies. `matches` is the same host matcher used for
|
|
150
|
+
* sentinel substitution, so injectHosts gating is consistent across both.
|
|
151
|
+
*/
|
|
152
|
+
export function createSigv4Planner(registry, config, matches) {
|
|
153
|
+
const policies = resolveSigv4Policies(config);
|
|
154
|
+
return (method, requestTarget, headers, destHost) => {
|
|
155
|
+
if (registry.size === 0)
|
|
156
|
+
return undefined;
|
|
157
|
+
const detected = detectSigv4(headers, requestTarget);
|
|
158
|
+
if (detected === null)
|
|
159
|
+
return undefined;
|
|
160
|
+
const pair = registry.lookup(detected.accessKeyId);
|
|
161
|
+
// Unknown key id — including a real, unmasked AWS credential — is
|
|
162
|
+
// never rewritten and never denied.
|
|
163
|
+
if (pair === undefined)
|
|
164
|
+
return undefined;
|
|
165
|
+
if (!pair.injectHosts.some(p => matches(destHost, p)))
|
|
166
|
+
return undefined;
|
|
167
|
+
if (detected.kind !== 'header-sigv4') {
|
|
168
|
+
if (policies[detected.kind] === 'passthrough') {
|
|
169
|
+
logForDebugging(`[credential-aws] ${detected.kind} request with masked ` +
|
|
170
|
+
`credential passed through un-resigned per ` +
|
|
171
|
+
`credentials.sigv4.${detected.kind} (its signature covers ` +
|
|
172
|
+
`the placeholder secret and will fail upstream)`);
|
|
173
|
+
return undefined;
|
|
174
|
+
}
|
|
175
|
+
return {
|
|
176
|
+
action: 'deny',
|
|
177
|
+
reason: `AWS SigV4 ${detected.kind} request uses a masked credential ` +
|
|
178
|
+
`but cannot be re-signed by the sandbox proxy; denied by ` +
|
|
179
|
+
`policy. Set credentials.sigv4.${detected.kind} to ` +
|
|
180
|
+
`"passthrough" to forward it unmodified (it will fail ` +
|
|
181
|
+
`upstream: the signature covers the masked placeholder).`,
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
const auth = parseSigv4Authorization(singleHeader(headers.authorization));
|
|
185
|
+
if (auth === null) {
|
|
186
|
+
return {
|
|
187
|
+
action: 'deny',
|
|
188
|
+
reason: 'AWS SigV4 request uses a masked credential but its ' +
|
|
189
|
+
'Authorization header is malformed; the proxy cannot re-sign it.',
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
const amzDate = singleHeader(headers['x-amz-date']);
|
|
193
|
+
if (amzDate === undefined) {
|
|
194
|
+
return {
|
|
195
|
+
action: 'deny',
|
|
196
|
+
reason: 'AWS SigV4 request uses a masked credential but carries no ' +
|
|
197
|
+
'x-amz-date header; the proxy cannot re-sign it.',
|
|
198
|
+
};
|
|
199
|
+
}
|
|
200
|
+
// Presence check now so apply() cannot fail after the body was
|
|
201
|
+
// consumed. host is synthesized; a session token the pair carries
|
|
202
|
+
// is injected by apply().
|
|
203
|
+
const signedHeaders = [...auth.signedHeaders];
|
|
204
|
+
for (const name of signedHeaders) {
|
|
205
|
+
if (name === 'host')
|
|
206
|
+
continue;
|
|
207
|
+
if (name === 'x-amz-security-token' &&
|
|
208
|
+
pair.realSessionToken !== undefined) {
|
|
209
|
+
continue;
|
|
210
|
+
}
|
|
211
|
+
if (headers[name] === undefined) {
|
|
212
|
+
return {
|
|
213
|
+
action: 'deny',
|
|
214
|
+
reason: `AWS SigV4 request uses a masked credential but signed ` +
|
|
215
|
+
`header "${name}" is missing; the proxy cannot re-sign it.`,
|
|
216
|
+
};
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
if (pair.realSessionToken !== undefined &&
|
|
220
|
+
!signedHeaders.includes('x-amz-security-token')) {
|
|
221
|
+
signedHeaders.push('x-amz-security-token');
|
|
222
|
+
}
|
|
223
|
+
const contentSha = singleHeader(headers['x-amz-content-sha256']);
|
|
224
|
+
return {
|
|
225
|
+
action: 'resign',
|
|
226
|
+
payloadHash: contentSha === UNSIGNED_PAYLOAD ? UNSIGNED_PAYLOAD : undefined,
|
|
227
|
+
apply(fwdHeaders, hostHeader, payloadHash) {
|
|
228
|
+
if (pair.realSessionToken !== undefined) {
|
|
229
|
+
fwdHeaders['x-amz-security-token'] = pair.realSessionToken;
|
|
230
|
+
}
|
|
231
|
+
if (fwdHeaders['x-amz-content-sha256'] !== undefined &&
|
|
232
|
+
contentSha !== UNSIGNED_PAYLOAD) {
|
|
233
|
+
// The recomputed hash is authoritative: the signature must
|
|
234
|
+
// cover the bytes forwarded upstream, not the client's claim.
|
|
235
|
+
fwdHeaders['x-amz-content-sha256'] = payloadHash;
|
|
236
|
+
}
|
|
237
|
+
const { authorization } = signSigv4({
|
|
238
|
+
method,
|
|
239
|
+
requestTarget,
|
|
240
|
+
headers: fwdHeaders,
|
|
241
|
+
hostHeader,
|
|
242
|
+
signedHeaders,
|
|
243
|
+
payloadHash,
|
|
244
|
+
amzDate,
|
|
245
|
+
scope: {
|
|
246
|
+
date: auth.date,
|
|
247
|
+
region: auth.region,
|
|
248
|
+
service: auth.service,
|
|
249
|
+
},
|
|
250
|
+
accessKeyId: pair.realAccessKeyId,
|
|
251
|
+
secretAccessKey: pair.realSecretAccessKey,
|
|
252
|
+
});
|
|
253
|
+
fwdHeaders.authorization = authorization;
|
|
254
|
+
},
|
|
255
|
+
};
|
|
256
|
+
};
|
|
257
|
+
}
|
|
258
|
+
//# sourceMappingURL=credential-aws-pairs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"credential-aws-pairs.js","sourceRoot":"","sources":["../../src/sandbox/credential-aws-pairs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EACL,WAAW,EACX,uBAAuB,EACvB,SAAS,EACT,YAAY,EACZ,gBAAgB,GACjB,MAAM,gBAAgB,CAAA;AAQvB,6EAA6E;AAC7E,MAAM,CAAC,MAAM,qBAAqB,GAAG,mBAAmB,CAAA;AACxD,MAAM,CAAC,MAAM,yBAAyB,GAAG,uBAAuB,CAAA;AAChE,MAAM,CAAC,MAAM,qBAAqB,GAAG,mBAAmB,CAAA;AAgBxD;;;;GAIG;AACH,MAAM,OAAO,eAAe;IAA5B;QACmB,eAAU,GAAG,IAAI,GAAG,EAA6B,CAAA;IAoBpE,CAAC;IAlBC,sEAAsE;IACtE,QAAQ,CAAC,IAAuB;QAC9B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAA;IACrD,CAAC;IAED,yEAAyE;IACzE,MAAM,CAAC,mBAA2B;QAChC,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAA;IACjD,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAA;IAC7B,CAAC;IAED,mDAAmD;IACnD,KAAK;QACH,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAA;IACzB,CAAC;CACF;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,gBAAgB,CAC9B,OAA0C,EAC1C,QAA8C,EAC9C,cAAiC,EACjC,UAA4C,EAC5C,QAAyB,EACzB,MAA0C,OAAO,CAAC,GAAG;IAErD,MAAM,KAAK,GAAoB,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAA;IACpD,MAAM,aAAa,GAAG,IAAI,GAAG,CAC3B,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QACjB,CAAC,CAAC,cAAc;QAChB,CAAC,CAAC,kBAAkB;QACpB,GAAG,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KAClD,CAAC,CACH,CAAA;IACD,MAAM,YAAY,GAAG;QACnB,qBAAqB;QACrB,yBAAyB;QACzB,qBAAqB;KACtB,CAAA;IACD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAClD,KAAK,CAAC,IAAI,CAAC;YACT,cAAc,EAAE,qBAAqB;YACrC,kBAAkB,EAAE,yBAAyB;YAC7C,eAAe,EAAE,qBAAqB;SACvC,CAAC,CAAA;IACJ,CAAC;IAED,kEAAkE;IAClE,uEAAuE;IACvE,MAAM,eAAe,GAAG,CAAC,IAAY,EAAE,EAAE,CACvC,OAAO,CAAC,IAAI,CACV,CAAC,CAAC,EAAE,CACF,CAAC,CAAC,IAAI,KAAK,IAAI;QACf,CAAC,CAAC,IAAI,KAAK,MAAM;QACjB,CAAC,CAAC,OAAO,KAAK,SAAS;QACvB,CAAC,CAAC,MAAM,KAAK,SAAS,CACzB,CAAA;IACH,MAAM,cAAc,GAAG,CAAC,IAAY,EAAsB,EAAE,CAC1D,eAAe,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAEpE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,YAAY,GAAG,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;QACxD,MAAM,YAAY,GAAG,cAAc,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,SAAS,CAAA;QAC1E,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;QACzC,MAAM,UAAU,GAAG,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;QAC/C,IACE,YAAY,KAAK,SAAS;YAC1B,CAAC,YAAY;YACb,QAAQ,KAAK,SAAS;YACtB,UAAU,KAAK,SAAS,EACxB,CAAC;YACD,IAAI,YAAY,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;gBAC/C,MAAM,GAAG,GACP,+BAA+B,IAAI,CAAC,kBAAkB,OAAO;oBAC7D,eAAe,IAAI,CAAC,cAAc,sBAAsB;oBACxD,gEAAgE;oBAChE,0DAA0D;oBAC1D,8DAA8D;oBAC9D,+CAA+C,CAAA;gBACjD,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;gBACjB,eAAe,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAA;YACzC,CAAC;YACD,SAAQ;QACV,CAAC;QAED,MAAM,SAAS,GAAG,eAAe,CAAC,IAAI,CAAC,cAAc,CAAE,CAAA;QACvD,MAAM,eAAe,GACnB,IAAI,CAAC,eAAe,KAAK,SAAS;YAChC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,eAAe,CAAC;YACtC,CAAC,CAAC,SAAS,CAAA;QACf,MAAM,gBAAgB,GACpB,eAAe,KAAK,SAAS,IAAI,IAAI,CAAC,eAAe,KAAK,SAAS;YACjE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC;YAC3B,CAAC,CAAC,SAAS,CAAA;QAEf,QAAQ,CAAC,QAAQ,CAAC;YAChB,mBAAmB,EAAE,YAAY;YACjC,eAAe,EAAE,QAAQ;YACzB,mBAAmB,EAAE,UAAU;YAC/B,GAAG,CAAC,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/D,WAAW,EAAE,SAAS,CAAC,WAAW,IAAI,cAAc;SACrD,CAAC,CAAA;QACF,eAAe,CACb,6CAA6C;YAC3C,GAAG,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,kBAAkB,EAAE;YACnD,CAAC,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC,CAC9D,CAAA;IACH,CAAC;AACH,CAAC;AAUD,MAAM,UAAU,oBAAoB,CAAC,MAA+B;IAClE,OAAO;QACL,SAAS,EAAE,MAAM,EAAE,SAAS,IAAI,MAAM;QACtC,SAAS,EAAE,MAAM,EAAE,SAAS,IAAI,MAAM;QACtC,MAAM,EAAE,MAAM,EAAE,MAAM,IAAI,MAAM;KACT,CAAA;AAC3B,CAAC;AA6CD;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAChC,QAAyB,EACzB,MAA+B,EAC/B,OAAoB;IAEpB,MAAM,QAAQ,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAA;IAC7C,OAAO,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE;QAClD,IAAI,QAAQ,CAAC,IAAI,KAAK,CAAC;YAAE,OAAO,SAAS,CAAA;QACzC,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,EAAE,aAAa,CAAC,CAAA;QACpD,IAAI,QAAQ,KAAK,IAAI;YAAE,OAAO,SAAS,CAAA;QACvC,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAA;QAClD,kEAAkE;QAClE,oCAAoC;QACpC,IAAI,IAAI,KAAK,SAAS;YAAE,OAAO,SAAS,CAAA;QACxC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;YAAE,OAAO,SAAS,CAAA;QAEvE,IAAI,QAAQ,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;YACrC,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,aAAa,EAAE,CAAC;gBAC9C,eAAe,CACb,oBAAoB,QAAQ,CAAC,IAAI,uBAAuB;oBACtD,4CAA4C;oBAC5C,qBAAqB,QAAQ,CAAC,IAAI,yBAAyB;oBAC3D,gDAAgD,CACnD,CAAA;gBACD,OAAO,SAAS,CAAA;YAClB,CAAC;YACD,OAAO;gBACL,MAAM,EAAE,MAAM;gBACd,MAAM,EACJ,aAAa,QAAQ,CAAC,IAAI,oCAAoC;oBAC9D,0DAA0D;oBAC1D,iCAAiC,QAAQ,CAAC,IAAI,MAAM;oBACpD,uDAAuD;oBACvD,yDAAyD;aAC5D,CAAA;QACH,CAAC;QAED,MAAM,IAAI,GAAG,uBAAuB,CAAC,YAAY,CAAC,OAAO,CAAC,aAAa,CAAE,CAAC,CAAA;QAC1E,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAClB,OAAO;gBACL,MAAM,EAAE,MAAM;gBACd,MAAM,EACJ,qDAAqD;oBACrD,iEAAiE;aACpE,CAAA;QACH,CAAC;QACD,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAA;QACnD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,OAAO;gBACL,MAAM,EAAE,MAAM;gBACd,MAAM,EACJ,4DAA4D;oBAC5D,iDAAiD;aACpD,CAAA;QACH,CAAC;QACD,+DAA+D;QAC/D,kEAAkE;QAClE,0BAA0B;QAC1B,MAAM,aAAa,GAAG,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,CAAA;QAC7C,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;YACjC,IAAI,IAAI,KAAK,MAAM;gBAAE,SAAQ;YAC7B,IACE,IAAI,KAAK,sBAAsB;gBAC/B,IAAI,CAAC,gBAAgB,KAAK,SAAS,EACnC,CAAC;gBACD,SAAQ;YACV,CAAC;YACD,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;gBAChC,OAAO;oBACL,MAAM,EAAE,MAAM;oBACd,MAAM,EACJ,wDAAwD;wBACxD,WAAW,IAAI,4CAA4C;iBAC9D,CAAA;YACH,CAAC;QACH,CAAC;QACD,IACE,IAAI,CAAC,gBAAgB,KAAK,SAAS;YACnC,CAAC,aAAa,CAAC,QAAQ,CAAC,sBAAsB,CAAC,EAC/C,CAAC;YACD,aAAa,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAA;QAC5C,CAAC;QAED,MAAM,UAAU,GAAG,YAAY,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC,CAAA;QAChE,OAAO;YACL,MAAM,EAAE,QAAQ;YAChB,WAAW,EACT,UAAU,KAAK,gBAAgB,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS;YAChE,KAAK,CAAC,UAAU,EAAE,UAAU,EAAE,WAAW;gBACvC,IAAI,IAAI,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;oBACxC,UAAU,CAAC,sBAAsB,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAA;gBAC5D,CAAC;gBACD,IACE,UAAU,CAAC,sBAAsB,CAAC,KAAK,SAAS;oBAChD,UAAU,KAAK,gBAAgB,EAC/B,CAAC;oBACD,2DAA2D;oBAC3D,8DAA8D;oBAC9D,UAAU,CAAC,sBAAsB,CAAC,GAAG,WAAW,CAAA;gBAClD,CAAC;gBACD,MAAM,EAAE,aAAa,EAAE,GAAG,SAAS,CAAC;oBAClC,MAAM;oBACN,aAAa;oBACb,OAAO,EAAE,UAAU;oBACnB,UAAU;oBACV,aAAa;oBACb,WAAW;oBACX,OAAO;oBACP,KAAK,EAAE;wBACL,IAAI,EAAE,IAAI,CAAC,IAAI;wBACf,MAAM,EAAE,IAAI,CAAC,MAAM;wBACnB,OAAO,EAAE,IAAI,CAAC,OAAO;qBACtB;oBACD,WAAW,EAAE,IAAI,CAAC,eAAe;oBACjC,eAAe,EAAE,IAAI,CAAC,mBAAmB;iBAC1C,CAAC,CAAA;gBACF,UAAU,CAAC,aAAa,GAAG,aAAa,CAAA;YAC1C,CAAC;SACF,CAAA;IACH,CAAC,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Decoding support for encoded credential formats (`decode` on a
|
|
3
|
+
* `credentials.files` entry). Currently JWT only.
|
|
4
|
+
*
|
|
5
|
+
* Pure helpers: the default extraction pattern for finding JWT candidates
|
|
6
|
+
* in a file, the verification predicate that confirms a candidate actually
|
|
7
|
+
* is a JWT before it gets masked, and the minting of a JWT-shaped fake to
|
|
8
|
+
* stand in for the real token inside the sandbox.
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Default `extract` pattern for `decode: "jwt"` entries.
|
|
12
|
+
*
|
|
13
|
+
* A JWT's first segment is the base64url encoding of a JSON header that
|
|
14
|
+
* starts `{"` (it always declares `alg`/`typ`), and base64url of `{"` is
|
|
15
|
+
* `eyJ` — so every JWT starts with `eyJ`. Capture group 1 is the whole
|
|
16
|
+
* three-segment token. The pattern over-matches (any eyJ-prefixed
|
|
17
|
+
* base64url triple); {@link verifyJwt} filters the false positives.
|
|
18
|
+
*/
|
|
19
|
+
export declare const JWT_DEFAULT_EXTRACT_PATTERN = "(eyJ[A-Za-z0-9_-]+\\.[A-Za-z0-9_-]+\\.[A-Za-z0-9_-]+)";
|
|
20
|
+
/**
|
|
21
|
+
* True when `candidate` is structurally a JWT: three dot-separated
|
|
22
|
+
* segments, the first two base64url-decoding to JSON, and the header
|
|
23
|
+
* (segment 1) declaring an `alg` property.
|
|
24
|
+
*
|
|
25
|
+
* Used to filter extraction candidates before masking — a regex match
|
|
26
|
+
* that fails this check (e.g. a random base64 blob the default pattern
|
|
27
|
+
* over-matched) is left untouched rather than masked.
|
|
28
|
+
*/
|
|
29
|
+
export declare function verifyJwt(candidate: string): boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Mint a structurally valid fake JWT carrying the sentinel identity
|
|
32
|
+
* `fake_value_<uuid>` in its `sub` claim. Deterministic given `uuid`.
|
|
33
|
+
*
|
|
34
|
+
* The fake is parseable by client-side JWT handling (three segments, JSON
|
|
35
|
+
* header/payload, far-future `exp`), so a tool inside the sandbox that
|
|
36
|
+
* inspects the token before sending it doesn't break. The header says
|
|
37
|
+
* `alg: HS256` — NOT `alg: none` — deliberately: misconfigured validators
|
|
38
|
+
* accept `alg: none` tokens as valid, whereas an HS256 header forces every
|
|
39
|
+
* validator to attempt signature verification and reject the garbage
|
|
40
|
+
* signature. So if the fake ever reaches a verifier unswapped (e.g. sent
|
|
41
|
+
* to a non-injectHosts destination, the designed fail-closed pass-through),
|
|
42
|
+
* it is cryptographically rejected.
|
|
43
|
+
*/
|
|
44
|
+
export declare function mintFakeJwt(uuid: string): string;
|
|
45
|
+
/** Result of {@link maskJwtClaims}. */
|
|
46
|
+
export interface MaskedClaimsResult {
|
|
47
|
+
/**
|
|
48
|
+
* The rebuilt token: the original header segment verbatim, the modified
|
|
49
|
+
* payload re-encoded, and the fixed filler signature.
|
|
50
|
+
*/
|
|
51
|
+
fakeToken: string;
|
|
52
|
+
/** Claim name → the sentinel now carried in the fake payload. */
|
|
53
|
+
claimSentinels: Map<string, string>;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Claim-level masking for a verified JWT: replace each named top-level
|
|
57
|
+
* payload claim that is present with a string value by a caller-provided
|
|
58
|
+
* sentinel, and rebuild the token around the modified payload.
|
|
59
|
+
*
|
|
60
|
+
* The rebuilt token is `header.payload'.signature-filler`:
|
|
61
|
+
*
|
|
62
|
+
* - **Header**: the original base64url segment is reused verbatim, so the
|
|
63
|
+
* token still advertises the real `alg`/`typ`/`kid` and client-side
|
|
64
|
+
* header inspection sees exactly what it would outside the sandbox.
|
|
65
|
+
* - **Payload**: the decoded object with the named claims swapped for
|
|
66
|
+
* sentinels, re-encoded with `JSON.stringify`. Key order and whitespace
|
|
67
|
+
* inside the payload segment may differ from the original encoding —
|
|
68
|
+
* irrelevant to any JSON consumer, and the segment bytes change anyway
|
|
69
|
+
* because a claim value changed.
|
|
70
|
+
* - **Signature**: the fixed filler from {@link mintFakeJwt}, NOT the real
|
|
71
|
+
* signature. For RS/ES algorithms signature verification needs only the
|
|
72
|
+
* public key, so shipping the real signature over a modified payload
|
|
73
|
+
* would hand the sandbox an offline brute-force oracle for a low-entropy
|
|
74
|
+
* masked claim (guess the claim, re-encode, verify). The filler also
|
|
75
|
+
* keeps the fake a non-credential end to end, consistent with the
|
|
76
|
+
* garbage-signature rationale in {@link mintFakeJwt}.
|
|
77
|
+
*
|
|
78
|
+
* Claims that are absent from the payload, or present with a non-string
|
|
79
|
+
* value, are skipped (the caller logs them). Returns `null` — without
|
|
80
|
+
* invoking `sentinelFor` — when no named claim matched, or when the
|
|
81
|
+
* payload does not decode to a JSON object; the caller routes that
|
|
82
|
+
* through its no-match policy.
|
|
83
|
+
*
|
|
84
|
+
* Pure on `token`/`claims`; the callback may close over a registry.
|
|
85
|
+
*/
|
|
86
|
+
export declare function maskJwtClaims(token: string, claims: readonly string[], sentinelFor: (claim: string, realValue: string) => string): MaskedClaimsResult | null;
|
|
87
|
+
//# sourceMappingURL=credential-decode.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"credential-decode.d.ts","sourceRoot":"","sources":["../../src/sandbox/credential-decode.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH;;;;;;;;GAQG;AACH,eAAO,MAAM,2BAA2B,0DACiB,CAAA;AAWzD;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAQpD;AAeD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMhD;AAED,uCAAuC;AACvC,MAAM,WAAW,kBAAkB;IACjC;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAA;IACjB,iEAAiE;IACjE,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACpC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,SAAS,MAAM,EAAE,EACzB,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,MAAM,GACxD,kBAAkB,GAAG,IAAI,CA4B3B"}
|