From 817309ade92d92718ba0df843851cbf887e07faa Mon Sep 17 00:00:00 2001 From: Your Name Date: Tue, 24 Mar 2026 17:01:50 +0800 Subject: [PATCH] feat: add sqlserver admin connection settings --- .../settings/admin-settings-client.tsx | 343 +++++++++++ app/api/admin/settings/route.ts | 35 ++ app/api/admin/sqlserver/test/route.ts | 50 ++ lib/sqlserver/client.ts | 66 ++ lib/sqlserver/config.ts | 66 ++ package.json | 2 + pnpm-lock.yaml | 583 +++++++++++++++++- 7 files changed, 1144 insertions(+), 1 deletion(-) create mode 100644 app/api/admin/sqlserver/test/route.ts create mode 100644 lib/sqlserver/client.ts create mode 100644 lib/sqlserver/config.ts diff --git a/app/(admin)/settings/admin-settings-client.tsx b/app/(admin)/settings/admin-settings-client.tsx index 6f12ba40e..fa7283585 100644 --- a/app/(admin)/settings/admin-settings-client.tsx +++ b/app/(admin)/settings/admin-settings-client.tsx @@ -29,6 +29,10 @@ import { DETAIL_AGENT_LOCAL_MOONSHOT_SETTING_KEY, normalizeDetailAgentLocalMoonshotConfig, } from "@/lib/ai/detail-agent-model-config"; +import { + defaultThirdPartySqlServerConfig, + THIRD_PARTY_SQLSERVER_CONFIG_KEY, +} from "@/lib/sqlserver/config"; import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"; import { Separator } from "@/components/ui/separator"; import { @@ -65,6 +69,7 @@ import { Loader2, Check, Paintbrush, + Database, } from "lucide-react"; import { Dialog, @@ -1031,6 +1036,10 @@ export function AdminSettingsClient() { displayName: "官方 Kimi K2.5", isEnabled: true, }); + const [thirdPartySqlServerConfig, setThirdPartySqlServerConfig] = useState({ + ...defaultThirdPartySqlServerConfig, + }); + const [isTestingThirdPartySqlServer, setIsTestingThirdPartySqlServer] = useState(false); // 加载抠图API配置 const { data: rmbgConfigData } = useSWR("/api/admin/settings?key=rmbg_api_config", fetcher); @@ -1184,6 +1193,39 @@ export function AdminSettingsClient() { } }, [layerSplitConfigData]); + const { data: thirdPartySqlServerConfigData } = useSWR( + `/api/admin/settings?key=${THIRD_PARTY_SQLSERVER_CONFIG_KEY}`, + fetcher + ); + useEffect(() => { + if (thirdPartySqlServerConfigData?.setting?.value) { + const config = thirdPartySqlServerConfigData.setting.value as { + enabled?: boolean; + host?: string; + port?: number; + database?: string; + username?: string; + password?: string; + encrypt?: boolean; + trustServerCertificate?: boolean; + connectionTimeoutMs?: number; + requestTimeoutMs?: number; + }; + setThirdPartySqlServerConfig({ + enabled: config.enabled !== false, + host: config.host || "", + port: Math.max(1, Math.min(65535, Number(config.port) || 1433)), + database: config.database || "", + username: config.username || "", + password: config.password || "", + encrypt: config.encrypt === true, + trustServerCertificate: config.trustServerCertificate !== false, + connectionTimeoutMs: Math.max(1000, Math.min(120000, Number(config.connectionTimeoutMs) || 15000)), + requestTimeoutMs: Math.max(1000, Math.min(120000, Number(config.requestTimeoutMs) || 30000)), + }); + } + }, [thirdPartySqlServerConfigData]); + // 加载实时画布API配置 const { data: realtimeCanvasConfigData } = useSWR( "/api/admin/settings?key=realtime_canvas_config", @@ -2337,6 +2379,108 @@ export function AdminSettingsClient() { } }; + const handleSaveThirdPartySqlServerConfig = async () => { + try { + if (thirdPartySqlServerConfig.enabled) { + if (!thirdPartySqlServerConfig.host.trim()) { + toast.error("请填写 SQL Server 主机地址"); + return; + } + if (!thirdPartySqlServerConfig.database.trim()) { + toast.error("请填写数据库名称"); + return; + } + if (!thirdPartySqlServerConfig.username.trim()) { + toast.error("请填写数据库账号"); + return; + } + if (!thirdPartySqlServerConfig.password.trim()) { + toast.error("请填写数据库密码"); + return; + } + } + + const response = await fetch("/api/admin/settings", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ + key: THIRD_PARTY_SQLSERVER_CONFIG_KEY, + value: { + enabled: thirdPartySqlServerConfig.enabled, + host: thirdPartySqlServerConfig.host.trim(), + port: Math.max(1, Math.min(65535, Number(thirdPartySqlServerConfig.port) || 1433)), + database: thirdPartySqlServerConfig.database.trim(), + username: thirdPartySqlServerConfig.username.trim(), + password: thirdPartySqlServerConfig.password.trim(), + encrypt: thirdPartySqlServerConfig.encrypt, + trustServerCertificate: thirdPartySqlServerConfig.trustServerCertificate, + connectionTimeoutMs: Math.max( + 1000, + Math.min(120000, Number(thirdPartySqlServerConfig.connectionTimeoutMs) || 15000) + ), + requestTimeoutMs: Math.max( + 1000, + Math.min(120000, Number(thirdPartySqlServerConfig.requestTimeoutMs) || 30000) + ), + }, + }), + }); + + const payload = await response.json().catch(() => null); + if (!response.ok) { + throw new Error(payload?.cause || payload?.message || payload?.error || "保存失败"); + } + + toast.success("SQL Server 配置保存成功"); + } catch (error) { + toast.error(error instanceof Error ? error.message : "保存 SQL Server 配置失败"); + } + }; + + const handleTestThirdPartySqlServerConfig = async () => { + try { + setIsTestingThirdPartySqlServer(true); + + const response = await fetch("/api/admin/sqlserver/test", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ + config: { + enabled: thirdPartySqlServerConfig.enabled, + host: thirdPartySqlServerConfig.host.trim(), + port: Math.max(1, Math.min(65535, Number(thirdPartySqlServerConfig.port) || 1433)), + database: thirdPartySqlServerConfig.database.trim(), + username: thirdPartySqlServerConfig.username.trim(), + password: thirdPartySqlServerConfig.password.trim(), + encrypt: thirdPartySqlServerConfig.encrypt, + trustServerCertificate: thirdPartySqlServerConfig.trustServerCertificate, + connectionTimeoutMs: Math.max( + 1000, + Math.min(120000, Number(thirdPartySqlServerConfig.connectionTimeoutMs) || 15000) + ), + requestTimeoutMs: Math.max( + 1000, + Math.min(120000, Number(thirdPartySqlServerConfig.requestTimeoutMs) || 30000) + ), + }, + }), + }); + + const payload = await response.json().catch(() => null); + if (!response.ok) { + throw new Error(payload?.cause || payload?.message || payload?.error || "连接测试失败"); + } + + toast.success( + `连接成功:${payload?.serverName || thirdPartySqlServerConfig.host} / ${payload?.databaseName || thirdPartySqlServerConfig.database}(${payload?.latencyMs || 0}ms)` + ); + } catch (error) { + toast.error(error instanceof Error ? error.message : "SQL Server 连接测试失败"); + } finally { + setIsTestingThirdPartySqlServer(false); + } + }; + // --- 实时画布API配置逻辑 --- const handleSaveRealtimeCanvasConfig = async () => { try { @@ -9450,6 +9594,205 @@ export function AdminSettingsClient() { + + + + + 第三方 SQL Server 数据库连接 + + + 配置后可供后续业务功能直接访问外部 SQL Server 数据库。当前仅提供配置保存与连通性测试。 + + + +
+
+ +
+ 关闭后保留配置但不作为后续功能默认外部数据源。 +
+
+
+ + setThirdPartySqlServerConfig((prev) => ({ ...prev, enabled: checked })) + } + /> + + {thirdPartySqlServerConfig.enabled ? "已开启" : "已关闭"} + +
+
+ +
+
+ + + setThirdPartySqlServerConfig((prev) => ({ ...prev, host: e.target.value })) + } + placeholder="218.93.191.16" + /> +
+
+ + + setThirdPartySqlServerConfig((prev) => ({ + ...prev, + port: Math.max(1, Math.min(65535, Number(e.target.value) || 1433)), + })) + } + placeholder="1433" + /> +
+
+ +
+
+ + + setThirdPartySqlServerConfig((prev) => ({ ...prev, database: e.target.value })) + } + placeholder="JSDataMiddlePlatform" + /> +
+
+ + + setThirdPartySqlServerConfig((prev) => ({ ...prev, username: e.target.value })) + } + placeholder="nanting" + /> +
+
+ +
+ + + setThirdPartySqlServerConfig((prev) => ({ ...prev, password: e.target.value })) + } + placeholder="请输入 SQL Server 密码" + /> +
+ +
+
+ + + setThirdPartySqlServerConfig((prev) => ({ + ...prev, + connectionTimeoutMs: Math.max( + 1000, + Math.min(120000, Number(e.target.value) || 15000) + ), + })) + } + /> +
+
+ + + setThirdPartySqlServerConfig((prev) => ({ + ...prev, + requestTimeoutMs: Math.max( + 1000, + Math.min(120000, Number(e.target.value) || 30000) + ), + })) + } + /> +
+
+ +
+
+
+ +
+ 现代云数据库通常需要开启;传统内网 SQL Server 可关闭。 +
+
+ + setThirdPartySqlServerConfig((prev) => ({ ...prev, encrypt: checked })) + } + /> +
+
+
+ +
+ 对自签名证书或传统 SQL Server 更友好。 +
+
+ + setThirdPartySqlServerConfig((prev) => ({ + ...prev, + trustServerCertificate: checked, + })) + } + /> +
+
+ +
+

