From 54ef7a7083338e5423a9abca2bad9b1fc7d04269 Mon Sep 17 00:00:00 2001 From: robll-v1 <3922295484@qq.com> Date: Fri, 3 Apr 2026 11:34:59 +0800 Subject: [PATCH 1/3] feat: add GitHub provider support for Claude Code runtime Allow GitHub Models and Copilot-hosted Claude models to run through the existing Claude Code runtime without manual API key setup. --- bun.lock | 924 ++++++++++++++++++++- package.json | 28 + shims/audio-capture-napi/index.ts | 11 + shims/audio-capture-napi/package.json | 6 + shims/image-processor-napi/index.ts | 2 + shims/image-processor-napi/package.json | 6 + src/cli/handlers/auth.ts | 12 + src/cli/print.ts | 7 +- src/services/api/client.ts | 58 +- src/services/api/openaiCompatibleClient.ts | 867 +++++++++++++++++++ src/utils/apiPreconnect.ts | 17 +- src/utils/auth.ts | 62 +- src/utils/context.ts | 6 + src/utils/filePersistence/types.ts | 20 + src/utils/github/copilotApi.ts | 67 ++ src/utils/github/ghAuthToken.ts | 49 ++ src/utils/http.ts | 28 + src/utils/model/model.ts | 24 +- src/utils/model/modelOptions.ts | 54 +- src/utils/model/providerConfig.ts | 348 ++++++++ src/utils/model/providers.ts | 32 +- src/utils/settings/types.ts | 38 + src/utils/status.tsx | 36 +- src/utils/subprocessEnv.ts | 14 +- src/utils/swarm/spawnUtils.ts | 18 + 25 files changed, 2668 insertions(+), 66 deletions(-) create mode 100644 shims/audio-capture-napi/index.ts create mode 100644 shims/audio-capture-napi/package.json create mode 100644 shims/image-processor-napi/index.ts create mode 100644 shims/image-processor-napi/package.json create mode 100644 src/services/api/openaiCompatibleClient.ts create mode 100644 src/utils/github/copilotApi.ts create mode 100644 src/utils/github/ghAuthToken.ts create mode 100644 src/utils/model/providerConfig.ts diff --git a/bun.lock b/bun.lock index 83d50e45..12327307 100644 --- a/bun.lock +++ b/bun.lock @@ -10,36 +10,60 @@ "@ant/computer-use-input": "file:./shims/ant-computer-use-input", "@ant/computer-use-mcp": "file:./shims/ant-computer-use-mcp", "@ant/computer-use-swift": "file:./shims/ant-computer-use-swift", + "@anthropic-ai/bedrock-sdk": "*", "@anthropic-ai/claude-agent-sdk": "*", + "@anthropic-ai/foundry-sdk": "*", "@anthropic-ai/mcpb": "*", "@anthropic-ai/sandbox-runtime": "*", "@anthropic-ai/sdk": "*", + "@anthropic-ai/vertex-sdk": "*", + "@aws-sdk/client-bedrock": "*", "@aws-sdk/client-bedrock-runtime": "*", + "@aws-sdk/client-sts": "*", + "@aws-sdk/credential-provider-node": "*", + "@aws-sdk/credential-providers": "*", + "@azure/identity": "*", "@commander-js/extra-typings": "*", "@growthbook/growthbook": "*", "@modelcontextprotocol/sdk": "*", "@opentelemetry/api": "*", "@opentelemetry/api-logs": "*", "@opentelemetry/core": "*", + "@opentelemetry/exporter-logs-otlp-grpc": "*", + "@opentelemetry/exporter-logs-otlp-http": "*", + "@opentelemetry/exporter-logs-otlp-proto": "*", + "@opentelemetry/exporter-metrics-otlp-grpc": "*", + "@opentelemetry/exporter-metrics-otlp-http": "*", + "@opentelemetry/exporter-metrics-otlp-proto": "*", + "@opentelemetry/exporter-prometheus": "*", + "@opentelemetry/exporter-trace-otlp-grpc": "*", + "@opentelemetry/exporter-trace-otlp-http": "*", + "@opentelemetry/exporter-trace-otlp-proto": "*", "@opentelemetry/resources": "*", "@opentelemetry/sdk-logs": "*", "@opentelemetry/sdk-metrics": "*", "@opentelemetry/sdk-trace-base": "*", "@opentelemetry/semantic-conventions": "*", + "@smithy/core": "*", + "@smithy/node-http-handler": "*", "ajv": "*", "asciichart": "*", + "audio-capture-napi": "file:./shims/audio-capture-napi", "auto-bind": "*", "axios": "*", "bidi-js": "*", + "cacache": "*", "chalk": "*", "chokidar": "*", "cli-boxes": "*", + "cli-highlight": "*", "code-excerpt": "*", "color-diff-napi": "file:./shims/color-diff-napi", "diff": "*", "emoji-regex": "*", "env-paths": "*", "execa": "*", + "fflate": "*", "figures": "*", "fuse.js": "*", "get-east-asian-width": "*", @@ -47,6 +71,7 @@ "highlight.js": "*", "https-proxy-agent": "*", "ignore": "*", + "image-processor-napi": "file:./shims/image-processor-napi", "indent-string": "*", "ink": "*", "jsonc-parser": "*", @@ -56,17 +81,20 @@ "modifiers-napi": "file:./shims/modifiers-napi", "p-map": "*", "picomatch": "*", + "plist": "*", "proper-lockfile": "*", "qrcode": "*", "react": "*", "react-reconciler": "*", "semver": "*", + "sharp": "*", "shell-quote": "*", "signal-exit": "*", "stack-utils": "*", "strip-ansi": "*", "supports-hyperlinks": "*", "tree-kill": "*", + "turndown": "*", "type-fest": "*", "undici": "*", "url-handler-napi": "file:./shims/url-handler-napi", @@ -93,35 +121,49 @@ "@ant/computer-use-swift": ["@ant/computer-use-swift@file:shims/ant-computer-use-swift", {}], + "@anthropic-ai/bedrock-sdk": ["@anthropic-ai/bedrock-sdk@0.27.0", "", { "dependencies": { "@anthropic-ai/sdk": ">=0.50.3 <1", "@aws-crypto/sha256-js": "^4.0.0", "@aws-sdk/client-bedrock-runtime": "^3.797.0", "@aws-sdk/credential-providers": "^3.796.0", "@smithy/eventstream-serde-node": "^2.0.10", "@smithy/fetch-http-handler": "^5.0.4", "@smithy/protocol-http": "^3.0.6", "@smithy/signature-v4": "^3.1.1", "@smithy/smithy-client": "^2.1.9", "@smithy/types": "^2.3.4", "@smithy/util-base64": "^2.0.0" } }, "sha512-YA859YX2qJg8+kNQkEX5RUs4efcsgKTmEwb6AoxxTr3JD8uk/UciDUlOyF6xDR0EDI8vNaFaWle02ecrQZw2sQ=="], + "@anthropic-ai/claude-agent-sdk": ["@anthropic-ai/claude-agent-sdk@0.2.88", "https://mirrors.cloud.tencent.com/npm/@anthropic-ai/claude-agent-sdk/-/claude-agent-sdk-0.2.88.tgz", { "dependencies": { "@anthropic-ai/sdk": "^0.74.0", "@modelcontextprotocol/sdk": "^1.27.1" }, "optionalDependencies": { "@img/sharp-darwin-arm64": "^0.34.2", "@img/sharp-darwin-x64": "^0.34.2", "@img/sharp-linux-arm": "^0.34.2", "@img/sharp-linux-arm64": "^0.34.2", "@img/sharp-linux-x64": "^0.34.2", "@img/sharp-linuxmusl-arm64": "^0.34.2", "@img/sharp-linuxmusl-x64": "^0.34.2", "@img/sharp-win32-arm64": "^0.34.2", "@img/sharp-win32-x64": "^0.34.2" }, "peerDependencies": { "zod": "^4.0.0" } }, "sha512-hm9AYD8UGpGouOlmWB6kMRjIUCMtO13N3HDsviu7/htOXJZ/KKypgEd5yW04Ro6421SwX4KfQNrwayJ6R227+g=="], + "@anthropic-ai/foundry-sdk": ["@anthropic-ai/foundry-sdk@0.2.3", "", { "dependencies": { "@anthropic-ai/sdk": ">=0.50.3 <1" } }, "sha512-pD5yYnAeem5s8wDLbdf8/N8CejF/edRd9TJV+0PrT9tLKv6ggQimnr7d05pQn6FrIYACPmty9hekCo2JgepP0w=="], + "@anthropic-ai/mcpb": ["@anthropic-ai/mcpb@2.1.2", "https://mirrors.cloud.tencent.com/npm/@anthropic-ai/mcpb/-/mcpb-2.1.2.tgz", { "dependencies": { "@inquirer/prompts": "^6.0.1", "commander": "^13.1.0", "fflate": "^0.8.2", "galactus": "^1.0.0", "ignore": "^7.0.5", "node-forge": "^1.3.2", "pretty-bytes": "^5.6.0", "zod": "^3.25.67", "zod-to-json-schema": "^3.24.6" }, "bin": { "mcpb": "dist/cli/cli.js" } }, "sha512-goRbBC8ySo7SWb7tRzr+tL6FxDc4JPTRCdgfD2omba7freofvjq5rom1lBnYHZHo6Mizs1jAHJeN53aZbDoy8A=="], "@anthropic-ai/sandbox-runtime": ["@anthropic-ai/sandbox-runtime@0.0.44", "https://mirrors.cloud.tencent.com/npm/@anthropic-ai/sandbox-runtime/-/sandbox-runtime-0.0.44.tgz", { "dependencies": { "@pondwader/socks5-server": "^1.0.10", "@types/lodash-es": "^4.17.12", "commander": "^12.1.0", "lodash-es": "^4.17.23", "shell-quote": "^1.8.3", "zod": "^3.24.1" }, "bin": { "srt": "dist/cli.js" } }, "sha512-mmyjq0mzsHnQZyiU+FGYyaiJcPckuQpP78VB8iqFi2IOu8rcb9i5SmaOKyJENJNfY8l/1grzLMQgWq4Apvmozw=="], "@anthropic-ai/sdk": ["@anthropic-ai/sdk@0.80.0", "https://mirrors.cloud.tencent.com/npm/@anthropic-ai/sdk/-/sdk-0.80.0.tgz", { "dependencies": { "json-schema-to-ts": "^3.1.1" }, "peerDependencies": { "zod": "^3.25.0 || ^4.0.0" }, "optionalPeers": ["zod"], "bin": { "anthropic-ai-sdk": "bin/cli" } }, "sha512-WeXLn7zNVk3yjeshn+xZHvld6AoFUOR3Sep6pSoHho5YbSi6HwcirqgPA5ccFuW8QTVJAAU7N8uQQC6Wa9TG+g=="], + "@anthropic-ai/vertex-sdk": ["@anthropic-ai/vertex-sdk@0.14.4", "", { "dependencies": { "@anthropic-ai/sdk": ">=0.50.3 <1", "google-auth-library": "^9.4.2" } }, "sha512-BZUPRWghZxfSFtAxU563wH+jfWBPoedAwsVxG35FhmNsjeV8tyfN+lFriWhCpcZApxA4NdT6Soov+PzfnxxD5g=="], + "@aws-crypto/crc32": ["@aws-crypto/crc32@5.2.0", "https://mirrors.cloud.tencent.com/npm/@aws-crypto/crc32/-/crc32-5.2.0.tgz", { "dependencies": { "@aws-crypto/util": "^5.2.0", "@aws-sdk/types": "^3.222.0", "tslib": "^2.6.2" } }, "sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg=="], "@aws-crypto/sha256-browser": ["@aws-crypto/sha256-browser@5.2.0", "https://mirrors.cloud.tencent.com/npm/@aws-crypto/sha256-browser/-/sha256-browser-5.2.0.tgz", { "dependencies": { "@aws-crypto/sha256-js": "^5.2.0", "@aws-crypto/supports-web-crypto": "^5.2.0", "@aws-crypto/util": "^5.2.0", "@aws-sdk/types": "^3.222.0", "@aws-sdk/util-locate-window": "^3.0.0", "@smithy/util-utf8": "^2.0.0", "tslib": "^2.6.2" } }, "sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw=="], - "@aws-crypto/sha256-js": ["@aws-crypto/sha256-js@5.2.0", "https://mirrors.cloud.tencent.com/npm/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz", { "dependencies": { "@aws-crypto/util": "^5.2.0", "@aws-sdk/types": "^3.222.0", "tslib": "^2.6.2" } }, "sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA=="], + "@aws-crypto/sha256-js": ["@aws-crypto/sha256-js@4.0.0", "", { "dependencies": { "@aws-crypto/util": "^4.0.0", "@aws-sdk/types": "^3.222.0", "tslib": "^1.11.1" } }, "sha512-MHGJyjE7TX9aaqXj7zk2ppnFUOhaDs5sP+HtNS0evOxn72c+5njUmyJmpGd7TfyoDznZlHMmdo/xGUdu2NIjNQ=="], "@aws-crypto/supports-web-crypto": ["@aws-crypto/supports-web-crypto@5.2.0", "https://mirrors.cloud.tencent.com/npm/@aws-crypto/supports-web-crypto/-/supports-web-crypto-5.2.0.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg=="], - "@aws-crypto/util": ["@aws-crypto/util@5.2.0", "https://mirrors.cloud.tencent.com/npm/@aws-crypto/util/-/util-5.2.0.tgz", { "dependencies": { "@aws-sdk/types": "^3.222.0", "@smithy/util-utf8": "^2.0.0", "tslib": "^2.6.2" } }, "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ=="], + "@aws-crypto/util": ["@aws-crypto/util@4.0.0", "", { "dependencies": { "@aws-sdk/types": "^3.222.0", "@aws-sdk/util-utf8-browser": "^3.0.0", "tslib": "^1.11.1" } }, "sha512-2EnmPy2gsFZ6m8bwUQN4jq+IyXV3quHAcwPOS6ZA3k+geujiqI8aRokO2kFJe+idJ/P3v4qWI186rVMo0+zLDQ=="], + + "@aws-sdk/client-bedrock": ["@aws-sdk/client-bedrock@3.1022.0", "", { "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", "@aws-sdk/core": "^3.973.26", "@aws-sdk/credential-provider-node": "^3.972.29", "@aws-sdk/middleware-host-header": "^3.972.8", "@aws-sdk/middleware-logger": "^3.972.8", "@aws-sdk/middleware-recursion-detection": "^3.972.9", "@aws-sdk/middleware-user-agent": "^3.972.28", "@aws-sdk/region-config-resolver": "^3.972.10", "@aws-sdk/token-providers": "3.1022.0", "@aws-sdk/types": "^3.973.6", "@aws-sdk/util-endpoints": "^3.996.5", "@aws-sdk/util-user-agent-browser": "^3.972.8", "@aws-sdk/util-user-agent-node": "^3.973.14", "@smithy/config-resolver": "^4.4.13", "@smithy/core": "^3.23.13", "@smithy/fetch-http-handler": "^5.3.15", "@smithy/hash-node": "^4.2.12", "@smithy/invalid-dependency": "^4.2.12", "@smithy/middleware-content-length": "^4.2.12", "@smithy/middleware-endpoint": "^4.4.28", "@smithy/middleware-retry": "^4.4.46", "@smithy/middleware-serde": "^4.2.16", "@smithy/middleware-stack": "^4.2.12", "@smithy/node-config-provider": "^4.3.12", "@smithy/node-http-handler": "^4.5.1", "@smithy/protocol-http": "^5.3.12", "@smithy/smithy-client": "^4.12.8", "@smithy/types": "^4.13.1", "@smithy/url-parser": "^4.2.12", "@smithy/util-base64": "^4.3.2", "@smithy/util-body-length-browser": "^4.2.2", "@smithy/util-body-length-node": "^4.2.3", "@smithy/util-defaults-mode-browser": "^4.3.44", "@smithy/util-defaults-mode-node": "^4.2.48", "@smithy/util-endpoints": "^3.3.3", "@smithy/util-middleware": "^4.2.12", "@smithy/util-retry": "^4.2.13", "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" } }, "sha512-iuCuyItz3kU8ZIfV0SHcWAowSsRRLhEZ3NZQZ0QFaQI5D6sVZuZjX3IpdSm4FewReshQFq85jtLRFS9Sopwh4A=="], "@aws-sdk/client-bedrock-runtime": ["@aws-sdk/client-bedrock-runtime@3.1020.0", "https://mirrors.cloud.tencent.com/npm/@aws-sdk/client-bedrock-runtime/-/client-bedrock-runtime-3.1020.0.tgz", { "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", "@aws-sdk/core": "^3.973.26", "@aws-sdk/credential-provider-node": "^3.972.28", "@aws-sdk/eventstream-handler-node": "^3.972.12", "@aws-sdk/middleware-eventstream": "^3.972.8", "@aws-sdk/middleware-host-header": "^3.972.8", "@aws-sdk/middleware-logger": "^3.972.8", "@aws-sdk/middleware-recursion-detection": "^3.972.9", "@aws-sdk/middleware-user-agent": "^3.972.27", "@aws-sdk/middleware-websocket": "^3.972.14", "@aws-sdk/region-config-resolver": "^3.972.10", "@aws-sdk/token-providers": "3.1020.0", "@aws-sdk/types": "^3.973.6", "@aws-sdk/util-endpoints": "^3.996.5", "@aws-sdk/util-user-agent-browser": "^3.972.8", "@aws-sdk/util-user-agent-node": "^3.973.13", "@smithy/config-resolver": "^4.4.13", "@smithy/core": "^3.23.13", "@smithy/eventstream-serde-browser": "^4.2.12", "@smithy/eventstream-serde-config-resolver": "^4.3.12", "@smithy/eventstream-serde-node": "^4.2.12", "@smithy/fetch-http-handler": "^5.3.15", "@smithy/hash-node": "^4.2.12", "@smithy/invalid-dependency": "^4.2.12", "@smithy/middleware-content-length": "^4.2.12", "@smithy/middleware-endpoint": "^4.4.28", "@smithy/middleware-retry": "^4.4.45", "@smithy/middleware-serde": "^4.2.16", "@smithy/middleware-stack": "^4.2.12", "@smithy/node-config-provider": "^4.3.12", "@smithy/node-http-handler": "^4.5.1", "@smithy/protocol-http": "^5.3.12", "@smithy/smithy-client": "^4.12.8", "@smithy/types": "^4.13.1", "@smithy/url-parser": "^4.2.12", "@smithy/util-base64": "^4.3.2", "@smithy/util-body-length-browser": "^4.2.2", "@smithy/util-body-length-node": "^4.2.3", "@smithy/util-defaults-mode-browser": "^4.3.44", "@smithy/util-defaults-mode-node": "^4.2.48", "@smithy/util-endpoints": "^3.3.3", "@smithy/util-middleware": "^4.2.12", "@smithy/util-retry": "^4.2.12", "@smithy/util-stream": "^4.5.21", "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" } }, "sha512-nqDCbaB05gRc3FuIEN74Mo04+k8RNI0YT2YBAU/9nioqgDyoqzMx8Ia2QWaw9UhUyIHMBjcFEfKIPfCZx7caCw=="], + "@aws-sdk/client-cognito-identity": ["@aws-sdk/client-cognito-identity@3.1022.0", "", { "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", "@aws-sdk/core": "^3.973.26", "@aws-sdk/credential-provider-node": "^3.972.29", "@aws-sdk/middleware-host-header": "^3.972.8", "@aws-sdk/middleware-logger": "^3.972.8", "@aws-sdk/middleware-recursion-detection": "^3.972.9", "@aws-sdk/middleware-user-agent": "^3.972.28", "@aws-sdk/region-config-resolver": "^3.972.10", "@aws-sdk/types": "^3.973.6", "@aws-sdk/util-endpoints": "^3.996.5", "@aws-sdk/util-user-agent-browser": "^3.972.8", "@aws-sdk/util-user-agent-node": "^3.973.14", "@smithy/config-resolver": "^4.4.13", "@smithy/core": "^3.23.13", "@smithy/fetch-http-handler": "^5.3.15", "@smithy/hash-node": "^4.2.12", "@smithy/invalid-dependency": "^4.2.12", "@smithy/middleware-content-length": "^4.2.12", "@smithy/middleware-endpoint": "^4.4.28", "@smithy/middleware-retry": "^4.4.46", "@smithy/middleware-serde": "^4.2.16", "@smithy/middleware-stack": "^4.2.12", "@smithy/node-config-provider": "^4.3.12", "@smithy/node-http-handler": "^4.5.1", "@smithy/protocol-http": "^5.3.12", "@smithy/smithy-client": "^4.12.8", "@smithy/types": "^4.13.1", "@smithy/url-parser": "^4.2.12", "@smithy/util-base64": "^4.3.2", "@smithy/util-body-length-browser": "^4.2.2", "@smithy/util-body-length-node": "^4.2.3", "@smithy/util-defaults-mode-browser": "^4.3.44", "@smithy/util-defaults-mode-node": "^4.2.48", "@smithy/util-endpoints": "^3.3.3", "@smithy/util-middleware": "^4.2.12", "@smithy/util-retry": "^4.2.13", "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" } }, "sha512-ywWPOTRz+YyJ5lkaJsZhDjUNPi9VDqRy9hRe1msj+pyVtr3+MJO6gmPDWRzefVnEXT1xoB8/NGtqPTzRvn/O9g=="], + + "@aws-sdk/client-sts": ["@aws-sdk/client-sts@3.1022.0", "", { "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", "@aws-sdk/core": "^3.973.26", "@aws-sdk/credential-provider-node": "^3.972.29", "@aws-sdk/middleware-host-header": "^3.972.8", "@aws-sdk/middleware-logger": "^3.972.8", "@aws-sdk/middleware-recursion-detection": "^3.972.9", "@aws-sdk/middleware-user-agent": "^3.972.28", "@aws-sdk/region-config-resolver": "^3.972.10", "@aws-sdk/types": "^3.973.6", "@aws-sdk/util-endpoints": "^3.996.5", "@aws-sdk/util-user-agent-browser": "^3.972.8", "@aws-sdk/util-user-agent-node": "^3.973.14", "@smithy/config-resolver": "^4.4.13", "@smithy/core": "^3.23.13", "@smithy/fetch-http-handler": "^5.3.15", "@smithy/hash-node": "^4.2.12", "@smithy/invalid-dependency": "^4.2.12", "@smithy/middleware-content-length": "^4.2.12", "@smithy/middleware-endpoint": "^4.4.28", "@smithy/middleware-retry": "^4.4.46", "@smithy/middleware-serde": "^4.2.16", "@smithy/middleware-stack": "^4.2.12", "@smithy/node-config-provider": "^4.3.12", "@smithy/node-http-handler": "^4.5.1", "@smithy/protocol-http": "^5.3.12", "@smithy/smithy-client": "^4.12.8", "@smithy/types": "^4.13.1", "@smithy/url-parser": "^4.2.12", "@smithy/util-base64": "^4.3.2", "@smithy/util-body-length-browser": "^4.2.2", "@smithy/util-body-length-node": "^4.2.3", "@smithy/util-defaults-mode-browser": "^4.3.44", "@smithy/util-defaults-mode-node": "^4.2.48", "@smithy/util-endpoints": "^3.3.3", "@smithy/util-middleware": "^4.2.12", "@smithy/util-retry": "^4.2.13", "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" } }, "sha512-9GD0OAWcPXwx+MgP3PbgDQ3P1ZML3/gDdDpnuB3l6iStJd74qMhtz0mOPEsyJiFq2RPgHhq1DEtnd1aDXvj15w=="], + "@aws-sdk/core": ["@aws-sdk/core@3.973.26", "https://mirrors.cloud.tencent.com/npm/@aws-sdk/core/-/core-3.973.26.tgz", { "dependencies": { "@aws-sdk/types": "^3.973.6", "@aws-sdk/xml-builder": "^3.972.16", "@smithy/core": "^3.23.13", "@smithy/node-config-provider": "^4.3.12", "@smithy/property-provider": "^4.2.12", "@smithy/protocol-http": "^5.3.12", "@smithy/signature-v4": "^5.3.12", "@smithy/smithy-client": "^4.12.8", "@smithy/types": "^4.13.1", "@smithy/util-base64": "^4.3.2", "@smithy/util-middleware": "^4.2.12", "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" } }, "sha512-A/E6n2W42ruU+sfWk+mMUOyVXbsSgGrY3MJ9/0Az5qUdG67y8I6HYzzoAa+e/lzxxl1uCYmEL6BTMi9ZiZnplQ=="], + "@aws-sdk/credential-provider-cognito-identity": ["@aws-sdk/credential-provider-cognito-identity@3.972.21", "", { "dependencies": { "@aws-sdk/nested-clients": "^3.996.18", "@aws-sdk/types": "^3.973.6", "@smithy/property-provider": "^4.2.12", "@smithy/types": "^4.13.1", "tslib": "^2.6.2" } }, "sha512-3ooy5gLnMLgWtkxz53P9R0RiSSCCHn576kyfy/L88QXOqS/G4wYTsqoNJBGZ0Kg46FlQ9jZHuZThbyeEeXgW/g=="], + "@aws-sdk/credential-provider-env": ["@aws-sdk/credential-provider-env@3.972.24", "https://mirrors.cloud.tencent.com/npm/@aws-sdk/credential-provider-env/-/credential-provider-env-3.972.24.tgz", { "dependencies": { "@aws-sdk/core": "^3.973.26", "@aws-sdk/types": "^3.973.6", "@smithy/property-provider": "^4.2.12", "@smithy/types": "^4.13.1", "tslib": "^2.6.2" } }, "sha512-FWg8uFmT6vQM7VuzELzwVo5bzExGaKHdubn0StjgrcU5FvuLExUe+k06kn/40uKv59rYzhez8eFNM4yYE/Yb/w=="], "@aws-sdk/credential-provider-http": ["@aws-sdk/credential-provider-http@3.972.26", "https://mirrors.cloud.tencent.com/npm/@aws-sdk/credential-provider-http/-/credential-provider-http-3.972.26.tgz", { "dependencies": { "@aws-sdk/core": "^3.973.26", "@aws-sdk/types": "^3.973.6", "@smithy/fetch-http-handler": "^5.3.15", "@smithy/node-http-handler": "^4.5.1", "@smithy/property-provider": "^4.2.12", "@smithy/protocol-http": "^5.3.12", "@smithy/smithy-client": "^4.12.8", "@smithy/types": "^4.13.1", "@smithy/util-stream": "^4.5.21", "tslib": "^2.6.2" } }, "sha512-CY4ppZ+qHYqcXqBVi//sdHST1QK3KzOEiLtpLsc9W2k2vfZPKExGaQIsOwcyvjpjUEolotitmd3mUNY56IwDEA=="], "@aws-sdk/credential-provider-ini": ["@aws-sdk/credential-provider-ini@3.972.27", "https://mirrors.cloud.tencent.com/npm/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.972.27.tgz", { "dependencies": { "@aws-sdk/core": "^3.973.26", "@aws-sdk/credential-provider-env": "^3.972.24", "@aws-sdk/credential-provider-http": "^3.972.26", "@aws-sdk/credential-provider-login": "^3.972.27", "@aws-sdk/credential-provider-process": "^3.972.24", "@aws-sdk/credential-provider-sso": "^3.972.27", "@aws-sdk/credential-provider-web-identity": "^3.972.27", "@aws-sdk/nested-clients": "^3.996.17", "@aws-sdk/types": "^3.973.6", "@smithy/credential-provider-imds": "^4.2.12", "@smithy/property-provider": "^4.2.12", "@smithy/shared-ini-file-loader": "^4.4.7", "@smithy/types": "^4.13.1", "tslib": "^2.6.2" } }, "sha512-Um26EsNSUfVUX0wUXnUA1W3wzKhVy6nviEElsh5lLZUYj9bk6DXOPnpte0gt+WHubcVfVsRk40bbm4KaroTEag=="], - "@aws-sdk/credential-provider-login": ["@aws-sdk/credential-provider-login@3.972.27", "https://mirrors.cloud.tencent.com/npm/@aws-sdk/credential-provider-login/-/credential-provider-login-3.972.27.tgz", { "dependencies": { "@aws-sdk/core": "^3.973.26", "@aws-sdk/nested-clients": "^3.996.17", "@aws-sdk/types": "^3.973.6", "@smithy/property-provider": "^4.2.12", "@smithy/protocol-http": "^5.3.12", "@smithy/shared-ini-file-loader": "^4.4.7", "@smithy/types": "^4.13.1", "tslib": "^2.6.2" } }, "sha512-t3ehEtHomGZwg5Gixw4fYbYtG9JBnjfAjSDabxhPEu/KLLUp0BB37/APX7MSKXQhX6ZH7pseuACFJ19NrAkNdg=="], + "@aws-sdk/credential-provider-login": ["@aws-sdk/credential-provider-login@3.972.28", "", { "dependencies": { "@aws-sdk/core": "^3.973.26", "@aws-sdk/nested-clients": "^3.996.18", "@aws-sdk/types": "^3.973.6", "@smithy/property-provider": "^4.2.12", "@smithy/protocol-http": "^5.3.12", "@smithy/shared-ini-file-loader": "^4.4.7", "@smithy/types": "^4.13.1", "tslib": "^2.6.2" } }, "sha512-ZSTfO6jqUTCysbdBPtEX5OUR//3rbD0lN7jO3sQeS2Gjr/Y+DT6SbIJ0oT2cemNw3UzKu97sNONd1CwNMthuZQ=="], "@aws-sdk/credential-provider-node": ["@aws-sdk/credential-provider-node@3.972.28", "https://mirrors.cloud.tencent.com/npm/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.28.tgz", { "dependencies": { "@aws-sdk/credential-provider-env": "^3.972.24", "@aws-sdk/credential-provider-http": "^3.972.26", "@aws-sdk/credential-provider-ini": "^3.972.27", "@aws-sdk/credential-provider-process": "^3.972.24", "@aws-sdk/credential-provider-sso": "^3.972.27", "@aws-sdk/credential-provider-web-identity": "^3.972.27", "@aws-sdk/types": "^3.973.6", "@smithy/credential-provider-imds": "^4.2.12", "@smithy/property-provider": "^4.2.12", "@smithy/shared-ini-file-loader": "^4.4.7", "@smithy/types": "^4.13.1", "tslib": "^2.6.2" } }, "sha512-rren+P6k5rShG5PX61iVi40kKdueyuMLBRTctQbyR5LooO9Ygr5L6R7ilG7RF1957NSH3KC3TU206fZuKwjSpQ=="], @@ -131,6 +173,8 @@ "@aws-sdk/credential-provider-web-identity": ["@aws-sdk/credential-provider-web-identity@3.972.27", "https://mirrors.cloud.tencent.com/npm/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.972.27.tgz", { "dependencies": { "@aws-sdk/core": "^3.973.26", "@aws-sdk/nested-clients": "^3.996.17", "@aws-sdk/types": "^3.973.6", "@smithy/property-provider": "^4.2.12", "@smithy/shared-ini-file-loader": "^4.4.7", "@smithy/types": "^4.13.1", "tslib": "^2.6.2" } }, "sha512-CUY4hQIFswdQNEsRGEzGBUKGMK5KpqmNDdu2ROMgI+45PLFS8H0y3Tm7kvM16uvvw3n1pVxk85tnRVUTgtaa1w=="], + "@aws-sdk/credential-providers": ["@aws-sdk/credential-providers@3.1022.0", "", { "dependencies": { "@aws-sdk/client-cognito-identity": "3.1022.0", "@aws-sdk/core": "^3.973.26", "@aws-sdk/credential-provider-cognito-identity": "^3.972.21", "@aws-sdk/credential-provider-env": "^3.972.24", "@aws-sdk/credential-provider-http": "^3.972.26", "@aws-sdk/credential-provider-ini": "^3.972.28", "@aws-sdk/credential-provider-login": "^3.972.28", "@aws-sdk/credential-provider-node": "^3.972.29", "@aws-sdk/credential-provider-process": "^3.972.24", "@aws-sdk/credential-provider-sso": "^3.972.28", "@aws-sdk/credential-provider-web-identity": "^3.972.28", "@aws-sdk/nested-clients": "^3.996.18", "@aws-sdk/types": "^3.973.6", "@smithy/config-resolver": "^4.4.13", "@smithy/core": "^3.23.13", "@smithy/credential-provider-imds": "^4.2.12", "@smithy/node-config-provider": "^4.3.12", "@smithy/property-provider": "^4.2.12", "@smithy/types": "^4.13.1", "tslib": "^2.6.2" } }, "sha512-ew/sP2cA9y5s0moVr+6ZwZwAScuyLhpxH1Mr2k4W9jcUvNGBQPDkvGZXzYz77BXwgVTAnLOEfAHVBhxogwdvBA=="], + "@aws-sdk/eventstream-handler-node": ["@aws-sdk/eventstream-handler-node@3.972.12", "https://mirrors.cloud.tencent.com/npm/@aws-sdk/eventstream-handler-node/-/eventstream-handler-node-3.972.12.tgz", { "dependencies": { "@aws-sdk/types": "^3.973.6", "@smithy/eventstream-codec": "^4.2.12", "@smithy/types": "^4.13.1", "tslib": "^2.6.2" } }, "sha512-ruyc/MNR6e+cUrGCth7fLQ12RXBZDy/bV06tgqB9Z5n/0SN/C0m6bsQEV8FF9zPI6VSAOaRd0rNgmpYVnGawrQ=="], "@aws-sdk/middleware-eventstream": ["@aws-sdk/middleware-eventstream@3.972.8", "https://mirrors.cloud.tencent.com/npm/@aws-sdk/middleware-eventstream/-/middleware-eventstream-3.972.8.tgz", { "dependencies": { "@aws-sdk/types": "^3.973.6", "@smithy/protocol-http": "^5.3.12", "@smithy/types": "^4.13.1", "tslib": "^2.6.2" } }, "sha512-r+oP+tbCxgqXVC3pu3MUVePgSY0ILMjA+aEwOosS77m3/DRbtvHrHwqvMcw+cjANMeGzJ+i0ar+n77KXpRA8RQ=="], @@ -141,15 +185,15 @@ "@aws-sdk/middleware-recursion-detection": ["@aws-sdk/middleware-recursion-detection@3.972.9", "https://mirrors.cloud.tencent.com/npm/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.972.9.tgz", { "dependencies": { "@aws-sdk/types": "^3.973.6", "@aws/lambda-invoke-store": "^0.2.2", "@smithy/protocol-http": "^5.3.12", "@smithy/types": "^4.13.1", "tslib": "^2.6.2" } }, "sha512-/Wt5+CT8dpTFQxEJ9iGy/UGrXr7p2wlIOEHvIr/YcHYByzoLjrqkYqXdJjd9UIgWjv7eqV2HnFJen93UTuwfTQ=="], - "@aws-sdk/middleware-user-agent": ["@aws-sdk/middleware-user-agent@3.972.27", "https://mirrors.cloud.tencent.com/npm/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.972.27.tgz", { "dependencies": { "@aws-sdk/core": "^3.973.26", "@aws-sdk/types": "^3.973.6", "@aws-sdk/util-endpoints": "^3.996.5", "@smithy/core": "^3.23.13", "@smithy/protocol-http": "^5.3.12", "@smithy/types": "^4.13.1", "@smithy/util-retry": "^4.2.12", "tslib": "^2.6.2" } }, "sha512-TIRLO5UR2+FVUGmhYoAwVkKhcVzywEDX/5LzR9tjy1h8FQAXOtFg2IqgmwvxU7y933rkTn9rl6AdgcAUgQ1/Kg=="], + "@aws-sdk/middleware-user-agent": ["@aws-sdk/middleware-user-agent@3.972.28", "", { "dependencies": { "@aws-sdk/core": "^3.973.26", "@aws-sdk/types": "^3.973.6", "@aws-sdk/util-endpoints": "^3.996.5", "@smithy/core": "^3.23.13", "@smithy/protocol-http": "^5.3.12", "@smithy/types": "^4.13.1", "@smithy/util-retry": "^4.2.13", "tslib": "^2.6.2" } }, "sha512-cfWZFlVh7Va9lRay4PN2A9ARFzaBYcA097InT5M2CdRS05ECF5yaz86jET8Wsl2WcyKYEvVr/QNmKtYtafUHtQ=="], "@aws-sdk/middleware-websocket": ["@aws-sdk/middleware-websocket@3.972.14", "https://mirrors.cloud.tencent.com/npm/@aws-sdk/middleware-websocket/-/middleware-websocket-3.972.14.tgz", { "dependencies": { "@aws-sdk/types": "^3.973.6", "@aws-sdk/util-format-url": "^3.972.8", "@smithy/eventstream-codec": "^4.2.12", "@smithy/eventstream-serde-browser": "^4.2.12", "@smithy/fetch-http-handler": "^5.3.15", "@smithy/protocol-http": "^5.3.12", "@smithy/signature-v4": "^5.3.12", "@smithy/types": "^4.13.1", "@smithy/util-base64": "^4.3.2", "@smithy/util-hex-encoding": "^4.2.2", "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" } }, "sha512-qnfDlIHjm6DrTYNvWOUbnZdVKgtoKbO/Qzj+C0Wp5Y7VUrsvBRQtGKxD+hc+mRTS4N0kBJ6iZ3+zxm4N1OSyjg=="], - "@aws-sdk/nested-clients": ["@aws-sdk/nested-clients@3.996.17", "https://mirrors.cloud.tencent.com/npm/@aws-sdk/nested-clients/-/nested-clients-3.996.17.tgz", { "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", "@aws-sdk/core": "^3.973.26", "@aws-sdk/middleware-host-header": "^3.972.8", "@aws-sdk/middleware-logger": "^3.972.8", "@aws-sdk/middleware-recursion-detection": "^3.972.9", "@aws-sdk/middleware-user-agent": "^3.972.27", "@aws-sdk/region-config-resolver": "^3.972.10", "@aws-sdk/types": "^3.973.6", "@aws-sdk/util-endpoints": "^3.996.5", "@aws-sdk/util-user-agent-browser": "^3.972.8", "@aws-sdk/util-user-agent-node": "^3.973.13", "@smithy/config-resolver": "^4.4.13", "@smithy/core": "^3.23.13", "@smithy/fetch-http-handler": "^5.3.15", "@smithy/hash-node": "^4.2.12", "@smithy/invalid-dependency": "^4.2.12", "@smithy/middleware-content-length": "^4.2.12", "@smithy/middleware-endpoint": "^4.4.28", "@smithy/middleware-retry": "^4.4.45", "@smithy/middleware-serde": "^4.2.16", "@smithy/middleware-stack": "^4.2.12", "@smithy/node-config-provider": "^4.3.12", "@smithy/node-http-handler": "^4.5.1", "@smithy/protocol-http": "^5.3.12", "@smithy/smithy-client": "^4.12.8", "@smithy/types": "^4.13.1", "@smithy/url-parser": "^4.2.12", "@smithy/util-base64": "^4.3.2", "@smithy/util-body-length-browser": "^4.2.2", "@smithy/util-body-length-node": "^4.2.3", "@smithy/util-defaults-mode-browser": "^4.3.44", "@smithy/util-defaults-mode-node": "^4.2.48", "@smithy/util-endpoints": "^3.3.3", "@smithy/util-middleware": "^4.2.12", "@smithy/util-retry": "^4.2.12", "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" } }, "sha512-7B0HIX0tEFmOSJuWzdHZj1WhMXSryM+h66h96ZkqSncoY7J6wq61KOu4Kr57b/YnJP3J/EeQYVFulgR281h+7A=="], + "@aws-sdk/nested-clients": ["@aws-sdk/nested-clients@3.996.18", "", { "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", "@aws-sdk/core": "^3.973.26", "@aws-sdk/middleware-host-header": "^3.972.8", "@aws-sdk/middleware-logger": "^3.972.8", "@aws-sdk/middleware-recursion-detection": "^3.972.9", "@aws-sdk/middleware-user-agent": "^3.972.28", "@aws-sdk/region-config-resolver": "^3.972.10", "@aws-sdk/types": "^3.973.6", "@aws-sdk/util-endpoints": "^3.996.5", "@aws-sdk/util-user-agent-browser": "^3.972.8", "@aws-sdk/util-user-agent-node": "^3.973.14", "@smithy/config-resolver": "^4.4.13", "@smithy/core": "^3.23.13", "@smithy/fetch-http-handler": "^5.3.15", "@smithy/hash-node": "^4.2.12", "@smithy/invalid-dependency": "^4.2.12", "@smithy/middleware-content-length": "^4.2.12", "@smithy/middleware-endpoint": "^4.4.28", "@smithy/middleware-retry": "^4.4.46", "@smithy/middleware-serde": "^4.2.16", "@smithy/middleware-stack": "^4.2.12", "@smithy/node-config-provider": "^4.3.12", "@smithy/node-http-handler": "^4.5.1", "@smithy/protocol-http": "^5.3.12", "@smithy/smithy-client": "^4.12.8", "@smithy/types": "^4.13.1", "@smithy/url-parser": "^4.2.12", "@smithy/util-base64": "^4.3.2", "@smithy/util-body-length-browser": "^4.2.2", "@smithy/util-body-length-node": "^4.2.3", "@smithy/util-defaults-mode-browser": "^4.3.44", "@smithy/util-defaults-mode-node": "^4.2.48", "@smithy/util-endpoints": "^3.3.3", "@smithy/util-middleware": "^4.2.12", "@smithy/util-retry": "^4.2.13", "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" } }, "sha512-c7ZSIXrESxHKx2Mcopgd8AlzZgoXMr20fkx5ViPWPOLBvmyhw9VwJx/Govg8Ef/IhEon5R9l53Z8fdYSEmp6VA=="], "@aws-sdk/region-config-resolver": ["@aws-sdk/region-config-resolver@3.972.10", "https://mirrors.cloud.tencent.com/npm/@aws-sdk/region-config-resolver/-/region-config-resolver-3.972.10.tgz", { "dependencies": { "@aws-sdk/types": "^3.973.6", "@smithy/config-resolver": "^4.4.13", "@smithy/node-config-provider": "^4.3.12", "@smithy/types": "^4.13.1", "tslib": "^2.6.2" } }, "sha512-1dq9ToC6e070QvnVhhbAs3bb5r6cQ10gTVc6cyRV5uvQe7P138TV2uG2i6+Yok4bAkVAcx5AqkTEBUvWEtBlsQ=="], - "@aws-sdk/token-providers": ["@aws-sdk/token-providers@3.1020.0", "https://mirrors.cloud.tencent.com/npm/@aws-sdk/token-providers/-/token-providers-3.1020.0.tgz", { "dependencies": { "@aws-sdk/core": "^3.973.26", "@aws-sdk/nested-clients": "^3.996.17", "@aws-sdk/types": "^3.973.6", "@smithy/property-provider": "^4.2.12", "@smithy/shared-ini-file-loader": "^4.4.7", "@smithy/types": "^4.13.1", "tslib": "^2.6.2" } }, "sha512-T61KA/VKl0zVUubdxigr1ut7SEpwE1/4CIKb14JDLyTAOne2yWKtQE1dDCSHl0UqrZNwW/bTt+EBHfQbslZJdw=="], + "@aws-sdk/token-providers": ["@aws-sdk/token-providers@3.1022.0", "", { "dependencies": { "@aws-sdk/core": "^3.973.26", "@aws-sdk/nested-clients": "^3.996.18", "@aws-sdk/types": "^3.973.6", "@smithy/property-provider": "^4.2.12", "@smithy/shared-ini-file-loader": "^4.4.7", "@smithy/types": "^4.13.1", "tslib": "^2.6.2" } }, "sha512-rC0+QQh5uo9Y0wtrvsVuGWi8njtf6h6FB94h5NClUoiNTuQiRG/+AjXiqhv1x/m8TnLrgYCHiFzykOdOb5Ea9w=="], "@aws-sdk/types": ["@aws-sdk/types@3.973.6", "https://mirrors.cloud.tencent.com/npm/@aws-sdk/types/-/types-3.973.6.tgz", { "dependencies": { "@smithy/types": "^4.13.1", "tslib": "^2.6.2" } }, "sha512-Atfcy4E++beKtwJHiDln2Nby8W/mam64opFPTiHEqgsthqeydFS1pY+OUlN1ouNOmf8ArPU/6cDS65anOP3KQw=="], @@ -161,20 +205,52 @@ "@aws-sdk/util-user-agent-browser": ["@aws-sdk/util-user-agent-browser@3.972.8", "https://mirrors.cloud.tencent.com/npm/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.972.8.tgz", { "dependencies": { "@aws-sdk/types": "^3.973.6", "@smithy/types": "^4.13.1", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "sha512-B3KGXJviV2u6Cdw2SDY2aDhoJkVfY/Q/Trwk2CMSkikE1Oi6gRzxhvhIfiRpHfmIsAhV4EA54TVEX8K6CbHbkA=="], - "@aws-sdk/util-user-agent-node": ["@aws-sdk/util-user-agent-node@3.973.13", "https://mirrors.cloud.tencent.com/npm/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.973.13.tgz", { "dependencies": { "@aws-sdk/middleware-user-agent": "^3.972.27", "@aws-sdk/types": "^3.973.6", "@smithy/node-config-provider": "^4.3.12", "@smithy/types": "^4.13.1", "@smithy/util-config-provider": "^4.2.2", "tslib": "^2.6.2" }, "peerDependencies": { "aws-crt": ">=1.0.0" }, "optionalPeers": ["aws-crt"] }, "sha512-s1dCJ0J9WU9UPkT3FFqhKTSquYTkqWXGRaapHFyWwwJH86ZussewhNST5R5TwXVL1VSHq4aJVl9fWK+svaRVCQ=="], + "@aws-sdk/util-user-agent-node": ["@aws-sdk/util-user-agent-node@3.973.14", "", { "dependencies": { "@aws-sdk/middleware-user-agent": "^3.972.28", "@aws-sdk/types": "^3.973.6", "@smithy/node-config-provider": "^4.3.12", "@smithy/types": "^4.13.1", "@smithy/util-config-provider": "^4.2.2", "tslib": "^2.6.2" }, "peerDependencies": { "aws-crt": ">=1.0.0" }, "optionalPeers": ["aws-crt"] }, "sha512-vNSB/DYaPOyujVZBg/zUznH9QC142MaTHVmaFlF7uzzfg3CgT9f/l4C0Yi+vU/tbBhxVcXVB90Oohk5+o+ZbWw=="], + + "@aws-sdk/util-utf8-browser": ["@aws-sdk/util-utf8-browser@3.259.0", "", { "dependencies": { "tslib": "^2.3.1" } }, "sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw=="], "@aws-sdk/xml-builder": ["@aws-sdk/xml-builder@3.972.16", "https://mirrors.cloud.tencent.com/npm/@aws-sdk/xml-builder/-/xml-builder-3.972.16.tgz", { "dependencies": { "@smithy/types": "^4.13.1", "fast-xml-parser": "5.5.8", "tslib": "^2.6.2" } }, "sha512-iu2pyvaqmeatIJLURLqx9D+4jKAdTH20ntzB6BFwjyN7V960r4jK32mx0Zf7YbtOYAbmbtQfDNuL60ONinyw7A=="], "@aws/lambda-invoke-store": ["@aws/lambda-invoke-store@0.2.4", "https://mirrors.cloud.tencent.com/npm/@aws/lambda-invoke-store/-/lambda-invoke-store-0.2.4.tgz", {}, "sha512-iY8yvjE0y651BixKNPgmv1WrQc+GZ142sb0z4gYnChDDY2YqI4P/jsSopBWrKfAt7LOJAkOXt7rC/hms+WclQQ=="], + "@azure/abort-controller": ["@azure/abort-controller@2.1.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA=="], + + "@azure/core-auth": ["@azure/core-auth@1.10.1", "", { "dependencies": { "@azure/abort-controller": "^2.1.2", "@azure/core-util": "^1.13.0", "tslib": "^2.6.2" } }, "sha512-ykRMW8PjVAn+RS6ww5cmK9U2CyH9p4Q88YJwvUslfuMmN98w/2rdGRLPqJYObapBCdzBVeDgYWdJnFPFb7qzpg=="], + + "@azure/core-client": ["@azure/core-client@1.10.1", "", { "dependencies": { "@azure/abort-controller": "^2.1.2", "@azure/core-auth": "^1.10.0", "@azure/core-rest-pipeline": "^1.22.0", "@azure/core-tracing": "^1.3.0", "@azure/core-util": "^1.13.0", "@azure/logger": "^1.3.0", "tslib": "^2.6.2" } }, "sha512-Nh5PhEOeY6PrnxNPsEHRr9eimxLwgLlpmguQaHKBinFYA/RU9+kOYVOQqOrTsCL+KSxrLLl1gD8Dk5BFW/7l/w=="], + + "@azure/core-rest-pipeline": ["@azure/core-rest-pipeline@1.23.0", "", { "dependencies": { "@azure/abort-controller": "^2.1.2", "@azure/core-auth": "^1.10.0", "@azure/core-tracing": "^1.3.0", "@azure/core-util": "^1.13.0", "@azure/logger": "^1.3.0", "@typespec/ts-http-runtime": "^0.3.4", "tslib": "^2.6.2" } }, "sha512-Evs1INHo+jUjwHi1T6SG6Ua/LHOQBCLuKEEE6efIpt4ZOoNonaT1kP32GoOcdNDbfqsD2445CPri3MubBy5DEQ=="], + + "@azure/core-tracing": ["@azure/core-tracing@1.3.1", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-9MWKevR7Hz8kNzzPLfX4EAtGM2b8mr50HPDBvio96bURP/9C+HjdH3sBlLSNNrvRAr5/k/svoH457gB5IKpmwQ=="], + + "@azure/core-util": ["@azure/core-util@1.13.1", "", { "dependencies": { "@azure/abort-controller": "^2.1.2", "@typespec/ts-http-runtime": "^0.3.0", "tslib": "^2.6.2" } }, "sha512-XPArKLzsvl0Hf0CaGyKHUyVgF7oDnhKoP85Xv6M4StF/1AhfORhZudHtOyf2s+FcbuQ9dPRAjB8J2KvRRMUK2A=="], + + "@azure/identity": ["@azure/identity@4.13.1", "", { "dependencies": { "@azure/abort-controller": "^2.0.0", "@azure/core-auth": "^1.9.0", "@azure/core-client": "^1.9.2", "@azure/core-rest-pipeline": "^1.17.0", "@azure/core-tracing": "^1.0.0", "@azure/core-util": "^1.11.0", "@azure/logger": "^1.0.0", "@azure/msal-browser": "^5.5.0", "@azure/msal-node": "^5.1.0", "open": "^10.1.0", "tslib": "^2.2.0" } }, "sha512-5C/2WD5Vb1lHnZS16dNQRPMjN6oV/Upba+C9nBIs15PmOi6A3ZGs4Lr2u60zw4S04gi+u3cEXiqTVP7M4Pz3kw=="], + + "@azure/logger": ["@azure/logger@1.3.0", "", { "dependencies": { "@typespec/ts-http-runtime": "^0.3.0", "tslib": "^2.6.2" } }, "sha512-fCqPIfOcLE+CGqGPd66c8bZpwAji98tZ4JI9i/mlTNTlsIWslCfpg48s/ypyLxZTump5sypjrKn2/kY7q8oAbA=="], + + "@azure/msal-browser": ["@azure/msal-browser@5.6.3", "", { "dependencies": { "@azure/msal-common": "16.4.1" } }, "sha512-sTjMtUm+bJpENU/1WlRzHEsgEHppZDZ1EtNyaOODg/sQBtMxxJzGB+MOCM+T2Q5Qe1fKBrdxUmjyRxm0r7Ez9w=="], + + "@azure/msal-common": ["@azure/msal-common@16.4.1", "", {}, "sha512-Bl8f+w37xkXsYh7QRkAKCFGYtWMYuOVO7Lv+BxILrvGz3HbIEF22Pt0ugyj0QPOl6NLrHcnNUQ9yeew98P/5iw=="], + + "@azure/msal-node": ["@azure/msal-node@5.1.2", "", { "dependencies": { "@azure/msal-common": "16.4.1", "jsonwebtoken": "^9.0.0", "uuid": "^8.3.0" } }, "sha512-DoeSJ9U5KPAIZoHsPywvfEj2MhBniQe0+FSpjLUTdWoIkI999GB5USkW6nNEHnIaLVxROHXvprWA1KzdS1VQ4A=="], + "@babel/runtime": ["@babel/runtime@7.29.2", "https://mirrors.cloud.tencent.com/npm/@babel/runtime/-/runtime-7.29.2.tgz", {}, "sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g=="], "@commander-js/extra-typings": ["@commander-js/extra-typings@14.0.0", "https://mirrors.cloud.tencent.com/npm/@commander-js/extra-typings/-/extra-typings-14.0.0.tgz", { "peerDependencies": { "commander": "~14.0.0" } }, "sha512-hIn0ncNaJRLkZrxBIp5AsW/eXEHNKYQBh0aPdoUqNgD+Io3NIykQqpKFyKcuasZhicGaEZJX/JBSIkZ4e5x8Dg=="], + "@emnapi/runtime": ["@emnapi/runtime@1.9.1", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-VYi5+ZVLhpgK4hQ0TAjiQiZ6ol0oe4mBx7mVv7IflsiEp0OWoVsp/+f9Vc1hOhE0TtkORVrI1GvzyreqpgWtkA=="], + "@growthbook/growthbook": ["@growthbook/growthbook@1.6.5", "https://mirrors.cloud.tencent.com/npm/@growthbook/growthbook/-/growthbook-1.6.5.tgz", { "dependencies": { "dom-mutator": "^0.6.0" } }, "sha512-mUaMsgeUTpRIUOTn33EUXHRK6j7pxBjwqH4WpQyq+pukjd1AIzWlEa6w7i6bInJUcweGgP2beXZmaP6b6UPn7A=="], + "@grpc/grpc-js": ["@grpc/grpc-js@1.14.3", "", { "dependencies": { "@grpc/proto-loader": "^0.8.0", "@js-sdsl/ordered-map": "^4.4.2" } }, "sha512-Iq8QQQ/7X3Sac15oB6p0FmUg/klxQvXLeileoqrTRGJYLV+/9tubbr9ipz0GKHjmXVsgFPo/+W+2cA8eNcR+XA=="], + + "@grpc/proto-loader": ["@grpc/proto-loader@0.8.0", "", { "dependencies": { "lodash.camelcase": "^4.3.0", "long": "^5.0.0", "protobufjs": "^7.5.3", "yargs": "^17.7.2" }, "bin": { "proto-loader-gen-types": "build/bin/proto-loader-gen-types.js" } }, "sha512-rc1hOQtjIWGxcxpb9aHAfLpIctjEnsDehj0DAiVfBlmT84uvR0uUtN2hEi/ecvWVjXUGf5qPF4qEgiLOx1YIMQ=="], + "@hono/node-server": ["@hono/node-server@1.19.12", "https://mirrors.cloud.tencent.com/npm/@hono/node-server/-/node-server-1.19.12.tgz", { "peerDependencies": { "hono": "^4" } }, "sha512-txsUW4SQ1iilgE0l9/e9VQWmELXifEFvmdA1j6WFh/aFPj99hIntrSsq/if0UWyGVkmrRPKA1wCeP+UCr1B9Uw=="], + "@img/colour": ["@img/colour@1.1.0", "", {}, "sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ=="], + "@img/sharp-darwin-arm64": ["@img/sharp-darwin-arm64@0.34.5", "https://mirrors.cloud.tencent.com/npm/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.5.tgz", { "optionalDependencies": { "@img/sharp-libvips-darwin-arm64": "1.2.4" }, "os": "darwin", "cpu": "arm64" }, "sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w=="], "@img/sharp-darwin-x64": ["@img/sharp-darwin-x64@0.34.5", "https://mirrors.cloud.tencent.com/npm/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.5.tgz", { "optionalDependencies": { "@img/sharp-libvips-darwin-x64": "1.2.4" }, "os": "darwin", "cpu": "x64" }, "sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw=="], @@ -187,6 +263,12 @@ "@img/sharp-libvips-linux-arm64": ["@img/sharp-libvips-linux-arm64@1.2.4", "https://mirrors.cloud.tencent.com/npm/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.2.4.tgz", { "os": "linux", "cpu": "arm64" }, "sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw=="], + "@img/sharp-libvips-linux-ppc64": ["@img/sharp-libvips-linux-ppc64@1.2.4", "", { "os": "linux", "cpu": "ppc64" }, "sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA=="], + + "@img/sharp-libvips-linux-riscv64": ["@img/sharp-libvips-linux-riscv64@1.2.4", "", { "os": "linux", "cpu": "none" }, "sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA=="], + + "@img/sharp-libvips-linux-s390x": ["@img/sharp-libvips-linux-s390x@1.2.4", "", { "os": "linux", "cpu": "s390x" }, "sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ=="], + "@img/sharp-libvips-linux-x64": ["@img/sharp-libvips-linux-x64@1.2.4", "https://mirrors.cloud.tencent.com/npm/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.2.4.tgz", { "os": "linux", "cpu": "x64" }, "sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw=="], "@img/sharp-libvips-linuxmusl-arm64": ["@img/sharp-libvips-linuxmusl-arm64@1.2.4", "https://mirrors.cloud.tencent.com/npm/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.2.4.tgz", { "os": "linux", "cpu": "arm64" }, "sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw=="], @@ -197,14 +279,24 @@ "@img/sharp-linux-arm64": ["@img/sharp-linux-arm64@0.34.5", "https://mirrors.cloud.tencent.com/npm/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.5.tgz", { "optionalDependencies": { "@img/sharp-libvips-linux-arm64": "1.2.4" }, "os": "linux", "cpu": "arm64" }, "sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg=="], + "@img/sharp-linux-ppc64": ["@img/sharp-linux-ppc64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-ppc64": "1.2.4" }, "os": "linux", "cpu": "ppc64" }, "sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA=="], + + "@img/sharp-linux-riscv64": ["@img/sharp-linux-riscv64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-riscv64": "1.2.4" }, "os": "linux", "cpu": "none" }, "sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw=="], + + "@img/sharp-linux-s390x": ["@img/sharp-linux-s390x@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-s390x": "1.2.4" }, "os": "linux", "cpu": "s390x" }, "sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg=="], + "@img/sharp-linux-x64": ["@img/sharp-linux-x64@0.34.5", "https://mirrors.cloud.tencent.com/npm/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.5.tgz", { "optionalDependencies": { "@img/sharp-libvips-linux-x64": "1.2.4" }, "os": "linux", "cpu": "x64" }, "sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ=="], "@img/sharp-linuxmusl-arm64": ["@img/sharp-linuxmusl-arm64@0.34.5", "https://mirrors.cloud.tencent.com/npm/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.5.tgz", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-arm64": "1.2.4" }, "os": "linux", "cpu": "arm64" }, "sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg=="], "@img/sharp-linuxmusl-x64": ["@img/sharp-linuxmusl-x64@0.34.5", "https://mirrors.cloud.tencent.com/npm/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.5.tgz", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-x64": "1.2.4" }, "os": "linux", "cpu": "x64" }, "sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q=="], + "@img/sharp-wasm32": ["@img/sharp-wasm32@0.34.5", "", { "dependencies": { "@emnapi/runtime": "^1.7.0" }, "cpu": "none" }, "sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw=="], + "@img/sharp-win32-arm64": ["@img/sharp-win32-arm64@0.34.5", "https://mirrors.cloud.tencent.com/npm/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.34.5.tgz", { "os": "win32", "cpu": "arm64" }, "sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g=="], + "@img/sharp-win32-ia32": ["@img/sharp-win32-ia32@0.34.5", "", { "os": "win32", "cpu": "ia32" }, "sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg=="], + "@img/sharp-win32-x64": ["@img/sharp-win32-x64@0.34.5", "https://mirrors.cloud.tencent.com/npm/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.5.tgz", { "os": "win32", "cpu": "x64" }, "sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw=="], "@inquirer/checkbox": ["@inquirer/checkbox@3.0.1", "https://mirrors.cloud.tencent.com/npm/@inquirer/checkbox/-/checkbox-3.0.1.tgz", { "dependencies": { "@inquirer/core": "^9.2.1", "@inquirer/figures": "^1.0.6", "@inquirer/type": "^2.0.0", "ansi-escapes": "^4.3.2", "yoctocolors-cjs": "^2.1.2" } }, "sha512-0hm2nrToWUdD6/UHnel/UKGdk1//ke5zGUpHIvk5ZWmaKezlGxZkOJXNSWsdxO/rEqTkbB3lNC2J6nBElV2aAQ=="], @@ -235,14 +327,46 @@ "@inquirer/type": ["@inquirer/type@2.0.0", "https://mirrors.cloud.tencent.com/npm/@inquirer/type/-/type-2.0.0.tgz", { "dependencies": { "mute-stream": "^1.0.0" } }, "sha512-XvJRx+2KR3YXyYtPUUy+qd9i7p+GO9Ko6VIIpWlBrpWwXDv8WLFeHTxz35CfQFUiBMLXlGHhGzys7lqit9gWag=="], + "@js-sdsl/ordered-map": ["@js-sdsl/ordered-map@4.4.2", "", {}, "sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw=="], + + "@mixmark-io/domino": ["@mixmark-io/domino@2.2.0", "", {}, "sha512-Y28PR25bHXUg88kCV7nivXrP2Nj2RueZ3/l/jdx6J9f8J4nsEGcgX0Qe6lt7Pa+J79+kPiJU3LguR6O/6zrLOw=="], + "@modelcontextprotocol/sdk": ["@modelcontextprotocol/sdk@1.29.0", "https://mirrors.cloud.tencent.com/npm/@modelcontextprotocol/sdk/-/sdk-1.29.0.tgz", { "dependencies": { "@hono/node-server": "^1.19.9", "ajv": "^8.17.1", "ajv-formats": "^3.0.1", "content-type": "^1.0.5", "cors": "^2.8.5", "cross-spawn": "^7.0.5", "eventsource": "^3.0.2", "eventsource-parser": "^3.0.0", "express": "^5.2.1", "express-rate-limit": "^8.2.1", "hono": "^4.11.4", "jose": "^6.1.3", "json-schema-typed": "^8.0.2", "pkce-challenge": "^5.0.0", "raw-body": "^3.0.0", "zod": "^3.25 || ^4.0", "zod-to-json-schema": "^3.25.1" }, "peerDependencies": { "@cfworker/json-schema": "^4.1.1" }, "optionalPeers": ["@cfworker/json-schema"] }, "sha512-zo37mZA9hJWpULgkRpowewez1y6ML5GsXJPY8FI0tBBCd77HEvza4jDqRKOXgHNn867PVGCyTdzqpz0izu5ZjQ=="], + "@npmcli/fs": ["@npmcli/fs@5.0.0", "", { "dependencies": { "semver": "^7.3.5" } }, "sha512-7OsC1gNORBEawOa5+j2pXN9vsicaIOH5cPXxoR6fJOmH6/EXpJB2CajXOu1fPRFun2m1lktEFX11+P89hqO/og=="], + "@opentelemetry/api": ["@opentelemetry/api@1.9.1", "https://mirrors.cloud.tencent.com/npm/@opentelemetry/api/-/api-1.9.1.tgz", {}, "sha512-gLyJlPHPZYdAk1JENA9LeHejZe1Ti77/pTeFm/nMXmQH/HFZlcS/O2XJB+L8fkbrNSqhdtlvjBVjxwUYanNH5Q=="], "@opentelemetry/api-logs": ["@opentelemetry/api-logs@0.214.0", "https://mirrors.cloud.tencent.com/npm/@opentelemetry/api-logs/-/api-logs-0.214.0.tgz", { "dependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-40lSJeqYO8Uz2Yj7u94/SJWE/wONa7rmMKjI1ZcIjgf3MHNHv1OZUCrCETGuaRF62d5pQD1wKIW+L4lmSMTzZA=="], "@opentelemetry/core": ["@opentelemetry/core@2.6.1", "https://mirrors.cloud.tencent.com/npm/@opentelemetry/core/-/core-2.6.1.tgz", { "dependencies": { "@opentelemetry/semantic-conventions": "^1.29.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, "sha512-8xHSGWpJP9wBxgBpnqGL0R3PbdWQndL1Qp50qrg71+B28zK5OQmUgcDKLJgzyAAV38t4tOyLMGDD60LneR5W8g=="], + "@opentelemetry/exporter-logs-otlp-grpc": ["@opentelemetry/exporter-logs-otlp-grpc@0.214.0", "", { "dependencies": { "@grpc/grpc-js": "^1.14.3", "@opentelemetry/core": "2.6.1", "@opentelemetry/otlp-exporter-base": "0.214.0", "@opentelemetry/otlp-grpc-exporter-base": "0.214.0", "@opentelemetry/otlp-transformer": "0.214.0", "@opentelemetry/sdk-logs": "0.214.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-SwmFRwO8mi6nndzbsjPgSFg7qy1WeNHRFD+s6uCsdiUDUt3+yzI2qiHE3/ub2f37+/CbeGcG+Ugc8Gwr6nu2Aw=="], + + "@opentelemetry/exporter-logs-otlp-http": ["@opentelemetry/exporter-logs-otlp-http@0.214.0", "", { "dependencies": { "@opentelemetry/api-logs": "0.214.0", "@opentelemetry/core": "2.6.1", "@opentelemetry/otlp-exporter-base": "0.214.0", "@opentelemetry/otlp-transformer": "0.214.0", "@opentelemetry/sdk-logs": "0.214.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-9qv2Tl/Hq6qc5pJCbzFJnzA0uvlb9DgM70yGJPYf3bA5LlLkRCpcn81i4JbcIH4grlQIWY6A+W7YG0LLvS1BAw=="], + + "@opentelemetry/exporter-logs-otlp-proto": ["@opentelemetry/exporter-logs-otlp-proto@0.214.0", "", { "dependencies": { "@opentelemetry/api-logs": "0.214.0", "@opentelemetry/core": "2.6.1", "@opentelemetry/otlp-exporter-base": "0.214.0", "@opentelemetry/otlp-transformer": "0.214.0", "@opentelemetry/resources": "2.6.1", "@opentelemetry/sdk-logs": "0.214.0", "@opentelemetry/sdk-trace-base": "2.6.1" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-IWAVvCO1TlpotRjFmhQFz9RSfQy5BsLtDRBtptSrXZRwfyRPpuql/RMe5zdmu0Gxl3ERDFwOzOqkf3bwy7Jzcw=="], + + "@opentelemetry/exporter-metrics-otlp-grpc": ["@opentelemetry/exporter-metrics-otlp-grpc@0.214.0", "", { "dependencies": { "@grpc/grpc-js": "^1.14.3", "@opentelemetry/core": "2.6.1", "@opentelemetry/exporter-metrics-otlp-http": "0.214.0", "@opentelemetry/otlp-exporter-base": "0.214.0", "@opentelemetry/otlp-grpc-exporter-base": "0.214.0", "@opentelemetry/otlp-transformer": "0.214.0", "@opentelemetry/resources": "2.6.1", "@opentelemetry/sdk-metrics": "2.6.1" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-0NGxWHVYHgbp51SEzmsP+Hdups81eRs229STcSWHo3WO0aqY6RpJ9csxfyEtFgaNrBDv6UfOh0je4ss/ROS6XA=="], + + "@opentelemetry/exporter-metrics-otlp-http": ["@opentelemetry/exporter-metrics-otlp-http@0.214.0", "", { "dependencies": { "@opentelemetry/core": "2.6.1", "@opentelemetry/otlp-exporter-base": "0.214.0", "@opentelemetry/otlp-transformer": "0.214.0", "@opentelemetry/resources": "2.6.1", "@opentelemetry/sdk-metrics": "2.6.1" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-Tx/59RmjBgkXJ3qnsD04rpDrVWL53LU/czpgLJh+Ab98nAroe91I7vZ3uGN9mxwPS0jsZEnmqmHygVwB2vRMlA=="], + + "@opentelemetry/exporter-metrics-otlp-proto": ["@opentelemetry/exporter-metrics-otlp-proto@0.214.0", "", { "dependencies": { "@opentelemetry/core": "2.6.1", "@opentelemetry/exporter-metrics-otlp-http": "0.214.0", "@opentelemetry/otlp-exporter-base": "0.214.0", "@opentelemetry/otlp-transformer": "0.214.0", "@opentelemetry/resources": "2.6.1", "@opentelemetry/sdk-metrics": "2.6.1" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-pJIcghFGhx3VSCgP5U+yZx+OMNj0t+ttnhC8IjL5Wza7vWIczctF6t3AGcVQffi2dEqX+ZHANoBwoPR8y6RMKA=="], + + "@opentelemetry/exporter-prometheus": ["@opentelemetry/exporter-prometheus@0.214.0", "", { "dependencies": { "@opentelemetry/core": "2.6.1", "@opentelemetry/resources": "2.6.1", "@opentelemetry/sdk-metrics": "2.6.1", "@opentelemetry/semantic-conventions": "^1.29.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-4TGYoZKebUWVuYkV6r5wS2dUF4zH7EbWFw/Uqz1ZM1tGHQeFT9wzHGXq3iSIXMUrwu5jRdxjfMaXrYejPu2kpQ=="], + + "@opentelemetry/exporter-trace-otlp-grpc": ["@opentelemetry/exporter-trace-otlp-grpc@0.214.0", "", { "dependencies": { "@grpc/grpc-js": "^1.14.3", "@opentelemetry/core": "2.6.1", "@opentelemetry/otlp-exporter-base": "0.214.0", "@opentelemetry/otlp-grpc-exporter-base": "0.214.0", "@opentelemetry/otlp-transformer": "0.214.0", "@opentelemetry/resources": "2.6.1", "@opentelemetry/sdk-trace-base": "2.6.1" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-FWRZ7AWoTryYhthralHkfXUuyO3l7cRsnr49WcDio1orl2a7KxT8aDZdwQtV1adzoUvZ9Gfo+IstElghCS4zfw=="], + + "@opentelemetry/exporter-trace-otlp-http": ["@opentelemetry/exporter-trace-otlp-http@0.214.0", "", { "dependencies": { "@opentelemetry/core": "2.6.1", "@opentelemetry/otlp-exporter-base": "0.214.0", "@opentelemetry/otlp-transformer": "0.214.0", "@opentelemetry/resources": "2.6.1", "@opentelemetry/sdk-trace-base": "2.6.1" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-kIN8nTBMgV2hXzV/a20BCFilPZdAIMYYJGSgfMMRm/Xa+07y5hRDS2Vm12A/z8Cdu3Sq++ZvJfElokX2rkgGgw=="], + + "@opentelemetry/exporter-trace-otlp-proto": ["@opentelemetry/exporter-trace-otlp-proto@0.214.0", "", { "dependencies": { "@opentelemetry/core": "2.6.1", "@opentelemetry/otlp-exporter-base": "0.214.0", "@opentelemetry/otlp-transformer": "0.214.0", "@opentelemetry/resources": "2.6.1", "@opentelemetry/sdk-trace-base": "2.6.1" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-ON0spYWb2yAdQ9b+ItNyK0c6qdtcs+0eVR4YFJkhJL7agfT8sHFg0e5EesauSRiTHPZHiDobI92k77q0lwAmqg=="], + + "@opentelemetry/otlp-exporter-base": ["@opentelemetry/otlp-exporter-base@0.214.0", "", { "dependencies": { "@opentelemetry/core": "2.6.1", "@opentelemetry/otlp-transformer": "0.214.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-u1Gdv0/E9wP+apqWf7Wv2npXmgJtxsW2XL0TEv9FZloTZRuMBKmu8cYVXwS4Hm3q/f/3FuCnPTgiwYvIqRSpRg=="], + + "@opentelemetry/otlp-grpc-exporter-base": ["@opentelemetry/otlp-grpc-exporter-base@0.214.0", "", { "dependencies": { "@grpc/grpc-js": "^1.14.3", "@opentelemetry/core": "2.6.1", "@opentelemetry/otlp-exporter-base": "0.214.0", "@opentelemetry/otlp-transformer": "0.214.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-IDP6zcyA24RhNZ289MP6eToIZcinlmirHjX8v3zKCQ2ZhPpt5cGwkN91tCth337lqHIgWcTy90uKRiX/SzALDw=="], + + "@opentelemetry/otlp-transformer": ["@opentelemetry/otlp-transformer@0.214.0", "", { "dependencies": { "@opentelemetry/api-logs": "0.214.0", "@opentelemetry/core": "2.6.1", "@opentelemetry/resources": "2.6.1", "@opentelemetry/sdk-logs": "0.214.0", "@opentelemetry/sdk-metrics": "2.6.1", "@opentelemetry/sdk-trace-base": "2.6.1", "protobufjs": "^7.0.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-DSaYcuBRh6uozfsWN3R8HsN0yDhCuWP7tOFdkUOVaWD1KVJg8m4qiLUsg/tNhTLS9HUYUcwNpwL2eroLtsZZ/w=="], + "@opentelemetry/resources": ["@opentelemetry/resources@2.6.1", "https://mirrors.cloud.tencent.com/npm/@opentelemetry/resources/-/resources-2.6.1.tgz", { "dependencies": { "@opentelemetry/core": "2.6.1", "@opentelemetry/semantic-conventions": "^1.29.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.3.0 <1.10.0" } }, "sha512-lID/vxSuKWXM55XhAKNoYXu9Cutoq5hFdkbTdI/zDKQktXzcWBVhNsOkiZFTMU9UtEWuGRNe0HUgmsFldIdxVA=="], "@opentelemetry/sdk-logs": ["@opentelemetry/sdk-logs@0.214.0", "https://mirrors.cloud.tencent.com/npm/@opentelemetry/sdk-logs/-/sdk-logs-0.214.0.tgz", { "dependencies": { "@opentelemetry/api-logs": "0.214.0", "@opentelemetry/core": "2.6.1", "@opentelemetry/resources": "2.6.1", "@opentelemetry/semantic-conventions": "^1.29.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.4.0 <1.10.0" } }, "sha512-zf6acnScjhsaBUU22zXZ/sLWim1dfhUAbGXdMmHmNG3LfBnQ3DKsOCITb2IZwoUsNNMTogqFKBnlIPPftUgGwA=="], @@ -255,10 +379,32 @@ "@pondwader/socks5-server": ["@pondwader/socks5-server@1.0.10", "https://mirrors.cloud.tencent.com/npm/@pondwader/socks5-server/-/socks5-server-1.0.10.tgz", {}, "sha512-bQY06wzzR8D2+vVCUoBsr5QS2U6UgPUQRmErNwtsuI6vLcyRKkafjkr3KxbtGFf9aBBIV2mcvlsKD1UYaIV+sg=="], + "@protobufjs/aspromise": ["@protobufjs/aspromise@1.1.2", "", {}, "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ=="], + + "@protobufjs/base64": ["@protobufjs/base64@1.1.2", "", {}, "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg=="], + + "@protobufjs/codegen": ["@protobufjs/codegen@2.0.4", "", {}, "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg=="], + + "@protobufjs/eventemitter": ["@protobufjs/eventemitter@1.1.0", "", {}, "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q=="], + + "@protobufjs/fetch": ["@protobufjs/fetch@1.1.0", "", { "dependencies": { "@protobufjs/aspromise": "^1.1.1", "@protobufjs/inquire": "^1.1.0" } }, "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ=="], + + "@protobufjs/float": ["@protobufjs/float@1.0.2", "", {}, "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ=="], + + "@protobufjs/inquire": ["@protobufjs/inquire@1.1.0", "", {}, "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q=="], + + "@protobufjs/path": ["@protobufjs/path@1.1.2", "", {}, "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA=="], + + "@protobufjs/pool": ["@protobufjs/pool@1.1.0", "", {}, "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw=="], + + "@protobufjs/utf8": ["@protobufjs/utf8@1.1.0", "", {}, "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw=="], + "@sec-ant/readable-stream": ["@sec-ant/readable-stream@0.4.1", "https://mirrors.cloud.tencent.com/npm/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz", {}, "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg=="], "@sindresorhus/merge-streams": ["@sindresorhus/merge-streams@4.0.0", "https://mirrors.cloud.tencent.com/npm/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz", {}, "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ=="], + "@smithy/abort-controller": ["@smithy/abort-controller@2.2.0", "", { "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" } }, "sha512-wRlta7GuLWpTqtFfGo+nZyOO1vEvewdNR1R4rTxpC8XU6vG/NDyrFBhwLZsqg1NUoR1noVaXJPC/7ZK47QCySw=="], + "@smithy/config-resolver": ["@smithy/config-resolver@4.4.13", "https://mirrors.cloud.tencent.com/npm/@smithy/config-resolver/-/config-resolver-4.4.13.tgz", { "dependencies": { "@smithy/node-config-provider": "^4.3.12", "@smithy/types": "^4.13.1", "@smithy/util-config-provider": "^4.2.2", "@smithy/util-endpoints": "^3.3.3", "@smithy/util-middleware": "^4.2.12", "tslib": "^2.6.2" } }, "sha512-iIzMC5NmOUP6WL6o8iPBjFhUhBZ9pPjpUpQYWMUFQqKyXXzOftbfK8zcQCz/jFV1Psmf05BK5ypx4K2r4Tnwdg=="], "@smithy/core": ["@smithy/core@3.23.13", "https://mirrors.cloud.tencent.com/npm/@smithy/core/-/core-3.23.13.tgz", { "dependencies": { "@smithy/protocol-http": "^5.3.12", "@smithy/types": "^4.13.1", "@smithy/url-parser": "^4.2.12", "@smithy/util-base64": "^4.3.2", "@smithy/util-body-length-browser": "^4.2.2", "@smithy/util-middleware": "^4.2.12", "@smithy/util-stream": "^4.5.21", "@smithy/util-utf8": "^4.2.2", "@smithy/uuid": "^1.1.2", "tslib": "^2.6.2" } }, "sha512-J+2TT9D6oGsUVXVEMvz8h2EmdVnkBiy2auCie4aSJMvKlzUtO5hqjEzXhoCUkIMo7gAYjbQcN0g/MMSXEhDs1Q=="], @@ -271,9 +417,9 @@ "@smithy/eventstream-serde-config-resolver": ["@smithy/eventstream-serde-config-resolver@4.3.12", "https://mirrors.cloud.tencent.com/npm/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-4.3.12.tgz", { "dependencies": { "@smithy/types": "^4.13.1", "tslib": "^2.6.2" } }, "sha512-7epsAZ3QvfHkngz6RXQYseyZYHlmWXSTPOfPmXkiS+zA6TBNo1awUaMFL9vxyXlGdoELmCZyZe1nQE+imbmV+Q=="], - "@smithy/eventstream-serde-node": ["@smithy/eventstream-serde-node@4.2.12", "https://mirrors.cloud.tencent.com/npm/@smithy/eventstream-serde-node/-/eventstream-serde-node-4.2.12.tgz", { "dependencies": { "@smithy/eventstream-serde-universal": "^4.2.12", "@smithy/types": "^4.13.1", "tslib": "^2.6.2" } }, "sha512-D1pFuExo31854eAvg89KMn9Oab/wEeJR6Buy32B49A9Ogdtx5fwZPqBHUlDzaCDpycTFk2+fSQgX689Qsk7UGA=="], + "@smithy/eventstream-serde-node": ["@smithy/eventstream-serde-node@2.2.0", "", { "dependencies": { "@smithy/eventstream-serde-universal": "^2.2.0", "@smithy/types": "^2.12.0", "tslib": "^2.6.2" } }, "sha512-zpQMtJVqCUMn+pCSFcl9K/RPNtQE0NuMh8sKpCdEHafhwRsjP50Oq/4kMmvxSRy6d8Jslqd8BLvDngrUtmN9iA=="], - "@smithy/eventstream-serde-universal": ["@smithy/eventstream-serde-universal@4.2.12", "https://mirrors.cloud.tencent.com/npm/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-4.2.12.tgz", { "dependencies": { "@smithy/eventstream-codec": "^4.2.12", "@smithy/types": "^4.13.1", "tslib": "^2.6.2" } }, "sha512-+yNuTiyBACxOJUTvbsNsSOfH9G9oKbaJE1lNL3YHpGcuucl6rPZMi3nrpehpVOVR2E07YqFFmtwpImtpzlouHQ=="], + "@smithy/eventstream-serde-universal": ["@smithy/eventstream-serde-universal@2.2.0", "", { "dependencies": { "@smithy/eventstream-codec": "^2.2.0", "@smithy/types": "^2.12.0", "tslib": "^2.6.2" } }, "sha512-pvoe/vvJY0mOpuF84BEtyZoYfbehiFj8KKWk1ds2AT0mTLYFVs+7sBJZmioOFdBXKd48lfrx1vumdPdmGlCLxA=="], "@smithy/fetch-http-handler": ["@smithy/fetch-http-handler@5.3.15", "https://mirrors.cloud.tencent.com/npm/@smithy/fetch-http-handler/-/fetch-http-handler-5.3.15.tgz", { "dependencies": { "@smithy/protocol-http": "^5.3.12", "@smithy/querystring-builder": "^4.2.12", "@smithy/types": "^4.13.1", "@smithy/util-base64": "^4.3.2", "tslib": "^2.6.2" } }, "sha512-T4jFU5N/yiIfrtrsb9uOQn7RdELdM/7HbyLNr6uO/mpkj1ctiVs7CihVr51w4LyQlXWDpXFn4BElf1WmQvZu/A=="], @@ -281,13 +427,13 @@ "@smithy/invalid-dependency": ["@smithy/invalid-dependency@4.2.12", "https://mirrors.cloud.tencent.com/npm/@smithy/invalid-dependency/-/invalid-dependency-4.2.12.tgz", { "dependencies": { "@smithy/types": "^4.13.1", "tslib": "^2.6.2" } }, "sha512-/4F1zb7Z8LOu1PalTdESFHR0RbPwHd3FcaG1sI3UEIriQTWakysgJr65lc1jj6QY5ye7aFsisajotH6UhWfm/g=="], - "@smithy/is-array-buffer": ["@smithy/is-array-buffer@4.2.2", "https://mirrors.cloud.tencent.com/npm/@smithy/is-array-buffer/-/is-array-buffer-4.2.2.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-n6rQ4N8Jj4YTQO3YFrlgZuwKodf4zUFs7EJIWH86pSCWBaAtAGBFfCM7Wx6D2bBJ2xqFNxGBSrUWswT3M0VJow=="], + "@smithy/is-array-buffer": ["@smithy/is-array-buffer@3.0.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ=="], "@smithy/middleware-content-length": ["@smithy/middleware-content-length@4.2.12", "https://mirrors.cloud.tencent.com/npm/@smithy/middleware-content-length/-/middleware-content-length-4.2.12.tgz", { "dependencies": { "@smithy/protocol-http": "^5.3.12", "@smithy/types": "^4.13.1", "tslib": "^2.6.2" } }, "sha512-YE58Yz+cvFInWI/wOTrB+DbvUVz/pLn5mC5MvOV4fdRUc6qGwygyngcucRQjAhiCEbmfLOXX0gntSIcgMvAjmA=="], "@smithy/middleware-endpoint": ["@smithy/middleware-endpoint@4.4.28", "https://mirrors.cloud.tencent.com/npm/@smithy/middleware-endpoint/-/middleware-endpoint-4.4.28.tgz", { "dependencies": { "@smithy/core": "^3.23.13", "@smithy/middleware-serde": "^4.2.16", "@smithy/node-config-provider": "^4.3.12", "@smithy/shared-ini-file-loader": "^4.4.7", "@smithy/types": "^4.13.1", "@smithy/url-parser": "^4.2.12", "@smithy/util-middleware": "^4.2.12", "tslib": "^2.6.2" } }, "sha512-p1gfYpi91CHcs5cBq982UlGlDrxoYUX6XdHSo91cQ2KFuz6QloHosO7Jc60pJiVmkWrKOV8kFYlGFFbQ2WUKKQ=="], - "@smithy/middleware-retry": ["@smithy/middleware-retry@4.4.45", "https://mirrors.cloud.tencent.com/npm/@smithy/middleware-retry/-/middleware-retry-4.4.45.tgz", { "dependencies": { "@smithy/node-config-provider": "^4.3.12", "@smithy/protocol-http": "^5.3.12", "@smithy/service-error-classification": "^4.2.12", "@smithy/smithy-client": "^4.12.8", "@smithy/types": "^4.13.1", "@smithy/util-middleware": "^4.2.12", "@smithy/util-retry": "^4.2.12", "@smithy/uuid": "^1.1.2", "tslib": "^2.6.2" } }, "sha512-td1PxpwDIaw5/oP/xIRxBGxJKoF1L4DBAwbZ8wjMuXBYOP/r2ZE/Ocou+mBHx/yk9knFEtDBwhSrYVn+Mz4pHw=="], + "@smithy/middleware-retry": ["@smithy/middleware-retry@4.4.46", "", { "dependencies": { "@smithy/node-config-provider": "^4.3.12", "@smithy/protocol-http": "^5.3.12", "@smithy/service-error-classification": "^4.2.12", "@smithy/smithy-client": "^4.12.8", "@smithy/types": "^4.13.1", "@smithy/util-middleware": "^4.2.12", "@smithy/util-retry": "^4.2.13", "@smithy/uuid": "^1.1.2", "tslib": "^2.6.2" } }, "sha512-SpvWNNOPOrKQGUqZbEPO+es+FRXMWvIyzUKUOYdDgdlA6BdZj/R58p4umoQ76c2oJC44PiM7mKizyyex1IJzow=="], "@smithy/middleware-serde": ["@smithy/middleware-serde@4.2.16", "https://mirrors.cloud.tencent.com/npm/@smithy/middleware-serde/-/middleware-serde-4.2.16.tgz", { "dependencies": { "@smithy/core": "^3.23.13", "@smithy/protocol-http": "^5.3.12", "@smithy/types": "^4.13.1", "tslib": "^2.6.2" } }, "sha512-beqfV+RZ9RSv+sQqor3xroUUYgRFCGRw6niGstPG8zO9LgTl0B0MCucxjmrH/2WwksQN7UUgI7KNANoZv+KALA=="], @@ -299,7 +445,7 @@ "@smithy/property-provider": ["@smithy/property-provider@4.2.12", "https://mirrors.cloud.tencent.com/npm/@smithy/property-provider/-/property-provider-4.2.12.tgz", { "dependencies": { "@smithy/types": "^4.13.1", "tslib": "^2.6.2" } }, "sha512-jqve46eYU1v7pZ5BM+fmkbq3DerkSluPr5EhvOcHxygxzD05ByDRppRwRPPpFrsFo5yDtCYLKu+kreHKVrvc7A=="], - "@smithy/protocol-http": ["@smithy/protocol-http@5.3.12", "https://mirrors.cloud.tencent.com/npm/@smithy/protocol-http/-/protocol-http-5.3.12.tgz", { "dependencies": { "@smithy/types": "^4.13.1", "tslib": "^2.6.2" } }, "sha512-fit0GZK9I1xoRlR4jXmbLhoN0OdEpa96ul8M65XdmXnxXkuMxM0Y8HDT0Fh0Xb4I85MBvBClOzgSrV1X2s1Hxw=="], + "@smithy/protocol-http": ["@smithy/protocol-http@3.3.0", "", { "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" } }, "sha512-Xy5XK1AFWW2nlY/biWZXu6/krgbaf2dg0q492D8M5qthsnU2H+UgFeZLbM76FnH7s6RO/xhQRkj+T6KBO3JzgQ=="], "@smithy/querystring-builder": ["@smithy/querystring-builder@4.2.12", "https://mirrors.cloud.tencent.com/npm/@smithy/querystring-builder/-/querystring-builder-4.2.12.tgz", { "dependencies": { "@smithy/types": "^4.13.1", "@smithy/util-uri-escape": "^4.2.2", "tslib": "^2.6.2" } }, "sha512-6wTZjGABQufekycfDGMEB84BgtdOE/rCVTov+EDXQ8NHKTUNIp/j27IliwP7tjIU9LR+sSzyGBOXjeEtVgzCHg=="], @@ -309,21 +455,21 @@ "@smithy/shared-ini-file-loader": ["@smithy/shared-ini-file-loader@4.4.7", "https://mirrors.cloud.tencent.com/npm/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.4.7.tgz", { "dependencies": { "@smithy/types": "^4.13.1", "tslib": "^2.6.2" } }, "sha512-HrOKWsUb+otTeo1HxVWeEb99t5ER1XrBi/xka2Wv6NVmTbuCUC1dvlrksdvxFtODLBjsC+PHK+fuy2x/7Ynyiw=="], - "@smithy/signature-v4": ["@smithy/signature-v4@5.3.12", "https://mirrors.cloud.tencent.com/npm/@smithy/signature-v4/-/signature-v4-5.3.12.tgz", { "dependencies": { "@smithy/is-array-buffer": "^4.2.2", "@smithy/protocol-http": "^5.3.12", "@smithy/types": "^4.13.1", "@smithy/util-hex-encoding": "^4.2.2", "@smithy/util-middleware": "^4.2.12", "@smithy/util-uri-escape": "^4.2.2", "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" } }, "sha512-B/FBwO3MVOL00DaRSXfXfa/TRXRheagt/q5A2NM13u7q+sHS59EOVGQNfG7DkmVtdQm5m3vOosoKAXSqn/OEgw=="], + "@smithy/signature-v4": ["@smithy/signature-v4@3.1.2", "", { "dependencies": { "@smithy/is-array-buffer": "^3.0.0", "@smithy/types": "^3.3.0", "@smithy/util-hex-encoding": "^3.0.0", "@smithy/util-middleware": "^3.0.3", "@smithy/util-uri-escape": "^3.0.0", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" } }, "sha512-3BcPylEsYtD0esM4Hoyml/+s7WP2LFhcM3J2AGdcL2vx9O60TtfpDOL72gjb4lU8NeRPeKAwR77YNyyGvMbuEA=="], - "@smithy/smithy-client": ["@smithy/smithy-client@4.12.8", "https://mirrors.cloud.tencent.com/npm/@smithy/smithy-client/-/smithy-client-4.12.8.tgz", { "dependencies": { "@smithy/core": "^3.23.13", "@smithy/middleware-endpoint": "^4.4.28", "@smithy/middleware-stack": "^4.2.12", "@smithy/protocol-http": "^5.3.12", "@smithy/types": "^4.13.1", "@smithy/util-stream": "^4.5.21", "tslib": "^2.6.2" } }, "sha512-aJaAX7vHe5i66smoSSID7t4rKY08PbD8EBU7DOloixvhOozfYWdcSYE4l6/tjkZ0vBZhGjheWzB2mh31sLgCMA=="], + "@smithy/smithy-client": ["@smithy/smithy-client@2.5.1", "", { "dependencies": { "@smithy/middleware-endpoint": "^2.5.1", "@smithy/middleware-stack": "^2.2.0", "@smithy/protocol-http": "^3.3.0", "@smithy/types": "^2.12.0", "@smithy/util-stream": "^2.2.0", "tslib": "^2.6.2" } }, "sha512-jrbSQrYCho0yDaaf92qWgd+7nAeap5LtHTI51KXqmpIFCceKU3K9+vIVTUH72bOJngBMqa4kyu1VJhRcSrk/CQ=="], - "@smithy/types": ["@smithy/types@4.13.1", "https://mirrors.cloud.tencent.com/npm/@smithy/types/-/types-4.13.1.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-787F3yzE2UiJIQ+wYW1CVg2odHjmaWLGksnKQHUrK/lYZSEcy1msuLVvxaR/sI2/aDe9U+TBuLsXnr3vod1g0g=="], + "@smithy/types": ["@smithy/types@2.12.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-QwYgloJ0sVNBeBuBs65cIkTbfzV/Q6ZNPCJ99EICFEdJYG50nGIY/uYXp+TbsdJReIuPr0a0kXmCvren3MbRRw=="], "@smithy/url-parser": ["@smithy/url-parser@4.2.12", "https://mirrors.cloud.tencent.com/npm/@smithy/url-parser/-/url-parser-4.2.12.tgz", { "dependencies": { "@smithy/querystring-parser": "^4.2.12", "@smithy/types": "^4.13.1", "tslib": "^2.6.2" } }, "sha512-wOPKPEpso+doCZGIlr+e1lVI6+9VAKfL4kZWFgzVgGWY2hZxshNKod4l2LXS3PRC9otH/JRSjtEHqQ/7eLciRA=="], - "@smithy/util-base64": ["@smithy/util-base64@4.3.2", "https://mirrors.cloud.tencent.com/npm/@smithy/util-base64/-/util-base64-4.3.2.tgz", { "dependencies": { "@smithy/util-buffer-from": "^4.2.2", "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" } }, "sha512-XRH6b0H/5A3SgblmMa5ErXQ2XKhfbQB+Fm/oyLZ2O2kCUrwgg55bU0RekmzAhuwOjA9qdN5VU2BprOvGGUkOOQ=="], + "@smithy/util-base64": ["@smithy/util-base64@2.3.0", "", { "dependencies": { "@smithy/util-buffer-from": "^2.2.0", "@smithy/util-utf8": "^2.3.0", "tslib": "^2.6.2" } }, "sha512-s3+eVwNeJuXUwuMbusncZNViuhv2LjVJ1nMwTqSA0XAC7gjKhqqxRdJPhR8+YrkoZ9IiIbFk/yK6ACe/xlF+hw=="], "@smithy/util-body-length-browser": ["@smithy/util-body-length-browser@4.2.2", "https://mirrors.cloud.tencent.com/npm/@smithy/util-body-length-browser/-/util-body-length-browser-4.2.2.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-JKCrLNOup3OOgmzeaKQwi4ZCTWlYR5H4Gm1r2uTMVBXoemo1UEghk5vtMi1xSu2ymgKVGW631e2fp9/R610ZjQ=="], "@smithy/util-body-length-node": ["@smithy/util-body-length-node@4.2.3", "https://mirrors.cloud.tencent.com/npm/@smithy/util-body-length-node/-/util-body-length-node-4.2.3.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-ZkJGvqBzMHVHE7r/hcuCxlTY8pQr1kMtdsVPs7ex4mMU+EAbcXppfo5NmyxMYi2XU49eqaz56j2gsk4dHHPG/g=="], - "@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.2.2", "https://mirrors.cloud.tencent.com/npm/@smithy/util-buffer-from/-/util-buffer-from-4.2.2.tgz", { "dependencies": { "@smithy/is-array-buffer": "^4.2.2", "tslib": "^2.6.2" } }, "sha512-FDXD7cvUoFWwN6vtQfEta540Y/YBe5JneK3SoZg9bThSoOAC/eGeYEua6RkBgKjGa/sz6Y+DuBZj3+YEY21y4Q=="], + "@smithy/util-buffer-from": ["@smithy/util-buffer-from@2.2.0", "https://mirrors.cloud.tencent.com/npm/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", { "dependencies": { "@smithy/is-array-buffer": "^2.2.0", "tslib": "^2.6.2" } }, "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA=="], "@smithy/util-config-provider": ["@smithy/util-config-provider@4.2.2", "https://mirrors.cloud.tencent.com/npm/@smithy/util-config-provider/-/util-config-provider-4.2.2.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-dWU03V3XUprJwaUIFVv4iOnS1FC9HnMHDfUrlNDSh4315v0cWyaIErP8KiqGVbf5z+JupoVpNM7ZB3jFiTejvQ=="], @@ -333,15 +479,15 @@ "@smithy/util-endpoints": ["@smithy/util-endpoints@3.3.3", "https://mirrors.cloud.tencent.com/npm/@smithy/util-endpoints/-/util-endpoints-3.3.3.tgz", { "dependencies": { "@smithy/node-config-provider": "^4.3.12", "@smithy/types": "^4.13.1", "tslib": "^2.6.2" } }, "sha512-VACQVe50j0HZPjpwWcjyT51KUQ4AnsvEaQ2lKHOSL4mNLD0G9BjEniQ+yCt1qqfKfiAHRAts26ud7hBjamrwig=="], - "@smithy/util-hex-encoding": ["@smithy/util-hex-encoding@4.2.2", "https://mirrors.cloud.tencent.com/npm/@smithy/util-hex-encoding/-/util-hex-encoding-4.2.2.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-Qcz3W5vuHK4sLQdyT93k/rfrUwdJ8/HZ+nMUOyGdpeGA1Wxt65zYwi3oEl9kOM+RswvYq90fzkNDahPS8K0OIg=="], + "@smithy/util-hex-encoding": ["@smithy/util-hex-encoding@3.0.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-eFndh1WEK5YMUYvy3lPlVmYY/fZcQE1D8oSf41Id2vCeIkKJXPcYDCZD+4+xViI6b1XSd7tE+s5AmXzz5ilabQ=="], "@smithy/util-middleware": ["@smithy/util-middleware@4.2.12", "https://mirrors.cloud.tencent.com/npm/@smithy/util-middleware/-/util-middleware-4.2.12.tgz", { "dependencies": { "@smithy/types": "^4.13.1", "tslib": "^2.6.2" } }, "sha512-Er805uFUOvgc0l8nv0e0su0VFISoxhJ/AwOn3gL2NWNY2LUEldP5WtVcRYSQBcjg0y9NfG8JYrCJaYDpupBHJQ=="], - "@smithy/util-retry": ["@smithy/util-retry@4.2.12", "https://mirrors.cloud.tencent.com/npm/@smithy/util-retry/-/util-retry-4.2.12.tgz", { "dependencies": { "@smithy/service-error-classification": "^4.2.12", "@smithy/types": "^4.13.1", "tslib": "^2.6.2" } }, "sha512-1zopLDUEOwumjcHdJ1mwBHddubYF8GMQvstVCLC54Y46rqoHwlIU+8ZzUeaBcD+WCJHyDGSeZ2ml9YSe9aqcoQ=="], + "@smithy/util-retry": ["@smithy/util-retry@4.2.13", "", { "dependencies": { "@smithy/service-error-classification": "^4.2.12", "@smithy/types": "^4.13.1", "tslib": "^2.6.2" } }, "sha512-qQQsIvL0MGIbUjeSrg0/VlQ3jGNKyM3/2iU3FPNgy01z+Sp4OvcaxbgIoFOTvB61ZoohtutuOvOcgmhbD0katQ=="], "@smithy/util-stream": ["@smithy/util-stream@4.5.21", "https://mirrors.cloud.tencent.com/npm/@smithy/util-stream/-/util-stream-4.5.21.tgz", { "dependencies": { "@smithy/fetch-http-handler": "^5.3.15", "@smithy/node-http-handler": "^4.5.1", "@smithy/types": "^4.13.1", "@smithy/util-base64": "^4.3.2", "@smithy/util-buffer-from": "^4.2.2", "@smithy/util-hex-encoding": "^4.2.2", "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" } }, "sha512-KzSg+7KKywLnkoKejRtIBXDmwBfjGvg1U1i/etkC7XSWUyFCoLno1IohV2c74IzQqdhX5y3uE44r/8/wuK+A7Q=="], - "@smithy/util-uri-escape": ["@smithy/util-uri-escape@4.2.2", "https://mirrors.cloud.tencent.com/npm/@smithy/util-uri-escape/-/util-uri-escape-4.2.2.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-2kAStBlvq+lTXHyAZYfJRb/DfS3rsinLiwb+69SstC9Vb0s9vNWkRwpnj918Pfi85mzi42sOqdV72OLxWAISnw=="], + "@smithy/util-uri-escape": ["@smithy/util-uri-escape@3.0.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-LqR7qYLgZTD7nWLBecUi4aqolw8Mhza9ArpNEQ881MJJIU2sE5iHCK6TdyqqzcDLy0OPe10IY4T8ctVdtynubg=="], "@smithy/util-utf8": ["@smithy/util-utf8@4.2.2", "https://mirrors.cloud.tencent.com/npm/@smithy/util-utf8/-/util-utf8-4.2.2.tgz", { "dependencies": { "@smithy/util-buffer-from": "^4.2.2", "tslib": "^2.6.2" } }, "sha512-75MeYpjdWRe8M5E3AW0O4Cx3UadweS+cwdXjwYGBW5h/gxxnbeZ877sLPX/ZJA9GVTlL/qG0dXP29JWFCD1Ayw=="], @@ -357,6 +503,10 @@ "@types/wrap-ansi": ["@types/wrap-ansi@3.0.0", "https://mirrors.cloud.tencent.com/npm/@types/wrap-ansi/-/wrap-ansi-3.0.0.tgz", {}, "sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g=="], + "@typespec/ts-http-runtime": ["@typespec/ts-http-runtime@0.3.4", "", { "dependencies": { "http-proxy-agent": "^7.0.0", "https-proxy-agent": "^7.0.0", "tslib": "^2.6.2" } }, "sha512-CI0NhTrz4EBaa0U+HaaUZrJhPoso8sG7ZFya8uQoBA57fjzrjRSv87ekCjLZOFExN+gXE/z0xuN2QfH4H2HrLQ=="], + + "@xmldom/xmldom": ["@xmldom/xmldom@0.8.12", "", {}, "sha512-9k/gHF6n/pAi/9tqr3m3aqkuiNosYTurLLUtc7xQ9sxB/wm7WPygCv8GYa6mS0fLJEHhqMC1ATYhz++U/lRHqg=="], + "accepts": ["accepts@2.0.0", "https://mirrors.cloud.tencent.com/npm/accepts/-/accepts-2.0.0.tgz", { "dependencies": { "mime-types": "^3.0.0", "negotiator": "^1.0.0" } }, "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng=="], "agent-base": ["agent-base@8.0.0", "https://mirrors.cloud.tencent.com/npm/agent-base/-/agent-base-8.0.0.tgz", {}, "sha512-QT8i0hCz6C/KQ+KTAbSNwCHDGdmUJl2tp2ZpNlGSWCfhUNVbYG2WLE3MdZGBAgXPV4GAvjGMxo+C1hroyxmZEg=="], @@ -371,14 +521,20 @@ "ansi-styles": ["ansi-styles@6.2.3", "https://mirrors.cloud.tencent.com/npm/ansi-styles/-/ansi-styles-6.2.3.tgz", {}, "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg=="], + "any-promise": ["any-promise@1.3.0", "", {}, "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A=="], + "asciichart": ["asciichart@1.5.25", "https://mirrors.cloud.tencent.com/npm/asciichart/-/asciichart-1.5.25.tgz", {}, "sha512-PNxzXIPPOtWq8T7bgzBtk9cI2lgS4SJZthUHEiQ1aoIc3lNzGfUvIvo9LiAnq26TACo9t1/4qP6KTGAUbzX9Xg=="], "asynckit": ["asynckit@0.4.0", "https://mirrors.cloud.tencent.com/npm/asynckit/-/asynckit-0.4.0.tgz", {}, "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="], + "audio-capture-napi": ["audio-capture-napi@file:shims/audio-capture-napi", {}], + "auto-bind": ["auto-bind@5.0.1", "https://mirrors.cloud.tencent.com/npm/auto-bind/-/auto-bind-5.0.1.tgz", {}, "sha512-ooviqdwwgfIfNmDwo94wlshcdzfO64XV0Cg6oDsDYBJfITDz1EngD2z7DkbvCWn+XIMsIqW27sEVF6qcpJrRcg=="], "axios": ["axios@1.14.0", "https://mirrors.cloud.tencent.com/npm/axios/-/axios-1.14.0.tgz", { "dependencies": { "follow-redirects": "^1.15.11", "form-data": "^4.0.5", "proxy-from-env": "^2.1.0" } }, "sha512-3Y8yrqLSwjuzpXuZ0oIYZ/XGgLwUIBU3uLvbcpb0pidD9ctpShJd43KSlEEkVQg6DS0G9NKyzOvBfUtDKEyHvQ=="], + "balanced-match": ["balanced-match@4.0.4", "", {}, "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA=="], + "base64-js": ["base64-js@1.5.1", "https://mirrors.cloud.tencent.com/npm/base64-js/-/base64-js-1.5.1.tgz", {}, "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="], "bidi-js": ["bidi-js@1.0.3", "https://mirrors.cloud.tencent.com/npm/bidi-js/-/bidi-js-1.0.3.tgz", { "dependencies": { "require-from-string": "^2.0.2" } }, "sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw=="], @@ -389,10 +545,16 @@ "bowser": ["bowser@2.14.1", "https://mirrors.cloud.tencent.com/npm/bowser/-/bowser-2.14.1.tgz", {}, "sha512-tzPjzCxygAKWFOJP011oxFHs57HzIhOEracIgAePE4pqB3LikALKnSzUyU4MGs9/iCEUuHlAJTjTc5M+u7YEGg=="], + "brace-expansion": ["brace-expansion@5.0.5", "", { "dependencies": { "balanced-match": "^4.0.2" } }, "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ=="], + "buffer-equal-constant-time": ["buffer-equal-constant-time@1.0.1", "https://mirrors.cloud.tencent.com/npm/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", {}, "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA=="], + "bundle-name": ["bundle-name@4.1.0", "", { "dependencies": { "run-applescript": "^7.0.0" } }, "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q=="], + "bytes": ["bytes@3.1.2", "https://mirrors.cloud.tencent.com/npm/bytes/-/bytes-3.1.2.tgz", {}, "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg=="], + "cacache": ["cacache@20.0.4", "", { "dependencies": { "@npmcli/fs": "^5.0.0", "fs-minipass": "^3.0.0", "glob": "^13.0.0", "lru-cache": "^11.1.0", "minipass": "^7.0.3", "minipass-collect": "^2.0.1", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", "p-map": "^7.0.2", "ssri": "^13.0.0" } }, "sha512-M3Lab8NPYlZU2exsL3bMVvMrMqgwCnMWfdZbK28bn3pK6APT/Te/I8hjRPNu1uwORY9a1eEQoifXbKPQMfMTOA=="], + "call-bind-apply-helpers": ["call-bind-apply-helpers@1.0.2", "https://mirrors.cloud.tencent.com/npm/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", { "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2" } }, "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ=="], "call-bound": ["call-bound@1.0.4", "https://mirrors.cloud.tencent.com/npm/call-bound/-/call-bound-1.0.4.tgz", { "dependencies": { "call-bind-apply-helpers": "^1.0.2", "get-intrinsic": "^1.3.0" } }, "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg=="], @@ -409,11 +571,13 @@ "cli-cursor": ["cli-cursor@4.0.0", "https://mirrors.cloud.tencent.com/npm/cli-cursor/-/cli-cursor-4.0.0.tgz", { "dependencies": { "restore-cursor": "^4.0.0" } }, "sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg=="], + "cli-highlight": ["cli-highlight@2.1.11", "", { "dependencies": { "chalk": "^4.0.0", "highlight.js": "^10.7.1", "mz": "^2.4.0", "parse5": "^5.1.1", "parse5-htmlparser2-tree-adapter": "^6.0.0", "yargs": "^16.0.0" }, "bin": { "highlight": "bin/highlight" } }, "sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg=="], + "cli-truncate": ["cli-truncate@5.2.0", "https://mirrors.cloud.tencent.com/npm/cli-truncate/-/cli-truncate-5.2.0.tgz", { "dependencies": { "slice-ansi": "^8.0.0", "string-width": "^8.2.0" } }, "sha512-xRwvIOMGrfOAnM1JYtqQImuaNtDEv9v6oIYAs4LIHwTiKee8uwvIi363igssOC0O5U04i4AlENs79LQLu9tEMw=="], "cli-width": ["cli-width@4.1.0", "https://mirrors.cloud.tencent.com/npm/cli-width/-/cli-width-4.1.0.tgz", {}, "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ=="], - "cliui": ["cliui@6.0.0", "https://mirrors.cloud.tencent.com/npm/cliui/-/cliui-6.0.0.tgz", { "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", "wrap-ansi": "^6.2.0" } }, "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ=="], + "cliui": ["cliui@7.0.4", "", { "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", "wrap-ansi": "^7.0.0" } }, "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ=="], "code-excerpt": ["code-excerpt@4.0.0", "https://mirrors.cloud.tencent.com/npm/code-excerpt/-/code-excerpt-4.0.0.tgz", { "dependencies": { "convert-to-spaces": "^2.0.1" } }, "sha512-xxodCmBen3iy2i0WtAK8FlFNrRzjUqjRsMfho58xT/wvZU1YTM3fCnRjcy1gJPMepaRlgm/0e6w8SpWHpn3/cA=="], @@ -449,10 +613,18 @@ "decamelize": ["decamelize@1.2.0", "https://mirrors.cloud.tencent.com/npm/decamelize/-/decamelize-1.2.0.tgz", {}, "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA=="], + "default-browser": ["default-browser@5.5.0", "", { "dependencies": { "bundle-name": "^4.1.0", "default-browser-id": "^5.0.0" } }, "sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw=="], + + "default-browser-id": ["default-browser-id@5.0.1", "", {}, "sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q=="], + + "define-lazy-prop": ["define-lazy-prop@3.0.0", "", {}, "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg=="], + "delayed-stream": ["delayed-stream@1.0.0", "https://mirrors.cloud.tencent.com/npm/delayed-stream/-/delayed-stream-1.0.0.tgz", {}, "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ=="], "depd": ["depd@2.0.0", "https://mirrors.cloud.tencent.com/npm/depd/-/depd-2.0.0.tgz", {}, "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw=="], + "detect-libc": ["detect-libc@2.1.2", "", {}, "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ=="], + "diff": ["diff@8.0.4", "https://mirrors.cloud.tencent.com/npm/diff/-/diff-8.0.4.tgz", {}, "sha512-DPi0FmjiSU5EvQV0++GFDOJ9ASQUVFh5kD+OzOnYdi7n3Wpm9hWWGfB/O2blfHcMVTL5WkQXSnRiK9makhrcnw=="], "dijkstrajs": ["dijkstrajs@1.0.3", "https://mirrors.cloud.tencent.com/npm/dijkstrajs/-/dijkstrajs-1.0.3.tgz", {}, "sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA=="], @@ -483,6 +655,8 @@ "es-toolkit": ["es-toolkit@1.45.1", "https://mirrors.cloud.tencent.com/npm/es-toolkit/-/es-toolkit-1.45.1.tgz", {}, "sha512-/jhoOj/Fx+A+IIyDNOvO3TItGmlMKhtX8ISAHKE90c4b/k1tqaqEZ+uUqfpU8DMnW5cgNJv606zS55jGvza0Xw=="], + "escalade": ["escalade@3.2.0", "", {}, "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA=="], + "escape-html": ["escape-html@1.0.3", "https://mirrors.cloud.tencent.com/npm/escape-html/-/escape-html-1.0.3.tgz", {}, "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="], "escape-string-regexp": ["escape-string-regexp@2.0.0", "https://mirrors.cloud.tencent.com/npm/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", {}, "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w=="], @@ -535,6 +709,8 @@ "fs-extra": ["fs-extra@10.1.0", "https://mirrors.cloud.tencent.com/npm/fs-extra/-/fs-extra-10.1.0.tgz", { "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" } }, "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ=="], + "fs-minipass": ["fs-minipass@3.0.3", "", { "dependencies": { "minipass": "^7.0.3" } }, "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw=="], + "function-bind": ["function-bind@1.1.2", "https://mirrors.cloud.tencent.com/npm/function-bind/-/function-bind-1.1.2.tgz", {}, "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA=="], "fuse.js": ["fuse.js@7.1.0", "https://mirrors.cloud.tencent.com/npm/fuse.js/-/fuse.js-7.1.0.tgz", {}, "sha512-trLf4SzuuUxfusZADLINj+dE8clK1frKdmqiJNb1Es75fmI5oY6X2mxLVUciLLjxqw/xr72Dhy+lER6dGd02FQ=="], @@ -555,6 +731,8 @@ "get-stream": ["get-stream@9.0.1", "https://mirrors.cloud.tencent.com/npm/get-stream/-/get-stream-9.0.1.tgz", { "dependencies": { "@sec-ant/readable-stream": "^0.4.1", "is-stream": "^4.0.1" } }, "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA=="], + "glob": ["glob@13.0.6", "", { "dependencies": { "minimatch": "^10.2.2", "minipass": "^7.1.3", "path-scurry": "^2.0.2" } }, "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw=="], + "google-auth-library": ["google-auth-library@10.6.2", "https://mirrors.cloud.tencent.com/npm/google-auth-library/-/google-auth-library-10.6.2.tgz", { "dependencies": { "base64-js": "^1.3.0", "ecdsa-sig-formatter": "^1.0.11", "gaxios": "^7.1.4", "gcp-metadata": "8.1.2", "google-logging-utils": "1.1.3", "jws": "^4.0.0" } }, "sha512-e27Z6EThmVNNvtYASwQxose/G57rkRuaRbQyxM2bvYLLX/GqWZ5chWq2EBoUchJbCc57eC9ArzO5wMsEmWftCw=="], "google-logging-utils": ["google-logging-utils@1.1.3", "https://mirrors.cloud.tencent.com/npm/google-logging-utils/-/google-logging-utils-1.1.3.tgz", {}, "sha512-eAmLkjDjAFCVXg7A1unxHsLf961m6y17QFqXqAXGj/gVkKFrEICfStRfwUlGNfeCEjNRa32JEWOUTlYXPyyKvA=="], @@ -563,6 +741,8 @@ "graceful-fs": ["graceful-fs@4.2.11", "https://mirrors.cloud.tencent.com/npm/graceful-fs/-/graceful-fs-4.2.11.tgz", {}, "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="], + "gtoken": ["gtoken@7.1.0", "", { "dependencies": { "gaxios": "^6.0.0", "jws": "^4.0.0" } }, "sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw=="], + "has-flag": ["has-flag@5.0.1", "https://mirrors.cloud.tencent.com/npm/has-flag/-/has-flag-5.0.1.tgz", {}, "sha512-CsNUt5x9LUdx6hnk/E2SZLsDyvfqANZSUq4+D3D8RzDJ2M+HDTIkF60ibS1vHaK55vzgiZw1bEPFG9yH7l33wA=="], "has-symbols": ["has-symbols@1.1.0", "https://mirrors.cloud.tencent.com/npm/has-symbols/-/has-symbols-1.1.0.tgz", {}, "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ=="], @@ -577,6 +757,8 @@ "http-errors": ["http-errors@2.0.1", "https://mirrors.cloud.tencent.com/npm/http-errors/-/http-errors-2.0.1.tgz", { "dependencies": { "depd": "~2.0.0", "inherits": "~2.0.4", "setprototypeof": "~1.2.0", "statuses": "~2.0.2", "toidentifier": "~1.0.1" } }, "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ=="], + "http-proxy-agent": ["http-proxy-agent@7.0.2", "", { "dependencies": { "agent-base": "^7.1.0", "debug": "^4.3.4" } }, "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig=="], + "https-proxy-agent": ["https-proxy-agent@8.0.0", "https://mirrors.cloud.tencent.com/npm/https-proxy-agent/-/https-proxy-agent-8.0.0.tgz", { "dependencies": { "agent-base": "8.0.0", "debug": "^4.3.4" } }, "sha512-YYeW+iCnAS3xhvj2dvVoWgsbca3RfQy/IlaNHHOtDmU0jMqPI9euIq3Y9BJETdxk16h9NHHCKqp/KB9nIMStCQ=="], "human-signals": ["human-signals@8.0.1", "https://mirrors.cloud.tencent.com/npm/human-signals/-/human-signals-8.0.1.tgz", {}, "sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ=="], @@ -585,6 +767,8 @@ "ignore": ["ignore@7.0.5", "https://mirrors.cloud.tencent.com/npm/ignore/-/ignore-7.0.5.tgz", {}, "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg=="], + "image-processor-napi": ["image-processor-napi@file:shims/image-processor-napi", {}], + "indent-string": ["indent-string@5.0.0", "https://mirrors.cloud.tencent.com/npm/indent-string/-/indent-string-5.0.0.tgz", {}, "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg=="], "inherits": ["inherits@2.0.4", "https://mirrors.cloud.tencent.com/npm/inherits/-/inherits-2.0.4.tgz", {}, "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="], @@ -595,10 +779,14 @@ "ipaddr.js": ["ipaddr.js@1.9.1", "https://mirrors.cloud.tencent.com/npm/ipaddr.js/-/ipaddr.js-1.9.1.tgz", {}, "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="], + "is-docker": ["is-docker@3.0.0", "", { "bin": { "is-docker": "cli.js" } }, "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ=="], + "is-fullwidth-code-point": ["is-fullwidth-code-point@5.1.0", "https://mirrors.cloud.tencent.com/npm/is-fullwidth-code-point/-/is-fullwidth-code-point-5.1.0.tgz", { "dependencies": { "get-east-asian-width": "^1.3.1" } }, "sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ=="], "is-in-ci": ["is-in-ci@2.0.0", "https://mirrors.cloud.tencent.com/npm/is-in-ci/-/is-in-ci-2.0.0.tgz", { "bin": { "is-in-ci": "cli.js" } }, "sha512-cFeerHriAnhrQSbpAxL37W1wcJKUUX07HyLWZCW1URJT/ra3GyUTzBgUnh24TMVfNTV2Hij2HLxkPHFZfOZy5w=="], + "is-inside-container": ["is-inside-container@1.0.0", "", { "dependencies": { "is-docker": "^3.0.0" }, "bin": { "is-inside-container": "cli.js" } }, "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA=="], + "is-plain-obj": ["is-plain-obj@4.1.0", "https://mirrors.cloud.tencent.com/npm/is-plain-obj/-/is-plain-obj-4.1.0.tgz", {}, "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg=="], "is-promise": ["is-promise@4.0.0", "https://mirrors.cloud.tencent.com/npm/is-promise/-/is-promise-4.0.0.tgz", {}, "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ=="], @@ -609,6 +797,8 @@ "is-unicode-supported": ["is-unicode-supported@2.1.0", "https://mirrors.cloud.tencent.com/npm/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", {}, "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ=="], + "is-wsl": ["is-wsl@3.1.1", "", { "dependencies": { "is-inside-container": "^1.0.0" } }, "sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw=="], + "isexe": ["isexe@2.0.0", "https://mirrors.cloud.tencent.com/npm/isexe/-/isexe-2.0.0.tgz", {}, "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="], "jose": ["jose@6.2.2", "https://mirrors.cloud.tencent.com/npm/jose/-/jose-6.2.2.tgz", {}, "sha512-d7kPDd34KO/YnzaDOlikGpOurfF0ByC2sEV4cANCtdqLlTfBlw2p14O/5d/zv40gJPbIQxfES3nSx1/oYNyuZQ=="], @@ -625,6 +815,8 @@ "jsonfile": ["jsonfile@6.2.0", "https://mirrors.cloud.tencent.com/npm/jsonfile/-/jsonfile-6.2.0.tgz", { "dependencies": { "universalify": "^2.0.0" }, "optionalDependencies": { "graceful-fs": "^4.1.6" } }, "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg=="], + "jsonwebtoken": ["jsonwebtoken@9.0.3", "", { "dependencies": { "jws": "^4.0.1", "lodash.includes": "^4.3.0", "lodash.isboolean": "^3.0.3", "lodash.isinteger": "^4.0.4", "lodash.isnumber": "^3.0.3", "lodash.isplainobject": "^4.0.6", "lodash.isstring": "^4.0.1", "lodash.once": "^4.0.0", "ms": "^2.1.1", "semver": "^7.5.4" } }, "sha512-MT/xP0CrubFRNLNKvxJ2BYfy53Zkm++5bX9dtuPbqAeQpTVe0MQTFhao8+Cp//EmJp244xt6Drw/GVEGCUj40g=="], + "jwa": ["jwa@2.0.1", "https://mirrors.cloud.tencent.com/npm/jwa/-/jwa-2.0.1.tgz", { "dependencies": { "buffer-equal-constant-time": "^1.0.1", "ecdsa-sig-formatter": "1.0.11", "safe-buffer": "^5.0.1" } }, "sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg=="], "jws": ["jws@4.0.1", "https://mirrors.cloud.tencent.com/npm/jws/-/jws-4.0.1.tgz", { "dependencies": { "jwa": "^2.0.1", "safe-buffer": "^5.0.1" } }, "sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA=="], @@ -633,8 +825,26 @@ "lodash-es": ["lodash-es@4.17.23", "https://mirrors.cloud.tencent.com/npm/lodash-es/-/lodash-es-4.17.23.tgz", {}, "sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg=="], + "lodash.camelcase": ["lodash.camelcase@4.3.0", "", {}, "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA=="], + "lodash.debounce": ["lodash.debounce@4.0.8", "https://mirrors.cloud.tencent.com/npm/lodash.debounce/-/lodash.debounce-4.0.8.tgz", {}, "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow=="], + "lodash.includes": ["lodash.includes@4.3.0", "", {}, "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w=="], + + "lodash.isboolean": ["lodash.isboolean@3.0.3", "", {}, "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg=="], + + "lodash.isinteger": ["lodash.isinteger@4.0.4", "", {}, "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA=="], + + "lodash.isnumber": ["lodash.isnumber@3.0.3", "", {}, "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw=="], + + "lodash.isplainobject": ["lodash.isplainobject@4.0.6", "", {}, "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA=="], + + "lodash.isstring": ["lodash.isstring@4.0.1", "", {}, "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw=="], + + "lodash.once": ["lodash.once@4.1.1", "", {}, "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg=="], + + "long": ["long@5.3.2", "", {}, "sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA=="], + "lru-cache": ["lru-cache@11.2.7", "https://mirrors.cloud.tencent.com/npm/lru-cache/-/lru-cache-11.2.7.tgz", {}, "sha512-aY/R+aEsRelme17KGQa/1ZSIpLpNYYrhcrepKTZgE+W3WM16YMCaPwOHLHsmopZHELU0Ojin1lPVxKR0MihncA=="], "marked": ["marked@17.0.5", "https://mirrors.cloud.tencent.com/npm/marked/-/marked-17.0.5.tgz", { "bin": { "marked": "bin/marked.js" } }, "sha512-6hLvc0/JEbRjRgzI6wnT2P1XuM1/RrrDEX0kPt0N7jGm1133g6X7DlxFasUIx+72aKAr904GTxhSLDrd5DIlZg=="], @@ -651,12 +861,24 @@ "mimic-fn": ["mimic-fn@2.1.0", "https://mirrors.cloud.tencent.com/npm/mimic-fn/-/mimic-fn-2.1.0.tgz", {}, "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg=="], + "minimatch": ["minimatch@10.2.5", "", { "dependencies": { "brace-expansion": "^5.0.5" } }, "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg=="], + + "minipass": ["minipass@7.1.3", "", {}, "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A=="], + + "minipass-collect": ["minipass-collect@2.0.1", "", { "dependencies": { "minipass": "^7.0.3" } }, "sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw=="], + + "minipass-flush": ["minipass-flush@1.0.7", "", { "dependencies": { "minipass": "^3.0.0" } }, "sha512-TbqTz9cUwWyHS2Dy89P3ocAGUGxKjjLuR9z8w4WUTGAVgEj17/4nhgo2Du56i0Fm3Pm30g4iA8Lcqctc76jCzA=="], + + "minipass-pipeline": ["minipass-pipeline@1.2.4", "", { "dependencies": { "minipass": "^3.0.0" } }, "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A=="], + "modifiers-napi": ["modifiers-napi@file:shims/modifiers-napi", {}], "ms": ["ms@2.1.3", "https://mirrors.cloud.tencent.com/npm/ms/-/ms-2.1.3.tgz", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="], "mute-stream": ["mute-stream@1.0.0", "https://mirrors.cloud.tencent.com/npm/mute-stream/-/mute-stream-1.0.0.tgz", {}, "sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA=="], + "mz": ["mz@2.7.0", "", { "dependencies": { "any-promise": "^1.0.0", "object-assign": "^4.0.1", "thenify-all": "^1.0.0" } }, "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q=="], + "negotiator": ["negotiator@1.0.0", "https://mirrors.cloud.tencent.com/npm/negotiator/-/negotiator-1.0.0.tgz", {}, "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg=="], "node-domexception": ["node-domexception@1.0.0", "https://mirrors.cloud.tencent.com/npm/node-domexception/-/node-domexception-1.0.0.tgz", {}, "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ=="], @@ -677,6 +899,8 @@ "onetime": ["onetime@5.1.2", "https://mirrors.cloud.tencent.com/npm/onetime/-/onetime-5.1.2.tgz", { "dependencies": { "mimic-fn": "^2.1.0" } }, "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg=="], + "open": ["open@10.2.0", "", { "dependencies": { "default-browser": "^5.2.1", "define-lazy-prop": "^3.0.0", "is-inside-container": "^1.0.0", "wsl-utils": "^0.1.0" } }, "sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA=="], + "os-tmpdir": ["os-tmpdir@1.0.2", "https://mirrors.cloud.tencent.com/npm/os-tmpdir/-/os-tmpdir-1.0.2.tgz", {}, "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g=="], "p-limit": ["p-limit@2.3.0", "https://mirrors.cloud.tencent.com/npm/p-limit/-/p-limit-2.3.0.tgz", { "dependencies": { "p-try": "^2.0.0" } }, "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w=="], @@ -689,6 +913,10 @@ "parse-ms": ["parse-ms@4.0.0", "https://mirrors.cloud.tencent.com/npm/parse-ms/-/parse-ms-4.0.0.tgz", {}, "sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw=="], + "parse5": ["parse5@5.1.1", "", {}, "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug=="], + + "parse5-htmlparser2-tree-adapter": ["parse5-htmlparser2-tree-adapter@6.0.1", "", { "dependencies": { "parse5": "^6.0.1" } }, "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA=="], + "parseurl": ["parseurl@1.3.3", "https://mirrors.cloud.tencent.com/npm/parseurl/-/parseurl-1.3.3.tgz", {}, "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="], "patch-console": ["patch-console@2.0.0", "https://mirrors.cloud.tencent.com/npm/patch-console/-/patch-console-2.0.0.tgz", {}, "sha512-0YNdUceMdaQwoKce1gatDScmMo5pu/tfABfnzEqeG0gtTmd7mh/WcwgUjtAeOU7N8nFFlbQBnFK2gXW5fGvmMA=="], @@ -699,12 +927,16 @@ "path-key": ["path-key@3.1.1", "https://mirrors.cloud.tencent.com/npm/path-key/-/path-key-3.1.1.tgz", {}, "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="], + "path-scurry": ["path-scurry@2.0.2", "", { "dependencies": { "lru-cache": "^11.0.0", "minipass": "^7.1.2" } }, "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg=="], + "path-to-regexp": ["path-to-regexp@8.4.1", "https://mirrors.cloud.tencent.com/npm/path-to-regexp/-/path-to-regexp-8.4.1.tgz", {}, "sha512-fvU78fIjZ+SBM9YwCknCvKOUKkLVqtWDVctl0s7xIqfmfb38t2TT4ZU2gHm+Z8xGwgW+QWEU3oQSAzIbo89Ggw=="], "picomatch": ["picomatch@4.0.4", "https://mirrors.cloud.tencent.com/npm/picomatch/-/picomatch-4.0.4.tgz", {}, "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A=="], "pkce-challenge": ["pkce-challenge@5.0.1", "https://mirrors.cloud.tencent.com/npm/pkce-challenge/-/pkce-challenge-5.0.1.tgz", {}, "sha512-wQ0b/W4Fr01qtpHlqSqspcj3EhBvimsdh0KlHhH8HRZnMsEa0ea2fTULOXOS9ccQr3om+GcGRk4e+isrZWV8qQ=="], + "plist": ["plist@3.1.0", "", { "dependencies": { "@xmldom/xmldom": "^0.8.8", "base64-js": "^1.5.1", "xmlbuilder": "^15.1.1" } }, "sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ=="], + "pngjs": ["pngjs@5.0.0", "https://mirrors.cloud.tencent.com/npm/pngjs/-/pngjs-5.0.0.tgz", {}, "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw=="], "pretty-bytes": ["pretty-bytes@5.6.0", "https://mirrors.cloud.tencent.com/npm/pretty-bytes/-/pretty-bytes-5.6.0.tgz", {}, "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg=="], @@ -713,6 +945,8 @@ "proper-lockfile": ["proper-lockfile@4.1.2", "https://mirrors.cloud.tencent.com/npm/proper-lockfile/-/proper-lockfile-4.1.2.tgz", { "dependencies": { "graceful-fs": "^4.2.4", "retry": "^0.12.0", "signal-exit": "^3.0.2" } }, "sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA=="], + "protobufjs": ["protobufjs@7.5.4", "", { "dependencies": { "@protobufjs/aspromise": "^1.1.2", "@protobufjs/base64": "^1.1.2", "@protobufjs/codegen": "^2.0.4", "@protobufjs/eventemitter": "^1.1.0", "@protobufjs/fetch": "^1.1.0", "@protobufjs/float": "^1.0.2", "@protobufjs/inquire": "^1.1.0", "@protobufjs/path": "^1.1.2", "@protobufjs/pool": "^1.1.0", "@protobufjs/utf8": "^1.1.0", "@types/node": ">=13.7.0", "long": "^5.0.0" } }, "sha512-CvexbZtbov6jW2eXAvLukXjXUW1TzFaivC46BpWc/3BpcCysb5Vffu+B3XHMm8lVEuy2Mm4XGex8hBSg1yapPg=="], + "proxy-addr": ["proxy-addr@2.0.7", "https://mirrors.cloud.tencent.com/npm/proxy-addr/-/proxy-addr-2.0.7.tgz", { "dependencies": { "forwarded": "0.2.0", "ipaddr.js": "1.9.1" } }, "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg=="], "proxy-from-env": ["proxy-from-env@2.1.0", "https://mirrors.cloud.tencent.com/npm/proxy-from-env/-/proxy-from-env-2.1.0.tgz", {}, "sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA=="], @@ -743,6 +977,8 @@ "router": ["router@2.2.0", "https://mirrors.cloud.tencent.com/npm/router/-/router-2.2.0.tgz", { "dependencies": { "debug": "^4.4.0", "depd": "^2.0.0", "is-promise": "^4.0.0", "parseurl": "^1.3.3", "path-to-regexp": "^8.0.0" } }, "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ=="], + "run-applescript": ["run-applescript@7.1.0", "", {}, "sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q=="], + "safe-buffer": ["safe-buffer@5.2.1", "https://mirrors.cloud.tencent.com/npm/safe-buffer/-/safe-buffer-5.2.1.tgz", {}, "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="], "safer-buffer": ["safer-buffer@2.1.2", "https://mirrors.cloud.tencent.com/npm/safer-buffer/-/safer-buffer-2.1.2.tgz", {}, "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="], @@ -759,6 +995,8 @@ "setprototypeof": ["setprototypeof@1.2.0", "https://mirrors.cloud.tencent.com/npm/setprototypeof/-/setprototypeof-1.2.0.tgz", {}, "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="], + "sharp": ["sharp@0.34.5", "", { "dependencies": { "@img/colour": "^1.0.0", "detect-libc": "^2.1.2", "semver": "^7.7.3" }, "optionalDependencies": { "@img/sharp-darwin-arm64": "0.34.5", "@img/sharp-darwin-x64": "0.34.5", "@img/sharp-libvips-darwin-arm64": "1.2.4", "@img/sharp-libvips-darwin-x64": "1.2.4", "@img/sharp-libvips-linux-arm": "1.2.4", "@img/sharp-libvips-linux-arm64": "1.2.4", "@img/sharp-libvips-linux-ppc64": "1.2.4", "@img/sharp-libvips-linux-riscv64": "1.2.4", "@img/sharp-libvips-linux-s390x": "1.2.4", "@img/sharp-libvips-linux-x64": "1.2.4", "@img/sharp-libvips-linuxmusl-arm64": "1.2.4", "@img/sharp-libvips-linuxmusl-x64": "1.2.4", "@img/sharp-linux-arm": "0.34.5", "@img/sharp-linux-arm64": "0.34.5", "@img/sharp-linux-ppc64": "0.34.5", "@img/sharp-linux-riscv64": "0.34.5", "@img/sharp-linux-s390x": "0.34.5", "@img/sharp-linux-x64": "0.34.5", "@img/sharp-linuxmusl-arm64": "0.34.5", "@img/sharp-linuxmusl-x64": "0.34.5", "@img/sharp-wasm32": "0.34.5", "@img/sharp-win32-arm64": "0.34.5", "@img/sharp-win32-ia32": "0.34.5", "@img/sharp-win32-x64": "0.34.5" } }, "sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg=="], + "shebang-command": ["shebang-command@2.0.0", "https://mirrors.cloud.tencent.com/npm/shebang-command/-/shebang-command-2.0.0.tgz", { "dependencies": { "shebang-regex": "^3.0.0" } }, "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA=="], "shebang-regex": ["shebang-regex@3.0.0", "https://mirrors.cloud.tencent.com/npm/shebang-regex/-/shebang-regex-3.0.0.tgz", {}, "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="], @@ -777,6 +1015,8 @@ "slice-ansi": ["slice-ansi@8.0.0", "https://mirrors.cloud.tencent.com/npm/slice-ansi/-/slice-ansi-8.0.0.tgz", { "dependencies": { "ansi-styles": "^6.2.3", "is-fullwidth-code-point": "^5.1.0" } }, "sha512-stxByr12oeeOyY2BlviTNQlYV5xOj47GirPr4yA1hE9JCtxfQN0+tVbkxwCtYDQWhEKWFHsEK48ORg5jrouCAg=="], + "ssri": ["ssri@13.0.1", "", { "dependencies": { "minipass": "^7.0.3" } }, "sha512-QUiRf1+u9wPTL/76GTYlKttDEBWV1ga9ZXW8BG6kfdeyyM8LGPix9gROyg9V2+P0xNyF3X2Go526xKFdMZrHSQ=="], + "stack-utils": ["stack-utils@2.0.6", "https://mirrors.cloud.tencent.com/npm/stack-utils/-/stack-utils-2.0.6.tgz", { "dependencies": { "escape-string-regexp": "^2.0.0" } }, "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ=="], "statuses": ["statuses@2.0.2", "https://mirrors.cloud.tencent.com/npm/statuses/-/statuses-2.0.2.tgz", {}, "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw=="], @@ -797,16 +1037,24 @@ "terminal-size": ["terminal-size@4.0.1", "https://mirrors.cloud.tencent.com/npm/terminal-size/-/terminal-size-4.0.1.tgz", {}, "sha512-avMLDQpUI9I5XFrklECw1ZEUPJhqzcwSWsyyI8blhRLT+8N1jLJWLWWYQpB2q2xthq8xDvjZPISVh53T/+CLYQ=="], + "thenify": ["thenify@3.3.1", "", { "dependencies": { "any-promise": "^1.0.0" } }, "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw=="], + + "thenify-all": ["thenify-all@1.6.0", "", { "dependencies": { "thenify": ">= 3.1.0 < 4" } }, "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA=="], + "tmp": ["tmp@0.0.33", "https://mirrors.cloud.tencent.com/npm/tmp/-/tmp-0.0.33.tgz", { "dependencies": { "os-tmpdir": "~1.0.2" } }, "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw=="], "toidentifier": ["toidentifier@1.0.1", "https://mirrors.cloud.tencent.com/npm/toidentifier/-/toidentifier-1.0.1.tgz", {}, "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA=="], + "tr46": ["tr46@0.0.3", "", {}, "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="], + "tree-kill": ["tree-kill@1.2.2", "https://mirrors.cloud.tencent.com/npm/tree-kill/-/tree-kill-1.2.2.tgz", { "bin": { "tree-kill": "cli.js" } }, "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A=="], "ts-algebra": ["ts-algebra@2.0.0", "https://mirrors.cloud.tencent.com/npm/ts-algebra/-/ts-algebra-2.0.0.tgz", {}, "sha512-FPAhNPFMrkwz76P7cdjdmiShwMynZYN6SgOujD1urY4oNm80Ou9oMdmbR45LotcKOXoy7wSmHkRFE6Mxbrhefw=="], "tslib": ["tslib@2.8.1", "https://mirrors.cloud.tencent.com/npm/tslib/-/tslib-2.8.1.tgz", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "turndown": ["turndown@7.2.2", "", { "dependencies": { "@mixmark-io/domino": "^2.2.0" } }, "sha512-1F7db8BiExOKxjSMU2b7if62D/XOyQyZbPKq/nUwopfgnHlqXHqQ0lvfUTeUIr1lZJzOPFn43dODyMSIfvWRKQ=="], + "type-fest": ["type-fest@5.5.0", "https://mirrors.cloud.tencent.com/npm/type-fest/-/type-fest-5.5.0.tgz", { "dependencies": { "tagged-tag": "^1.0.0" } }, "sha512-PlBfpQwiUvGViBNX84Yxwjsdhd1TUlXr6zjX7eoirtCPIr08NAmxwa+fcYBTeRQxHo9YC9wwF3m9i700sHma8g=="], "type-is": ["type-is@2.0.1", "https://mirrors.cloud.tencent.com/npm/type-is/-/type-is-2.0.1.tgz", { "dependencies": { "content-type": "^1.0.5", "media-typer": "^1.1.0", "mime-types": "^3.0.0" } }, "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw=="], @@ -825,6 +1073,8 @@ "usehooks-ts": ["usehooks-ts@3.1.1", "https://mirrors.cloud.tencent.com/npm/usehooks-ts/-/usehooks-ts-3.1.1.tgz", { "dependencies": { "lodash.debounce": "^4.0.8" }, "peerDependencies": { "react": "^16.8.0 || ^17 || ^18 || ^19 || ^19.0.0-rc" } }, "sha512-I4diPp9Cq6ieSUH2wu+fDAVQO43xwtulo+fKEidHUwZPnYImbtkTjzIJYcDcJqxgmX31GVqNFURodvcgHcW0pA=="], + "uuid": ["uuid@8.3.2", "", { "bin": { "uuid": "dist/bin/uuid" } }, "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg=="], + "vary": ["vary@1.1.2", "https://mirrors.cloud.tencent.com/npm/vary/-/vary-1.1.2.tgz", {}, "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg=="], "vscode-jsonrpc": ["vscode-jsonrpc@8.2.1", "https://mirrors.cloud.tencent.com/npm/vscode-jsonrpc/-/vscode-jsonrpc-8.2.1.tgz", {}, "sha512-kdjOSJ2lLIn7r1rtrMbbNCHjyMPfRnowdKjBQ+mGq6NAW5QY2bEZC/khaC5OR8svbbjvLEaIXkOq45e2X9BIbQ=="], @@ -835,6 +1085,10 @@ "web-streams-polyfill": ["web-streams-polyfill@3.3.3", "https://mirrors.cloud.tencent.com/npm/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", {}, "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw=="], + "webidl-conversions": ["webidl-conversions@3.0.1", "", {}, "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="], + + "whatwg-url": ["whatwg-url@5.0.0", "", { "dependencies": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" } }, "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw=="], + "which": ["which@2.0.2", "https://mirrors.cloud.tencent.com/npm/which/-/which-2.0.2.tgz", { "dependencies": { "isexe": "^2.0.0" }, "bin": { "node-which": "./bin/node-which" } }, "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="], "which-module": ["which-module@2.0.1", "https://mirrors.cloud.tencent.com/npm/which-module/-/which-module-2.0.1.tgz", {}, "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ=="], @@ -847,15 +1101,21 @@ "ws": ["ws@8.20.0", "https://mirrors.cloud.tencent.com/npm/ws/-/ws-8.20.0.tgz", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA=="], + "wsl-utils": ["wsl-utils@0.1.0", "", { "dependencies": { "is-wsl": "^3.1.0" } }, "sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw=="], + + "xmlbuilder": ["xmlbuilder@15.1.1", "", {}, "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg=="], + "xss": ["xss@1.0.15", "https://mirrors.cloud.tencent.com/npm/xss/-/xss-1.0.15.tgz", { "dependencies": { "commander": "^2.20.3", "cssfilter": "0.0.10" }, "bin": { "xss": "bin/xss" } }, "sha512-FVdlVVC67WOIPvfOwhoMETV72f6GbW7aOabBC3WxN/oUdoEMDyLz4OgRv5/gck2ZeNqEQu+Tb0kloovXOfpYVg=="], - "y18n": ["y18n@4.0.3", "https://mirrors.cloud.tencent.com/npm/y18n/-/y18n-4.0.3.tgz", {}, "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ=="], + "y18n": ["y18n@5.0.8", "", {}, "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA=="], + + "yallist": ["yallist@4.0.0", "", {}, "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="], "yaml": ["yaml@2.8.3", "https://mirrors.cloud.tencent.com/npm/yaml/-/yaml-2.8.3.tgz", { "bin": { "yaml": "bin.mjs" } }, "sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg=="], - "yargs": ["yargs@15.4.1", "https://mirrors.cloud.tencent.com/npm/yargs/-/yargs-15.4.1.tgz", { "dependencies": { "cliui": "^6.0.0", "decamelize": "^1.2.0", "find-up": "^4.1.0", "get-caller-file": "^2.0.1", "require-directory": "^2.1.1", "require-main-filename": "^2.0.0", "set-blocking": "^2.0.0", "string-width": "^4.2.0", "which-module": "^2.0.0", "y18n": "^4.0.0", "yargs-parser": "^18.1.2" } }, "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A=="], + "yargs": ["yargs@16.2.0", "", { "dependencies": { "cliui": "^7.0.2", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", "string-width": "^4.2.0", "y18n": "^5.0.5", "yargs-parser": "^20.2.2" } }, "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw=="], - "yargs-parser": ["yargs-parser@18.1.3", "https://mirrors.cloud.tencent.com/npm/yargs-parser/-/yargs-parser-18.1.3.tgz", { "dependencies": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" } }, "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ=="], + "yargs-parser": ["yargs-parser@20.2.9", "", {}, "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w=="], "yoctocolors": ["yoctocolors@2.1.2", "https://mirrors.cloud.tencent.com/npm/yoctocolors/-/yoctocolors-2.1.2.tgz", {}, "sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug=="], @@ -875,9 +1135,189 @@ "@anthropic-ai/sandbox-runtime/zod": ["zod@3.25.76", "https://mirrors.cloud.tencent.com/npm/zod/-/zod-3.25.76.tgz", {}, "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ=="], + "@anthropic-ai/vertex-sdk/google-auth-library": ["google-auth-library@9.15.1", "", { "dependencies": { "base64-js": "^1.3.0", "ecdsa-sig-formatter": "^1.0.11", "gaxios": "^6.1.1", "gcp-metadata": "^6.1.0", "gtoken": "^7.0.0", "jws": "^4.0.0" } }, "sha512-Jb6Z0+nvECVz+2lzSMt9u98UsoakXxA2HGHMCxh+so3n90XgYWkq5dur19JAJV7ONiJY22yBTyJB1TSkvPq9Ng=="], + + "@aws-crypto/crc32/@aws-crypto/util": ["@aws-crypto/util@5.2.0", "https://mirrors.cloud.tencent.com/npm/@aws-crypto/util/-/util-5.2.0.tgz", { "dependencies": { "@aws-sdk/types": "^3.222.0", "@smithy/util-utf8": "^2.0.0", "tslib": "^2.6.2" } }, "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ=="], + + "@aws-crypto/sha256-browser/@aws-crypto/sha256-js": ["@aws-crypto/sha256-js@5.2.0", "https://mirrors.cloud.tencent.com/npm/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz", { "dependencies": { "@aws-crypto/util": "^5.2.0", "@aws-sdk/types": "^3.222.0", "tslib": "^2.6.2" } }, "sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA=="], + + "@aws-crypto/sha256-browser/@aws-crypto/util": ["@aws-crypto/util@5.2.0", "https://mirrors.cloud.tencent.com/npm/@aws-crypto/util/-/util-5.2.0.tgz", { "dependencies": { "@aws-sdk/types": "^3.222.0", "@smithy/util-utf8": "^2.0.0", "tslib": "^2.6.2" } }, "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ=="], + "@aws-crypto/sha256-browser/@smithy/util-utf8": ["@smithy/util-utf8@2.3.0", "https://mirrors.cloud.tencent.com/npm/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", { "dependencies": { "@smithy/util-buffer-from": "^2.2.0", "tslib": "^2.6.2" } }, "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A=="], - "@aws-crypto/util/@smithy/util-utf8": ["@smithy/util-utf8@2.3.0", "https://mirrors.cloud.tencent.com/npm/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", { "dependencies": { "@smithy/util-buffer-from": "^2.2.0", "tslib": "^2.6.2" } }, "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A=="], + "@aws-crypto/sha256-js/tslib": ["tslib@1.14.1", "", {}, "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="], + + "@aws-crypto/util/tslib": ["tslib@1.14.1", "", {}, "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="], + + "@aws-sdk/client-bedrock/@aws-crypto/sha256-js": ["@aws-crypto/sha256-js@5.2.0", "https://mirrors.cloud.tencent.com/npm/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz", { "dependencies": { "@aws-crypto/util": "^5.2.0", "@aws-sdk/types": "^3.222.0", "tslib": "^2.6.2" } }, "sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA=="], + + "@aws-sdk/client-bedrock/@aws-sdk/credential-provider-node": ["@aws-sdk/credential-provider-node@3.972.29", "", { "dependencies": { "@aws-sdk/credential-provider-env": "^3.972.24", "@aws-sdk/credential-provider-http": "^3.972.26", "@aws-sdk/credential-provider-ini": "^3.972.28", "@aws-sdk/credential-provider-process": "^3.972.24", "@aws-sdk/credential-provider-sso": "^3.972.28", "@aws-sdk/credential-provider-web-identity": "^3.972.28", "@aws-sdk/types": "^3.973.6", "@smithy/credential-provider-imds": "^4.2.12", "@smithy/property-provider": "^4.2.12", "@smithy/shared-ini-file-loader": "^4.4.7", "@smithy/types": "^4.13.1", "tslib": "^2.6.2" } }, "sha512-clSzDcvndpFJAggLDnDb36sPdlZYyEs5Zm6zgZjjUhwsJgSWiWKwFIXUVBcbruidNyBdbpOv2tNDL9sX8y3/0g=="], + + "@aws-sdk/client-bedrock/@smithy/protocol-http": ["@smithy/protocol-http@5.3.12", "https://mirrors.cloud.tencent.com/npm/@smithy/protocol-http/-/protocol-http-5.3.12.tgz", { "dependencies": { "@smithy/types": "^4.13.1", "tslib": "^2.6.2" } }, "sha512-fit0GZK9I1xoRlR4jXmbLhoN0OdEpa96ul8M65XdmXnxXkuMxM0Y8HDT0Fh0Xb4I85MBvBClOzgSrV1X2s1Hxw=="], + + "@aws-sdk/client-bedrock/@smithy/smithy-client": ["@smithy/smithy-client@4.12.8", "https://mirrors.cloud.tencent.com/npm/@smithy/smithy-client/-/smithy-client-4.12.8.tgz", { "dependencies": { "@smithy/core": "^3.23.13", "@smithy/middleware-endpoint": "^4.4.28", "@smithy/middleware-stack": "^4.2.12", "@smithy/protocol-http": "^5.3.12", "@smithy/types": "^4.13.1", "@smithy/util-stream": "^4.5.21", "tslib": "^2.6.2" } }, "sha512-aJaAX7vHe5i66smoSSID7t4rKY08PbD8EBU7DOloixvhOozfYWdcSYE4l6/tjkZ0vBZhGjheWzB2mh31sLgCMA=="], + + "@aws-sdk/client-bedrock/@smithy/types": ["@smithy/types@4.13.1", "https://mirrors.cloud.tencent.com/npm/@smithy/types/-/types-4.13.1.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-787F3yzE2UiJIQ+wYW1CVg2odHjmaWLGksnKQHUrK/lYZSEcy1msuLVvxaR/sI2/aDe9U+TBuLsXnr3vod1g0g=="], + + "@aws-sdk/client-bedrock/@smithy/util-base64": ["@smithy/util-base64@4.3.2", "https://mirrors.cloud.tencent.com/npm/@smithy/util-base64/-/util-base64-4.3.2.tgz", { "dependencies": { "@smithy/util-buffer-from": "^4.2.2", "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" } }, "sha512-XRH6b0H/5A3SgblmMa5ErXQ2XKhfbQB+Fm/oyLZ2O2kCUrwgg55bU0RekmzAhuwOjA9qdN5VU2BprOvGGUkOOQ=="], + + "@aws-sdk/client-bedrock-runtime/@aws-crypto/sha256-js": ["@aws-crypto/sha256-js@5.2.0", "https://mirrors.cloud.tencent.com/npm/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz", { "dependencies": { "@aws-crypto/util": "^5.2.0", "@aws-sdk/types": "^3.222.0", "tslib": "^2.6.2" } }, "sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA=="], + + "@aws-sdk/client-bedrock-runtime/@aws-sdk/middleware-user-agent": ["@aws-sdk/middleware-user-agent@3.972.27", "https://mirrors.cloud.tencent.com/npm/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.972.27.tgz", { "dependencies": { "@aws-sdk/core": "^3.973.26", "@aws-sdk/types": "^3.973.6", "@aws-sdk/util-endpoints": "^3.996.5", "@smithy/core": "^3.23.13", "@smithy/protocol-http": "^5.3.12", "@smithy/types": "^4.13.1", "@smithy/util-retry": "^4.2.12", "tslib": "^2.6.2" } }, "sha512-TIRLO5UR2+FVUGmhYoAwVkKhcVzywEDX/5LzR9tjy1h8FQAXOtFg2IqgmwvxU7y933rkTn9rl6AdgcAUgQ1/Kg=="], + + "@aws-sdk/client-bedrock-runtime/@aws-sdk/token-providers": ["@aws-sdk/token-providers@3.1020.0", "https://mirrors.cloud.tencent.com/npm/@aws-sdk/token-providers/-/token-providers-3.1020.0.tgz", { "dependencies": { "@aws-sdk/core": "^3.973.26", "@aws-sdk/nested-clients": "^3.996.17", "@aws-sdk/types": "^3.973.6", "@smithy/property-provider": "^4.2.12", "@smithy/shared-ini-file-loader": "^4.4.7", "@smithy/types": "^4.13.1", "tslib": "^2.6.2" } }, "sha512-T61KA/VKl0zVUubdxigr1ut7SEpwE1/4CIKb14JDLyTAOne2yWKtQE1dDCSHl0UqrZNwW/bTt+EBHfQbslZJdw=="], + + "@aws-sdk/client-bedrock-runtime/@aws-sdk/util-user-agent-node": ["@aws-sdk/util-user-agent-node@3.973.13", "https://mirrors.cloud.tencent.com/npm/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.973.13.tgz", { "dependencies": { "@aws-sdk/middleware-user-agent": "^3.972.27", "@aws-sdk/types": "^3.973.6", "@smithy/node-config-provider": "^4.3.12", "@smithy/types": "^4.13.1", "@smithy/util-config-provider": "^4.2.2", "tslib": "^2.6.2" }, "peerDependencies": { "aws-crt": ">=1.0.0" }, "optionalPeers": ["aws-crt"] }, "sha512-s1dCJ0J9WU9UPkT3FFqhKTSquYTkqWXGRaapHFyWwwJH86ZussewhNST5R5TwXVL1VSHq4aJVl9fWK+svaRVCQ=="], + + "@aws-sdk/client-bedrock-runtime/@smithy/eventstream-serde-node": ["@smithy/eventstream-serde-node@4.2.12", "https://mirrors.cloud.tencent.com/npm/@smithy/eventstream-serde-node/-/eventstream-serde-node-4.2.12.tgz", { "dependencies": { "@smithy/eventstream-serde-universal": "^4.2.12", "@smithy/types": "^4.13.1", "tslib": "^2.6.2" } }, "sha512-D1pFuExo31854eAvg89KMn9Oab/wEeJR6Buy32B49A9Ogdtx5fwZPqBHUlDzaCDpycTFk2+fSQgX689Qsk7UGA=="], + + "@aws-sdk/client-bedrock-runtime/@smithy/middleware-retry": ["@smithy/middleware-retry@4.4.45", "https://mirrors.cloud.tencent.com/npm/@smithy/middleware-retry/-/middleware-retry-4.4.45.tgz", { "dependencies": { "@smithy/node-config-provider": "^4.3.12", "@smithy/protocol-http": "^5.3.12", "@smithy/service-error-classification": "^4.2.12", "@smithy/smithy-client": "^4.12.8", "@smithy/types": "^4.13.1", "@smithy/util-middleware": "^4.2.12", "@smithy/util-retry": "^4.2.12", "@smithy/uuid": "^1.1.2", "tslib": "^2.6.2" } }, "sha512-td1PxpwDIaw5/oP/xIRxBGxJKoF1L4DBAwbZ8wjMuXBYOP/r2ZE/Ocou+mBHx/yk9knFEtDBwhSrYVn+Mz4pHw=="], + + "@aws-sdk/client-bedrock-runtime/@smithy/protocol-http": ["@smithy/protocol-http@5.3.12", "https://mirrors.cloud.tencent.com/npm/@smithy/protocol-http/-/protocol-http-5.3.12.tgz", { "dependencies": { "@smithy/types": "^4.13.1", "tslib": "^2.6.2" } }, "sha512-fit0GZK9I1xoRlR4jXmbLhoN0OdEpa96ul8M65XdmXnxXkuMxM0Y8HDT0Fh0Xb4I85MBvBClOzgSrV1X2s1Hxw=="], + + "@aws-sdk/client-bedrock-runtime/@smithy/smithy-client": ["@smithy/smithy-client@4.12.8", "https://mirrors.cloud.tencent.com/npm/@smithy/smithy-client/-/smithy-client-4.12.8.tgz", { "dependencies": { "@smithy/core": "^3.23.13", "@smithy/middleware-endpoint": "^4.4.28", "@smithy/middleware-stack": "^4.2.12", "@smithy/protocol-http": "^5.3.12", "@smithy/types": "^4.13.1", "@smithy/util-stream": "^4.5.21", "tslib": "^2.6.2" } }, "sha512-aJaAX7vHe5i66smoSSID7t4rKY08PbD8EBU7DOloixvhOozfYWdcSYE4l6/tjkZ0vBZhGjheWzB2mh31sLgCMA=="], + + "@aws-sdk/client-bedrock-runtime/@smithy/types": ["@smithy/types@4.13.1", "https://mirrors.cloud.tencent.com/npm/@smithy/types/-/types-4.13.1.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-787F3yzE2UiJIQ+wYW1CVg2odHjmaWLGksnKQHUrK/lYZSEcy1msuLVvxaR/sI2/aDe9U+TBuLsXnr3vod1g0g=="], + + "@aws-sdk/client-bedrock-runtime/@smithy/util-base64": ["@smithy/util-base64@4.3.2", "https://mirrors.cloud.tencent.com/npm/@smithy/util-base64/-/util-base64-4.3.2.tgz", { "dependencies": { "@smithy/util-buffer-from": "^4.2.2", "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" } }, "sha512-XRH6b0H/5A3SgblmMa5ErXQ2XKhfbQB+Fm/oyLZ2O2kCUrwgg55bU0RekmzAhuwOjA9qdN5VU2BprOvGGUkOOQ=="], + + "@aws-sdk/client-bedrock-runtime/@smithy/util-retry": ["@smithy/util-retry@4.2.12", "https://mirrors.cloud.tencent.com/npm/@smithy/util-retry/-/util-retry-4.2.12.tgz", { "dependencies": { "@smithy/service-error-classification": "^4.2.12", "@smithy/types": "^4.13.1", "tslib": "^2.6.2" } }, "sha512-1zopLDUEOwumjcHdJ1mwBHddubYF8GMQvstVCLC54Y46rqoHwlIU+8ZzUeaBcD+WCJHyDGSeZ2ml9YSe9aqcoQ=="], + + "@aws-sdk/client-cognito-identity/@aws-crypto/sha256-js": ["@aws-crypto/sha256-js@5.2.0", "https://mirrors.cloud.tencent.com/npm/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz", { "dependencies": { "@aws-crypto/util": "^5.2.0", "@aws-sdk/types": "^3.222.0", "tslib": "^2.6.2" } }, "sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA=="], + + "@aws-sdk/client-cognito-identity/@aws-sdk/credential-provider-node": ["@aws-sdk/credential-provider-node@3.972.29", "", { "dependencies": { "@aws-sdk/credential-provider-env": "^3.972.24", "@aws-sdk/credential-provider-http": "^3.972.26", "@aws-sdk/credential-provider-ini": "^3.972.28", "@aws-sdk/credential-provider-process": "^3.972.24", "@aws-sdk/credential-provider-sso": "^3.972.28", "@aws-sdk/credential-provider-web-identity": "^3.972.28", "@aws-sdk/types": "^3.973.6", "@smithy/credential-provider-imds": "^4.2.12", "@smithy/property-provider": "^4.2.12", "@smithy/shared-ini-file-loader": "^4.4.7", "@smithy/types": "^4.13.1", "tslib": "^2.6.2" } }, "sha512-clSzDcvndpFJAggLDnDb36sPdlZYyEs5Zm6zgZjjUhwsJgSWiWKwFIXUVBcbruidNyBdbpOv2tNDL9sX8y3/0g=="], + + "@aws-sdk/client-cognito-identity/@smithy/protocol-http": ["@smithy/protocol-http@5.3.12", "https://mirrors.cloud.tencent.com/npm/@smithy/protocol-http/-/protocol-http-5.3.12.tgz", { "dependencies": { "@smithy/types": "^4.13.1", "tslib": "^2.6.2" } }, "sha512-fit0GZK9I1xoRlR4jXmbLhoN0OdEpa96ul8M65XdmXnxXkuMxM0Y8HDT0Fh0Xb4I85MBvBClOzgSrV1X2s1Hxw=="], + + "@aws-sdk/client-cognito-identity/@smithy/smithy-client": ["@smithy/smithy-client@4.12.8", "https://mirrors.cloud.tencent.com/npm/@smithy/smithy-client/-/smithy-client-4.12.8.tgz", { "dependencies": { "@smithy/core": "^3.23.13", "@smithy/middleware-endpoint": "^4.4.28", "@smithy/middleware-stack": "^4.2.12", "@smithy/protocol-http": "^5.3.12", "@smithy/types": "^4.13.1", "@smithy/util-stream": "^4.5.21", "tslib": "^2.6.2" } }, "sha512-aJaAX7vHe5i66smoSSID7t4rKY08PbD8EBU7DOloixvhOozfYWdcSYE4l6/tjkZ0vBZhGjheWzB2mh31sLgCMA=="], + + "@aws-sdk/client-cognito-identity/@smithy/types": ["@smithy/types@4.13.1", "https://mirrors.cloud.tencent.com/npm/@smithy/types/-/types-4.13.1.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-787F3yzE2UiJIQ+wYW1CVg2odHjmaWLGksnKQHUrK/lYZSEcy1msuLVvxaR/sI2/aDe9U+TBuLsXnr3vod1g0g=="], + + "@aws-sdk/client-cognito-identity/@smithy/util-base64": ["@smithy/util-base64@4.3.2", "https://mirrors.cloud.tencent.com/npm/@smithy/util-base64/-/util-base64-4.3.2.tgz", { "dependencies": { "@smithy/util-buffer-from": "^4.2.2", "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" } }, "sha512-XRH6b0H/5A3SgblmMa5ErXQ2XKhfbQB+Fm/oyLZ2O2kCUrwgg55bU0RekmzAhuwOjA9qdN5VU2BprOvGGUkOOQ=="], + + "@aws-sdk/client-sts/@aws-crypto/sha256-js": ["@aws-crypto/sha256-js@5.2.0", "https://mirrors.cloud.tencent.com/npm/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz", { "dependencies": { "@aws-crypto/util": "^5.2.0", "@aws-sdk/types": "^3.222.0", "tslib": "^2.6.2" } }, "sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA=="], + + "@aws-sdk/client-sts/@aws-sdk/credential-provider-node": ["@aws-sdk/credential-provider-node@3.972.29", "", { "dependencies": { "@aws-sdk/credential-provider-env": "^3.972.24", "@aws-sdk/credential-provider-http": "^3.972.26", "@aws-sdk/credential-provider-ini": "^3.972.28", "@aws-sdk/credential-provider-process": "^3.972.24", "@aws-sdk/credential-provider-sso": "^3.972.28", "@aws-sdk/credential-provider-web-identity": "^3.972.28", "@aws-sdk/types": "^3.973.6", "@smithy/credential-provider-imds": "^4.2.12", "@smithy/property-provider": "^4.2.12", "@smithy/shared-ini-file-loader": "^4.4.7", "@smithy/types": "^4.13.1", "tslib": "^2.6.2" } }, "sha512-clSzDcvndpFJAggLDnDb36sPdlZYyEs5Zm6zgZjjUhwsJgSWiWKwFIXUVBcbruidNyBdbpOv2tNDL9sX8y3/0g=="], + + "@aws-sdk/client-sts/@smithy/protocol-http": ["@smithy/protocol-http@5.3.12", "https://mirrors.cloud.tencent.com/npm/@smithy/protocol-http/-/protocol-http-5.3.12.tgz", { "dependencies": { "@smithy/types": "^4.13.1", "tslib": "^2.6.2" } }, "sha512-fit0GZK9I1xoRlR4jXmbLhoN0OdEpa96ul8M65XdmXnxXkuMxM0Y8HDT0Fh0Xb4I85MBvBClOzgSrV1X2s1Hxw=="], + + "@aws-sdk/client-sts/@smithy/smithy-client": ["@smithy/smithy-client@4.12.8", "https://mirrors.cloud.tencent.com/npm/@smithy/smithy-client/-/smithy-client-4.12.8.tgz", { "dependencies": { "@smithy/core": "^3.23.13", "@smithy/middleware-endpoint": "^4.4.28", "@smithy/middleware-stack": "^4.2.12", "@smithy/protocol-http": "^5.3.12", "@smithy/types": "^4.13.1", "@smithy/util-stream": "^4.5.21", "tslib": "^2.6.2" } }, "sha512-aJaAX7vHe5i66smoSSID7t4rKY08PbD8EBU7DOloixvhOozfYWdcSYE4l6/tjkZ0vBZhGjheWzB2mh31sLgCMA=="], + + "@aws-sdk/client-sts/@smithy/types": ["@smithy/types@4.13.1", "https://mirrors.cloud.tencent.com/npm/@smithy/types/-/types-4.13.1.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-787F3yzE2UiJIQ+wYW1CVg2odHjmaWLGksnKQHUrK/lYZSEcy1msuLVvxaR/sI2/aDe9U+TBuLsXnr3vod1g0g=="], + + "@aws-sdk/client-sts/@smithy/util-base64": ["@smithy/util-base64@4.3.2", "https://mirrors.cloud.tencent.com/npm/@smithy/util-base64/-/util-base64-4.3.2.tgz", { "dependencies": { "@smithy/util-buffer-from": "^4.2.2", "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" } }, "sha512-XRH6b0H/5A3SgblmMa5ErXQ2XKhfbQB+Fm/oyLZ2O2kCUrwgg55bU0RekmzAhuwOjA9qdN5VU2BprOvGGUkOOQ=="], + + "@aws-sdk/core/@smithy/protocol-http": ["@smithy/protocol-http@5.3.12", "https://mirrors.cloud.tencent.com/npm/@smithy/protocol-http/-/protocol-http-5.3.12.tgz", { "dependencies": { "@smithy/types": "^4.13.1", "tslib": "^2.6.2" } }, "sha512-fit0GZK9I1xoRlR4jXmbLhoN0OdEpa96ul8M65XdmXnxXkuMxM0Y8HDT0Fh0Xb4I85MBvBClOzgSrV1X2s1Hxw=="], + + "@aws-sdk/core/@smithy/signature-v4": ["@smithy/signature-v4@5.3.12", "https://mirrors.cloud.tencent.com/npm/@smithy/signature-v4/-/signature-v4-5.3.12.tgz", { "dependencies": { "@smithy/is-array-buffer": "^4.2.2", "@smithy/protocol-http": "^5.3.12", "@smithy/types": "^4.13.1", "@smithy/util-hex-encoding": "^4.2.2", "@smithy/util-middleware": "^4.2.12", "@smithy/util-uri-escape": "^4.2.2", "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" } }, "sha512-B/FBwO3MVOL00DaRSXfXfa/TRXRheagt/q5A2NM13u7q+sHS59EOVGQNfG7DkmVtdQm5m3vOosoKAXSqn/OEgw=="], + + "@aws-sdk/core/@smithy/smithy-client": ["@smithy/smithy-client@4.12.8", "https://mirrors.cloud.tencent.com/npm/@smithy/smithy-client/-/smithy-client-4.12.8.tgz", { "dependencies": { "@smithy/core": "^3.23.13", "@smithy/middleware-endpoint": "^4.4.28", "@smithy/middleware-stack": "^4.2.12", "@smithy/protocol-http": "^5.3.12", "@smithy/types": "^4.13.1", "@smithy/util-stream": "^4.5.21", "tslib": "^2.6.2" } }, "sha512-aJaAX7vHe5i66smoSSID7t4rKY08PbD8EBU7DOloixvhOozfYWdcSYE4l6/tjkZ0vBZhGjheWzB2mh31sLgCMA=="], + + "@aws-sdk/core/@smithy/types": ["@smithy/types@4.13.1", "https://mirrors.cloud.tencent.com/npm/@smithy/types/-/types-4.13.1.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-787F3yzE2UiJIQ+wYW1CVg2odHjmaWLGksnKQHUrK/lYZSEcy1msuLVvxaR/sI2/aDe9U+TBuLsXnr3vod1g0g=="], + + "@aws-sdk/core/@smithy/util-base64": ["@smithy/util-base64@4.3.2", "https://mirrors.cloud.tencent.com/npm/@smithy/util-base64/-/util-base64-4.3.2.tgz", { "dependencies": { "@smithy/util-buffer-from": "^4.2.2", "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" } }, "sha512-XRH6b0H/5A3SgblmMa5ErXQ2XKhfbQB+Fm/oyLZ2O2kCUrwgg55bU0RekmzAhuwOjA9qdN5VU2BprOvGGUkOOQ=="], + + "@aws-sdk/credential-provider-cognito-identity/@smithy/types": ["@smithy/types@4.13.1", "https://mirrors.cloud.tencent.com/npm/@smithy/types/-/types-4.13.1.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-787F3yzE2UiJIQ+wYW1CVg2odHjmaWLGksnKQHUrK/lYZSEcy1msuLVvxaR/sI2/aDe9U+TBuLsXnr3vod1g0g=="], + + "@aws-sdk/credential-provider-env/@smithy/types": ["@smithy/types@4.13.1", "https://mirrors.cloud.tencent.com/npm/@smithy/types/-/types-4.13.1.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-787F3yzE2UiJIQ+wYW1CVg2odHjmaWLGksnKQHUrK/lYZSEcy1msuLVvxaR/sI2/aDe9U+TBuLsXnr3vod1g0g=="], + + "@aws-sdk/credential-provider-http/@smithy/protocol-http": ["@smithy/protocol-http@5.3.12", "https://mirrors.cloud.tencent.com/npm/@smithy/protocol-http/-/protocol-http-5.3.12.tgz", { "dependencies": { "@smithy/types": "^4.13.1", "tslib": "^2.6.2" } }, "sha512-fit0GZK9I1xoRlR4jXmbLhoN0OdEpa96ul8M65XdmXnxXkuMxM0Y8HDT0Fh0Xb4I85MBvBClOzgSrV1X2s1Hxw=="], + + "@aws-sdk/credential-provider-http/@smithy/smithy-client": ["@smithy/smithy-client@4.12.8", "https://mirrors.cloud.tencent.com/npm/@smithy/smithy-client/-/smithy-client-4.12.8.tgz", { "dependencies": { "@smithy/core": "^3.23.13", "@smithy/middleware-endpoint": "^4.4.28", "@smithy/middleware-stack": "^4.2.12", "@smithy/protocol-http": "^5.3.12", "@smithy/types": "^4.13.1", "@smithy/util-stream": "^4.5.21", "tslib": "^2.6.2" } }, "sha512-aJaAX7vHe5i66smoSSID7t4rKY08PbD8EBU7DOloixvhOozfYWdcSYE4l6/tjkZ0vBZhGjheWzB2mh31sLgCMA=="], + + "@aws-sdk/credential-provider-http/@smithy/types": ["@smithy/types@4.13.1", "https://mirrors.cloud.tencent.com/npm/@smithy/types/-/types-4.13.1.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-787F3yzE2UiJIQ+wYW1CVg2odHjmaWLGksnKQHUrK/lYZSEcy1msuLVvxaR/sI2/aDe9U+TBuLsXnr3vod1g0g=="], + + "@aws-sdk/credential-provider-ini/@aws-sdk/credential-provider-login": ["@aws-sdk/credential-provider-login@3.972.27", "https://mirrors.cloud.tencent.com/npm/@aws-sdk/credential-provider-login/-/credential-provider-login-3.972.27.tgz", { "dependencies": { "@aws-sdk/core": "^3.973.26", "@aws-sdk/nested-clients": "^3.996.17", "@aws-sdk/types": "^3.973.6", "@smithy/property-provider": "^4.2.12", "@smithy/protocol-http": "^5.3.12", "@smithy/shared-ini-file-loader": "^4.4.7", "@smithy/types": "^4.13.1", "tslib": "^2.6.2" } }, "sha512-t3ehEtHomGZwg5Gixw4fYbYtG9JBnjfAjSDabxhPEu/KLLUp0BB37/APX7MSKXQhX6ZH7pseuACFJ19NrAkNdg=="], + + "@aws-sdk/credential-provider-ini/@aws-sdk/nested-clients": ["@aws-sdk/nested-clients@3.996.17", "https://mirrors.cloud.tencent.com/npm/@aws-sdk/nested-clients/-/nested-clients-3.996.17.tgz", { "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", "@aws-sdk/core": "^3.973.26", "@aws-sdk/middleware-host-header": "^3.972.8", "@aws-sdk/middleware-logger": "^3.972.8", "@aws-sdk/middleware-recursion-detection": "^3.972.9", "@aws-sdk/middleware-user-agent": "^3.972.27", "@aws-sdk/region-config-resolver": "^3.972.10", "@aws-sdk/types": "^3.973.6", "@aws-sdk/util-endpoints": "^3.996.5", "@aws-sdk/util-user-agent-browser": "^3.972.8", "@aws-sdk/util-user-agent-node": "^3.973.13", "@smithy/config-resolver": "^4.4.13", "@smithy/core": "^3.23.13", "@smithy/fetch-http-handler": "^5.3.15", "@smithy/hash-node": "^4.2.12", "@smithy/invalid-dependency": "^4.2.12", "@smithy/middleware-content-length": "^4.2.12", "@smithy/middleware-endpoint": "^4.4.28", "@smithy/middleware-retry": "^4.4.45", "@smithy/middleware-serde": "^4.2.16", "@smithy/middleware-stack": "^4.2.12", "@smithy/node-config-provider": "^4.3.12", "@smithy/node-http-handler": "^4.5.1", "@smithy/protocol-http": "^5.3.12", "@smithy/smithy-client": "^4.12.8", "@smithy/types": "^4.13.1", "@smithy/url-parser": "^4.2.12", "@smithy/util-base64": "^4.3.2", "@smithy/util-body-length-browser": "^4.2.2", "@smithy/util-body-length-node": "^4.2.3", "@smithy/util-defaults-mode-browser": "^4.3.44", "@smithy/util-defaults-mode-node": "^4.2.48", "@smithy/util-endpoints": "^3.3.3", "@smithy/util-middleware": "^4.2.12", "@smithy/util-retry": "^4.2.12", "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" } }, "sha512-7B0HIX0tEFmOSJuWzdHZj1WhMXSryM+h66h96ZkqSncoY7J6wq61KOu4Kr57b/YnJP3J/EeQYVFulgR281h+7A=="], + + "@aws-sdk/credential-provider-ini/@smithy/types": ["@smithy/types@4.13.1", "https://mirrors.cloud.tencent.com/npm/@smithy/types/-/types-4.13.1.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-787F3yzE2UiJIQ+wYW1CVg2odHjmaWLGksnKQHUrK/lYZSEcy1msuLVvxaR/sI2/aDe9U+TBuLsXnr3vod1g0g=="], + + "@aws-sdk/credential-provider-login/@smithy/protocol-http": ["@smithy/protocol-http@5.3.12", "https://mirrors.cloud.tencent.com/npm/@smithy/protocol-http/-/protocol-http-5.3.12.tgz", { "dependencies": { "@smithy/types": "^4.13.1", "tslib": "^2.6.2" } }, "sha512-fit0GZK9I1xoRlR4jXmbLhoN0OdEpa96ul8M65XdmXnxXkuMxM0Y8HDT0Fh0Xb4I85MBvBClOzgSrV1X2s1Hxw=="], + + "@aws-sdk/credential-provider-login/@smithy/types": ["@smithy/types@4.13.1", "https://mirrors.cloud.tencent.com/npm/@smithy/types/-/types-4.13.1.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-787F3yzE2UiJIQ+wYW1CVg2odHjmaWLGksnKQHUrK/lYZSEcy1msuLVvxaR/sI2/aDe9U+TBuLsXnr3vod1g0g=="], + + "@aws-sdk/credential-provider-node/@smithy/types": ["@smithy/types@4.13.1", "https://mirrors.cloud.tencent.com/npm/@smithy/types/-/types-4.13.1.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-787F3yzE2UiJIQ+wYW1CVg2odHjmaWLGksnKQHUrK/lYZSEcy1msuLVvxaR/sI2/aDe9U+TBuLsXnr3vod1g0g=="], + + "@aws-sdk/credential-provider-process/@smithy/types": ["@smithy/types@4.13.1", "https://mirrors.cloud.tencent.com/npm/@smithy/types/-/types-4.13.1.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-787F3yzE2UiJIQ+wYW1CVg2odHjmaWLGksnKQHUrK/lYZSEcy1msuLVvxaR/sI2/aDe9U+TBuLsXnr3vod1g0g=="], + + "@aws-sdk/credential-provider-sso/@aws-sdk/nested-clients": ["@aws-sdk/nested-clients@3.996.17", "https://mirrors.cloud.tencent.com/npm/@aws-sdk/nested-clients/-/nested-clients-3.996.17.tgz", { "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", "@aws-sdk/core": "^3.973.26", "@aws-sdk/middleware-host-header": "^3.972.8", "@aws-sdk/middleware-logger": "^3.972.8", "@aws-sdk/middleware-recursion-detection": "^3.972.9", "@aws-sdk/middleware-user-agent": "^3.972.27", "@aws-sdk/region-config-resolver": "^3.972.10", "@aws-sdk/types": "^3.973.6", "@aws-sdk/util-endpoints": "^3.996.5", "@aws-sdk/util-user-agent-browser": "^3.972.8", "@aws-sdk/util-user-agent-node": "^3.973.13", "@smithy/config-resolver": "^4.4.13", "@smithy/core": "^3.23.13", "@smithy/fetch-http-handler": "^5.3.15", "@smithy/hash-node": "^4.2.12", "@smithy/invalid-dependency": "^4.2.12", "@smithy/middleware-content-length": "^4.2.12", "@smithy/middleware-endpoint": "^4.4.28", "@smithy/middleware-retry": "^4.4.45", "@smithy/middleware-serde": "^4.2.16", "@smithy/middleware-stack": "^4.2.12", "@smithy/node-config-provider": "^4.3.12", "@smithy/node-http-handler": "^4.5.1", "@smithy/protocol-http": "^5.3.12", "@smithy/smithy-client": "^4.12.8", "@smithy/types": "^4.13.1", "@smithy/url-parser": "^4.2.12", "@smithy/util-base64": "^4.3.2", "@smithy/util-body-length-browser": "^4.2.2", "@smithy/util-body-length-node": "^4.2.3", "@smithy/util-defaults-mode-browser": "^4.3.44", "@smithy/util-defaults-mode-node": "^4.2.48", "@smithy/util-endpoints": "^3.3.3", "@smithy/util-middleware": "^4.2.12", "@smithy/util-retry": "^4.2.12", "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" } }, "sha512-7B0HIX0tEFmOSJuWzdHZj1WhMXSryM+h66h96ZkqSncoY7J6wq61KOu4Kr57b/YnJP3J/EeQYVFulgR281h+7A=="], + + "@aws-sdk/credential-provider-sso/@aws-sdk/token-providers": ["@aws-sdk/token-providers@3.1020.0", "https://mirrors.cloud.tencent.com/npm/@aws-sdk/token-providers/-/token-providers-3.1020.0.tgz", { "dependencies": { "@aws-sdk/core": "^3.973.26", "@aws-sdk/nested-clients": "^3.996.17", "@aws-sdk/types": "^3.973.6", "@smithy/property-provider": "^4.2.12", "@smithy/shared-ini-file-loader": "^4.4.7", "@smithy/types": "^4.13.1", "tslib": "^2.6.2" } }, "sha512-T61KA/VKl0zVUubdxigr1ut7SEpwE1/4CIKb14JDLyTAOne2yWKtQE1dDCSHl0UqrZNwW/bTt+EBHfQbslZJdw=="], + + "@aws-sdk/credential-provider-sso/@smithy/types": ["@smithy/types@4.13.1", "https://mirrors.cloud.tencent.com/npm/@smithy/types/-/types-4.13.1.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-787F3yzE2UiJIQ+wYW1CVg2odHjmaWLGksnKQHUrK/lYZSEcy1msuLVvxaR/sI2/aDe9U+TBuLsXnr3vod1g0g=="], + + "@aws-sdk/credential-provider-web-identity/@aws-sdk/nested-clients": ["@aws-sdk/nested-clients@3.996.17", "https://mirrors.cloud.tencent.com/npm/@aws-sdk/nested-clients/-/nested-clients-3.996.17.tgz", { "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", "@aws-sdk/core": "^3.973.26", "@aws-sdk/middleware-host-header": "^3.972.8", "@aws-sdk/middleware-logger": "^3.972.8", "@aws-sdk/middleware-recursion-detection": "^3.972.9", "@aws-sdk/middleware-user-agent": "^3.972.27", "@aws-sdk/region-config-resolver": "^3.972.10", "@aws-sdk/types": "^3.973.6", "@aws-sdk/util-endpoints": "^3.996.5", "@aws-sdk/util-user-agent-browser": "^3.972.8", "@aws-sdk/util-user-agent-node": "^3.973.13", "@smithy/config-resolver": "^4.4.13", "@smithy/core": "^3.23.13", "@smithy/fetch-http-handler": "^5.3.15", "@smithy/hash-node": "^4.2.12", "@smithy/invalid-dependency": "^4.2.12", "@smithy/middleware-content-length": "^4.2.12", "@smithy/middleware-endpoint": "^4.4.28", "@smithy/middleware-retry": "^4.4.45", "@smithy/middleware-serde": "^4.2.16", "@smithy/middleware-stack": "^4.2.12", "@smithy/node-config-provider": "^4.3.12", "@smithy/node-http-handler": "^4.5.1", "@smithy/protocol-http": "^5.3.12", "@smithy/smithy-client": "^4.12.8", "@smithy/types": "^4.13.1", "@smithy/url-parser": "^4.2.12", "@smithy/util-base64": "^4.3.2", "@smithy/util-body-length-browser": "^4.2.2", "@smithy/util-body-length-node": "^4.2.3", "@smithy/util-defaults-mode-browser": "^4.3.44", "@smithy/util-defaults-mode-node": "^4.2.48", "@smithy/util-endpoints": "^3.3.3", "@smithy/util-middleware": "^4.2.12", "@smithy/util-retry": "^4.2.12", "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" } }, "sha512-7B0HIX0tEFmOSJuWzdHZj1WhMXSryM+h66h96ZkqSncoY7J6wq61KOu4Kr57b/YnJP3J/EeQYVFulgR281h+7A=="], + + "@aws-sdk/credential-provider-web-identity/@smithy/types": ["@smithy/types@4.13.1", "https://mirrors.cloud.tencent.com/npm/@smithy/types/-/types-4.13.1.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-787F3yzE2UiJIQ+wYW1CVg2odHjmaWLGksnKQHUrK/lYZSEcy1msuLVvxaR/sI2/aDe9U+TBuLsXnr3vod1g0g=="], + + "@aws-sdk/credential-providers/@aws-sdk/credential-provider-ini": ["@aws-sdk/credential-provider-ini@3.972.28", "", { "dependencies": { "@aws-sdk/core": "^3.973.26", "@aws-sdk/credential-provider-env": "^3.972.24", "@aws-sdk/credential-provider-http": "^3.972.26", "@aws-sdk/credential-provider-login": "^3.972.28", "@aws-sdk/credential-provider-process": "^3.972.24", "@aws-sdk/credential-provider-sso": "^3.972.28", "@aws-sdk/credential-provider-web-identity": "^3.972.28", "@aws-sdk/nested-clients": "^3.996.18", "@aws-sdk/types": "^3.973.6", "@smithy/credential-provider-imds": "^4.2.12", "@smithy/property-provider": "^4.2.12", "@smithy/shared-ini-file-loader": "^4.4.7", "@smithy/types": "^4.13.1", "tslib": "^2.6.2" } }, "sha512-wXYvq3+uQcZV7k+bE4yDXCTBdzWTU9x/nMiKBfzInmv6yYK1veMK0AKvRfRBd72nGWYKcL6AxwiPg9z/pYlgpw=="], + + "@aws-sdk/credential-providers/@aws-sdk/credential-provider-node": ["@aws-sdk/credential-provider-node@3.972.29", "", { "dependencies": { "@aws-sdk/credential-provider-env": "^3.972.24", "@aws-sdk/credential-provider-http": "^3.972.26", "@aws-sdk/credential-provider-ini": "^3.972.28", "@aws-sdk/credential-provider-process": "^3.972.24", "@aws-sdk/credential-provider-sso": "^3.972.28", "@aws-sdk/credential-provider-web-identity": "^3.972.28", "@aws-sdk/types": "^3.973.6", "@smithy/credential-provider-imds": "^4.2.12", "@smithy/property-provider": "^4.2.12", "@smithy/shared-ini-file-loader": "^4.4.7", "@smithy/types": "^4.13.1", "tslib": "^2.6.2" } }, "sha512-clSzDcvndpFJAggLDnDb36sPdlZYyEs5Zm6zgZjjUhwsJgSWiWKwFIXUVBcbruidNyBdbpOv2tNDL9sX8y3/0g=="], + + "@aws-sdk/credential-providers/@aws-sdk/credential-provider-sso": ["@aws-sdk/credential-provider-sso@3.972.28", "", { "dependencies": { "@aws-sdk/core": "^3.973.26", "@aws-sdk/nested-clients": "^3.996.18", "@aws-sdk/token-providers": "3.1021.0", "@aws-sdk/types": "^3.973.6", "@smithy/property-provider": "^4.2.12", "@smithy/shared-ini-file-loader": "^4.4.7", "@smithy/types": "^4.13.1", "tslib": "^2.6.2" } }, "sha512-IoUlmKMLEITFn1SiCTjPfR6KrE799FBo5baWyk/5Ppar2yXZoUdaRqZzJzK6TcJxx450M8m8DbpddRVYlp5R/A=="], + + "@aws-sdk/credential-providers/@aws-sdk/credential-provider-web-identity": ["@aws-sdk/credential-provider-web-identity@3.972.28", "", { "dependencies": { "@aws-sdk/core": "^3.973.26", "@aws-sdk/nested-clients": "^3.996.18", "@aws-sdk/types": "^3.973.6", "@smithy/property-provider": "^4.2.12", "@smithy/shared-ini-file-loader": "^4.4.7", "@smithy/types": "^4.13.1", "tslib": "^2.6.2" } }, "sha512-d+6h0SD8GGERzKe27v5rOzNGKOl0D+l0bWJdqrxH8WSQzHzjsQFIAPgIeOTUwBHVsKKwtSxc91K/SWax6XgswQ=="], + + "@aws-sdk/credential-providers/@smithy/types": ["@smithy/types@4.13.1", "https://mirrors.cloud.tencent.com/npm/@smithy/types/-/types-4.13.1.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-787F3yzE2UiJIQ+wYW1CVg2odHjmaWLGksnKQHUrK/lYZSEcy1msuLVvxaR/sI2/aDe9U+TBuLsXnr3vod1g0g=="], + + "@aws-sdk/eventstream-handler-node/@smithy/types": ["@smithy/types@4.13.1", "https://mirrors.cloud.tencent.com/npm/@smithy/types/-/types-4.13.1.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-787F3yzE2UiJIQ+wYW1CVg2odHjmaWLGksnKQHUrK/lYZSEcy1msuLVvxaR/sI2/aDe9U+TBuLsXnr3vod1g0g=="], + + "@aws-sdk/middleware-eventstream/@smithy/protocol-http": ["@smithy/protocol-http@5.3.12", "https://mirrors.cloud.tencent.com/npm/@smithy/protocol-http/-/protocol-http-5.3.12.tgz", { "dependencies": { "@smithy/types": "^4.13.1", "tslib": "^2.6.2" } }, "sha512-fit0GZK9I1xoRlR4jXmbLhoN0OdEpa96ul8M65XdmXnxXkuMxM0Y8HDT0Fh0Xb4I85MBvBClOzgSrV1X2s1Hxw=="], + + "@aws-sdk/middleware-eventstream/@smithy/types": ["@smithy/types@4.13.1", "https://mirrors.cloud.tencent.com/npm/@smithy/types/-/types-4.13.1.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-787F3yzE2UiJIQ+wYW1CVg2odHjmaWLGksnKQHUrK/lYZSEcy1msuLVvxaR/sI2/aDe9U+TBuLsXnr3vod1g0g=="], + + "@aws-sdk/middleware-host-header/@smithy/protocol-http": ["@smithy/protocol-http@5.3.12", "https://mirrors.cloud.tencent.com/npm/@smithy/protocol-http/-/protocol-http-5.3.12.tgz", { "dependencies": { "@smithy/types": "^4.13.1", "tslib": "^2.6.2" } }, "sha512-fit0GZK9I1xoRlR4jXmbLhoN0OdEpa96ul8M65XdmXnxXkuMxM0Y8HDT0Fh0Xb4I85MBvBClOzgSrV1X2s1Hxw=="], + + "@aws-sdk/middleware-host-header/@smithy/types": ["@smithy/types@4.13.1", "https://mirrors.cloud.tencent.com/npm/@smithy/types/-/types-4.13.1.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-787F3yzE2UiJIQ+wYW1CVg2odHjmaWLGksnKQHUrK/lYZSEcy1msuLVvxaR/sI2/aDe9U+TBuLsXnr3vod1g0g=="], + + "@aws-sdk/middleware-logger/@smithy/types": ["@smithy/types@4.13.1", "https://mirrors.cloud.tencent.com/npm/@smithy/types/-/types-4.13.1.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-787F3yzE2UiJIQ+wYW1CVg2odHjmaWLGksnKQHUrK/lYZSEcy1msuLVvxaR/sI2/aDe9U+TBuLsXnr3vod1g0g=="], + + "@aws-sdk/middleware-recursion-detection/@smithy/protocol-http": ["@smithy/protocol-http@5.3.12", "https://mirrors.cloud.tencent.com/npm/@smithy/protocol-http/-/protocol-http-5.3.12.tgz", { "dependencies": { "@smithy/types": "^4.13.1", "tslib": "^2.6.2" } }, "sha512-fit0GZK9I1xoRlR4jXmbLhoN0OdEpa96ul8M65XdmXnxXkuMxM0Y8HDT0Fh0Xb4I85MBvBClOzgSrV1X2s1Hxw=="], + + "@aws-sdk/middleware-recursion-detection/@smithy/types": ["@smithy/types@4.13.1", "https://mirrors.cloud.tencent.com/npm/@smithy/types/-/types-4.13.1.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-787F3yzE2UiJIQ+wYW1CVg2odHjmaWLGksnKQHUrK/lYZSEcy1msuLVvxaR/sI2/aDe9U+TBuLsXnr3vod1g0g=="], + + "@aws-sdk/middleware-user-agent/@smithy/protocol-http": ["@smithy/protocol-http@5.3.12", "https://mirrors.cloud.tencent.com/npm/@smithy/protocol-http/-/protocol-http-5.3.12.tgz", { "dependencies": { "@smithy/types": "^4.13.1", "tslib": "^2.6.2" } }, "sha512-fit0GZK9I1xoRlR4jXmbLhoN0OdEpa96ul8M65XdmXnxXkuMxM0Y8HDT0Fh0Xb4I85MBvBClOzgSrV1X2s1Hxw=="], + + "@aws-sdk/middleware-user-agent/@smithy/types": ["@smithy/types@4.13.1", "https://mirrors.cloud.tencent.com/npm/@smithy/types/-/types-4.13.1.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-787F3yzE2UiJIQ+wYW1CVg2odHjmaWLGksnKQHUrK/lYZSEcy1msuLVvxaR/sI2/aDe9U+TBuLsXnr3vod1g0g=="], + + "@aws-sdk/middleware-websocket/@smithy/protocol-http": ["@smithy/protocol-http@5.3.12", "https://mirrors.cloud.tencent.com/npm/@smithy/protocol-http/-/protocol-http-5.3.12.tgz", { "dependencies": { "@smithy/types": "^4.13.1", "tslib": "^2.6.2" } }, "sha512-fit0GZK9I1xoRlR4jXmbLhoN0OdEpa96ul8M65XdmXnxXkuMxM0Y8HDT0Fh0Xb4I85MBvBClOzgSrV1X2s1Hxw=="], + + "@aws-sdk/middleware-websocket/@smithy/signature-v4": ["@smithy/signature-v4@5.3.12", "https://mirrors.cloud.tencent.com/npm/@smithy/signature-v4/-/signature-v4-5.3.12.tgz", { "dependencies": { "@smithy/is-array-buffer": "^4.2.2", "@smithy/protocol-http": "^5.3.12", "@smithy/types": "^4.13.1", "@smithy/util-hex-encoding": "^4.2.2", "@smithy/util-middleware": "^4.2.12", "@smithy/util-uri-escape": "^4.2.2", "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" } }, "sha512-B/FBwO3MVOL00DaRSXfXfa/TRXRheagt/q5A2NM13u7q+sHS59EOVGQNfG7DkmVtdQm5m3vOosoKAXSqn/OEgw=="], + + "@aws-sdk/middleware-websocket/@smithy/types": ["@smithy/types@4.13.1", "https://mirrors.cloud.tencent.com/npm/@smithy/types/-/types-4.13.1.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-787F3yzE2UiJIQ+wYW1CVg2odHjmaWLGksnKQHUrK/lYZSEcy1msuLVvxaR/sI2/aDe9U+TBuLsXnr3vod1g0g=="], + + "@aws-sdk/middleware-websocket/@smithy/util-base64": ["@smithy/util-base64@4.3.2", "https://mirrors.cloud.tencent.com/npm/@smithy/util-base64/-/util-base64-4.3.2.tgz", { "dependencies": { "@smithy/util-buffer-from": "^4.2.2", "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" } }, "sha512-XRH6b0H/5A3SgblmMa5ErXQ2XKhfbQB+Fm/oyLZ2O2kCUrwgg55bU0RekmzAhuwOjA9qdN5VU2BprOvGGUkOOQ=="], + + "@aws-sdk/middleware-websocket/@smithy/util-hex-encoding": ["@smithy/util-hex-encoding@4.2.2", "https://mirrors.cloud.tencent.com/npm/@smithy/util-hex-encoding/-/util-hex-encoding-4.2.2.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-Qcz3W5vuHK4sLQdyT93k/rfrUwdJ8/HZ+nMUOyGdpeGA1Wxt65zYwi3oEl9kOM+RswvYq90fzkNDahPS8K0OIg=="], + + "@aws-sdk/nested-clients/@aws-crypto/sha256-js": ["@aws-crypto/sha256-js@5.2.0", "https://mirrors.cloud.tencent.com/npm/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz", { "dependencies": { "@aws-crypto/util": "^5.2.0", "@aws-sdk/types": "^3.222.0", "tslib": "^2.6.2" } }, "sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA=="], + + "@aws-sdk/nested-clients/@smithy/protocol-http": ["@smithy/protocol-http@5.3.12", "https://mirrors.cloud.tencent.com/npm/@smithy/protocol-http/-/protocol-http-5.3.12.tgz", { "dependencies": { "@smithy/types": "^4.13.1", "tslib": "^2.6.2" } }, "sha512-fit0GZK9I1xoRlR4jXmbLhoN0OdEpa96ul8M65XdmXnxXkuMxM0Y8HDT0Fh0Xb4I85MBvBClOzgSrV1X2s1Hxw=="], + + "@aws-sdk/nested-clients/@smithy/smithy-client": ["@smithy/smithy-client@4.12.8", "https://mirrors.cloud.tencent.com/npm/@smithy/smithy-client/-/smithy-client-4.12.8.tgz", { "dependencies": { "@smithy/core": "^3.23.13", "@smithy/middleware-endpoint": "^4.4.28", "@smithy/middleware-stack": "^4.2.12", "@smithy/protocol-http": "^5.3.12", "@smithy/types": "^4.13.1", "@smithy/util-stream": "^4.5.21", "tslib": "^2.6.2" } }, "sha512-aJaAX7vHe5i66smoSSID7t4rKY08PbD8EBU7DOloixvhOozfYWdcSYE4l6/tjkZ0vBZhGjheWzB2mh31sLgCMA=="], + + "@aws-sdk/nested-clients/@smithy/types": ["@smithy/types@4.13.1", "https://mirrors.cloud.tencent.com/npm/@smithy/types/-/types-4.13.1.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-787F3yzE2UiJIQ+wYW1CVg2odHjmaWLGksnKQHUrK/lYZSEcy1msuLVvxaR/sI2/aDe9U+TBuLsXnr3vod1g0g=="], + + "@aws-sdk/nested-clients/@smithy/util-base64": ["@smithy/util-base64@4.3.2", "https://mirrors.cloud.tencent.com/npm/@smithy/util-base64/-/util-base64-4.3.2.tgz", { "dependencies": { "@smithy/util-buffer-from": "^4.2.2", "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" } }, "sha512-XRH6b0H/5A3SgblmMa5ErXQ2XKhfbQB+Fm/oyLZ2O2kCUrwgg55bU0RekmzAhuwOjA9qdN5VU2BprOvGGUkOOQ=="], + + "@aws-sdk/region-config-resolver/@smithy/types": ["@smithy/types@4.13.1", "https://mirrors.cloud.tencent.com/npm/@smithy/types/-/types-4.13.1.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-787F3yzE2UiJIQ+wYW1CVg2odHjmaWLGksnKQHUrK/lYZSEcy1msuLVvxaR/sI2/aDe9U+TBuLsXnr3vod1g0g=="], + + "@aws-sdk/token-providers/@smithy/types": ["@smithy/types@4.13.1", "https://mirrors.cloud.tencent.com/npm/@smithy/types/-/types-4.13.1.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-787F3yzE2UiJIQ+wYW1CVg2odHjmaWLGksnKQHUrK/lYZSEcy1msuLVvxaR/sI2/aDe9U+TBuLsXnr3vod1g0g=="], + + "@aws-sdk/types/@smithy/types": ["@smithy/types@4.13.1", "https://mirrors.cloud.tencent.com/npm/@smithy/types/-/types-4.13.1.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-787F3yzE2UiJIQ+wYW1CVg2odHjmaWLGksnKQHUrK/lYZSEcy1msuLVvxaR/sI2/aDe9U+TBuLsXnr3vod1g0g=="], + + "@aws-sdk/util-endpoints/@smithy/types": ["@smithy/types@4.13.1", "https://mirrors.cloud.tencent.com/npm/@smithy/types/-/types-4.13.1.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-787F3yzE2UiJIQ+wYW1CVg2odHjmaWLGksnKQHUrK/lYZSEcy1msuLVvxaR/sI2/aDe9U+TBuLsXnr3vod1g0g=="], + + "@aws-sdk/util-format-url/@smithy/types": ["@smithy/types@4.13.1", "https://mirrors.cloud.tencent.com/npm/@smithy/types/-/types-4.13.1.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-787F3yzE2UiJIQ+wYW1CVg2odHjmaWLGksnKQHUrK/lYZSEcy1msuLVvxaR/sI2/aDe9U+TBuLsXnr3vod1g0g=="], + + "@aws-sdk/util-user-agent-browser/@smithy/types": ["@smithy/types@4.13.1", "https://mirrors.cloud.tencent.com/npm/@smithy/types/-/types-4.13.1.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-787F3yzE2UiJIQ+wYW1CVg2odHjmaWLGksnKQHUrK/lYZSEcy1msuLVvxaR/sI2/aDe9U+TBuLsXnr3vod1g0g=="], + + "@aws-sdk/util-user-agent-node/@smithy/types": ["@smithy/types@4.13.1", "https://mirrors.cloud.tencent.com/npm/@smithy/types/-/types-4.13.1.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-787F3yzE2UiJIQ+wYW1CVg2odHjmaWLGksnKQHUrK/lYZSEcy1msuLVvxaR/sI2/aDe9U+TBuLsXnr3vod1g0g=="], + + "@aws-sdk/xml-builder/@smithy/types": ["@smithy/types@4.13.1", "https://mirrors.cloud.tencent.com/npm/@smithy/types/-/types-4.13.1.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-787F3yzE2UiJIQ+wYW1CVg2odHjmaWLGksnKQHUrK/lYZSEcy1msuLVvxaR/sI2/aDe9U+TBuLsXnr3vod1g0g=="], + + "@grpc/proto-loader/yargs": ["yargs@17.7.2", "", { "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", "string-width": "^4.2.3", "y18n": "^5.0.5", "yargs-parser": "^21.1.1" } }, "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w=="], "@inquirer/checkbox/ansi-escapes": ["ansi-escapes@4.3.2", "https://mirrors.cloud.tencent.com/npm/ansi-escapes/-/ansi-escapes-4.3.2.tgz", { "dependencies": { "type-fest": "^0.21.3" } }, "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ=="], @@ -891,11 +1331,129 @@ "@inquirer/select/ansi-escapes": ["ansi-escapes@4.3.2", "https://mirrors.cloud.tencent.com/npm/ansi-escapes/-/ansi-escapes-4.3.2.tgz", { "dependencies": { "type-fest": "^0.21.3" } }, "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ=="], + "@smithy/config-resolver/@smithy/types": ["@smithy/types@4.13.1", "https://mirrors.cloud.tencent.com/npm/@smithy/types/-/types-4.13.1.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-787F3yzE2UiJIQ+wYW1CVg2odHjmaWLGksnKQHUrK/lYZSEcy1msuLVvxaR/sI2/aDe9U+TBuLsXnr3vod1g0g=="], + + "@smithy/core/@smithy/protocol-http": ["@smithy/protocol-http@5.3.12", "https://mirrors.cloud.tencent.com/npm/@smithy/protocol-http/-/protocol-http-5.3.12.tgz", { "dependencies": { "@smithy/types": "^4.13.1", "tslib": "^2.6.2" } }, "sha512-fit0GZK9I1xoRlR4jXmbLhoN0OdEpa96ul8M65XdmXnxXkuMxM0Y8HDT0Fh0Xb4I85MBvBClOzgSrV1X2s1Hxw=="], + + "@smithy/core/@smithy/types": ["@smithy/types@4.13.1", "https://mirrors.cloud.tencent.com/npm/@smithy/types/-/types-4.13.1.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-787F3yzE2UiJIQ+wYW1CVg2odHjmaWLGksnKQHUrK/lYZSEcy1msuLVvxaR/sI2/aDe9U+TBuLsXnr3vod1g0g=="], + + "@smithy/core/@smithy/util-base64": ["@smithy/util-base64@4.3.2", "https://mirrors.cloud.tencent.com/npm/@smithy/util-base64/-/util-base64-4.3.2.tgz", { "dependencies": { "@smithy/util-buffer-from": "^4.2.2", "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" } }, "sha512-XRH6b0H/5A3SgblmMa5ErXQ2XKhfbQB+Fm/oyLZ2O2kCUrwgg55bU0RekmzAhuwOjA9qdN5VU2BprOvGGUkOOQ=="], + + "@smithy/credential-provider-imds/@smithy/types": ["@smithy/types@4.13.1", "https://mirrors.cloud.tencent.com/npm/@smithy/types/-/types-4.13.1.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-787F3yzE2UiJIQ+wYW1CVg2odHjmaWLGksnKQHUrK/lYZSEcy1msuLVvxaR/sI2/aDe9U+TBuLsXnr3vod1g0g=="], + + "@smithy/eventstream-codec/@smithy/types": ["@smithy/types@4.13.1", "https://mirrors.cloud.tencent.com/npm/@smithy/types/-/types-4.13.1.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-787F3yzE2UiJIQ+wYW1CVg2odHjmaWLGksnKQHUrK/lYZSEcy1msuLVvxaR/sI2/aDe9U+TBuLsXnr3vod1g0g=="], + + "@smithy/eventstream-codec/@smithy/util-hex-encoding": ["@smithy/util-hex-encoding@4.2.2", "https://mirrors.cloud.tencent.com/npm/@smithy/util-hex-encoding/-/util-hex-encoding-4.2.2.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-Qcz3W5vuHK4sLQdyT93k/rfrUwdJ8/HZ+nMUOyGdpeGA1Wxt65zYwi3oEl9kOM+RswvYq90fzkNDahPS8K0OIg=="], + + "@smithy/eventstream-serde-browser/@smithy/eventstream-serde-universal": ["@smithy/eventstream-serde-universal@4.2.12", "https://mirrors.cloud.tencent.com/npm/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-4.2.12.tgz", { "dependencies": { "@smithy/eventstream-codec": "^4.2.12", "@smithy/types": "^4.13.1", "tslib": "^2.6.2" } }, "sha512-+yNuTiyBACxOJUTvbsNsSOfH9G9oKbaJE1lNL3YHpGcuucl6rPZMi3nrpehpVOVR2E07YqFFmtwpImtpzlouHQ=="], + + "@smithy/eventstream-serde-browser/@smithy/types": ["@smithy/types@4.13.1", "https://mirrors.cloud.tencent.com/npm/@smithy/types/-/types-4.13.1.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-787F3yzE2UiJIQ+wYW1CVg2odHjmaWLGksnKQHUrK/lYZSEcy1msuLVvxaR/sI2/aDe9U+TBuLsXnr3vod1g0g=="], + + "@smithy/eventstream-serde-config-resolver/@smithy/types": ["@smithy/types@4.13.1", "https://mirrors.cloud.tencent.com/npm/@smithy/types/-/types-4.13.1.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-787F3yzE2UiJIQ+wYW1CVg2odHjmaWLGksnKQHUrK/lYZSEcy1msuLVvxaR/sI2/aDe9U+TBuLsXnr3vod1g0g=="], + + "@smithy/eventstream-serde-universal/@smithy/eventstream-codec": ["@smithy/eventstream-codec@2.2.0", "", { "dependencies": { "@aws-crypto/crc32": "3.0.0", "@smithy/types": "^2.12.0", "@smithy/util-hex-encoding": "^2.2.0", "tslib": "^2.6.2" } }, "sha512-8janZoJw85nJmQZc4L8TuePp2pk1nxLgkxIR0TUjKJ5Dkj5oelB9WtiSSGXCQvNsJl0VSTvK/2ueMXxvpa9GVw=="], + + "@smithy/fetch-http-handler/@smithy/protocol-http": ["@smithy/protocol-http@5.3.12", "https://mirrors.cloud.tencent.com/npm/@smithy/protocol-http/-/protocol-http-5.3.12.tgz", { "dependencies": { "@smithy/types": "^4.13.1", "tslib": "^2.6.2" } }, "sha512-fit0GZK9I1xoRlR4jXmbLhoN0OdEpa96ul8M65XdmXnxXkuMxM0Y8HDT0Fh0Xb4I85MBvBClOzgSrV1X2s1Hxw=="], + + "@smithy/fetch-http-handler/@smithy/types": ["@smithy/types@4.13.1", "https://mirrors.cloud.tencent.com/npm/@smithy/types/-/types-4.13.1.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-787F3yzE2UiJIQ+wYW1CVg2odHjmaWLGksnKQHUrK/lYZSEcy1msuLVvxaR/sI2/aDe9U+TBuLsXnr3vod1g0g=="], + + "@smithy/fetch-http-handler/@smithy/util-base64": ["@smithy/util-base64@4.3.2", "https://mirrors.cloud.tencent.com/npm/@smithy/util-base64/-/util-base64-4.3.2.tgz", { "dependencies": { "@smithy/util-buffer-from": "^4.2.2", "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" } }, "sha512-XRH6b0H/5A3SgblmMa5ErXQ2XKhfbQB+Fm/oyLZ2O2kCUrwgg55bU0RekmzAhuwOjA9qdN5VU2BprOvGGUkOOQ=="], + + "@smithy/hash-node/@smithy/types": ["@smithy/types@4.13.1", "https://mirrors.cloud.tencent.com/npm/@smithy/types/-/types-4.13.1.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-787F3yzE2UiJIQ+wYW1CVg2odHjmaWLGksnKQHUrK/lYZSEcy1msuLVvxaR/sI2/aDe9U+TBuLsXnr3vod1g0g=="], + + "@smithy/hash-node/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.2.2", "https://mirrors.cloud.tencent.com/npm/@smithy/util-buffer-from/-/util-buffer-from-4.2.2.tgz", { "dependencies": { "@smithy/is-array-buffer": "^4.2.2", "tslib": "^2.6.2" } }, "sha512-FDXD7cvUoFWwN6vtQfEta540Y/YBe5JneK3SoZg9bThSoOAC/eGeYEua6RkBgKjGa/sz6Y+DuBZj3+YEY21y4Q=="], + + "@smithy/invalid-dependency/@smithy/types": ["@smithy/types@4.13.1", "https://mirrors.cloud.tencent.com/npm/@smithy/types/-/types-4.13.1.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-787F3yzE2UiJIQ+wYW1CVg2odHjmaWLGksnKQHUrK/lYZSEcy1msuLVvxaR/sI2/aDe9U+TBuLsXnr3vod1g0g=="], + + "@smithy/middleware-content-length/@smithy/protocol-http": ["@smithy/protocol-http@5.3.12", "https://mirrors.cloud.tencent.com/npm/@smithy/protocol-http/-/protocol-http-5.3.12.tgz", { "dependencies": { "@smithy/types": "^4.13.1", "tslib": "^2.6.2" } }, "sha512-fit0GZK9I1xoRlR4jXmbLhoN0OdEpa96ul8M65XdmXnxXkuMxM0Y8HDT0Fh0Xb4I85MBvBClOzgSrV1X2s1Hxw=="], + + "@smithy/middleware-content-length/@smithy/types": ["@smithy/types@4.13.1", "https://mirrors.cloud.tencent.com/npm/@smithy/types/-/types-4.13.1.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-787F3yzE2UiJIQ+wYW1CVg2odHjmaWLGksnKQHUrK/lYZSEcy1msuLVvxaR/sI2/aDe9U+TBuLsXnr3vod1g0g=="], + + "@smithy/middleware-endpoint/@smithy/types": ["@smithy/types@4.13.1", "https://mirrors.cloud.tencent.com/npm/@smithy/types/-/types-4.13.1.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-787F3yzE2UiJIQ+wYW1CVg2odHjmaWLGksnKQHUrK/lYZSEcy1msuLVvxaR/sI2/aDe9U+TBuLsXnr3vod1g0g=="], + + "@smithy/middleware-retry/@smithy/protocol-http": ["@smithy/protocol-http@5.3.12", "https://mirrors.cloud.tencent.com/npm/@smithy/protocol-http/-/protocol-http-5.3.12.tgz", { "dependencies": { "@smithy/types": "^4.13.1", "tslib": "^2.6.2" } }, "sha512-fit0GZK9I1xoRlR4jXmbLhoN0OdEpa96ul8M65XdmXnxXkuMxM0Y8HDT0Fh0Xb4I85MBvBClOzgSrV1X2s1Hxw=="], + + "@smithy/middleware-retry/@smithy/smithy-client": ["@smithy/smithy-client@4.12.8", "https://mirrors.cloud.tencent.com/npm/@smithy/smithy-client/-/smithy-client-4.12.8.tgz", { "dependencies": { "@smithy/core": "^3.23.13", "@smithy/middleware-endpoint": "^4.4.28", "@smithy/middleware-stack": "^4.2.12", "@smithy/protocol-http": "^5.3.12", "@smithy/types": "^4.13.1", "@smithy/util-stream": "^4.5.21", "tslib": "^2.6.2" } }, "sha512-aJaAX7vHe5i66smoSSID7t4rKY08PbD8EBU7DOloixvhOozfYWdcSYE4l6/tjkZ0vBZhGjheWzB2mh31sLgCMA=="], + + "@smithy/middleware-retry/@smithy/types": ["@smithy/types@4.13.1", "https://mirrors.cloud.tencent.com/npm/@smithy/types/-/types-4.13.1.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-787F3yzE2UiJIQ+wYW1CVg2odHjmaWLGksnKQHUrK/lYZSEcy1msuLVvxaR/sI2/aDe9U+TBuLsXnr3vod1g0g=="], + + "@smithy/middleware-serde/@smithy/protocol-http": ["@smithy/protocol-http@5.3.12", "https://mirrors.cloud.tencent.com/npm/@smithy/protocol-http/-/protocol-http-5.3.12.tgz", { "dependencies": { "@smithy/types": "^4.13.1", "tslib": "^2.6.2" } }, "sha512-fit0GZK9I1xoRlR4jXmbLhoN0OdEpa96ul8M65XdmXnxXkuMxM0Y8HDT0Fh0Xb4I85MBvBClOzgSrV1X2s1Hxw=="], + + "@smithy/middleware-serde/@smithy/types": ["@smithy/types@4.13.1", "https://mirrors.cloud.tencent.com/npm/@smithy/types/-/types-4.13.1.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-787F3yzE2UiJIQ+wYW1CVg2odHjmaWLGksnKQHUrK/lYZSEcy1msuLVvxaR/sI2/aDe9U+TBuLsXnr3vod1g0g=="], + + "@smithy/middleware-stack/@smithy/types": ["@smithy/types@4.13.1", "https://mirrors.cloud.tencent.com/npm/@smithy/types/-/types-4.13.1.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-787F3yzE2UiJIQ+wYW1CVg2odHjmaWLGksnKQHUrK/lYZSEcy1msuLVvxaR/sI2/aDe9U+TBuLsXnr3vod1g0g=="], + + "@smithy/node-config-provider/@smithy/types": ["@smithy/types@4.13.1", "https://mirrors.cloud.tencent.com/npm/@smithy/types/-/types-4.13.1.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-787F3yzE2UiJIQ+wYW1CVg2odHjmaWLGksnKQHUrK/lYZSEcy1msuLVvxaR/sI2/aDe9U+TBuLsXnr3vod1g0g=="], + + "@smithy/node-http-handler/@smithy/protocol-http": ["@smithy/protocol-http@5.3.12", "https://mirrors.cloud.tencent.com/npm/@smithy/protocol-http/-/protocol-http-5.3.12.tgz", { "dependencies": { "@smithy/types": "^4.13.1", "tslib": "^2.6.2" } }, "sha512-fit0GZK9I1xoRlR4jXmbLhoN0OdEpa96ul8M65XdmXnxXkuMxM0Y8HDT0Fh0Xb4I85MBvBClOzgSrV1X2s1Hxw=="], + + "@smithy/node-http-handler/@smithy/types": ["@smithy/types@4.13.1", "https://mirrors.cloud.tencent.com/npm/@smithy/types/-/types-4.13.1.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-787F3yzE2UiJIQ+wYW1CVg2odHjmaWLGksnKQHUrK/lYZSEcy1msuLVvxaR/sI2/aDe9U+TBuLsXnr3vod1g0g=="], + + "@smithy/property-provider/@smithy/types": ["@smithy/types@4.13.1", "https://mirrors.cloud.tencent.com/npm/@smithy/types/-/types-4.13.1.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-787F3yzE2UiJIQ+wYW1CVg2odHjmaWLGksnKQHUrK/lYZSEcy1msuLVvxaR/sI2/aDe9U+TBuLsXnr3vod1g0g=="], + + "@smithy/querystring-builder/@smithy/types": ["@smithy/types@4.13.1", "https://mirrors.cloud.tencent.com/npm/@smithy/types/-/types-4.13.1.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-787F3yzE2UiJIQ+wYW1CVg2odHjmaWLGksnKQHUrK/lYZSEcy1msuLVvxaR/sI2/aDe9U+TBuLsXnr3vod1g0g=="], + + "@smithy/querystring-builder/@smithy/util-uri-escape": ["@smithy/util-uri-escape@4.2.2", "https://mirrors.cloud.tencent.com/npm/@smithy/util-uri-escape/-/util-uri-escape-4.2.2.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-2kAStBlvq+lTXHyAZYfJRb/DfS3rsinLiwb+69SstC9Vb0s9vNWkRwpnj918Pfi85mzi42sOqdV72OLxWAISnw=="], + + "@smithy/querystring-parser/@smithy/types": ["@smithy/types@4.13.1", "https://mirrors.cloud.tencent.com/npm/@smithy/types/-/types-4.13.1.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-787F3yzE2UiJIQ+wYW1CVg2odHjmaWLGksnKQHUrK/lYZSEcy1msuLVvxaR/sI2/aDe9U+TBuLsXnr3vod1g0g=="], + + "@smithy/service-error-classification/@smithy/types": ["@smithy/types@4.13.1", "https://mirrors.cloud.tencent.com/npm/@smithy/types/-/types-4.13.1.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-787F3yzE2UiJIQ+wYW1CVg2odHjmaWLGksnKQHUrK/lYZSEcy1msuLVvxaR/sI2/aDe9U+TBuLsXnr3vod1g0g=="], + + "@smithy/shared-ini-file-loader/@smithy/types": ["@smithy/types@4.13.1", "https://mirrors.cloud.tencent.com/npm/@smithy/types/-/types-4.13.1.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-787F3yzE2UiJIQ+wYW1CVg2odHjmaWLGksnKQHUrK/lYZSEcy1msuLVvxaR/sI2/aDe9U+TBuLsXnr3vod1g0g=="], + + "@smithy/signature-v4/@smithy/types": ["@smithy/types@3.7.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-bNwBYYmN8Eh9RyjS1p2gW6MIhSO2rl7X9QeLM8iTdcGRP+eDiIWDt66c9IysCc22gefKszZv+ubV9qZc7hdESg=="], + + "@smithy/signature-v4/@smithy/util-middleware": ["@smithy/util-middleware@3.0.11", "", { "dependencies": { "@smithy/types": "^3.7.2", "tslib": "^2.6.2" } }, "sha512-dWpyc1e1R6VoXrwLoLDd57U1z6CwNSdkM69Ie4+6uYh2GC7Vg51Qtan7ITzczuVpqezdDTKJGJB95fFvvjU/ow=="], + + "@smithy/signature-v4/@smithy/util-utf8": ["@smithy/util-utf8@3.0.0", "", { "dependencies": { "@smithy/util-buffer-from": "^3.0.0", "tslib": "^2.6.2" } }, "sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA=="], + + "@smithy/smithy-client/@smithy/middleware-endpoint": ["@smithy/middleware-endpoint@2.5.1", "", { "dependencies": { "@smithy/middleware-serde": "^2.3.0", "@smithy/node-config-provider": "^2.3.0", "@smithy/shared-ini-file-loader": "^2.4.0", "@smithy/types": "^2.12.0", "@smithy/url-parser": "^2.2.0", "@smithy/util-middleware": "^2.2.0", "tslib": "^2.6.2" } }, "sha512-1/8kFp6Fl4OsSIVTWHnNjLnTL8IqpIb/D3sTSczrKFnrE9VMNWxnrRKNvpUHOJ6zpGD5f62TPm7+17ilTJpiCQ=="], + + "@smithy/smithy-client/@smithy/middleware-stack": ["@smithy/middleware-stack@2.2.0", "", { "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" } }, "sha512-Qntc3jrtwwrsAC+X8wms8zhrTr0sFXnyEGhZd9sLtsJ/6gGQKFzNB+wWbOcpJd7BR8ThNCoKt76BuQahfMvpeA=="], + + "@smithy/smithy-client/@smithy/util-stream": ["@smithy/util-stream@2.2.0", "", { "dependencies": { "@smithy/fetch-http-handler": "^2.5.0", "@smithy/node-http-handler": "^2.5.0", "@smithy/types": "^2.12.0", "@smithy/util-base64": "^2.3.0", "@smithy/util-buffer-from": "^2.2.0", "@smithy/util-hex-encoding": "^2.2.0", "@smithy/util-utf8": "^2.3.0", "tslib": "^2.6.2" } }, "sha512-17faEXbYWIRst1aU9SvPZyMdWmqIrduZjVOqCPMIsWFNxs5yQQgFrJL6b2SdiCzyW9mJoDjFtgi53xx7EH+BXA=="], + + "@smithy/url-parser/@smithy/types": ["@smithy/types@4.13.1", "https://mirrors.cloud.tencent.com/npm/@smithy/types/-/types-4.13.1.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-787F3yzE2UiJIQ+wYW1CVg2odHjmaWLGksnKQHUrK/lYZSEcy1msuLVvxaR/sI2/aDe9U+TBuLsXnr3vod1g0g=="], + + "@smithy/util-base64/@smithy/util-utf8": ["@smithy/util-utf8@2.3.0", "https://mirrors.cloud.tencent.com/npm/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", { "dependencies": { "@smithy/util-buffer-from": "^2.2.0", "tslib": "^2.6.2" } }, "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A=="], + + "@smithy/util-buffer-from/@smithy/is-array-buffer": ["@smithy/is-array-buffer@2.2.0", "https://mirrors.cloud.tencent.com/npm/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA=="], + + "@smithy/util-defaults-mode-browser/@smithy/smithy-client": ["@smithy/smithy-client@4.12.8", "https://mirrors.cloud.tencent.com/npm/@smithy/smithy-client/-/smithy-client-4.12.8.tgz", { "dependencies": { "@smithy/core": "^3.23.13", "@smithy/middleware-endpoint": "^4.4.28", "@smithy/middleware-stack": "^4.2.12", "@smithy/protocol-http": "^5.3.12", "@smithy/types": "^4.13.1", "@smithy/util-stream": "^4.5.21", "tslib": "^2.6.2" } }, "sha512-aJaAX7vHe5i66smoSSID7t4rKY08PbD8EBU7DOloixvhOozfYWdcSYE4l6/tjkZ0vBZhGjheWzB2mh31sLgCMA=="], + + "@smithy/util-defaults-mode-browser/@smithy/types": ["@smithy/types@4.13.1", "https://mirrors.cloud.tencent.com/npm/@smithy/types/-/types-4.13.1.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-787F3yzE2UiJIQ+wYW1CVg2odHjmaWLGksnKQHUrK/lYZSEcy1msuLVvxaR/sI2/aDe9U+TBuLsXnr3vod1g0g=="], + + "@smithy/util-defaults-mode-node/@smithy/smithy-client": ["@smithy/smithy-client@4.12.8", "https://mirrors.cloud.tencent.com/npm/@smithy/smithy-client/-/smithy-client-4.12.8.tgz", { "dependencies": { "@smithy/core": "^3.23.13", "@smithy/middleware-endpoint": "^4.4.28", "@smithy/middleware-stack": "^4.2.12", "@smithy/protocol-http": "^5.3.12", "@smithy/types": "^4.13.1", "@smithy/util-stream": "^4.5.21", "tslib": "^2.6.2" } }, "sha512-aJaAX7vHe5i66smoSSID7t4rKY08PbD8EBU7DOloixvhOozfYWdcSYE4l6/tjkZ0vBZhGjheWzB2mh31sLgCMA=="], + + "@smithy/util-defaults-mode-node/@smithy/types": ["@smithy/types@4.13.1", "https://mirrors.cloud.tencent.com/npm/@smithy/types/-/types-4.13.1.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-787F3yzE2UiJIQ+wYW1CVg2odHjmaWLGksnKQHUrK/lYZSEcy1msuLVvxaR/sI2/aDe9U+TBuLsXnr3vod1g0g=="], + + "@smithy/util-endpoints/@smithy/types": ["@smithy/types@4.13.1", "https://mirrors.cloud.tencent.com/npm/@smithy/types/-/types-4.13.1.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-787F3yzE2UiJIQ+wYW1CVg2odHjmaWLGksnKQHUrK/lYZSEcy1msuLVvxaR/sI2/aDe9U+TBuLsXnr3vod1g0g=="], + + "@smithy/util-middleware/@smithy/types": ["@smithy/types@4.13.1", "https://mirrors.cloud.tencent.com/npm/@smithy/types/-/types-4.13.1.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-787F3yzE2UiJIQ+wYW1CVg2odHjmaWLGksnKQHUrK/lYZSEcy1msuLVvxaR/sI2/aDe9U+TBuLsXnr3vod1g0g=="], + + "@smithy/util-retry/@smithy/types": ["@smithy/types@4.13.1", "https://mirrors.cloud.tencent.com/npm/@smithy/types/-/types-4.13.1.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-787F3yzE2UiJIQ+wYW1CVg2odHjmaWLGksnKQHUrK/lYZSEcy1msuLVvxaR/sI2/aDe9U+TBuLsXnr3vod1g0g=="], + + "@smithy/util-stream/@smithy/types": ["@smithy/types@4.13.1", "https://mirrors.cloud.tencent.com/npm/@smithy/types/-/types-4.13.1.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-787F3yzE2UiJIQ+wYW1CVg2odHjmaWLGksnKQHUrK/lYZSEcy1msuLVvxaR/sI2/aDe9U+TBuLsXnr3vod1g0g=="], + + "@smithy/util-stream/@smithy/util-base64": ["@smithy/util-base64@4.3.2", "https://mirrors.cloud.tencent.com/npm/@smithy/util-base64/-/util-base64-4.3.2.tgz", { "dependencies": { "@smithy/util-buffer-from": "^4.2.2", "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" } }, "sha512-XRH6b0H/5A3SgblmMa5ErXQ2XKhfbQB+Fm/oyLZ2O2kCUrwgg55bU0RekmzAhuwOjA9qdN5VU2BprOvGGUkOOQ=="], + + "@smithy/util-stream/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.2.2", "https://mirrors.cloud.tencent.com/npm/@smithy/util-buffer-from/-/util-buffer-from-4.2.2.tgz", { "dependencies": { "@smithy/is-array-buffer": "^4.2.2", "tslib": "^2.6.2" } }, "sha512-FDXD7cvUoFWwN6vtQfEta540Y/YBe5JneK3SoZg9bThSoOAC/eGeYEua6RkBgKjGa/sz6Y+DuBZj3+YEY21y4Q=="], + + "@smithy/util-stream/@smithy/util-hex-encoding": ["@smithy/util-hex-encoding@4.2.2", "https://mirrors.cloud.tencent.com/npm/@smithy/util-hex-encoding/-/util-hex-encoding-4.2.2.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-Qcz3W5vuHK4sLQdyT93k/rfrUwdJ8/HZ+nMUOyGdpeGA1Wxt65zYwi3oEl9kOM+RswvYq90fzkNDahPS8K0OIg=="], + + "@smithy/util-utf8/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.2.2", "https://mirrors.cloud.tencent.com/npm/@smithy/util-buffer-from/-/util-buffer-from-4.2.2.tgz", { "dependencies": { "@smithy/is-array-buffer": "^4.2.2", "tslib": "^2.6.2" } }, "sha512-FDXD7cvUoFWwN6vtQfEta540Y/YBe5JneK3SoZg9bThSoOAC/eGeYEua6RkBgKjGa/sz6Y+DuBZj3+YEY21y4Q=="], + + "@typespec/ts-http-runtime/https-proxy-agent": ["https-proxy-agent@7.0.6", "https://mirrors.cloud.tencent.com/npm/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", { "dependencies": { "agent-base": "^7.1.2", "debug": "4" } }, "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw=="], + + "cli-highlight/chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], + + "cli-highlight/highlight.js": ["highlight.js@10.7.3", "", {}, "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A=="], + "cliui/string-width": ["string-width@4.2.3", "https://mirrors.cloud.tencent.com/npm/string-width/-/string-width-4.2.3.tgz", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], "cliui/strip-ansi": ["strip-ansi@6.0.1", "https://mirrors.cloud.tencent.com/npm/strip-ansi/-/strip-ansi-6.0.1.tgz", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], - "cliui/wrap-ansi": ["wrap-ansi@6.2.0", "https://mirrors.cloud.tencent.com/npm/wrap-ansi/-/wrap-ansi-6.2.0.tgz", { "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA=="], + "cliui/wrap-ansi": ["wrap-ansi@7.0.0", "", { "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q=="], "external-editor/iconv-lite": ["iconv-lite@0.4.24", "https://mirrors.cloud.tencent.com/npm/iconv-lite/-/iconv-lite-0.4.24.tgz", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3" } }, "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA=="], @@ -903,6 +1461,10 @@ "gaxios/https-proxy-agent": ["https-proxy-agent@7.0.6", "https://mirrors.cloud.tencent.com/npm/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", { "dependencies": { "agent-base": "^7.1.2", "debug": "4" } }, "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw=="], + "gtoken/gaxios": ["gaxios@6.7.1", "", { "dependencies": { "extend": "^3.0.2", "https-proxy-agent": "^7.0.1", "is-stream": "^2.0.0", "node-fetch": "^2.6.9", "uuid": "^9.0.1" } }, "sha512-LDODD4TMYx7XXdpwxAVRAIAuB0bzv0s+ywFonY46k126qzQHT9ygyoa9tncmOiQmmDrik65UYsEkv3lbfqQ3yQ=="], + + "http-proxy-agent/agent-base": ["agent-base@7.1.4", "https://mirrors.cloud.tencent.com/npm/agent-base/-/agent-base-7.1.4.tgz", {}, "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ=="], + "ink/@alcalzone/ansi-tokenize": ["@alcalzone/ansi-tokenize@0.2.5", "https://mirrors.cloud.tencent.com/npm/@alcalzone/ansi-tokenize/-/ansi-tokenize-0.2.5.tgz", { "dependencies": { "ansi-styles": "^6.2.1", "is-fullwidth-code-point": "^5.0.0" } }, "sha512-3NX/MpTdroi0aKz134A6RC2Gb2iXVECN4QaAXnvCIxxIm3C3AVB1mkUe8NaaiyvOpDfsrqWhYtj+Q6a62RrTsw=="], "ink/cli-boxes": ["cli-boxes@3.0.0", "https://mirrors.cloud.tencent.com/npm/cli-boxes/-/cli-boxes-3.0.0.tgz", {}, "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g=="], @@ -911,10 +1473,18 @@ "ink/wrap-ansi": ["wrap-ansi@9.0.2", "https://mirrors.cloud.tencent.com/npm/wrap-ansi/-/wrap-ansi-9.0.2.tgz", { "dependencies": { "ansi-styles": "^6.2.1", "string-width": "^7.0.0", "strip-ansi": "^7.1.0" } }, "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww=="], + "minipass-flush/minipass": ["minipass@3.3.6", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw=="], + + "minipass-pipeline/minipass": ["minipass@3.3.6", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw=="], + "npm-run-path/path-key": ["path-key@4.0.0", "https://mirrors.cloud.tencent.com/npm/path-key/-/path-key-4.0.0.tgz", {}, "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ=="], + "parse5-htmlparser2-tree-adapter/parse5": ["parse5@6.0.1", "", {}, "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw=="], + "proper-lockfile/signal-exit": ["signal-exit@3.0.7", "https://mirrors.cloud.tencent.com/npm/signal-exit/-/signal-exit-3.0.7.tgz", {}, "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="], + "qrcode/yargs": ["yargs@15.4.1", "https://mirrors.cloud.tencent.com/npm/yargs/-/yargs-15.4.1.tgz", { "dependencies": { "cliui": "^6.0.0", "decamelize": "^1.2.0", "find-up": "^4.1.0", "get-caller-file": "^2.0.1", "require-directory": "^2.1.1", "require-main-filename": "^2.0.0", "set-blocking": "^2.0.0", "string-width": "^4.2.0", "which-module": "^2.0.0", "y18n": "^4.0.0", "yargs-parser": "^18.1.2" } }, "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A=="], + "restore-cursor/signal-exit": ["signal-exit@3.0.7", "https://mirrors.cloud.tencent.com/npm/signal-exit/-/signal-exit-3.0.7.tgz", {}, "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="], "vscode-languageserver-protocol/vscode-jsonrpc": ["vscode-jsonrpc@8.2.0", "https://mirrors.cloud.tencent.com/npm/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz", {}, "sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA=="], @@ -923,9 +1493,125 @@ "yargs/string-width": ["string-width@4.2.3", "https://mirrors.cloud.tencent.com/npm/string-width/-/string-width-4.2.3.tgz", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], - "@aws-crypto/sha256-browser/@smithy/util-utf8/@smithy/util-buffer-from": ["@smithy/util-buffer-from@2.2.0", "https://mirrors.cloud.tencent.com/npm/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", { "dependencies": { "@smithy/is-array-buffer": "^2.2.0", "tslib": "^2.6.2" } }, "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA=="], + "@anthropic-ai/vertex-sdk/google-auth-library/gaxios": ["gaxios@6.7.1", "", { "dependencies": { "extend": "^3.0.2", "https-proxy-agent": "^7.0.1", "is-stream": "^2.0.0", "node-fetch": "^2.6.9", "uuid": "^9.0.1" } }, "sha512-LDODD4TMYx7XXdpwxAVRAIAuB0bzv0s+ywFonY46k126qzQHT9ygyoa9tncmOiQmmDrik65UYsEkv3lbfqQ3yQ=="], + + "@anthropic-ai/vertex-sdk/google-auth-library/gcp-metadata": ["gcp-metadata@6.1.1", "", { "dependencies": { "gaxios": "^6.1.1", "google-logging-utils": "^0.0.2", "json-bigint": "^1.0.0" } }, "sha512-a4tiq7E0/5fTjxPAaH4jpjkSv/uCaU2p5KC6HVGrvl0cDjA8iBZv4vv1gyzlmK0ZUKqwpOyQMKzZQe3lTit77A=="], + + "@aws-crypto/crc32/@aws-crypto/util/@smithy/util-utf8": ["@smithy/util-utf8@2.3.0", "https://mirrors.cloud.tencent.com/npm/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", { "dependencies": { "@smithy/util-buffer-from": "^2.2.0", "tslib": "^2.6.2" } }, "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A=="], + + "@aws-sdk/client-bedrock-runtime/@aws-crypto/sha256-js/@aws-crypto/util": ["@aws-crypto/util@5.2.0", "https://mirrors.cloud.tencent.com/npm/@aws-crypto/util/-/util-5.2.0.tgz", { "dependencies": { "@aws-sdk/types": "^3.222.0", "@smithy/util-utf8": "^2.0.0", "tslib": "^2.6.2" } }, "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ=="], + + "@aws-sdk/client-bedrock-runtime/@aws-sdk/token-providers/@aws-sdk/nested-clients": ["@aws-sdk/nested-clients@3.996.17", "https://mirrors.cloud.tencent.com/npm/@aws-sdk/nested-clients/-/nested-clients-3.996.17.tgz", { "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", "@aws-sdk/core": "^3.973.26", "@aws-sdk/middleware-host-header": "^3.972.8", "@aws-sdk/middleware-logger": "^3.972.8", "@aws-sdk/middleware-recursion-detection": "^3.972.9", "@aws-sdk/middleware-user-agent": "^3.972.27", "@aws-sdk/region-config-resolver": "^3.972.10", "@aws-sdk/types": "^3.973.6", "@aws-sdk/util-endpoints": "^3.996.5", "@aws-sdk/util-user-agent-browser": "^3.972.8", "@aws-sdk/util-user-agent-node": "^3.973.13", "@smithy/config-resolver": "^4.4.13", "@smithy/core": "^3.23.13", "@smithy/fetch-http-handler": "^5.3.15", "@smithy/hash-node": "^4.2.12", "@smithy/invalid-dependency": "^4.2.12", "@smithy/middleware-content-length": "^4.2.12", "@smithy/middleware-endpoint": "^4.4.28", "@smithy/middleware-retry": "^4.4.45", "@smithy/middleware-serde": "^4.2.16", "@smithy/middleware-stack": "^4.2.12", "@smithy/node-config-provider": "^4.3.12", "@smithy/node-http-handler": "^4.5.1", "@smithy/protocol-http": "^5.3.12", "@smithy/smithy-client": "^4.12.8", "@smithy/types": "^4.13.1", "@smithy/url-parser": "^4.2.12", "@smithy/util-base64": "^4.3.2", "@smithy/util-body-length-browser": "^4.2.2", "@smithy/util-body-length-node": "^4.2.3", "@smithy/util-defaults-mode-browser": "^4.3.44", "@smithy/util-defaults-mode-node": "^4.2.48", "@smithy/util-endpoints": "^3.3.3", "@smithy/util-middleware": "^4.2.12", "@smithy/util-retry": "^4.2.12", "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" } }, "sha512-7B0HIX0tEFmOSJuWzdHZj1WhMXSryM+h66h96ZkqSncoY7J6wq61KOu4Kr57b/YnJP3J/EeQYVFulgR281h+7A=="], + + "@aws-sdk/client-bedrock-runtime/@smithy/eventstream-serde-node/@smithy/eventstream-serde-universal": ["@smithy/eventstream-serde-universal@4.2.12", "https://mirrors.cloud.tencent.com/npm/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-4.2.12.tgz", { "dependencies": { "@smithy/eventstream-codec": "^4.2.12", "@smithy/types": "^4.13.1", "tslib": "^2.6.2" } }, "sha512-+yNuTiyBACxOJUTvbsNsSOfH9G9oKbaJE1lNL3YHpGcuucl6rPZMi3nrpehpVOVR2E07YqFFmtwpImtpzlouHQ=="], + + "@aws-sdk/client-bedrock-runtime/@smithy/util-base64/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.2.2", "https://mirrors.cloud.tencent.com/npm/@smithy/util-buffer-from/-/util-buffer-from-4.2.2.tgz", { "dependencies": { "@smithy/is-array-buffer": "^4.2.2", "tslib": "^2.6.2" } }, "sha512-FDXD7cvUoFWwN6vtQfEta540Y/YBe5JneK3SoZg9bThSoOAC/eGeYEua6RkBgKjGa/sz6Y+DuBZj3+YEY21y4Q=="], + + "@aws-sdk/client-bedrock/@aws-crypto/sha256-js/@aws-crypto/util": ["@aws-crypto/util@5.2.0", "https://mirrors.cloud.tencent.com/npm/@aws-crypto/util/-/util-5.2.0.tgz", { "dependencies": { "@aws-sdk/types": "^3.222.0", "@smithy/util-utf8": "^2.0.0", "tslib": "^2.6.2" } }, "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ=="], + + "@aws-sdk/client-bedrock/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-ini": ["@aws-sdk/credential-provider-ini@3.972.28", "", { "dependencies": { "@aws-sdk/core": "^3.973.26", "@aws-sdk/credential-provider-env": "^3.972.24", "@aws-sdk/credential-provider-http": "^3.972.26", "@aws-sdk/credential-provider-login": "^3.972.28", "@aws-sdk/credential-provider-process": "^3.972.24", "@aws-sdk/credential-provider-sso": "^3.972.28", "@aws-sdk/credential-provider-web-identity": "^3.972.28", "@aws-sdk/nested-clients": "^3.996.18", "@aws-sdk/types": "^3.973.6", "@smithy/credential-provider-imds": "^4.2.12", "@smithy/property-provider": "^4.2.12", "@smithy/shared-ini-file-loader": "^4.4.7", "@smithy/types": "^4.13.1", "tslib": "^2.6.2" } }, "sha512-wXYvq3+uQcZV7k+bE4yDXCTBdzWTU9x/nMiKBfzInmv6yYK1veMK0AKvRfRBd72nGWYKcL6AxwiPg9z/pYlgpw=="], + + "@aws-sdk/client-bedrock/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-sso": ["@aws-sdk/credential-provider-sso@3.972.28", "", { "dependencies": { "@aws-sdk/core": "^3.973.26", "@aws-sdk/nested-clients": "^3.996.18", "@aws-sdk/token-providers": "3.1021.0", "@aws-sdk/types": "^3.973.6", "@smithy/property-provider": "^4.2.12", "@smithy/shared-ini-file-loader": "^4.4.7", "@smithy/types": "^4.13.1", "tslib": "^2.6.2" } }, "sha512-IoUlmKMLEITFn1SiCTjPfR6KrE799FBo5baWyk/5Ppar2yXZoUdaRqZzJzK6TcJxx450M8m8DbpddRVYlp5R/A=="], + + "@aws-sdk/client-bedrock/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-web-identity": ["@aws-sdk/credential-provider-web-identity@3.972.28", "", { "dependencies": { "@aws-sdk/core": "^3.973.26", "@aws-sdk/nested-clients": "^3.996.18", "@aws-sdk/types": "^3.973.6", "@smithy/property-provider": "^4.2.12", "@smithy/shared-ini-file-loader": "^4.4.7", "@smithy/types": "^4.13.1", "tslib": "^2.6.2" } }, "sha512-d+6h0SD8GGERzKe27v5rOzNGKOl0D+l0bWJdqrxH8WSQzHzjsQFIAPgIeOTUwBHVsKKwtSxc91K/SWax6XgswQ=="], + + "@aws-sdk/client-bedrock/@smithy/util-base64/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.2.2", "https://mirrors.cloud.tencent.com/npm/@smithy/util-buffer-from/-/util-buffer-from-4.2.2.tgz", { "dependencies": { "@smithy/is-array-buffer": "^4.2.2", "tslib": "^2.6.2" } }, "sha512-FDXD7cvUoFWwN6vtQfEta540Y/YBe5JneK3SoZg9bThSoOAC/eGeYEua6RkBgKjGa/sz6Y+DuBZj3+YEY21y4Q=="], + + "@aws-sdk/client-cognito-identity/@aws-crypto/sha256-js/@aws-crypto/util": ["@aws-crypto/util@5.2.0", "https://mirrors.cloud.tencent.com/npm/@aws-crypto/util/-/util-5.2.0.tgz", { "dependencies": { "@aws-sdk/types": "^3.222.0", "@smithy/util-utf8": "^2.0.0", "tslib": "^2.6.2" } }, "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ=="], + + "@aws-sdk/client-cognito-identity/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-ini": ["@aws-sdk/credential-provider-ini@3.972.28", "", { "dependencies": { "@aws-sdk/core": "^3.973.26", "@aws-sdk/credential-provider-env": "^3.972.24", "@aws-sdk/credential-provider-http": "^3.972.26", "@aws-sdk/credential-provider-login": "^3.972.28", "@aws-sdk/credential-provider-process": "^3.972.24", "@aws-sdk/credential-provider-sso": "^3.972.28", "@aws-sdk/credential-provider-web-identity": "^3.972.28", "@aws-sdk/nested-clients": "^3.996.18", "@aws-sdk/types": "^3.973.6", "@smithy/credential-provider-imds": "^4.2.12", "@smithy/property-provider": "^4.2.12", "@smithy/shared-ini-file-loader": "^4.4.7", "@smithy/types": "^4.13.1", "tslib": "^2.6.2" } }, "sha512-wXYvq3+uQcZV7k+bE4yDXCTBdzWTU9x/nMiKBfzInmv6yYK1veMK0AKvRfRBd72nGWYKcL6AxwiPg9z/pYlgpw=="], + + "@aws-sdk/client-cognito-identity/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-sso": ["@aws-sdk/credential-provider-sso@3.972.28", "", { "dependencies": { "@aws-sdk/core": "^3.973.26", "@aws-sdk/nested-clients": "^3.996.18", "@aws-sdk/token-providers": "3.1021.0", "@aws-sdk/types": "^3.973.6", "@smithy/property-provider": "^4.2.12", "@smithy/shared-ini-file-loader": "^4.4.7", "@smithy/types": "^4.13.1", "tslib": "^2.6.2" } }, "sha512-IoUlmKMLEITFn1SiCTjPfR6KrE799FBo5baWyk/5Ppar2yXZoUdaRqZzJzK6TcJxx450M8m8DbpddRVYlp5R/A=="], + + "@aws-sdk/client-cognito-identity/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-web-identity": ["@aws-sdk/credential-provider-web-identity@3.972.28", "", { "dependencies": { "@aws-sdk/core": "^3.973.26", "@aws-sdk/nested-clients": "^3.996.18", "@aws-sdk/types": "^3.973.6", "@smithy/property-provider": "^4.2.12", "@smithy/shared-ini-file-loader": "^4.4.7", "@smithy/types": "^4.13.1", "tslib": "^2.6.2" } }, "sha512-d+6h0SD8GGERzKe27v5rOzNGKOl0D+l0bWJdqrxH8WSQzHzjsQFIAPgIeOTUwBHVsKKwtSxc91K/SWax6XgswQ=="], + + "@aws-sdk/client-cognito-identity/@smithy/util-base64/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.2.2", "https://mirrors.cloud.tencent.com/npm/@smithy/util-buffer-from/-/util-buffer-from-4.2.2.tgz", { "dependencies": { "@smithy/is-array-buffer": "^4.2.2", "tslib": "^2.6.2" } }, "sha512-FDXD7cvUoFWwN6vtQfEta540Y/YBe5JneK3SoZg9bThSoOAC/eGeYEua6RkBgKjGa/sz6Y+DuBZj3+YEY21y4Q=="], + + "@aws-sdk/client-sts/@aws-crypto/sha256-js/@aws-crypto/util": ["@aws-crypto/util@5.2.0", "https://mirrors.cloud.tencent.com/npm/@aws-crypto/util/-/util-5.2.0.tgz", { "dependencies": { "@aws-sdk/types": "^3.222.0", "@smithy/util-utf8": "^2.0.0", "tslib": "^2.6.2" } }, "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ=="], + + "@aws-sdk/client-sts/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-ini": ["@aws-sdk/credential-provider-ini@3.972.28", "", { "dependencies": { "@aws-sdk/core": "^3.973.26", "@aws-sdk/credential-provider-env": "^3.972.24", "@aws-sdk/credential-provider-http": "^3.972.26", "@aws-sdk/credential-provider-login": "^3.972.28", "@aws-sdk/credential-provider-process": "^3.972.24", "@aws-sdk/credential-provider-sso": "^3.972.28", "@aws-sdk/credential-provider-web-identity": "^3.972.28", "@aws-sdk/nested-clients": "^3.996.18", "@aws-sdk/types": "^3.973.6", "@smithy/credential-provider-imds": "^4.2.12", "@smithy/property-provider": "^4.2.12", "@smithy/shared-ini-file-loader": "^4.4.7", "@smithy/types": "^4.13.1", "tslib": "^2.6.2" } }, "sha512-wXYvq3+uQcZV7k+bE4yDXCTBdzWTU9x/nMiKBfzInmv6yYK1veMK0AKvRfRBd72nGWYKcL6AxwiPg9z/pYlgpw=="], + + "@aws-sdk/client-sts/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-sso": ["@aws-sdk/credential-provider-sso@3.972.28", "", { "dependencies": { "@aws-sdk/core": "^3.973.26", "@aws-sdk/nested-clients": "^3.996.18", "@aws-sdk/token-providers": "3.1021.0", "@aws-sdk/types": "^3.973.6", "@smithy/property-provider": "^4.2.12", "@smithy/shared-ini-file-loader": "^4.4.7", "@smithy/types": "^4.13.1", "tslib": "^2.6.2" } }, "sha512-IoUlmKMLEITFn1SiCTjPfR6KrE799FBo5baWyk/5Ppar2yXZoUdaRqZzJzK6TcJxx450M8m8DbpddRVYlp5R/A=="], + + "@aws-sdk/client-sts/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-web-identity": ["@aws-sdk/credential-provider-web-identity@3.972.28", "", { "dependencies": { "@aws-sdk/core": "^3.973.26", "@aws-sdk/nested-clients": "^3.996.18", "@aws-sdk/types": "^3.973.6", "@smithy/property-provider": "^4.2.12", "@smithy/shared-ini-file-loader": "^4.4.7", "@smithy/types": "^4.13.1", "tslib": "^2.6.2" } }, "sha512-d+6h0SD8GGERzKe27v5rOzNGKOl0D+l0bWJdqrxH8WSQzHzjsQFIAPgIeOTUwBHVsKKwtSxc91K/SWax6XgswQ=="], + + "@aws-sdk/client-sts/@smithy/util-base64/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.2.2", "https://mirrors.cloud.tencent.com/npm/@smithy/util-buffer-from/-/util-buffer-from-4.2.2.tgz", { "dependencies": { "@smithy/is-array-buffer": "^4.2.2", "tslib": "^2.6.2" } }, "sha512-FDXD7cvUoFWwN6vtQfEta540Y/YBe5JneK3SoZg9bThSoOAC/eGeYEua6RkBgKjGa/sz6Y+DuBZj3+YEY21y4Q=="], + + "@aws-sdk/core/@smithy/signature-v4/@smithy/is-array-buffer": ["@smithy/is-array-buffer@4.2.2", "https://mirrors.cloud.tencent.com/npm/@smithy/is-array-buffer/-/is-array-buffer-4.2.2.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-n6rQ4N8Jj4YTQO3YFrlgZuwKodf4zUFs7EJIWH86pSCWBaAtAGBFfCM7Wx6D2bBJ2xqFNxGBSrUWswT3M0VJow=="], + + "@aws-sdk/core/@smithy/signature-v4/@smithy/util-hex-encoding": ["@smithy/util-hex-encoding@4.2.2", "https://mirrors.cloud.tencent.com/npm/@smithy/util-hex-encoding/-/util-hex-encoding-4.2.2.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-Qcz3W5vuHK4sLQdyT93k/rfrUwdJ8/HZ+nMUOyGdpeGA1Wxt65zYwi3oEl9kOM+RswvYq90fzkNDahPS8K0OIg=="], + + "@aws-sdk/core/@smithy/signature-v4/@smithy/util-uri-escape": ["@smithy/util-uri-escape@4.2.2", "https://mirrors.cloud.tencent.com/npm/@smithy/util-uri-escape/-/util-uri-escape-4.2.2.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-2kAStBlvq+lTXHyAZYfJRb/DfS3rsinLiwb+69SstC9Vb0s9vNWkRwpnj918Pfi85mzi42sOqdV72OLxWAISnw=="], + + "@aws-sdk/core/@smithy/util-base64/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.2.2", "https://mirrors.cloud.tencent.com/npm/@smithy/util-buffer-from/-/util-buffer-from-4.2.2.tgz", { "dependencies": { "@smithy/is-array-buffer": "^4.2.2", "tslib": "^2.6.2" } }, "sha512-FDXD7cvUoFWwN6vtQfEta540Y/YBe5JneK3SoZg9bThSoOAC/eGeYEua6RkBgKjGa/sz6Y+DuBZj3+YEY21y4Q=="], + + "@aws-sdk/credential-provider-ini/@aws-sdk/credential-provider-login/@smithy/protocol-http": ["@smithy/protocol-http@5.3.12", "https://mirrors.cloud.tencent.com/npm/@smithy/protocol-http/-/protocol-http-5.3.12.tgz", { "dependencies": { "@smithy/types": "^4.13.1", "tslib": "^2.6.2" } }, "sha512-fit0GZK9I1xoRlR4jXmbLhoN0OdEpa96ul8M65XdmXnxXkuMxM0Y8HDT0Fh0Xb4I85MBvBClOzgSrV1X2s1Hxw=="], + + "@aws-sdk/credential-provider-ini/@aws-sdk/nested-clients/@aws-crypto/sha256-js": ["@aws-crypto/sha256-js@5.2.0", "https://mirrors.cloud.tencent.com/npm/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz", { "dependencies": { "@aws-crypto/util": "^5.2.0", "@aws-sdk/types": "^3.222.0", "tslib": "^2.6.2" } }, "sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA=="], + + "@aws-sdk/credential-provider-ini/@aws-sdk/nested-clients/@aws-sdk/middleware-user-agent": ["@aws-sdk/middleware-user-agent@3.972.27", "https://mirrors.cloud.tencent.com/npm/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.972.27.tgz", { "dependencies": { "@aws-sdk/core": "^3.973.26", "@aws-sdk/types": "^3.973.6", "@aws-sdk/util-endpoints": "^3.996.5", "@smithy/core": "^3.23.13", "@smithy/protocol-http": "^5.3.12", "@smithy/types": "^4.13.1", "@smithy/util-retry": "^4.2.12", "tslib": "^2.6.2" } }, "sha512-TIRLO5UR2+FVUGmhYoAwVkKhcVzywEDX/5LzR9tjy1h8FQAXOtFg2IqgmwvxU7y933rkTn9rl6AdgcAUgQ1/Kg=="], + + "@aws-sdk/credential-provider-ini/@aws-sdk/nested-clients/@aws-sdk/util-user-agent-node": ["@aws-sdk/util-user-agent-node@3.973.13", "https://mirrors.cloud.tencent.com/npm/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.973.13.tgz", { "dependencies": { "@aws-sdk/middleware-user-agent": "^3.972.27", "@aws-sdk/types": "^3.973.6", "@smithy/node-config-provider": "^4.3.12", "@smithy/types": "^4.13.1", "@smithy/util-config-provider": "^4.2.2", "tslib": "^2.6.2" }, "peerDependencies": { "aws-crt": ">=1.0.0" }, "optionalPeers": ["aws-crt"] }, "sha512-s1dCJ0J9WU9UPkT3FFqhKTSquYTkqWXGRaapHFyWwwJH86ZussewhNST5R5TwXVL1VSHq4aJVl9fWK+svaRVCQ=="], + + "@aws-sdk/credential-provider-ini/@aws-sdk/nested-clients/@smithy/middleware-retry": ["@smithy/middleware-retry@4.4.45", "https://mirrors.cloud.tencent.com/npm/@smithy/middleware-retry/-/middleware-retry-4.4.45.tgz", { "dependencies": { "@smithy/node-config-provider": "^4.3.12", "@smithy/protocol-http": "^5.3.12", "@smithy/service-error-classification": "^4.2.12", "@smithy/smithy-client": "^4.12.8", "@smithy/types": "^4.13.1", "@smithy/util-middleware": "^4.2.12", "@smithy/util-retry": "^4.2.12", "@smithy/uuid": "^1.1.2", "tslib": "^2.6.2" } }, "sha512-td1PxpwDIaw5/oP/xIRxBGxJKoF1L4DBAwbZ8wjMuXBYOP/r2ZE/Ocou+mBHx/yk9knFEtDBwhSrYVn+Mz4pHw=="], + + "@aws-sdk/credential-provider-ini/@aws-sdk/nested-clients/@smithy/protocol-http": ["@smithy/protocol-http@5.3.12", "https://mirrors.cloud.tencent.com/npm/@smithy/protocol-http/-/protocol-http-5.3.12.tgz", { "dependencies": { "@smithy/types": "^4.13.1", "tslib": "^2.6.2" } }, "sha512-fit0GZK9I1xoRlR4jXmbLhoN0OdEpa96ul8M65XdmXnxXkuMxM0Y8HDT0Fh0Xb4I85MBvBClOzgSrV1X2s1Hxw=="], + + "@aws-sdk/credential-provider-ini/@aws-sdk/nested-clients/@smithy/smithy-client": ["@smithy/smithy-client@4.12.8", "https://mirrors.cloud.tencent.com/npm/@smithy/smithy-client/-/smithy-client-4.12.8.tgz", { "dependencies": { "@smithy/core": "^3.23.13", "@smithy/middleware-endpoint": "^4.4.28", "@smithy/middleware-stack": "^4.2.12", "@smithy/protocol-http": "^5.3.12", "@smithy/types": "^4.13.1", "@smithy/util-stream": "^4.5.21", "tslib": "^2.6.2" } }, "sha512-aJaAX7vHe5i66smoSSID7t4rKY08PbD8EBU7DOloixvhOozfYWdcSYE4l6/tjkZ0vBZhGjheWzB2mh31sLgCMA=="], + + "@aws-sdk/credential-provider-ini/@aws-sdk/nested-clients/@smithy/util-base64": ["@smithy/util-base64@4.3.2", "https://mirrors.cloud.tencent.com/npm/@smithy/util-base64/-/util-base64-4.3.2.tgz", { "dependencies": { "@smithy/util-buffer-from": "^4.2.2", "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" } }, "sha512-XRH6b0H/5A3SgblmMa5ErXQ2XKhfbQB+Fm/oyLZ2O2kCUrwgg55bU0RekmzAhuwOjA9qdN5VU2BprOvGGUkOOQ=="], + + "@aws-sdk/credential-provider-ini/@aws-sdk/nested-clients/@smithy/util-retry": ["@smithy/util-retry@4.2.12", "https://mirrors.cloud.tencent.com/npm/@smithy/util-retry/-/util-retry-4.2.12.tgz", { "dependencies": { "@smithy/service-error-classification": "^4.2.12", "@smithy/types": "^4.13.1", "tslib": "^2.6.2" } }, "sha512-1zopLDUEOwumjcHdJ1mwBHddubYF8GMQvstVCLC54Y46rqoHwlIU+8ZzUeaBcD+WCJHyDGSeZ2ml9YSe9aqcoQ=="], + + "@aws-sdk/credential-provider-sso/@aws-sdk/nested-clients/@aws-crypto/sha256-js": ["@aws-crypto/sha256-js@5.2.0", "https://mirrors.cloud.tencent.com/npm/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz", { "dependencies": { "@aws-crypto/util": "^5.2.0", "@aws-sdk/types": "^3.222.0", "tslib": "^2.6.2" } }, "sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA=="], + + "@aws-sdk/credential-provider-sso/@aws-sdk/nested-clients/@aws-sdk/middleware-user-agent": ["@aws-sdk/middleware-user-agent@3.972.27", "https://mirrors.cloud.tencent.com/npm/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.972.27.tgz", { "dependencies": { "@aws-sdk/core": "^3.973.26", "@aws-sdk/types": "^3.973.6", "@aws-sdk/util-endpoints": "^3.996.5", "@smithy/core": "^3.23.13", "@smithy/protocol-http": "^5.3.12", "@smithy/types": "^4.13.1", "@smithy/util-retry": "^4.2.12", "tslib": "^2.6.2" } }, "sha512-TIRLO5UR2+FVUGmhYoAwVkKhcVzywEDX/5LzR9tjy1h8FQAXOtFg2IqgmwvxU7y933rkTn9rl6AdgcAUgQ1/Kg=="], + + "@aws-sdk/credential-provider-sso/@aws-sdk/nested-clients/@aws-sdk/util-user-agent-node": ["@aws-sdk/util-user-agent-node@3.973.13", "https://mirrors.cloud.tencent.com/npm/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.973.13.tgz", { "dependencies": { "@aws-sdk/middleware-user-agent": "^3.972.27", "@aws-sdk/types": "^3.973.6", "@smithy/node-config-provider": "^4.3.12", "@smithy/types": "^4.13.1", "@smithy/util-config-provider": "^4.2.2", "tslib": "^2.6.2" }, "peerDependencies": { "aws-crt": ">=1.0.0" }, "optionalPeers": ["aws-crt"] }, "sha512-s1dCJ0J9WU9UPkT3FFqhKTSquYTkqWXGRaapHFyWwwJH86ZussewhNST5R5TwXVL1VSHq4aJVl9fWK+svaRVCQ=="], + + "@aws-sdk/credential-provider-sso/@aws-sdk/nested-clients/@smithy/middleware-retry": ["@smithy/middleware-retry@4.4.45", "https://mirrors.cloud.tencent.com/npm/@smithy/middleware-retry/-/middleware-retry-4.4.45.tgz", { "dependencies": { "@smithy/node-config-provider": "^4.3.12", "@smithy/protocol-http": "^5.3.12", "@smithy/service-error-classification": "^4.2.12", "@smithy/smithy-client": "^4.12.8", "@smithy/types": "^4.13.1", "@smithy/util-middleware": "^4.2.12", "@smithy/util-retry": "^4.2.12", "@smithy/uuid": "^1.1.2", "tslib": "^2.6.2" } }, "sha512-td1PxpwDIaw5/oP/xIRxBGxJKoF1L4DBAwbZ8wjMuXBYOP/r2ZE/Ocou+mBHx/yk9knFEtDBwhSrYVn+Mz4pHw=="], + + "@aws-sdk/credential-provider-sso/@aws-sdk/nested-clients/@smithy/protocol-http": ["@smithy/protocol-http@5.3.12", "https://mirrors.cloud.tencent.com/npm/@smithy/protocol-http/-/protocol-http-5.3.12.tgz", { "dependencies": { "@smithy/types": "^4.13.1", "tslib": "^2.6.2" } }, "sha512-fit0GZK9I1xoRlR4jXmbLhoN0OdEpa96ul8M65XdmXnxXkuMxM0Y8HDT0Fh0Xb4I85MBvBClOzgSrV1X2s1Hxw=="], + + "@aws-sdk/credential-provider-sso/@aws-sdk/nested-clients/@smithy/smithy-client": ["@smithy/smithy-client@4.12.8", "https://mirrors.cloud.tencent.com/npm/@smithy/smithy-client/-/smithy-client-4.12.8.tgz", { "dependencies": { "@smithy/core": "^3.23.13", "@smithy/middleware-endpoint": "^4.4.28", "@smithy/middleware-stack": "^4.2.12", "@smithy/protocol-http": "^5.3.12", "@smithy/types": "^4.13.1", "@smithy/util-stream": "^4.5.21", "tslib": "^2.6.2" } }, "sha512-aJaAX7vHe5i66smoSSID7t4rKY08PbD8EBU7DOloixvhOozfYWdcSYE4l6/tjkZ0vBZhGjheWzB2mh31sLgCMA=="], + + "@aws-sdk/credential-provider-sso/@aws-sdk/nested-clients/@smithy/util-base64": ["@smithy/util-base64@4.3.2", "https://mirrors.cloud.tencent.com/npm/@smithy/util-base64/-/util-base64-4.3.2.tgz", { "dependencies": { "@smithy/util-buffer-from": "^4.2.2", "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" } }, "sha512-XRH6b0H/5A3SgblmMa5ErXQ2XKhfbQB+Fm/oyLZ2O2kCUrwgg55bU0RekmzAhuwOjA9qdN5VU2BprOvGGUkOOQ=="], + + "@aws-sdk/credential-provider-sso/@aws-sdk/nested-clients/@smithy/util-retry": ["@smithy/util-retry@4.2.12", "https://mirrors.cloud.tencent.com/npm/@smithy/util-retry/-/util-retry-4.2.12.tgz", { "dependencies": { "@smithy/service-error-classification": "^4.2.12", "@smithy/types": "^4.13.1", "tslib": "^2.6.2" } }, "sha512-1zopLDUEOwumjcHdJ1mwBHddubYF8GMQvstVCLC54Y46rqoHwlIU+8ZzUeaBcD+WCJHyDGSeZ2ml9YSe9aqcoQ=="], + + "@aws-sdk/credential-provider-web-identity/@aws-sdk/nested-clients/@aws-crypto/sha256-js": ["@aws-crypto/sha256-js@5.2.0", "https://mirrors.cloud.tencent.com/npm/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz", { "dependencies": { "@aws-crypto/util": "^5.2.0", "@aws-sdk/types": "^3.222.0", "tslib": "^2.6.2" } }, "sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA=="], - "@aws-crypto/util/@smithy/util-utf8/@smithy/util-buffer-from": ["@smithy/util-buffer-from@2.2.0", "https://mirrors.cloud.tencent.com/npm/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", { "dependencies": { "@smithy/is-array-buffer": "^2.2.0", "tslib": "^2.6.2" } }, "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA=="], + "@aws-sdk/credential-provider-web-identity/@aws-sdk/nested-clients/@aws-sdk/middleware-user-agent": ["@aws-sdk/middleware-user-agent@3.972.27", "https://mirrors.cloud.tencent.com/npm/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.972.27.tgz", { "dependencies": { "@aws-sdk/core": "^3.973.26", "@aws-sdk/types": "^3.973.6", "@aws-sdk/util-endpoints": "^3.996.5", "@smithy/core": "^3.23.13", "@smithy/protocol-http": "^5.3.12", "@smithy/types": "^4.13.1", "@smithy/util-retry": "^4.2.12", "tslib": "^2.6.2" } }, "sha512-TIRLO5UR2+FVUGmhYoAwVkKhcVzywEDX/5LzR9tjy1h8FQAXOtFg2IqgmwvxU7y933rkTn9rl6AdgcAUgQ1/Kg=="], + + "@aws-sdk/credential-provider-web-identity/@aws-sdk/nested-clients/@aws-sdk/util-user-agent-node": ["@aws-sdk/util-user-agent-node@3.973.13", "https://mirrors.cloud.tencent.com/npm/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.973.13.tgz", { "dependencies": { "@aws-sdk/middleware-user-agent": "^3.972.27", "@aws-sdk/types": "^3.973.6", "@smithy/node-config-provider": "^4.3.12", "@smithy/types": "^4.13.1", "@smithy/util-config-provider": "^4.2.2", "tslib": "^2.6.2" }, "peerDependencies": { "aws-crt": ">=1.0.0" }, "optionalPeers": ["aws-crt"] }, "sha512-s1dCJ0J9WU9UPkT3FFqhKTSquYTkqWXGRaapHFyWwwJH86ZussewhNST5R5TwXVL1VSHq4aJVl9fWK+svaRVCQ=="], + + "@aws-sdk/credential-provider-web-identity/@aws-sdk/nested-clients/@smithy/middleware-retry": ["@smithy/middleware-retry@4.4.45", "https://mirrors.cloud.tencent.com/npm/@smithy/middleware-retry/-/middleware-retry-4.4.45.tgz", { "dependencies": { "@smithy/node-config-provider": "^4.3.12", "@smithy/protocol-http": "^5.3.12", "@smithy/service-error-classification": "^4.2.12", "@smithy/smithy-client": "^4.12.8", "@smithy/types": "^4.13.1", "@smithy/util-middleware": "^4.2.12", "@smithy/util-retry": "^4.2.12", "@smithy/uuid": "^1.1.2", "tslib": "^2.6.2" } }, "sha512-td1PxpwDIaw5/oP/xIRxBGxJKoF1L4DBAwbZ8wjMuXBYOP/r2ZE/Ocou+mBHx/yk9knFEtDBwhSrYVn+Mz4pHw=="], + + "@aws-sdk/credential-provider-web-identity/@aws-sdk/nested-clients/@smithy/protocol-http": ["@smithy/protocol-http@5.3.12", "https://mirrors.cloud.tencent.com/npm/@smithy/protocol-http/-/protocol-http-5.3.12.tgz", { "dependencies": { "@smithy/types": "^4.13.1", "tslib": "^2.6.2" } }, "sha512-fit0GZK9I1xoRlR4jXmbLhoN0OdEpa96ul8M65XdmXnxXkuMxM0Y8HDT0Fh0Xb4I85MBvBClOzgSrV1X2s1Hxw=="], + + "@aws-sdk/credential-provider-web-identity/@aws-sdk/nested-clients/@smithy/smithy-client": ["@smithy/smithy-client@4.12.8", "https://mirrors.cloud.tencent.com/npm/@smithy/smithy-client/-/smithy-client-4.12.8.tgz", { "dependencies": { "@smithy/core": "^3.23.13", "@smithy/middleware-endpoint": "^4.4.28", "@smithy/middleware-stack": "^4.2.12", "@smithy/protocol-http": "^5.3.12", "@smithy/types": "^4.13.1", "@smithy/util-stream": "^4.5.21", "tslib": "^2.6.2" } }, "sha512-aJaAX7vHe5i66smoSSID7t4rKY08PbD8EBU7DOloixvhOozfYWdcSYE4l6/tjkZ0vBZhGjheWzB2mh31sLgCMA=="], + + "@aws-sdk/credential-provider-web-identity/@aws-sdk/nested-clients/@smithy/util-base64": ["@smithy/util-base64@4.3.2", "https://mirrors.cloud.tencent.com/npm/@smithy/util-base64/-/util-base64-4.3.2.tgz", { "dependencies": { "@smithy/util-buffer-from": "^4.2.2", "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" } }, "sha512-XRH6b0H/5A3SgblmMa5ErXQ2XKhfbQB+Fm/oyLZ2O2kCUrwgg55bU0RekmzAhuwOjA9qdN5VU2BprOvGGUkOOQ=="], + + "@aws-sdk/credential-provider-web-identity/@aws-sdk/nested-clients/@smithy/util-retry": ["@smithy/util-retry@4.2.12", "https://mirrors.cloud.tencent.com/npm/@smithy/util-retry/-/util-retry-4.2.12.tgz", { "dependencies": { "@smithy/service-error-classification": "^4.2.12", "@smithy/types": "^4.13.1", "tslib": "^2.6.2" } }, "sha512-1zopLDUEOwumjcHdJ1mwBHddubYF8GMQvstVCLC54Y46rqoHwlIU+8ZzUeaBcD+WCJHyDGSeZ2ml9YSe9aqcoQ=="], + + "@aws-sdk/credential-providers/@aws-sdk/credential-provider-sso/@aws-sdk/token-providers": ["@aws-sdk/token-providers@3.1021.0", "", { "dependencies": { "@aws-sdk/core": "^3.973.26", "@aws-sdk/nested-clients": "^3.996.18", "@aws-sdk/types": "^3.973.6", "@smithy/property-provider": "^4.2.12", "@smithy/shared-ini-file-loader": "^4.4.7", "@smithy/types": "^4.13.1", "tslib": "^2.6.2" } }, "sha512-TKY6h9spUk3OLs5v1oAgW9mAeBE3LAGNBwJokLy96wwmd4W2v/tYlXseProyed9ValDj2u1jK/4Rg1T+1NXyJA=="], + + "@aws-sdk/middleware-websocket/@smithy/signature-v4/@smithy/is-array-buffer": ["@smithy/is-array-buffer@4.2.2", "https://mirrors.cloud.tencent.com/npm/@smithy/is-array-buffer/-/is-array-buffer-4.2.2.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-n6rQ4N8Jj4YTQO3YFrlgZuwKodf4zUFs7EJIWH86pSCWBaAtAGBFfCM7Wx6D2bBJ2xqFNxGBSrUWswT3M0VJow=="], + + "@aws-sdk/middleware-websocket/@smithy/signature-v4/@smithy/util-uri-escape": ["@smithy/util-uri-escape@4.2.2", "https://mirrors.cloud.tencent.com/npm/@smithy/util-uri-escape/-/util-uri-escape-4.2.2.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-2kAStBlvq+lTXHyAZYfJRb/DfS3rsinLiwb+69SstC9Vb0s9vNWkRwpnj918Pfi85mzi42sOqdV72OLxWAISnw=="], + + "@aws-sdk/middleware-websocket/@smithy/util-base64/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.2.2", "https://mirrors.cloud.tencent.com/npm/@smithy/util-buffer-from/-/util-buffer-from-4.2.2.tgz", { "dependencies": { "@smithy/is-array-buffer": "^4.2.2", "tslib": "^2.6.2" } }, "sha512-FDXD7cvUoFWwN6vtQfEta540Y/YBe5JneK3SoZg9bThSoOAC/eGeYEua6RkBgKjGa/sz6Y+DuBZj3+YEY21y4Q=="], + + "@aws-sdk/nested-clients/@aws-crypto/sha256-js/@aws-crypto/util": ["@aws-crypto/util@5.2.0", "https://mirrors.cloud.tencent.com/npm/@aws-crypto/util/-/util-5.2.0.tgz", { "dependencies": { "@aws-sdk/types": "^3.222.0", "@smithy/util-utf8": "^2.0.0", "tslib": "^2.6.2" } }, "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ=="], + + "@aws-sdk/nested-clients/@smithy/util-base64/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.2.2", "https://mirrors.cloud.tencent.com/npm/@smithy/util-buffer-from/-/util-buffer-from-4.2.2.tgz", { "dependencies": { "@smithy/is-array-buffer": "^4.2.2", "tslib": "^2.6.2" } }, "sha512-FDXD7cvUoFWwN6vtQfEta540Y/YBe5JneK3SoZg9bThSoOAC/eGeYEua6RkBgKjGa/sz6Y+DuBZj3+YEY21y4Q=="], + + "@grpc/proto-loader/yargs/cliui": ["cliui@8.0.1", "", { "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", "wrap-ansi": "^7.0.0" } }, "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ=="], + + "@grpc/proto-loader/yargs/string-width": ["string-width@4.2.3", "https://mirrors.cloud.tencent.com/npm/string-width/-/string-width-4.2.3.tgz", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], + + "@grpc/proto-loader/yargs/yargs-parser": ["yargs-parser@21.1.1", "", {}, "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw=="], "@inquirer/checkbox/ansi-escapes/type-fest": ["type-fest@0.21.3", "https://mirrors.cloud.tencent.com/npm/type-fest/-/type-fest-0.21.3.tgz", {}, "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w=="], @@ -941,6 +1627,50 @@ "@inquirer/select/ansi-escapes/type-fest": ["type-fest@0.21.3", "https://mirrors.cloud.tencent.com/npm/type-fest/-/type-fest-0.21.3.tgz", {}, "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w=="], + "@smithy/core/@smithy/util-base64/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.2.2", "https://mirrors.cloud.tencent.com/npm/@smithy/util-buffer-from/-/util-buffer-from-4.2.2.tgz", { "dependencies": { "@smithy/is-array-buffer": "^4.2.2", "tslib": "^2.6.2" } }, "sha512-FDXD7cvUoFWwN6vtQfEta540Y/YBe5JneK3SoZg9bThSoOAC/eGeYEua6RkBgKjGa/sz6Y+DuBZj3+YEY21y4Q=="], + + "@smithy/eventstream-serde-universal/@smithy/eventstream-codec/@aws-crypto/crc32": ["@aws-crypto/crc32@3.0.0", "", { "dependencies": { "@aws-crypto/util": "^3.0.0", "@aws-sdk/types": "^3.222.0", "tslib": "^1.11.1" } }, "sha512-IzSgsrxUcsrejQbPVilIKy16kAT52EwB6zSaI+M3xxIhKh5+aldEyvI+z6erM7TCLB2BJsFrtHjp6/4/sr+3dA=="], + + "@smithy/eventstream-serde-universal/@smithy/eventstream-codec/@smithy/util-hex-encoding": ["@smithy/util-hex-encoding@2.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-7iKXR+/4TpLK194pVjKiasIyqMtTYJsgKgM242Y9uzt5dhHnUDvMNb+3xIhRJ9QhvqGii/5cRUt4fJn3dtXNHQ=="], + + "@smithy/fetch-http-handler/@smithy/util-base64/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.2.2", "https://mirrors.cloud.tencent.com/npm/@smithy/util-buffer-from/-/util-buffer-from-4.2.2.tgz", { "dependencies": { "@smithy/is-array-buffer": "^4.2.2", "tslib": "^2.6.2" } }, "sha512-FDXD7cvUoFWwN6vtQfEta540Y/YBe5JneK3SoZg9bThSoOAC/eGeYEua6RkBgKjGa/sz6Y+DuBZj3+YEY21y4Q=="], + + "@smithy/hash-node/@smithy/util-buffer-from/@smithy/is-array-buffer": ["@smithy/is-array-buffer@4.2.2", "https://mirrors.cloud.tencent.com/npm/@smithy/is-array-buffer/-/is-array-buffer-4.2.2.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-n6rQ4N8Jj4YTQO3YFrlgZuwKodf4zUFs7EJIWH86pSCWBaAtAGBFfCM7Wx6D2bBJ2xqFNxGBSrUWswT3M0VJow=="], + + "@smithy/signature-v4/@smithy/util-utf8/@smithy/util-buffer-from": ["@smithy/util-buffer-from@3.0.0", "", { "dependencies": { "@smithy/is-array-buffer": "^3.0.0", "tslib": "^2.6.2" } }, "sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA=="], + + "@smithy/smithy-client/@smithy/middleware-endpoint/@smithy/middleware-serde": ["@smithy/middleware-serde@2.3.0", "", { "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" } }, "sha512-sIADe7ojwqTyvEQBe1nc/GXB9wdHhi9UwyX0lTyttmUWDJLP655ZYE1WngnNyXREme8I27KCaUhyhZWRXL0q7Q=="], + + "@smithy/smithy-client/@smithy/middleware-endpoint/@smithy/node-config-provider": ["@smithy/node-config-provider@2.3.0", "", { "dependencies": { "@smithy/property-provider": "^2.2.0", "@smithy/shared-ini-file-loader": "^2.4.0", "@smithy/types": "^2.12.0", "tslib": "^2.6.2" } }, "sha512-0elK5/03a1JPWMDPaS726Iw6LpQg80gFut1tNpPfxFuChEEklo2yL823V94SpTZTxmKlXFtFgsP55uh3dErnIg=="], + + "@smithy/smithy-client/@smithy/middleware-endpoint/@smithy/shared-ini-file-loader": ["@smithy/shared-ini-file-loader@2.4.0", "", { "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" } }, "sha512-WyujUJL8e1B6Z4PBfAqC/aGY1+C7T0w20Gih3yrvJSk97gpiVfB+y7c46T4Nunk+ZngLq0rOIdeVeIklk0R3OA=="], + + "@smithy/smithy-client/@smithy/middleware-endpoint/@smithy/url-parser": ["@smithy/url-parser@2.2.0", "", { "dependencies": { "@smithy/querystring-parser": "^2.2.0", "@smithy/types": "^2.12.0", "tslib": "^2.6.2" } }, "sha512-hoA4zm61q1mNTpksiSWp2nEl1dt3j726HdRhiNgVJQMj7mLp7dprtF57mOB6JvEk/x9d2bsuL5hlqZbBuHQylQ=="], + + "@smithy/smithy-client/@smithy/middleware-endpoint/@smithy/util-middleware": ["@smithy/util-middleware@2.2.0", "", { "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" } }, "sha512-L1qpleXf9QD6LwLCJ5jddGkgWyuSvWBkJwWAZ6kFkdifdso+sk3L3O1HdmPvCdnCK3IS4qWyPxev01QMnfHSBw=="], + + "@smithy/smithy-client/@smithy/util-stream/@smithy/fetch-http-handler": ["@smithy/fetch-http-handler@2.5.0", "", { "dependencies": { "@smithy/protocol-http": "^3.3.0", "@smithy/querystring-builder": "^2.2.0", "@smithy/types": "^2.12.0", "@smithy/util-base64": "^2.3.0", "tslib": "^2.6.2" } }, "sha512-BOWEBeppWhLn/no/JxUL/ghTfANTjT7kg3Ww2rPqTUY9R4yHPXxJ9JhMe3Z03LN3aPwiwlpDIUcVw1xDyHqEhw=="], + + "@smithy/smithy-client/@smithy/util-stream/@smithy/node-http-handler": ["@smithy/node-http-handler@2.5.0", "", { "dependencies": { "@smithy/abort-controller": "^2.2.0", "@smithy/protocol-http": "^3.3.0", "@smithy/querystring-builder": "^2.2.0", "@smithy/types": "^2.12.0", "tslib": "^2.6.2" } }, "sha512-mVGyPBzkkGQsPoxQUbxlEfRjrj6FPyA3u3u2VXGr9hT8wilsoQdZdvKpMBFMB8Crfhv5dNkKHIW0Yyuc7eABqA=="], + + "@smithy/smithy-client/@smithy/util-stream/@smithy/util-hex-encoding": ["@smithy/util-hex-encoding@2.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-7iKXR+/4TpLK194pVjKiasIyqMtTYJsgKgM242Y9uzt5dhHnUDvMNb+3xIhRJ9QhvqGii/5cRUt4fJn3dtXNHQ=="], + + "@smithy/smithy-client/@smithy/util-stream/@smithy/util-utf8": ["@smithy/util-utf8@2.3.0", "https://mirrors.cloud.tencent.com/npm/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", { "dependencies": { "@smithy/util-buffer-from": "^2.2.0", "tslib": "^2.6.2" } }, "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A=="], + + "@smithy/util-defaults-mode-browser/@smithy/smithy-client/@smithy/protocol-http": ["@smithy/protocol-http@5.3.12", "https://mirrors.cloud.tencent.com/npm/@smithy/protocol-http/-/protocol-http-5.3.12.tgz", { "dependencies": { "@smithy/types": "^4.13.1", "tslib": "^2.6.2" } }, "sha512-fit0GZK9I1xoRlR4jXmbLhoN0OdEpa96ul8M65XdmXnxXkuMxM0Y8HDT0Fh0Xb4I85MBvBClOzgSrV1X2s1Hxw=="], + + "@smithy/util-defaults-mode-node/@smithy/smithy-client/@smithy/protocol-http": ["@smithy/protocol-http@5.3.12", "https://mirrors.cloud.tencent.com/npm/@smithy/protocol-http/-/protocol-http-5.3.12.tgz", { "dependencies": { "@smithy/types": "^4.13.1", "tslib": "^2.6.2" } }, "sha512-fit0GZK9I1xoRlR4jXmbLhoN0OdEpa96ul8M65XdmXnxXkuMxM0Y8HDT0Fh0Xb4I85MBvBClOzgSrV1X2s1Hxw=="], + + "@smithy/util-stream/@smithy/util-buffer-from/@smithy/is-array-buffer": ["@smithy/is-array-buffer@4.2.2", "https://mirrors.cloud.tencent.com/npm/@smithy/is-array-buffer/-/is-array-buffer-4.2.2.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-n6rQ4N8Jj4YTQO3YFrlgZuwKodf4zUFs7EJIWH86pSCWBaAtAGBFfCM7Wx6D2bBJ2xqFNxGBSrUWswT3M0VJow=="], + + "@smithy/util-utf8/@smithy/util-buffer-from/@smithy/is-array-buffer": ["@smithy/is-array-buffer@4.2.2", "https://mirrors.cloud.tencent.com/npm/@smithy/is-array-buffer/-/is-array-buffer-4.2.2.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-n6rQ4N8Jj4YTQO3YFrlgZuwKodf4zUFs7EJIWH86pSCWBaAtAGBFfCM7Wx6D2bBJ2xqFNxGBSrUWswT3M0VJow=="], + + "@typespec/ts-http-runtime/https-proxy-agent/agent-base": ["agent-base@7.1.4", "https://mirrors.cloud.tencent.com/npm/agent-base/-/agent-base-7.1.4.tgz", {}, "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ=="], + + "cli-highlight/chalk/ansi-styles": ["ansi-styles@4.3.0", "https://mirrors.cloud.tencent.com/npm/ansi-styles/-/ansi-styles-4.3.0.tgz", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], + + "cli-highlight/chalk/supports-color": ["supports-color@7.2.0", "", { "dependencies": { "has-flag": "^4.0.0" } }, "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="], + "cliui/string-width/emoji-regex": ["emoji-regex@8.0.0", "https://mirrors.cloud.tencent.com/npm/emoji-regex/-/emoji-regex-8.0.0.tgz", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], "cliui/string-width/is-fullwidth-code-point": ["is-fullwidth-code-point@3.0.0", "https://mirrors.cloud.tencent.com/npm/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", {}, "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="], @@ -953,22 +1683,156 @@ "gaxios/https-proxy-agent/agent-base": ["agent-base@7.1.4", "https://mirrors.cloud.tencent.com/npm/agent-base/-/agent-base-7.1.4.tgz", {}, "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ=="], + "gtoken/gaxios/https-proxy-agent": ["https-proxy-agent@7.0.6", "https://mirrors.cloud.tencent.com/npm/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", { "dependencies": { "agent-base": "^7.1.2", "debug": "4" } }, "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw=="], + + "gtoken/gaxios/is-stream": ["is-stream@2.0.1", "", {}, "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg=="], + + "gtoken/gaxios/node-fetch": ["node-fetch@2.7.0", "", { "dependencies": { "whatwg-url": "^5.0.0" }, "peerDependencies": { "encoding": "^0.1.0" }, "optionalPeers": ["encoding"] }, "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A=="], + + "gtoken/gaxios/uuid": ["uuid@9.0.1", "", { "bin": { "uuid": "dist/bin/uuid" } }, "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA=="], + "ink/wrap-ansi/string-width": ["string-width@7.2.0", "https://mirrors.cloud.tencent.com/npm/string-width/-/string-width-7.2.0.tgz", { "dependencies": { "emoji-regex": "^10.3.0", "get-east-asian-width": "^1.0.0", "strip-ansi": "^7.1.0" } }, "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ=="], + "qrcode/yargs/cliui": ["cliui@6.0.0", "https://mirrors.cloud.tencent.com/npm/cliui/-/cliui-6.0.0.tgz", { "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", "wrap-ansi": "^6.2.0" } }, "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ=="], + + "qrcode/yargs/string-width": ["string-width@4.2.3", "https://mirrors.cloud.tencent.com/npm/string-width/-/string-width-4.2.3.tgz", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], + + "qrcode/yargs/y18n": ["y18n@4.0.3", "https://mirrors.cloud.tencent.com/npm/y18n/-/y18n-4.0.3.tgz", {}, "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ=="], + + "qrcode/yargs/yargs-parser": ["yargs-parser@18.1.3", "https://mirrors.cloud.tencent.com/npm/yargs-parser/-/yargs-parser-18.1.3.tgz", { "dependencies": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" } }, "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ=="], + "yargs/string-width/emoji-regex": ["emoji-regex@8.0.0", "https://mirrors.cloud.tencent.com/npm/emoji-regex/-/emoji-regex-8.0.0.tgz", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], "yargs/string-width/is-fullwidth-code-point": ["is-fullwidth-code-point@3.0.0", "https://mirrors.cloud.tencent.com/npm/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", {}, "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="], "yargs/string-width/strip-ansi": ["strip-ansi@6.0.1", "https://mirrors.cloud.tencent.com/npm/strip-ansi/-/strip-ansi-6.0.1.tgz", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], - "@aws-crypto/sha256-browser/@smithy/util-utf8/@smithy/util-buffer-from/@smithy/is-array-buffer": ["@smithy/is-array-buffer@2.2.0", "https://mirrors.cloud.tencent.com/npm/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA=="], + "@anthropic-ai/vertex-sdk/google-auth-library/gaxios/https-proxy-agent": ["https-proxy-agent@7.0.6", "https://mirrors.cloud.tencent.com/npm/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", { "dependencies": { "agent-base": "^7.1.2", "debug": "4" } }, "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw=="], + + "@anthropic-ai/vertex-sdk/google-auth-library/gaxios/is-stream": ["is-stream@2.0.1", "", {}, "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg=="], + + "@anthropic-ai/vertex-sdk/google-auth-library/gaxios/node-fetch": ["node-fetch@2.7.0", "", { "dependencies": { "whatwg-url": "^5.0.0" }, "peerDependencies": { "encoding": "^0.1.0" }, "optionalPeers": ["encoding"] }, "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A=="], + + "@anthropic-ai/vertex-sdk/google-auth-library/gaxios/uuid": ["uuid@9.0.1", "", { "bin": { "uuid": "dist/bin/uuid" } }, "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA=="], + + "@anthropic-ai/vertex-sdk/google-auth-library/gcp-metadata/google-logging-utils": ["google-logging-utils@0.0.2", "", {}, "sha512-NEgUnEcBiP5HrPzufUkBzJOD/Sxsco3rLNo1F1TNf7ieU8ryUzBhqba8r756CjLX7rn3fHl6iLEwPYuqpoKgQQ=="], + + "@aws-sdk/client-bedrock-runtime/@aws-crypto/sha256-js/@aws-crypto/util/@smithy/util-utf8": ["@smithy/util-utf8@2.3.0", "https://mirrors.cloud.tencent.com/npm/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", { "dependencies": { "@smithy/util-buffer-from": "^2.2.0", "tslib": "^2.6.2" } }, "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A=="], + + "@aws-sdk/client-bedrock-runtime/@smithy/util-base64/@smithy/util-buffer-from/@smithy/is-array-buffer": ["@smithy/is-array-buffer@4.2.2", "https://mirrors.cloud.tencent.com/npm/@smithy/is-array-buffer/-/is-array-buffer-4.2.2.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-n6rQ4N8Jj4YTQO3YFrlgZuwKodf4zUFs7EJIWH86pSCWBaAtAGBFfCM7Wx6D2bBJ2xqFNxGBSrUWswT3M0VJow=="], + + "@aws-sdk/client-bedrock/@aws-crypto/sha256-js/@aws-crypto/util/@smithy/util-utf8": ["@smithy/util-utf8@2.3.0", "https://mirrors.cloud.tencent.com/npm/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", { "dependencies": { "@smithy/util-buffer-from": "^2.2.0", "tslib": "^2.6.2" } }, "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A=="], - "@aws-crypto/util/@smithy/util-utf8/@smithy/util-buffer-from/@smithy/is-array-buffer": ["@smithy/is-array-buffer@2.2.0", "https://mirrors.cloud.tencent.com/npm/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA=="], + "@aws-sdk/client-bedrock/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-sso/@aws-sdk/token-providers": ["@aws-sdk/token-providers@3.1021.0", "", { "dependencies": { "@aws-sdk/core": "^3.973.26", "@aws-sdk/nested-clients": "^3.996.18", "@aws-sdk/types": "^3.973.6", "@smithy/property-provider": "^4.2.12", "@smithy/shared-ini-file-loader": "^4.4.7", "@smithy/types": "^4.13.1", "tslib": "^2.6.2" } }, "sha512-TKY6h9spUk3OLs5v1oAgW9mAeBE3LAGNBwJokLy96wwmd4W2v/tYlXseProyed9ValDj2u1jK/4Rg1T+1NXyJA=="], + + "@aws-sdk/client-bedrock/@smithy/util-base64/@smithy/util-buffer-from/@smithy/is-array-buffer": ["@smithy/is-array-buffer@4.2.2", "https://mirrors.cloud.tencent.com/npm/@smithy/is-array-buffer/-/is-array-buffer-4.2.2.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-n6rQ4N8Jj4YTQO3YFrlgZuwKodf4zUFs7EJIWH86pSCWBaAtAGBFfCM7Wx6D2bBJ2xqFNxGBSrUWswT3M0VJow=="], + + "@aws-sdk/client-cognito-identity/@aws-crypto/sha256-js/@aws-crypto/util/@smithy/util-utf8": ["@smithy/util-utf8@2.3.0", "https://mirrors.cloud.tencent.com/npm/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", { "dependencies": { "@smithy/util-buffer-from": "^2.2.0", "tslib": "^2.6.2" } }, "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A=="], + + "@aws-sdk/client-cognito-identity/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-sso/@aws-sdk/token-providers": ["@aws-sdk/token-providers@3.1021.0", "", { "dependencies": { "@aws-sdk/core": "^3.973.26", "@aws-sdk/nested-clients": "^3.996.18", "@aws-sdk/types": "^3.973.6", "@smithy/property-provider": "^4.2.12", "@smithy/shared-ini-file-loader": "^4.4.7", "@smithy/types": "^4.13.1", "tslib": "^2.6.2" } }, "sha512-TKY6h9spUk3OLs5v1oAgW9mAeBE3LAGNBwJokLy96wwmd4W2v/tYlXseProyed9ValDj2u1jK/4Rg1T+1NXyJA=="], + + "@aws-sdk/client-cognito-identity/@smithy/util-base64/@smithy/util-buffer-from/@smithy/is-array-buffer": ["@smithy/is-array-buffer@4.2.2", "https://mirrors.cloud.tencent.com/npm/@smithy/is-array-buffer/-/is-array-buffer-4.2.2.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-n6rQ4N8Jj4YTQO3YFrlgZuwKodf4zUFs7EJIWH86pSCWBaAtAGBFfCM7Wx6D2bBJ2xqFNxGBSrUWswT3M0VJow=="], + + "@aws-sdk/client-sts/@aws-crypto/sha256-js/@aws-crypto/util/@smithy/util-utf8": ["@smithy/util-utf8@2.3.0", "https://mirrors.cloud.tencent.com/npm/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", { "dependencies": { "@smithy/util-buffer-from": "^2.2.0", "tslib": "^2.6.2" } }, "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A=="], + + "@aws-sdk/client-sts/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-sso/@aws-sdk/token-providers": ["@aws-sdk/token-providers@3.1021.0", "", { "dependencies": { "@aws-sdk/core": "^3.973.26", "@aws-sdk/nested-clients": "^3.996.18", "@aws-sdk/types": "^3.973.6", "@smithy/property-provider": "^4.2.12", "@smithy/shared-ini-file-loader": "^4.4.7", "@smithy/types": "^4.13.1", "tslib": "^2.6.2" } }, "sha512-TKY6h9spUk3OLs5v1oAgW9mAeBE3LAGNBwJokLy96wwmd4W2v/tYlXseProyed9ValDj2u1jK/4Rg1T+1NXyJA=="], + + "@aws-sdk/client-sts/@smithy/util-base64/@smithy/util-buffer-from/@smithy/is-array-buffer": ["@smithy/is-array-buffer@4.2.2", "https://mirrors.cloud.tencent.com/npm/@smithy/is-array-buffer/-/is-array-buffer-4.2.2.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-n6rQ4N8Jj4YTQO3YFrlgZuwKodf4zUFs7EJIWH86pSCWBaAtAGBFfCM7Wx6D2bBJ2xqFNxGBSrUWswT3M0VJow=="], + + "@aws-sdk/core/@smithy/util-base64/@smithy/util-buffer-from/@smithy/is-array-buffer": ["@smithy/is-array-buffer@4.2.2", "https://mirrors.cloud.tencent.com/npm/@smithy/is-array-buffer/-/is-array-buffer-4.2.2.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-n6rQ4N8Jj4YTQO3YFrlgZuwKodf4zUFs7EJIWH86pSCWBaAtAGBFfCM7Wx6D2bBJ2xqFNxGBSrUWswT3M0VJow=="], + + "@aws-sdk/credential-provider-ini/@aws-sdk/nested-clients/@aws-crypto/sha256-js/@aws-crypto/util": ["@aws-crypto/util@5.2.0", "https://mirrors.cloud.tencent.com/npm/@aws-crypto/util/-/util-5.2.0.tgz", { "dependencies": { "@aws-sdk/types": "^3.222.0", "@smithy/util-utf8": "^2.0.0", "tslib": "^2.6.2" } }, "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ=="], + + "@aws-sdk/credential-provider-ini/@aws-sdk/nested-clients/@smithy/util-base64/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.2.2", "https://mirrors.cloud.tencent.com/npm/@smithy/util-buffer-from/-/util-buffer-from-4.2.2.tgz", { "dependencies": { "@smithy/is-array-buffer": "^4.2.2", "tslib": "^2.6.2" } }, "sha512-FDXD7cvUoFWwN6vtQfEta540Y/YBe5JneK3SoZg9bThSoOAC/eGeYEua6RkBgKjGa/sz6Y+DuBZj3+YEY21y4Q=="], + + "@aws-sdk/credential-provider-sso/@aws-sdk/nested-clients/@aws-crypto/sha256-js/@aws-crypto/util": ["@aws-crypto/util@5.2.0", "https://mirrors.cloud.tencent.com/npm/@aws-crypto/util/-/util-5.2.0.tgz", { "dependencies": { "@aws-sdk/types": "^3.222.0", "@smithy/util-utf8": "^2.0.0", "tslib": "^2.6.2" } }, "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ=="], + + "@aws-sdk/credential-provider-sso/@aws-sdk/nested-clients/@smithy/util-base64/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.2.2", "https://mirrors.cloud.tencent.com/npm/@smithy/util-buffer-from/-/util-buffer-from-4.2.2.tgz", { "dependencies": { "@smithy/is-array-buffer": "^4.2.2", "tslib": "^2.6.2" } }, "sha512-FDXD7cvUoFWwN6vtQfEta540Y/YBe5JneK3SoZg9bThSoOAC/eGeYEua6RkBgKjGa/sz6Y+DuBZj3+YEY21y4Q=="], + + "@aws-sdk/credential-provider-web-identity/@aws-sdk/nested-clients/@aws-crypto/sha256-js/@aws-crypto/util": ["@aws-crypto/util@5.2.0", "https://mirrors.cloud.tencent.com/npm/@aws-crypto/util/-/util-5.2.0.tgz", { "dependencies": { "@aws-sdk/types": "^3.222.0", "@smithy/util-utf8": "^2.0.0", "tslib": "^2.6.2" } }, "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ=="], + + "@aws-sdk/credential-provider-web-identity/@aws-sdk/nested-clients/@smithy/util-base64/@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.2.2", "https://mirrors.cloud.tencent.com/npm/@smithy/util-buffer-from/-/util-buffer-from-4.2.2.tgz", { "dependencies": { "@smithy/is-array-buffer": "^4.2.2", "tslib": "^2.6.2" } }, "sha512-FDXD7cvUoFWwN6vtQfEta540Y/YBe5JneK3SoZg9bThSoOAC/eGeYEua6RkBgKjGa/sz6Y+DuBZj3+YEY21y4Q=="], + + "@aws-sdk/middleware-websocket/@smithy/util-base64/@smithy/util-buffer-from/@smithy/is-array-buffer": ["@smithy/is-array-buffer@4.2.2", "https://mirrors.cloud.tencent.com/npm/@smithy/is-array-buffer/-/is-array-buffer-4.2.2.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-n6rQ4N8Jj4YTQO3YFrlgZuwKodf4zUFs7EJIWH86pSCWBaAtAGBFfCM7Wx6D2bBJ2xqFNxGBSrUWswT3M0VJow=="], + + "@aws-sdk/nested-clients/@aws-crypto/sha256-js/@aws-crypto/util/@smithy/util-utf8": ["@smithy/util-utf8@2.3.0", "https://mirrors.cloud.tencent.com/npm/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", { "dependencies": { "@smithy/util-buffer-from": "^2.2.0", "tslib": "^2.6.2" } }, "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A=="], + + "@aws-sdk/nested-clients/@smithy/util-base64/@smithy/util-buffer-from/@smithy/is-array-buffer": ["@smithy/is-array-buffer@4.2.2", "https://mirrors.cloud.tencent.com/npm/@smithy/is-array-buffer/-/is-array-buffer-4.2.2.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-n6rQ4N8Jj4YTQO3YFrlgZuwKodf4zUFs7EJIWH86pSCWBaAtAGBFfCM7Wx6D2bBJ2xqFNxGBSrUWswT3M0VJow=="], + + "@grpc/proto-loader/yargs/cliui/strip-ansi": ["strip-ansi@6.0.1", "https://mirrors.cloud.tencent.com/npm/strip-ansi/-/strip-ansi-6.0.1.tgz", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], + + "@grpc/proto-loader/yargs/cliui/wrap-ansi": ["wrap-ansi@7.0.0", "", { "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q=="], + + "@grpc/proto-loader/yargs/string-width/emoji-regex": ["emoji-regex@8.0.0", "https://mirrors.cloud.tencent.com/npm/emoji-regex/-/emoji-regex-8.0.0.tgz", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], + + "@grpc/proto-loader/yargs/string-width/is-fullwidth-code-point": ["is-fullwidth-code-point@3.0.0", "https://mirrors.cloud.tencent.com/npm/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", {}, "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="], + + "@grpc/proto-loader/yargs/string-width/strip-ansi": ["strip-ansi@6.0.1", "https://mirrors.cloud.tencent.com/npm/strip-ansi/-/strip-ansi-6.0.1.tgz", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], "@inquirer/core/wrap-ansi/string-width/emoji-regex": ["emoji-regex@8.0.0", "https://mirrors.cloud.tencent.com/npm/emoji-regex/-/emoji-regex-8.0.0.tgz", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], "@inquirer/core/wrap-ansi/string-width/is-fullwidth-code-point": ["is-fullwidth-code-point@3.0.0", "https://mirrors.cloud.tencent.com/npm/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", {}, "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="], + "@smithy/core/@smithy/util-base64/@smithy/util-buffer-from/@smithy/is-array-buffer": ["@smithy/is-array-buffer@4.2.2", "https://mirrors.cloud.tencent.com/npm/@smithy/is-array-buffer/-/is-array-buffer-4.2.2.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-n6rQ4N8Jj4YTQO3YFrlgZuwKodf4zUFs7EJIWH86pSCWBaAtAGBFfCM7Wx6D2bBJ2xqFNxGBSrUWswT3M0VJow=="], + + "@smithy/eventstream-serde-universal/@smithy/eventstream-codec/@aws-crypto/crc32/@aws-crypto/util": ["@aws-crypto/util@3.0.0", "", { "dependencies": { "@aws-sdk/types": "^3.222.0", "@aws-sdk/util-utf8-browser": "^3.0.0", "tslib": "^1.11.1" } }, "sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w=="], + + "@smithy/eventstream-serde-universal/@smithy/eventstream-codec/@aws-crypto/crc32/tslib": ["tslib@1.14.1", "", {}, "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="], + + "@smithy/fetch-http-handler/@smithy/util-base64/@smithy/util-buffer-from/@smithy/is-array-buffer": ["@smithy/is-array-buffer@4.2.2", "https://mirrors.cloud.tencent.com/npm/@smithy/is-array-buffer/-/is-array-buffer-4.2.2.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-n6rQ4N8Jj4YTQO3YFrlgZuwKodf4zUFs7EJIWH86pSCWBaAtAGBFfCM7Wx6D2bBJ2xqFNxGBSrUWswT3M0VJow=="], + + "@smithy/smithy-client/@smithy/middleware-endpoint/@smithy/node-config-provider/@smithy/property-provider": ["@smithy/property-provider@2.2.0", "", { "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" } }, "sha512-+xiil2lFhtTRzXkx8F053AV46QnIw6e7MV8od5Mi68E1ICOjCeCHw2XfLnDEUHnT9WGUIkwcqavXjfwuJbGlpg=="], + + "@smithy/smithy-client/@smithy/middleware-endpoint/@smithy/url-parser/@smithy/querystring-parser": ["@smithy/querystring-parser@2.2.0", "", { "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" } }, "sha512-BvHCDrKfbG5Yhbpj4vsbuPV2GgcpHiAkLeIlcA1LtfpMz3jrqizP1+OguSNSj1MwBHEiN+jwNisXLGdajGDQJA=="], + + "@smithy/smithy-client/@smithy/util-stream/@smithy/fetch-http-handler/@smithy/querystring-builder": ["@smithy/querystring-builder@2.2.0", "", { "dependencies": { "@smithy/types": "^2.12.0", "@smithy/util-uri-escape": "^2.2.0", "tslib": "^2.6.2" } }, "sha512-L1kSeviUWL+emq3CUVSgdogoM/D9QMFaqxL/dd0X7PCNWmPXqt+ExtrBjqT0V7HLN03Vs9SuiLrG3zy3JGnE5A=="], + + "@smithy/smithy-client/@smithy/util-stream/@smithy/node-http-handler/@smithy/querystring-builder": ["@smithy/querystring-builder@2.2.0", "", { "dependencies": { "@smithy/types": "^2.12.0", "@smithy/util-uri-escape": "^2.2.0", "tslib": "^2.6.2" } }, "sha512-L1kSeviUWL+emq3CUVSgdogoM/D9QMFaqxL/dd0X7PCNWmPXqt+ExtrBjqT0V7HLN03Vs9SuiLrG3zy3JGnE5A=="], + + "cli-highlight/chalk/supports-color/has-flag": ["has-flag@4.0.0", "", {}, "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="], + + "gtoken/gaxios/https-proxy-agent/agent-base": ["agent-base@7.1.4", "https://mirrors.cloud.tencent.com/npm/agent-base/-/agent-base-7.1.4.tgz", {}, "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ=="], + + "qrcode/yargs/cliui/strip-ansi": ["strip-ansi@6.0.1", "https://mirrors.cloud.tencent.com/npm/strip-ansi/-/strip-ansi-6.0.1.tgz", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], + + "qrcode/yargs/cliui/wrap-ansi": ["wrap-ansi@6.2.0", "https://mirrors.cloud.tencent.com/npm/wrap-ansi/-/wrap-ansi-6.2.0.tgz", { "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA=="], + + "qrcode/yargs/string-width/emoji-regex": ["emoji-regex@8.0.0", "https://mirrors.cloud.tencent.com/npm/emoji-regex/-/emoji-regex-8.0.0.tgz", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], + + "qrcode/yargs/string-width/is-fullwidth-code-point": ["is-fullwidth-code-point@3.0.0", "https://mirrors.cloud.tencent.com/npm/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", {}, "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="], + + "qrcode/yargs/string-width/strip-ansi": ["strip-ansi@6.0.1", "https://mirrors.cloud.tencent.com/npm/strip-ansi/-/strip-ansi-6.0.1.tgz", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], + "yargs/string-width/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "https://mirrors.cloud.tencent.com/npm/ansi-regex/-/ansi-regex-5.0.1.tgz", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], + + "@anthropic-ai/vertex-sdk/google-auth-library/gaxios/https-proxy-agent/agent-base": ["agent-base@7.1.4", "https://mirrors.cloud.tencent.com/npm/agent-base/-/agent-base-7.1.4.tgz", {}, "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ=="], + + "@aws-sdk/credential-provider-ini/@aws-sdk/nested-clients/@aws-crypto/sha256-js/@aws-crypto/util/@smithy/util-utf8": ["@smithy/util-utf8@2.3.0", "https://mirrors.cloud.tencent.com/npm/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", { "dependencies": { "@smithy/util-buffer-from": "^2.2.0", "tslib": "^2.6.2" } }, "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A=="], + + "@aws-sdk/credential-provider-ini/@aws-sdk/nested-clients/@smithy/util-base64/@smithy/util-buffer-from/@smithy/is-array-buffer": ["@smithy/is-array-buffer@4.2.2", "https://mirrors.cloud.tencent.com/npm/@smithy/is-array-buffer/-/is-array-buffer-4.2.2.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-n6rQ4N8Jj4YTQO3YFrlgZuwKodf4zUFs7EJIWH86pSCWBaAtAGBFfCM7Wx6D2bBJ2xqFNxGBSrUWswT3M0VJow=="], + + "@aws-sdk/credential-provider-sso/@aws-sdk/nested-clients/@aws-crypto/sha256-js/@aws-crypto/util/@smithy/util-utf8": ["@smithy/util-utf8@2.3.0", "https://mirrors.cloud.tencent.com/npm/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", { "dependencies": { "@smithy/util-buffer-from": "^2.2.0", "tslib": "^2.6.2" } }, "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A=="], + + "@aws-sdk/credential-provider-sso/@aws-sdk/nested-clients/@smithy/util-base64/@smithy/util-buffer-from/@smithy/is-array-buffer": ["@smithy/is-array-buffer@4.2.2", "https://mirrors.cloud.tencent.com/npm/@smithy/is-array-buffer/-/is-array-buffer-4.2.2.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-n6rQ4N8Jj4YTQO3YFrlgZuwKodf4zUFs7EJIWH86pSCWBaAtAGBFfCM7Wx6D2bBJ2xqFNxGBSrUWswT3M0VJow=="], + + "@aws-sdk/credential-provider-web-identity/@aws-sdk/nested-clients/@aws-crypto/sha256-js/@aws-crypto/util/@smithy/util-utf8": ["@smithy/util-utf8@2.3.0", "https://mirrors.cloud.tencent.com/npm/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", { "dependencies": { "@smithy/util-buffer-from": "^2.2.0", "tslib": "^2.6.2" } }, "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A=="], + + "@aws-sdk/credential-provider-web-identity/@aws-sdk/nested-clients/@smithy/util-base64/@smithy/util-buffer-from/@smithy/is-array-buffer": ["@smithy/is-array-buffer@4.2.2", "https://mirrors.cloud.tencent.com/npm/@smithy/is-array-buffer/-/is-array-buffer-4.2.2.tgz", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-n6rQ4N8Jj4YTQO3YFrlgZuwKodf4zUFs7EJIWH86pSCWBaAtAGBFfCM7Wx6D2bBJ2xqFNxGBSrUWswT3M0VJow=="], + + "@grpc/proto-loader/yargs/cliui/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "https://mirrors.cloud.tencent.com/npm/ansi-regex/-/ansi-regex-5.0.1.tgz", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], + + "@grpc/proto-loader/yargs/cliui/wrap-ansi/ansi-styles": ["ansi-styles@4.3.0", "https://mirrors.cloud.tencent.com/npm/ansi-styles/-/ansi-styles-4.3.0.tgz", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], + + "@grpc/proto-loader/yargs/string-width/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "https://mirrors.cloud.tencent.com/npm/ansi-regex/-/ansi-regex-5.0.1.tgz", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], + + "@smithy/smithy-client/@smithy/util-stream/@smithy/fetch-http-handler/@smithy/querystring-builder/@smithy/util-uri-escape": ["@smithy/util-uri-escape@2.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-jtmJMyt1xMD/d8OtbVJ2gFZOSKc+ueYJZPW20ULW1GOp/q/YIM0wNh+u8ZFao9UaIGz4WoPW8hC64qlWLIfoDA=="], + + "@smithy/smithy-client/@smithy/util-stream/@smithy/node-http-handler/@smithy/querystring-builder/@smithy/util-uri-escape": ["@smithy/util-uri-escape@2.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-jtmJMyt1xMD/d8OtbVJ2gFZOSKc+ueYJZPW20ULW1GOp/q/YIM0wNh+u8ZFao9UaIGz4WoPW8hC64qlWLIfoDA=="], + + "qrcode/yargs/cliui/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "https://mirrors.cloud.tencent.com/npm/ansi-regex/-/ansi-regex-5.0.1.tgz", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], + + "qrcode/yargs/cliui/wrap-ansi/ansi-styles": ["ansi-styles@4.3.0", "https://mirrors.cloud.tencent.com/npm/ansi-styles/-/ansi-styles-4.3.0.tgz", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], + + "qrcode/yargs/string-width/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "https://mirrors.cloud.tencent.com/npm/ansi-regex/-/ansi-regex-5.0.1.tgz", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], } } diff --git a/package.json b/package.json index 672f67db..9dd957bf 100644 --- a/package.json +++ b/package.json @@ -27,34 +27,58 @@ "@ant/computer-use-mcp": "file:./shims/ant-computer-use-mcp", "@ant/computer-use-swift": "file:./shims/ant-computer-use-swift", "@anthropic-ai/claude-agent-sdk": "*", + "@anthropic-ai/bedrock-sdk": "*", + "@anthropic-ai/foundry-sdk": "*", "@anthropic-ai/mcpb": "*", "@anthropic-ai/sandbox-runtime": "*", "@anthropic-ai/sdk": "*", + "@anthropic-ai/vertex-sdk": "*", + "@aws-sdk/client-bedrock": "*", "@aws-sdk/client-bedrock-runtime": "*", + "@aws-sdk/client-sts": "*", + "@aws-sdk/credential-provider-node": "*", + "@aws-sdk/credential-providers": "*", + "@azure/identity": "*", "@commander-js/extra-typings": "*", "@growthbook/growthbook": "*", "@modelcontextprotocol/sdk": "*", "@opentelemetry/api": "*", "@opentelemetry/api-logs": "*", "@opentelemetry/core": "*", + "@opentelemetry/exporter-logs-otlp-grpc": "*", + "@opentelemetry/exporter-logs-otlp-http": "*", + "@opentelemetry/exporter-logs-otlp-proto": "*", + "@opentelemetry/exporter-metrics-otlp-grpc": "*", + "@opentelemetry/exporter-metrics-otlp-http": "*", + "@opentelemetry/exporter-metrics-otlp-proto": "*", + "@opentelemetry/exporter-prometheus": "*", + "@opentelemetry/exporter-trace-otlp-grpc": "*", + "@opentelemetry/exporter-trace-otlp-http": "*", + "@opentelemetry/exporter-trace-otlp-proto": "*", "@opentelemetry/resources": "*", "@opentelemetry/sdk-logs": "*", "@opentelemetry/sdk-metrics": "*", "@opentelemetry/sdk-trace-base": "*", "@opentelemetry/semantic-conventions": "*", + "@smithy/core": "*", + "@smithy/node-http-handler": "*", "ajv": "*", "asciichart": "*", + "audio-capture-napi": "file:./shims/audio-capture-napi", "auto-bind": "*", "axios": "*", "bidi-js": "*", + "cacache": "*", "chalk": "*", "chokidar": "*", + "cli-highlight": "*", "cli-boxes": "*", "code-excerpt": "*", "diff": "*", "emoji-regex": "*", "env-paths": "*", "execa": "*", + "fflate": "*", "figures": "*", "fuse.js": "*", "get-east-asian-width": "*", @@ -64,23 +88,27 @@ "ignore": "*", "indent-string": "*", "ink": "*", + "image-processor-napi": "file:./shims/image-processor-napi", "jsonc-parser": "*", "lodash-es": "*", "lru-cache": "*", "marked": "*", "p-map": "*", "picomatch": "*", + "plist": "*", "proper-lockfile": "*", "qrcode": "*", "react": "*", "react-reconciler": "*", "semver": "*", + "sharp": "*", "shell-quote": "*", "signal-exit": "*", "stack-utils": "*", "strip-ansi": "*", "supports-hyperlinks": "*", "tree-kill": "*", + "turndown": "*", "type-fest": "*", "undici": "*", "usehooks-ts": "*", diff --git a/shims/audio-capture-napi/index.ts b/shims/audio-capture-napi/index.ts new file mode 100644 index 00000000..39e3f44a --- /dev/null +++ b/shims/audio-capture-napi/index.ts @@ -0,0 +1,11 @@ +export { + isNativeAudioAvailable, + isNativePlaying, + isNativeRecordingActive, + microphoneAuthorizationStatus, + startNativePlayback, + startNativeRecording, + stopNativePlayback, + stopNativeRecording, + writeNativePlaybackData, +} from '../../vendor/audio-capture-src/index.ts' diff --git a/shims/audio-capture-napi/package.json b/shims/audio-capture-napi/package.json new file mode 100644 index 00000000..afc4d7b4 --- /dev/null +++ b/shims/audio-capture-napi/package.json @@ -0,0 +1,6 @@ +{ + "name": "audio-capture-napi", + "version": "0.0.0-restored", + "type": "module", + "main": "./index.ts" +} diff --git a/shims/image-processor-napi/index.ts b/shims/image-processor-napi/index.ts new file mode 100644 index 00000000..d47d9361 --- /dev/null +++ b/shims/image-processor-napi/index.ts @@ -0,0 +1,2 @@ +export { default, getNativeModule, sharp } from '../../vendor/image-processor-src/index.ts' +export type { ClipboardImageResult, NativeModule } from '../../vendor/image-processor-src/index.ts' diff --git a/shims/image-processor-napi/package.json b/shims/image-processor-napi/package.json new file mode 100644 index 00000000..e50714cc --- /dev/null +++ b/shims/image-processor-napi/package.json @@ -0,0 +1,6 @@ +{ + "name": "image-processor-napi", + "version": "0.0.0-restored", + "type": "module", + "main": "./index.ts" +} diff --git a/src/cli/handlers/auth.ts b/src/cli/handlers/auth.ts index c4cba5d0..ce1c8fe5 100644 --- a/src/cli/handlers/auth.ts +++ b/src/cli/handlers/auth.ts @@ -36,6 +36,10 @@ import { isRunningOnHomespace } from '../../utils/envUtils.js' import { errorMessage } from '../../utils/errors.js' import { logError } from '../../utils/log.js' import { getAPIProvider } from '../../utils/model/providers.js' +import { + getActiveProviderConfig, + getProviderDisplayName, +} from '../../utils/model/providerConfig.js' import { getInitialSettings } from '../../utils/settings/settings.js' import { jsonStringify } from '../../utils/slowOperations.js' import { @@ -249,6 +253,8 @@ export async function authStatus(opts: { authMethod = 'third_party' } else if (authTokenSource === 'claude.ai') { authMethod = 'claude.ai' + } else if (authTokenSource === 'providerAuthToken') { + authMethod = 'provider_token' } else if (authTokenSource === 'apiKeyHelper') { authMethod = 'api_key_helper' } else if (authTokenSource !== 'none') { @@ -292,6 +298,8 @@ export async function authStatus(opts: { } } else { const apiProvider = getAPIProvider() + const activeProvider = getActiveProviderConfig() + const providerName = getProviderDisplayName() const resolvedApiKeySource = apiKeySource !== 'none' ? apiKeySource @@ -303,6 +311,10 @@ export async function authStatus(opts: { authMethod, apiProvider, } + if (activeProvider.id !== apiProvider || providerName !== 'Anthropic') { + output.providerId = activeProvider.id + output.providerName = providerName + } if (resolvedApiKeySource) { output.apiKeySource = resolvedApiKeySource } diff --git a/src/cli/print.ts b/src/cli/print.ts index 60472575..a84688fa 100644 --- a/src/cli/print.ts +++ b/src/cli/print.ts @@ -1217,7 +1217,12 @@ function runHeadlessStreaming( ...(hasAutoMode && { supportsAutoMode: true }), } }) - let activeUserSpecifiedModel = options.userSpecifiedModel + let activeUserSpecifiedModel = + options.userSpecifiedModel ?? getDefaultMainLoopModel() + + if (!options.userSpecifiedModel) { + setMainLoopModelOverride(activeUserSpecifiedModel) + } function injectModelSwitchBreadcrumbs( modelArg: string, diff --git a/src/services/api/client.ts b/src/services/api/client.ts index 8c1feb69..e86b0b70 100644 --- a/src/services/api/client.ts +++ b/src/services/api/client.ts @@ -1,6 +1,7 @@ import Anthropic, { type ClientOptions } from '@anthropic-ai/sdk' import { randomUUID } from 'crypto' import type { GoogleAuth } from 'google-auth-library' +import { createOpenAICompatibleClient } from 'src/services/api/openaiCompatibleClient.js' import { checkAndRefreshOAuthTokenIfNeeded, getAnthropicApiKey, @@ -11,6 +12,12 @@ import { refreshGcpCredentialsIfNeeded, } from 'src/utils/auth.js' import { getUserAgent } from 'src/utils/http.js' +import { + getActiveProviderConfig, + getConfiguredAnthropicBaseUrl, + getConfiguredProviderApiKey, + getConfiguredProviderAuthToken, +} from 'src/utils/model/providerConfig.js' import { getSmallFastModel } from 'src/utils/model/model.js' import { getAPIProvider, @@ -85,6 +92,14 @@ function createStderrLogger(): ClientOptions['logger'] { } } +function isOpenAICompatibleProviderType(providerType: string | undefined): boolean { + return ( + providerType === 'openai-compatible' || + providerType === 'github-models' || + providerType === 'github-copilot' + ) +} + export async function getAnthropicClient({ apiKey, maxRetries, @@ -98,6 +113,11 @@ export async function getAnthropicClient({ fetchOverride?: ClientOptions['fetch'] source?: string }): Promise { + const apiProvider = getAPIProvider() + const activeProvider = getActiveProviderConfig() + const isOpenAICompatibleProvider = isOpenAICompatibleProviderType( + activeProvider.type, + ) const containerId = process.env.CLAUDE_CODE_CONTAINER_ID const remoteSessionId = process.env.CLAUDE_CODE_REMOTE_SESSION_ID const clientApp = process.env.CLAUDE_AGENT_SDK_CLIENT_APP @@ -144,13 +164,32 @@ export async function getAnthropicClient({ timeout: parseInt(process.env.API_TIMEOUT_MS || String(600 * 1000), 10), dangerouslyAllowBrowser: true, fetchOptions: getProxyFetchOptions({ - forAnthropicAPI: true, + forAnthropicAPI: !isOpenAICompatibleProvider, }) as ClientOptions['fetchOptions'], ...(resolvedFetch && { fetch: resolvedFetch, }), } - if (isEnvTruthy(process.env.CLAUDE_CODE_USE_BEDROCK)) { + if (isOpenAICompatibleProvider) { + const authToken = + getConfiguredProviderAuthToken() || apiKey || getConfiguredProviderApiKey() + + return createOpenAICompatibleClient({ + providerType: activeProvider.type, + baseURL: activeProvider.baseURL, + apiKey: authToken, + authToken, + defaultHeaders, + maxRetries, + timeout: ARGS.timeout, + dangerouslyAllowBrowser: ARGS.dangerouslyAllowBrowser, + fetchOptions: ARGS.fetchOptions, + ...(resolvedFetch && { + fetch: resolvedFetch, + }), + } as any) as Anthropic + } + if (apiProvider === 'bedrock') { const { AnthropicBedrock } = await import('@anthropic-ai/bedrock-sdk') // Use region override for small fast model if specified const awsRegion = @@ -188,7 +227,7 @@ export async function getAnthropicClient({ // we have always been lying about the return type - this doesn't support batching or models return new AnthropicBedrock(bedrockArgs) as unknown as Anthropic } - if (isEnvTruthy(process.env.CLAUDE_CODE_USE_FOUNDRY)) { + if (apiProvider === 'foundry') { const { AnthropicFoundry } = await import('@anthropic-ai/foundry-sdk') // Determine Azure AD token provider based on configuration // SDK reads ANTHROPIC_FOUNDRY_API_KEY by default @@ -218,7 +257,7 @@ export async function getAnthropicClient({ // we have always been lying about the return type - this doesn't support batching or models return new AnthropicFoundry(foundryArgs) as unknown as Anthropic } - if (isEnvTruthy(process.env.CLAUDE_CODE_USE_VERTEX)) { + if (apiProvider === 'vertex') { // Refresh GCP credentials if gcpAuthRefresh is configured and credentials are expired // This is similar to how we handle AWS credential refresh for Bedrock if (!isEnvTruthy(process.env.CLAUDE_CODE_SKIP_VERTEX_AUTH)) { @@ -298,8 +337,11 @@ export async function getAnthropicClient({ } // Determine authentication method based on available tokens + const configuredBaseUrl = getConfiguredAnthropicBaseUrl() const clientConfig: ConstructorParameters[0] = { - apiKey: isClaudeAISubscriber() ? null : apiKey || getAnthropicApiKey(), + apiKey: isClaudeAISubscriber() + ? null + : apiKey || getAnthropicApiKey() || getConfiguredProviderApiKey(), authToken: isClaudeAISubscriber() ? getClaudeAIOAuthTokens()?.accessToken : undefined, @@ -308,6 +350,7 @@ export async function getAnthropicClient({ isEnvTruthy(process.env.USE_STAGING_OAUTH) ? { baseURL: getOauthConfig().BASE_API_URL } : {}), + ...(configuredBaseUrl ? { baseURL: configuredBaseUrl } : {}), ...ARGS, ...(isDebugToStdErr() && { logger: createStderrLogger() }), } @@ -319,7 +362,12 @@ async function configureApiKeyHeaders( headers: Record, isNonInteractiveSession: boolean, ): Promise { + const activeProvider = getActiveProviderConfig() const token = + getConfiguredProviderAuthToken() || + (isOpenAICompatibleProviderType(activeProvider.type) + ? getConfiguredProviderApiKey() + : undefined) || process.env.ANTHROPIC_AUTH_TOKEN || (await getApiKeyFromApiKeyHelper(isNonInteractiveSession)) if (token) { diff --git a/src/services/api/openaiCompatibleClient.ts b/src/services/api/openaiCompatibleClient.ts new file mode 100644 index 00000000..27ffd084 --- /dev/null +++ b/src/services/api/openaiCompatibleClient.ts @@ -0,0 +1,867 @@ +import type { ClientOptions } from '@anthropic-ai/sdk' +import { + APIConnectionError, + APIConnectionTimeoutError, + APIError, + APIUserAbortError, +} from '@anthropic-ai/sdk/error' + +type OpenAICompatibleProviderType = + | 'openai-compatible' + | 'github-models' + | 'github-copilot' + +type OpenAICompatibleClientOptions = { + providerType: OpenAICompatibleProviderType + baseURL?: string + authToken?: string + defaultHeaders?: Record + timeout?: number + fetch?: ClientOptions['fetch'] + fetchOptions?: ClientOptions['fetchOptions'] +} + +type RequestOptions = { + headers?: Record + signal?: AbortSignal + timeout?: number +} + +type OpenAIChatCompletionChunk = { + id?: string + model?: string + choices?: Array<{ + delta?: { + role?: string + content?: string | null + tool_calls?: Array<{ + index?: number + id?: string + function?: { + name?: string + arguments?: string + } + }> + } + finish_reason?: string | null + }> + usage?: { + prompt_tokens?: number + completion_tokens?: number + } +} + +type OpenAIChatCompletionResponse = { + id?: string + model?: string + choices?: Array<{ + message?: { + role?: string + content?: string | null + tool_calls?: Array<{ + id?: string + function?: { + name?: string + arguments?: string + } + }> + } + finish_reason?: string | null + }> + usage?: { + prompt_tokens?: number + completion_tokens?: number + } +} + +type ResponseEnvelope = { + data: T + request_id: string | null + response: Response +} + +type PromiseWithResponse = Promise & { + asResponse: () => Promise + withResponse: () => Promise> +} + +type OpenBlock = + | { + kind: 'text' + index: number + closed: boolean + } + | { + kind: 'tool_use' + index: number + sourceIndex: number + id: string + name: string + closed: boolean + } + +function getDefaultBaseUrl(providerType: OpenAICompatibleProviderType): string { + if (providerType === 'github-models') { + return 'https://models.github.ai/inference' + } + if (providerType === 'github-copilot') { + return 'https://api.githubcopilot.com' + } + return 'https://api.openai.com/v1' +} + +function joinUrl(baseUrl: string, path: string): string { + const url = new URL(baseUrl.endsWith('/') ? baseUrl : `${baseUrl}/`) + url.pathname = `${url.pathname.replace(/\/?$/, '/')}${path}`.replace( + /\/+/g, + '/', + ) + return url.toString() +} + +function getRequestId(headers: Headers): null | string { + return ( + headers.get('x-request-id') || + headers.get('request-id') || + headers.get('x-github-request-id') || + null + ) +} + +function toAnthropicUsage(usage?: { + prompt_tokens?: number + completion_tokens?: number +}): { + input_tokens: number + output_tokens: number + cache_creation_input_tokens: number + cache_read_input_tokens: number +} { + return { + input_tokens: usage?.prompt_tokens ?? 0, + output_tokens: usage?.completion_tokens ?? 0, + cache_creation_input_tokens: 0, + cache_read_input_tokens: 0, + } +} + +function mapFinishReason(finishReason: null | string | undefined): null | string { + switch (finishReason) { + case 'tool_calls': + case 'function_call': + return 'tool_use' + case 'length': + return 'max_tokens' + case 'content_filter': + return 'refusal' + case 'stop': + return 'end_turn' + default: + return null + } +} + +function parseJsonObject(value: string | undefined): unknown { + if (!value) return {} + try { + return JSON.parse(value) + } catch { + return {} + } +} + +function flattenToolResultContent(content: unknown): string { + if (typeof content === 'string') { + return content + } + if (!Array.isArray(content)) { + return JSON.stringify(content ?? '') + } + return content + .map(block => { + if (typeof block === 'string') return block + if (!block || typeof block !== 'object') return JSON.stringify(block) + if ('text' in block && typeof block.text === 'string') return block.text + if ('type' in block && block.type === 'image') { + return '[image omitted]' + } + if ('type' in block && block.type === 'document') { + return '[document omitted]' + } + return JSON.stringify(block) + }) + .join('\n') +} + +function flattenSystemPrompt(system: unknown): string | undefined { + if (!Array.isArray(system)) { + return typeof system === 'string' && system.length > 0 ? system : undefined + } + const text = system + .map(block => { + if (!block || typeof block !== 'object') return '' + return 'text' in block && typeof block.text === 'string' ? block.text : '' + }) + .filter(Boolean) + .join('\n\n') + return text.length > 0 ? text : undefined +} + +function anthropicMessagesToOpenAI( + system: unknown, + messages: unknown, +): Array> { + const out: Array> = [] + const systemPrompt = flattenSystemPrompt(system) + if (systemPrompt) { + out.push({ role: 'system', content: systemPrompt }) + } + + if (!Array.isArray(messages)) { + return out + } + + for (const rawMessage of messages) { + if (!rawMessage || typeof rawMessage !== 'object') continue + const message = rawMessage as Record + const role = message.role === 'assistant' ? 'assistant' : 'user' + const content = message.content + + if (typeof content === 'string') { + out.push({ role, content }) + continue + } + + if (!Array.isArray(content)) { + out.push({ role, content: JSON.stringify(content ?? '') }) + continue + } + + if (role === 'assistant') { + const textParts: string[] = [] + const toolCalls: Array> = [] + for (const block of content) { + if (!block || typeof block !== 'object') continue + const typedBlock = block as Record + if (typedBlock.type === 'text' && typeof typedBlock.text === 'string') { + textParts.push(typedBlock.text) + continue + } + if (typedBlock.type === 'tool_use') { + toolCalls.push({ + id: + typeof typedBlock.id === 'string' + ? typedBlock.id + : `toolu_${Math.random().toString(36).slice(2, 10)}`, + type: 'function', + function: { + name: String(typedBlock.name ?? ''), + arguments: + typeof typedBlock.input === 'string' + ? typedBlock.input + : JSON.stringify(typedBlock.input ?? {}), + }, + }) + } + } + if (textParts.length > 0 || toolCalls.length > 0) { + out.push({ + role: 'assistant', + content: textParts.length > 0 ? textParts.join('\n') : null, + ...(toolCalls.length > 0 && { tool_calls: toolCalls }), + }) + } + continue + } + + let pendingUserText: string[] = [] + const flushPendingUserText = () => { + if (pendingUserText.length === 0) return + out.push({ role: 'user', content: pendingUserText.join('\n') }) + pendingUserText = [] + } + + for (const block of content) { + if (!block || typeof block !== 'object') continue + const typedBlock = block as Record + switch (typedBlock.type) { + case 'text': + if (typeof typedBlock.text === 'string') { + pendingUserText.push(typedBlock.text) + } + break + case 'tool_result': + flushPendingUserText() + out.push({ + role: 'tool', + tool_call_id: String(typedBlock.tool_use_id ?? ''), + content: flattenToolResultContent(typedBlock.content), + }) + break + case 'image': { + const source = + typedBlock.source && typeof typedBlock.source === 'object' + ? (typedBlock.source as Record) + : null + if ( + source?.type === 'base64' && + typeof source.data === 'string' && + typeof source.media_type === 'string' + ) { + flushPendingUserText() + out.push({ + role: 'user', + content: [ + { + type: 'image_url', + image_url: { + url: `data:${source.media_type};base64,${source.data}`, + }, + }, + ], + }) + } else { + pendingUserText.push('[image omitted]') + } + break + } + case 'document': + pendingUserText.push('[document omitted]') + break + default: + pendingUserText.push(JSON.stringify(typedBlock)) + break + } + } + flushPendingUserText() + } + + return out +} + +function anthropicToolsToOpenAI(tools: unknown): Array> | undefined { + if (!Array.isArray(tools)) return undefined + const mapped = tools + .flatMap(tool => { + if (!tool || typeof tool !== 'object') return [] + const typedTool = tool as Record + if ( + typeof typedTool.name !== 'string' || + typeof typedTool.description !== 'string' || + !typedTool.input_schema + ) { + return [] + } + return [ + { + type: 'function', + function: { + name: typedTool.name, + description: typedTool.description, + parameters: typedTool.input_schema, + ...(typedTool.strict === true && { strict: true }), + }, + }, + ] + }) + return mapped.length > 0 ? mapped : undefined +} + +function anthropicToolChoiceToOpenAI(toolChoice: unknown): unknown { + if (!toolChoice || typeof toolChoice !== 'object') return undefined + const typedToolChoice = toolChoice as Record + if (typedToolChoice.type === 'auto') return 'auto' + if (typedToolChoice.type === 'tool' && typeof typedToolChoice.name === 'string') { + return { + type: 'function', + function: { name: typedToolChoice.name }, + } + } + return undefined +} + +function openAIMessageToAnthropicContent(message: { + content?: null | string + tool_calls?: Array<{ + id?: string + function?: { + name?: string + arguments?: string + } + }> +}): Array> { + const content: Array> = [] + if (typeof message.content === 'string' && message.content.length > 0) { + content.push({ type: 'text', text: message.content }) + } + for (const toolCall of message.tool_calls ?? []) { + content.push({ + type: 'tool_use', + id: + typeof toolCall.id === 'string' + ? toolCall.id + : `toolu_${Math.random().toString(36).slice(2, 10)}`, + name: toolCall.function?.name ?? '', + input: parseJsonObject(toolCall.function?.arguments), + }) + } + if (content.length === 0) { + content.push({ type: 'text', text: '' }) + } + return content +} + +function openAIResponseToAnthropicMessage( + response: OpenAIChatCompletionResponse, + model: string, + requestId: null | string, +) { + const choice = response.choices?.[0] + const message = choice?.message ?? {} + const hasToolCalls = (message.tool_calls?.length ?? 0) > 0 + const mappedStopReason = mapFinishReason(choice?.finish_reason) + const anthropicMessage = { + id: response.id ?? `msg_${Math.random().toString(36).slice(2, 10)}`, + type: 'message', + role: 'assistant', + model: response.model ?? model, + content: openAIMessageToAnthropicContent(message), + stop_reason: + hasToolCalls && (mappedStopReason === null || mappedStopReason === 'end_turn') + ? 'tool_use' + : mappedStopReason, + stop_sequence: null, + usage: toAnthropicUsage(response.usage), + _request_id: requestId ?? undefined, + } + return anthropicMessage +} + +function parseJsonOrText(text: string): unknown { + if (!text) return undefined + try { + return JSON.parse(text) + } catch { + return { message: text } + } +} + +async function* parseServerSentEvents(response: Response) { + const body = response.body + if (!body) { + throw new APIConnectionError({ message: 'Missing streaming response body.' }) + } + const reader = body.getReader() + const decoder = new TextDecoder() + let buffer = '' + while (true) { + const { done, value } = await reader.read() + if (done) break + buffer += decoder.decode(value, { stream: true }) + while (true) { + const separatorIndex = buffer.indexOf('\n\n') + if (separatorIndex === -1) break + const rawEvent = buffer.slice(0, separatorIndex) + buffer = buffer.slice(separatorIndex + 2) + const data = rawEvent + .split(/\r?\n/) + .filter(line => line.startsWith('data:')) + .map(line => line.slice(5).trimStart()) + .join('\n') + if (!data) continue + if (data === '[DONE]') return + yield JSON.parse(data) as OpenAIChatCompletionChunk + } + } + const trailing = buffer.trim() + if (!trailing) return + const trailingData = trailing + .split(/\r?\n/) + .filter(line => line.startsWith('data:')) + .map(line => line.slice(5).trimStart()) + .join('\n') + if (trailingData && trailingData !== '[DONE]') { + yield JSON.parse(trailingData) as OpenAIChatCompletionChunk + } +} + +function createOpenAIEventStream( + response: Response, + model: string, +): AsyncIterable & { controller: AbortController } { + const controller = new AbortController() + + const iterable = (async function* () { + const requestId = getRequestId(response.headers) + const usage = toAnthropicUsage() + const openBlocks: OpenBlock[] = [] + let nextIndex = 0 + let emittedMessageStart = false + let responseId: string | undefined + let responseModel: string | undefined + let finishReason: null | string | undefined = null + let sawToolUse = false + + const ensureMessageStart = () => { + if (emittedMessageStart) return + emittedMessageStart = true + return { + type: 'message_start', + message: { + id: responseId ?? `msg_${Math.random().toString(36).slice(2, 10)}`, + type: 'message', + role: 'assistant', + model: responseModel ?? model, + content: [], + stop_reason: null, + stop_sequence: null, + usage, + }, + } + } + + const getTextBlock = () => { + const existing = openBlocks.find(block => block.kind === 'text') + if (existing) return existing + const created: OpenBlock = { + kind: 'text', + index: nextIndex++, + closed: false, + } + openBlocks.push(created) + return created + } + + const getToolBlock = (toolIndex: number, id?: string, name?: string) => { + const existing = openBlocks.find( + block => block.kind === 'tool_use' && block.sourceIndex === toolIndex, + ) + if (existing && existing.kind === 'tool_use') { + if (name) existing.name = name + if (id) existing.id = id + return existing + } + const created: OpenBlock = { + kind: 'tool_use', + index: nextIndex++, + sourceIndex: toolIndex, + id: id ?? `toolu_${Math.random().toString(36).slice(2, 10)}`, + name: name ?? '', + closed: false, + } + openBlocks.push(created) + return created + } + + const closeOpenBlocks = function* () { + for (const block of [...openBlocks].sort((a, b) => a.index - b.index)) { + if (block.closed) continue + block.closed = true + yield { + type: 'content_block_stop', + index: block.index, + } + } + } + + for await (const chunk of parseServerSentEvents(response)) { + if (!responseId && chunk.id) { + responseId = chunk.id + } + if (!responseModel && chunk.model) { + responseModel = chunk.model + } + if (chunk.usage) { + usage.input_tokens = chunk.usage.prompt_tokens ?? usage.input_tokens + usage.output_tokens = + chunk.usage.completion_tokens ?? usage.output_tokens + } + const startEvent = ensureMessageStart() + if (startEvent) { + yield startEvent + } + + const choice = chunk.choices?.[0] + if (!choice) continue + const delta = choice.delta ?? {} + finishReason = choice.finish_reason ?? finishReason + + if (typeof delta.content === 'string' && delta.content.length > 0) { + const block = getTextBlock() + if (!block.closed && !('started' in (block as Record))) { + ;(block as Record).started = true + yield { + type: 'content_block_start', + index: block.index, + content_block: { + type: 'text', + text: '', + }, + } + } + yield { + type: 'content_block_delta', + index: block.index, + delta: { + type: 'text_delta', + text: delta.content, + }, + } + } + + for (const toolCall of delta.tool_calls ?? []) { + sawToolUse = true + const toolIndex = + typeof toolCall.index === 'number' ? toolCall.index : nextIndex + const block = getToolBlock( + toolIndex, + toolCall.id, + toolCall.function?.name, + ) + if ( + !block.closed && + !('started' in (block as Record)) && + block.name.length > 0 + ) { + ;(block as Record).started = true + yield { + type: 'content_block_start', + index: block.index, + content_block: { + type: 'tool_use', + id: block.id, + name: block.name, + input: '', + }, + } + } + if ( + typeof toolCall.function?.arguments === 'string' && + toolCall.function.arguments.length > 0 + ) { + if (!('started' in (block as Record))) { + ;(block as Record).started = true + yield { + type: 'content_block_start', + index: block.index, + content_block: { + type: 'tool_use', + id: block.id, + name: block.name, + input: '', + }, + } + } + yield { + type: 'content_block_delta', + index: block.index, + delta: { + type: 'input_json_delta', + partial_json: toolCall.function.arguments, + }, + } + } + } + + if (finishReason) { + yield* closeOpenBlocks() + } + } + + if (!emittedMessageStart) { + yield { + type: 'message_start', + message: { + id: `msg_${Math.random().toString(36).slice(2, 10)}`, + type: 'message', + role: 'assistant', + model, + content: [], + stop_reason: null, + stop_sequence: null, + usage, + }, + } + } + + yield* closeOpenBlocks() + const mappedStopReason = mapFinishReason(finishReason) + yield { + type: 'message_delta', + delta: { + stop_reason: + sawToolUse && (mappedStopReason === null || mappedStopReason === 'end_turn') + ? 'tool_use' + : mappedStopReason, + }, + usage, + } + yield { type: 'message_stop' } + })() + + return Object.assign(iterable, { controller }) +} + +async function requestJson( + fetchFn: typeof fetch, + url: string, + init: RequestInit, +): Promise { + try { + return await fetchFn(url, init) + } catch (error) { + if (init.signal?.aborted) { + throw new APIUserAbortError() + } + if (error instanceof Error && error.name === 'TimeoutError') { + throw new APIConnectionTimeoutError({ message: error.message }) + } + throw new APIConnectionError({ + message: error instanceof Error ? error.message : 'Connection error.', + cause: error instanceof Error ? error : undefined, + }) + } +} + +function buildHeaders( + providerType: OpenAICompatibleProviderType, + authToken: string | undefined, + defaultHeaders: Record, + extraHeaders?: Record, +): Headers { + const headers = new Headers({ + ...defaultHeaders, + 'content-type': 'application/json', + ...(providerType === 'github-models' + ? { + Accept: 'application/vnd.github+json', + 'X-GitHub-Api-Version': '2022-11-28', + } + : providerType === 'github-copilot' + ? { + Accept: 'application/json', + 'Editor-Version': `claude-code/${MACRO.VERSION}`, + 'Editor-Plugin-Version': `claude-code/${MACRO.VERSION}`, + } + : {}), + ...(extraHeaders ?? {}), + }) + if (authToken) { + headers.set('Authorization', `Bearer ${authToken}`) + } + return headers +} + +function buildSignal( + signal: AbortSignal | undefined, + timeout: number | undefined, +): AbortSignal | undefined { + if (!signal && !timeout) return undefined + if (signal && timeout && typeof AbortSignal.any === 'function') { + return AbortSignal.any([signal, AbortSignal.timeout(timeout)]) + } + if (!signal && timeout) { + return AbortSignal.timeout(timeout) + } + return signal +} + +function createPromiseWithResponse( + promise: Promise>, +): PromiseWithResponse { + const typed = promise.then(result => result.data) as PromiseWithResponse + typed.asResponse = async () => (await promise).response + typed.withResponse = async () => promise + return typed +} + +export function createOpenAICompatibleClient( + options: OpenAICompatibleClientOptions, +) { + const providerType = options.providerType + const baseURL = options.baseURL ?? getDefaultBaseUrl(providerType) + const fetchFn = (options.fetch ?? globalThis.fetch).bind(globalThis) + const defaultHeaders = options.defaultHeaders ?? {} + + const create = ( + params: Record, + requestOptions: RequestOptions = {}, + ) => { + const promise = (async (): Promise> => { + const url = joinUrl(baseURL, 'chat/completions') + const body = { + model: params.model, + messages: anthropicMessagesToOpenAI(params.system, params.messages), + tools: anthropicToolsToOpenAI(params.tools), + tool_choice: anthropicToolChoiceToOpenAI(params.tool_choice), + stream: params.stream === true, + max_tokens: params.max_tokens, + ...(typeof params.temperature === 'number' + ? { temperature: params.temperature } + : {}), + ...(Array.isArray(params.stop_sequences) + ? { stop: params.stop_sequences } + : {}), + ...(params.stream === true ? { stream_options: { include_usage: true } } : {}), + } + + const response = await requestJson(fetchFn, url, { + method: 'POST', + headers: buildHeaders( + providerType, + options.authToken, + defaultHeaders, + requestOptions.headers, + ), + body: JSON.stringify(body), + signal: buildSignal(requestOptions.signal, requestOptions.timeout ?? options.timeout), + ...(options.fetchOptions as RequestInit | undefined), + }) + + const requestId = getRequestId(response.headers) + if (!response.ok) { + const rawBody = await response.text() + throw APIError.generate( + response.status, + parseJsonOrText(rawBody) as Record | undefined, + undefined, + response.headers, + ) + } + + if (params.stream === true) { + return { + data: createOpenAIEventStream(response, String(params.model ?? '')), + request_id: requestId, + response, + } + } + + const json = (await response.json()) as OpenAIChatCompletionResponse + return { + data: openAIResponseToAnthropicMessage( + json, + String(params.model ?? ''), + requestId, + ), + request_id: requestId, + response, + } + })() + + return createPromiseWithResponse(promise) + } + + return { + beta: { + messages: { + create, + }, + }, + models: { + async *list() { + return + }, + }, + } +} diff --git a/src/utils/apiPreconnect.ts b/src/utils/apiPreconnect.ts index 6a8de649..92497967 100644 --- a/src/utils/apiPreconnect.ts +++ b/src/utils/apiPreconnect.ts @@ -24,7 +24,12 @@ */ import { getOauthConfig } from '../constants/oauth.js' -import { isEnvTruthy } from './envUtils.js' +import { + getActiveProviderType, + getConfiguredAnthropicBaseUrl, + isOpenAICompatibleProviderType, +} from './model/providerConfig.js' +import { getAPIProvider } from './model/providers.js' let fired = false @@ -34,9 +39,8 @@ export function preconnectAnthropicApi(): void { // Skip if using a cloud provider — different endpoint + auth if ( - isEnvTruthy(process.env.CLAUDE_CODE_USE_BEDROCK) || - isEnvTruthy(process.env.CLAUDE_CODE_USE_VERTEX) || - isEnvTruthy(process.env.CLAUDE_CODE_USE_FOUNDRY) + getAPIProvider() !== 'firstParty' || + isOpenAICompatibleProviderType(getActiveProviderType()) ) { return } @@ -54,10 +58,9 @@ export function preconnectAnthropicApi(): void { } // Use configured base URL (staging, local, or custom gateway). Covers - // ANTHROPIC_BASE_URL env + USE_STAGING_OAUTH + USE_LOCAL_OAUTH in one lookup. + // provider-configured gateways plus env/staging/local Anthropic endpoints. // NODE_EXTRA_CA_CERTS no longer a skip — init.ts applied it before this fires. - const baseUrl = - process.env.ANTHROPIC_BASE_URL || getOauthConfig().BASE_API_URL + const baseUrl = getConfiguredAnthropicBaseUrl() || getOauthConfig().BASE_API_URL // Fire and forget. HEAD means no response body — the connection is eligible // for keep-alive pool reuse immediately after headers arrive. 10s timeout diff --git a/src/utils/auth.ts b/src/utils/auth.ts index 64a61808..37dde256 100644 --- a/src/utils/auth.ts +++ b/src/utils/auth.ts @@ -10,6 +10,11 @@ import { logEvent, } from 'src/services/analytics/index.js' import { getModelStrings } from 'src/utils/model/modelStrings.js' +import { + getActiveProviderConfig, + getConfiguredProviderApiKey, + getConfiguredProviderAuthToken, +} from 'src/utils/model/providerConfig.js' import { getAPIProvider } from 'src/utils/model/providers.js' import { getIsNonInteractiveSession, @@ -95,6 +100,23 @@ function isManagedOAuthContext(): boolean { ) } +function isGitHubOpenAICompatibleProviderTokenActive(): boolean { + const providerType = getActiveProviderConfig().type + return ( + (providerType === 'github-models' || providerType === 'github-copilot') && + !!(getConfiguredProviderAuthToken() || getConfiguredProviderApiKey()) + ) +} + +function isOpenAICompatibleProviderActive(): boolean { + const providerType = getActiveProviderConfig().type + return ( + providerType === 'openai-compatible' || + providerType === 'github-models' || + providerType === 'github-copilot' + ) +} + /** Whether we are supporting direct 1P auth. */ // this code is closely related to getAuthTokenSource export function isAnthropicAuthEnabled(): boolean { @@ -112,26 +134,27 @@ export function isAnthropicAuthEnabled(): boolean { return !!process.env.CLAUDE_CODE_OAUTH_TOKEN } - const is3P = - isEnvTruthy(process.env.CLAUDE_CODE_USE_BEDROCK) || - isEnvTruthy(process.env.CLAUDE_CODE_USE_VERTEX) || - isEnvTruthy(process.env.CLAUDE_CODE_USE_FOUNDRY) + const is3P = getAPIProvider() !== 'firstParty' // Check if user has configured an external API key source // This allows externally-provided API keys to work (without requiring proxy configuration) const settings = getSettings_DEPRECATED() || {} const apiKeyHelper = settings.apiKeyHelper const hasExternalAuthToken = + getConfiguredProviderAuthToken() || process.env.ANTHROPIC_AUTH_TOKEN || apiKeyHelper || process.env.CLAUDE_CODE_API_KEY_FILE_DESCRIPTOR + const configuredProviderApiKey = getConfiguredProviderApiKey() // Check if API key is from an external source (not managed by /login) const { source: apiKeySource } = getAnthropicApiKeyWithSource({ skipRetrievingKeyFromApiKeyHelper: true, }) const hasExternalApiKey = - apiKeySource === 'ANTHROPIC_API_KEY' || apiKeySource === 'apiKeyHelper' + apiKeySource === 'ANTHROPIC_API_KEY' || + apiKeySource === 'apiKeyHelper' || + !!configuredProviderApiKey // Disable Anthropic auth if: // 1. Using 3rd party services (Bedrock/Vertex/Foundry) @@ -141,6 +164,7 @@ export function isAnthropicAuthEnabled(): boolean { // e.g. if they want to set X-Api-Key to a gateway key but use Anthropic OAuth for the Authorization // if we get reports of that, we should probably add an env var to force OAuth enablement const shouldDisableAuth = + isGitHubOpenAICompatibleProviderTokenActive() || is3P || (hasExternalAuthToken && !isManagedOAuthContext()) || (hasExternalApiKey && !isManagedOAuthContext()) @@ -161,7 +185,14 @@ export function getAuthTokenSource() { return { source: 'none' as const, hasToken: false } } - if (process.env.ANTHROPIC_AUTH_TOKEN && !isManagedOAuthContext()) { + if (isOpenAICompatibleProviderActive() && getConfiguredProviderAuthToken()) { + return { source: 'providerAuthToken' as const, hasToken: true } + } + + if ( + process.env.ANTHROPIC_AUTH_TOKEN && + !isManagedOAuthContext() + ) { return { source: 'ANTHROPIC_AUTH_TOKEN' as const, hasToken: true } } @@ -229,6 +260,17 @@ export function getAnthropicApiKeyWithSource( key: null | string source: ApiKeySource } { + if (isOpenAICompatibleProviderActive()) { + const configuredProviderApiKey = getConfiguredProviderApiKey() + if (configuredProviderApiKey) { + return { + key: configuredProviderApiKey, + source: 'ANTHROPIC_API_KEY', + } + } + return { key: null, source: 'none' } + } + // --bare: hermetic auth. Only ANTHROPIC_API_KEY env or apiKeyHelper from // the --settings flag. Never touches keychain, config file, or approval // lists. 3P (Bedrock/Vertex/Foundry) uses provider creds, not this path. @@ -336,6 +378,14 @@ export function getAnthropicApiKeyWithSource( } } + const configuredProviderApiKey = getConfiguredProviderApiKey() + if (configuredProviderApiKey) { + return { + key: configuredProviderApiKey, + source: 'ANTHROPIC_API_KEY', + } + } + const apiKeyFromConfigOrMacOSKeychain = getApiKeyFromConfigOrMacOSKeychain() if (apiKeyFromConfigOrMacOSKeychain) { return apiKeyFromConfigOrMacOSKeychain diff --git a/src/utils/context.ts b/src/utils/context.ts index d9714de9..1796ff41 100644 --- a/src/utils/context.ts +++ b/src/utils/context.ts @@ -195,6 +195,12 @@ export function getModelMaxOutputTokens(model: string): { } else if (m.includes('3-7-sonnet')) { defaultTokens = 32_000 upperLimit = 64_000 + } else if (m.includes('gpt-4.1')) { + defaultTokens = 32_768 + upperLimit = 32_768 + } else if (m.includes('gpt-4o')) { + defaultTokens = 16_384 + upperLimit = 16_384 } else { defaultTokens = MAX_OUTPUT_TOKENS_DEFAULT upperLimit = MAX_OUTPUT_TOKENS_UPPER_LIMIT diff --git a/src/utils/filePersistence/types.ts b/src/utils/filePersistence/types.ts index 6402ba1b..b0ea8ac3 100644 --- a/src/utils/filePersistence/types.ts +++ b/src/utils/filePersistence/types.ts @@ -1 +1,21 @@ export type TurnStartTime = number + +export type PersistedFile = { + filename: string + file_id: string +} + +export type FailedPersistence = { + filename: string + error: string +} + +export type FilesPersistedEventData = { + files: PersistedFile[] + failed: FailedPersistence[] +} + +// Restored defaults used by file persistence orchestration. +export const DEFAULT_UPLOAD_CONCURRENCY = 5 +export const FILE_COUNT_LIMIT = 100 +export const OUTPUTS_SUBDIR = 'outputs' diff --git a/src/utils/github/copilotApi.ts b/src/utils/github/copilotApi.ts new file mode 100644 index 00000000..87715ac6 --- /dev/null +++ b/src/utils/github/copilotApi.ts @@ -0,0 +1,67 @@ +import { execSyncWithDefaults_DEPRECATED } from '../execFileNoThrow.js' + +const COPILOT_ENDPOINT_QUERY = + 'query { viewer { copilotEndpoints { api } } }' + +let cachedCopilotApiUrl: string | null | undefined + +function normalizeUrl(url: string | undefined): string | undefined { + if (!url) { + return undefined + } + + try { + const normalized = new URL(url) + normalized.pathname = normalized.pathname.replace(/\/+$/, '') || '/' + return normalized.toString().replace(/\/$/, '') + } catch { + return undefined + } +} + +function getEnvCopilotApiUrl(): string | undefined { + return ( + normalizeUrl(process.env.GITHUB_COPILOT_BASE_URL) || + normalizeUrl(process.env.GITHUB_COPILOT_API_URL) + ) +} + +function getGhCliCopilotApiUrl(): string | undefined { + const raw = execSyncWithDefaults_DEPRECATED( + `gh api graphql -f query='${COPILOT_ENDPOINT_QUERY}'`, + { + timeout: 5000, + stdio: ['ignore', 'pipe', 'ignore'], + }, + ) + + if (!raw) { + return undefined + } + + try { + const parsed = JSON.parse(raw) as { + data?: { + viewer?: { + copilotEndpoints?: { + api?: string + } + } + } + } + + return normalizeUrl(parsed.data?.viewer?.copilotEndpoints?.api) + } catch { + return undefined + } +} + +export function getGitHubCopilotApiUrl(): string | undefined { + if (cachedCopilotApiUrl !== undefined) { + return cachedCopilotApiUrl ?? undefined + } + + const resolved = getEnvCopilotApiUrl() || getGhCliCopilotApiUrl() + cachedCopilotApiUrl = resolved ?? null + return resolved +} diff --git a/src/utils/github/ghAuthToken.ts b/src/utils/github/ghAuthToken.ts new file mode 100644 index 00000000..e4f90ebe --- /dev/null +++ b/src/utils/github/ghAuthToken.ts @@ -0,0 +1,49 @@ +import { execSyncWithDefaults_DEPRECATED } from '../execFileNoThrow.js' + +export type GitHubTokenProvider = 'github-models' | 'github-copilot' + +const providerEnvNames: Record = { + 'github-models': ['GITHUB_MODELS_TOKEN'], + 'github-copilot': ['GITHUB_COPILOT_TOKEN'], +} + +const cachedTokens = new Map() + +function getEnvToken(envNames: string[]): string | undefined { + for (const envName of envNames) { + const value = process.env[envName] + if (value) { + return value + } + } + + return undefined +} + +function resolveGhAuthToken(provider: GitHubTokenProvider): string | undefined { + const envToken = getEnvToken([ + ...providerEnvNames[provider], + 'GH_TOKEN', + 'GITHUB_TOKEN', + ]) + if (envToken) { + return envToken + } + + return execSyncWithDefaults_DEPRECATED('gh auth token', { + timeout: 5000, + stdio: ['ignore', 'pipe', 'ignore'], + }) ?? undefined +} + +export function getGitHubAuthToken( + provider: GitHubTokenProvider, +): string | undefined { + if (cachedTokens.has(provider)) { + return cachedTokens.get(provider) + } + + const token = resolveGhAuthToken(provider) + cachedTokens.set(provider, token) + return token +} diff --git a/src/utils/http.ts b/src/utils/http.ts index 93b87e8e..039a269d 100644 --- a/src/utils/http.ts +++ b/src/utils/http.ts @@ -10,9 +10,21 @@ import { handleOAuth401Error, isClaudeAISubscriber, } from './auth.js' +import { + getActiveProviderConfig, + getConfiguredProviderAuthToken, +} from './model/providerConfig.js' import { getClaudeCodeUserAgent } from './userAgent.js' import { getWorkload } from './workloadContext.js' +function isOpenAICompatibleProviderType(providerType: string | undefined): boolean { + return ( + providerType === 'openai-compatible' || + providerType === 'github-models' || + providerType === 'github-copilot' + ) +} + // WARNING: We rely on `claude-cli` in the user agent for log filtering. // Please do NOT change this without making sure that logging also gets updated! export function getUserAgent(): string { @@ -85,6 +97,22 @@ export function getAuthHeaders(): AuthHeaders { // TODO: this will fail if the API key is being set to an LLM Gateway key // should we try to query keychain / credentials for a valid Anthropic key? const apiKey = getAnthropicApiKey() + const authToken = getConfiguredProviderAuthToken() + const providerType = getActiveProviderConfig().type + if (authToken && !isOpenAICompatibleProviderType(providerType)) { + return { + headers: { + Authorization: `Bearer ${authToken}`, + }, + } + } + if (apiKey && isOpenAICompatibleProviderType(providerType)) { + return { + headers: { + Authorization: `Bearer ${apiKey}`, + }, + } + } if (!apiKey) { return { headers: {}, diff --git a/src/utils/model/model.ts b/src/utils/model/model.ts index 85e369fa..647e315c 100644 --- a/src/utils/model/model.ts +++ b/src/utils/model/model.ts @@ -28,13 +28,30 @@ import { LIGHTNING_BOLT } from '../../constants/figures.js' import { isModelAllowed } from './modelAllowlist.js' import { type ModelAlias, isModelAlias } from './aliases.js' import { capitalize } from '../stringUtils.js' +import { getActiveProviderConfig } from './providerConfig.js' export type ModelShortName = string export type ModelName = string export type ModelSetting = ModelName | ModelAlias | null +function getConfiguredProviderModel( + key: 'defaultModel' | 'smallFastModel', +): string | undefined { + const providerConfig = getActiveProviderConfig() as + | Record + | undefined + const configuredModel = providerConfig?.[key] + return typeof configuredModel === 'string' && configuredModel.length > 0 + ? configuredModel + : undefined +} + export function getSmallFastModel(): ModelName { - return process.env.ANTHROPIC_SMALL_FAST_MODEL || getDefaultHaikuModel() + return ( + process.env.ANTHROPIC_SMALL_FAST_MODEL || + getConfiguredProviderModel('smallFastModel') || + getDefaultHaikuModel() + ) } export function isNonCustomOpusModel(model: ModelName): boolean { @@ -184,6 +201,11 @@ export function getDefaultMainLoopModelSetting(): ModelName | ModelAlias { ) } + const configuredDefaultModel = getConfiguredProviderModel('defaultModel') + if (configuredDefaultModel) { + return configuredDefaultModel + } + // Max users get Opus as default if (isMaxSubscriber()) { return getDefaultOpusModel() + (isOpus1mMergeEnabled() ? '[1m]' : '') diff --git a/src/utils/model/modelOptions.ts b/src/utils/model/modelOptions.ts index f8ef2966..56ee79be 100644 --- a/src/utils/model/modelOptions.ts +++ b/src/utils/model/modelOptions.ts @@ -32,6 +32,7 @@ import { } from './model.js' import { has1mContext } from '../context.js' import { getGlobalConfig } from '../config.js' +import { getConfiguredCustomModels } from './providerConfig.js' // @[MODEL LAUNCH]: Update all the available and default model option strings below. @@ -42,6 +43,40 @@ export type ModelOption = { descriptionForModel?: string } +function getConfiguredCustomModelOptions(): ModelOption[] { + const configuredModels = getConfiguredCustomModels() as unknown[] | undefined + if (!configuredModels?.length) { + return [] + } + + return configuredModels.flatMap(model => { + if (typeof model === 'string' && model.length > 0) { + return [{ value: model, label: model, description: 'Custom model' }] + } + + if (!model || typeof model !== 'object') { + return [] + } + + const config = model as Record + const value = config.model ?? config.value ?? config.id ?? config.name + if (typeof value !== 'string' || value.length === 0) { + return [] + } + + const label = + typeof config.label === 'string' && config.label.length > 0 + ? config.label + : value + const description = + typeof config.description === 'string' && config.description.length > 0 + ? config.description + : 'Custom model' + + return [{ value, label, description }] + }) +} + export function getDefaultOptionForUser(fastMode = false): ModelOption { if (process.env.USER_TYPE === 'ant') { const currentModel = renderDefaultModelSetting( @@ -66,10 +101,11 @@ export function getDefaultOptionForUser(fastMode = false): ModelOption { // PAYG const is3P = getAPIProvider() !== 'firstParty' + const hasConfiguredCustomModels = getConfiguredCustomModelOptions().length > 0 return { value: null, label: 'Default (recommended)', - description: `Use the default model (currently ${renderDefaultModelSetting(getDefaultMainLoopModelSetting())})${is3P ? '' : ` · ${formatModelPricing(COST_TIER_3_15)}`}`, + description: `Use the default model (currently ${renderDefaultModelSetting(getDefaultMainLoopModelSetting())})${is3P || hasConfiguredCustomModels ? '' : ` · ${formatModelPricing(COST_TIER_3_15)}`}`, } } @@ -325,6 +361,11 @@ function getModelOptionsBase(fastMode = false): ModelOption[] { // PAYG 1P API: Default (Sonnet) + Sonnet 1M + Opus 4.6 + Opus 1M + Haiku if (getAPIProvider() === 'firstParty') { + const configuredCustomModels = getConfiguredCustomModelOptions() + if (configuredCustomModels.length > 0) { + return [getDefaultOptionForUser(fastMode), ...configuredCustomModels] + } + const payg1POptions = [getDefaultOptionForUser(fastMode)] if (checkSonnet1mAccess()) { payg1POptions.push(getSonnet46_1MOption()) @@ -460,6 +501,7 @@ function getKnownModelOption(model: string): ModelOption | null { export function getModelOptions(fastMode = false): ModelOption[] { const options = getModelOptionsBase(fastMode) + const hasConfiguredCustomModels = getConfiguredCustomModelOptions().length > 0 // Add the custom model from the ANTHROPIC_CUSTOM_MODEL_OPTION env var const envCustomModel = process.env.ANTHROPIC_CUSTOM_MODEL_OPTION @@ -493,6 +535,16 @@ export function getModelOptions(fastMode = false): ModelOption[] { } else if (initialMainLoopModel !== null) { customModel = initialMainLoopModel } + if (hasConfiguredCustomModels) { + if (customModel !== null && !options.some(opt => opt.value === customModel)) { + options.push({ + value: customModel, + label: customModel, + description: 'Current model', + }) + } + return filterModelOptionsByAllowlist(options) + } if (customModel === null || options.some(opt => opt.value === customModel)) { return filterModelOptionsByAllowlist(options) } else if (customModel === 'opusplan') { diff --git a/src/utils/model/providerConfig.ts b/src/utils/model/providerConfig.ts new file mode 100644 index 00000000..5de0c7f4 --- /dev/null +++ b/src/utils/model/providerConfig.ts @@ -0,0 +1,348 @@ +import { getDefaultVertexRegion, getAWSRegion, isEnvTruthy } from '../envUtils.js' +import { getGitHubCopilotApiUrl } from '../github/copilotApi.js' +import { getGitHubAuthToken } from '../github/ghAuthToken.js' +import { getInitialSettings } from '../settings/settings.js' +import type { ProviderConfig } from '../settings/types.js' + +export type ConfiguredProviderType = + | 'firstParty' + | 'bedrock' + | 'vertex' + | 'foundry' + | 'anthropic-compatible' + | 'openai-compatible' + | 'github-models' + | 'github-copilot' + +export type ConfiguredProvider = { + type?: ConfiguredProviderType + name?: string + baseURL?: string + apiKeyEnv?: string + authTokenEnv?: string + defaultModel?: string + models?: string[] + smallFastModel?: string + region?: string + projectId?: string + resource?: string +} + +type ActiveProviderConfig = { + id: string + type: ConfiguredProviderType + name: string + baseURL?: string + apiKeyEnv?: string + authTokenEnv?: string + defaultModel?: string + models?: string[] + smallFastModel?: string + region?: string + projectId?: string + resource?: string + isCustom: boolean +} + +type BuiltinProviderId = + | 'firstParty' + | 'bedrock' + | 'vertex' + | 'foundry' + | 'github-models' + | 'github-copilot' + +const BUILTIN_PROVIDER_NAMES: Record = { + firstParty: 'Anthropic', + bedrock: 'Amazon Bedrock', + vertex: 'Google Vertex AI', + foundry: 'Azure AI Foundry', + 'github-models': 'GitHub Models', + 'github-copilot': 'GitHub Copilot', +} + +const BUILTIN_PROVIDER_IDS = new Set([ + 'firstParty', + 'bedrock', + 'vertex', + 'foundry', + 'github-models', + 'github-copilot', +]) + +const BUILTIN_PROVIDER_CONFIGS: Record< + 'github-models' | 'github-copilot', + Pick< + ActiveProviderConfig, + 'type' | 'baseURL' | 'authTokenEnv' | 'defaultModel' | 'models' | 'smallFastModel' + > +> = { + 'github-models': { + type: 'github-models', + baseURL: 'https://models.github.ai/inference', + authTokenEnv: 'GITHUB_MODELS_TOKEN', + defaultModel: 'openai/gpt-4.1', + models: [ + 'openai/gpt-4.1', + 'openai/gpt-4.1-mini', + 'anthropic/claude-3.7-sonnet', + 'meta/Llama-3.3-70B-Instruct', + ], + }, + 'github-copilot': { + type: 'github-copilot', + baseURL: 'https://api.githubcopilot.com', + authTokenEnv: 'GITHUB_COPILOT_TOKEN', + defaultModel: 'claude-sonnet-4.6', + smallFastModel: 'claude-haiku-4.5', + models: [ + 'claude-sonnet-4.6', + 'claude-opus-4.6', + 'claude-haiku-4.5', + 'claude-sonnet-4.5', + 'claude-opus-4.5', + 'claude-sonnet-4', + ], + }, +} + +function getEnvSelectedProviderId(): 'bedrock' | 'vertex' | 'foundry' | undefined { + return isEnvTruthy(process.env.CLAUDE_CODE_USE_BEDROCK) + ? 'bedrock' + : isEnvTruthy(process.env.CLAUDE_CODE_USE_VERTEX) + ? 'vertex' + : isEnvTruthy(process.env.CLAUDE_CODE_USE_FOUNDRY) + ? 'foundry' + : undefined +} + +export function isBuiltinProviderId(id: string): id is BuiltinProviderId { + return BUILTIN_PROVIDER_IDS.has(id as BuiltinProviderId) +} + +export function resolveConfiguredProviderType( + id: string, + provider: ProviderConfig | undefined, +): ConfiguredProviderType { + return provider?.type ?? (isBuiltinProviderId(id) ? id : 'anthropic-compatible') +} + +export function isOpenAICompatibleProviderType( + type: ConfiguredProviderType, +): boolean { + return ( + type === 'openai-compatible' || + type === 'github-models' || + type === 'github-copilot' + ) +} + +export function getActiveProviderType(): ConfiguredProviderType { + return getActiveProviderConfig().type +} + +function getBuiltinProviderConfig(id: BuiltinProviderId): ActiveProviderConfig { + if (id === 'bedrock') { + return { + id, + type: 'bedrock', + name: BUILTIN_PROVIDER_NAMES.bedrock, + region: getAWSRegion(), + isCustom: false, + } + } + + if (id === 'vertex') { + return { + id, + type: 'vertex', + name: BUILTIN_PROVIDER_NAMES.vertex, + baseURL: process.env.ANTHROPIC_VERTEX_BASE_URL, + region: getDefaultVertexRegion(), + projectId: process.env.ANTHROPIC_VERTEX_PROJECT_ID, + isCustom: false, + } + } + + if (id === 'foundry') { + return { + id, + type: 'foundry', + name: BUILTIN_PROVIDER_NAMES.foundry, + baseURL: process.env.ANTHROPIC_FOUNDRY_BASE_URL, + apiKeyEnv: 'ANTHROPIC_FOUNDRY_API_KEY', + resource: process.env.ANTHROPIC_FOUNDRY_RESOURCE, + isCustom: false, + } + } + + if (id === 'github-models' || id === 'github-copilot') { + const config = BUILTIN_PROVIDER_CONFIGS[id] + return { + id, + name: BUILTIN_PROVIDER_NAMES[id], + ...config, + ...(id === 'github-copilot' + ? { + baseURL: getGitHubCopilotApiUrl() ?? config.baseURL, + } + : {}), + isCustom: false, + } + } + + return { + id, + type: 'firstParty', + name: BUILTIN_PROVIDER_NAMES.firstParty, + baseURL: process.env.ANTHROPIC_BASE_URL, + apiKeyEnv: 'ANTHROPIC_API_KEY', + authTokenEnv: 'ANTHROPIC_AUTH_TOKEN', + isCustom: false, + } +} + +function toConfiguredProvider(providerId: string, provider: ProviderConfig): ConfiguredProvider { + return { + ...provider, + type: resolveConfiguredProviderType(providerId, provider), + } +} + +export function getConfiguredProviders(): Record { + const settings = getInitialSettings() + return Object.fromEntries( + Object.entries(settings.providers ?? {}).map(([id, provider]) => [ + id, + toConfiguredProvider(id, provider), + ]), + ) +} + +export function getConfiguredProviderId(): string | undefined { + const envProviderId = getEnvSelectedProviderId() + if (envProviderId) { + return envProviderId + } + + return getInitialSettings().provider +} + +export function getActiveProviderConfig(): ActiveProviderConfig { + const envProviderId = getEnvSelectedProviderId() + if (envProviderId) { + return getBuiltinProviderConfig(envProviderId) + } + + const settings = getInitialSettings() + const providerId = settings.provider + const configuredProviders = getConfiguredProviders() + + if (!providerId) { + return getBuiltinProviderConfig('firstParty') + } + + if ( + isBuiltinProviderId(providerId) + ) { + const builtin = getBuiltinProviderConfig(providerId) + const configured = configuredProviders[providerId] + return configured + ? { + ...builtin, + ...configured, + id: providerId, + type: resolveConfiguredProviderType(providerId, configured), + name: configured.name ?? builtin.name, + isCustom: false, + } + : builtin + } + + const configured = configuredProviders[providerId] + if (!configured) { + return getBuiltinProviderConfig('firstParty') + } + + return { + id: providerId, + type: resolveConfiguredProviderType(providerId, configured), + name: configured.name ?? providerId, + baseURL: configured.baseURL, + apiKeyEnv: configured.apiKeyEnv, + authTokenEnv: configured.authTokenEnv, + defaultModel: configured.defaultModel, + models: configured.models, + smallFastModel: configured.smallFastModel, + region: configured.region, + projectId: configured.projectId, + resource: configured.resource, + isCustom: true, + } +} + +export function getProviderDisplayName(): string { + return getActiveProviderConfig().name +} + +export function getConfiguredAnthropicBaseUrl(): string | undefined { + const provider = getActiveProviderConfig() + return provider.type === 'firstParty' || + provider.type === 'anthropic-compatible' + ? provider.baseURL + : undefined +} + +export function getConfiguredCustomModels(): string[] | undefined { + const configuredModels = getActiveProviderConfig().models + if (configuredModels && configuredModels.length > 0) { + return configuredModels + } + + return process.env.ANTHROPIC_CUSTOM_MODEL_OPTION + ? [process.env.ANTHROPIC_CUSTOM_MODEL_OPTION] + : undefined +} + +export function getConfiguredProviderApiKey(): string | undefined { + const apiKeyEnv = getActiveProviderConfig().apiKeyEnv + return apiKeyEnv ? process.env[apiKeyEnv] : undefined +} + +export function getConfiguredGitHubProviderAuthToken( + type: ConfiguredProviderType, +): string | undefined { + if (type === 'github-models') { + return getGitHubAuthToken('github-models') + } + + if (type === 'github-copilot') { + return getGitHubAuthToken('github-copilot') + } + + return undefined +} + +export function getConfiguredProviderAuthToken(): string | undefined { + const provider = getActiveProviderConfig() + const authTokenEnv = provider.authTokenEnv + const configuredToken = authTokenEnv ? process.env[authTokenEnv] : undefined + if (configuredToken) { + return configuredToken + } + + return getConfiguredGitHubProviderAuthToken(provider.type) +} + +export function getConfiguredProviderSecretEnvNames(): string[] { + const provider = getActiveProviderConfig() + const secretEnvNames = [provider.apiKeyEnv, provider.authTokenEnv] + + if (provider.type === 'github-models' || provider.type === 'github-copilot') { + secretEnvNames.push('GH_TOKEN', 'GITHUB_TOKEN') + } + + return secretEnvNames.filter( + (value): value is string => typeof value === 'string' && value.length > 0, + ) +} diff --git a/src/utils/model/providers.ts b/src/utils/model/providers.ts index aba9b7d7..7ee42060 100644 --- a/src/utils/model/providers.ts +++ b/src/utils/model/providers.ts @@ -1,16 +1,41 @@ import type { AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS } from '../../services/analytics/index.js' import { isEnvTruthy } from '../envUtils.js' +import { + getActiveProviderConfig, + getConfiguredAnthropicBaseUrl, + isOpenAICompatibleProviderType, +} from './providerConfig.js' export type APIProvider = 'firstParty' | 'bedrock' | 'vertex' | 'foundry' +function getConfiguredBuiltInProvider(): APIProvider | undefined { + const providerConfig = getActiveProviderConfig() as + | Record + | undefined + + const configuredProvider = + providerConfig?.provider ?? + providerConfig?.apiProvider ?? + providerConfig?.type ?? + providerConfig?.kind + + return configuredProvider === 'bedrock' || + configuredProvider === 'vertex' || + configuredProvider === 'foundry' + ? configuredProvider + : undefined +} + export function getAPIProvider(): APIProvider { + const configuredBuiltInProvider = getConfiguredBuiltInProvider() + return isEnvTruthy(process.env.CLAUDE_CODE_USE_BEDROCK) ? 'bedrock' : isEnvTruthy(process.env.CLAUDE_CODE_USE_VERTEX) ? 'vertex' : isEnvTruthy(process.env.CLAUDE_CODE_USE_FOUNDRY) ? 'foundry' - : 'firstParty' + : configuredBuiltInProvider ?? 'firstParty' } export function getAPIProviderForStatsig(): AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS { @@ -23,7 +48,10 @@ export function getAPIProviderForStatsig(): AnalyticsMetadata_I_VERIFIED_THIS_IS * (or api-staging.anthropic.com for ant users). */ export function isFirstPartyAnthropicBaseUrl(): boolean { - const baseUrl = process.env.ANTHROPIC_BASE_URL + if (isOpenAICompatibleProviderType(getActiveProviderConfig().type)) { + return false + } + const baseUrl = getConfiguredAnthropicBaseUrl() if (!baseUrl) { return true } diff --git a/src/utils/settings/types.ts b/src/utils/settings/types.ts index ba89edd8..e4694424 100644 --- a/src/utils/settings/types.ts +++ b/src/utils/settings/types.ts @@ -108,6 +108,35 @@ export const ExtraKnownMarketplaceSchema = lazySchema(() => }), ) +export const ProviderTypeSchema = lazySchema(() => + z.enum([ + 'firstParty', + 'bedrock', + 'vertex', + 'foundry', + 'anthropic-compatible', + 'openai-compatible', + 'github-models', + 'github-copilot', + ]), +) + +export const ProviderConfigSchema = lazySchema(() => + z.object({ + type: ProviderTypeSchema().optional(), + name: z.string().optional(), + baseURL: z.string().optional(), + apiKeyEnv: z.string().optional(), + authTokenEnv: z.string().optional(), + defaultModel: z.string().optional(), + models: z.array(z.string()).optional(), + smallFastModel: z.string().optional(), + region: z.string().optional(), + projectId: z.string().optional(), + resource: z.string().optional(), + }), +) + /** * Schema for allowed MCP server entry in enterprise allowlist. * Supports matching by serverName, serverCommand, or serverUrl (mutually exclusive). @@ -376,6 +405,14 @@ export const SettingsSchema = lazySchema(() => .string() .optional() .describe('Override the default model used by Claude Code'), + provider: z + .string() + .optional() + .describe('Select the active model provider by ID'), + providers: z + .record(z.string(), ProviderConfigSchema()) + .optional() + .describe('Provider configurations keyed by provider ID'), // Enterprise allowlist of models availableModels: z .array(z.string()) @@ -1101,6 +1138,7 @@ export type AllowedMcpServerEntry = z.infer< export type DeniedMcpServerEntry = z.infer< ReturnType > +export type ProviderConfig = z.infer> export type SettingsJson = z.infer> /** diff --git a/src/utils/status.tsx b/src/utils/status.tsx index 2cc221b5..3051128d 100644 --- a/src/utils/status.tsx +++ b/src/utils/status.tsx @@ -11,6 +11,7 @@ import { getDisplayPath } from './file.js'; import { formatNumber } from './format.js'; import { getIdeClientName, type IDEExtensionInstallationStatus, isJetBrainsIde, toIDEDisplayName } from './ide.js'; import { getClaudeAiUserDefaultModelDescription, modelDisplayString } from './model/model.js'; +import { getActiveProviderConfig, getConfiguredAnthropicBaseUrl, getProviderDisplayName } from './model/providerConfig.js'; import { getAPIProvider } from './model/providers.js'; import { getMTLSConfig } from './mtls.js'; import { checkInstall } from './nativeInstaller/index.js'; @@ -210,9 +211,12 @@ export function buildAccountProperties(): Property[] { }); } if (accountInfo.tokenSource) { + const tokenSource = accountInfo.tokenSource === 'providerAuthToken' + ? `${getProviderDisplayName()} token` + : accountInfo.tokenSource; properties.push({ label: 'Auth token', - value: accountInfo.tokenSource + value: tokenSource }); } if (accountInfo.apiKeySource) { @@ -239,6 +243,9 @@ export function buildAccountProperties(): Property[] { } export function buildAPIProviderProperties(): Property[] { const apiProvider = getAPIProvider(); + const activeProvider = getActiveProviderConfig(); + const providerDisplayName = getProviderDisplayName(); + const configuredAnthropicBaseUrl = getConfiguredAnthropicBaseUrl(); const properties: Property[] = []; if (apiProvider !== 'firstParty') { const providerLabel = { @@ -248,19 +255,24 @@ export function buildAPIProviderProperties(): Property[] { }[apiProvider]; properties.push({ label: 'API provider', - value: providerLabel + value: providerDisplayName || providerLabel + }); + } else if (providerDisplayName && providerDisplayName !== 'Anthropic') { + properties.push({ + label: 'API provider', + value: providerDisplayName }); } if (apiProvider === 'firstParty') { - const anthropicBaseUrl = process.env.ANTHROPIC_BASE_URL; + const anthropicBaseUrl = configuredAnthropicBaseUrl ?? (providerDisplayName !== 'Anthropic' ? activeProvider.baseURL : undefined); if (anthropicBaseUrl) { properties.push({ - label: 'Anthropic base URL', + label: providerDisplayName !== 'Anthropic' ? 'Provider base URL' : 'Anthropic base URL', value: anthropicBaseUrl }); } } else if (apiProvider === 'bedrock') { - const bedrockBaseUrl = process.env.BEDROCK_BASE_URL; + const bedrockBaseUrl = activeProvider.baseURL ?? process.env.ANTHROPIC_BEDROCK_BASE_URL ?? process.env.BEDROCK_BASE_URL; if (bedrockBaseUrl) { properties.push({ label: 'Bedrock base URL', @@ -269,7 +281,7 @@ export function buildAPIProviderProperties(): Property[] { } properties.push({ label: 'AWS region', - value: getAWSRegion() + value: activeProvider.region ?? getAWSRegion() }); if (isEnvTruthy(process.env.CLAUDE_CODE_SKIP_BEDROCK_AUTH)) { properties.push({ @@ -277,14 +289,14 @@ export function buildAPIProviderProperties(): Property[] { }); } } else if (apiProvider === 'vertex') { - const vertexBaseUrl = process.env.VERTEX_BASE_URL; + const vertexBaseUrl = activeProvider.baseURL ?? process.env.ANTHROPIC_VERTEX_BASE_URL ?? process.env.VERTEX_BASE_URL; if (vertexBaseUrl) { properties.push({ label: 'Vertex base URL', value: vertexBaseUrl }); } - const gcpProject = process.env.ANTHROPIC_VERTEX_PROJECT_ID; + const gcpProject = activeProvider.projectId ?? process.env.ANTHROPIC_VERTEX_PROJECT_ID; if (gcpProject) { properties.push({ label: 'GCP project', @@ -293,7 +305,7 @@ export function buildAPIProviderProperties(): Property[] { } properties.push({ label: 'Default region', - value: getDefaultVertexRegion() + value: activeProvider.region ?? getDefaultVertexRegion() }); if (isEnvTruthy(process.env.CLAUDE_CODE_SKIP_VERTEX_AUTH)) { properties.push({ @@ -301,14 +313,14 @@ export function buildAPIProviderProperties(): Property[] { }); } } else if (apiProvider === 'foundry') { - const foundryBaseUrl = process.env.ANTHROPIC_FOUNDRY_BASE_URL; + const foundryBaseUrl = activeProvider.baseURL ?? process.env.ANTHROPIC_FOUNDRY_BASE_URL; if (foundryBaseUrl) { properties.push({ label: 'Microsoft Foundry base URL', value: foundryBaseUrl }); } - const foundryResource = process.env.ANTHROPIC_FOUNDRY_RESOURCE; + const foundryResource = activeProvider.resource ?? process.env.ANTHROPIC_FOUNDRY_RESOURCE; if (foundryResource) { properties.push({ label: 'Microsoft Foundry resource', @@ -359,4 +371,4 @@ export function getModelDisplayLabel(mainLoopModel: string | null): string { } return modelLabel; } -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjaGFsayIsImZpZ3VyZXMiLCJSZWFjdCIsImNvbG9yIiwiVGV4dCIsIk1DUFNlcnZlckNvbm5lY3Rpb24iLCJnZXRBY2NvdW50SW5mb3JtYXRpb24iLCJpc0NsYXVkZUFJU3Vic2NyaWJlciIsImdldExhcmdlTWVtb3J5RmlsZXMiLCJnZXRNZW1vcnlGaWxlcyIsIk1BWF9NRU1PUllfQ0hBUkFDVEVSX0NPVU5UIiwiZ2V0RG9jdG9yRGlhZ25vc3RpYyIsImdldEFXU1JlZ2lvbiIsImdldERlZmF1bHRWZXJ0ZXhSZWdpb24iLCJpc0VudlRydXRoeSIsImdldERpc3BsYXlQYXRoIiwiZm9ybWF0TnVtYmVyIiwiZ2V0SWRlQ2xpZW50TmFtZSIsIklERUV4dGVuc2lvbkluc3RhbGxhdGlvblN0YXR1cyIsImlzSmV0QnJhaW5zSWRlIiwidG9JREVEaXNwbGF5TmFtZSIsImdldENsYXVkZUFpVXNlckRlZmF1bHRNb2RlbERlc2NyaXB0aW9uIiwibW9kZWxEaXNwbGF5U3RyaW5nIiwiZ2V0QVBJUHJvdmlkZXIiLCJnZXRNVExTQ29uZmlnIiwiY2hlY2tJbnN0YWxsIiwiZ2V0UHJveHlVcmwiLCJTYW5kYm94TWFuYWdlciIsImdldFNldHRpbmdzV2l0aEFsbEVycm9ycyIsImdldEVuYWJsZWRTZXR0aW5nU291cmNlcyIsImdldFNldHRpbmdTb3VyY2VEaXNwbGF5TmFtZUNhcGl0YWxpemVkIiwiZ2V0TWFuYWdlZEZpbGVTZXR0aW5nc1ByZXNlbmNlIiwiZ2V0UG9saWN5U2V0dGluZ3NPcmlnaW4iLCJnZXRTZXR0aW5nc0ZvclNvdXJjZSIsIlRoZW1lTmFtZSIsIlByb3BlcnR5IiwibGFiZWwiLCJ2YWx1ZSIsIlJlYWN0Tm9kZSIsIkFycmF5IiwiRGlhZ25vc3RpYyIsImJ1aWxkU2FuZGJveFByb3BlcnRpZXMiLCJpc1NhbmRib3hlZCIsImlzU2FuZGJveGluZ0VuYWJsZWQiLCJidWlsZElERVByb3BlcnRpZXMiLCJtY3BDbGllbnRzIiwiaWRlSW5zdGFsbGF0aW9uU3RhdHVzIiwidGhlbWUiLCJpZGVDbGllbnQiLCJmaW5kIiwiY2xpZW50IiwibmFtZSIsImlkZU5hbWUiLCJpZGVUeXBlIiwicGx1Z2luT3JFeHRlbnNpb24iLCJlcnJvciIsImNyb3NzIiwiaW5zdGFsbGVkIiwidHlwZSIsImluc3RhbGxlZFZlcnNpb24iLCJzZXJ2ZXJJbmZvIiwidmVyc2lvbiIsImJ1aWxkTWNwUHJvcGVydGllcyIsImNsaWVudHMiLCJzZXJ2ZXJzIiwiZmlsdGVyIiwibGVuZ3RoIiwiYnlTdGF0ZSIsImNvbm5lY3RlZCIsInBlbmRpbmciLCJuZWVkc0F1dGgiLCJmYWlsZWQiLCJzIiwicGFydHMiLCJwdXNoIiwiam9pbiIsImJ1aWxkTWVtb3J5RGlhZ25vc3RpY3MiLCJQcm9taXNlIiwiZmlsZXMiLCJsYXJnZUZpbGVzIiwiZGlhZ25vc3RpY3MiLCJmb3JFYWNoIiwiZmlsZSIsImRpc3BsYXlQYXRoIiwicGF0aCIsImNvbnRlbnQiLCJidWlsZFNldHRpbmdTb3VyY2VzUHJvcGVydGllcyIsImVuYWJsZWRTb3VyY2VzIiwic291cmNlc1dpdGhTZXR0aW5ncyIsInNvdXJjZSIsInNldHRpbmdzIiwiT2JqZWN0Iiwia2V5cyIsInNvdXJjZU5hbWVzIiwibWFwIiwib3JpZ2luIiwiaGFzQmFzZSIsImhhc0Ryb3BJbnMiLCJidWlsZEluc3RhbGxhdGlvbkRpYWdub3N0aWNzIiwiaW5zdGFsbFdhcm5pbmdzIiwid2FybmluZyIsIm1lc3NhZ2UiLCJidWlsZEluc3RhbGxhdGlvbkhlYWx0aERpYWdub3N0aWNzIiwiZGlhZ25vc3RpYyIsIml0ZW1zIiwiZXJyb3JzIiwidmFsaWRhdGlvbkVycm9ycyIsImludmFsaWRGaWxlcyIsImZyb20iLCJTZXQiLCJmaWxlTGlzdCIsIndhcm5pbmdzIiwiaXNzdWUiLCJoYXNVcGRhdGVQZXJtaXNzaW9ucyIsImJ1aWxkQWNjb3VudFByb3BlcnRpZXMiLCJhY2NvdW50SW5mbyIsInByb3BlcnRpZXMiLCJzdWJzY3JpcHRpb24iLCJ0b2tlblNvdXJjZSIsImFwaUtleVNvdXJjZSIsIm9yZ2FuaXphdGlvbiIsInByb2Nlc3MiLCJlbnYiLCJJU19ERU1PIiwiZW1haWwiLCJidWlsZEFQSVByb3ZpZGVyUHJvcGVydGllcyIsImFwaVByb3ZpZGVyIiwicHJvdmlkZXJMYWJlbCIsImJlZHJvY2siLCJ2ZXJ0ZXgiLCJmb3VuZHJ5IiwiYW50aHJvcGljQmFzZVVybCIsIkFOVEhST1BJQ19CQVNFX1VSTCIsImJlZHJvY2tCYXNlVXJsIiwiQkVEUk9DS19CQVNFX1VSTCIsIkNMQVVERV9DT0RFX1NLSVBfQkVEUk9DS19BVVRIIiwidmVydGV4QmFzZVVybCIsIlZFUlRFWF9CQVNFX1VSTCIsImdjcFByb2plY3QiLCJBTlRIUk9QSUNfVkVSVEVYX1BST0pFQ1RfSUQiLCJDTEFVREVfQ09ERV9TS0lQX1ZFUlRFWF9BVVRIIiwiZm91bmRyeUJhc2VVcmwiLCJBTlRIUk9QSUNfRk9VTkRSWV9CQVNFX1VSTCIsImZvdW5kcnlSZXNvdXJjZSIsIkFOVEhST1BJQ19GT1VORFJZX1JFU09VUkNFIiwiQ0xBVURFX0NPREVfU0tJUF9GT1VORFJZX0FVVEgiLCJwcm94eVVybCIsIm10bHNDb25maWciLCJOT0RFX0VYVFJBX0NBX0NFUlRTIiwiY2VydCIsIkNMQVVERV9DT0RFX0NMSUVOVF9DRVJUIiwia2V5IiwiQ0xBVURFX0NPREVfQ0xJRU5UX0tFWSIsImdldE1vZGVsRGlzcGxheUxhYmVsIiwibWFpbkxvb3BNb2RlbCIsIm1vZGVsTGFiZWwiLCJkZXNjcmlwdGlvbiIsImJvbGQiXSwic291cmNlcyI6WyJzdGF0dXMudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjaGFsayBmcm9tICdjaGFsaydcbmltcG9ydCBmaWd1cmVzIGZyb20gJ2ZpZ3VyZXMnXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IGNvbG9yLCBUZXh0IH0gZnJvbSAnLi4vaW5rLmpzJ1xuaW1wb3J0IHR5cGUgeyBNQ1BTZXJ2ZXJDb25uZWN0aW9uIH0gZnJvbSAnLi4vc2VydmljZXMvbWNwL3R5cGVzLmpzJ1xuaW1wb3J0IHsgZ2V0QWNjb3VudEluZm9ybWF0aW9uLCBpc0NsYXVkZUFJU3Vic2NyaWJlciB9IGZyb20gJy4vYXV0aC5qcydcbmltcG9ydCB7XG4gIGdldExhcmdlTWVtb3J5RmlsZXMsXG4gIGdldE1lbW9yeUZpbGVzLFxuICBNQVhfTUVNT1JZX0NIQVJBQ1RFUl9DT1VOVCxcbn0gZnJvbSAnLi9jbGF1ZGVtZC5qcydcbmltcG9ydCB7IGdldERvY3RvckRpYWdub3N0aWMgfSBmcm9tICcuL2RvY3RvckRpYWdub3N0aWMuanMnXG5pbXBvcnQge1xuICBnZXRBV1NSZWdpb24sXG4gIGdldERlZmF1bHRWZXJ0ZXhSZWdpb24sXG4gIGlzRW52VHJ1dGh5LFxufSBmcm9tICcuL2VudlV0aWxzLmpzJ1xuaW1wb3J0IHsgZ2V0RGlzcGxheVBhdGggfSBmcm9tICcuL2ZpbGUuanMnXG5pbXBvcnQgeyBmb3JtYXROdW1iZXIgfSBmcm9tICcuL2Zvcm1hdC5qcydcbmltcG9ydCB7XG4gIGdldElkZUNsaWVudE5hbWUsXG4gIHR5cGUgSURFRXh0ZW5zaW9uSW5zdGFsbGF0aW9uU3RhdHVzLFxuICBpc0pldEJyYWluc0lkZSxcbiAgdG9JREVEaXNwbGF5TmFtZSxcbn0gZnJvbSAnLi9pZGUuanMnXG5pbXBvcnQge1xuICBnZXRDbGF1ZGVBaVVzZXJEZWZhdWx0TW9kZWxEZXNjcmlwdGlvbixcbiAgbW9kZWxEaXNwbGF5U3RyaW5nLFxufSBmcm9tICcuL21vZGVsL21vZGVsLmpzJ1xuaW1wb3J0IHsgZ2V0QVBJUHJvdmlkZXIgfSBmcm9tICcuL21vZGVsL3Byb3ZpZGVycy5qcydcbmltcG9ydCB7IGdldE1UTFNDb25maWcgfSBmcm9tICcuL210bHMuanMnXG5pbXBvcnQgeyBjaGVja0luc3RhbGwgfSBmcm9tICcuL25hdGl2ZUluc3RhbGxlci9pbmRleC5qcydcbmltcG9ydCB7IGdldFByb3h5VXJsIH0gZnJvbSAnLi9wcm94eS5qcydcbmltcG9ydCB7IFNhbmRib3hNYW5hZ2VyIH0gZnJvbSAnLi9zYW5kYm94L3NhbmRib3gtYWRhcHRlci5qcydcbmltcG9ydCB7IGdldFNldHRpbmdzV2l0aEFsbEVycm9ycyB9IGZyb20gJy4vc2V0dGluZ3MvYWxsRXJyb3JzLmpzJ1xuaW1wb3J0IHtcbiAgZ2V0RW5hYmxlZFNldHRpbmdTb3VyY2VzLFxuICBnZXRTZXR0aW5nU291cmNlRGlzcGxheU5hbWVDYXBpdGFsaXplZCxcbn0gZnJvbSAnLi9zZXR0aW5ncy9jb25zdGFudHMuanMnXG5pbXBvcnQge1xuICBnZXRNYW5hZ2VkRmlsZVNldHRpbmdzUHJlc2VuY2UsXG4gIGdldFBvbGljeVNldHRpbmdzT3JpZ2luLFxuICBnZXRTZXR0aW5nc0ZvclNvdXJjZSxcbn0gZnJvbSAnLi9zZXR0aW5ncy9zZXR0aW5ncy5qcydcbmltcG9ydCB0eXBlIHsgVGhlbWVOYW1lIH0gZnJvbSAnLi90aGVtZS5qcydcblxuZXhwb3J0IHR5cGUgUHJvcGVydHkgPSB7XG4gIGxhYmVsPzogc3RyaW5nXG4gIHZhbHVlOiBSZWFjdC5SZWFjdE5vZGUgfCBBcnJheTxzdHJpbmc+XG59XG5cbmV4cG9ydCB0eXBlIERpYWdub3N0aWMgPSBSZWFjdC5SZWFjdE5vZGVcblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkU2FuZGJveFByb3BlcnRpZXMoKTogUHJvcGVydHlbXSB7XG4gIGlmIChcImV4dGVybmFsXCIgIT09ICdhbnQnKSB7XG4gICAgcmV0dXJuIFtdXG4gIH1cblxuICBjb25zdCBpc1NhbmRib3hlZCA9IFNhbmRib3hNYW5hZ2VyLmlzU2FuZGJveGluZ0VuYWJsZWQoKVxuXG4gIHJldHVybiBbXG4gICAge1xuICAgICAgbGFiZWw6ICdCYXNoIFNhbmRib3gnLFxuICAgICAgdmFsdWU6IGlzU2FuZGJveGVkID8gJ0VuYWJsZWQnIDogJ0Rpc2FibGVkJyxcbiAgICB9LFxuICBdXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZElERVByb3BlcnRpZXMoXG4gIG1jcENsaWVudHM6IE1DUFNlcnZlckNvbm5lY3Rpb25bXSxcbiAgaWRlSW5zdGFsbGF0aW9uU3RhdHVzOiBJREVFeHRlbnNpb25JbnN0YWxsYXRpb25TdGF0dXMgfCBudWxsID0gbnVsbCxcbiAgdGhlbWU6IFRoZW1lTmFtZSxcbik6IFByb3BlcnR5W10ge1xuICBjb25zdCBpZGVDbGllbnQgPSBtY3BDbGllbnRzPy5maW5kKGNsaWVudCA9PiBjbGllbnQubmFtZSA9PT0gJ2lkZScpXG5cbiAgaWYgKGlkZUluc3RhbGxhdGlvblN0YXR1cykge1xuICAgIGNvbnN0IGlkZU5hbWUgPSB0b0lERURpc3BsYXlOYW1lKGlkZUluc3RhbGxhdGlvblN0YXR1cy5pZGVUeXBlKVxuICAgIGNvbnN0IHBsdWdpbk9yRXh0ZW5zaW9uID0gaXNKZXRCcmFpbnNJZGUoaWRlSW5zdGFsbGF0aW9uU3RhdHVzLmlkZVR5cGUpXG4gICAgICA/ICdwbHVnaW4nXG4gICAgICA6ICdleHRlbnNpb24nXG5cbiAgICBpZiAoaWRlSW5zdGFsbGF0aW9uU3RhdHVzLmVycm9yKSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICB7XG4gICAgICAgICAgbGFiZWw6ICdJREUnLFxuICAgICAgICAgIHZhbHVlOiAoXG4gICAgICAgICAgICA8VGV4dD5cbiAgICAgICAgICAgICAge2NvbG9yKCdlcnJvcicsIHRoZW1lKShmaWd1cmVzLmNyb3NzKX0gRXJyb3IgaW5zdGFsbGluZyB7aWRlTmFtZX17JyAnfVxuICAgICAgICAgICAgICB7cGx1Z2luT3JFeHRlbnNpb259OiB7aWRlSW5zdGFsbGF0aW9uU3RhdHVzLmVycm9yfVxuICAgICAgICAgICAgICB7J1xcbid9UGxlYXNlIHJlc3RhcnQgeW91ciBJREUgYW5kIHRyeSBhZ2Fpbi5cbiAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICApLFxuICAgICAgICB9LFxuICAgICAgXVxuICAgIH1cblxuICAgIGlmIChpZGVJbnN0YWxsYXRpb25TdGF0dXMuaW5zdGFsbGVkKSB7XG4gICAgICBpZiAoaWRlQ2xpZW50ICYmIGlkZUNsaWVudC50eXBlID09PSAnY29ubmVjdGVkJykge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgaWRlSW5zdGFsbGF0aW9uU3RhdHVzLmluc3RhbGxlZFZlcnNpb24gIT09XG4gICAgICAgICAgaWRlQ2xpZW50LnNlcnZlckluZm8/LnZlcnNpb25cbiAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbGFiZWw6ICdJREUnLFxuICAgICAgICAgICAgICB2YWx1ZTogYENvbm5lY3RlZCB0byAke2lkZU5hbWV9ICR7cGx1Z2luT3JFeHRlbnNpb259IHZlcnNpb24gJHtpZGVJbnN0YWxsYXRpb25TdGF0dXMuaW5zdGFsbGVkVmVyc2lvbn0gKHNlcnZlciB2ZXJzaW9uOiAke2lkZUNsaWVudC5zZXJ2ZXJJbmZvPy52ZXJzaW9ufSlgLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbGFiZWw6ICdJREUnLFxuICAgICAgICAgICAgICB2YWx1ZTogYENvbm5lY3RlZCB0byAke2lkZU5hbWV9ICR7cGx1Z2luT3JFeHRlbnNpb259IHZlcnNpb24gJHtpZGVJbnN0YWxsYXRpb25TdGF0dXMuaW5zdGFsbGVkVmVyc2lvbn1gLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdJREUnLFxuICAgICAgICAgICAgdmFsdWU6IGBJbnN0YWxsZWQgJHtpZGVOYW1lfSAke3BsdWdpbk9yRXh0ZW5zaW9ufWAsXG4gICAgICAgICAgfSxcbiAgICAgICAgXVxuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIGlmIChpZGVDbGllbnQpIHtcbiAgICBjb25zdCBpZGVOYW1lID0gZ2V0SWRlQ2xpZW50TmFtZShpZGVDbGllbnQpID8/ICdJREUnXG4gICAgaWYgKGlkZUNsaWVudC50eXBlID09PSAnY29ubmVjdGVkJykge1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAge1xuICAgICAgICAgIGxhYmVsOiAnSURFJyxcbiAgICAgICAgICB2YWx1ZTogYENvbm5lY3RlZCB0byAke2lkZU5hbWV9IGV4dGVuc2lvbmAsXG4gICAgICAgIH0sXG4gICAgICBdXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBbXG4gICAgICAgIHtcbiAgICAgICAgICBsYWJlbDogJ0lERScsXG4gICAgICAgICAgdmFsdWU6IGAke2NvbG9yKCdlcnJvcicsIHRoZW1lKShmaWd1cmVzLmNyb3NzKX0gTm90IGNvbm5lY3RlZCB0byAke2lkZU5hbWV9YCxcbiAgICAgICAgfSxcbiAgICAgIF1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gW11cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkTWNwUHJvcGVydGllcyhcbiAgY2xpZW50czogTUNQU2VydmVyQ29ubmVjdGlvbltdID0gW10sXG4gIHRoZW1lOiBUaGVtZU5hbWUsXG4pOiBQcm9wZXJ0eVtdIHtcbiAgY29uc3Qgc2VydmVycyA9IGNsaWVudHMuZmlsdGVyKGNsaWVudCA9PiBjbGllbnQubmFtZSAhPT0gJ2lkZScpXG4gIGlmICghc2VydmVycy5sZW5ndGgpIHtcbiAgICByZXR1cm4gW11cbiAgfVxuXG4gIC8vIFN1bW1hcnkgaW5zdGVhZCBvZiBhIGZ1bGwgc2VydmVyIGxpc3Qg4oCUIDIwKyBzZXJ2ZXJzIHdyYXBwZWQgb250byBtYW55XG4gIC8vIHJvd3MsIGRvbWluYXRpbmcgdGhlIFN0YXR1cyBwYW5lLiBTaG93IGNvdW50cyBieSBzdGF0ZSArIC9tY3AgaGludC5cbiAgY29uc3QgYnlTdGF0ZSA9IHsgY29ubmVjdGVkOiAwLCBwZW5kaW5nOiAwLCBuZWVkc0F1dGg6IDAsIGZhaWxlZDogMCB9XG4gIGZvciAoY29uc3QgcyBvZiBzZXJ2ZXJzKSB7XG4gICAgaWYgKHMudHlwZSA9PT0gJ2Nvbm5lY3RlZCcpIGJ5U3RhdGUuY29ubmVjdGVkKytcbiAgICBlbHNlIGlmIChzLnR5cGUgPT09ICdwZW5kaW5nJykgYnlTdGF0ZS5wZW5kaW5nKytcbiAgICBlbHNlIGlmIChzLnR5cGUgPT09ICduZWVkcy1hdXRoJykgYnlTdGF0ZS5uZWVkc0F1dGgrK1xuICAgIGVsc2UgYnlTdGF0ZS5mYWlsZWQrK1xuICB9XG4gIGNvbnN0IHBhcnRzOiBzdHJpbmdbXSA9IFtdXG4gIGlmIChieVN0YXRlLmNvbm5lY3RlZClcbiAgICBwYXJ0cy5wdXNoKGNvbG9yKCdzdWNjZXNzJywgdGhlbWUpKGAke2J5U3RhdGUuY29ubmVjdGVkfSBjb25uZWN0ZWRgKSlcbiAgaWYgKGJ5U3RhdGUubmVlZHNBdXRoKVxuICAgIHBhcnRzLnB1c2goY29sb3IoJ3dhcm5pbmcnLCB0aGVtZSkoYCR7YnlTdGF0ZS5uZWVkc0F1dGh9IG5lZWQgYXV0aGApKVxuICBpZiAoYnlTdGF0ZS5wZW5kaW5nKVxuICAgIHBhcnRzLnB1c2goY29sb3IoJ2luYWN0aXZlJywgdGhlbWUpKGAke2J5U3RhdGUucGVuZGluZ30gcGVuZGluZ2ApKVxuICBpZiAoYnlTdGF0ZS5mYWlsZWQpXG4gICAgcGFydHMucHVzaChjb2xvcignZXJyb3InLCB0aGVtZSkoYCR7YnlTdGF0ZS5mYWlsZWR9IGZhaWxlZGApKVxuXG4gIHJldHVybiBbXG4gICAge1xuICAgICAgbGFiZWw6ICdNQ1Agc2VydmVycycsXG4gICAgICB2YWx1ZTogYCR7cGFydHMuam9pbignLCAnKX0gJHtjb2xvcignaW5hY3RpdmUnLCB0aGVtZSkoJ8K3IC9tY3AnKX1gLFxuICAgIH0sXG4gIF1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGJ1aWxkTWVtb3J5RGlhZ25vc3RpY3MoKTogUHJvbWlzZTxEaWFnbm9zdGljW10+IHtcbiAgY29uc3QgZmlsZXMgPSBhd2FpdCBnZXRNZW1vcnlGaWxlcygpXG4gIGNvbnN0IGxhcmdlRmlsZXMgPSBnZXRMYXJnZU1lbW9yeUZpbGVzKGZpbGVzKVxuXG4gIGNvbnN0IGRpYWdub3N0aWNzOiBEaWFnbm9zdGljW10gPSBbXVxuXG4gIGxhcmdlRmlsZXMuZm9yRWFjaChmaWxlID0+IHtcbiAgICBjb25zdCBkaXNwbGF5UGF0aCA9IGdldERpc3BsYXlQYXRoKGZpbGUucGF0aClcbiAgICBkaWFnbm9zdGljcy5wdXNoKFxuICAgICAgYExhcmdlICR7ZGlzcGxheVBhdGh9IHdpbGwgaW1wYWN0IHBlcmZvcm1hbmNlICgke2Zvcm1hdE51bWJlcihmaWxlLmNvbnRlbnQubGVuZ3RoKX0gY2hhcnMgPiAke2Zvcm1hdE51bWJlcihNQVhfTUVNT1JZX0NIQVJBQ1RFUl9DT1VOVCl9KWAsXG4gICAgKVxuICB9KVxuXG4gIHJldHVybiBkaWFnbm9zdGljc1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRTZXR0aW5nU291cmNlc1Byb3BlcnRpZXMoKTogUHJvcGVydHlbXSB7XG4gIGNvbnN0IGVuYWJsZWRTb3VyY2VzID0gZ2V0RW5hYmxlZFNldHRpbmdTb3VyY2VzKClcblxuICAvLyBGaWx0ZXIgdG8gb25seSBzb3VyY2VzIHRoYXQgYWN0dWFsbHkgaGF2ZSBzZXR0aW5ncyBsb2FkZWRcbiAgY29uc3Qgc291cmNlc1dpdGhTZXR0aW5ncyA9IGVuYWJsZWRTb3VyY2VzLmZpbHRlcihzb3VyY2UgPT4ge1xuICAgIGNvbnN0IHNldHRpbmdzID0gZ2V0U2V0dGluZ3NGb3JTb3VyY2Uoc291cmNlKVxuICAgIHJldHVybiBzZXR0aW5ncyAhPT0gbnVsbCAmJiBPYmplY3Qua2V5cyhzZXR0aW5ncykubGVuZ3RoID4gMFxuICB9KVxuXG4gIC8vIE1hcCBpbnRlcm5hbCBuYW1lcyB0byB1c2VyLWZyaWVuZGx5IG5hbWVzXG4gIC8vIEZvciBwb2xpY3lTZXR0aW5ncywgZGlzdGluZ3Vpc2ggYmV0d2VlbiByZW1vdGUgYW5kIGxvY2FsIChvciBza2lwIGlmIG5laXRoZXIgZXhpc3RzKVxuICBjb25zdCBzb3VyY2VOYW1lcyA9IHNvdXJjZXNXaXRoU2V0dGluZ3NcbiAgICAubWFwKHNvdXJjZSA9PiB7XG4gICAgICBpZiAoc291cmNlID09PSAncG9saWN5U2V0dGluZ3MnKSB7XG4gICAgICAgIGNvbnN0IG9yaWdpbiA9IGdldFBvbGljeVNldHRpbmdzT3JpZ2luKClcbiAgICAgICAgaWYgKG9yaWdpbiA9PT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybiBudWxsIC8vIFNraXAgLSBubyBwb2xpY3kgc2V0dGluZ3MgZXhpc3RcbiAgICAgICAgfVxuICAgICAgICBzd2l0Y2ggKG9yaWdpbikge1xuICAgICAgICAgIGNhc2UgJ3JlbW90ZSc6XG4gICAgICAgICAgICByZXR1cm4gJ0VudGVycHJpc2UgbWFuYWdlZCBzZXR0aW5ncyAocmVtb3RlKSdcbiAgICAgICAgICBjYXNlICdwbGlzdCc6XG4gICAgICAgICAgICByZXR1cm4gJ0VudGVycHJpc2UgbWFuYWdlZCBzZXR0aW5ncyAocGxpc3QpJ1xuICAgICAgICAgIGNhc2UgJ2hrbG0nOlxuICAgICAgICAgICAgcmV0dXJuICdFbnRlcnByaXNlIG1hbmFnZWQgc2V0dGluZ3MgKEhLTE0pJ1xuICAgICAgICAgIGNhc2UgJ2ZpbGUnOiB7XG4gICAgICAgICAgICBjb25zdCB7IGhhc0Jhc2UsIGhhc0Ryb3BJbnMgfSA9IGdldE1hbmFnZWRGaWxlU2V0dGluZ3NQcmVzZW5jZSgpXG4gICAgICAgICAgICBpZiAoaGFzQmFzZSAmJiBoYXNEcm9wSW5zKSB7XG4gICAgICAgICAgICAgIHJldHVybiAnRW50ZXJwcmlzZSBtYW5hZ2VkIHNldHRpbmdzIChmaWxlICsgZHJvcC1pbnMpJ1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGhhc0Ryb3BJbnMpIHtcbiAgICAgICAgICAgICAgcmV0dXJuICdFbnRlcnByaXNlIG1hbmFnZWQgc2V0dGluZ3MgKGRyb3AtaW5zKSdcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiAnRW50ZXJwcmlzZSBtYW5hZ2VkIHNldHRpbmdzIChmaWxlKSdcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSAnaGtjdSc6XG4gICAgICAgICAgICByZXR1cm4gJ0VudGVycHJpc2UgbWFuYWdlZCBzZXR0aW5ncyAoSEtDVSknXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBnZXRTZXR0aW5nU291cmNlRGlzcGxheU5hbWVDYXBpdGFsaXplZChzb3VyY2UpXG4gICAgfSlcbiAgICAuZmlsdGVyKChuYW1lKTogbmFtZSBpcyBzdHJpbmcgPT4gbmFtZSAhPT0gbnVsbClcblxuICByZXR1cm4gW1xuICAgIHtcbiAgICAgIGxhYmVsOiAnU2V0dGluZyBzb3VyY2VzJyxcbiAgICAgIHZhbHVlOiBzb3VyY2VOYW1lcyxcbiAgICB9LFxuICBdXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBidWlsZEluc3RhbGxhdGlvbkRpYWdub3N0aWNzKCk6IFByb21pc2U8RGlhZ25vc3RpY1tdPiB7XG4gIGNvbnN0IGluc3RhbGxXYXJuaW5ncyA9IGF3YWl0IGNoZWNrSW5zdGFsbCgpXG4gIHJldHVybiBpbnN0YWxsV2FybmluZ3MubWFwKHdhcm5pbmcgPT4gd2FybmluZy5tZXNzYWdlKVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYnVpbGRJbnN0YWxsYXRpb25IZWFsdGhEaWFnbm9zdGljcygpOiBQcm9taXNlPFxuICBEaWFnbm9zdGljW11cbj4ge1xuICBjb25zdCBkaWFnbm9zdGljID0gYXdhaXQgZ2V0RG9jdG9yRGlhZ25vc3RpYygpXG4gIGNvbnN0IGl0ZW1zOiBEaWFnbm9zdGljW10gPSBbXVxuXG4gIGNvbnN0IHsgZXJyb3JzOiB2YWxpZGF0aW9uRXJyb3JzIH0gPSBnZXRTZXR0aW5nc1dpdGhBbGxFcnJvcnMoKVxuICBpZiAodmFsaWRhdGlvbkVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgY29uc3QgaW52YWxpZEZpbGVzID0gQXJyYXkuZnJvbShcbiAgICAgIG5ldyBTZXQodmFsaWRhdGlvbkVycm9ycy5tYXAoZXJyb3IgPT4gZXJyb3IuZmlsZSkpLFxuICAgIClcbiAgICBjb25zdCBmaWxlTGlzdCA9IGludmFsaWRGaWxlcy5qb2luKCcsICcpXG5cbiAgICBpdGVtcy5wdXNoKFxuICAgICAgYEZvdW5kIGludmFsaWQgc2V0dGluZ3MgZmlsZXM6ICR7ZmlsZUxpc3R9LiBUaGV5IHdpbGwgYmUgaWdub3JlZC5gLFxuICAgIClcbiAgfVxuXG4gIC8vIEFkZCB3YXJuaW5ncyBmcm9tIGRvY3RvciBkaWFnbm9zdGljIChpbmNsdWRlcyBsZWZ0b3ZlciBpbnN0YWxsYXRpb25zLCBjb25maWcgbWlzbWF0Y2hlcywgZXRjLilcbiAgZGlhZ25vc3RpYy53YXJuaW5ncy5mb3JFYWNoKHdhcm5pbmcgPT4ge1xuICAgIGl0ZW1zLnB1c2god2FybmluZy5pc3N1ZSlcbiAgfSlcblxuICBpZiAoZGlhZ25vc3RpYy5oYXNVcGRhdGVQZXJtaXNzaW9ucyA9PT0gZmFsc2UpIHtcbiAgICBpdGVtcy5wdXNoKCdObyB3cml0ZSBwZXJtaXNzaW9ucyBmb3IgYXV0by11cGRhdGVzIChyZXF1aXJlcyBzdWRvKScpXG4gIH1cblxuICByZXR1cm4gaXRlbXNcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkQWNjb3VudFByb3BlcnRpZXMoKTogUHJvcGVydHlbXSB7XG4gIGNvbnN0IGFjY291bnRJbmZvID0gZ2V0QWNjb3VudEluZm9ybWF0aW9uKClcbiAgaWYgKCFhY2NvdW50SW5mbykge1xuICAgIHJldHVybiBbXVxuICB9XG5cbiAgY29uc3QgcHJvcGVydGllczogUHJvcGVydHlbXSA9IFtdXG5cbiAgaWYgKGFjY291bnRJbmZvLnN1YnNjcmlwdGlvbikge1xuICAgIHByb3BlcnRpZXMucHVzaCh7XG4gICAgICBsYWJlbDogJ0xvZ2luIG1ldGhvZCcsXG4gICAgICB2YWx1ZTogYCR7YWNjb3VudEluZm8uc3Vic2NyaXB0aW9ufSBBY2NvdW50YCxcbiAgICB9KVxuICB9XG5cbiAgaWYgKGFjY291bnRJbmZvLnRva2VuU291cmNlKSB7XG4gICAgcHJvcGVydGllcy5wdXNoKHtcbiAgICAgIGxhYmVsOiAnQXV0aCB0b2tlbicsXG4gICAgICB2YWx1ZTogYWNjb3VudEluZm8udG9rZW5Tb3VyY2UsXG4gICAgfSlcbiAgfVxuXG4gIGlmIChhY2NvdW50SW5mby5hcGlLZXlTb3VyY2UpIHtcbiAgICBwcm9wZXJ0aWVzLnB1c2goe1xuICAgICAgbGFiZWw6ICdBUEkga2V5JyxcbiAgICAgIHZhbHVlOiBhY2NvdW50SW5mby5hcGlLZXlTb3VyY2UsXG4gICAgfSlcbiAgfVxuXG4gIC8vIEhpZGUgc2Vuc2l0aXZlIGFjY291bnQgaW5mbyBpbiBkZW1vIG1vZGVcbiAgaWYgKGFjY291bnRJbmZvLm9yZ2FuaXphdGlvbiAmJiAhcHJvY2Vzcy5lbnYuSVNfREVNTykge1xuICAgIHByb3BlcnRpZXMucHVzaCh7XG4gICAgICBsYWJlbDogJ09yZ2FuaXphdGlvbicsXG4gICAgICB2YWx1ZTogYWNjb3VudEluZm8ub3JnYW5pemF0aW9uLFxuICAgIH0pXG4gIH1cbiAgaWYgKGFjY291bnRJbmZvLmVtYWlsICYmICFwcm9jZXNzLmVudi5JU19ERU1PKSB7XG4gICAgcHJvcGVydGllcy5wdXNoKHtcbiAgICAgIGxhYmVsOiAnRW1haWwnLFxuICAgICAgdmFsdWU6IGFjY291bnRJbmZvLmVtYWlsLFxuICAgIH0pXG4gIH1cblxuICByZXR1cm4gcHJvcGVydGllc1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRBUElQcm92aWRlclByb3BlcnRpZXMoKTogUHJvcGVydHlbXSB7XG4gIGNvbnN0IGFwaVByb3ZpZGVyID0gZ2V0QVBJUHJvdmlkZXIoKVxuXG4gIGNvbnN0IHByb3BlcnRpZXM6IFByb3BlcnR5W10gPSBbXVxuXG4gIGlmIChhcGlQcm92aWRlciAhPT0gJ2ZpcnN0UGFydHknKSB7XG4gICAgY29uc3QgcHJvdmlkZXJMYWJlbCA9IHtcbiAgICAgIGJlZHJvY2s6ICdBV1MgQmVkcm9jaycsXG4gICAgICB2ZXJ0ZXg6ICdHb29nbGUgVmVydGV4IEFJJyxcbiAgICAgIGZvdW5kcnk6ICdNaWNyb3NvZnQgRm91bmRyeScsXG4gICAgfVthcGlQcm92aWRlcl1cblxuICAgIHByb3BlcnRpZXMucHVzaCh7XG4gICAgICBsYWJlbDogJ0FQSSBwcm92aWRlcicsXG4gICAgICB2YWx1ZTogcHJvdmlkZXJMYWJlbCxcbiAgICB9KVxuICB9XG5cbiAgaWYgKGFwaVByb3ZpZGVyID09PSAnZmlyc3RQYXJ0eScpIHtcbiAgICBjb25zdCBhbnRocm9waWNCYXNlVXJsID0gcHJvY2Vzcy5lbnYuQU5USFJPUElDX0JBU0VfVVJMXG4gICAgaWYgKGFudGhyb3BpY0Jhc2VVcmwpIHtcbiAgICAgIHByb3BlcnRpZXMucHVzaCh7XG4gICAgICAgIGxhYmVsOiAnQW50aHJvcGljIGJhc2UgVVJMJyxcbiAgICAgICAgdmFsdWU6IGFudGhyb3BpY0Jhc2VVcmwsXG4gICAgICB9KVxuICAgIH1cbiAgfSBlbHNlIGlmIChhcGlQcm92aWRlciA9PT0gJ2JlZHJvY2snKSB7XG4gICAgY29uc3QgYmVkcm9ja0Jhc2VVcmwgPSBwcm9jZXNzLmVudi5CRURST0NLX0JBU0VfVVJMXG4gICAgaWYgKGJlZHJvY2tCYXNlVXJsKSB7XG4gICAgICBwcm9wZXJ0aWVzLnB1c2goe1xuICAgICAgICBsYWJlbDogJ0JlZHJvY2sgYmFzZSBVUkwnLFxuICAgICAgICB2YWx1ZTogYmVkcm9ja0Jhc2VVcmwsXG4gICAgICB9KVxuICAgIH1cblxuICAgIHByb3BlcnRpZXMucHVzaCh7XG4gICAgICBsYWJlbDogJ0FXUyByZWdpb24nLFxuICAgICAgdmFsdWU6IGdldEFXU1JlZ2lvbigpLFxuICAgIH0pXG5cbiAgICBpZiAoaXNFbnZUcnV0aHkocHJvY2Vzcy5lbnYuQ0xBVURFX0NPREVfU0tJUF9CRURST0NLX0FVVEgpKSB7XG4gICAgICBwcm9wZXJ0aWVzLnB1c2goe1xuICAgICAgICB2YWx1ZTogJ0FXUyBhdXRoIHNraXBwZWQnLFxuICAgICAgfSlcbiAgICB9XG4gIH0gZWxzZSBpZiAoYXBpUHJvdmlkZXIgPT09ICd2ZXJ0ZXgnKSB7XG4gICAgY29uc3QgdmVydGV4QmFzZVVybCA9IHByb2Nlc3MuZW52LlZFUlRFWF9CQVNFX1VSTFxuICAgIGlmICh2ZXJ0ZXhCYXNlVXJsKSB7XG4gICAgICBwcm9wZXJ0aWVzLnB1c2goe1xuICAgICAgICBsYWJlbDogJ1ZlcnRleCBiYXNlIFVSTCcsXG4gICAgICAgIHZhbHVlOiB2ZXJ0ZXhCYXNlVXJsLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICBjb25zdCBnY3BQcm9qZWN0ID0gcHJvY2Vzcy5lbnYuQU5USFJPUElDX1ZFUlRFWF9QUk9KRUNUX0lEXG4gICAgaWYgKGdjcFByb2plY3QpIHtcbiAgICAgIHByb3BlcnRpZXMucHVzaCh7XG4gICAgICAgIGxhYmVsOiAnR0NQIHByb2plY3QnLFxuICAgICAgICB2YWx1ZTogZ2NwUHJvamVjdCxcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgcHJvcGVydGllcy5wdXNoKHtcbiAgICAgIGxhYmVsOiAnRGVmYXVsdCByZWdpb24nLFxuICAgICAgdmFsdWU6IGdldERlZmF1bHRWZXJ0ZXhSZWdpb24oKSxcbiAgICB9KVxuXG4gICAgaWYgKGlzRW52VHJ1dGh5KHByb2Nlc3MuZW52LkNMQVVERV9DT0RFX1NLSVBfVkVSVEVYX0FVVEgpKSB7XG4gICAgICBwcm9wZXJ0aWVzLnB1c2goe1xuICAgICAgICB2YWx1ZTogJ0dDUCBhdXRoIHNraXBwZWQnLFxuICAgICAgfSlcbiAgICB9XG4gIH0gZWxzZSBpZiAoYXBpUHJvdmlkZXIgPT09ICdmb3VuZHJ5Jykge1xuICAgIGNvbnN0IGZvdW5kcnlCYXNlVXJsID0gcHJvY2Vzcy5lbnYuQU5USFJPUElDX0ZPVU5EUllfQkFTRV9VUkxcbiAgICBpZiAoZm91bmRyeUJhc2VVcmwpIHtcbiAgICAgIHByb3BlcnRpZXMucHVzaCh7XG4gICAgICAgIGxhYmVsOiAnTWljcm9zb2Z0IEZvdW5kcnkgYmFzZSBVUkwnLFxuICAgICAgICB2YWx1ZTogZm91bmRyeUJhc2VVcmwsXG4gICAgICB9KVxuICAgIH1cblxuICAgIGNvbnN0IGZvdW5kcnlSZXNvdXJjZSA9IHByb2Nlc3MuZW52LkFOVEhST1BJQ19GT1VORFJZX1JFU09VUkNFXG4gICAgaWYgKGZvdW5kcnlSZXNvdXJjZSkge1xuICAgICAgcHJvcGVydGllcy5wdXNoKHtcbiAgICAgICAgbGFiZWw6ICdNaWNyb3NvZnQgRm91bmRyeSByZXNvdXJjZScsXG4gICAgICAgIHZhbHVlOiBmb3VuZHJ5UmVzb3VyY2UsXG4gICAgICB9KVxuICAgIH1cblxuICAgIGlmIChpc0VudlRydXRoeShwcm9jZXNzLmVudi5DTEFVREVfQ09ERV9TS0lQX0ZPVU5EUllfQVVUSCkpIHtcbiAgICAgIHByb3BlcnRpZXMucHVzaCh7XG4gICAgICAgIHZhbHVlOiAnTWljcm9zb2Z0IEZvdW5kcnkgYXV0aCBza2lwcGVkJyxcbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgY29uc3QgcHJveHlVcmwgPSBnZXRQcm94eVVybCgpXG4gIGlmIChwcm94eVVybCkge1xuICAgIHByb3BlcnRpZXMucHVzaCh7XG4gICAgICBsYWJlbDogJ1Byb3h5JyxcbiAgICAgIHZhbHVlOiBwcm94eVVybCxcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgbXRsc0NvbmZpZyA9IGdldE1UTFNDb25maWcoKVxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FWFRSQV9DQV9DRVJUUykge1xuICAgIHByb3BlcnRpZXMucHVzaCh7XG4gICAgICBsYWJlbDogJ0FkZGl0aW9uYWwgQ0EgY2VydChzKScsXG4gICAgICB2YWx1ZTogcHJvY2Vzcy5lbnYuTk9ERV9FWFRSQV9DQV9DRVJUUyxcbiAgICB9KVxuICB9XG4gIGlmIChtdGxzQ29uZmlnKSB7XG4gICAgaWYgKG10bHNDb25maWcuY2VydCAmJiBwcm9jZXNzLmVudi5DTEFVREVfQ09ERV9DTElFTlRfQ0VSVCkge1xuICAgICAgcHJvcGVydGllcy5wdXNoKHtcbiAgICAgICAgbGFiZWw6ICdtVExTIGNsaWVudCBjZXJ0JyxcbiAgICAgICAgdmFsdWU6IHByb2Nlc3MuZW52LkNMQVVERV9DT0RFX0NMSUVOVF9DRVJULFxuICAgICAgfSlcbiAgICB9XG5cbiAgICBpZiAobXRsc0NvbmZpZy5rZXkgJiYgcHJvY2Vzcy5lbnYuQ0xBVURFX0NPREVfQ0xJRU5UX0tFWSkge1xuICAgICAgcHJvcGVydGllcy5wdXNoKHtcbiAgICAgICAgbGFiZWw6ICdtVExTIGNsaWVudCBrZXknLFxuICAgICAgICB2YWx1ZTogcHJvY2Vzcy5lbnYuQ0xBVURFX0NPREVfQ0xJRU5UX0tFWSxcbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHByb3BlcnRpZXNcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE1vZGVsRGlzcGxheUxhYmVsKG1haW5Mb29wTW9kZWw6IHN0cmluZyB8IG51bGwpOiBzdHJpbmcge1xuICBsZXQgbW9kZWxMYWJlbCA9IG1vZGVsRGlzcGxheVN0cmluZyhtYWluTG9vcE1vZGVsKVxuXG4gIGlmIChtYWluTG9vcE1vZGVsID09PSBudWxsICYmIGlzQ2xhdWRlQUlTdWJzY3JpYmVyKCkpIHtcbiAgICBjb25zdCBkZXNjcmlwdGlvbiA9IGdldENsYXVkZUFpVXNlckRlZmF1bHRNb2RlbERlc2NyaXB0aW9uKClcblxuICAgIG1vZGVsTGFiZWwgPSBgJHtjaGFsay5ib2xkKCdEZWZhdWx0Jyl9ICR7ZGVzY3JpcHRpb259YFxuICB9XG5cbiAgcmV0dXJuIG1vZGVsTGFiZWxcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBT0EsS0FBSyxNQUFNLE9BQU87QUFDekIsT0FBT0MsT0FBTyxNQUFNLFNBQVM7QUFDN0IsT0FBTyxLQUFLQyxLQUFLLE1BQU0sT0FBTztBQUM5QixTQUFTQyxLQUFLLEVBQUVDLElBQUksUUFBUSxXQUFXO0FBQ3ZDLGNBQWNDLG1CQUFtQixRQUFRLDBCQUEwQjtBQUNuRSxTQUFTQyxxQkFBcUIsRUFBRUMsb0JBQW9CLFFBQVEsV0FBVztBQUN2RSxTQUNFQyxtQkFBbUIsRUFDbkJDLGNBQWMsRUFDZEMsMEJBQTBCLFFBQ3JCLGVBQWU7QUFDdEIsU0FBU0MsbUJBQW1CLFFBQVEsdUJBQXVCO0FBQzNELFNBQ0VDLFlBQVks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 \ No newline at end of file +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjaGFsayIsImZpZ3VyZXMiLCJSZWFjdCIsImNvbG9yIiwiVGV4dCIsIk1DUFNlcnZlckNvbm5lY3Rpb24iLCJnZXRBY2NvdW50SW5mb3JtYXRpb24iLCJpc0NsYXVkZUFJU3Vic2NyaWJlciIsImdldExhcmdlTWVtb3J5RmlsZXMiLCJnZXRNZW1vcnlGaWxlcyIsIk1BWF9NRU1PUllfQ0hBUkFDVEVSX0NPVU5UIiwiZ2V0RG9jdG9yRGlhZ25vc3RpYyIsImdldEFXU1JlZ2lvbiIsImdldERlZmF1bHRWZXJ0ZXhSZWdpb24iLCJpc0VudlRydXRoeSIsImdldERpc3BsYXlQYXRoIiwiZm9ybWF0TnVtYmVyIiwiZ2V0SWRlQ2xpZW50TmFtZSIsIklERUV4dGVuc2lvbkluc3RhbGxhdGlvblN0YXR1cyIsImlzSmV0QnJhaW5zSWRlIiwidG9JREVEaXNwbGF5TmFtZSIsImdldENsYXVkZUFpVXNlckRlZmF1bHRNb2RlbERlc2NyaXB0aW9uIiwibW9kZWxEaXNwbGF5U3RyaW5nIiwiZ2V0QVBJUHJvdmlkZXIiLCJnZXRNVExTQ29uZmlnIiwiY2hlY2tJbnN0YWxsIiwiZ2V0UHJveHlVcmwiLCJTYW5kYm94TWFuYWdlciIsImdldFNldHRpbmdzV2l0aEFsbEVycm9ycyIsImdldEVuYWJsZWRTZXR0aW5nU291cmNlcyIsImdldFNldHRpbmdTb3VyY2VEaXNwbGF5TmFtZUNhcGl0YWxpemVkIiwiZ2V0TWFuYWdlZEZpbGVTZXR0aW5nc1ByZXNlbmNlIiwiZ2V0UG9saWN5U2V0dGluZ3NPcmlnaW4iLCJnZXRTZXR0aW5nc0ZvclNvdXJjZSIsIlRoZW1lTmFtZSIsIlByb3BlcnR5IiwibGFiZWwiLCJ2YWx1ZSIsIlJlYWN0Tm9kZSIsIkFycmF5IiwiRGlhZ25vc3RpYyIsImJ1aWxkU2FuZGJveFByb3BlcnRpZXMiLCJpc1NhbmRib3hlZCIsImlzU2FuZGJveGluZ0VuYWJsZWQiLCJidWlsZElERVByb3BlcnRpZXMiLCJtY3BDbGllbnRzIiwiaWRlSW5zdGFsbGF0aW9uU3RhdHVzIiwidGhlbWUiLCJpZGVDbGllbnQiLCJmaW5kIiwiY2xpZW50IiwibmFtZSIsImlkZU5hbWUiLCJpZGVUeXBlIiwicGx1Z2luT3JFeHRlbnNpb24iLCJlcnJvciIsImNyb3NzIiwiaW5zdGFsbGVkIiwidHlwZSIsImluc3RhbGxlZFZlcnNpb24iLCJzZXJ2ZXJJbmZvIiwidmVyc2lvbiIsImJ1aWxkTWNwUHJvcGVydGllcyIsImNsaWVudHMiLCJzZXJ2ZXJzIiwiZmlsdGVyIiwibGVuZ3RoIiwiYnlTdGF0ZSIsImNvbm5lY3RlZCIsInBlbmRpbmciLCJuZWVkc0F1dGgiLCJmYWlsZWQiLCJzIiwicGFydHMiLCJwdXNoIiwiam9pbiIsImJ1aWxkTWVtb3J5RGlhZ25vc3RpY3MiLCJQcm9taXNlIiwiZmlsZXMiLCJsYXJnZUZpbGVzIiwiZGlhZ25vc3RpY3MiLCJmb3JFYWNoIiwiZmlsZSIsImRpc3BsYXlQYXRoIiwicGF0aCIsImNvbnRlbnQiLCJidWlsZFNldHRpbmdTb3VyY2VzUHJvcGVydGllcyIsImVuYWJsZWRTb3VyY2VzIiwic291cmNlc1dpdGhTZXR0aW5ncyIsInNvdXJjZSIsInNldHRpbmdzIiwiT2JqZWN0Iiwia2V5cyIsInNvdXJjZU5hbWVzIiwibWFwIiwib3JpZ2luIiwiaGFzQmFzZSIsImhhc0Ryb3BJbnMiLCJidWlsZEluc3RhbGxhdGlvbkRpYWdub3N0aWNzIiwiaW5zdGFsbFdhcm5pbmdzIiwid2FybmluZyIsIm1lc3NhZ2UiLCJidWlsZEluc3RhbGxhdGlvbkhlYWx0aERpYWdub3N0aWNzIiwiZGlhZ25vc3RpYyIsIml0ZW1zIiwiZXJyb3JzIiwidmFsaWRhdGlvbkVycm9ycyIsImludmFsaWRGaWxlcyIsImZyb20iLCJTZXQiLCJmaWxlTGlzdCIsIndhcm5pbmdzIiwiaXNzdWUiLCJoYXNVcGRhdGVQZXJtaXNzaW9ucyIsImJ1aWxkQWNjb3VudFByb3BlcnRpZXMiLCJhY2NvdW50SW5mbyIsInByb3BlcnRpZXMiLCJzdWJzY3JpcHRpb24iLCJ0b2tlblNvdXJjZSIsImFwaUtleVNvdXJjZSIsIm9yZ2FuaXphdGlvbiIsInByb2Nlc3MiLCJlbnYiLCJJU19ERU1PIiwiZW1haWwiLCJidWlsZEFQSVByb3ZpZGVyUHJvcGVydGllcyIsImFwaVByb3ZpZGVyIiwicHJvdmlkZXJMYWJlbCIsImJlZHJvY2siLCJ2ZXJ0ZXgiLCJmb3VuZHJ5IiwiYW50aHJvcGljQmFzZVVybCIsIkFOVEhST1BJQ19CQVNFX1VSTCIsImJlZHJvY2tCYXNlVXJsIiwiQkVEUk9DS19CQVNFX1VSTCIsIkNMQVVERV9DT0RFX1NLSVBfQkVEUk9DS19BVVRIIiwidmVydGV4QmFzZVVybCIsIlZFUlRFWF9CQVNFX1VSTCIsImdjcFByb2plY3QiLCJBTlRIUk9QSUNfVkVSVEVYX1BST0pFQ1RfSUQiLCJDTEFVREVfQ09ERV9TS0lQX1ZFUlRFWF9BVVRIIiwiZm91bmRyeUJhc2VVcmwiLCJBTlRIUk9QSUNfRk9VTkRSWV9CQVNFX1VSTCIsImZvdW5kcnlSZXNvdXJjZSIsIkFOVEhST1BJQ19GT1VORFJZX1JFU09VUkNFIiwiQ0xBVURFX0NPREVfU0tJUF9GT1VORFJZX0FVVEgiLCJwcm94eVVybCIsIm10bHNDb25maWciLCJOT0RFX0VYVFJBX0NBX0NFUlRTIiwiY2VydCIsIkNMQVVERV9DT0RFX0NMSUVOVF9DRVJUIiwia2V5IiwiQ0xBVURFX0NPREVfQ0xJRU5UX0tFWSIsImdldE1vZGVsRGlzcGxheUxhYmVsIiwibWFpbkxvb3BNb2RlbCIsIm1vZGVsTGFiZWwiLCJkZXNjcmlwdGlvbiIsImJvbGQiXSwic291cmNlcyI6WyJzdGF0dXMudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjaGFsayBmcm9tICdjaGFsaydcbmltcG9ydCBmaWd1cmVzIGZyb20gJ2ZpZ3VyZXMnXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IGNvbG9yLCBUZXh0IH0gZnJvbSAnLi4vaW5rLmpzJ1xuaW1wb3J0IHR5cGUgeyBNQ1BTZXJ2ZXJDb25uZWN0aW9uIH0gZnJvbSAnLi4vc2VydmljZXMvbWNwL3R5cGVzLmpzJ1xuaW1wb3J0IHsgZ2V0QWNjb3VudEluZm9ybWF0aW9uLCBpc0NsYXVkZUFJU3Vic2NyaWJlciB9IGZyb20gJy4vYXV0aC5qcydcbmltcG9ydCB7XG4gIGdldExhcmdlTWVtb3J5RmlsZXMsXG4gIGdldE1lbW9yeUZpbGVzLFxuICBNQVhfTUVNT1JZX0NIQVJBQ1RFUl9DT1VOVCxcbn0gZnJvbSAnLi9jbGF1ZGVtZC5qcydcbmltcG9ydCB7IGdldERvY3RvckRpYWdub3N0aWMgfSBmcm9tICcuL2RvY3RvckRpYWdub3N0aWMuanMnXG5pbXBvcnQge1xuICBnZXRBV1NSZWdpb24sXG4gIGdldERlZmF1bHRWZXJ0ZXhSZWdpb24sXG4gIGlzRW52VHJ1dGh5LFxufSBmcm9tICcuL2VudlV0aWxzLmpzJ1xuaW1wb3J0IHsgZ2V0RGlzcGxheVBhdGggfSBmcm9tICcuL2ZpbGUuanMnXG5pbXBvcnQgeyBmb3JtYXROdW1iZXIgfSBmcm9tICcuL2Zvcm1hdC5qcydcbmltcG9ydCB7XG4gIGdldElkZUNsaWVudE5hbWUsXG4gIHR5cGUgSURFRXh0ZW5zaW9uSW5zdGFsbGF0aW9uU3RhdHVzLFxuICBpc0pldEJyYWluc0lkZSxcbiAgdG9JREVEaXNwbGF5TmFtZSxcbn0gZnJvbSAnLi9pZGUuanMnXG5pbXBvcnQge1xuICBnZXRDbGF1ZGVBaVVzZXJEZWZhdWx0TW9kZWxEZXNjcmlwdGlvbixcbiAgbW9kZWxEaXNwbGF5U3RyaW5nLFxufSBmcm9tICcuL21vZGVsL21vZGVsLmpzJ1xuaW1wb3J0IHsgZ2V0QVBJUHJvdmlkZXIgfSBmcm9tICcuL21vZGVsL3Byb3ZpZGVycy5qcydcbmltcG9ydCB7IGdldE1UTFNDb25maWcgfSBmcm9tICcuL210bHMuanMnXG5pbXBvcnQgeyBjaGVja0luc3RhbGwgfSBmcm9tICcuL25hdGl2ZUluc3RhbGxlci9pbmRleC5qcydcbmltcG9ydCB7IGdldFByb3h5VXJsIH0gZnJvbSAnLi9wcm94eS5qcydcbmltcG9ydCB7IFNhbmRib3hNYW5hZ2VyIH0gZnJvbSAnLi9zYW5kYm94L3NhbmRib3gtYWRhcHRlci5qcydcbmltcG9ydCB7IGdldFNldHRpbmdzV2l0aEFsbEVycm9ycyB9IGZyb20gJy4vc2V0dGluZ3MvYWxsRXJyb3JzLmpzJ1xuaW1wb3J0IHtcbiAgZ2V0RW5hYmxlZFNldHRpbmdTb3VyY2VzLFxuICBnZXRTZXR0aW5nU291cmNlRGlzcGxheU5hbWVDYXBpdGFsaXplZCxcbn0gZnJvbSAnLi9zZXR0aW5ncy9jb25zdGFudHMuanMnXG5pbXBvcnQge1xuICBnZXRNYW5hZ2VkRmlsZVNldHRpbmdzUHJlc2VuY2UsXG4gIGdldFBvbGljeVNldHRpbmdzT3JpZ2luLFxuICBnZXRTZXR0aW5nc0ZvclNvdXJjZSxcbn0gZnJvbSAnLi9zZXR0aW5ncy9zZXR0aW5ncy5qcydcbmltcG9ydCB0eXBlIHsgVGhlbWVOYW1lIH0gZnJvbSAnLi90aGVtZS5qcydcblxuZXhwb3J0IHR5cGUgUHJvcGVydHkgPSB7XG4gIGxhYmVsPzogc3RyaW5nXG4gIHZhbHVlOiBSZWFjdC5SZWFjdE5vZGUgfCBBcnJheTxzdHJpbmc+XG59XG5cbmV4cG9ydCB0eXBlIERpYWdub3N0aWMgPSBSZWFjdC5SZWFjdE5vZGVcblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkU2FuZGJveFByb3BlcnRpZXMoKTogUHJvcGVydHlbXSB7XG4gIGlmIChcImV4dGVybmFsXCIgIT09ICdhbnQnKSB7XG4gICAgcmV0dXJuIFtdXG4gIH1cblxuICBjb25zdCBpc1NhbmRib3hlZCA9IFNhbmRib3hNYW5hZ2VyLmlzU2FuZGJveGluZ0VuYWJsZWQoKVxuXG4gIHJldHVybiBbXG4gICAge1xuICAgICAgbGFiZWw6ICdCYXNoIFNhbmRib3gnLFxuICAgICAgdmFsdWU6IGlzU2FuZGJveGVkID8gJ0VuYWJsZWQnIDogJ0Rpc2FibGVkJyxcbiAgICB9LFxuICBdXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZElERVByb3BlcnRpZXMoXG4gIG1jcENsaWVudHM6IE1DUFNlcnZlckNvbm5lY3Rpb25bXSxcbiAgaWRlSW5zdGFsbGF0aW9uU3RhdHVzOiBJREVFeHRlbnNpb25JbnN0YWxsYXRpb25TdGF0dXMgfCBudWxsID0gbnVsbCxcbiAgdGhlbWU6IFRoZW1lTmFtZSxcbik6IFByb3BlcnR5W10ge1xuICBjb25zdCBpZGVDbGllbnQgPSBtY3BDbGllbnRzPy5maW5kKGNsaWVudCA9PiBjbGllbnQubmFtZSA9PT0gJ2lkZScpXG5cbiAgaWYgKGlkZUluc3RhbGxhdGlvblN0YXR1cykge1xuICAgIGNvbnN0IGlkZU5hbWUgPSB0b0lERURpc3BsYXlOYW1lKGlkZUluc3RhbGxhdGlvblN0YXR1cy5pZGVUeXBlKVxuICAgIGNvbnN0IHBsdWdpbk9yRXh0ZW5zaW9uID0gaXNKZXRCcmFpbnNJZGUoaWRlSW5zdGFsbGF0aW9uU3RhdHVzLmlkZVR5cGUpXG4gICAgICA/ICdwbHVnaW4nXG4gICAgICA6ICdleHRlbnNpb24nXG5cbiAgICBpZiAoaWRlSW5zdGFsbGF0aW9uU3RhdHVzLmVycm9yKSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICB7XG4gICAgICAgICAgbGFiZWw6ICdJREUnLFxuICAgICAgICAgIHZhbHVlOiAoXG4gICAgICAgICAgICA8VGV4dD5cbiAgICAgICAgICAgICAge2NvbG9yKCdlcnJvcicsIHRoZW1lKShmaWd1cmVzLmNyb3NzKX0gRXJyb3IgaW5zdGFsbGluZyB7aWRlTmFtZX17JyAnfVxuICAgICAgICAgICAgICB7cGx1Z2luT3JFeHRlbnNpb259OiB7aWRlSW5zdGFsbGF0aW9uU3RhdHVzLmVycm9yfVxuICAgICAgICAgICAgICB7J1xcbid9UGxlYXNlIHJlc3RhcnQgeW91ciBJREUgYW5kIHRyeSBhZ2Fpbi5cbiAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICApLFxuICAgICAgICB9LFxuICAgICAgXVxuICAgIH1cblxuICAgIGlmIChpZGVJbnN0YWxsYXRpb25TdGF0dXMuaW5zdGFsbGVkKSB7XG4gICAgICBpZiAoaWRlQ2xpZW50ICYmIGlkZUNsaWVudC50eXBlID09PSAnY29ubmVjdGVkJykge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgaWRlSW5zdGFsbGF0aW9uU3RhdHVzLmluc3RhbGxlZFZlcnNpb24gIT09XG4gICAgICAgICAgaWRlQ2xpZW50LnNlcnZlckluZm8/LnZlcnNpb25cbiAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbGFiZWw6ICdJREUnLFxuICAgICAgICAgICAgICB2YWx1ZTogYENvbm5lY3RlZCB0byAke2lkZU5hbWV9ICR7cGx1Z2luT3JFeHRlbnNpb259IHZlcnNpb24gJHtpZGVJbnN0YWxsYXRpb25TdGF0dXMuaW5zdGFsbGVkVmVyc2lvbn0gKHNlcnZlciB2ZXJzaW9uOiAke2lkZUNsaWVudC5zZXJ2ZXJJbmZvPy52ZXJzaW9ufSlgLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbGFiZWw6ICdJREUnLFxuICAgICAgICAgICAgICB2YWx1ZTogYENvbm5lY3RlZCB0byAke2lkZU5hbWV9ICR7cGx1Z2luT3JFeHRlbnNpb259IHZlcnNpb24gJHtpZGVJbnN0YWxsYXRpb25TdGF0dXMuaW5zdGFsbGVkVmVyc2lvbn1gLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdJREUnLFxuICAgICAgICAgICAgdmFsdWU6IGBJbnN0YWxsZWQgJHtpZGVOYW1lfSAke3BsdWdpbk9yRXh0ZW5zaW9ufWAsXG4gICAgICAgICAgfSxcbiAgICAgICAgXVxuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIGlmIChpZGVDbGllbnQpIHtcbiAgICBjb25zdCBpZGVOYW1lID0gZ2V0SWRlQ2xpZW50TmFtZShpZGVDbGllbnQpID8/ICdJREUnXG4gICAgaWYgKGlkZUNsaWVudC50eXBlID09PSAnY29ubmVjdGVkJykge1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAge1xuICAgICAgICAgIGxhYmVsOiAnSURFJyxcbiAgICAgICAgICB2YWx1ZTogYENvbm5lY3RlZCB0byAke2lkZU5hbWV9IGV4dGVuc2lvbmAsXG4gICAgICAgIH0sXG4gICAgICBdXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBbXG4gICAgICAgIHtcbiAgICAgICAgICBsYWJlbDogJ0lERScsXG4gICAgICAgICAgdmFsdWU6IGAke2NvbG9yKCdlcnJvcicsIHRoZW1lKShmaWd1cmVzLmNyb3NzKX0gTm90IGNvbm5lY3RlZCB0byAke2lkZU5hbWV9YCxcbiAgICAgICAgfSxcbiAgICAgIF1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gW11cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkTWNwUHJvcGVydGllcyhcbiAgY2xpZW50czogTUNQU2VydmVyQ29ubmVjdGlvbltdID0gW10sXG4gIHRoZW1lOiBUaGVtZU5hbWUsXG4pOiBQcm9wZXJ0eVtdIHtcbiAgY29uc3Qgc2VydmVycyA9IGNsaWVudHMuZmlsdGVyKGNsaWVudCA9PiBjbGllbnQubmFtZSAhPT0gJ2lkZScpXG4gIGlmICghc2VydmVycy5sZW5ndGgpIHtcbiAgICByZXR1cm4gW11cbiAgfVxuXG4gIC8vIFN1bW1hcnkgaW5zdGVhZCBvZiBhIGZ1bGwgc2VydmVyIGxpc3Qg4oCUIDIwKyBzZXJ2ZXJzIHdyYXBwZWQgb250byBtYW55XG4gIC8vIHJvd3MsIGRvbWluYXRpbmcgdGhlIFN0YXR1cyBwYW5lLiBTaG93IGNvdW50cyBieSBzdGF0ZSArIC9tY3AgaGludC5cbiAgY29uc3QgYnlTdGF0ZSA9IHsgY29ubmVjdGVkOiAwLCBwZW5kaW5nOiAwLCBuZWVkc0F1dGg6IDAsIGZhaWxlZDogMCB9XG4gIGZvciAoY29uc3QgcyBvZiBzZXJ2ZXJzKSB7XG4gICAgaWYgKHMudHlwZSA9PT0gJ2Nvbm5lY3RlZCcpIGJ5U3RhdGUuY29ubmVjdGVkKytcbiAgICBlbHNlIGlmIChzLnR5cGUgPT09ICdwZW5kaW5nJykgYnlTdGF0ZS5wZW5kaW5nKytcbiAgICBlbHNlIGlmIChzLnR5cGUgPT09ICduZWVkcy1hdXRoJykgYnlTdGF0ZS5uZWVkc0F1dGgrK1xuICAgIGVsc2UgYnlTdGF0ZS5mYWlsZWQrK1xuICB9XG4gIGNvbnN0IHBhcnRzOiBzdHJpbmdbXSA9IFtdXG4gIGlmIChieVN0YXRlLmNvbm5lY3RlZClcbiAgICBwYXJ0cy5wdXNoKGNvbG9yKCdzdWNjZXNzJywgdGhlbWUpKGAke2J5U3RhdGUuY29ubmVjdGVkfSBjb25uZWN0ZWRgKSlcbiAgaWYgKGJ5U3RhdGUubmVlZHNBdXRoKVxuICAgIHBhcnRzLnB1c2goY29sb3IoJ3dhcm5pbmcnLCB0aGVtZSkoYCR7YnlTdGF0ZS5uZWVkc0F1dGh9IG5lZWQgYXV0aGApKVxuICBpZiAoYnlTdGF0ZS5wZW5kaW5nKVxuICAgIHBhcnRzLnB1c2goY29sb3IoJ2luYWN0aXZlJywgdGhlbWUpKGAke2J5U3RhdGUucGVuZGluZ30gcGVuZGluZ2ApKVxuICBpZiAoYnlTdGF0ZS5mYWlsZWQpXG4gICAgcGFydHMucHVzaChjb2xvcignZXJyb3InLCB0aGVtZSkoYCR7YnlTdGF0ZS5mYWlsZWR9IGZhaWxlZGApKVxuXG4gIHJldHVybiBbXG4gICAge1xuICAgICAgbGFiZWw6ICdNQ1Agc2VydmVycycsXG4gICAgICB2YWx1ZTogYCR7cGFydHMuam9pbignLCAnKX0gJHtjb2xvcignaW5hY3RpdmUnLCB0aGVtZSkoJ8K3IC9tY3AnKX1gLFxuICAgIH0sXG4gIF1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGJ1aWxkTWVtb3J5RGlhZ25vc3RpY3MoKTogUHJvbWlzZTxEaWFnbm9zdGljW10+IHtcbiAgY29uc3QgZmlsZXMgPSBhd2FpdCBnZXRNZW1vcnlGaWxlcygpXG4gIGNvbnN0IGxhcmdlRmlsZXMgPSBnZXRMYXJnZU1lbW9yeUZpbGVzKGZpbGVzKVxuXG4gIGNvbnN0IGRpYWdub3N0aWNzOiBEaWFnbm9zdGljW10gPSBbXVxuXG4gIGxhcmdlRmlsZXMuZm9yRWFjaChmaWxlID0+IHtcbiAgICBjb25zdCBkaXNwbGF5UGF0aCA9IGdldERpc3BsYXlQYXRoKGZpbGUucGF0aClcbiAgICBkaWFnbm9zdGljcy5wdXNoKFxuICAgICAgYExhcmdlICR7ZGlzcGxheVBhdGh9IHdpbGwgaW1wYWN0IHBlcmZvcm1hbmNlICgke2Zvcm1hdE51bWJlcihmaWxlLmNvbnRlbnQubGVuZ3RoKX0gY2hhcnMgPiAke2Zvcm1hdE51bWJlcihNQVhfTUVNT1JZX0NIQVJBQ1RFUl9DT1VOVCl9KWAsXG4gICAgKVxuICB9KVxuXG4gIHJldHVybiBkaWFnbm9zdGljc1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRTZXR0aW5nU291cmNlc1Byb3BlcnRpZXMoKTogUHJvcGVydHlbXSB7XG4gIGNvbnN0IGVuYWJsZWRTb3VyY2VzID0gZ2V0RW5hYmxlZFNldHRpbmdTb3VyY2VzKClcblxuICAvLyBGaWx0ZXIgdG8gb25seSBzb3VyY2VzIHRoYXQgYWN0dWFsbHkgaGF2ZSBzZXR0aW5ncyBsb2FkZWRcbiAgY29uc3Qgc291cmNlc1dpdGhTZXR0aW5ncyA9IGVuYWJsZWRTb3VyY2VzLmZpbHRlcihzb3VyY2UgPT4ge1xuICAgIGNvbnN0IHNldHRpbmdzID0gZ2V0U2V0dGluZ3NGb3JTb3VyY2Uoc291cmNlKVxuICAgIHJldHVybiBzZXR0aW5ncyAhPT0gbnVsbCAmJiBPYmplY3Qua2V5cyhzZXR0aW5ncykubGVuZ3RoID4gMFxuICB9KVxuXG4gIC8vIE1hcCBpbnRlcm5hbCBuYW1lcyB0byB1c2VyLWZyaWVuZGx5IG5hbWVzXG4gIC8vIEZvciBwb2xpY3lTZXR0aW5ncywgZGlzdGluZ3Vpc2ggYmV0d2VlbiByZW1vdGUgYW5kIGxvY2FsIChvciBza2lwIGlmIG5laXRoZXIgZXhpc3RzKVxuICBjb25zdCBzb3VyY2VOYW1lcyA9IHNvdXJjZXNXaXRoU2V0dGluZ3NcbiAgICAubWFwKHNvdXJjZSA9PiB7XG4gICAgICBpZiAoc291cmNlID09PSAncG9saWN5U2V0dGluZ3MnKSB7XG4gICAgICAgIGNvbnN0IG9yaWdpbiA9IGdldFBvbGljeVNldHRpbmdzT3JpZ2luKClcbiAgICAgICAgaWYgKG9yaWdpbiA9PT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybiBudWxsIC8vIFNraXAgLSBubyBwb2xpY3kgc2V0dGluZ3MgZXhpc3RcbiAgICAgICAgfVxuICAgICAgICBzd2l0Y2ggKG9yaWdpbikge1xuICAgICAgICAgIGNhc2UgJ3JlbW90ZSc6XG4gICAgICAgICAgICByZXR1cm4gJ0VudGVycHJpc2UgbWFuYWdlZCBzZXR0aW5ncyAocmVtb3RlKSdcbiAgICAgICAgICBjYXNlICdwbGlzdCc6XG4gICAgICAgICAgICByZXR1cm4gJ0VudGVycHJpc2UgbWFuYWdlZCBzZXR0aW5ncyAocGxpc3QpJ1xuICAgICAgICAgIGNhc2UgJ2hrbG0nOlxuICAgICAgICAgICAgcmV0dXJuICdFbnRlcnByaXNlIG1hbmFnZWQgc2V0dGluZ3MgKEhLTE0pJ1xuICAgICAgICAgIGNhc2UgJ2ZpbGUnOiB7XG4gICAgICAgICAgICBjb25zdCB7IGhhc0Jhc2UsIGhhc0Ryb3BJbnMgfSA9IGdldE1hbmFnZWRGaWxlU2V0dGluZ3NQcmVzZW5jZSgpXG4gICAgICAgICAgICBpZiAoaGFzQmFzZSAmJiBoYXNEcm9wSW5zKSB7XG4gICAgICAgICAgICAgIHJldHVybiAnRW50ZXJwcmlzZSBtYW5hZ2VkIHNldHRpbmdzIChmaWxlICsgZHJvcC1pbnMpJ1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGhhc0Ryb3BJbnMpIHtcbiAgICAgICAgICAgICAgcmV0dXJuICdFbnRlcnByaXNlIG1hbmFnZWQgc2V0dGluZ3MgKGRyb3AtaW5zKSdcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiAnRW50ZXJwcmlzZSBtYW5hZ2VkIHNldHRpbmdzIChmaWxlKSdcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSAnaGtjdSc6XG4gICAgICAgICAgICByZXR1cm4gJ0VudGVycHJpc2UgbWFuYWdlZCBzZXR0aW5ncyAoSEtDVSknXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBnZXRTZXR0aW5nU291cmNlRGlzcGxheU5hbWVDYXBpdGFsaXplZChzb3VyY2UpXG4gICAgfSlcbiAgICAuZmlsdGVyKChuYW1lKTogbmFtZSBpcyBzdHJpbmcgPT4gbmFtZSAhPT0gbnVsbClcblxuICByZXR1cm4gW1xuICAgIHtcbiAgICAgIGxhYmVsOiAnU2V0dGluZyBzb3VyY2VzJyxcbiAgICAgIHZhbHVlOiBzb3VyY2VOYW1lcyxcbiAgICB9LFxuICBdXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBidWlsZEluc3RhbGxhdGlvbkRpYWdub3N0aWNzKCk6IFByb21pc2U8RGlhZ25vc3RpY1tdPiB7XG4gIGNvbnN0IGluc3RhbGxXYXJuaW5ncyA9IGF3YWl0IGNoZWNrSW5zdGFsbCgpXG4gIHJldHVybiBpbnN0YWxsV2FybmluZ3MubWFwKHdhcm5pbmcgPT4gd2FybmluZy5tZXNzYWdlKVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYnVpbGRJbnN0YWxsYXRpb25IZWFsdGhEaWFnbm9zdGljcygpOiBQcm9taXNlPFxuICBEaWFnbm9zdGljW11cbj4ge1xuICBjb25zdCBkaWFnbm9zdGljID0gYXdhaXQgZ2V0RG9jdG9yRGlhZ25vc3RpYygpXG4gIGNvbnN0IGl0ZW1zOiBEaWFnbm9zdGljW10gPSBbXVxuXG4gIGNvbnN0IHsgZXJyb3JzOiB2YWxpZGF0aW9uRXJyb3JzIH0gPSBnZXRTZXR0aW5nc1dpdGhBbGxFcnJvcnMoKVxuICBpZiAodmFsaWRhdGlvbkVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgY29uc3QgaW52YWxpZEZpbGVzID0gQXJyYXkuZnJvbShcbiAgICAgIG5ldyBTZXQodmFsaWRhdGlvbkVycm9ycy5tYXAoZXJyb3IgPT4gZXJyb3IuZmlsZSkpLFxuICAgIClcbiAgICBjb25zdCBmaWxlTGlzdCA9IGludmFsaWRGaWxlcy5qb2luKCcsICcpXG5cbiAgICBpdGVtcy5wdXNoKFxuICAgICAgYEZvdW5kIGludmFsaWQgc2V0dGluZ3MgZmlsZXM6ICR7ZmlsZUxpc3R9LiBUaGV5IHdpbGwgYmUgaWdub3JlZC5gLFxuICAgIClcbiAgfVxuXG4gIC8vIEFkZCB3YXJuaW5ncyBmcm9tIGRvY3RvciBkaWFnbm9zdGljIChpbmNsdWRlcyBsZWZ0b3ZlciBpbnN0YWxsYXRpb25zLCBjb25maWcgbWlzbWF0Y2hlcywgZXRjLilcbiAgZGlhZ25vc3RpYy53YXJuaW5ncy5mb3JFYWNoKHdhcm5pbmcgPT4ge1xuICAgIGl0ZW1zLnB1c2god2FybmluZy5pc3N1ZSlcbiAgfSlcblxuICBpZiAoZGlhZ25vc3RpYy5oYXNVcGRhdGVQZXJtaXNzaW9ucyA9PT0gZmFsc2UpIHtcbiAgICBpdGVtcy5wdXNoKCdObyB3cml0ZSBwZXJtaXNzaW9ucyBmb3IgYXV0by11cGRhdGVzIChyZXF1aXJlcyBzdWRvKScpXG4gIH1cblxuICByZXR1cm4gaXRlbXNcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkQWNjb3VudFByb3BlcnRpZXMoKTogUHJvcGVydHlbXSB7XG4gIGNvbnN0IGFjY291bnRJbmZvID0gZ2V0QWNjb3VudEluZm9ybWF0aW9uKClcbiAgaWYgKCFhY2NvdW50SW5mbykge1xuICAgIHJldHVybiBbXVxuICB9XG5cbiAgY29uc3QgcHJvcGVydGllczogUHJvcGVydHlbXSA9IFtdXG5cbiAgaWYgKGFjY291bnRJbmZvLnN1YnNjcmlwdGlvbikge1xuICAgIHByb3BlcnRpZXMucHVzaCh7XG4gICAgICBsYWJlbDogJ0xvZ2luIG1ldGhvZCcsXG4gICAgICB2YWx1ZTogYCR7YWNjb3VudEluZm8uc3Vic2NyaXB0aW9ufSBBY2NvdW50YCxcbiAgICB9KVxuICB9XG5cbiAgaWYgKGFjY291bnRJbmZvLnRva2VuU291cmNlKSB7XG4gICAgcHJvcGVydGllcy5wdXNoKHtcbiAgICAgIGxhYmVsOiAnQXV0aCB0b2tlbicsXG4gICAgICB2YWx1ZTogYWNjb3VudEluZm8udG9rZW5Tb3VyY2UsXG4gICAgfSlcbiAgfVxuXG4gIGlmIChhY2NvdW50SW5mby5hcGlLZXlTb3VyY2UpIHtcbiAgICBwcm9wZXJ0aWVzLnB1c2goe1xuICAgICAgbGFiZWw6ICdBUEkga2V5JyxcbiAgICAgIHZhbHVlOiBhY2NvdW50SW5mby5hcGlLZXlTb3VyY2UsXG4gICAgfSlcbiAgfVxuXG4gIC8vIEhpZGUgc2Vuc2l0aXZlIGFjY291bnQgaW5mbyBpbiBkZW1vIG1vZGVcbiAgaWYgKGFjY291bnRJbmZvLm9yZ2FuaXphdGlvbiAmJiAhcHJvY2Vzcy5lbnYuSVNfREVNTykge1xuICAgIHByb3BlcnRpZXMucHVzaCh7XG4gICAgICBsYWJlbDogJ09yZ2FuaXphdGlvbicsXG4gICAgICB2YWx1ZTogYWNjb3VudEluZm8ub3JnYW5pemF0aW9uLFxuICAgIH0pXG4gIH1cbiAgaWYgKGFjY291bnRJbmZvLmVtYWlsICYmICFwcm9jZXNzLmVudi5JU19ERU1PKSB7XG4gICAgcHJvcGVydGllcy5wdXNoKHtcbiAgICAgIGxhYmVsOiAnRW1haWwnLFxuICAgICAgdmFsdWU6IGFjY291bnRJbmZvLmVtYWlsLFxuICAgIH0pXG4gIH1cblxuICByZXR1cm4gcHJvcGVydGllc1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRBUElQcm92aWRlclByb3BlcnRpZXMoKTogUHJvcGVydHlbXSB7XG4gIGNvbnN0IGFwaVByb3ZpZGVyID0gZ2V0QVBJUHJvdmlkZXIoKVxuXG4gIGNvbnN0IHByb3BlcnRpZXM6IFByb3BlcnR5W10gPSBbXVxuXG4gIGlmIChhcGlQcm92aWRlciAhPT0gJ2ZpcnN0UGFydHknKSB7XG4gICAgY29uc3QgcHJvdmlkZXJMYWJlbCA9IHtcbiAgICAgIGJlZHJvY2s6ICdBV1MgQmVkcm9jaycsXG4gICAgICB2ZXJ0ZXg6ICdHb29nbGUgVmVydGV4IEFJJyxcbiAgICAgIGZvdW5kcnk6ICdNaWNyb3NvZnQgRm91bmRyeScsXG4gICAgfVthcGlQcm92aWRlcl1cblxuICAgIHByb3BlcnRpZXMucHVzaCh7XG4gICAgICBsYWJlbDogJ0FQSSBwcm92aWRlcicsXG4gICAgICB2YWx1ZTogcHJvdmlkZXJMYWJlbCxcbiAgICB9KVxuICB9XG5cbiAgaWYgKGFwaVByb3ZpZGVyID09PSAnZmlyc3RQYXJ0eScpIHtcbiAgICBjb25zdCBhbnRocm9waWNCYXNlVXJsID0gcHJvY2Vzcy5lbnYuQU5USFJPUElDX0JBU0VfVVJMXG4gICAgaWYgKGFudGhyb3BpY0Jhc2VVcmwpIHtcbiAgICAgIHByb3BlcnRpZXMucHVzaCh7XG4gICAgICAgIGxhYmVsOiAnQW50aHJvcGljIGJhc2UgVVJMJyxcbiAgICAgICAgdmFsdWU6IGFudGhyb3BpY0Jhc2VVcmwsXG4gICAgICB9KVxuICAgIH1cbiAgfSBlbHNlIGlmIChhcGlQcm92aWRlciA9PT0gJ2JlZHJvY2snKSB7XG4gICAgY29uc3QgYmVkcm9ja0Jhc2VVcmwgPSBwcm9jZXNzLmVudi5CRURST0NLX0JBU0VfVVJMXG4gICAgaWYgKGJlZHJvY2tCYXNlVXJsKSB7XG4gICAgICBwcm9wZXJ0aWVzLnB1c2goe1xuICAgICAgICBsYWJlbDogJ0JlZHJvY2sgYmFzZSBVUkwnLFxuICAgICAgICB2YWx1ZTogYmVkcm9ja0Jhc2VVcmwsXG4gICAgICB9KVxuICAgIH1cblxuICAgIHByb3BlcnRpZXMucHVzaCh7XG4gICAgICBsYWJlbDogJ0FXUyByZWdpb24nLFxuICAgICAgdmFsdWU6IGdldEFXU1JlZ2lvbigpLFxuICAgIH0pXG5cbiAgICBpZiAoaXNFbnZUcnV0aHkocHJvY2Vzcy5lbnYuQ0xBVURFX0NPREVfU0tJUF9CRURST0NLX0FVVEgpKSB7XG4gICAgICBwcm9wZXJ0aWVzLnB1c2goe1xuICAgICAgICB2YWx1ZTogJ0FXUyBhdXRoIHNraXBwZWQnLFxuICAgICAgfSlcbiAgICB9XG4gIH0gZWxzZSBpZiAoYXBpUHJvdmlkZXIgPT09ICd2ZXJ0ZXgnKSB7XG4gICAgY29uc3QgdmVydGV4QmFzZVVybCA9IHByb2Nlc3MuZW52LlZFUlRFWF9CQVNFX1VSTFxuICAgIGlmICh2ZXJ0ZXhCYXNlVXJsKSB7XG4gICAgICBwcm9wZXJ0aWVzLnB1c2goe1xuICAgICAgICBsYWJlbDogJ1ZlcnRleCBiYXNlIFVSTCcsXG4gICAgICAgIHZhbHVlOiB2ZXJ0ZXhCYXNlVXJsLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICBjb25zdCBnY3BQcm9qZWN0ID0gcHJvY2Vzcy5lbnYuQU5USFJPUElDX1ZFUlRFWF9QUk9KRUNUX0lEXG4gICAgaWYgKGdjcFByb2plY3QpIHtcbiAgICAgIHByb3BlcnRpZXMucHVzaCh7XG4gICAgICAgIGxhYmVsOiAnR0NQIHByb2plY3QnLFxuICAgICAgICB2YWx1ZTogZ2NwUHJvamVjdCxcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgcHJvcGVydGllcy5wdXNoKHtcbiAgICAgIGxhYmVsOiAnRGVmYXVsdCByZWdpb24nLFxuICAgICAgdmFsdWU6IGdldERlZmF1bHRWZXJ0ZXhSZWdpb24oKSxcbiAgICB9KVxuXG4gICAgaWYgKGlzRW52VHJ1dGh5KHByb2Nlc3MuZW52LkNMQVVERV9DT0RFX1NLSVBfVkVSVEVYX0FVVEgpKSB7XG4gICAgICBwcm9wZXJ0aWVzLnB1c2goe1xuICAgICAgICB2YWx1ZTogJ0dDUCBhdXRoIHNraXBwZWQnLFxuICAgICAgfSlcbiAgICB9XG4gIH0gZWxzZSBpZiAoYXBpUHJvdmlkZXIgPT09ICdmb3VuZHJ5Jykge1xuICAgIGNvbnN0IGZvdW5kcnlCYXNlVXJsID0gcHJvY2Vzcy5lbnYuQU5USFJPUElDX0ZPVU5EUllfQkFTRV9VUkxcbiAgICBpZiAoZm91bmRyeUJhc2VVcmwpIHtcbiAgICAgIHByb3BlcnRpZXMucHVzaCh7XG4gICAgICAgIGxhYmVsOiAnTWljcm9zb2Z0IEZvdW5kcnkgYmFzZSBVUkwnLFxuICAgICAgICB2YWx1ZTogZm91bmRyeUJhc2VVcmwsXG4gICAgICB9KVxuICAgIH1cblxuICAgIGNvbnN0IGZvdW5kcnlSZXNvdXJjZSA9IHByb2Nlc3MuZW52LkFOVEhST1BJQ19GT1VORFJZX1JFU09VUkNFXG4gICAgaWYgKGZvdW5kcnlSZXNvdXJjZSkge1xuICAgICAgcHJvcGVydGllcy5wdXNoKHtcbiAgICAgICAgbGFiZWw6ICdNaWNyb3NvZnQgRm91bmRyeSByZXNvdXJjZScsXG4gICAgICAgIHZhbHVlOiBmb3VuZHJ5UmVzb3VyY2UsXG4gICAgICB9KVxuICAgIH1cblxuICAgIGlmIChpc0VudlRydXRoeShwcm9jZXNzLmVudi5DTEFVREVfQ09ERV9TS0lQX0ZPVU5EUllfQVVUSCkpIHtcbiAgICAgIHByb3BlcnRpZXMucHVzaCh7XG4gICAgICAgIHZhbHVlOiAnTWljcm9zb2Z0IEZvdW5kcnkgYXV0aCBza2lwcGVkJyxcbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgY29uc3QgcHJveHlVcmwgPSBnZXRQcm94eVVybCgpXG4gIGlmIChwcm94eVVybCkge1xuICAgIHByb3BlcnRpZXMucHVzaCh7XG4gICAgICBsYWJlbDogJ1Byb3h5JyxcbiAgICAgIHZhbHVlOiBwcm94eVVybCxcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgbXRsc0NvbmZpZyA9IGdldE1UTFNDb25maWcoKVxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FWFRSQV9DQV9DRVJUUykge1xuICAgIHByb3BlcnRpZXMucHVzaCh7XG4gICAgICBsYWJlbDogJ0FkZGl0aW9uYWwgQ0EgY2VydChzKScsXG4gICAgICB2YWx1ZTogcHJvY2Vzcy5lbnYuTk9ERV9FWFRSQV9DQV9DRVJUUyxcbiAgICB9KVxuICB9XG4gIGlmIChtdGxzQ29uZmlnKSB7XG4gICAgaWYgKG10bHNDb25maWcuY2VydCAmJiBwcm9jZXNzLmVudi5DTEFVREVfQ09ERV9DTElFTlRfQ0VSVCkge1xuICAgICAgcHJvcGVydGllcy5wdXNoKHtcbiAgICAgICAgbGFiZWw6ICdtVExTIGNsaWVudCBjZXJ0JyxcbiAgICAgICAgdmFsdWU6IHByb2Nlc3MuZW52LkNMQVVERV9DT0RFX0NMSUVOVF9DRVJULFxuICAgICAgfSlcbiAgICB9XG5cbiAgICBpZiAobXRsc0NvbmZpZy5rZXkgJiYgcHJvY2Vzcy5lbnYuQ0xBVURFX0NPREVfQ0xJRU5UX0tFWSkge1xuICAgICAgcHJvcGVydGllcy5wdXNoKHtcbiAgICAgICAgbGFiZWw6ICdtVExTIGNsaWVudCBrZXknLFxuICAgICAgICB2YWx1ZTogcHJvY2Vzcy5lbnYuQ0xBVURFX0NPREVfQ0xJRU5UX0tFWSxcbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHByb3BlcnRpZXNcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE1vZGVsRGlzcGxheUxhYmVsKG1haW5Mb29wTW9kZWw6IHN0cmluZyB8IG51bGwpOiBzdHJpbmcge1xuICBsZXQgbW9kZWxMYWJlbCA9IG1vZGVsRGlzcGxheVN0cmluZyhtYWluTG9vcE1vZGVsKVxuXG4gIGlmIChtYWluTG9vcE1vZGVsID09PSBudWxsICYmIGlzQ2xhdWRlQUlTdWJzY3JpYmVyKCkpIHtcbiAgICBjb25zdCBkZXNjcmlwdGlvbiA9IGdldENsYXVkZUFpVXNlckRlZmF1bHRNb2RlbERlc2NyaXB0aW9uKClcblxuICAgIG1vZGVsTGFiZWwgPSBgJHtjaGFsay5ib2xkKCdEZWZhdWx0Jyl9ICR7ZGVzY3JpcHRpb259YFxuICB9XG5cbiAgcmV0dXJuIG1vZGVsTGFiZWxcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBT0EsS0FBSyxNQUFNLE9BQU87QUFDekIsT0FBT0MsT0FBTyxNQUFNLFNBQVM7QUFDN0IsT0FBTyxLQUFLQyxLQUFLLE1BQU0sT0FBTztBQUM5QixTQUFTQyxLQUFLLEVBQUVDLElBQUksUUFBUSxXQUFXO0FBQ3ZDLGNBQWNDLG1CQUFtQixRQUFRLDBCQUEwQjtBQUNuRSxTQUFTQyxxQkFBcUIsRUFBRUMsb0JBQW9CLFFBQVEsV0FBVztBQUN2RSxTQUNFQyxtQkFBbUIsRUFDbkJDLGNBQWMsRUFDZEMsMEJBQTBCLFFBQ3JCLGVBQWU7QUFDdEIsU0FBU0MsbUJBQW1CLFFBQVEsdUJBQXVCO0FBQzNELFNBQ0VDLFlBQVks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 diff --git a/src/utils/subprocessEnv.ts b/src/utils/subprocessEnv.ts index 4eb62c99..49c9007c 100644 --- a/src/utils/subprocessEnv.ts +++ b/src/utils/subprocessEnv.ts @@ -1,4 +1,12 @@ import { isEnvTruthy } from './envUtils.js' +import { getConfiguredProviderSecretEnvNames } from './model/providerConfig.js' + +const GITHUB_PROVIDER_SECRET_ENVS = [ + 'GITHUB_MODELS_TOKEN', + 'GITHUB_MODELS_API_KEY', + 'GITHUB_COPILOT_TOKEN', + 'GITHUB_COPILOT_API_KEY', +] as const /** * Env vars to strip from subprocess environments when running inside GitHub @@ -89,7 +97,11 @@ export function subprocessEnv(): NodeJS.ProcessEnv { : process.env } const env = { ...process.env, ...proxyEnv } - for (const k of GHA_SUBPROCESS_SCRUB) { + for (const k of new Set([ + ...GHA_SUBPROCESS_SCRUB, + ...GITHUB_PROVIDER_SECRET_ENVS, + ...getConfiguredProviderSecretEnvNames(), + ])) { delete env[k] // GitHub Actions auto-creates INPUT_ for `with:` inputs, duplicating // secrets like INPUT_ANTHROPIC_API_KEY. No-op for vars that aren't action inputs. diff --git a/src/utils/swarm/spawnUtils.ts b/src/utils/swarm/spawnUtils.ts index cfccdf5a..9d79f826 100644 --- a/src/utils/swarm/spawnUtils.ts +++ b/src/utils/swarm/spawnUtils.ts @@ -11,10 +11,18 @@ import { } from '../../bootstrap/state.js' import { quote } from '../bash/shellQuote.js' import { isInBundledMode } from '../bundledMode.js' +import { getConfiguredProviderSecretEnvNames } from '../model/providerConfig.js' import type { PermissionMode } from '../permissions/PermissionMode.js' import { getTeammateModeFromSnapshot } from './backends/teammateModeSnapshot.js' import { TEAMMATE_COMMAND_ENV_VAR } from './constants.js' +const GITHUB_PROVIDER_SECRET_ENVS = [ + 'GITHUB_MODELS_TOKEN', + 'GITHUB_MODELS_API_KEY', + 'GITHUB_COPILOT_TOKEN', + 'GITHUB_COPILOT_API_KEY', +] as const + /** * Gets the command to use for spawning teammate processes. * Uses TEAMMATE_COMMAND_ENV_VAR if set, otherwise falls back to the @@ -142,5 +150,15 @@ export function buildInheritedEnvVars(): string { } } + for (const key of new Set([ + ...getConfiguredProviderSecretEnvNames(), + ...GITHUB_PROVIDER_SECRET_ENVS, + ])) { + const value = process.env[key] + if (value !== undefined && value !== '') { + envVars.push(`${key}=${quote([value])}`) + } + } + return envVars.join(' ') } From 55c72e7a25a93fc78947377dac0298b41c33978d Mon Sep 17 00:00:00 2001 From: robll-v1 <3922295484@qq.com> Date: Fri, 3 Apr 2026 11:37:20 +0800 Subject: [PATCH 2/3] docs: add GitHub provider usage to README Document how to use GitHub Models and GitHub Copilot with the restored Claude Code runtime, including auth sources and current Copilot model limitations. --- README.md | 120 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 120 insertions(+) diff --git a/README.md b/README.md index 4dfcb59c..4861e7e2 100644 --- a/README.md +++ b/README.md @@ -66,6 +66,66 @@ bun run version ``` + ## Provider support + + The restored CLI now has an initial multi-provider path for GitHub-backed inference. + + Supported providers today: + + - `github-models`: OpenAI-compatible GitHub Models endpoint + - `github-copilot`: GitHub Copilot account-backed endpoint for Copilot-hosted Claude models + + Authentication lookup order for both providers is: + + - provider-specific env var + - `GH_TOKEN` + - `GITHUB_TOKEN` + - `gh auth token` + + Log in with GitHub CLI first if you want account-style auth instead of manually setting a token: + + ```bash + gh auth login + ``` + + Use GitHub Models with the restored Claude Code runtime: + + ```bash + bun run dev --settings '{"provider":"github-models"}' + ``` + + Or choose a specific GitHub Models model: + + ```bash + bun run dev --settings '{"provider":"github-models"}' --model "openai/gpt-4.1" + ``` + + Use GitHub Copilot with the restored Claude Code runtime: + + ```bash + bun run dev --settings '{"provider":"github-copilot"}' + ``` + + Switch to a validated Copilot-hosted Claude model: + + ```bash + bun run dev --settings '{"provider":"github-copilot"}' --model "claude-opus-4.6" + ``` + + Copilot-backed models currently validated with the Claude Code runtime and tool loop are: + + - `claude-sonnet-4.6` + - `claude-opus-4.6` + - `claude-haiku-4.5` + - `claude-sonnet-4.5` + - `claude-opus-4.5` + - `claude-sonnet-4` + + Current limitation: + + - Copilot-hosted Claude models are working through the existing Claude Code agent/runtime path. + - Copilot-hosted GPT/Grok style models are not fully wired into the Claude Code runtime yet because they primarily require Copilot's `/responses` API path rather than the current chat/messages shim. + ## 中文说明 # 还原后的 Claude Code 源码 @@ -131,3 +191,63 @@ ```bash bun run version ``` + + ### Provider 支持 + + 当前恢复版 CLI 已经补上了一条初步的多 provider 路径,可以接 GitHub 侧的推理服务。 + + 目前可用的 provider: + + - `github-models`:OpenAI-compatible 的 GitHub Models 接口 + - `github-copilot`:基于 GitHub Copilot 账号态的接口,当前主要支持 Copilot 托管的 Claude 模型 + + 这两个 provider 的鉴权查找顺序都是: + + - provider 专用环境变量 + - `GH_TOKEN` + - `GITHUB_TOKEN` + - `gh auth token` + + 如果你想走“GitHub 账号登录态”而不是手填 token,可以先执行: + + ```bash + gh auth login + ``` + + 使用 GitHub Models 跑恢复版 Claude Code runtime: + + ```bash + bun run dev --settings '{"provider":"github-models"}' + ``` + + 指定 GitHub Models 模型: + + ```bash + bun run dev --settings '{"provider":"github-models"}' --model "openai/gpt-4.1" + ``` + + 使用 GitHub Copilot 跑恢复版 Claude Code runtime: + + ```bash + bun run dev --settings '{"provider":"github-copilot"}' + ``` + + 切换到已经验证可用的 Copilot Claude 模型: + + ```bash + bun run dev --settings '{"provider":"github-copilot"}' --model "claude-opus-4.6" + ``` + + 当前已经验证能跑 Claude Code runtime 和工具循环的 Copilot 模型有: + + - `claude-sonnet-4.6` + - `claude-opus-4.6` + - `claude-haiku-4.5` + - `claude-sonnet-4.5` + - `claude-opus-4.5` + - `claude-sonnet-4` + + 当前限制: + + - Copilot 托管的 Claude 模型已经可以走现有 Claude Code agent/runtime 路径。 + - Copilot 托管的 GPT/Grok 一类模型还没有完整接进来,因为它们主要需要走 Copilot 的 `/responses` API,而当前适配层主要还是 chat/messages 这条路径。 From e2e0a804fdf75bbac58945858312bb296d5ea438 Mon Sep 17 00:00:00 2001 From: robll-v1 <3922295484@qq.com> Date: Fri, 3 Apr 2026 18:19:31 +0800 Subject: [PATCH 3/3] feat: add interactive provider selection Add a visual /provider flow and config entry so users can switch providers and models without editing settings by hand. Document the new provider picker workflow in the README. --- README.md | 31 +++ src/commands.ts | 2 + src/commands/provider/index.ts | 16 ++ src/commands/provider/provider.tsx | 235 ++++++++++++++++++++++ src/components/ProviderPicker.tsx | 306 +++++++++++++++++++++++++++++ src/components/Settings/Config.tsx | 60 +++++- src/utils/model/providerConfig.ts | 81 ++++++-- 7 files changed, 716 insertions(+), 15 deletions(-) create mode 100644 src/commands/provider/index.ts create mode 100644 src/commands/provider/provider.tsx create mode 100644 src/components/ProviderPicker.tsx diff --git a/README.md b/README.md index 4861e7e2..7dbc825a 100644 --- a/README.md +++ b/README.md @@ -106,6 +106,22 @@ bun run dev --settings '{"provider":"github-copilot"}' ``` + You can also switch providers interactively inside the CLI: + + ```text + /provider + ``` + + The picker shows the available providers, saves the selection to user + settings, and then opens the existing model picker for the selected provider. + + Useful shortcuts: + + - `/provider` opens the visual provider picker + - `/provider info` shows the current provider and any active environment override + - `/provider github-copilot` switches directly to a specific provider + - `/model` still works after provider changes and only shows models supported by the active provider + Switch to a validated Copilot-hosted Claude model: ```bash @@ -232,6 +248,21 @@ bun run dev --settings '{"provider":"github-copilot"}' ``` + 现在也可以在 CLI 内通过交互式命令切换 provider: + + ```text + /provider + ``` + + 这个 picker 会列出当前可用 provider,把选择写入用户 settings,然后继续打开该 provider 对应的模型选择器。 + + 常用命令: + + - `/provider`:打开可视化 provider 选择器 + - `/provider info`:显示当前 provider 和是否存在环境变量覆盖 + - `/provider github-copilot`:直接切换到指定 provider + - `/model`:在切 provider 之后继续切模型,只显示当前 provider 支持的模型 + 切换到已经验证可用的 Copilot Claude 模型: ```bash diff --git a/src/commands.ts b/src/commands.ts index 10f03b22..05a4ab94 100644 --- a/src/commands.ts +++ b/src/commands.ts @@ -175,6 +175,7 @@ import exportCommand from './commands/export/index.js' import model from './commands/model/index.js' import tag from './commands/tag/index.js' import outputStyle from './commands/output-style/index.js' +import provider from './commands/provider/index.js' import remoteEnv from './commands/remote-env/index.js' import upgrade from './commands/upgrade/index.js' import { @@ -289,6 +290,7 @@ const COMMANDS = memoize((): Command[] => [ mobile, model, outputStyle, + provider, remoteEnv, plugin, pr_comments, diff --git a/src/commands/provider/index.ts b/src/commands/provider/index.ts new file mode 100644 index 00000000..68705123 --- /dev/null +++ b/src/commands/provider/index.ts @@ -0,0 +1,16 @@ +import type { Command } from '../../commands.js' +import { shouldInferenceConfigCommandBeImmediate } from '../../utils/immediateCommand.js' +import { getProviderDisplayName } from '../../utils/model/providerConfig.js' + +export default { + type: 'local-jsx', + name: 'provider', + get description() { + return `Set the model provider for Claude Code (currently ${getProviderDisplayName()})` + }, + argumentHint: '[provider]', + get immediate() { + return shouldInferenceConfigCommandBeImmediate() + }, + load: () => import('./provider.js'), +} satisfies Command diff --git a/src/commands/provider/provider.tsx b/src/commands/provider/provider.tsx new file mode 100644 index 00000000..402544ac --- /dev/null +++ b/src/commands/provider/provider.tsx @@ -0,0 +1,235 @@ +import chalk from 'chalk' +import * as React from 'react' +import type { CommandResultDisplay } from '../../commands.js' +import { + getProviderSelectionSummary, + ProviderSelectionFlow, + type ProviderSelectionResult, +} from '../../components/ProviderPicker.js' +import { COMMON_HELP_ARGS, COMMON_INFO_ARGS } from '../../constants/xml.js' +import { useAppState, useSetAppState } from '../../state/AppState.js' +import type { LocalJSXCommandCall } from '../../types/command.js' +import { + isFastModeEnabled, + isFastModeSupportedByModel, +} from '../../utils/fastMode.js' +import { + getActiveProviderConfig, + getAllProviderConfigs, + getEnvironmentProviderOverrideId, + getProviderConfigById, + getStoredProviderId, + getSuggestedModelForProvider, + normalizeProviderSettingValue, +} from '../../utils/model/providerConfig.js' +import { modelDisplayString } from '../../utils/model/model.js' +import { updateSettingsForSource } from '../../utils/settings/settings.js' + +function ProviderPickerWrapper({ + onDone, +}: { + onDone: ( + result?: string, + options?: { display?: CommandResultDisplay }, + ) => void +}) { + const currentProviderName = getActiveProviderConfig().name + + const handleComplete = React.useCallback( + (result: ProviderSelectionResult) => { + if (!result.changed) { + onDone(`Kept provider as ${chalk.bold(currentProviderName)}`, { + display: 'system', + }) + return + } + + onDone(getProviderSelectionSummary(result)) + }, + [currentProviderName, onDone], + ) + + const handleCancel = React.useCallback(() => { + onDone(`Kept provider as ${chalk.bold(currentProviderName)}`, { + display: 'system', + }) + }, [currentProviderName, onDone]) + + return ( + + ) +} + +function ShowProviderAndClose({ + onDone, +}: { + onDone: (result?: string) => void +}) { + const activeProvider = getActiveProviderConfig() + const storedProviderId = getStoredProviderId() ?? 'firstParty' + const envOverrideId = getEnvironmentProviderOverrideId() + let message = `Current provider: ${chalk.bold(activeProvider.name)}` + + if (activeProvider.baseURL) { + message += `\nBase URL: ${activeProvider.baseURL}` + } + + if (envOverrideId) { + message += `\nSaved preference: ${getProviderConfigById(storedProviderId).name}` + message += `\nEnvironment override: ${getProviderConfigById(envOverrideId).name}` + } + + onDone(message) + return null +} + +function resolveProviderArg(input: string) { + const normalized = input.trim().toLowerCase() + const alias = + { + anthropic: 'firstParty', + default: 'firstParty', + firstparty: 'firstParty', + 'first-party': 'firstParty', + copilot: 'github-copilot', + 'github-copilot': 'github-copilot', + 'github-models': 'github-models', + models: 'github-models', + }[normalized] ?? normalized + + return getAllProviderConfigs().find( + provider => + provider.id.toLowerCase() === alias || + provider.name.toLowerCase() === normalized, + ) +} + +function SetProviderAndClose({ + args, + onDone, +}: { + args: string + onDone: ( + result?: string, + options?: { display?: CommandResultDisplay }, + ) => void +}) { + const mainLoopModel = useAppState(state => state.mainLoopModel) + const mainLoopModelForSession = useAppState( + state => state.mainLoopModelForSession, + ) + const setAppState = useSetAppState() + + React.useEffect(() => { + const provider = resolveProviderArg(args) + + if (!provider) { + const availableProviders = getAllProviderConfigs() + .map(option => option.id) + .join(', ') + onDone( + `Unknown provider '${args}'. Available providers: ${availableProviders}`, + { + display: 'system', + }, + ) + return + } + + const previousStoredProviderId = getStoredProviderId() ?? 'firstParty' + const envOverrideId = getEnvironmentProviderOverrideId() + + updateSettingsForSource('userSettings', { + provider: normalizeProviderSettingValue(provider.id), + }) + + if (envOverrideId && envOverrideId !== provider.id) { + const changed = + normalizeProviderSettingValue(previousStoredProviderId) !== + normalizeProviderSettingValue(provider.id) + + if (!changed) { + onDone(`Kept provider as ${chalk.bold(getActiveProviderConfig().name)}`, { + display: 'system', + }) + return + } + + onDone( + `Saved provider preference as ${provider.name}. Current session still uses ${getProviderConfigById(envOverrideId).name} because environment variables override provider selection.`, + { display: 'system' }, + ) + return + } + + const nextModel = getSuggestedModelForProvider(provider.id, mainLoopModel) + let wasFastModeDisabled = false + + setAppState(prev => { + wasFastModeDisabled = + isFastModeEnabled() && + !isFastModeSupportedByModel(nextModel) && + !!prev.fastMode + + return { + ...prev, + mainLoopModel: nextModel, + mainLoopModelForSession: null, + ...(wasFastModeDisabled ? { fastMode: false } : {}), + } + }) + + const changed = + normalizeProviderSettingValue(previousStoredProviderId) !== + normalizeProviderSettingValue(provider.id) || + mainLoopModel !== nextModel || + mainLoopModelForSession !== null + + if (!changed) { + onDone(`Kept provider as ${chalk.bold(provider.name)}`, { + display: 'system', + }) + return + } + + let message = `Set provider to ${provider.name}` + message += ` · Model set to ${modelDisplayString(nextModel)}` + + if (wasFastModeDisabled) { + message += ' · Fast mode OFF' + } + + onDone(message) + }, [args, mainLoopModel, mainLoopModelForSession, onDone, setAppState]) + + return null +} + +export const call: LocalJSXCommandCall = async (onDone, _context, args) => { + const trimmedArgs = args?.trim() || '' + + if (COMMON_INFO_ARGS.includes(trimmedArgs)) { + return + } + + if (COMMON_HELP_ARGS.includes(trimmedArgs)) { + const availableProviders = getAllProviderConfigs() + .map(provider => provider.id) + .join(', ') + onDone( + `Run /provider to open the provider selection menu, or /provider [providerId] to set the provider. Available providers: ${availableProviders}`, + { display: 'system' }, + ) + return + } + + if (trimmedArgs) { + return + } + + return +} diff --git a/src/components/ProviderPicker.tsx b/src/components/ProviderPicker.tsx new file mode 100644 index 00000000..5c8e1989 --- /dev/null +++ b/src/components/ProviderPicker.tsx @@ -0,0 +1,306 @@ +import * as React from 'react' +import { useState } from 'react' +import { useExitOnCtrlCDWithKeybindings } from '../hooks/useExitOnCtrlCDWithKeybindings.js' +import { Box, Text } from '../ink.js' +import { useAppState, useSetAppState } from '../state/AppState.js' +import type { ModelSetting } from '../utils/model/model.js' +import { modelDisplayString } from '../utils/model/model.js' +import { + getActiveProviderConfig, + getAllProviderConfigs, + getEnvironmentProviderOverrideId, + getProviderConfigById, + getStoredProviderId, + getSuggestedModelForProvider, + normalizeProviderSettingValue, + type ResolvedProviderConfig, +} from '../utils/model/providerConfig.js' +import { + isFastModeEnabled, + isFastModeSupportedByModel, +} from '../utils/fastMode.js' +import { updateSettingsForSource } from '../utils/settings/settings.js' +import { ModelPicker } from './ModelPicker.js' +import { Select } from './CustomSelect/index.js' +import { Byline } from './design-system/Byline.js' +import { KeyboardShortcutHint } from './design-system/KeyboardShortcutHint.js' +import { ConfigurableShortcutHint } from './ConfigurableShortcutHint.js' + +export type ProviderPickerProps = { + initial?: string + onSelect: (providerId: string) => void + onCancel?: () => void + isStandaloneCommand?: boolean + headerText?: string +} + +export type ProviderSelectionResult = { + providerId: string + providerName: string + model: string | null + changed: boolean + savedOnly: boolean + wasFastModeDisabled: boolean + envOverrideId?: string + envOverrideName?: string +} + +type ProviderSelectionFlowProps = { + onComplete: (result: ProviderSelectionResult) => void + onCancel?: () => void + isStandaloneCommand?: boolean +} + +function getProviderDescription(provider: ResolvedProviderConfig): string { + switch (provider.type) { + case 'firstParty': + return 'Anthropic direct API and Claude account auth' + case 'github-models': + return 'GitHub Models via gh auth token or GITHUB_TOKEN' + case 'github-copilot': + return 'GitHub Copilot account-backed Claude models' + case 'bedrock': + return 'Amazon Bedrock credentials from your AWS environment' + case 'vertex': + return 'Google Vertex AI project and credentials' + case 'foundry': + return 'Azure AI Foundry resource and credentials' + case 'anthropic-compatible': + return provider.baseURL + ? `Custom Anthropic-compatible provider · ${provider.baseURL}` + : 'Custom Anthropic-compatible provider' + case 'openai-compatible': + return provider.baseURL + ? `Custom OpenAI-compatible provider · ${provider.baseURL}` + : 'Custom OpenAI-compatible provider' + } +} + +export function ProviderPicker({ + initial, + onSelect, + onCancel, + isStandaloneCommand, + headerText, +}: ProviderPickerProps) { + const exitState = useExitOnCtrlCDWithKeybindings() + const providerOptions = getAllProviderConfigs().map(provider => ({ + label: provider.name, + value: provider.id, + description: getProviderDescription(provider), + })) + const envOverrideId = getEnvironmentProviderOverrideId() + const envOverrideName = envOverrideId + ? getProviderConfigById(envOverrideId).name + : undefined + const initialValue = + initial && providerOptions.some(option => option.value === initial) + ? initial + : getActiveProviderConfig().id + const visibleCount = Math.min(8, providerOptions.length) + + return ( + + + + Select provider + + + {headerText ?? + 'Choose the model provider for Claude Code. When the change can take effect immediately, model selection opens next.'} + + {envOverrideName ? ( + + Current session is forced to {envOverrideName} by environment + variables. Picking another provider saves a preference for future + sessions. + + ) : null} + + + +