diff --git a/.env.example b/.env.example index 9299fee7..32ae4bf8 100644 --- a/.env.example +++ b/.env.example @@ -22,6 +22,14 @@ BETTER_AUTH_URL=http://localhost:3000 OPENAI_API_KEY=sk-123456789 ANTHROPIC_API_KEY=sk-123456789 +# Azure OpenAI +# AZURE_API_KEY=your-azure-api-key +# Either resource name or base URL — not both: +# AZURE_RESOURCE_NAME=your-resource-name +# AZURE_OPENAI_BASE_URL=https://your-resource.openai.azure.com +# AZURE_API_VERSION=v1 +# AZURE_USE_DEPLOYMENT_BASED_URLS=false + # AWS Bedrock # AWS_BEARER_TOKEN_BEDROCK=your-bearer-token # AWS_REGION=us-east-1 diff --git a/apps/backend/package.json b/apps/backend/package.json index aa9f1264..6cddb802 100644 --- a/apps/backend/package.json +++ b/apps/backend/package.json @@ -38,6 +38,7 @@ "dependencies": { "@ai-sdk/amazon-bedrock": "^4.0.69", "@ai-sdk/anthropic": "^3.0.15", + "@ai-sdk/azure": "^3.0.49", "@ai-sdk/google": "^3.0.16", "@ai-sdk/google-vertex": "^4.0.80", "@ai-sdk/mistral": "^3.0.13", diff --git a/apps/backend/src/agents/provider-meta.ts b/apps/backend/src/agents/provider-meta.ts index 18df990a..e94c19ca 100644 --- a/apps/backend/src/agents/provider-meta.ts +++ b/apps/backend/src/agents/provider-meta.ts @@ -222,12 +222,43 @@ export const PROVIDER_META: ProviderMetaMap = { { id: 'gemini-3-flash-preview', name: 'Gemini 3 Flash (Vertex)', contextWindow: 200_000 }, ], }, + azure: { + auth: { + apiKey: 'required', + hint: 'Provide either a Resource Name or a Base URL — not both', + extraFields: [ + { + name: 'resourceName', + label: 'Resource Name', + envVar: 'AZURE_RESOURCE_NAME', + placeholder: 'my-resource (builds https://{name}.openai.azure.com)', + }, + { + name: 'apiVersion', + label: 'API Version', + envVar: 'AZURE_API_VERSION', + placeholder: 'v1', + }, + { + name: 'useDeploymentBasedUrls', + label: 'Use Deployment-Based URLs', + envVar: 'AZURE_USE_DEPLOYMENT_BASED_URLS', + placeholder: 'false', + }, + ], + }, + envVar: 'AZURE_API_KEY', + baseUrlEnvVar: 'AZURE_OPENAI_BASE_URL', + extractorModelId: '', + summaryModelId: '', + models: [], + }, }; export function getDefaultModelId(provider: LlmProvider): string { const models = PROVIDER_META[provider].models; const defaultModel = models.find((m) => m.default); - return defaultModel?.id ?? models[0].id; + return defaultModel?.id ?? models[0]?.id ?? ''; } export function getProviderAuth(provider: LlmProvider): ProviderAuth { diff --git a/apps/backend/src/agents/providers.ts b/apps/backend/src/agents/providers.ts index 24ea10b6..9c829994 100644 --- a/apps/backend/src/agents/providers.ts +++ b/apps/backend/src/agents/providers.ts @@ -1,5 +1,6 @@ import { createAmazonBedrock } from '@ai-sdk/amazon-bedrock'; import { type AnthropicProviderOptions, createAnthropic } from '@ai-sdk/anthropic'; +import { createAzure } from '@ai-sdk/azure'; import { createGoogleGenerativeAI } from '@ai-sdk/google'; import { createVertex } from '@ai-sdk/google-vertex'; import { createVertexAnthropic } from '@ai-sdk/google-vertex/anthropic'; @@ -116,6 +117,24 @@ export const LLM_PROVIDERS: LlmProvidersType = { return createVertex(config)(modelId); }, }, + azure: { + ...PROVIDER_META.azure, + create: (settings, modelId) => { + const creds = settings.credentials; + const resourceName = creds?.resourceName || process.env.AZURE_RESOURCE_NAME; + const apiVersion = creds?.apiVersion || process.env.AZURE_API_VERSION; + const useDeploymentBasedUrls = + (creds?.useDeploymentBasedUrls || process.env.AZURE_USE_DEPLOYMENT_BASED_URLS) === 'true'; + + return createAzure({ + apiKey: settings.apiKey, + ...(settings.baseURL ? { baseURL: settings.baseURL } : resourceName ? { resourceName } : {}), + ...(apiVersion && { apiVersion }), + ...(useDeploymentBasedUrls && { useDeploymentBasedUrls }), + })(modelId); + }, + defaultOptions: { store: false }, + }, }; export type ProviderModelResult = { diff --git a/apps/backend/src/types/llm.ts b/apps/backend/src/types/llm.ts index ae7a75e0..e5806343 100644 --- a/apps/backend/src/types/llm.ts +++ b/apps/backend/src/types/llm.ts @@ -1,5 +1,6 @@ import type { AmazonBedrockLanguageModelOptions } from '@ai-sdk/amazon-bedrock'; import type { AnthropicProviderOptions } from '@ai-sdk/anthropic'; +import type { OpenAIResponsesProviderOptions as AzureOpenAIResponsesProviderOptions } from '@ai-sdk/azure'; import type { GoogleGenerativeAIProviderOptions } from '@ai-sdk/google'; import type { MistralLanguageModelOptions } from '@ai-sdk/mistral'; import type { OpenAIResponsesProviderOptions } from '@ai-sdk/openai'; @@ -43,6 +44,7 @@ export type ProviderConfigMap = { ollama: Flatten; bedrock: AmazonBedrockLanguageModelOptions; vertex: GoogleGenerativeAIProviderOptions; + azure: AzureOpenAIResponsesProviderOptions; }; /** Model definition with provider-specific config type */ diff --git a/apps/frontend/src/components/icons/azure.svg b/apps/frontend/src/components/icons/azure.svg new file mode 100644 index 00000000..7bc1f93d --- /dev/null +++ b/apps/frontend/src/components/icons/azure.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/apps/frontend/src/components/settings/usage-filters.tsx b/apps/frontend/src/components/settings/usage-filters.tsx index cc6ddfea..50bfed69 100644 --- a/apps/frontend/src/components/settings/usage-filters.tsx +++ b/apps/frontend/src/components/settings/usage-filters.tsx @@ -25,6 +25,7 @@ const providerLabels: Record = { ollama: 'Ollama', bedrock: 'AWS Bedrock', vertex: 'Google Vertex', + azure: 'Azure OpenAI', }; export const dateFormats: Record = { diff --git a/apps/frontend/src/components/ui/llm-provider-icon.tsx b/apps/frontend/src/components/ui/llm-provider-icon.tsx index 07d5c39a..68ad3bd4 100644 --- a/apps/frontend/src/components/ui/llm-provider-icon.tsx +++ b/apps/frontend/src/components/ui/llm-provider-icon.tsx @@ -1,3 +1,4 @@ +import AzureIcon from '@/components/icons/azure.svg'; import ClaudeIcon from '@/components/icons/claude.svg'; import GoogleIcon from '@/components/icons/google.svg'; import MistralIcon from '@/components/icons/mistral.svg'; @@ -28,6 +29,8 @@ export function LlmProviderIcon({ provider, className: customClassName }: { prov return ; case 'vertex': return ; + case 'azure': + return ; default: return null; } diff --git a/apps/shared/src/types.ts b/apps/shared/src/types.ts index 1dc8b83c..45cc61f1 100644 --- a/apps/shared/src/types.ts +++ b/apps/shared/src/types.ts @@ -15,6 +15,7 @@ export const LLM_PROVIDERS = [ 'ollama', 'bedrock', 'vertex', + 'azure', ] as const; export type LlmProvider = (typeof LLM_PROVIDERS)[number]; diff --git a/package-lock.json b/package-lock.json index e0775681..2f72f890 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,6 +11,7 @@ "dependencies": { "@boxlite-ai/boxlite": "^0.3.0", "@pydantic/monty": "^0.0.7", + "@rollup/rollup-linux-x64-gnu": "^4.60.0", "depd": "^2.0.0" }, "devDependencies": { @@ -27,6 +28,7 @@ "dependencies": { "@ai-sdk/amazon-bedrock": "^4.0.69", "@ai-sdk/anthropic": "^3.0.15", + "@ai-sdk/azure": "^3.0.49", "@ai-sdk/google": "^3.0.16", "@ai-sdk/google-vertex": "^4.0.80", "@ai-sdk/mistral": "^3.0.13", @@ -342,6 +344,40 @@ "zod": "^3.25.76 || ^4.1.8" } }, + "node_modules/@ai-sdk/azure": { + "version": "3.0.49", + "resolved": "https://registry.npmjs.org/@ai-sdk/azure/-/azure-3.0.49.tgz", + "integrity": "sha512-wskgAL+OmrHG7by/iWIxEBQCEdc1mDudha/UZav46i0auzdFfsDB/k2rXZaC4/3nWSgMZkxr0W3ncyouEGX/eg==", + "license": "Apache-2.0", + "dependencies": { + "@ai-sdk/openai": "3.0.48", + "@ai-sdk/provider": "3.0.8", + "@ai-sdk/provider-utils": "4.0.21" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "zod": "^3.25.76 || ^4.1.8" + } + }, + "node_modules/@ai-sdk/azure/node_modules/@ai-sdk/provider-utils": { + "version": "4.0.21", + "resolved": "https://registry.npmjs.org/@ai-sdk/provider-utils/-/provider-utils-4.0.21.tgz", + "integrity": "sha512-MtFUYI1/8mgDvRmaBDjbLJPFFrMG777AvSgyIFQtZHIMzm88R/12vYBBpnk7pfiWLFE1DSZzY4WDYzGbKAcmiw==", + "license": "Apache-2.0", + "dependencies": { + "@ai-sdk/provider": "3.0.8", + "@standard-schema/spec": "^1.1.0", + "eventsource-parser": "^3.0.6" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "zod": "^3.25.76 || ^4.1.8" + } + }, "node_modules/@ai-sdk/gateway": { "version": "3.0.66", "license": "Apache-2.0", @@ -403,11 +439,30 @@ } }, "node_modules/@ai-sdk/openai": { - "version": "3.0.41", + "version": "3.0.48", + "resolved": "https://registry.npmjs.org/@ai-sdk/openai/-/openai-3.0.48.tgz", + "integrity": "sha512-ALmj/53EXpcRqMbGpPJPP4UOSWw0q4VGpnDo7YctvsynjkrKDmoneDG/1a7VQnSPYHnJp6tTRMf5ZdxZ5whulg==", "license": "Apache-2.0", "dependencies": { "@ai-sdk/provider": "3.0.8", - "@ai-sdk/provider-utils": "4.0.19" + "@ai-sdk/provider-utils": "4.0.21" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "zod": "^3.25.76 || ^4.1.8" + } + }, + "node_modules/@ai-sdk/openai/node_modules/@ai-sdk/provider-utils": { + "version": "4.0.21", + "resolved": "https://registry.npmjs.org/@ai-sdk/provider-utils/-/provider-utils-4.0.21.tgz", + "integrity": "sha512-MtFUYI1/8mgDvRmaBDjbLJPFFrMG777AvSgyIFQtZHIMzm88R/12vYBBpnk7pfiWLFE1DSZzY4WDYzGbKAcmiw==", + "license": "Apache-2.0", + "dependencies": { + "@ai-sdk/provider": "3.0.8", + "@standard-schema/spec": "^1.1.0", + "eventsource-parser": "^3.0.6" }, "engines": { "node": ">=18" @@ -5048,6 +5103,32 @@ "dev": true, "license": "MIT" }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.59.0.tgz", + "integrity": "sha512-upnNBkA6ZH2VKGcBj9Fyl9IGNPULcjXRlg0LLeaioQWueH30p6IXtJEbKAgvyv+mJaMxSm1l6xwDXYjpEMiLMg==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.59.0.tgz", + "integrity": "sha512-hZ+Zxj3SySm4A/DylsDKZAeVg0mvi++0PYVceVyX7hemkw7OreKdCvW2oQ3T1FMZvCaQXqOTHb8qmBShoqk69Q==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, "node_modules/@rollup/rollup-darwin-arm64": { "version": "4.59.0", "cpu": [ @@ -5059,6 +5140,291 @@ "darwin" ] }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.59.0.tgz", + "integrity": "sha512-ZW2KkwlS4lwTv7ZVsYDiARfFCnSGhzYPdiOU4IM2fDbL+QGlyAbjgSFuqNRbSthybLbIJ915UtZBtmuLrQAT/w==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.59.0.tgz", + "integrity": "sha512-EsKaJ5ytAu9jI3lonzn3BgG8iRBjV4LxZexygcQbpiU0wU0ATxhNVEpXKfUa0pS05gTcSDMKpn3Sx+QB9RlTTA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.59.0.tgz", + "integrity": "sha512-d3DuZi2KzTMjImrxoHIAODUZYoUUMsuUiY4SRRcJy6NJoZ6iIqWnJu9IScV9jXysyGMVuW+KNzZvBLOcpdl3Vg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.59.0.tgz", + "integrity": "sha512-t4ONHboXi/3E0rT6OZl1pKbl2Vgxf9vJfWgmUoCEVQVxhW6Cw/c8I6hbbu7DAvgp82RKiH7TpLwxnJeKv2pbsw==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.59.0.tgz", + "integrity": "sha512-CikFT7aYPA2ufMD086cVORBYGHffBo4K8MQ4uPS/ZnY54GKj36i196u8U+aDVT2LX4eSMbyHtyOh7D7Zvk2VvA==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.59.0.tgz", + "integrity": "sha512-jYgUGk5aLd1nUb1CtQ8E+t5JhLc9x5WdBKew9ZgAXg7DBk0ZHErLHdXM24rfX+bKrFe+Xp5YuJo54I5HFjGDAA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.59.0.tgz", + "integrity": "sha512-peZRVEdnFWZ5Bh2KeumKG9ty7aCXzzEsHShOZEFiCQlDEepP1dpUl/SrUNXNg13UmZl+gzVDPsiCwnV1uI0RUA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.59.0.tgz", + "integrity": "sha512-gbUSW/97f7+r4gHy3Jlup8zDG190AuodsWnNiXErp9mT90iCy9NKKU0Xwx5k8VlRAIV2uU9CsMnEFg/xXaOfXg==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-musl": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.59.0.tgz", + "integrity": "sha512-yTRONe79E+o0FWFijasoTjtzG9EBedFXJMl888NBEDCDV9I2wGbFFfJQQe63OijbFCUZqxpHz1GzpbtSFikJ4Q==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.59.0.tgz", + "integrity": "sha512-sw1o3tfyk12k3OEpRddF68a1unZ5VCN7zoTNtSn2KndUE+ea3m3ROOKRCZxEpmT9nsGnogpFP9x6mnLTCaoLkA==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-musl": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.59.0.tgz", + "integrity": "sha512-+2kLtQ4xT3AiIxkzFVFXfsmlZiG5FXYW7ZyIIvGA7Bdeuh9Z0aN4hVyXS/G1E9bTP/vqszNIN/pUKCk/BTHsKA==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.59.0.tgz", + "integrity": "sha512-NDYMpsXYJJaj+I7UdwIuHHNxXZ/b/N2hR15NyH3m2qAtb/hHPA4g4SuuvrdxetTdndfj9b1WOmy73kcPRoERUg==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.59.0.tgz", + "integrity": "sha512-nLckB8WOqHIf1bhymk+oHxvM9D3tyPndZH8i8+35p/1YiVoVswPid2yLzgX7ZJP0KQvnkhM4H6QZ5m0LzbyIAg==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.59.0.tgz", + "integrity": "sha512-oF87Ie3uAIvORFBpwnCvUzdeYUqi2wY6jRFWJAy1qus/udHFYIkplYRW+wo+GRUP4sKzYdmE1Y3+rY5Gc4ZO+w==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.60.0.tgz", + "integrity": "sha512-EtylprDtQPdS5rXvAayrNDYoJhIz1/vzN2fEubo3yLE7tfAw+948dO0g4M0vkTVFhKojnF+n6C8bDNe+gDRdTg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.59.0.tgz", + "integrity": "sha512-2UdiwS/9cTAx7qIUZB/fWtToJwvt0Vbo0zmnYt7ED35KPg13Q0ym1g442THLC7VyI6JfYTP4PiSOWyoMdV2/xg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openbsd-x64": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.59.0.tgz", + "integrity": "sha512-M3bLRAVk6GOwFlPTIxVBSYKUaqfLrn8l0psKinkCFxl4lQvOSz8ZrKDz2gxcBwHFpci0B6rttydI4IpS4IS/jQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.59.0.tgz", + "integrity": "sha512-tt9KBJqaqp5i5HUZzoafHZX8b5Q2Fe7UjYERADll83O4fGqJ49O1FsL6LpdzVFQcpwvnyd0i+K/VSwu/o/nWlA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.59.0.tgz", + "integrity": "sha512-V5B6mG7OrGTwnxaNUzZTDTjDS7F75PO1ae6MJYdiMu60sq0CqN5CVeVsbhPxalupvTX8gXVSU9gq+Rx1/hvu6A==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.59.0.tgz", + "integrity": "sha512-UKFMHPuM9R0iBegwzKF4y0C4J9u8C6MEJgFuXTBerMk7EJ92GFVFYBfOZaSGLu6COf7FxpQNqhNS4c4icUPqxA==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.59.0.tgz", + "integrity": "sha512-laBkYlSS1n2L8fSo1thDNGrCTQMmxjYY5G0WFWjFFYZkKPjsMBsgJfGf4TLxXrF6RyhI60L8TMOjBMvXiTcxeA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.59.0.tgz", + "integrity": "sha512-2HRCml6OztYXyJXAvdDXPKcawukWY2GpR5/nxKp4iBgiO3wcoEGkAaqctIbZcNB6KlUQBIqt8VYkNSj2397EfA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, "node_modules/@slack/logger": { "version": "4.0.1", "license": "MIT", @@ -16910,6 +17276,19 @@ "fsevents": "~2.3.2" } }, + "node_modules/rollup/node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.59.0.tgz", + "integrity": "sha512-3AHmtQq/ppNuUspKAlvA8HtLybkDflkMuLK4DPo77DfthRb71V84/c4MlWJXixZz4uruIH4uaa07IqoAkG64fg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, "node_modules/rope-sequence": { "version": "1.3.4", "license": "MIT"