• 当前支持 SQL Server 标准 TCP 连接。

+

• 配置会保存到系统设置,供后续外部数据查询/同步功能复用。

+

• 测试连接会尝试建立连接并执行基础查询,不会修改外部数据库数据。

+
+ +
+ + +
+
+
+ {/* 实时画布API配置 */} diff --git a/app/api/admin/settings/route.ts b/app/api/admin/settings/route.ts index 5a1cffc95..3a7cbd0e1 100644 --- a/app/api/admin/settings/route.ts +++ b/app/api/admin/settings/route.ts @@ -13,6 +13,10 @@ import { resolveRealtimeProviders, } from "@/lib/realtime/config"; import { DETAIL_AGENT_LOCAL_MOONSHOT_SETTING_KEY } from "@/lib/ai/detail-agent-model-config"; +import { + normalizeThirdPartySqlServerConfig, + THIRD_PARTY_SQLSERVER_CONFIG_KEY, +} from "@/lib/sqlserver/config"; const settingSchema = z.object({ key: z.string(), @@ -166,6 +170,37 @@ export async function POST(request: Request) { nextValue = normalizedValue; } + if (key === THIRD_PARTY_SQLSERVER_CONFIG_KEY) { + const existingSetting = await getSystemSetting({ + key: THIRD_PARTY_SQLSERVER_CONFIG_KEY, + }).catch(() => null); + const existingValue = + existingSetting?.value && typeof existingSetting.value === "object" + ? (existingSetting.value as Record) + : {}; + const normalizedValue = normalizeThirdPartySqlServerConfig( + value, + String(existingValue.password || "").trim(), + ); + + if (normalizedValue.enabled) { + if (!normalizedValue.host) { + return new ChatSDKError("bad_request:api", "请填写 SQL Server 主机地址").toResponse(); + } + if (!normalizedValue.database) { + return new ChatSDKError("bad_request:api", "请填写数据库名称").toResponse(); + } + if (!normalizedValue.username) { + return new ChatSDKError("bad_request:api", "请填写数据库账号").toResponse(); + } + if (!normalizedValue.password) { + return new ChatSDKError("bad_request:api", "请填写数据库密码").toResponse(); + } + } + + nextValue = normalizedValue; + } + const setting = await upsertSystemSetting({ key, value: nextValue, diff --git a/app/api/admin/sqlserver/test/route.ts b/app/api/admin/sqlserver/test/route.ts new file mode 100644 index 000000000..c65c96996 --- /dev/null +++ b/app/api/admin/sqlserver/test/route.ts @@ -0,0 +1,50 @@ +import { z } from "zod"; +import { requireAdmin } from "@/lib/middleware/admin"; +import { getSystemSetting } from "@/lib/db/queries"; +import { ChatSDKError } from "@/lib/errors"; +import { + THIRD_PARTY_SQLSERVER_CONFIG_KEY, + thirdPartySqlServerConfigSchema, +} from "@/lib/sqlserver/config"; +import { testSqlServerConnection } from "@/lib/sqlserver/client"; + +export const runtime = "nodejs"; + +const requestSchema = z.object({ + config: thirdPartySqlServerConfigSchema.optional(), +}); + +export async function POST(request: Request) { + try { + await requireAdmin(); + + const body = requestSchema.parse(await request.json().catch(() => ({}))); + const savedSetting = !body.config + ? await getSystemSetting({ key: THIRD_PARTY_SQLSERVER_CONFIG_KEY }).catch(() => null) + : null; + const config = body.config ?? savedSetting?.value ?? {}; + + const result = await testSqlServerConnection(config); + + return Response.json({ + success: true, + ...result, + }); + } catch (error) { + if (error instanceof ChatSDKError) { + return error.toResponse(); + } + + if (error instanceof z.ZodError) { + return new ChatSDKError("bad_request:api", error.message).toResponse(); + } + + return Response.json( + { + code: "bad_request:api", + message: error instanceof Error ? error.message : "SQL Server 连接测试失败", + }, + { status: 400 }, + ); + } +} diff --git a/lib/sqlserver/client.ts b/lib/sqlserver/client.ts new file mode 100644 index 000000000..3c374f92e --- /dev/null +++ b/lib/sqlserver/client.ts @@ -0,0 +1,66 @@ +import "server-only"; + +import sql from "mssql"; +import { + normalizeThirdPartySqlServerConfig, + type NormalizedThirdPartySqlServerConfig, +} from "@/lib/sqlserver/config"; + +function toSqlServerConnectionConfig(config: NormalizedThirdPartySqlServerConfig): sql.config { + return { + server: config.host, + port: config.port, + user: config.username, + password: config.password, + database: config.database, + options: { + encrypt: config.encrypt, + trustServerCertificate: config.trustServerCertificate, + }, + connectionTimeout: config.connectionTimeoutMs, + requestTimeout: config.requestTimeoutMs, + pool: { + max: 1, + min: 0, + idleTimeoutMillis: 5000, + }, + }; +} + +export async function testSqlServerConnection(configValue: unknown) { + const config = normalizeThirdPartySqlServerConfig(configValue); + + if (!config.host) { + throw new Error("请填写 SQL Server 主机地址"); + } + if (!config.database) { + throw new Error("请填写数据库名称"); + } + if (!config.username) { + throw new Error("请填写数据库账号"); + } + if (!config.password) { + throw new Error("请填写数据库密码"); + } + + const startedAt = Date.now(); + const pool = new sql.ConnectionPool(toSqlServerConnectionConfig(config)); + + try { + await pool.connect(); + const result = await pool + .request() + .query("SELECT @@SERVERNAME AS serverName, DB_NAME() AS databaseName, @@VERSION AS version"); + + const row = result.recordset?.[0] || {}; + + return { + latencyMs: Date.now() - startedAt, + serverName: String(row.serverName || config.host), + databaseName: String(row.databaseName || config.database), + version: String(row.version || "").trim(), + }; + } finally { + await pool.close().catch(() => undefined); + } +} diff --git a/lib/sqlserver/config.ts b/lib/sqlserver/config.ts new file mode 100644 index 000000000..71ffa7347 --- /dev/null +++ b/lib/sqlserver/config.ts @@ -0,0 +1,66 @@ +import { z } from "zod"; + +export const THIRD_PARTY_SQLSERVER_CONFIG_KEY = "third_party_sqlserver_config"; + +export const thirdPartySqlServerConfigSchema = z.object({ + enabled: z.boolean().optional(), + host: z.string().trim().optional(), + port: z.coerce.number().int().min(1).max(65535).optional(), + database: z.string().trim().optional(), + username: z.string().trim().optional(), + password: z.string().optional(), + encrypt: z.boolean().optional(), + trustServerCertificate: z.boolean().optional(), + connectionTimeoutMs: z.coerce.number().int().min(1000).max(120000).optional(), + requestTimeoutMs: z.coerce.number().int().min(1000).max(120000).optional(), +}); + +export type ThirdPartySqlServerConfig = z.infer; + +export type NormalizedThirdPartySqlServerConfig = { + enabled: boolean; + host: string; + port: number; + database: string; + username: string; + password: string; + encrypt: boolean; + trustServerCertificate: boolean; + connectionTimeoutMs: number; + requestTimeoutMs: number; +}; + +export const defaultThirdPartySqlServerConfig: NormalizedThirdPartySqlServerConfig = { + enabled: true, + host: "", + port: 1433, + database: "", + username: "", + password: "", + encrypt: false, + trustServerCertificate: true, + connectionTimeoutMs: 15000, + requestTimeoutMs: 30000, +}; + +export function normalizeThirdPartySqlServerConfig( + value: unknown, + existingPassword = "", +): NormalizedThirdPartySqlServerConfig { + const parsed = thirdPartySqlServerConfigSchema.parse(value || {}); + + return { + enabled: parsed.enabled !== false, + host: String(parsed.host || "").trim(), + port: Number(parsed.port) || defaultThirdPartySqlServerConfig.port, + database: String(parsed.database || "").trim(), + username: String(parsed.username || "").trim(), + password: String(parsed.password || "").trim() || String(existingPassword || "").trim(), + encrypt: parsed.encrypt === true, + trustServerCertificate: parsed.trustServerCertificate !== false, + connectionTimeoutMs: + Number(parsed.connectionTimeoutMs) || defaultThirdPartySqlServerConfig.connectionTimeoutMs, + requestTimeoutMs: + Number(parsed.requestTimeoutMs) || defaultThirdPartySqlServerConfig.requestTimeoutMs, + }; +} diff --git a/package.json b/package.json index 08d766e1f..a51786511 100644 --- a/package.json +++ b/package.json @@ -75,6 +75,7 @@ "katex": "^0.16.25", "lucide-react": "^0.446.0", "matter-js": "^0.20.0", + "mssql": "^12.2.1", "nanoid": "^5.0.8", "next": "^16.0.9", "next-auth": "^5.0.0-beta.30", @@ -121,6 +122,7 @@ "@tailwindcss/postcss": "^4.1.13", "@tailwindcss/typography": "^0.5.15", "@types/d3-scale": "^4.0.8", + "@types/mssql": "^9.1.9", "@types/node": "^22.8.6", "@types/papaparse": "^5.3.15", "@types/pdf-parse": "^1.1.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 720cb344b..4c73dab8e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -173,6 +173,9 @@ importers: matter-js: specifier: ^0.20.0 version: 0.20.0 + mssql: + specifier: ^12.2.1 + version: 12.2.1(@azure/core-client@1.10.1) nanoid: specifier: ^5.0.8 version: 5.1.3 @@ -306,6 +309,9 @@ importers: '@types/d3-scale': specifier: ^4.0.8 version: 4.0.9 + '@types/mssql': + specifier: ^9.1.9 + version: 9.1.9(@azure/core-client@1.10.1) '@types/node': specifier: ^22.8.6 version: 22.13.10 @@ -616,6 +622,77 @@ packages: resolution: {integrity: sha512-C0NBLsIqzDIae8HFw9YIrIBsbc0xTiOtt7fAukGPnqQ/+zZNaq+4jhuccltK0QuWHBnNm/a6kLIRA6GFiM10eg==} engines: {node: '>=18.0.0'} + '@azure-rest/core-client@2.5.1': + resolution: {integrity: sha512-EHaOXW0RYDKS5CFffnixdyRPak5ytiCtU7uXDcP/uiY+A6jFRwNGzzJBiznkCzvi5EYpY+YWinieqHb0oY916A==} + engines: {node: '>=20.0.0'} + + '@azure/abort-controller@2.1.2': + resolution: {integrity: sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==} + engines: {node: '>=18.0.0'} + + '@azure/core-auth@1.10.1': + resolution: {integrity: sha512-ykRMW8PjVAn+RS6ww5cmK9U2CyH9p4Q88YJwvUslfuMmN98w/2rdGRLPqJYObapBCdzBVeDgYWdJnFPFb7qzpg==} + engines: {node: '>=20.0.0'} + + '@azure/core-client@1.10.1': + resolution: {integrity: sha512-Nh5PhEOeY6PrnxNPsEHRr9eimxLwgLlpmguQaHKBinFYA/RU9+kOYVOQqOrTsCL+KSxrLLl1gD8Dk5BFW/7l/w==} + engines: {node: '>=20.0.0'} + + '@azure/core-http-compat@2.3.2': + resolution: {integrity: sha512-Tf6ltdKzOJEgxZeWLCjMxrxbodB/ZeCbzzA1A2qHbhzAjzjHoBVSUeSl/baT/oHAxhc4qdqVaDKnc2+iE932gw==} + engines: {node: '>=20.0.0'} + peerDependencies: + '@azure/core-client': ^1.10.0 + '@azure/core-rest-pipeline': ^1.22.0 + + '@azure/core-lro@2.7.2': + resolution: {integrity: sha512-0YIpccoX8m/k00O7mDDMdJpbr6mf1yWo2dfmxt5A8XVZVVMz2SSKaEbMCeJRvgQ0IaSlqhjT47p4hVIRRy90xw==} + engines: {node: '>=18.0.0'} + + '@azure/core-paging@1.6.2': + resolution: {integrity: sha512-YKWi9YuCU04B55h25cnOYZHxXYtEvQEbKST5vqRga7hWY9ydd3FZHdeQF8pyh+acWZvppw13M/LMGx0LABUVMA==} + engines: {node: '>=18.0.0'} + + '@azure/core-rest-pipeline@1.23.0': + resolution: {integrity: sha512-Evs1INHo+jUjwHi1T6SG6Ua/LHOQBCLuKEEE6efIpt4ZOoNonaT1kP32GoOcdNDbfqsD2445CPri3MubBy5DEQ==} + engines: {node: '>=20.0.0'} + + '@azure/core-tracing@1.3.1': + resolution: {integrity: sha512-9MWKevR7Hz8kNzzPLfX4EAtGM2b8mr50HPDBvio96bURP/9C+HjdH3sBlLSNNrvRAr5/k/svoH457gB5IKpmwQ==} + engines: {node: '>=20.0.0'} + + '@azure/core-util@1.13.1': + resolution: {integrity: sha512-XPArKLzsvl0Hf0CaGyKHUyVgF7oDnhKoP85Xv6M4StF/1AhfORhZudHtOyf2s+FcbuQ9dPRAjB8J2KvRRMUK2A==} + engines: {node: '>=20.0.0'} + + '@azure/identity@4.13.1': + resolution: {integrity: sha512-5C/2WD5Vb1lHnZS16dNQRPMjN6oV/Upba+C9nBIs15PmOi6A3ZGs4Lr2u60zw4S04gi+u3cEXiqTVP7M4Pz3kw==} + engines: {node: '>=20.0.0'} + + '@azure/keyvault-common@2.0.0': + resolution: {integrity: sha512-wRLVaroQtOqfg60cxkzUkGKrKMsCP6uYXAOomOIysSMyt1/YM0eUn9LqieAWM8DLcU4+07Fio2YGpPeqUbpP9w==} + engines: {node: '>=18.0.0'} + + '@azure/keyvault-keys@4.10.0': + resolution: {integrity: sha512-eDT7iXoBTRZ2n3fLiftuGJFD+yjkiB1GNqzU2KbY1TLYeXeSPVTVgn2eJ5vmRTZ11978jy2Kg2wI7xa9Tyr8ag==} + engines: {node: '>=18.0.0'} + + '@azure/logger@1.3.0': + resolution: {integrity: sha512-fCqPIfOcLE+CGqGPd66c8bZpwAji98tZ4JI9i/mlTNTlsIWslCfpg48s/ypyLxZTump5sypjrKn2/kY7q8oAbA==} + engines: {node: '>=20.0.0'} + + '@azure/msal-browser@5.6.1': + resolution: {integrity: sha512-Ylmp8yngH7YRLV5mA1aF4CNS6WsJTPbVXaA0Tb1x1Gv/J3BM3hE4Q7nDaf7dRfU00FcxDBBudTjqlpH74ZSsgw==} + engines: {node: '>=0.8.0'} + + '@azure/msal-common@16.4.0': + resolution: {integrity: sha512-twXt09PYtj1PffNNIAzQlrBd0DS91cdA6i1gAfzJ6BnPM4xNk5k9q/5xna7jLIjU3Jnp0slKYtucshGM8OGNAw==} + engines: {node: '>=0.8.0'} + + '@azure/msal-node@5.1.1': + resolution: {integrity: sha512-71grXU6+5hl+3CL3joOxlj/AW6rmhthuTlG0fRqsTrhPArQBpZuUFzCIlKOGdcafLUa/i1hBdV78ZxJdlvRA+g==} + engines: {node: '>=20'} + '@babel/runtime@7.28.4': resolution: {integrity: sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==} engines: {node: '>=6.9.0'} @@ -1387,6 +1464,9 @@ packages: '@jridgewell/trace-mapping@0.3.25': resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + '@js-joda/core@5.7.0': + resolution: {integrity: sha512-WBu4ULVVxySLLzK1Ppq+OdfP+adRS4ntmDQT915rzDJ++i95gc2jZkM5B6LWEAwN3lGXpfie3yPABozdD3K3Vg==} + '@langchain/core@1.1.19': resolution: {integrity: sha512-hmNAcgeLLqNLnu8UK+HVTfB8170eCmAfsy4gFLBYeE+kdsnyO0Hd/Kd42pZi8Cgfux4OMX3yxl+g+/a1ktGe0A==} engines: {node: '>=20'} @@ -2870,6 +2950,9 @@ packages: peerDependencies: tailwindcss: '>=3.0.0 || insiders || >=4.0.0-alpha.20 || >=4.0.0-beta.1' + '@tediousjs/connection-string@0.6.0': + resolution: {integrity: sha512-GxlsW354Vi6QqbUgdPyQVcQjI7cZBdGV5vOYVYuCVDTylx2wl3WHR2HlhcxxHTrMigbelpXsdcZso+66uxPfow==} + '@tokenlens/core@1.3.0': resolution: {integrity: sha512-d8YNHNC+q10bVpi95fELJwJyPVf1HfvBEI18eFQxRSZTdByXrP+f/ZtlhSzkx0Jl0aEmYVeBA5tPeeYRioLViQ==} @@ -3038,6 +3121,9 @@ packages: '@types/ms@2.1.0': resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} + '@types/mssql@9.1.9': + resolution: {integrity: sha512-P0nCgw6vzY23UxZMnbI4N7fnLGANt4LI4yvxze1paPj+LuN28cFv5EI+QidP8udnId/BKhkcRhm/BleNsjK65A==} + '@types/node@22.13.10': resolution: {integrity: sha512-I6LPUvlRH+O6VRUqYOcMudhaIdUVWfsjnZavnsraHvpBwaEyMN29ry+0UVJhImYL16xsscu0aske3yA+uPOWfw==} @@ -3075,6 +3161,9 @@ packages: '@types/react@18.3.18': resolution: {integrity: sha512-t4yC+vtgnkYjNSKlFx1jkAhH8LgTo2N/7Qvi83kdEaUtMDiwpbLAktKDaAMlRcJ5eSxZkH74eEGt1ky31d7kfQ==} + '@types/readable-stream@4.0.23': + resolution: {integrity: sha512-wwXrtQvbMHxCbBgjHaMGEmImFTQxxpfMOR/ZoQnXxB1woqkUbdLGFDgauo00Py9IudiaqSeiBiulSV9i6XIPig==} + '@types/sharp@0.32.0': resolution: {integrity: sha512-OOi3kL+FZDnPhVzsfD37J88FNeZh6gQsGcLc95NbeURRGvmSjeXiDcyWzF2o3yh/gQAUn2uhh/e+CPCa5nwAxw==} deprecated: This is a stub types definition. sharp provides its own type definitions, so you do not need this installed. @@ -3103,6 +3192,10 @@ packages: '@types/webxr@0.5.24': resolution: {integrity: sha512-h8fgEd/DpoS9CBrjEQXR+dIDraopAEfu4wYVNY2tEPwk60stPWhvZMf4Foo5FakuQ7HFZoa8WceaWFervK2Ovg==} + '@typespec/ts-http-runtime@0.3.4': + resolution: {integrity: sha512-CI0NhTrz4EBaa0U+HaaUZrJhPoso8sG7ZFya8uQoBA57fjzrjRSv87ekCjLZOFExN+gXE/z0xuN2QfH4H2HrLQ==} + engines: {node: '>=20.0.0'} + '@ungap/structured-clone@1.3.0': resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} @@ -3216,6 +3309,10 @@ packages: '@xenova/transformers@2.17.2': resolution: {integrity: sha512-lZmHqzrVIkSvZdKZEx7IYY51TK0WDrC8eR0c5IMnBsO8di8are1zzw8BlLhyO2TklZKLN5UffNGs1IJwT6oOqQ==} + abort-controller@3.0.0: + resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} + engines: {node: '>=6.5'} + acorn-import-attributes@1.9.5: resolution: {integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==} peerDependencies: @@ -3226,6 +3323,10 @@ packages: engines: {node: '>=0.4.0'} hasBin: true + agent-base@7.1.4: + resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} + engines: {node: '>= 14'} + ai@5.0.117: resolution: {integrity: sha512-uE6HNkdSwxbeHGKP/YbvapwD8fMOpj87wyfT9Z00pbzOh2fpnw5acak/4kzU00SX2vtI9K0uuy+9Tf9ytw5RwA==} engines: {node: '>=18'} @@ -3280,9 +3381,15 @@ packages: bidi-js@1.0.3: resolution: {integrity: sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==} + bl@6.1.6: + resolution: {integrity: sha512-jLsPgN/YSvPUg9UX0Kd73CXpm2Psg9FxMeCSXnk3WBO3CMT10JMwijubhGfHCnFu6TPn1ei3b975dxv7K2pWVg==} + bowser@2.13.1: resolution: {integrity: sha512-OHawaAbjwx6rqICCKgSG0SAnT05bzd7ppyKLVUITZpANBaaMFBAsaNkto3LoQ31tyFP5kNujE8Cdx85G9VzOkw==} + buffer-equal-constant-time@1.0.1: + resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} + buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} @@ -3293,6 +3400,10 @@ packages: resolution: {integrity: sha512-WDtdLmJvAuNNPzByAYpRo2rF1Mmradw6gvWsQKf63476DDXmomT9zUiGypLcG4ibIM67vhAj8jJRdbmEws2Aqw==} engines: {node: '>=6.14.2'} + bundle-name@4.1.0: + resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==} + engines: {node: '>=18'} + bytes@3.1.2: resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} engines: {node: '>= 0.8'} @@ -3409,6 +3520,10 @@ packages: comma-separated-tokens@2.0.3: resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} + commander@11.1.0: + resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} + engines: {node: '>=16'} + commander@14.0.2: resolution: {integrity: sha512-TywoWNNRbhoD0BXs1P3ZEScW8W5iKrnbithIl0YH+uCmBd0QpPOA8yc82DS3BIE5Ma6FnBVUsJ7wVUDz4dvOWQ==} engines: {node: '>=20'} @@ -3658,6 +3773,18 @@ packages: resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} + default-browser-id@5.0.1: + resolution: {integrity: sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==} + engines: {node: '>=18'} + + default-browser@5.5.0: + resolution: {integrity: sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw==} + engines: {node: '>=18'} + + define-lazy-prop@3.0.0: + resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} + engines: {node: '>=12'} + delaunator@5.0.1: resolution: {integrity: sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==} @@ -3796,6 +3923,9 @@ packages: resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} engines: {node: '>= 0.4'} + ecdsa-sig-formatter@1.0.11: + resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} + embla-carousel-react@8.6.0: resolution: {integrity: sha512-0/PjqU7geVmo6F734pmPqpyHqiM99olvyecY7zdweCw+6tKEXnrE90pBiBbMMU8s5tICemzpQ3hi5EpxzGW+JA==} peerDependencies: @@ -3870,12 +4000,20 @@ packages: estree-walker@3.0.3: resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + event-target-shim@5.0.1: + resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} + engines: {node: '>=6'} + eventemitter3@4.0.7: resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} eventemitter3@5.0.4: resolution: {integrity: sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==} + events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + eventsource-parser@1.1.2: resolution: {integrity: sha512-v0eOBUbiaFojBu2s2NPBfYUoRR9GjcDNvCXVaqEf5vVfpIAh9f8RCo4vXTP8c63QRKCFwoLpMpTdPwwhEKVgzA==} engines: {node: '>=14.18'} @@ -4073,10 +4211,22 @@ packages: html-void-elements@3.0.0: resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} + http-proxy-agent@7.0.2: + resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} + engines: {node: '>= 14'} + + https-proxy-agent@7.0.6: + resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} + engines: {node: '>= 14'} + iconv-lite@0.6.3: resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} engines: {node: '>=0.10.0'} + iconv-lite@0.7.2: + resolution: {integrity: sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==} + engines: {node: '>=0.10.0'} + ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} @@ -4128,12 +4278,22 @@ packages: is-decimal@2.0.1: resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} + is-docker@3.0.0: + resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + hasBin: true + is-hexadecimal@1.0.4: resolution: {integrity: sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==} is-hexadecimal@2.0.1: resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} + is-inside-container@1.0.0: + resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} + engines: {node: '>=14.16'} + hasBin: true + is-network-error@1.3.0: resolution: {integrity: sha512-6oIwpsgRfnDiyEDLMay/GqCl3HoAtH5+RUKW29gYkL0QA+ipzpDLA16yQs7/RHCSu+BwgbJaOUqa4A99qNVQVw==} engines: {node: '>=16'} @@ -4145,6 +4305,10 @@ packages: is-promise@2.2.2: resolution: {integrity: sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==} + is-wsl@3.1.1: + resolution: {integrity: sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==} + engines: {node: '>=16'} + isarray@1.0.0: resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} @@ -4163,6 +4327,9 @@ packages: jose@6.1.3: resolution: {integrity: sha512-0TpaTfihd4QMNwrz/ob2Bp7X04yuxJkjRGi4aKmOqwhov54i6u79oCv7T+C7lo70MKH6BesI3vscD1yb/yzKXQ==} + js-md4@0.3.2: + resolution: {integrity: sha512-/GDnfQYsltsjRswQhN9fhv3EMw2sCpUdrdxyWDOUK7eyD++r3gRhzgiQgc/x4MAv2i1iuQ4lxO5mvqM3vj4bwA==} + js-tiktoken@1.0.21: resolution: {integrity: sha512-biOj/6M5qdgx5TKjDnFT1ymSpM5tbd3ylwDtrQvFQSu0Z7bBYko2dF+W/aUkXUPuk6IVpRxk/3Q2sHOzGlS36g==} @@ -4178,9 +4345,19 @@ packages: jsonc-parser@3.3.1: resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==} + jsonwebtoken@9.0.3: + resolution: {integrity: sha512-MT/xP0CrubFRNLNKvxJ2BYfy53Zkm++5bX9dtuPbqAeQpTVe0MQTFhao8+Cp//EmJp244xt6Drw/GVEGCUj40g==} + engines: {node: '>=12', npm: '>=6'} + jszip@3.10.1: resolution: {integrity: sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==} + jwa@2.0.1: + resolution: {integrity: sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==} + + jws@4.0.1: + resolution: {integrity: sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA==} + katex@0.16.25: resolution: {integrity: sha512-woHRUZ/iF23GBP1dkDQMh1QBad9dmr8/PAwNA54VrSOVYgI12MAcE14TqnDdQOdzyEonGzMepYnqBMYdsoAr8Q==} hasBin: true @@ -4311,12 +4488,30 @@ packages: lodash.debounce@4.0.8: resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} + lodash.includes@4.3.0: + resolution: {integrity: sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==} + + lodash.isboolean@3.0.3: + resolution: {integrity: sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==} + + lodash.isinteger@4.0.4: + resolution: {integrity: sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==} + + lodash.isnumber@3.0.3: + resolution: {integrity: sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==} + lodash.isplainobject@4.0.6: resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} + lodash.isstring@4.0.1: + resolution: {integrity: sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==} + lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + lodash.once@4.1.1: + resolution: {integrity: sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==} + long@4.0.0: resolution: {integrity: sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==} @@ -4543,6 +4738,11 @@ packages: ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + mssql@12.2.1: + resolution: {integrity: sha512-TU89g82WatOVcinw3etO/crKbd67ugC3Wm6TJDklHjp7211brVENWIs++UoPC2H+TWvyi0OSlzMou8GY15onOA==} + engines: {node: '>=18'} + hasBin: true + mustache@4.2.0: resolution: {integrity: sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==} hasBin: true @@ -4562,6 +4762,9 @@ packages: engines: {node: ^18 || >=20} hasBin: true + native-duplexpair@1.0.0: + resolution: {integrity: sha512-E7QQoM+3jvNtlmyfqRZ0/U75VFgCls+fSkbml2MpgWkWyz3ox8Y58gNhfuziuQYGNNQAbFZJQck55LHCnCK6CA==} + next-auth@5.0.0-beta.30: resolution: {integrity: sha512-+c51gquM3F6nMVmoAusRJ7RIoY0K4Ts9HCCwyy/BRoe4mp3msZpOzYMyb5LAYc1wSo74PMQkGDcaghIO7W6Xjg==} peerDependencies: @@ -4643,6 +4846,10 @@ packages: onnxruntime-web@1.14.0: resolution: {integrity: sha512-Kcqf43UMfW8mCydVGcX9OMXI2VN17c0p6XvR7IPSZzBf/6lteBzXHvcEVWDPmCKuGombl997HgLqj91F11DzXw==} + open@10.2.0: + resolution: {integrity: sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==} + engines: {node: '>=18'} + orderedmap@2.1.1: resolution: {integrity: sha512-TvAWxi0nDe1j/rtMcWcIj94+Ffe6n7zhow33h40SKxmsmozs6dz/e+EajymfoFcHd7sxNn8yHM8839uixMOV6g==} @@ -4817,6 +5024,10 @@ packages: process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + process@0.11.10: + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} + engines: {node: '>= 0.6.0'} + promise-worker-transferable@1.0.4: resolution: {integrity: sha512-bN+0ehEnrXfxV2ZQvU2PetO0n4gqBD4ulq3MI1WOPLgr7/Mg9yRQkX5+0v1vagr74ZTsl7XtzlaYDo2EuCeYJw==} @@ -4996,6 +5207,10 @@ packages: readable-stream@2.3.8: resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + readable-stream@4.7.0: + resolution: {integrity: sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + redis@5.9.0: resolution: {integrity: sha512-E8dQVLSyH6UE/C9darFuwq4usOPrqfZ1864kI4RFbr5Oj9ioB9qPF0oJMwX7s8mf6sPYrz84x/Dx1PGF3/0EaQ==} engines: {node: '>= 18'} @@ -5076,12 +5291,19 @@ packages: roughjs@4.6.6: resolution: {integrity: sha512-ZUz/69+SYpFN/g/lUlo2FXcIjRkSu3nDarreVdGGndHEBJ6cXPdKguS8JGxwj5HA5xIbVKSmLgr5b3AWxtRfvQ==} + run-applescript@7.1.0: + resolution: {integrity: sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==} + engines: {node: '>=18'} + rw@1.3.3: resolution: {integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==} safe-buffer@5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} @@ -5152,6 +5374,9 @@ packages: space-separated-tokens@2.0.2: resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} + sprintf-js@1.1.3: + resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==} + stackback@0.0.2: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} @@ -5175,6 +5400,9 @@ packages: string_decoder@1.1.1: resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + stringify-entities@4.0.4: resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} @@ -5245,6 +5473,14 @@ packages: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} engines: {node: '>=6'} + tarn@3.0.2: + resolution: {integrity: sha512-51LAVKUSZSVfI05vjPESNc5vwqqZpbXCsU+/+wxlOrUjk2SnFTt97v9ZgQrD4YmxYW1Px6w2KjaDitCfkvgxMQ==} + engines: {node: '>=8.0.0'} + + tedious@19.2.1: + resolution: {integrity: sha512-pk1Q16Yl62iocuQB+RWbg6rFUFkIyzqOFQ6NfysCltRvQqKwfurgj8v/f2X+CKvDhSL4IJ0cCOfCHDg9PWEEYA==} + engines: {node: '>=18.17'} + three-mesh-bvh@0.8.3: resolution: {integrity: sha512-4G5lBaF+g2auKX3P0yqx+MJC6oVt6sB5k+CchS6Ob0qvH0YIhuUk1eYr7ktsIpY+albCqE80/FVQGV190PmiAg==} peerDependencies: @@ -5446,6 +5682,10 @@ packages: resolution: {integrity: sha512-XQegIaBTVUjSHliKqcnFqYypAd4S+WCYt5NIeRs6w/UAry7z8Y9j5ZwRRL4kzq9U3sD6v+85er9FvkEaBpji2w==} hasBin: true + uuid@8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + hasBin: true + vfile-location@5.0.3: resolution: {integrity: sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==} @@ -5582,6 +5822,10 @@ packages: utf-8-validate: optional: true + wsl-utils@0.1.0: + resolution: {integrity: sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==} + engines: {node: '>=18'} + xtend@4.0.2: resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} engines: {node: '>=0.4'} @@ -6228,6 +6472,150 @@ snapshots: '@aws/lambda-invoke-store@0.2.2': {} + '@azure-rest/core-client@2.5.1': + dependencies: + '@azure/abort-controller': 2.1.2 + '@azure/core-auth': 1.10.1 + '@azure/core-rest-pipeline': 1.23.0 + '@azure/core-tracing': 1.3.1 + '@typespec/ts-http-runtime': 0.3.4 + tslib: 2.8.1 + transitivePeerDependencies: + - supports-color + + '@azure/abort-controller@2.1.2': + dependencies: + tslib: 2.8.1 + + '@azure/core-auth@1.10.1': + dependencies: + '@azure/abort-controller': 2.1.2 + '@azure/core-util': 1.13.1 + tslib: 2.8.1 + transitivePeerDependencies: + - supports-color + + '@azure/core-client@1.10.1': + dependencies: + '@azure/abort-controller': 2.1.2 + '@azure/core-auth': 1.10.1 + '@azure/core-rest-pipeline': 1.23.0 + '@azure/core-tracing': 1.3.1 + '@azure/core-util': 1.13.1 + '@azure/logger': 1.3.0 + tslib: 2.8.1 + transitivePeerDependencies: + - supports-color + + '@azure/core-http-compat@2.3.2(@azure/core-client@1.10.1)(@azure/core-rest-pipeline@1.23.0)': + dependencies: + '@azure/abort-controller': 2.1.2 + '@azure/core-client': 1.10.1 + '@azure/core-rest-pipeline': 1.23.0 + + '@azure/core-lro@2.7.2': + dependencies: + '@azure/abort-controller': 2.1.2 + '@azure/core-util': 1.13.1 + '@azure/logger': 1.3.0 + tslib: 2.8.1 + transitivePeerDependencies: + - supports-color + + '@azure/core-paging@1.6.2': + dependencies: + tslib: 2.8.1 + + '@azure/core-rest-pipeline@1.23.0': + dependencies: + '@azure/abort-controller': 2.1.2 + '@azure/core-auth': 1.10.1 + '@azure/core-tracing': 1.3.1 + '@azure/core-util': 1.13.1 + '@azure/logger': 1.3.0 + '@typespec/ts-http-runtime': 0.3.4 + tslib: 2.8.1 + transitivePeerDependencies: + - supports-color + + '@azure/core-tracing@1.3.1': + dependencies: + tslib: 2.8.1 + + '@azure/core-util@1.13.1': + dependencies: + '@azure/abort-controller': 2.1.2 + '@typespec/ts-http-runtime': 0.3.4 + tslib: 2.8.1 + transitivePeerDependencies: + - supports-color + + '@azure/identity@4.13.1': + dependencies: + '@azure/abort-controller': 2.1.2 + '@azure/core-auth': 1.10.1 + '@azure/core-client': 1.10.1 + '@azure/core-rest-pipeline': 1.23.0 + '@azure/core-tracing': 1.3.1 + '@azure/core-util': 1.13.1 + '@azure/logger': 1.3.0 + '@azure/msal-browser': 5.6.1 + '@azure/msal-node': 5.1.1 + open: 10.2.0 + tslib: 2.8.1 + transitivePeerDependencies: + - supports-color + + '@azure/keyvault-common@2.0.0': + dependencies: + '@azure/abort-controller': 2.1.2 + '@azure/core-auth': 1.10.1 + '@azure/core-client': 1.10.1 + '@azure/core-rest-pipeline': 1.23.0 + '@azure/core-tracing': 1.3.1 + '@azure/core-util': 1.13.1 + '@azure/logger': 1.3.0 + tslib: 2.8.1 + transitivePeerDependencies: + - supports-color + + '@azure/keyvault-keys@4.10.0(@azure/core-client@1.10.1)': + dependencies: + '@azure-rest/core-client': 2.5.1 + '@azure/abort-controller': 2.1.2 + '@azure/core-auth': 1.10.1 + '@azure/core-http-compat': 2.3.2(@azure/core-client@1.10.1)(@azure/core-rest-pipeline@1.23.0) + '@azure/core-lro': 2.7.2 + '@azure/core-paging': 1.6.2 + '@azure/core-rest-pipeline': 1.23.0 + '@azure/core-tracing': 1.3.1 + '@azure/core-util': 1.13.1 + '@azure/keyvault-common': 2.0.0 + '@azure/logger': 1.3.0 + tslib: 2.8.1 + transitivePeerDependencies: + - '@azure/core-client' + - supports-color + + '@azure/logger@1.3.0': + dependencies: + '@typespec/ts-http-runtime': 0.3.4 + tslib: 2.8.1 + transitivePeerDependencies: + - supports-color + + '@azure/msal-browser@5.6.1': + dependencies: + '@azure/msal-common': 16.4.0 + + '@azure/msal-common@16.4.0': {} + + '@azure/msal-node@5.1.1': + dependencies: + '@azure/msal-common': 16.4.0 + jsonwebtoken: 9.0.3 + uuid: 8.3.2 + '@babel/runtime@7.28.4': {} '@biomejs/biome@2.2.2': @@ -6762,6 +7150,8 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.0 + '@js-joda/core@5.7.0': {} + '@langchain/core@1.1.19(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))': dependencies: '@cfworker/json-schema': 4.1.1 @@ -8338,6 +8728,8 @@ snapshots: postcss-selector-parser: 6.0.10 tailwindcss: 4.1.16 + '@tediousjs/connection-string@0.6.0': {} + '@tokenlens/core@1.3.0': {} '@tokenlens/fetch@1.3.0': @@ -8530,6 +8922,15 @@ snapshots: '@types/ms@2.1.0': {} + '@types/mssql@9.1.9(@azure/core-client@1.10.1)': + dependencies: + '@types/node': 22.13.10 + tarn: 3.0.2 + tedious: 19.2.1(@azure/core-client@1.10.1) + transitivePeerDependencies: + - '@azure/core-client' + - supports-color + '@types/node@22.13.10': dependencies: undici-types: 6.20.0 @@ -8570,6 +8971,10 @@ snapshots: '@types/prop-types': 15.7.14 csstype: 3.1.3 + '@types/readable-stream@4.0.23': + dependencies: + '@types/node': 22.13.10 + '@types/sharp@0.32.0': dependencies: sharp: 0.34.5 @@ -8599,6 +9004,14 @@ snapshots: '@types/webxr@0.5.24': {} + '@typespec/ts-http-runtime@0.3.4': + dependencies: + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.6 + tslib: 2.8.1 + transitivePeerDependencies: + - supports-color + '@ungap/structured-clone@1.3.0': {} '@use-gesture/core@10.3.1': {} @@ -8706,12 +9119,18 @@ snapshots: optionalDependencies: onnxruntime-node: 1.14.0 + abort-controller@3.0.0: + dependencies: + event-target-shim: 5.0.1 + acorn-import-attributes@1.9.5(acorn@8.15.0): dependencies: acorn: 8.15.0 acorn@8.15.0: {} + agent-base@7.1.4: {} + ai@5.0.117(zod@3.25.76): dependencies: '@ai-sdk/gateway': 2.0.24(zod@3.25.76) @@ -8760,8 +9179,17 @@ snapshots: dependencies: require-from-string: 2.0.2 + bl@6.1.6: + dependencies: + '@types/readable-stream': 4.0.23 + buffer: 6.0.3 + inherits: 2.0.4 + readable-stream: 4.7.0 + bowser@2.13.1: {} + buffer-equal-constant-time@1.0.1: {} + buffer-from@1.1.2: {} buffer@6.0.3: @@ -8774,6 +9202,10 @@ snapshots: node-gyp-build: 4.8.4 optional: true + bundle-name@4.1.0: + dependencies: + run-applescript: 7.1.0 + bytes@3.1.2: {} cac@6.7.14: {} @@ -8880,6 +9312,8 @@ snapshots: comma-separated-tokens@2.0.3: {} + commander@11.1.0: {} + commander@14.0.2: {} commander@7.2.0: {} @@ -9128,6 +9562,15 @@ snapshots: deepmerge@4.3.1: {} + default-browser-id@5.0.1: {} + + default-browser@5.5.0: + dependencies: + bundle-name: 4.1.0 + default-browser-id: 5.0.1 + + define-lazy-prop@3.0.0: {} + delaunator@5.0.1: dependencies: robust-predicates: 3.0.2 @@ -9185,6 +9628,10 @@ snapshots: es-errors: 1.3.0 gopd: 1.2.0 + ecdsa-sig-formatter@1.0.11: + dependencies: + safe-buffer: 5.1.2 + embla-carousel-react@8.6.0(react@19.0.0-rc-45804af1-20241021): dependencies: embla-carousel: 8.6.0 @@ -9317,10 +9764,14 @@ snapshots: dependencies: '@types/estree': 1.0.6 + event-target-shim@5.0.1: {} + eventemitter3@4.0.7: {} eventemitter3@5.0.4: {} + events@3.3.0: {} + eventsource-parser@1.1.2: {} eventsource-parser@3.0.6: {} @@ -9570,10 +10021,28 @@ snapshots: html-void-elements@3.0.0: {} + http-proxy-agent@7.0.2: + dependencies: + agent-base: 7.1.4 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + + https-proxy-agent@7.0.6: + dependencies: + agent-base: 7.1.4 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + iconv-lite@0.6.3: dependencies: safer-buffer: 2.1.2 + iconv-lite@0.7.2: + dependencies: + safer-buffer: 2.1.2 + ieee754@1.2.1: {} immediate@3.0.6: {} @@ -9619,16 +10088,26 @@ snapshots: is-decimal@2.0.1: {} + is-docker@3.0.0: {} + is-hexadecimal@1.0.4: {} is-hexadecimal@2.0.1: {} + is-inside-container@1.0.0: + dependencies: + is-docker: 3.0.0 + is-network-error@1.3.0: {} is-plain-obj@4.1.0: {} is-promise@2.2.2: {} + is-wsl@3.1.1: + dependencies: + is-inside-container: 1.0.0 + isarray@1.0.0: {} isexe@2.0.0: {} @@ -9644,6 +10123,8 @@ snapshots: jose@6.1.3: {} + js-md4@0.3.2: {} + js-tiktoken@1.0.21: dependencies: base64-js: 1.5.1 @@ -9656,6 +10137,19 @@ snapshots: jsonc-parser@3.3.1: {} + 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.1.1 + ms: 2.1.3 + semver: 7.7.3 + jszip@3.10.1: dependencies: lie: 3.3.0 @@ -9663,6 +10157,17 @@ snapshots: readable-stream: 2.3.8 setimmediate: 1.0.5 + jwa@2.0.1: + dependencies: + buffer-equal-constant-time: 1.0.1 + ecdsa-sig-formatter: 1.0.11 + safe-buffer: 5.1.2 + + jws@4.0.1: + dependencies: + jwa: 2.0.1 + safe-buffer: 5.1.2 + katex@0.16.25: dependencies: commander: 8.3.0 @@ -9764,10 +10269,22 @@ snapshots: lodash.debounce@4.0.8: {} + 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.merge@4.6.2: {} + lodash.once@4.1.1: {} + long@4.0.0: {} longest-streak@3.1.0: {} @@ -10197,7 +10714,7 @@ snapshots: micromark@4.0.2: dependencies: '@types/debug': 4.1.12 - debug: 4.4.0 + debug: 4.4.3 decode-named-character-reference: 1.1.0 devlop: 1.1.0 micromark-core-commonmark: 2.0.3 @@ -10239,6 +10756,17 @@ snapshots: ms@2.1.3: {} + mssql@12.2.1(@azure/core-client@1.10.1): + dependencies: + '@tediousjs/connection-string': 0.6.0 + commander: 11.1.0 + debug: 4.4.3 + tarn: 3.0.2 + tedious: 19.2.1(@azure/core-client@1.10.1) + transitivePeerDependencies: + - '@azure/core-client' + - supports-color + mustache@4.2.0: {} nanoid@3.3.11: {} @@ -10247,6 +10775,8 @@ snapshots: nanoid@5.1.3: {} + native-duplexpair@1.0.0: {} + next-auth@5.0.0-beta.30(next@16.1.1(@opentelemetry/api@1.9.0)(@playwright/test@1.57.0)(react-dom@19.0.0-rc-45804af1-20241021(react@19.0.0-rc-45804af1-20241021))(react@19.0.0-rc-45804af1-20241021))(react@19.0.0-rc-45804af1-20241021): dependencies: '@auth/core': 0.41.0 @@ -10330,6 +10860,13 @@ snapshots: onnxruntime-common: 1.14.0 platform: 1.3.6 + open@10.2.0: + dependencies: + default-browser: 5.5.0 + define-lazy-prop: 3.0.0 + is-inside-container: 1.0.0 + wsl-utils: 0.1.0 + orderedmap@2.1.1: {} p-finally@1.0.0: {} @@ -10504,6 +11041,8 @@ snapshots: process-nextick-args@2.0.1: {} + process@0.11.10: {} + promise-worker-transferable@1.0.4: dependencies: is-promise: 2.2.2 @@ -10808,6 +11347,14 @@ snapshots: string_decoder: 1.1.1 util-deprecate: 1.0.2 + readable-stream@4.7.0: + dependencies: + abort-controller: 3.0.0 + buffer: 6.0.3 + events: 3.3.0 + process: 0.11.10 + string_decoder: 1.3.0 + redis@5.9.0: dependencies: '@redis/bloom': 5.9.0(@redis/client@5.9.0) @@ -10956,10 +11503,14 @@ snapshots: points-on-curve: 0.2.0 points-on-path: 0.2.1 + run-applescript@7.1.0: {} + rw@1.3.3: {} safe-buffer@5.1.2: {} + safe-buffer@5.2.1: {} + safer-buffer@2.1.2: {} scheduler@0.25.0-rc-45804af1-20241021: {} @@ -11046,6 +11597,8 @@ snapshots: space-separated-tokens@2.0.2: {} + sprintf-js@1.1.3: {} + stackback@0.0.2: {} stats-gl@2.4.2(@types/three@0.182.0)(three@0.182.0): @@ -11081,6 +11634,10 @@ snapshots: dependencies: safe-buffer: 5.1.2 + string_decoder@1.3.0: + dependencies: + safe-buffer: 5.2.1 + stringify-entities@4.0.4: dependencies: character-entities-html4: 2.1.0 @@ -11137,6 +11694,24 @@ snapshots: tapable@2.2.1: {} + tarn@3.0.2: {} + + tedious@19.2.1(@azure/core-client@1.10.1): + dependencies: + '@azure/core-auth': 1.10.1 + '@azure/identity': 4.13.1 + '@azure/keyvault-keys': 4.10.0(@azure/core-client@1.10.1) + '@js-joda/core': 5.7.0 + '@types/node': 22.13.10 + bl: 6.1.6 + iconv-lite: 0.7.2 + js-md4: 0.3.2 + native-duplexpair: 1.0.0 + sprintf-js: 1.1.3 + transitivePeerDependencies: + - '@azure/core-client' + - supports-color + three-mesh-bvh@0.8.3(three@0.182.0): dependencies: three: 0.182.0 @@ -11359,6 +11934,8 @@ snapshots: uuid@13.0.0: {} + uuid@8.3.2: {} + vfile-location@5.0.3: dependencies: '@types/unist': 3.0.3 @@ -11492,6 +12069,10 @@ snapshots: bufferutil: 4.0.9 optional: true + wsl-utils@0.1.0: + dependencies: + is-wsl: 3.1.1 + xtend@4.0.2: {} yaml@2.7.0: