diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index d8a24518..72d6d4c8 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -28,7 +28,7 @@ ## Verification - + - [ ] Not run; reason: diff --git a/.github/workflows/frontend-quality.yml b/.github/workflows/frontend-quality.yml index 52551570..932fee6a 100644 --- a/.github/workflows/frontend-quality.yml +++ b/.github/workflows/frontend-quality.yml @@ -1,4 +1,4 @@ -name: Frontend Quality +name: Workspace Quality on: push: @@ -6,7 +6,13 @@ on: - main - dev paths: + - "backend/**" - "frontend/**" + - "packages/**" + - "package.json" + - "pnpm-lock.yaml" + - "pnpm-workspace.yaml" + - "turbo.json" - "scripts/sync-version.mjs" - "VERSION" - ".github/workflows/frontend-quality.yml" @@ -15,7 +21,13 @@ on: - main - dev paths: + - "backend/**" - "frontend/**" + - "packages/**" + - "package.json" + - "pnpm-lock.yaml" + - "pnpm-workspace.yaml" + - "turbo.json" - "scripts/sync-version.mjs" - "VERSION" - ".github/workflows/frontend-quality.yml" @@ -26,11 +38,8 @@ permissions: jobs: quality: - name: Biome and TypeScript + name: Frontend and backend checks runs-on: ubuntu-24.04 - defaults: - run: - working-directory: frontend steps: - name: Checkout @@ -40,17 +49,24 @@ jobs: uses: pnpm/action-setup@v4 with: version: 10.17.0 - run_install: false - name: Set up Node.js uses: actions/setup-node@v4 with: node-version: 24 cache: pnpm - cache-dependency-path: frontend/pnpm-lock.yaml + + - name: Set up Go + uses: actions/setup-go@v5 + with: + go-version-file: backend/go.mod + cache-dependency-path: backend/go.sum - name: Install dependencies run: pnpm install --frozen-lockfile - - name: Run frontend checks + - name: Run workspace checks run: pnpm check + + - name: Run workspace tests + run: pnpm test diff --git a/.gitignore b/.gitignore index 4b44a54a..c2786eb9 100644 --- a/.gitignore +++ b/.gitignore @@ -93,6 +93,9 @@ web_modules/ .cache .parcel-cache +# Turborepo cache +.turbo/ + # Next.js build output .next out diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 02b492d7..032ffd14 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -10,22 +10,22 @@ Thank you for contributing to DEEIX Chat. ## Development Setup -Backend: +Install all workspace dependencies: ```bash -cd backend -go test ./... +pnpm install ``` -Frontend: +Run the shared quality and test pipelines: ```bash -cd frontend -pnpm install -pnpm lint +pnpm check +pnpm test pnpm build ``` +Use `pnpm dev`, `pnpm dev:web`, or `pnpm dev:api` for local development. + Use the example configuration files for local development. Do not commit local secrets or production credentials. ## Pull Request Guidelines @@ -107,7 +107,7 @@ Core expectations: - keep API access inside `shared/api` or feature-level API modules - do not hard-code provider-private model behavior in the frontend - keep authentication tokens aligned with the existing session model -- run `pnpm lint`, and run `pnpm build` for routing, dependency, or Next.js changes +- run `pnpm --filter @deeix/web lint`, and run `pnpm build` for routing, dependency, or Next.js changes ## Code Style diff --git a/Dockerfile b/Dockerfile index 0cdb3837..260dbede 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,7 +2,7 @@ FROM node:24-bookworm-slim AS frontend-builder -WORKDIR /src/frontend +WORKDIR /src ENV PNPM_HOME=/pnpm ENV PATH=$PNPM_HOME:$PATH @@ -12,17 +12,23 @@ ENV NEXT_PUBLIC_API_BASE_URL=${NEXT_PUBLIC_API_BASE_URL} COPY VERSION /src/VERSION COPY scripts /src/scripts -COPY frontend/package.json frontend/pnpm-lock.yaml ./ -COPY frontend/scripts ./scripts -COPY frontend/public/pwa ./public/pwa +COPY package.json pnpm-lock.yaml pnpm-workspace.yaml ./ +COPY frontend/package.json ./frontend/package.json +COPY backend/package.json ./backend/package.json +COPY packages/api-contract/package.json ./packages/api-contract/package.json +COPY frontend/scripts ./frontend/scripts +COPY frontend/public/pwa ./frontend/public/pwa -RUN corepack enable +RUN npm install --global pnpm@10.17.0 RUN --mount=type=cache,id=pnpm-store,target=/pnpm/store \ pnpm config set store-dir /pnpm/store \ - && pnpm install --frozen-lockfile + && pnpm install --frozen-lockfile --filter @deeix/web... + +COPY frontend ./frontend +COPY packages/api-contract ./packages/api-contract -COPY frontend ./ +WORKDIR /src/frontend # 如果你的 Next 版本支持,可以在 next.config 里开启 turbopack build filesystem cache RUN --mount=type=cache,id=next-cache,target=/src/frontend/.next/cache \ diff --git a/README.md b/README.md index c5631659..f2ea9b4a 100644 --- a/README.md +++ b/README.md @@ -130,22 +130,21 @@ cp config.example.yaml config.yaml Adjust `database.postgres.dsn`, `database.redis.*`, and public URLs in `config.yaml` for your local environment. -2. Start the backend: +2. Install workspace dependencies and prepare the frontend environment: ```bash -cd backend -make run +pnpm install +cp frontend/.env.example frontend/.env.local ``` -3. Start the frontend: +3. Start the frontend and backend together: ```bash -cd frontend -pnpm install -cp .env.example .env.local pnpm dev ``` +Use `pnpm dev:web` or `pnpm dev:api` to start only one workspace. + The frontend uses `NEXT_PUBLIC_API_BASE_URL` for API requests. For local development, confirm that `frontend/.env.local` contains: ```env @@ -268,9 +267,8 @@ Use this mode when the frontend and backend are served from different public ori 2. Build and publish the frontend. ```bash - cd frontend pnpm install - NEXT_PUBLIC_API_BASE_URL=https://api.example.com pnpm build + NEXT_PUBLIC_API_BASE_URL=https://api.example.com pnpm --filter @deeix/web build ``` The static output is `frontend/out`. Serve it with Nginx, CDN, object storage, or any static web server. To let the Go backend serve the frontend, place `frontend/out` under `server.frontend_dist_dir`; the Docker image defaults to `/app/frontend/out`. diff --git a/README.zh-CN.md b/README.zh-CN.md index 8a13562f..952bbe4b 100644 --- a/README.zh-CN.md +++ b/README.zh-CN.md @@ -130,22 +130,21 @@ cp config.example.yaml config.yaml 根据本机环境调整 `config.yaml` 中的 `database.postgres.dsn`、`database.redis.*` 和公开访问地址。 -2. 启动后端: +2. 安装工作区依赖并准备前端环境: ```bash -cd backend -make run +pnpm install +cp frontend/.env.example frontend/.env.local ``` -3. 启动前端: +3. 同时启动前端和后端: ```bash -cd frontend -pnpm install -cp .env.example .env.local pnpm dev ``` +只启动单个工作区时,使用 `pnpm dev:web` 或 `pnpm dev:api`。 + 前端请求后端使用 `NEXT_PUBLIC_API_BASE_URL`。本地开发时确认 `frontend/.env.local` 中包含: ```env @@ -268,9 +267,8 @@ docker compose -f docker/docling/docker-compose.yml up -d --build 2. 构建并发布前端。 ```bash - cd frontend pnpm install - NEXT_PUBLIC_API_BASE_URL=https://api.example.com pnpm build + NEXT_PUBLIC_API_BASE_URL=https://api.example.com pnpm --filter @deeix/web build ``` 静态产物在 `frontend/out`,可由 Nginx、CDN、对象存储或任意静态服务托管。如需由 Go 后端托管前端,把 `frontend/out` 放到 `server.frontend_dist_dir` 指向的目录;Docker 镜像默认是 `/app/frontend/out`。 diff --git a/backend/docs/swagger.json b/backend/docs/swagger.json index 1d402126..7f4ee7e9 100644 --- a/backend/docs/swagger.json +++ b/backend/docs/swagger.json @@ -18601,4 +18601,4 @@ "in": "header" } } -} \ No newline at end of file +} diff --git a/backend/docs/swagger.yaml b/backend/docs/swagger.yaml index 2f8b9e24..b5b6225c 100644 --- a/backend/docs/swagger.yaml +++ b/backend/docs/swagger.yaml @@ -5468,7 +5468,7 @@ info: contact: {} description: DEEIX Chat 后端 API 文档 title: DEEIX Chat API - version: 0.3.2 + version: "0.3.2" paths: /admin/announcements: get: diff --git a/backend/package.json b/backend/package.json new file mode 100644 index 00000000..f13ac5fe --- /dev/null +++ b/backend/package.json @@ -0,0 +1,12 @@ +{ + "name": "@deeix/api", + "version": "0.3.2", + "private": true, + "scripts": { + "build": "make build", + "check": "make check-version && go vet ./...", + "clean": "rm -rf ../.cache/deeix-chat", + "dev": "make run", + "test": "make test" + } +} diff --git a/backend/turbo.json b/backend/turbo.json new file mode 100644 index 00000000..20b11c59 --- /dev/null +++ b/backend/turbo.json @@ -0,0 +1,8 @@ +{ + "extends": ["//"], + "tasks": { + "build": { + "cache": false + } + } +} diff --git a/frontend/features/admin/api/admin.types.ts b/frontend/features/admin/api/admin.types.ts index b91a3599..51daadf3 100644 --- a/frontend/features/admin/api/admin.types.ts +++ b/frontend/features/admin/api/admin.types.ts @@ -1,236 +1,76 @@ +import type { + AuditLogResponse, + AuthEventResponse, + ConversationEventResponse, + CreateUserRequest, + DeleteUserResponse, + ImportOpenWebUIUsersRequest as ContractImportOpenWebUIUsersRequest, + ImportOpenWebUIUsersResponse, + PatchUserRequest, + PaymentOrderResponse, + ResetUserPasswordRequest, + ResetUserPasswordResponse, + RevokeUserSessionsResponse, + SystemEventResponse, + UpdateUserStatusRequest, + UserDataResponse, + UsageLogResponse, +} from "@deeix/api-contract"; import type { PagePayload } from "@/shared/api/common.types"; import type { UserDTO } from "@/shared/api/auth.types"; export type AdminUserStatus = "pending_activation" | "active" | "locked" | "suspended" | "deactivated"; export type AdminUserRole = "user" | "admin" | "superadmin"; -export type CreateAdminUserRequest = { - username: string; - password: string; - avatarURL?: string; - displayName?: string; - email?: string; - phone?: string; - timezone?: string; - locale?: string; - subscriptionTier?: string; - subscriptionExpiresAt?: string; -}; +export type CreateAdminUserRequest = CreateUserRequest; -export type UpdateAdminUserStatusRequest = { +export type UpdateAdminUserStatusRequest = Omit & { status: AdminUserStatus; - reason?: string; }; -export type PatchAdminUserRequest = { - avatarURL?: string; - displayName?: string; - email?: string; - phone?: string; +export type PatchAdminUserRequest = Omit & { role?: AdminUserRole; status?: AdminUserStatus; - timezone?: string; - locale?: string; - profilePreferences?: string; - subscriptionTier?: string; - subscriptionExpiresAt?: string; - reason?: string; }; -export type ResetAdminUserPasswordRequest = { - newPassword: string; - mustResetPassword?: boolean; -}; +export type ResetAdminUserPasswordRequest = ResetUserPasswordRequest; -export type ImportOpenWebUIUsersRequest = { - dsn: string; - creditMultiplier: number; - dryRun?: boolean; -}; +export type ImportOpenWebUIUsersRequest = ContractImportOpenWebUIUsersRequest; -export type AdminUserData = { +export type AdminUserData = Omit, "user"> & { user: UserDTO; }; -export type RevokeAdminUserSessionsData = { - revoked: boolean; -}; +export type RevokeAdminUserSessionsData = Required; -export type ResetAdminUserPasswordData = { - reset: boolean; -}; +export type ResetAdminUserPasswordData = Required; export type ResetAdminUserTwoFactorData = { reset: boolean; }; -export type DeleteAdminUserData = { - deleted: boolean; -}; +export type DeleteAdminUserData = Required; -export type ImportOpenWebUIUsersData = { +export type ImportOpenWebUIUsersData = Omit, "dedupeField" | "source"> & { source: "openwebui"; dedupeField: "email"; - dedupeRule: string; - scanned: number; - imported: number; - skippedExistingEmail: number; - skippedDuplicateSourceEmail: number; - skippedInvalidEmail: number; - skippedInvalidRow: number; }; -export type AdminUserAuthEventDTO = { - id: number; - requestID: string; - userID: number; - username: string; - userDisplayName: string; - userLabel: string; - eventType: string; - result: string; - reason: string; - clientIP: string; - userAgent: string; - detailJSON: string; - occurredAt: string; - createdAt: string; - updatedAt: string; -}; +export type AdminUserAuthEventDTO = Required; -export type AdminAuditLogDTO = { - id: number; - requestID: string; - actorUserID: number; - actorUsername: string; - actorDisplayName: string; - actorLabel: string; - action: string; - resource: string; - resourceID: string; - ip: string; - userAgent: string; - detailJSON: string; - createdAt: string; - updatedAt: string; -}; +export type AdminAuditLogDTO = Required; -export type AdminSystemEventDTO = { - id: number; - requestID: string; - traceID: string; - level: string; - source: string; - event: string; - resource: string; - resourceID: string; - message: string; - detailJSON: string; - createdAt: string; - updatedAt: string; -}; +export type AdminSystemEventDTO = Required; -export type AdminUsageLogDTO = { - id: number; - userID: number; - username: string; - userDisplayName: string; - userLabel: string; - conversationID: number; - providerProtocol: string; - upstreamName: string; - platformModelName: string; - routedBindingCode: string; - upstreamModelName: string; - isFreeModel: boolean; - usageDate: string; - inputTokens: number; - cacheReadTokens: number; - cacheWriteTokens: number; - cacheWrite5mTokens: number; - cacheWrite1hTokens: number; - outputTokens: number; - reasoningTokens: number; - callCount: number; - durationSeconds: number; - latencyMS: number; - usageSpeed: string; - serviceTier: string; - billedCurrency: string; - billedNanousd: number; - billedUSD: number; - pricingSnapshotJSON: string; - createdAt: string; - updatedAt: string; -}; +export type AdminUsageLogDTO = Required>; -export type AdminPaymentOrderDTO = { - id: number; - orderNo: string; - orderType: string; - userID: number; - username: string; - userDisplayName: string; - userLabel: string; - planID: number; - priceID: number; - provider: string; - status: string; - baseCurrency: string; - baseAmountCents: number; - payCurrency: string; - payAmountCents: number; - fxRate: string; - creditNanousd: number; - creditUSD: number; - billingInterval: string; - cycles: number; - externalPaymentID: string; - externalCheckoutID: string; +export type AdminPaymentOrderDTO = Omit, "expiredAt" | "paidAt"> & { paidAt?: string | null; expiredAt?: string | null; - snapshotJSON: string; - createdAt: string; - updatedAt: string; }; -export type AdminConversationEventDTO = { - id: number; - messageID: number; - conversationID: number; - userID: number; - username: string; - userDisplayName: string; - userLabel: string; - runID: string; - providerProtocol: string; - upstreamName: string; - platformModelName: string; - routedBindingCode: string; - upstreamModelName: string; - eventScope: string; - eventID: string; - eventType: string; - phase: string; - stage: string; - roundID: string; - parentEventID: string; - status: string; - title: string; - summary: string; - contentMarkdown: string; - payloadJSON: string; - seq: number; - toolCallID: string; - toolName: string; - latencyMS: number; - inputJSON: string; - outputJSON: string; - errorJSON: string; - startedAt: string; +export type AdminConversationEventDTO = Omit, "endedAt"> & { endedAt?: string | null; - createdAt: string; - updatedAt: string; }; export type ListAdminUsersResult = PagePayload; diff --git a/frontend/features/admin/api/announcements.types.ts b/frontend/features/admin/api/announcements.types.ts index 6c0c8f9d..196c11fd 100644 --- a/frontend/features/admin/api/announcements.types.ts +++ b/frontend/features/admin/api/announcements.types.ts @@ -1,3 +1,9 @@ +import type { + AnnouncementDataResponse, + AnnouncementDeleteDataResponse, + CreateAnnouncementRequest, + PatchAnnouncementRequestDoc, +} from "@deeix/api-contract"; import type { PagePayload } from "@/shared/api/common.types"; import type { AnnouncementDTO } from "@/shared/api/announcements.types"; @@ -5,23 +11,18 @@ export type AdminAnnouncementDTO = AnnouncementDTO; export type AdminAnnouncementPage = PagePayload; -export type CreateAdminAnnouncementRequest = { - title: string; - contentMarkdown: string; - status?: "active" | "inactive"; - type?: "critical" | "warning" | "info" | "normal" | "general"; - pinned?: boolean; - priority: number; +export type CreateAdminAnnouncementRequest = Omit & { startsAt?: string | null; expiresAt?: string | null; }; -export type UpdateAdminAnnouncementRequest = Partial; +export type UpdateAdminAnnouncementRequest = Omit & { + startsAt?: string | null; + expiresAt?: string | null; +}; -export type AdminAnnouncementData = { +export type AdminAnnouncementData = Omit, "announcement"> & { announcement: AdminAnnouncementDTO; }; -export type AdminAnnouncementDeleteData = { - deleted: boolean; -}; +export type AdminAnnouncementDeleteData = Required; diff --git a/frontend/features/admin/api/audit.ts b/frontend/features/admin/api/audit.ts index 6fd36e15..ecf5adcb 100644 --- a/frontend/features/admin/api/audit.ts +++ b/frontend/features/admin/api/audit.ts @@ -1,3 +1,4 @@ +import type { CleanupLogsRequest, CleanupLogsResponse } from "@deeix/api-contract"; import { authedRequest } from "@/shared/api/authed-client"; import type { AdminAuditLogDTO, @@ -78,15 +79,13 @@ export type AdminLogCleanupType = | "conversation" | "system"; -export type AdminLogCleanupResult = { +export type AdminLogCleanupResult = Omit, "type"> & { type: AdminLogCleanupType; - before: string; - deletedCount: number; }; export async function cleanupAdminLogs( accessToken: string, - input: { type: AdminLogCleanupType; before: string }, + input: Omit & { type: AdminLogCleanupType }, ): Promise { return authedRequest( "/api/v1/admin/logs/cleanup", diff --git a/frontend/features/admin/api/billing.types.ts b/frontend/features/admin/api/billing.types.ts index eac24e4b..56a506c1 100644 --- a/frontend/features/admin/api/billing.types.ts +++ b/frontend/features/admin/api/billing.types.ts @@ -1,236 +1,129 @@ +import type { + BatchDeleteRedemptionCodeDataResponse, + BatchDeleteRedemptionCodeRequest, + BatchDeleteRedemptionCodeResultResponse, + BillingAccountDataResponse, + BillingAccountResponse, + BillingConfigDataResponse, + BillingConfigRequest, + BillingConfigResponse, + BillingPlanDataResponse, + BillingPlanResponse, + BillingPriceResponse, + CreateRedemptionCodeRequest, + ModelPricingDataResponse, + ModelPricingResponse, + NativeToolPricingResponse, + OpenRouterOfficialPricingDataResponse, + OpenRouterOfficialPricingItemResponse, + PatchRedemptionCodeRequestDoc, + RedemptionCodeCreateDataResponse, + RedemptionCodeDataResponse, + RedemptionCodeDeleteDataResponse, + RedemptionCodeResponse, + UpdateBillingAccountBalanceRequest, + UpdateBillingPlanRequest, + UpsertModelPricingRequest, +} from "@deeix/api-contract"; import type { PagePayload } from "@/shared/api/common.types"; -export type AdminBillingPlanPriceDTO = { - id: number; - planID: number; - code: string; - billingInterval: "month" | "year" | "lifetime" | string; - currency: string; - amountCents: number; - isDefault: boolean; -}; - -export type AdminBillingPlanDTO = { - id: number; - code: "free" | "pro" | "max" | "ultra" | string; - name: string; - description: string; - featureJSON: string; - periodCreditUSD: number; - periodCreditNanousd: number; - discountPercent: number; - sortOrder: number; - isActive: boolean; +export type AdminBillingPlanPriceDTO = Required; + +export type AdminBillingPlanDTO = Omit, "permissionGroupID" | "prices"> & { permissionGroupID: number | null; prices: AdminBillingPlanPriceDTO[]; }; -export type AdminModelPricingDTO = { - id: number; - platformModelName: string; - modelVendor: string; - modelIcon: string; - currency: string; - isFree: boolean; - pricingMode: "token" | "call" | "duration" | "tiered" | string; - inputUSDPerMTokens: number; - cacheReadUSDPerMTokens: number; - cacheWriteUSDPerMTokens: number; - outputUSDPerMTokens: number; - callUSDPerCall: number; - durationUSDPerSecond: number; - tieredPricingJSON: string; - inputNanousdPerMTokens: number; - cacheReadNanousdPerMTokens: number; - cacheWriteNanousdPerMTokens: number; - outputNanousdPerMTokens: number; - callNanousdPerCall: number; - durationNanousdPerSecond: number; - createdAt: string; - updatedAt: string; -}; - -export type UpsertAdminModelPricingRequest = { - platformModelName: string; - currency?: string; - isFree: boolean; - pricingMode: "token" | "call" | "duration" | "tiered" | string; - inputUSDPerMTokens: number; - cacheReadUSDPerMTokens: number; - cacheWriteUSDPerMTokens: number; - outputUSDPerMTokens: number; - callUSDPerCall: number; - durationUSDPerSecond: number; - tieredPricingJSON?: string; -}; - -export type AdminModelPricingData = { +export type AdminModelPricingDTO = Required; + +export type UpsertAdminModelPricingRequest = UpsertModelPricingRequest; + +export type AdminModelPricingData = Omit, "modelPricing"> & { modelPricing: AdminModelPricingDTO; }; -export type AdminOfficialPricingCatalogItemDTO = { - id: string; - canonicalSlug: string; - name: string; - pricing: { - prompt: string; - completion: string; - inputCacheRead: string; - inputCacheWrite: string; - }; -}; +export type AdminOfficialPricingCatalogItemDTO = Required; -export type AdminOfficialPricingCatalogData = { - fetchedAt: string; - cached: boolean; - stale: boolean; +export type AdminOfficialPricingCatalogData = Omit, "items"> & { items: AdminOfficialPricingCatalogItemDTO[]; }; -export type UpdateAdminBillingPlanRequest = { - name: string; - description: string; - periodCreditUSD: number; - discountPercent: number; - currency?: string; - amountUSD: number; +export type UpdateAdminBillingPlanRequest = Omit & { billingInterval: "month" | "year" | "lifetime" | string; permissionGroupID?: number | null; }; -export type AdminBillingPlanData = { +export type AdminBillingPlanData = Omit, "plan"> & { plan: AdminBillingPlanDTO; }; export type AdminBillingMode = "self" | "period" | "usage"; -export type NativeToolPricingDTO = { - provider: string; - toolKey: string; - label: string; - description: string; - type: string; - priceNanousd: number; - unit: "call" | "search" | string; - priceLabel: "included" | "notMetered" | string; - billable: boolean; -}; +export type NativeToolPricingDTO = Required; -export type AdminBillingConfigDTO = { +export type AdminBillingConfigDTO = Omit, "epayTypes" | "mode" | "nativeToolPricing"> & { mode: AdminBillingMode; - prepaidAmountUSD: number; - prepaidAmountNanousd: number; - nativeToolBillingEnabled: boolean; nativeToolPricing: NativeToolPricingDTO[]; - paymentProviders: Array<"stripe" | "epay" | string>; - usdToCNYRate: number; - displayCurrency: "USD" | "CNY" | string; epayTypes: Array<{ name: string; type: string }>; }; -export type UpdateAdminBillingConfigRequest = { +export type UpdateAdminBillingConfigRequest = Omit & { mode: AdminBillingMode; - prepaidAmountUSD?: number; - usdToCNYRate?: number; - displayCurrency?: "USD" | "CNY"; - nativeToolBillingEnabled?: boolean; nativeToolPricing?: NativeToolPricingDTO[]; }; -export type AdminBillingConfigData = { +export type AdminBillingConfigData = Omit, "config"> & { config: AdminBillingConfigDTO; }; -export type AdminBillingAccountDTO = { - userID: number; - currency: string; - balanceNanousd: number; - balanceUSD: number; - status: string; - updatedAt: string; -}; +export type AdminBillingAccountDTO = Required; -export type AdminBillingAccountData = { +export type AdminBillingAccountData = Omit, "account"> & { account: AdminBillingAccountDTO; }; -export type UpdateAdminBillingAccountBalanceRequest = { - balanceUSD: number; - description?: string; -}; +export type UpdateAdminBillingAccountBalanceRequest = UpdateBillingAccountBalanceRequest; -export type AdminRedemptionCodeDTO = { - id: number; +export type AdminRedemptionCodeDTO = Omit< + Required, + "code" | "expiresAt" | "maxRedemptions" | "remainingRedemptions" +> & { code?: string; - codeHint: string; - mode: "usage" | "period" | string; - rewardType: "balance" | "subscription" | string; - creditUSD: number; - creditNanousd: number; - planID: number; - durationDays: number; maxRedemptions: number | null; - perUserLimit: number; - redeemedCount: number; remainingRedemptions: number | null; - status: "active" | "inactive" | "deleted" | string; expiresAt: string | null; - description: string; - createdByUserID: number; - createdAt: string; - updatedAt: string; }; -export type CreateAdminRedemptionCodeRequest = { - code?: string; - quantity?: number; - mode: "usage" | "period"; - creditUSD?: number; - planID?: number; - durationDays?: number; +export type CreateAdminRedemptionCodeRequest = Omit & { maxRedemptions?: number | null; - perUserLimit: number; expiresAt?: string | null; - description?: string; }; -export type UpdateAdminRedemptionCodeRequest = { - status?: "active" | "inactive"; +export type UpdateAdminRedemptionCodeRequest = Omit & { maxRedemptions?: number | null; - perUserLimit?: number; expiresAt?: string | null; - description?: string; }; export type AdminRedemptionCodePage = PagePayload; -export type AdminRedemptionCodeCreateData = { +export type AdminRedemptionCodeCreateData = Omit, "results"> & { results: AdminRedemptionCodeDTO[]; }; -export type AdminRedemptionCodeData = { +export type AdminRedemptionCodeData = Omit, "code"> & { code: AdminRedemptionCodeDTO; }; -export type AdminRedemptionCodeDeleteData = { - deleted: boolean; -}; +export type AdminRedemptionCodeDeleteData = Required; -export type AdminRedemptionCodeBatchDeleteRequest = { - ids: number[]; -}; +export type AdminRedemptionCodeBatchDeleteRequest = BatchDeleteRedemptionCodeRequest; -export type AdminRedemptionCodeBatchDeleteResult = { - id: number; +export type AdminRedemptionCodeBatchDeleteResult = Omit, "error"> & { status: "deleted" | "not_found" | "failed" | string; error?: string; }; -export type AdminRedemptionCodeBatchDeleteData = { - total: number; - successCount: number; - notFoundCount: number; - failedCount: number; +export type AdminRedemptionCodeBatchDeleteData = Omit, "results"> & { results: AdminRedemptionCodeBatchDeleteResult[]; }; diff --git a/frontend/features/admin/api/llm.types.ts b/frontend/features/admin/api/llm.types.ts index 0b023d0b..c0996f9d 100644 --- a/frontend/features/admin/api/llm.types.ts +++ b/frontend/features/admin/api/llm.types.ts @@ -1,3 +1,35 @@ +import type { + BatchDeleteRequest, + BatchDeleteResponse, + BatchDeleteResultResponse, + BindModelUpstreamSourceRequest, + CircuitResetResponse, + CreateModelRequest, + CreateUpstreamRequest, + ImportUpstreamModelsRequest, + ImportUpstreamModelsResponse, + ModelDataResponse, + ModelProbeBatchResponse, + ModelProbeDebugRequestResponse, + ModelProbeDebugResponse, + ModelProbeDebugResponseResponse, + ModelProbeResponse, + ModelResponse, + ModelUpstreamSourceDataResponse, + ModelUpstreamSourceResponse, + ReorderModelsRequest, + UpdateModelRequest, + UpdateModelUpstreamSourceRequest, + UpdateUpstreamRequest, + UpsertUpstreamModelRequest, + UpstreamAPIKeyResponse, + UpstreamDataResponse, + UpstreamModelDataResponse, + UpstreamModelResponse, + UpstreamRemoteModelResponse, + UpstreamRemoteModelsResponse, + UpstreamResponse, +} from "@deeix/api-contract"; import type { PagePayload } from "@/shared/api/common.types"; export type AdminLLMStatus = "active" | "inactive"; @@ -32,122 +64,57 @@ export type AdminLLMModelCbPolicyMode = "default" | "enforced"; // Upstream views // --------------------------------------------------------------------------- -export type AdminLLMUpstreamView = { - id: number; - name: string; - baseURL: string; +export type AdminLLMUpstreamView = Omit< + Required, + "apiKeyItems" | "cbThresholdLogic" | "compatible" | "status" +> & { compatible: AdminLLMCompatible | ""; - protocolDefaultsJSON: string; - apiKeysMasked: string; apiKeyItems?: AdminLLMUpstreamAPIKey[]; status: AdminLLMStatus; - connectTimeoutMS: number; - readTimeoutMS: number; - streamIdleTimeoutMS: number; - cbFailureThreshold: number; - cbModelThreshold: number; cbThresholdLogic: AdminLLMCbLogic; - cbDurationMin: number; - cbWindowMin: number; - headersJSON: string; - modelsCount: number; - activeModelsCount: number; - circuitOpen: boolean; - circuitUntil: string; - createdAt: string; - updatedAt: string; }; -export type AdminLLMUpstreamAPIKey = { - id: string; - index: number; - keyMasked: string; - status: string; - note: string; -}; +export type AdminLLMUpstreamAPIKey = Required; -export type AdminLLMModelDTO = { - id: number; - platformModelName: string; +export type AdminLLMModelDTO = Omit< + Required, + "accessScope" | "cbPolicyMode" | "status" | "vendor" +> & { vendor: AdminLLMModelVendor; - kindsJSON: string; - icon: string; - capabilitiesJSON: string; - systemPrompt: string; accessScope: AdminLLMModelAccessScope; status: AdminLLMStatus; - description: string; cbPolicyMode: AdminLLMModelCbPolicyMode; - cbFailureThreshold: number; - cbDurationMin: number; - cbWindowMin: number; - sortOrder: number; - sourceCount: number; - activeSourceCount: number; - protocolsJSON: string; - upstreamNamesJSON: string; - createdAt: string; - updatedAt: string; }; -export type AdminLLMUpstreamModelDTO = { - id: number; - routeID: number; - upstreamID: number; - bindingCode: string; - platformModelID: number; - platformModelName: string; +export type AdminLLMUpstreamModelDTO = Omit< + Required, + "modelVendor" | "protocol" | "routeStatus" | "suggestedProtocol" | "upstreamModelStatus" | "upstreamModelVendor" +> & { modelVendor: AdminLLMModelVendor; - modelKindsJSON: string; - modelIcon: string; - upstreamModelName: string; upstreamModelVendor: AdminLLMModelVendor; - upstreamModelIcon: string; - upstreamModelKindsJSON: string; suggestedProtocol: AdminLLMAdapter | ""; protocol: AdminLLMAdapter | ""; upstreamModelStatus: AdminLLMStatus; routeStatus: AdminLLMStatus | ""; - priority: number; - weight: number; - source: string; - cbFailureThreshold: number; - cbDurationMin: number; - cbWindowMin: number; - headersJSON: string; - circuitOpen: boolean; - circuitUntil: string; - createdAt: string; - updatedAt: string; }; -export type AdminLLMModelUpstreamSourceDTO = { - id: number; - upstreamID: number; - upstreamName: string; +export type AdminLLMModelUpstreamSourceDTO = Omit< + Required, + | "circuitScope" + | "protocol" + | "status" + | "suggestedProtocol" + | "upstreamModelStatus" + | "upstreamModelVendor" + | "upstreamStatus" +> & { upstreamStatus: AdminLLMStatus; - baseURL: string; - bindingCode: string; - upstreamModelName: string; - upstreamModelKindsJSON: string; upstreamModelVendor: AdminLLMModelVendor; - upstreamModelIcon: string; suggestedProtocol: AdminLLMAdapter | ""; upstreamModelStatus: AdminLLMStatus; protocol: AdminLLMAdapter | ""; status: AdminLLMStatus; - priority: number; - weight: number; - source: string; - cbFailureThreshold: number; - cbDurationMin: number; - cbWindowMin: number; - headersJSON: string; - circuitOpen: boolean; - circuitUntil: string; circuitScope: "upstream" | "source" | ""; - createdAt: string; - updatedAt: string; }; export type AdminLLMUpstreamHealthView = { @@ -162,59 +129,60 @@ export type AdminLLMUpstreamHealthView = { lastSuccessAt: string; }; -export type AdminLLMModelProbeDebug = { - request: { - method: string; - path: string; - headers?: Record; - body: string; - }; - response: { - statusCode: number; - headers?: Record; - body: string; - }; +export type AdminLLMModelProbeDebug = Omit, "request" | "response"> & { + request: Required> & + Pick; + response: Required> & + Pick; }; -export type AdminLLMModelProbeResult = { - success: boolean; +export type AdminLLMModelProbeResult = Required< + Pick< + ModelProbeResponse, + | "bindingCode" + | "endpoint" + | "latencyMS" + | "platformModelID" + | "platformModelName" + | "routeID" + | "status" + | "success" + > +> & + Omit< + ModelProbeResponse, + | "bindingCode" + | "debug" + | "endpoint" + | "latencyMS" + | "platformModelID" + | "platformModelName" + | "protocol" + | "routeID" + | "status" + | "success" + > & { status: "success" | "failed" | "unsupported"; - errorCode?: string; - errorMessage?: string; - latencyMS: number; protocol: AdminLLMAdapter | ""; - endpoint: string; - platformModelID: number; - platformModelName: string; upstreamID: number; upstreamName: string; upstreamModelID: number; upstreamModelName: string; - routeID: number; - bindingCode: string; upstreamStatusCode?: number; debug?: AdminLLMModelProbeDebug; }; -export type AdminLLMModelProbeBatchResult = { - totalCount: number; - successCount: number; - failedCount: number; - unsupportedCount: number; +export type AdminLLMModelProbeBatchResult = Omit, "results"> & { results: AdminLLMModelProbeResult[]; }; -export type AdminLLMRemoteModelItem = { - upstreamModelName: string; - suggestedPlatformModelName: string; - suggestedKindsJSON: string; +export type AdminLLMRemoteModelItem = Omit< + Required, + "suggestedProtocol" | "suggestedProtocols" | "upstreamModelStatus" +> & { suggestedProtocol: AdminLLMAdapter | ""; suggestedProtocols: AdminLLMAdapter[]; - bindingCode: string; - boundPlatformModels: string[]; upstreamModelStatus: AdminLLMStatus | ""; - alreadySynced: boolean; - alreadyBound: boolean; }; export type AdminLLMSetting = { @@ -230,201 +198,126 @@ export type AdminLLMSetting = { // Request types // --------------------------------------------------------------------------- -export type CreateAdminLLMUpstreamRequest = { - name: string; - baseURL: string; +export type CreateAdminLLMUpstreamRequest = Omit< + CreateUpstreamRequest, + "cbThresholdLogic" | "compatible" | "status" +> & { compatible?: AdminLLMCompatible | ""; - protocolDefaultsJSON?: string; - apiKeys: string; status?: AdminLLMStatus; - connectTimeoutMS?: number; - readTimeoutMS?: number; - streamIdleTimeoutMS?: number; - cbFailureThreshold?: number; - cbModelThreshold?: number; cbThresholdLogic?: AdminLLMCbLogic; - cbDurationMin?: number; - cbWindowMin?: number; - headersJSON?: string; }; -export type UpdateAdminLLMUpstreamRequest = { - name?: string; - baseURL?: string; +export type UpdateAdminLLMUpstreamRequest = Omit< + UpdateUpstreamRequest, + "cbThresholdLogic" | "compatible" | "status" +> & { compatible?: AdminLLMCompatible | ""; - protocolDefaultsJSON?: string; - apiKeys?: string; - addAPIKeys?: string; - deleteAPIKeyIDs?: string[]; status?: AdminLLMStatus; - connectTimeoutMS?: number; - readTimeoutMS?: number; - streamIdleTimeoutMS?: number; - cbFailureThreshold?: number; - cbModelThreshold?: number; cbThresholdLogic?: AdminLLMCbLogic; - cbDurationMin?: number; - cbWindowMin?: number; - headersJSON?: string; }; -export type CreateAdminLLMModelRequest = { - platformModelName: string; +export type CreateAdminLLMModelRequest = Omit< + CreateModelRequest, + "accessScope" | "cbPolicyMode" | "status" | "vendor" +> & { vendor?: AdminLLMModelVendor; - kindsJSON?: string; - icon?: string; - capabilitiesJSON?: string; - systemPrompt?: string; accessScope?: AdminLLMModelAccessScope; status?: AdminLLMStatus; - description?: string; cbPolicyMode?: AdminLLMModelCbPolicyMode; - cbFailureThreshold?: number; - cbDurationMin?: number; - cbWindowMin?: number; }; -export type UpdateAdminLLMModelRequest = { - platformModelName?: string; +export type UpdateAdminLLMModelRequest = Omit< + UpdateModelRequest, + "accessScope" | "cbPolicyMode" | "status" | "vendor" +> & { vendor?: AdminLLMModelVendor; - kindsJSON?: string; - icon?: string; - capabilitiesJSON?: string; - systemPrompt?: string; accessScope?: AdminLLMModelAccessScope; status?: AdminLLMStatus; - description?: string; cbPolicyMode?: AdminLLMModelCbPolicyMode; - cbFailureThreshold?: number; - cbDurationMin?: number; - cbWindowMin?: number; }; -export type ReorderAdminLLMModelsRequest = { - modelIDs: number[]; -}; +export type ReorderAdminLLMModelsRequest = ReorderModelsRequest; -export type UpsertAdminLLMUpstreamModelRequest = { - routeID?: number; - platformModelName: string; - upstreamModelName: string; +export type UpsertAdminLLMUpstreamModelRequest = Omit & { protocol?: AdminLLMAdapter; - kindsJSON?: string; status?: AdminLLMStatus; - priority?: number; - weight?: number; - source?: string; - cbFailureThreshold?: number; - cbDurationMin?: number; - cbWindowMin?: number; - headersJSON?: string; }; -export type UpdateAdminLLMModelUpstreamSourceRequest = { +export type UpdateAdminLLMModelUpstreamSourceRequest = Omit< + UpdateModelUpstreamSourceRequest, + "protocol" | "status" +> & { protocol?: AdminLLMAdapter; status?: AdminLLMStatus; - priority?: number; - weight?: number; - cbFailureThreshold?: number; - cbDurationMin?: number; - cbWindowMin?: number; }; -export type BindAdminLLMModelUpstreamSourceRequest = { - upstreamID: number; - upstreamModelID: number; +export type BindAdminLLMModelUpstreamSourceRequest = Omit< + BindModelUpstreamSourceRequest, + "protocol" | "status" +> & { protocol?: AdminLLMAdapter; status?: AdminLLMStatus; - priority?: number; - weight?: number; - cbFailureThreshold?: number; - cbDurationMin?: number; - cbWindowMin?: number; }; -export type ImportAdminLLMUpstreamModelsRequest = { - permissionGroupIDs?: number[]; - items: Array<{ - platformModelName: string; - upstreamModelName: string; - protocol?: AdminLLMAdapter; - protocols?: AdminLLMAdapter[]; - kindsJSON?: string; - status?: AdminLLMStatus; - priority?: number; - }>; +export type ImportAdminLLMUpstreamModelsRequest = Omit & { + items: Array< + Omit & { + protocol?: AdminLLMAdapter; + protocols?: AdminLLMAdapter[]; + status?: AdminLLMStatus; + } + >; }; export type AdminBatchDeleteStatus = "deleted" | "not_found" | "failed"; -export type AdminBatchDeleteRequest = { - ids: number[]; -}; +export type AdminBatchDeleteRequest = BatchDeleteRequest; // --------------------------------------------------------------------------- // Response data wrappers // --------------------------------------------------------------------------- -export type AdminLLMUpstreamData = { +export type AdminLLMUpstreamData = Omit, "upstream"> & { upstream: AdminLLMUpstreamView; }; -export type AdminLLMModelData = { +export type AdminLLMModelData = Omit, "model"> & { model: AdminLLMModelDTO; }; -export type AdminLLMUpstreamModelData = { +export type AdminLLMUpstreamModelData = Omit, "binding"> & { binding: AdminLLMUpstreamModelDTO; }; -export type AdminLLMModelUpstreamSourceData = { +export type AdminLLMModelUpstreamSourceData = Omit, "source"> & { source: AdminLLMModelUpstreamSourceDTO; }; export type AdminLLMModelProbeData = AdminLLMModelProbeResult; export type AdminLLMModelProbeBatchData = AdminLLMModelProbeBatchResult; -export type ResetAdminLLMCircuitData = { - reset: boolean; -}; +export type ResetAdminLLMCircuitData = Required; -export type ListAdminLLMRemoteModelsData = { - total: number; +export type ListAdminLLMRemoteModelsData = Omit, "items"> & { items: AdminLLMRemoteModelItem[]; }; -export type ImportAdminLLMUpstreamModelsData = { - total: number; - importedCount: number; - failedCount: number; - createdRoutes: number; - existingRoutes: number; - createdPlatform: number; - results: Array<{ - upstreamModelName: string; - platformModelName: string; - bindingCode: string; - status: "created" | "existing" | "failed"; - createdRoute: boolean; - createdRoutes: number; - existingRoutes: number; - protocols: AdminLLMAdapter[]; - createdPlatform: boolean; - error?: string; - }>; +export type ImportAdminLLMUpstreamModelsData = Omit, "results"> & { + results: Array< + Omit[number], "error" | "protocols" | "status"> & { + status: "created" | "existing" | "failed"; + protocols: AdminLLMAdapter[]; + error?: string; + } + >; }; -export type AdminBatchDeleteResult = { - id: number; +export type AdminBatchDeleteResult = Omit, "error" | "status"> & { status: AdminBatchDeleteStatus; error?: string; }; -export type AdminBatchDeleteData = { - total: number; - successCount: number; - notFoundCount: number; - failedCount: number; +export type AdminBatchDeleteData = Omit, "results"> & { results: AdminBatchDeleteResult[]; }; diff --git a/frontend/features/admin/api/permission-groups.ts b/frontend/features/admin/api/permission-groups.ts index e636c6fd..7c361fff 100644 --- a/frontend/features/admin/api/permission-groups.ts +++ b/frontend/features/admin/api/permission-groups.ts @@ -1,73 +1,49 @@ +import type { + CreatePermissionGroupRequest as ContractCreatePermissionGroupRequest, + DeletePermissionGroupResponse, + GroupModelsResponse, + GroupUsersResponse, + ModelPermissionGroupsResponse, + PermissionGroupDataResponse, + PermissionGroupDeleteSummaryResponse, + PermissionGroupListResponse, + PermissionGroupModelRuleResponse, + PermissionGroupResponse, + UpdatePermissionGroupRequest as ContractUpdatePermissionGroupRequest, +} from "@deeix/api-contract"; import { authedRequest } from "@/shared/api/authed-client"; import { pathParam } from "@/shared/api/http-client"; -export type PermissionGroup = { - id: number; - name: string; - description: string; - isDefault: boolean; - rateMultiplierPercent: number; - modelCount: number; - manualModelCount: number; - ruleModelCount: number; - userCount: number; - manualUserCount: number; - subscriptionUserCount: number; - createdAt: string; - updatedAt: string; -}; +export type PermissionGroup = Required; export type PermissionGroupModelRuleType = "all" | "vendor" | "protocol" | "upstream"; -export type PermissionGroupModelRule = { +export type PermissionGroupModelRule = Omit, "type"> & { type: PermissionGroupModelRuleType; - value: string; }; -export type CreatePermissionGroupRequest = { - name: string; - description: string; - rateMultiplierPercent: number; -}; +export type CreatePermissionGroupRequest = Required; -export type UpdatePermissionGroupRequest = { - name: string; - description: string; - rateMultiplierPercent: number; -}; +export type UpdatePermissionGroupRequest = Required; -type PermissionGroupListData = { +type PermissionGroupListData = Omit, "results"> & { results: PermissionGroup[]; }; -type PermissionGroupData = { +type PermissionGroupData = Omit, "group"> & { group: PermissionGroup; }; -type GroupModelsData = { - modelIDs: number[]; +type GroupModelsData = Omit, "rules"> & { rules?: PermissionGroupModelRule[]; }; -type GroupUsersData = { - userIDs: number[]; -}; +type GroupUsersData = Required; -type ModelPermissionGroupsData = { - manualGroupIDs: number[]; - matchedGroupIDs: number[]; - effectiveGroupIDs: number[]; - unassigned: boolean; -}; +type ModelPermissionGroupsData = Required; -export type DeletePermissionGroupResult = { - deleted: boolean; - summary: { - manualModelCount: number; - ruleCount: number; - manualUserCount: number; - planCount: number; - }; +export type DeletePermissionGroupResult = Omit, "summary"> & { + summary: Required; }; export async function listPermissionGroups(accessToken: string): Promise { diff --git a/frontend/features/admin/api/statistics.ts b/frontend/features/admin/api/statistics.ts index def358a9..e5ad5443 100644 --- a/frontend/features/admin/api/statistics.ts +++ b/frontend/features/admin/api/statistics.ts @@ -1,47 +1,34 @@ +import type { + UsageStatisticsMetricsResponse, + UsageStatisticsModelRankResponse, + UsageStatisticsResponse, + UsageStatisticsTrendResponse, + UsageStatisticsUserRankResponse, +} from "@deeix/api-contract"; import { authedRequest } from "@/shared/api/authed-client"; export type AdminUsageStatisticsRankBy = "cost" | "tokens" | "calls"; export type AdminUsageStatisticsBillingScope = "all" | "free" | "billable"; export type AdminUsageStatisticsSection = "all" | "models" | "users"; -export type AdminUsageStatisticsMetricsDTO = { - recordCount: number; - inputTokens: number; - cacheReadTokens: number; - cacheWriteTokens: number; - outputTokens: number; - reasoningTokens: number; - totalTokens: number; - callCount: number; - avgLatencyMS: number; - billedNanousd: number; - billedUSD: number; -}; +export type AdminUsageStatisticsMetricsDTO = Required; -export type AdminUsageStatisticsTrendDTO = AdminUsageStatisticsMetricsDTO & { - periodStart: string; -}; +export type AdminUsageStatisticsTrendDTO = Required; -export type AdminUsageStatisticsModelRankDTO = AdminUsageStatisticsMetricsDTO & { - platformModelName: string; +export type AdminUsageStatisticsModelRankDTO = Omit, "trend"> & { trend: AdminUsageStatisticsTrendDTO[]; }; -export type AdminUsageStatisticsUserRankDTO = AdminUsageStatisticsMetricsDTO & { - userID: number; - username: string; - userDisplayName: string; - userLabel: string; +export type AdminUsageStatisticsUserRankDTO = Omit, "trend"> & { trend: AdminUsageStatisticsTrendDTO[]; }; -export type AdminUsageStatisticsData = { +export type AdminUsageStatisticsData = Omit< + Required, + "range" | "section" | "topModels" | "topUsers" | "totals" | "trend" +> & { section: AdminUsageStatisticsSection; - range: { - startDate: string; - endDate: string; - granularity: "day" | "month" | string; - }; + range: Required>; totals: AdminUsageStatisticsMetricsDTO; trend: AdminUsageStatisticsTrendDTO[]; topModels: AdminUsageStatisticsModelRankDTO[]; diff --git a/frontend/package.json b/frontend/package.json index f945c0a8..08ecfe36 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,23 +1,7 @@ { - "name": "deeix-chat", + "name": "@deeix/web", "version": "0.3.2", "private": true, - "packageManager": "pnpm@10.17.0", - "pnpm": { - "overrides": { - "@babel/core": "7.29.7", - "brace-expansion@1": "1.1.15", - "brace-expansion@5": "5.0.6", - "dompurify": "3.4.11", - "flatted": "3.4.2", - "js-yaml": "4.2.0", - "mermaid": "11.15.0", - "minimatch@3": "3.1.5", - "picomatch": "4.0.4", - "postcss": "8.5.10", - "uuid": "11.1.1" - } - }, "scripts": { "postinstall": "pnpm sync:icons && pnpm sync:pwa-assets", "sync:version": "node ../scripts/sync-version.mjs frontend", @@ -34,14 +18,15 @@ "typecheck": "tsc --noEmit --pretty false", "check": "pnpm lint && pnpm typecheck", "lint": "biome lint .", - "lint:fix": "biome lint --write ." + "lint:fix": "biome lint --write .", + "clean": "rm -rf .next out" }, "dependencies": { "@base-ui/react": "^1.4.1", "@dnd-kit/core": "^6.3.1", "@dnd-kit/sortable": "^10.0.0", "@dnd-kit/utilities": "^3.2.2", - "@lobehub/icons-static-svg": "^1.90.0", + "@lobehub/icons-static-svg": "1.90.0", "@radix-ui/react-avatar": "^1.1.11", "@radix-ui/react-collapsible": "^1.1.12", "@radix-ui/react-dialog": "^1.1.15", @@ -84,6 +69,7 @@ "vaul": "^1.1.2" }, "devDependencies": { + "@deeix/api-contract": "workspace:*", "@biomejs/biome": "2.5.4", "@tailwindcss/postcss": "^4.2.4", "@types/node": "^25.6.0", diff --git a/frontend/shared/api/announcements.ts b/frontend/shared/api/announcements.ts index cf7cd87a..4b69fa07 100644 --- a/frontend/shared/api/announcements.ts +++ b/frontend/shared/api/announcements.ts @@ -1,3 +1,4 @@ +import type { Announcements } from "@deeix/api-contract"; import { authedRequest } from "@/shared/api/authed-client"; import type { AnnouncementDTO } from "@/shared/api/announcements.types"; @@ -11,17 +12,19 @@ export async function listAnnouncements(accessToken: string, options: ListAnnoun } export async function dismissAnnouncementToday(accessToken: string, announcementID: number, updatedAt: string): Promise { - await authedRequest<{ dismissed: boolean }>( + const body: Announcements.DismissTodayCreate.RequestBody = { updatedAt }; + await authedRequest>( `/api/v1/announcements/${encodeURIComponent(String(announcementID))}/dismiss-today`, - { method: "POST", accessToken, body: { updatedAt } }, + { method: "POST", accessToken, body }, true, ); } export async function closeAnnouncement(accessToken: string, announcementID: number, updatedAt: string): Promise { - await authedRequest<{ closed: boolean }>( + const body: Announcements.CloseCreate.RequestBody = { updatedAt }; + await authedRequest>( `/api/v1/announcements/${encodeURIComponent(String(announcementID))}/close`, - { method: "POST", accessToken, body: { updatedAt } }, + { method: "POST", accessToken, body }, true, ); } diff --git a/frontend/shared/api/announcements.types.ts b/frontend/shared/api/announcements.types.ts index 4a254ddd..7dd3a456 100644 --- a/frontend/shared/api/announcements.types.ts +++ b/frontend/shared/api/announcements.types.ts @@ -1,15 +1,9 @@ -export type AnnouncementDTO = { - id: number; - title: string; - contentMarkdown: string; - status: "active" | "inactive" | string; - type: "critical" | "warning" | "info" | "normal" | "general" | string; - pinned: boolean; - priority: number; +import type { AnnouncementResponse } from "@deeix/api-contract"; + +type RequiredAnnouncementResponse = Required; + +export type AnnouncementDTO = Omit & { startsAt: string | null; expiresAt: string | null; - createdByUserID: number; - createdAt: string; - updatedAt: string; closedAt: string | null; }; diff --git a/frontend/shared/api/auth.types.ts b/frontend/shared/api/auth.types.ts index 37b53e87..586bc6a5 100644 --- a/frontend/shared/api/auth.types.ts +++ b/frontend/shared/api/auth.types.ts @@ -1,49 +1,46 @@ -export type UserIdentityProviderSummaryDTO = { - id: number; - type: string; - name: string; - slug: string; - logoURL: string; -}; - -export type UserDTO = { - id: number; - publicID: string; - username: string; - displayName: string; - avatarURL: string; - email: string; - phone: string; - role: string; - status: string; - timezone: string; - locale: string; - profilePreferences: string; - appearancePreferences: string; +import type { + ActiveSessionListResponse, + ActiveSessionResponse, + AuthUserIdentityProviderSummaryResponse, + AuthUserResponse, + DeleteAccountRequest, + EmailRegistrationStartResponse, + EmailVerificationStartResponse, + IdentityProviderResponse, + LoginOptionsResponse, + LoginResponse, + LogoutResponse, + PasswordResetCompleteResponse, + PasswordResetStartResponse, + PatchMeRequest, + UpdateCurrentSessionLocationRequest, +} from "@deeix/api-contract"; + +export type UserIdentityProviderSummaryDTO = Required; + +export type UserDTO = Omit< + Required, + | "emailBootstrapUsedAt" + | "emailVerifiedAt" + | "identityProviders" + | "lastActiveAt" + | "lastLoginAt" + | "onboardingCompletedAt" + | "passwordSetAt" + | "phoneVerifiedAt" + | "subscriptionExpiresAt" + | "subscriptionPlanID" + | "usernameChangedAt" +> & { onboardingCompletedAt: string | null; emailVerifiedAt: string | null; - emailSource: string; emailBootstrapUsedAt: string | null; phoneVerifiedAt: string | null; usernameChangedAt: string | null; - passwordEnabled: boolean; passwordSetAt: string | null; - passwordOrigin: string; - mustResetPassword: boolean; - initialUsernameRequired: boolean; - initialSecurityRequired: boolean; - twoFactorAvailable: boolean; - twoFactorEnabled: boolean; - twoFactorRequired: boolean; - twoFactorRecoveryCount: number; lastLoginAt: string | null; lastActiveAt: string | null; - createdAt: string; - updatedAt: string; - subscriptionTier: string; subscriptionPlanID: number | null; - subscriptionPlanName: string; - subscriptionStatus: string; subscriptionExpiresAt: string | null; billingAccountCurrency: string; billingBalanceNanousd: number; @@ -52,13 +49,8 @@ export type UserDTO = { identityProviders: UserIdentityProviderSummaryDTO[]; }; -export type LoginData = { - accessToken: string; - sessionID: string; - expiresAt: string; - refreshExpiresAt: string; +export type LoginData = Omit, "twoFactorChallengeToken" | "user" | "verificationMethods"> & { user: UserDTO; - twoFactorRequired: boolean; twoFactorChallengeToken?: string; verificationMethods?: SecurityVerificationMethod[]; }; @@ -88,24 +80,15 @@ export type TwoFactorDisableData = { export type SecurityVerificationMethod = "none" | "two_factor" | "email"; -export type EmailRegistrationStartData = { - sent: boolean; - expiresAt: string; +export type EmailRegistrationStartData = Required & { debugCode?: string; }; -export type PasswordResetStartData = { - sent: boolean; - expiresAt: string; -}; +export type PasswordResetStartData = Required; -export type PasswordResetCompleteData = { - changed: boolean; -}; +export type PasswordResetCompleteData = Required; -export type PasswordChangeVerificationStartData = { - sent: boolean; - expiresAt: string; +export type PasswordChangeVerificationStartData = Omit, "availableMethods" | "verificationMethod"> & { verificationMethod: SecurityVerificationMethod; availableMethods: SecurityVerificationMethod[]; debugCode?: string; @@ -115,30 +98,10 @@ export type LoginPageSettings = { defaultNextPath: string; }; -export type IdentityProviderDTO = { - publicID: string; +export type IdentityProviderDTO = Omit, "logoURL" | "type"> & { type: "oidc" | "oauth2"; - name: string; - slug: string; logoURL?: string; - loginEnabled: boolean; - registrationEnabled: boolean; - clientID?: string; - issuerURL?: string; - discoveryURL?: string; - authURL?: string; - tokenURL?: string; - userinfoURL?: string; - jwksURL?: string; - scopes: string; defaultRole: "user" | "admin" | "superadmin"; - subjectField: string; - emailField: string; - emailVerifiedField: string; - nameField: string; - avatarField: string; - createdAt: string; - updatedAt: string; }; export type UserIdentityDTO = { @@ -163,14 +126,7 @@ export type UserIdentityData = { identity: UserIdentityDTO; }; -export type LoginOptionsData = { - usernameEnabled: boolean; - emailEnabled: boolean; - emailRegistrationEnabled: boolean; - emailVerificationEnabled: boolean; - passwordResetEnabled: boolean; - turnstileRegistrationEnabled: boolean; - turnstileSiteKey: string; +export type LoginOptionsData = Omit, "providers"> & { providers: IdentityProviderDTO[]; }; @@ -178,14 +134,7 @@ export type MeData = { user: UserDTO; }; -export type PatchMePayload = { - avatarURL?: string; - displayName?: string; - timezone?: string; - locale?: string; - profilePreferences?: string; - appearancePreferences?: string; -}; +export type PatchMePayload = PatchMeRequest; export type PatchUsernamePayload = { username: string; @@ -206,9 +155,7 @@ export type CompleteOnboardingPayload = { newPassword?: string; }; -export type EmailVerificationStartData = { - sent: boolean; - expiresAt: string; +export type EmailVerificationStartData = Omit, "availableMethods" | "verificationMethod"> & { verificationMethod: SecurityVerificationMethod; availableMethods: SecurityVerificationMethod[]; debugCode?: string; @@ -226,51 +173,33 @@ export type EmailChangeCompletePayload = { newCode: string; }; -export type DeleteAccountPayload = { +export type DeleteAccountPayload = Omit & { verificationMethod: SecurityVerificationMethod; - code: string; }; -export type LogoutData = { - revoked: boolean; -}; +export type LogoutData = Required; -export type ActiveSessionDTO = { - sessionID: string; - current: boolean; - deviceLabel: string; - deviceName: string; - browserName: string; - osName: string; - deviceType: string; - clientIP: string; - locationLabel: string; - geoSource: string; - geoAccuracy: string; - countryCode: string; - regionName: string; - cityName: string; - timezoneName: string; +export type ActiveSessionDTO = Omit< + Required, + | "ipLatitude" + | "ipLongitude" + | "lastSeenAt" + | "preciseAccuracyMeters" + | "preciseLatitude" + | "preciseLocatedAt" + | "preciseLongitude" +> & { ipLatitude: number | null; ipLongitude: number | null; preciseLatitude: number | null; preciseLongitude: number | null; preciseAccuracyMeters: number | null; preciseLocatedAt: string | null; - createdAt: string; - updatedAt: string; lastSeenAt: string | null; - expiresAt: string; }; -export type ActiveSessionListData = { - total: number; +export type ActiveSessionListData = Omit, "results"> & { results: ActiveSessionDTO[]; }; -export type UpdateCurrentSessionLocationPayload = { - latitude: number; - longitude: number; - accuracyMeters?: number; - timezone?: string; -}; +export type UpdateCurrentSessionLocationPayload = UpdateCurrentSessionLocationRequest; diff --git a/frontend/shared/api/billing.types.ts b/frontend/shared/api/billing.types.ts index ca092e64..96a16c8d 100644 --- a/frontend/shared/api/billing.types.ts +++ b/frontend/shared/api/billing.types.ts @@ -1,239 +1,119 @@ -export type BillingPlanPriceDTO = { - id: number; - planID: number; - code: string; - billingInterval: "month" | "year" | "lifetime" | string; - currency: string; - amountCents: number; - isDefault: boolean; -}; - -export type BillingPlanDTO = { - id: number; - code: "free" | "pro" | "max" | "ultra" | string; - name: string; - description: string; - featureJSON: string; - periodCreditUSD: number; - periodCreditNanousd: number; - discountPercent: number; - sortOrder: number; - isActive: boolean; +import type { + BillingAccountDataResponse, + BillingAccountResponse, + BillingConfigDataResponse, + BillingConfigResponse, + BillingOverviewDataResponse, + BillingOverviewResponse, + BillingPlanResponse, + BillingPriceResponse, + CheckoutDataResponse, + CheckoutResponse, + CreateCheckoutRequest as ContractCreateCheckoutRequest, + NativeToolPricingResponse, + RedeemCodeRequest, + RedemptionApplyDataResponse, + RedemptionResponse, + SubscriptionDataResponse, + SubscriptionEntitlementResponse, + SubscriptionResponse, + UsageDailyModelResponse, + UsageDailyResponse, + UsageLedgerResponse, + UsageMonthlyResponse, +} from "@deeix/api-contract"; + +export type BillingPlanPriceDTO = Required; + +export type BillingPlanDTO = Omit, "permissionGroupID" | "prices"> & { prices: BillingPlanPriceDTO[]; }; -export type CreateCheckoutRequest = { - orderType?: "subscription" | "topup"; - priceID?: number; - amountMinorUnits?: number; - cycles?: number; - paymentProvider?: "stripe" | "epay" | string; - epayType?: string; - successURL?: string; - cancelURL?: string; -}; +export type CreateCheckoutRequest = ContractCreateCheckoutRequest; -export type CheckoutDTO = { - orderNo: string; - orderType: "subscription" | "topup" | string; - provider: "stripe" | "epay" | string; - status: string; - checkoutURL: string; - externalCheckoutID: string; - baseAmountCents: number; - baseCurrency: string; - payAmountCents: number; - payCurrency: string; - fxRate: string; - creditNanousd: number; - creditUSD: number; +export type CheckoutDTO = Omit, "expiredAt"> & { expiredAt: string | null; }; -export type CheckoutData = { +export type CheckoutData = Omit, "checkout"> & { checkout: CheckoutDTO; }; export type BillingMode = "self" | "period" | "usage"; -export type NativeToolPricingDTO = { - provider: string; - toolKey: string; - priceNanousd: number; - unit: "call" | "search" | string; - priceLabel: "included" | "notMetered" | string; - billable: boolean; -}; - -export type BillingConfigData = { - config: { +export type NativeToolPricingDTO = Required< + Pick +>; + +export type BillingConfigData = Omit, "config"> & { + config: Required< + Pick< + BillingConfigResponse, + "nativeToolBillingEnabled" | "usdToCNYRate" + > + > & { mode: BillingMode; - nativeToolBillingEnabled: boolean; nativeToolPricing: NativeToolPricingDTO[]; paymentProviders: Array<"stripe" | "epay" | string>; - usdToCNYRate: number; displayCurrency: "USD" | "CNY" | string; epayTypes: Array<{ name: string; type: string }>; }; }; -export type BillingAccountData = { - account: { - userID: number; - currency: string; - balanceNanousd: number; - balanceUSD: number; - status: string; - updatedAt: string; - }; +export type BillingAccountData = Omit, "account"> & { + account: Required; }; -export type BillingOverviewData = { - overview: { +export type BillingOverviewData = Omit, "overview"> & { + overview: Omit< + Required, + "account" | "periodEndAt" | "periodStartAt" | "plan" | "subscriptionEntitlements" + > & { mode: BillingMode; plan: BillingPlanDTO | null; periodStartAt: string | null; periodEndAt: string | null; - periodCreditUSD: number; - periodCreditNanousd: number; - periodUsedUSD: number; - periodUsedNanousd: number; - periodRemainingUSD: number; - periodRemainingNanousd: number; account: BillingAccountData["account"] | null; subscriptionEntitlements: BillingSubscriptionEntitlementDTO[]; }; }; -export type BillingSubscriptionDTO = { - id: number; - userID: number; - planID: number; - priceID: number; - status: string; - startAt: string; - currentPeriodStartAt: string; +export type BillingSubscriptionDTO = Omit, "currentPeriodEndAt"> & { currentPeriodEndAt: string | null; - cancelAtPeriodEnd: boolean; - autoRenew: boolean; }; -export type BillingSubscriptionEntitlementDTO = BillingSubscriptionDTO & { +export type BillingSubscriptionEntitlementDTO = Omit< + Required, + "currentPeriodEndAt" | "plan" +> & { + currentPeriodEndAt: string | null; plan: BillingPlanDTO; - isCurrent: boolean; }; -export type RedeemBillingCodeRequest = { - code: string; -}; +export type RedeemBillingCodeRequest = RedeemCodeRequest; -export type BillingRedemptionDTO = { - id: number; - codeID: number; - userID: number; - mode: "usage" | "period" | string; - rewardType: "balance" | "subscription" | string; - creditUSD: number; - creditNanousd: number; - planID: number; - subscriptionID: number; - balanceTransactionID: number; - createdAt: string; -}; +export type BillingRedemptionDTO = Required; -export type RedeemBillingCodeData = { +export type RedeemBillingCodeData = Omit< + Required, + "account" | "overview" | "redemption" | "subscription" +> & { redemption: BillingRedemptionDTO; account?: BillingAccountData["account"]; subscription?: SubscribeData["subscription"]; overview: BillingOverviewData["overview"]; }; -export type BillingUsageLedgerDTO = { - id: number; - userID: number; - conversationID: number; - providerProtocol: string; - platformModelName: string; - routedBindingCode: string; - upstreamModelName: string; - modelVendor: string; - modelIcon: string; - isFreeModel: boolean; - usageDate: string; - inputTokens: number; - cacheReadTokens: number; - cacheWriteTokens: number; - cacheWrite5mTokens: number; - cacheWrite1hTokens: number; - outputTokens: number; - reasoningTokens: number; - callCount: number; - durationSeconds: number; - latencyMS: number; - usageSpeed: string; - serviceTier: string; - billedCurrency: string; - billedNanousd: number; - billedUSD: number; - pricingSnapshotJSON: string; - createdAt: string; - updatedAt: string; -}; +export type BillingUsageLedgerDTO = Required>; -export type BillingUsageMonthlyDTO = { - monthStartAt: string; - recordCount: number; - inputTokens: number; - cacheReadTokens: number; - cacheWriteTokens: number; - outputTokens: number; - reasoningTokens: number; - totalTokens: number; - callCount: number; - durationSeconds: number; - avgLatencyMS: number; - billedNanousd: number; - billedUSD: number; -}; +export type BillingUsageMonthlyDTO = Required; -export type BillingUsageDailyDTO = { - usageDate: string; - recordCount: number; - inputTokens: number; - cacheReadTokens: number; - cacheWriteTokens: number; - outputTokens: number; - reasoningTokens: number; - totalTokens: number; - callCount: number; - durationSeconds: number; - avgLatencyMS: number; - billedNanousd: number; - billedUSD: number; +export type BillingUsageDailyDTO = Omit, "models"> & { models: BillingUsageDailyModelDTO[]; }; -export type BillingUsageDailyModelDTO = { - platformModelName: string; - recordCount: number; - inputTokens: number; - cacheReadTokens: number; - cacheWriteTokens: number; - outputTokens: number; - reasoningTokens: number; - totalTokens: number; - callCount: number; - durationSeconds: number; - avgLatencyMS: number; - billedNanousd: number; - billedUSD: number; -}; +export type BillingUsageDailyModelDTO = Required; -export type SubscribeData = { - subscription: { - id: number; - planID: number; - priceID: number; - status: string; - }; +export type SubscribeData = Omit, "subscription"> & { + subscription: Pick; }; diff --git a/frontend/shared/api/branding.ts b/frontend/shared/api/branding.ts index 285f4c1f..57777d2e 100644 --- a/frontend/shared/api/branding.ts +++ b/frontend/shared/api/branding.ts @@ -1,16 +1,7 @@ +import type { BrandingResponse } from "@deeix/api-contract"; import { apiRequest } from "@/shared/api/http-client"; -export type BrandingDTO = { - title: string; - shortName: string; - description: string; - logoURL: string; - faviconURL: string; - pwaIcon192URL: string; - pwaIcon512URL: string; - pwaMaskableIcon512URL: string; - appleTouchIcon180URL: string; -}; +export type BrandingDTO = Required; export function getPublicBranding(): Promise { return apiRequest("/api/v1/branding"); diff --git a/frontend/shared/api/common.types.ts b/frontend/shared/api/common.types.ts index e7e17df4..a398ea02 100644 --- a/frontend/shared/api/common.types.ts +++ b/frontend/shared/api/common.types.ts @@ -1,8 +1,8 @@ -export type ApiEnvelope = { +import type { Envelope } from "@deeix/api-contract"; + +export type ApiEnvelope = Omit & { errorMsg: string; - errorCode?: string; details?: unknown; - requestId?: string; data: T; }; diff --git a/frontend/shared/api/conversation.ts b/frontend/shared/api/conversation.ts index 9908825a..6d376a9c 100644 --- a/frontend/shared/api/conversation.ts +++ b/frontend/shared/api/conversation.ts @@ -1,3 +1,8 @@ +import type { + MessageProcessTraceResponse, + MessageTraceBlockResponse, + MessageTraceEventResponse, +} from "@deeix/api-contract"; import { authedFetch, authedRequest } from "@/shared/api/authed-client"; import { apiRequest, ApiError, pathParam } from "@/shared/api/http-client"; import type { PagePayload } from "@/shared/api/common.types"; @@ -42,21 +47,12 @@ import type { TraceBlockDTO, } from "@/shared/api/conversation.types"; -type RawTraceBlock = { - title?: string; - summary?: string; - contentMarkdown?: string; - status?: string; - stage?: string; - roundID?: string; - parentEventID?: string; - updatedAt?: string; - payloadJSON?: string; -}; +type RawTraceBlock = MessageTraceBlockResponse; -type RawProcessTrace = { - enabled?: boolean; - status?: string; +type RawProcessTrace = Omit< + MessageProcessTraceResponse, + "events" | "process" | "promptTrace" | "tools" | "upstreamThink" +> & { process?: RawTraceBlock; tools?: RawTraceBlock; upstreamThink?: RawTraceBlock; @@ -64,23 +60,7 @@ type RawProcessTrace = { events?: RawTraceEvent[]; }; -type RawTraceEvent = { - eventID?: string; - eventType?: string; - phase?: string; - stage?: string; - roundID?: string; - parentEventID?: string; - title?: string; - summary?: string; - contentMarkdown?: string; - status?: string; - seq?: number; - startedAt?: string; - endedAt?: string; - updatedAt?: string; - payloadJSON?: string; -}; +type RawTraceEvent = MessageTraceEventResponse; function normalizeTraceBlock(block: unknown): TraceBlockDTO | undefined { if (!block || typeof block !== "object") { diff --git a/frontend/shared/api/conversation.types.ts b/frontend/shared/api/conversation.types.ts index 3f4e32d1..cb21d621 100644 --- a/frontend/shared/api/conversation.types.ts +++ b/frontend/shared/api/conversation.types.ts @@ -1,33 +1,58 @@ +import type { + BatchSetConversationProjectRequest as ContractBatchSetConversationProjectRequest, + BatchSetConversationProjectResponse, + ContextArtifactResponse, + ConversationDefaultModelCandidateResponse, + ConversationDeleteResponse, + ConversationExportResponse, + ConversationProjectResponse, + ConversationResponse, + ConversationShareResponse, + CreateConversationProjectRequest as ContractCreateConversationProjectRequest, + CreateConversationRequest as ContractCreateConversationRequest, + CreateConversationShareRequest as ContractCreateConversationShareRequest, + MessageBillingCostResponse, + MessageFeedbackResponse, + MessageProcessTraceResponse, + MessagePromptTraceBlockResponse, + MessagePromptTraceResponse, + MessagePromptTraceSourceResponse, + MessageResponse, + MessageTraceBlockResponse, + MessageTraceEventResponse, + ModelProbeDebugResponse, + PublicSharedConversationResponse, + PublicSharedMessageResponse, + RenameConversationRequest as ContractRenameConversationRequest, + ReorderConversationProjectsRequest as ContractReorderConversationProjectsRequest, + RevokeConversationSharesRequest as ContractRevokeConversationSharesRequest, + RevokeConversationSharesResponse, + RunResponse, + SendMessageRequest as ContractSendMessageRequest, + SendMessageResponse, + SetConversationArchiveRequest as ContractSetConversationArchiveRequest, + SetConversationProjectRequest as ContractSetConversationProjectRequest, + SetConversationStarRequest as ContractSetConversationStarRequest, + SetMessageFeedbackRequest as ContractSetMessageFeedbackRequest, + UpdateConversationProjectRequest as ContractUpdateConversationProjectRequest, + UpdateMessageRequest as ContractUpdateMessageRequest, +} from "@deeix/api-contract"; import type { UserStorageQuotaDTO } from "@/shared/api/file.types"; -export type ConversationDTO = { - userID: number; - publicID: string; - projectID: string; - projectName: string; - title: string; - labelsJSON: string; - model: string; - provider: string; - sessionKey: string; - isStarred: boolean; +export type ConversationDTO = Omit< + Required, + "lastCompactedAt" | "lastShareAccessedAt" | "sharedAt" | "starredAt" +> & { starredAt: string | null; - messageCount: number; - status: string; - contextPolicyJSON: string; lastCompactedAt: string | null; - lastResponseID: string; - shareStatus: "none" | "active" | "revoked" | "expired" | string; - shareID: string; sharedAt: string | null; lastShareAccessedAt: string | null; - createdAt: string; - updatedAt: string; }; -export type ConversationDefaultModelCandidateDTO = { - platformModelName: string; - source: string; +export type ConversationDefaultModelCandidateDTO = Omit< + Required, + "usedAt" +> & { usedAt: string | null; }; @@ -38,174 +63,70 @@ export type ConversationProjectFilter = "all" | "unassigned" | string; export type ConversationProjectStatusFilter = "active" | "archived" | "all"; export type ConversationProjectMCPDefaultMode = "inherit" | "custom"; -export type ConversationProjectDTO = { - publicID: string; - name: string; - description: string; - systemPrompt: string; +export type ConversationProjectDTO = Omit, "mcpDefaultMode"> & { mcpDefaultMode: ConversationProjectMCPDefaultMode; - defaultMCPToolIDs: number[]; - defaultSkillIDs: number[]; - color: string; - icon: string; - sortOrder: number; - status: string; - createdAt: string; - updatedAt: string; }; -export type MessageDTO = { - id: number; - conversationID: number; - userID: number; - publicID: string; +export type MessageDTO = Omit< + Required, + | "billingCost" + | "editedAt" + | "modelIcon" + | "modelVendor" + | "parentMessageID" + | "platformModelName" + | "processTrace" + | "sourceMessageID" + | "upstreamModelName" +> & { parentMessageID: number | null; - parentPublicID: string; - runID: string; - role: string; - contentType: string; - content: string; branchReason: "default" | "retry" | "edit"; sourceMessageID: number | null; - sourcePublicID: string; - tokenUsage: number; - inputTokens: number; - outputTokens: number; - cacheReadTokens: number; - cacheWriteTokens: number; - reasoningTokens: number; - latencyMS: number; - status: string; - errorCode: string; - errorMessage: string; - attachments: string; platformModelName?: string; upstreamModelName?: string; modelVendor?: string; modelIcon?: string; processTrace?: MessageProcessTraceDTO; myFeedback: "up" | "down" | ""; - thumbsUpCount: number; - thumbsDownCount: number; billingCost?: MessageBillingCostDTO; editedAt: string | null; - createdAt: string; - updatedAt: string; }; -export type ConversationRunDTO = { - id: number; - runID: string; - requestID: string; - userID: number; - conversationID: number; - endpoint: string; - provider: string; - providerProtocol: string; - upstreamID: number; - upstreamModelID: number; - requestedModelName: string; - platformModelName: string; - routedBindingCode: string; - modelVendor: string; - modelIcon: string; - upstreamModelName: string; - inputTokens: number; - outputTokens: number; - cacheReadTokens: number; - cacheWriteTokens: number; - reasoningTokens: number; - toolCallsCount: number; - firstTokenLatencyMS: number; - totalLatencyMS: number; - status: string; - errorCode: string; - errorMessage: string; - startedAt: string; +export type ConversationRunDTO = Omit, "endedAt" | "taskType"> & { endedAt: string | null; - createdAt: string; - updatedAt: string; }; -export type ConversationExportDTO = { - version: number; - exportScope: string; - exportedAt: string; +export type ConversationExportDTO = Omit< + Required, + "compatibility" | "conversation" | "messages" | "runs" +> & { conversation: ConversationDTO; messages: MessageDTO[]; runs: ConversationRunDTO[]; - totalMessages: number; - totalRuns: number; - defaultMessagePublicIDs: string[]; - compatibility: { - format: string; - notes: string; - }; + compatibility: Required>; }; -export type MessageBillingCostDTO = { - billingMode: string; - billedCurrency: string; - billedNanousd: number; - billedUSD: number; - pricingSnapshotJSON: string; -}; +export type MessageBillingCostDTO = Required; -export type TraceBlockDTO = { - title: string; - summary: string; - contentMarkdown: string; - status: string; - stage?: string; - roundID?: string; - parentEventID?: string; - updatedAt: string; - payloadJSON?: string; -}; +export type TraceBlockDTO = Required< + Pick +> & + Omit; -export type PromptTraceBlockDTO = { - kind: string; - title: string; - tokenEstimate: number; - cacheable: boolean; - sourceCount: number; +export type PromptTraceBlockDTO = Omit, "sourceRefs"> & { sourceRefs?: PromptTraceSourceDTO[]; }; -export type PromptTraceSourceDTO = { - sourceType: string; - sourceID: string; - title: string; - artifactID?: number; -}; +export type PromptTraceSourceDTO = Required< + Pick +> & + Omit; -export type ContextArtifactDTO = { - id: number; - messageID: number; - runID: string; - kind: string; - sourceType: string; - sourceID: string; - sourceTitle: string; - content: string; - tokenEstimate: number; - score: number; - metadataJSON: string; +export type ContextArtifactDTO = Omit, "expiresAt"> & { expiresAt?: string | null; - createdAt: string; }; -export type PromptTraceDTO = { - mode: string; - promptFingerprint: string; - statefulUsed: boolean; - statefulDisabledReason: string; - totalTokenEstimate: number; - sentTokenEstimate: number; - fullMessageCount: number; - sentMessageCount: number; - statefulSavedMessages: number; - statefulSavedTokens: number; +export type PromptTraceDTO = Omit, "blocks"> & { blocks: PromptTraceBlockDTO[]; }; @@ -218,9 +139,8 @@ export type ReasoningDeltaDTO = { encrypted_content?: string; }; -export type MessageProcessTraceDTO = { - enabled: boolean; - status: string; +export type MessageProcessTraceDTO = Required> & + Omit & { process?: TraceBlockDTO; tools?: TraceBlockDTO; upstreamThink?: TraceBlockDTO; @@ -228,198 +148,84 @@ export type MessageProcessTraceDTO = { events?: TraceEventDTO[]; }; -export type TraceEventDTO = { - eventID: string; - eventType: string; - phase: string; - stage?: string; - roundID?: string; - parentEventID?: string; - title: string; - summary: string; - contentMarkdown: string; - status: string; - seq: number; - startedAt: string; - endedAt?: string; - updatedAt: string; - payloadJSON?: string; -}; +export type TraceEventDTO = Required< + Pick< + MessageTraceEventResponse, + "contentMarkdown" | "eventID" | "eventType" | "phase" | "seq" | "startedAt" | "status" | "summary" | "title" | "updatedAt" + > +> & + Omit< + MessageTraceEventResponse, + "contentMarkdown" | "eventID" | "eventType" | "phase" | "seq" | "startedAt" | "status" | "summary" | "title" | "updatedAt" + >; -export type CreateConversationRequest = { - title?: string; - model?: string; - projectID?: string; -}; +export type CreateConversationRequest = ContractCreateConversationRequest; -export type CreateConversationProjectRequest = { - name: string; - description?: string; - systemPrompt?: string; +export type CreateConversationProjectRequest = Omit & { mcpDefaultMode?: ConversationProjectMCPDefaultMode; - defaultMCPToolIDs?: number[]; - defaultSkillIDs?: number[]; - color?: string; - icon?: string; }; -export type UpdateConversationProjectRequest = { - name?: string; - description?: string; - systemPrompt?: string; +export type UpdateConversationProjectRequest = Omit & { mcpDefaultMode?: ConversationProjectMCPDefaultMode; - defaultMCPToolIDs?: number[]; - defaultSkillIDs?: number[]; - color?: string; - icon?: string; - status?: "active" | "archived"; }; -export type ReorderConversationProjectsRequest = { - projectIDs: string[]; -}; +export type ReorderConversationProjectsRequest = ContractReorderConversationProjectsRequest; -export type SetConversationProjectRequest = { - projectID?: string; -}; +export type SetConversationProjectRequest = ContractSetConversationProjectRequest; -export type BatchSetConversationProjectRequest = { - conversationPublicIDs: string[]; - projectID?: string; -}; +export type BatchSetConversationProjectRequest = ContractBatchSetConversationProjectRequest; -export type BatchSetConversationProjectResult = { - updated: number; -}; +export type BatchSetConversationProjectResult = Required; export type ConversationOptions = Record; -export type UpstreamDebugInfo = { - request?: { - method?: string; - path?: string; - headers?: Record; - body?: string; - }; - response?: { - statusCode?: number; - headers?: Record; - body?: string; - }; -}; +export type UpstreamDebugInfo = ModelProbeDebugResponse; -export type RenameConversationRequest = { - title: string; -}; +export type RenameConversationRequest = ContractRenameConversationRequest; -export type SetConversationStarRequest = { - starred: boolean; -}; +export type SetConversationStarRequest = Required; -export type SetConversationArchiveRequest = { - archived: boolean; -}; +export type SetConversationArchiveRequest = Required; -export type DeleteConversationData = { - deleted: boolean; - deletedFileCount?: number; +export type DeleteConversationData = Omit & { + deleted: NonNullable; quota?: UserStorageQuotaDTO; }; -export type CreateConversationShareRequest = { - defaultMessagePublicIDs?: string[]; -}; +export type CreateConversationShareRequest = ContractCreateConversationShareRequest; -export type ConversationShareDTO = { - shareID: string; - status: "none" | "active" | "revoked" | "expired" | string; - titleSnapshot: string; - modelSnapshot: string; - messageCount: number; - createdAt: string; - updatedAt: string; +export type ConversationShareDTO = Omit, "lastAccessedAt" | "revokedAt"> & { revokedAt: string | null; lastAccessedAt: string | null; }; -export type RevokeConversationSharesRequest = { - conversationPublicIDs: string[]; -}; +export type RevokeConversationSharesRequest = ContractRevokeConversationSharesRequest; -export type RevokeConversationSharesResult = { - revoked: boolean; -}; +export type RevokeConversationSharesResult = Required; -export type PublicSharedMessageDTO = { - publicID: string; - parentPublicID: string; - sourcePublicID: string; - runID: string; - role: "user" | "assistant" | "system" | string; - contentType: string; - content: string; - branchReason: "default" | "retry" | "edit" | string; - tokenUsage: number; - inputTokens: number; - outputTokens: number; - cacheReadTokens: number; - cacheWriteTokens: number; - reasoningTokens: number; - latencyMS: number; - status: string; - errorCode: string; - errorMessage: string; - attachments: string; - platformModelName: string; - upstreamModelName: string; - modelVendor: string; - modelIcon: string; +export type PublicSharedMessageDTO = Omit, "editedAt" | "processTrace"> & { processTrace?: MessageProcessTraceDTO; editedAt: string | null; - createdAt: string; - updatedAt: string; }; -export type PublicSharedConversationDTO = { - shareID: string; - title: string; - model: string; - createdAt: string; +export type PublicSharedConversationDTO = Omit< + Required, + "lastAccessedAt" | "messages" +> & { lastAccessedAt: string | null; - defaultMessagePublicIDs: string[]; messages: PublicSharedMessageDTO[]; }; -export type SetMessageFeedbackRequest = { - feedback?: "up" | "down"; -}; +export type SetMessageFeedbackRequest = ContractSetMessageFeedbackRequest; -export type UpdateMessageRequest = { - content: string; -}; +export type UpdateMessageRequest = ContractUpdateMessageRequest; -export type MessageFeedbackResult = { - messageID: number; - messagePublicID: string; +export type MessageFeedbackResult = Omit, "myFeedback"> & { myFeedback: "up" | "down" | ""; - thumbsUpCount: number; - thumbsDownCount: number; }; -export type SendMessageRequest = { - contentType: "text" | "markdown" | "image" | "file" | "mixed"; - content: string; - model?: string; +export type SendMessageRequest = Omit & { options?: ConversationOptions; - clientRunID?: string; - fileIDs?: string[]; - selectedToolIDs?: number[]; - skillIDs?: number[]; - htmlVisualPrompt?: boolean; - htmlVisualColorMode?: "light" | "dark"; - parentMessagePublicID?: string; - sourceMessagePublicID?: string; - branchReason?: "default" | "retry" | "edit"; }; export type MediaImageRequest = { @@ -445,7 +251,7 @@ export type MediaVideoRequest = { branchReason?: "default" | "retry" | "edit"; }; -export type SendMessageResult = { +export type SendMessageResult = Omit, "assistantMessage" | "metadataRefreshHint" | "userMessage"> & { userMessage: MessageDTO; assistantMessage: MessageDTO; metadataRefreshHint?: "pending" | "not_needed" | "skipped_no_titleable_content" | string; diff --git a/frontend/shared/api/file.types.ts b/frontend/shared/api/file.types.ts index d3e28bc8..70c06a32 100644 --- a/frontend/shared/api/file.types.ts +++ b/frontend/shared/api/file.types.ts @@ -1,26 +1,14 @@ -export type FileObjectDTO = { - fileID: string; - purpose: string; - fileName: string; - mimeType: string; - detectedMIME: string; - fileCategory: string; - sizeBytes: number; - sha256: string; - status: string; - processingStatus: string; - processingReady: boolean; - processingErrorCode: string; - processingErrorMessage: string; - extractStatus: string; - embedStatus: string; - embedError: string; - chunkCount: number; - ragOptOut: boolean; +import type { + DeleteFileResponse, + FileListResponse, + FileObjectResponse, + FileUploadResponse, + StorageQuotaResponse, +} from "@deeix/api-contract"; + +export type FileObjectDTO = Omit, "expiresAt" | "lastAccessedAt"> & { lastAccessedAt: string | null; expiresAt: string | null; - createdAt: string; - updatedAt: string; }; export type FileProcessingStatusDTO = { @@ -69,29 +57,18 @@ export type ChatFilePolicyDTO = { fileMode: "auto" | "full_context" | "rag"; }; -export type UserStorageQuotaDTO = { - userID: number; - quotaBytes: number; - usedBytes: number; - reservedBytes: number; - createdAt: string; - updatedAt: string; -}; +export type UserStorageQuotaDTO = Required>; -export type FileListResult = { - total: number; +export type FileListResult = Omit, "quota" | "results"> & { results: FileObjectDTO[]; quota: UserStorageQuotaDTO; }; -export type UploadFileResult = { +export type UploadFileResult = Omit, "file" | "quota"> & { file: FileObjectDTO; quota: UserStorageQuotaDTO; - reused: boolean; }; -export type DeleteFileResult = { - deleted: boolean; - fileID: string; +export type DeleteFileResult = Omit, "quota"> & { quota: UserStorageQuotaDTO; }; diff --git a/frontend/shared/api/memory.ts b/frontend/shared/api/memory.ts index 9238aa7f..e0be6326 100644 --- a/frontend/shared/api/memory.ts +++ b/frontend/shared/api/memory.ts @@ -1,3 +1,4 @@ +import type { Memories } from "@deeix/api-contract"; import { authedRequest } from "@/shared/api/authed-client"; import { pathParam } from "@/shared/api/http-client"; import type { UserMemoryDTO } from "@/shared/api/memory.types"; @@ -13,12 +14,13 @@ export async function upsertUserMemory( accessToken: string, key: string, value: string, - scope: string, + scope: Memories.ProfileUpdate.RequestBody["scope"], ): Promise<{ saved: boolean }> { - return authedRequest<{ saved: boolean }>("/api/v1/memories/profile", { + const body: Memories.ProfileUpdate.RequestBody = { memoryKey: key, value, scope }; + return authedRequest>>("/api/v1/memories/profile", { method: "PUT", accessToken, - body: { memoryKey: key, value, scope }, + body, }); } @@ -26,7 +28,7 @@ export async function deleteUserMemory( accessToken: string, memoryKey: string, ): Promise<{ saved: boolean }> { - return authedRequest<{ saved: boolean }>(`/api/v1/memories/profile/${pathParam(memoryKey)}`, { + return authedRequest>>(`/api/v1/memories/profile/${pathParam(memoryKey)}`, { method: "DELETE", accessToken, }); diff --git a/frontend/shared/api/memory.types.ts b/frontend/shared/api/memory.types.ts index 94a78391..8a41f6fe 100644 --- a/frontend/shared/api/memory.types.ts +++ b/frontend/shared/api/memory.types.ts @@ -1,10 +1,3 @@ -export type UserMemoryDTO = { - id: number; - userID: number; - memoryKey: string; - value: string; - scope: string; - updatedBy: string; - createdAt: string; - updatedAt: string; -}; +import type { UserMemoryResponse } from "@deeix/api-contract"; + +export type UserMemoryDTO = Required; diff --git a/frontend/shared/api/model.types.ts b/frontend/shared/api/model.types.ts index 6f07ff29..37d3cb30 100644 --- a/frontend/shared/api/model.types.ts +++ b/frontend/shared/api/model.types.ts @@ -1,33 +1,17 @@ -export type PublicModelPricingTierDTO = { - fromTokens: number; +import type { + PublicModelPricingResponse, + PublicModelPricingTierResponse, + PublicModelResponse, +} from "@deeix/api-contract"; + +export type PublicModelPricingTierDTO = Omit, "upToTokens"> & { upToTokens: number | null; - inputUSDPerMTokens: number; - cacheReadUSDPerMTokens: number; - cacheWriteUSDPerMTokens: number; - outputUSDPerMTokens: number; }; -export type PublicModelPricingDTO = { - currency: string; - isFree: boolean; - mode: "token" | "call" | "duration" | "tiered" | string; - inputUSDPerMTokens: number; - cacheReadUSDPerMTokens: number; - cacheWriteUSDPerMTokens: number; - outputUSDPerMTokens: number; - callUSDPerCall: number; - durationUSDPerSecond: number; +export type PublicModelPricingDTO = Omit, "tiers"> & { tiers: PublicModelPricingTierDTO[]; }; -export type PublicModelDTO = { - platformModelName: string; - vendor: string; - kindsJSON: string; - icon: string; - protocolsJSON: string; - capabilitiesJSON: string; - description: string; - sortOrder: number; +export type PublicModelDTO = Omit, "pricing"> & { pricing: PublicModelPricingDTO | null; }; diff --git a/frontend/shared/api/prompt-presets.types.ts b/frontend/shared/api/prompt-presets.types.ts index bd6f793a..c6442f9d 100644 --- a/frontend/shared/api/prompt-presets.types.ts +++ b/frontend/shared/api/prompt-presets.types.ts @@ -1,40 +1,30 @@ +import type { + PatchPromptPresetRequest as ContractPatchPromptPresetRequest, + PromptPresetDataResponse, + PromptPresetDeleteDataResponse, + PromptPresetPageResponseDoc, + PromptPresetResponse, + WritePromptPresetRequest as ContractWritePromptPresetRequest, +} from "@deeix/api-contract"; + export type PromptPresetScope = "builtin" | "user"; -export type PromptPresetDTO = { - id: number; +export type PromptPresetDTO = Omit, "scope"> & { scope: PromptPresetScope; - title: string; - trigger: string; - description: string; - content: string; - enabled: boolean; - sortOrder: number; - createdByUserID: number; - updatedByUserID: number; - createdAt: string; - updatedAt: string; }; -export type PromptPresetPage = { +type ContractPromptPresetPage = NonNullable; + +export type PromptPresetPage = Omit, "results"> & { results: PromptPresetDTO[]; - total: number; }; -export type WritePromptPresetRequest = { - title: string; - trigger: string; - description: string; - content: string; - enabled: boolean; - sortOrder: number; -}; +export type WritePromptPresetRequest = Required; -export type PatchPromptPresetRequest = Partial; +export type PatchPromptPresetRequest = ContractPatchPromptPresetRequest; -export type PromptPresetData = { +export type PromptPresetData = Omit, "promptPreset"> & { promptPreset: PromptPresetDTO; }; -export type PromptPresetDeleteData = { - deleted: boolean; -}; +export type PromptPresetDeleteData = Required; diff --git a/frontend/shared/api/settings.types.ts b/frontend/shared/api/settings.types.ts index 45add5fb..f04af15a 100644 --- a/frontend/shared/api/settings.types.ts +++ b/frontend/shared/api/settings.types.ts @@ -9,13 +9,9 @@ export type SettingItem = { export type SettingsGrouped = Record; -export type PatchSettingItem = { - namespace: string; - key: string; - value: string; - clear?: boolean; -}; +export type PatchSettingItem = Omit & { value: string }; -export type PatchSettingsRequest = { +export type PatchSettingsRequest = Omit & { items: PatchSettingItem[]; }; +import type { PatchItem, SettingsPatchSettingsRequest } from "@deeix/api-contract"; diff --git a/frontend/shared/api/skills.types.ts b/frontend/shared/api/skills.types.ts index 23868952..bcaf927c 100644 --- a/frontend/shared/api/skills.types.ts +++ b/frontend/shared/api/skills.types.ts @@ -1,48 +1,41 @@ +import type { + PatchSkillRequest as ContractPatchSkillRequest, + SkillDataResponse, + SkillDeleteDataResponse, + SkillPageResponseDoc, + SkillResponse, + SkillSummaryResponse, + SkillSummaryPageResponseDoc, + WriteSkillRequest as ContractWriteSkillRequest, +} from "@deeix/api-contract"; + export type SkillScope = "builtin" | "user"; -export type SkillSummaryDTO = { - id: number; +export type SkillSummaryDTO = Omit, "scope"> & { scope: SkillScope; - title: string; - trigger: string; - description: string; - enabled: boolean; - sortOrder: number; - createdAt: string; - updatedAt: string; }; -export type SkillDTO = SkillSummaryDTO & { - markdown: string; - createdByUserID: number; - updatedByUserID: number; +export type SkillDTO = Omit, "scope"> & { + scope: SkillScope; }; -export type SkillSummaryPage = { +type ContractSkillSummaryPage = NonNullable; +type ContractSkillPage = NonNullable; + +export type SkillSummaryPage = Omit, "results"> & { results: SkillSummaryDTO[]; - total: number; }; -export type SkillPage = { +export type SkillPage = Omit, "results"> & { results: SkillDTO[]; - total: number; }; -export type WriteSkillRequest = { - title: string; - trigger: string; - description: string; - markdown: string; - enabled: boolean; - sortOrder: number; -}; +export type WriteSkillRequest = Required; -export type PatchSkillRequest = Partial; +export type PatchSkillRequest = ContractPatchSkillRequest; -export type SkillData = { +export type SkillData = Omit, "skill"> & { skill: SkillDTO; }; -export type SkillDeleteData = { - deleted: boolean; -}; +export type SkillDeleteData = Required; diff --git a/frontend/shared/api/user-settings.ts b/frontend/shared/api/user-settings.ts index 20eb915b..fa852c2b 100644 --- a/frontend/shared/api/user-settings.ts +++ b/frontend/shared/api/user-settings.ts @@ -1,13 +1,13 @@ +import type { User } from "@deeix/api-contract"; import { authedRequest } from "@/shared/api/authed-client"; -export type UserSettingsMap = Record; +export type UserSettingsMap = User.SettingsPartialUpdate.RequestBody["settings"]; -type UserSettingsResponse = { - settings: UserSettingsMap; -}; +type GetUserSettingsResponse = NonNullable; +type PatchUserSettingsResponse = NonNullable; export async function getUserSettings(accessToken: string): Promise { - const data = await authedRequest("/api/v1/user/settings", { accessToken }, true); + const data = await authedRequest("/api/v1/user/settings", { accessToken }, true); return data.settings ?? {}; } @@ -15,12 +15,13 @@ export async function patchUserSettings( accessToken: string, settings: UserSettingsMap, ): Promise { - const data = await authedRequest( + const body: User.SettingsPartialUpdate.RequestBody = { settings }; + const data = await authedRequest( "/api/v1/user/settings", { accessToken, method: "PATCH", - body: JSON.stringify({ settings }), + body: JSON.stringify(body), }, true, ); diff --git a/package.json b/package.json new file mode 100644 index 00000000..f3a6518b --- /dev/null +++ b/package.json @@ -0,0 +1,36 @@ +{ + "name": "@deeix/chat-monorepo", + "version": "0.3.2", + "private": true, + "packageManager": "pnpm@10.17.0", + "scripts": { + "api:check": "pnpm --filter @deeix/api-contract check", + "api:generate": "pnpm --filter @deeix/api-contract generate", + "build": "turbo run build", + "check": "turbo run check", + "clean": "turbo run clean", + "dev": "turbo run dev", + "dev:api": "turbo run dev --filter=@deeix/api", + "dev:web": "turbo run dev --filter=@deeix/web", + "test": "turbo run test", + "verify": "turbo run check test build" + }, + "devDependencies": { + "turbo": "2.10.5" + }, + "pnpm": { + "overrides": { + "@babel/core": "7.29.7", + "brace-expansion@1": "1.1.15", + "brace-expansion@5": "5.0.6", + "dompurify": "3.4.11", + "flatted": "3.4.2", + "js-yaml": "4.2.0", + "mermaid": "11.15.0", + "minimatch@3": "3.1.5", + "picomatch": "4.0.4", + "postcss": "8.5.10", + "uuid": "11.1.1" + } + } +} diff --git a/packages/api-contract/README.md b/packages/api-contract/README.md new file mode 100644 index 00000000..e6babe99 --- /dev/null +++ b/packages/api-contract/README.md @@ -0,0 +1,23 @@ +# @deeix/api-contract + +TypeScript data contracts generated from the Go backend's Swagger 2.0 document. + +The source of truth is `backend/docs/swagger.json`. The generated output includes data models and per-route request/response types. Runtime HTTP behavior, authentication, retries, and error handling remain in the frontend API layer; this package contains types only. + +From the workspace root: + +```bash +pnpm api:generate +pnpm api:check +``` + +Consume the package with type-only imports: + +```ts +import type { Admin, UserDataResponse } from "@deeix/api-contract"; + +type CreateUserBody = Admin.UsersCreate.RequestBody; +type CreateUserResult = Admin.UsersCreate.ResponseBody; +``` + +`pnpm check` runs both the drift check and TypeScript validation through Turborepo. Never edit `src/types.generated.ts` manually. diff --git a/packages/api-contract/package.json b/packages/api-contract/package.json new file mode 100644 index 00000000..459fa9f9 --- /dev/null +++ b/packages/api-contract/package.json @@ -0,0 +1,30 @@ +{ + "name": "@deeix/api-contract", + "version": "0.3.2", + "private": true, + "type": "module", + "types": "./src/index.ts", + "exports": { + ".": { + "types": "./src/index.ts", + "default": "./src/index.ts" + }, + "./types": { + "types": "./src/types.generated.ts", + "default": "./src/types.generated.ts" + } + }, + "files": [ + "src" + ], + "scripts": { + "check": "pnpm check:generated && pnpm typecheck", + "check:generated": "node scripts/generate.mjs --check", + "generate": "node scripts/generate.mjs", + "typecheck": "tsc --noEmit --pretty false" + }, + "devDependencies": { + "swagger-typescript-api": "13.12.5", + "typescript": "7.0.2" + } +} diff --git a/packages/api-contract/scripts/generate.mjs b/packages/api-contract/scripts/generate.mjs new file mode 100644 index 00000000..c107baad --- /dev/null +++ b/packages/api-contract/scripts/generate.mjs @@ -0,0 +1,186 @@ +import { + copyFileSync, + existsSync, + mkdtempSync, + mkdirSync, + readFileSync, + rmSync, + writeFileSync, +} from "node:fs"; +import { tmpdir } from "node:os"; +import { dirname, join, resolve } from "node:path"; +import { spawnSync } from "node:child_process"; +import { fileURLToPath } from "node:url"; + +const packageDir = dirname(dirname(fileURLToPath(import.meta.url))); +const workspaceDir = resolve(packageDir, "../.."); +const sourceFile = join(workspaceDir, "backend/docs/swagger.json"); +const targetFile = join(packageDir, "src/types.generated.ts"); +const outputName = "types.generated.ts"; +const checkOnly = process.argv.includes("--check"); +const unknownArguments = process.argv.slice(2).filter((argument) => argument !== "--check"); + +if (unknownArguments.length > 0) { + throw new Error(`Unknown arguments: ${unknownArguments.join(", ")}`); +} + +function shortDefinitionName(name) { + return name.split(".").at(-1); +} + +function namespaceName(name) { + const namespace = name.slice(0, name.lastIndexOf(".")); + const httpMarker = "internal_transport_http_"; + const segment = namespace.includes(httpMarker) + ? namespace.slice(namespace.lastIndexOf(httpMarker) + httpMarker.length) + : namespace.split("_").at(-1); + const aliases = { + promptpreset: "PromptPreset", + usersettings: "UserSettings", + }; + + if (aliases[segment]) { + return aliases[segment]; + } + + return segment + .split(/[^A-Za-z0-9]+/u) + .filter(Boolean) + .map((part) => part.charAt(0).toUpperCase() + part.slice(1)) + .join(""); +} + +function definitionNameMap(definitions) { + const groups = new Map(); + + for (const name of Object.keys(definitions)) { + const shortName = shortDefinitionName(name); + const names = groups.get(shortName) ?? []; + names.push(name); + groups.set(shortName, names); + } + + const mapping = new Map(); + const generatedNames = new Set(); + + for (const [shortName, names] of groups) { + for (const name of names) { + const generatedName = names.length === 1 ? shortName : `${namespaceName(name)}${shortName}`; + if (generatedNames.has(generatedName)) { + throw new Error(`Definition name collision after normalization: ${generatedName}`); + } + mapping.set(name, generatedName); + generatedNames.add(generatedName); + } + } + + return mapping; +} + +function rewriteReferences(value, mapping) { + if (Array.isArray(value)) { + return value.map((item) => rewriteReferences(item, mapping)); + } + if (!value || typeof value !== "object") { + return value; + } + + const rewritten = {}; + for (const [key, item] of Object.entries(value)) { + if (key === "$ref" && typeof item === "string" && item.startsWith("#/definitions/")) { + const originalName = item.slice("#/definitions/".length); + const generatedName = mapping.get(originalName); + if (!generatedName) { + throw new Error(`Unknown Swagger definition reference: ${originalName}`); + } + rewritten[key] = `#/definitions/${generatedName}`; + } else { + rewritten[key] = rewriteReferences(item, mapping); + } + } + return rewritten; +} + +function normalizeSwagger(swagger) { + if (swagger.swagger !== "2.0") { + throw new Error(`Expected Swagger 2.0, received ${swagger.swagger ?? "an unknown version"}`); + } + + const definitions = swagger.definitions ?? {}; + const mapping = definitionNameMap(definitions); + const normalizedDefinitions = {}; + + for (const [originalName, definition] of Object.entries(definitions)) { + normalizedDefinitions[mapping.get(originalName)] = definition; + } + + return rewriteReferences({ ...swagger, definitions: normalizedDefinitions }, mapping); +} + +function normalizeText(value) { + return value.replaceAll("\r\n", "\n"); +} + +const temporaryDir = mkdtempSync(join(tmpdir(), "deeix-api-contract-")); + +try { + const normalizedSwaggerFile = join(temporaryDir, "swagger.normalized.json"); + const generatedDir = join(temporaryDir, "generated"); + const generatedFile = join(generatedDir, outputName); + const swagger = JSON.parse(readFileSync(sourceFile, "utf8")); + + mkdirSync(generatedDir, { recursive: true }); + writeFileSync(normalizedSwaggerFile, `${JSON.stringify(normalizeSwagger(swagger), null, 2)}\n`); + + const executable = process.platform === "win32" ? "swagger-typescript-api.cmd" : "swagger-typescript-api"; + const result = spawnSync( + executable, + [ + "generate", + "--path", + normalizedSwaggerFile, + "--output", + generatedDir, + "--name", + outputName, + "--no-client", + "--route-types", + "--sort-types", + "--silent", + ], + { cwd: packageDir, encoding: "utf8", stdio: "inherit" }, + ); + + if (result.error) { + throw result.error; + } + if (result.status !== 0) { + throw new Error(`swagger-typescript-api exited with status ${result.status}`); + } + + const generated = normalizeText(readFileSync(generatedFile, "utf8")).replace("// @ts-nocheck\n", ""); + const banner = [ + "// Generated from backend/docs/swagger.json. Do not edit manually.", + "// Run `pnpm api:generate` from the workspace root to regenerate.", + "", + ].join("\n"); + writeFileSync(generatedFile, `${banner}${generated}`); + + if (checkOnly) { + if (!existsSync(targetFile)) { + throw new Error("Generated API contract is missing. Run `pnpm api:generate`."); + } + const committed = normalizeText(readFileSync(targetFile, "utf8")); + const expected = normalizeText(readFileSync(generatedFile, "utf8")); + if (committed !== expected) { + throw new Error("Generated API contract is stale. Run `pnpm api:generate` and commit the result."); + } + console.log("API contract is up to date."); + } else { + mkdirSync(dirname(targetFile), { recursive: true }); + copyFileSync(generatedFile, targetFile); + console.log(`Generated ${targetFile.slice(workspaceDir.length + 1)}.`); + } +} finally { + rmSync(temporaryDir, { force: true, recursive: true }); +} diff --git a/packages/api-contract/src/index.ts b/packages/api-contract/src/index.ts new file mode 100644 index 00000000..bdfa588e --- /dev/null +++ b/packages/api-contract/src/index.ts @@ -0,0 +1 @@ +export type * from "./types.generated"; diff --git a/packages/api-contract/src/types.generated.ts b/packages/api-contract/src/types.generated.ts new file mode 100644 index 00000000..75055ec2 --- /dev/null +++ b/packages/api-contract/src/types.generated.ts @@ -0,0 +1,7046 @@ +// Generated from backend/docs/swagger.json. Do not edit manually. +// Run `pnpm api:generate` from the workspace root to regenerate. +/* eslint-disable */ +/* tslint:disable */ +/* + * --------------------------------------------------------------- + * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ## + * ## ## + * ## AUTHOR: acacode ## + * ## SOURCE: https://github.com/acacode/swagger-typescript-api ## + * --------------------------------------------------------------- + */ + +export interface ActiveSessionListResponse { + results?: ActiveSessionResponse[]; + total?: number; +} + +export interface ActiveSessionListResponseDoc { + data?: ActiveSessionListResponse; + errorMsg?: string; +} + +export interface ActiveSessionResponse { + browserName?: string; + cityName?: string; + clientIP?: string; + countryCode?: string; + createdAt?: string; + current?: boolean; + deviceLabel?: string; + deviceName?: string; + deviceType?: string; + expiresAt?: string; + geoAccuracy?: string; + geoSource?: string; + ipLatitude?: number; + ipLongitude?: number; + lastSeenAt?: string; + locationLabel?: string; + osName?: string; + preciseAccuracyMeters?: number; + preciseLatitude?: number; + preciseLocatedAt?: string; + preciseLongitude?: number; + regionName?: string; + sessionID?: string; + timezoneName?: string; + updatedAt?: string; +} + +export interface AdminAnnouncementListResponseDoc { + data?: { + results?: AnnouncementResponse[]; + total?: number; + }; + errorMsg?: string; +} + +export interface AdminErrorDoc { + data?: any; + details?: any; + errorCode?: string; + errorMsg?: string; + requestId?: string; +} + +export interface AdminUserIdentityProviderSummaryResponse { + id?: number; + logoURL?: string; + name?: string; + slug?: string; + type?: string; +} + +export interface AdminUserResponse { + appearancePreferences?: string; + avatarURL?: string; + billingAccountCurrency?: string; + billingAccountStatus?: string; + billingBalanceNanousd?: number; + billingBalanceUSD?: number; + createdAt?: string; + displayName?: string; + email?: string; + emailVerifiedAt?: string; + id?: number; + identityProviders?: AdminUserIdentityProviderSummaryResponse[]; + lastActiveAt?: string; + lastLoginAt?: string; + locale?: string; + phone?: string; + phoneVerifiedAt?: string; + profilePreferences?: string; + publicID?: string; + role?: string; + status?: string; + subscriptionExpiresAt?: string; + subscriptionPlanID?: number; + subscriptionPlanName?: string; + subscriptionStatus?: string; + subscriptionTier?: string; + timezone?: string; + twoFactorAvailable?: boolean; + twoFactorEnabled?: boolean; + twoFactorRecoveryCount?: number; + twoFactorRequired?: boolean; + updatedAt?: string; + username?: string; +} + +export interface AnnouncementCloseDataResponse { + closed?: boolean; +} + +export interface AnnouncementCloseResponseDoc { + data?: AnnouncementCloseDataResponse; + errorMsg?: string; +} + +export interface AnnouncementDataResponse { + announcement?: AnnouncementResponse; +} + +export interface AnnouncementDeleteDataResponse { + deleted?: boolean; +} + +export interface AnnouncementDeleteResponseDoc { + data?: AnnouncementDeleteDataResponse; + errorMsg?: string; +} + +export interface AnnouncementDismissDataResponse { + dismissed?: boolean; +} + +export interface AnnouncementDismissResponseDoc { + data?: AnnouncementDismissDataResponse; + errorMsg?: string; +} + +export interface AnnouncementErrorDoc { + data?: any; + details?: any; + /** @example "invalid_request" */ + errorCode?: string; + /** @example "invalid request" */ + errorMsg?: string; + /** @example "" */ + requestId?: string; +} + +export interface AnnouncementListResponseDoc { + data?: AnnouncementResponse[]; + errorMsg?: string; +} + +export interface AnnouncementResponse { + closedAt?: string; + contentMarkdown?: string; + createdAt?: string; + createdByUserID?: number; + expiresAt?: string; + id?: number; + pinned?: boolean; + priority?: number; + startsAt?: string; + status?: string; + title?: string; + type?: string; + updatedAt?: string; +} + +export interface AnnouncementResponseDoc { + data?: AnnouncementDataResponse; + errorMsg?: string; +} + +export interface AnnouncementStateRequest { + updatedAt: string; +} + +export interface AuditLogListResponseDoc { + data?: { + results?: AuditLogResponse[]; + total?: number; + }; + errorMsg?: string; +} + +export interface AuditLogResponse { + action?: string; + actorDisplayName?: string; + actorLabel?: string; + actorUserID?: number; + actorUsername?: string; + createdAt?: string; + detailJSON?: string; + id?: number; + ip?: string; + requestID?: string; + resource?: string; + resourceID?: string; + updatedAt?: string; + userAgent?: string; +} + +export interface AuthErrorDoc { + data?: any; + details?: any; + errorCode?: string; + errorMsg?: string; + requestId?: string; +} + +export interface AuthEventResponse { + clientIP?: string; + createdAt?: string; + detailJSON?: string; + eventType?: string; + id?: number; + occurredAt?: string; + reason?: string; + requestID?: string; + result?: string; + updatedAt?: string; + userAgent?: string; + userDisplayName?: string; + userID?: number; + userLabel?: string; + username?: string; +} + +export interface AuthUserIdentityProviderSummaryResponse { + id?: number; + logoURL?: string; + name?: string; + slug?: string; + type?: string; +} + +export interface AuthUserResponse { + appearancePreferences?: string; + avatarURL?: string; + createdAt?: string; + displayName?: string; + email?: string; + emailBootstrapUsedAt?: string; + emailSource?: string; + emailVerifiedAt?: string; + id?: number; + identityProviders?: AuthUserIdentityProviderSummaryResponse[]; + initialSecurityRequired?: boolean; + initialUsernameRequired?: boolean; + lastActiveAt?: string; + lastLoginAt?: string; + locale?: string; + mustResetPassword?: boolean; + onboardingCompletedAt?: string; + passwordEnabled?: boolean; + passwordOrigin?: string; + passwordSetAt?: string; + phone?: string; + phoneVerifiedAt?: string; + profilePreferences?: string; + publicID?: string; + role?: string; + status?: string; + subscriptionExpiresAt?: string; + subscriptionPlanID?: number; + subscriptionPlanName?: string; + subscriptionStatus?: string; + subscriptionTier?: string; + timezone?: string; + twoFactorAvailable?: boolean; + twoFactorEnabled?: boolean; + twoFactorRecoveryCount?: number; + twoFactorRequired?: boolean; + updatedAt?: string; + username?: string; + usernameChangedAt?: string; +} + +export interface BatchDeleteRedemptionCodeDataResponse { + failedCount?: number; + notFoundCount?: number; + results?: BatchDeleteRedemptionCodeResultResponse[]; + successCount?: number; + total?: number; +} + +export interface BatchDeleteRedemptionCodeRequest { + /** @minItems 1 */ + ids: number[]; +} + +export interface BatchDeleteRedemptionCodeResponseDoc { + data?: BatchDeleteRedemptionCodeDataResponse; + errorMsg?: string; +} + +export interface BatchDeleteRedemptionCodeResultResponse { + error?: string; + id?: number; + status?: string; +} + +export interface BatchDeleteRequest { + /** @minItems 1 */ + ids: number[]; +} + +export interface BatchDeleteResponse { + failedCount?: number; + notFoundCount?: number; + results?: BatchDeleteResultResponse[]; + successCount?: number; + total?: number; +} + +export interface BatchDeleteResponseDoc { + data?: BatchDeleteResponse; + errorMsg?: string; +} + +export interface BatchDeleteResultResponse { + error?: string; + id?: number; + status?: string; +} + +export interface BatchSetConversationProjectRequest { + /** @maxItems 1000 */ + conversationPublicIDs: string[]; + /** @maxLength 32 */ + projectID?: string; +} + +export interface BatchSetConversationProjectResponse { + updated?: number; +} + +export interface BatchSetConversationProjectResponseDoc { + data?: BatchSetConversationProjectResponse; + errorMsg?: string; +} + +export interface BillingAccountDataResponse { + account?: BillingAccountResponse; +} + +export interface BillingAccountResponse { + balanceNanousd?: number; + balanceUSD?: number; + currency?: string; + status?: string; + updatedAt?: string; + userID?: number; +} + +export interface BillingAccountResponseDoc { + data?: BillingAccountDataResponse; + errorMsg?: string; +} + +export interface BillingConfigDataResponse { + config?: BillingConfigResponse; +} + +export interface BillingConfigRequest { + displayCurrency?: "USD" | "CNY"; + mode: "self" | "period" | "usage"; + nativeToolBillingEnabled?: boolean; + nativeToolPricing?: NativeToolPricingRequest[]; + /** @min 0 */ + prepaidAmountUSD?: number; + usdToCNYRate?: number; +} + +export interface BillingConfigResponse { + displayCurrency?: string; + epayTypes?: PaymentTypeResponse[]; + mode?: string; + nativeToolBillingEnabled?: boolean; + nativeToolPricing?: NativeToolPricingResponse[]; + paymentProviders?: string[]; + prepaidAmountNanousd?: number; + prepaidAmountUSD?: number; + usdToCNYRate?: number; +} + +export interface BillingConfigResponseDoc { + data?: BillingConfigDataResponse; + errorMsg?: string; +} + +export interface BillingErrorDoc { + data?: any; + details?: any; + errorCode?: string; + errorMsg?: string; + requestId?: string; +} + +export interface BillingOverviewDataResponse { + overview?: BillingOverviewResponse; +} + +export interface BillingOverviewResponse { + account?: BillingAccountResponse; + mode?: string; + periodCreditNanousd?: number; + periodCreditUSD?: number; + periodEndAt?: string; + periodRemainingNanousd?: number; + periodRemainingUSD?: number; + periodStartAt?: string; + periodUsedNanousd?: number; + periodUsedUSD?: number; + plan?: BillingPlanResponse; + subscriptionEntitlements?: SubscriptionEntitlementResponse[]; +} + +export interface BillingOverviewResponseDoc { + data?: BillingOverviewDataResponse; + errorMsg?: string; +} + +export interface BillingPlanDataResponse { + plan?: BillingPlanResponse; +} + +export interface BillingPlanResponse { + code?: string; + description?: string; + discountPercent?: number; + featureJSON?: string; + id?: number; + isActive?: boolean; + name?: string; + periodCreditNanousd?: number; + periodCreditUSD?: number; + permissionGroupID?: number; + prices?: BillingPriceResponse[]; + sortOrder?: number; +} + +export interface BillingPlanResponseDoc { + data?: BillingPlanDataResponse; + errorMsg?: string; +} + +export interface BillingPriceResponse { + amountCents?: number; + billingInterval?: string; + code?: string; + currency?: string; + id?: number; + isDefault?: boolean; + planID?: number; +} + +export interface BindModelUpstreamSourceRequest { + /** @min 0 */ + cbDurationMin?: number; + /** @min 0 */ + cbFailureThreshold?: number; + /** @min 0 */ + cbWindowMin?: number; + priority?: number; + /** @maxLength 64 */ + protocol?: string; + status?: "active" | "inactive"; + upstreamID: number; + upstreamModelID: number; + weight?: number; +} + +export interface BrandingManifestIcon { + purpose?: string; + sizes?: string; + src?: string; + type?: string; +} + +export interface BrandingManifestResponse { + background_color?: string; + categories?: string[]; + description?: string; + display?: string; + icons?: BrandingManifestIcon[]; + id?: string; + lang?: string; + name?: string; + orientation?: string; + scope?: string; + short_name?: string; + start_url?: string; + theme_color?: string; +} + +export interface BrandingResponse { + appleTouchIcon180URL?: string; + pwaIcon192URL?: string; + pwaIcon512URL?: string; + pwaMaskableIcon512URL?: string; + description?: string; + faviconURL?: string; + logoURL?: string; + shortName?: string; + title?: string; +} + +export interface BrandingResponseDoc { + data?: BrandingResponse; + errorMsg?: string; +} + +export interface ChannelErrorDoc { + data?: any; + details?: any; + errorCode?: string; + errorMsg?: string; + requestId?: string; +} + +export interface CheckoutDataResponse { + checkout?: CheckoutResponse; +} + +export interface CheckoutResponse { + baseAmountCents?: number; + baseCurrency?: string; + checkoutURL?: string; + creditNanousd?: number; + creditUSD?: number; + expiredAt?: string; + externalCheckoutID?: string; + fxRate?: string; + orderNo?: string; + orderType?: string; + payAmountCents?: number; + payCurrency?: string; + provider?: string; + status?: string; +} + +export interface CheckoutResponseDoc { + data?: CheckoutDataResponse; + errorMsg?: string; +} + +export interface CircuitResetResponse { + reset?: boolean; +} + +export interface CleanupLogsRequest { + before: string; + type: string; +} + +export interface CleanupLogsResponse { + before?: string; + deletedCount?: number; + type?: string; +} + +export interface CleanupLogsResponseDoc { + data?: CleanupLogsResponse; + errorMsg?: string; +} + +export interface ContextArtifactResponse { + content?: string; + createdAt?: string; + expiresAt?: string; + id?: number; + kind?: string; + messageID?: number; + metadataJSON?: string; + runID?: string; + score?: number; + sourceID?: string; + sourceTitle?: string; + sourceType?: string; + tokenEstimate?: number; +} + +export interface ContextArtifactResponseDoc { + data?: ContextArtifactResponse; + errorMsg?: string; +} + +export interface ConversationCreateResponseDoc { + data?: ConversationResponse; + errorMsg?: string; +} + +export interface ConversationDefaultModelCandidateResponse { + platformModelName?: string; + source?: string; + usedAt?: string; +} + +export interface ConversationDefaultModelCandidateResponseDoc { + data?: ConversationDefaultModelCandidateResponse; + errorMsg?: string; +} + +export interface ConversationDeleteResponse { + deleted?: boolean; + deletedFileCount?: number; + quota?: StorageQuotaResponse; +} + +export interface ConversationDeleteResponseDoc { + data?: ConversationDeleteResponse; + errorMsg?: string; +} + +export interface ConversationErrorDoc { + data?: any; + details?: any; + errorCode?: string; + errorMsg?: string; + requestId?: string; +} + +export interface ConversationEventListResponseDoc { + data?: { + results?: ConversationEventResponse[]; + total?: number; + }; + errorMsg?: string; +} + +export interface ConversationEventResponse { + contentMarkdown?: string; + conversationID?: number; + createdAt?: string; + endedAt?: string; + errorJSON?: string; + eventID?: string; + eventScope?: string; + eventType?: string; + id?: number; + inputJSON?: string; + latencyMS?: number; + messageID?: number; + outputJSON?: string; + parentEventID?: string; + payloadJSON?: string; + phase?: string; + platformModelName?: string; + providerProtocol?: string; + roundID?: string; + routedBindingCode?: string; + runID?: string; + seq?: number; + stage?: string; + startedAt?: string; + status?: string; + summary?: string; + title?: string; + toolCallID?: string; + toolName?: string; + updatedAt?: string; + upstreamModelName?: string; + upstreamName?: string; + userDisplayName?: string; + userID?: number; + userLabel?: string; + username?: string; +} + +export interface ConversationExportCompatibilityResponse { + format?: string; + notes?: string; +} + +export interface ConversationExportResponse { + compatibility?: ConversationExportCompatibilityResponse; + conversation?: ConversationResponse; + defaultMessagePublicIDs?: string[]; + exportScope?: string; + exportedAt?: string; + messages?: MessageResponse[]; + runs?: RunResponse[]; + totalMessages?: number; + totalRuns?: number; + version?: number; +} + +export interface ConversationExportResponseDoc { + data?: ConversationExportResponse; + errorMsg?: string; +} + +export interface ConversationListResponseDoc { + data?: { + results?: ConversationResponse[]; + total?: number; + }; + errorMsg?: string; +} + +export interface ConversationProjectListResponseDoc { + data?: ConversationProjectResponse[]; + errorMsg?: string; +} + +export interface ConversationProjectResponse { + color?: string; + createdAt?: string; + defaultMCPToolIDs?: number[]; + defaultSkillIDs?: number[]; + description?: string; + icon?: string; + mcpDefaultMode?: string; + name?: string; + publicID?: string; + sortOrder?: number; + status?: string; + systemPrompt?: string; + updatedAt?: string; +} + +export interface ConversationProjectResponseDoc { + data?: ConversationProjectResponse; + errorMsg?: string; +} + +export interface ConversationResponse { + contextPolicyJSON?: string; + createdAt?: string; + isStarred?: boolean; + labelsJSON?: string; + lastCompactedAt?: string; + lastResponseID?: string; + lastShareAccessedAt?: string; + messageCount?: number; + model?: string; + projectID?: string; + projectName?: string; + provider?: string; + publicID?: string; + sessionKey?: string; + shareID?: string; + shareStatus?: string; + sharedAt?: string; + starredAt?: string; + status?: string; + title?: string; + updatedAt?: string; + userID?: number; +} + +export interface ConversationRunListResponseDoc { + data?: { + results?: RunResponse[]; + total?: number; + }; + errorMsg?: string; +} + +export interface ConversationShareResponse { + createdAt?: string; + lastAccessedAt?: string; + messageCount?: number; + modelSnapshot?: string; + revokedAt?: string; + shareID?: string; + status?: string; + titleSnapshot?: string; + updatedAt?: string; +} + +export interface ConversationShareResponseDoc { + data?: ConversationShareResponse; + errorMsg?: string; +} + +export interface ConversationUpdateResponseDoc { + data?: ConversationResponse; + errorMsg?: string; +} + +export interface CreateAnnouncementRequest { + /** + * @minLength 1 + * @maxLength 20000 + */ + contentMarkdown: string; + expiresAt?: string; + pinned?: boolean; + priority?: number; + startsAt?: string; + status?: "active" | "inactive"; + /** + * @minLength 1 + * @maxLength 120 + */ + title: string; + type?: "critical" | "warning" | "info" | "normal" | "general"; +} + +export interface CreateCheckoutRequest { + /** @min 0 */ + amountMinorUnits?: number; + /** @maxLength 512 */ + cancelURL?: string; + /** + * @min 1 + * @max 120 + */ + cycles?: number; + /** @maxLength 32 */ + epayType?: string; + orderType?: "subscription" | "topup"; + paymentProvider?: "stripe" | "epay"; + /** @min 1 */ + priceID?: number; + /** @maxLength 512 */ + successURL?: string; +} + +export interface CreateConversationProjectRequest { + /** @maxLength 32 */ + color?: string; + /** @maxItems 128 */ + defaultMCPToolIDs?: number[]; + /** @maxItems 128 */ + defaultSkillIDs?: number[]; + /** @maxLength 255 */ + description?: string; + /** @maxLength 32 */ + icon?: string; + mcpDefaultMode?: "inherit" | "custom"; + /** @maxLength 80 */ + name: string; + /** @maxLength 12000 */ + systemPrompt?: string; +} + +export interface CreateConversationRequest { + /** @maxLength 128 */ + model?: string; + /** @maxLength 32 */ + projectID?: string; + /** @maxLength 255 */ + title?: string; +} + +export interface CreateConversationShareRequest { + /** @maxItems 1000 */ + defaultMessagePublicIDs?: string[]; +} + +export interface CreateModelRequest { + accessScope?: "public" | "internal"; + /** @maxLength 10000 */ + capabilitiesJSON?: string; + /** @min 0 */ + cbDurationMin?: number; + /** @min 0 */ + cbFailureThreshold?: number; + cbPolicyMode?: "default" | "enforced"; + /** @min 0 */ + cbWindowMin?: number; + /** @maxLength 10000 */ + description?: string; + /** @maxLength 128 */ + icon?: string; + /** @maxLength 1000 */ + kindsJSON?: string; + /** + * @minLength 2 + * @maxLength 128 + */ + platformModelName: string; + status?: "active" | "inactive"; + /** @maxLength 20000 */ + systemPrompt?: string; + /** @maxLength 64 */ + vendor?: string; +} + +export interface CreateModelResponseDoc { + data?: ModelDataResponse; + errorMsg?: string; +} + +export interface CreatePermissionGroupRequest { + /** @maxLength 512 */ + description?: string; + /** @maxLength 128 */ + name: string; + /** + * @min 0 + * @max 10000 + */ + rateMultiplierPercent?: number; +} + +export interface CreateRedemptionCodeRequest { + /** + * @minLength 3 + * @maxLength 64 + */ + code?: string; + /** @min 0 */ + creditUSD?: number; + /** @maxLength 255 */ + description?: string; + /** + * @min 0 + * @max 3660 + */ + durationDays?: number; + expiresAt?: string; + /** @min 1 */ + maxRedemptions?: number; + mode: "usage" | "period"; + /** + * @min 1 + * @max 100 + */ + perUserLimit?: number; + /** @min 1 */ + planID?: number; + /** + * @min 1 + * @max 100 + */ + quantity?: number; +} + +export interface CreateUpstreamRequest { + /** + * @minLength 2 + * @maxLength 10000 + */ + apiKeys: string; + /** @maxLength 512 */ + baseURL: string; + cbDurationMin?: number; + cbFailureThreshold?: number; + cbModelThreshold?: number; + cbThresholdLogic?: "or" | "and"; + cbWindowMin?: number; + compatible?: + | "openai" + | "anthropic" + | "google" + | "xai" + | "openrouter" + | "custom"; + connectTimeoutMS?: number; + /** @maxLength 10000 */ + headersJSON?: string; + /** + * @minLength 2 + * @maxLength 128 + */ + name: string; + /** @maxLength 10000 */ + protocolDefaultsJSON?: string; + readTimeoutMS?: number; + status?: "active" | "inactive"; + streamIdleTimeoutMS?: number; +} + +export interface CreateUpstreamResponseDoc { + data?: UpstreamDataResponse; + errorMsg?: string; +} + +export interface CreateUserRequest { + /** @maxLength 2048 */ + avatarURL?: string; + /** + * @minLength 3 + * @maxLength 16 + */ + displayName?: string; + /** @maxLength 128 */ + email?: string; + /** @maxLength 16 */ + locale?: string; + /** + * @minLength 8 + * @maxLength 128 + */ + password: string; + /** @maxLength 32 */ + phone?: string; + subscriptionExpiresAt?: string; + /** @maxLength 32 */ + subscriptionTier?: string; + /** @maxLength 64 */ + timezone?: string; + /** + * @minLength 3 + * @maxLength 16 + */ + username: string; +} + +export interface CreateUserResponseDoc { + data?: UserDataResponse; + errorMsg?: string; +} + +export interface DeleteAccountRequest { + /** + * @minLength 6 + * @maxLength 32 + */ + code: string; + verificationMethod: "two_factor" | "email"; +} + +export interface DeleteAccountResponse { + deleted?: boolean; +} + +export interface DeleteAccountResponseDoc { + data?: DeleteAccountResponse; + errorMsg?: string; +} + +export interface DeleteFileResponse { + deleted?: boolean; + fileID?: string; + quota?: StorageQuotaResponse; +} + +export interface DeleteFileResponseDoc { + data?: DeleteFileResponse; + errorMsg?: string; +} + +export interface DeletePermissionGroupResponse { + deleted?: boolean; + summary?: PermissionGroupDeleteSummaryResponse; +} + +export interface DeletePermissionGroupResponseDoc { + data?: DeletePermissionGroupResponse; + errorMsg?: string; +} + +export interface DeleteUserResponse { + deleted?: boolean; +} + +export interface DeleteUserResponseDoc { + data?: DeleteUserResponse; + errorMsg?: string; +} + +export interface EmailRegistrationCompleteRequest { + code?: string; + /** @maxLength 128 */ + email: string; + /** + * @minLength 8 + * @maxLength 128 + */ + password: string; + /** @maxLength 2048 */ + turnstileToken?: string; +} + +export interface EmailRegistrationStartRequest { + /** @maxLength 128 */ + email: string; + /** @maxLength 2048 */ + turnstileToken?: string; +} + +export interface EmailRegistrationStartResponse { + expiresAt?: string; + sent?: boolean; +} + +export interface EmailRegistrationStartResponseDoc { + data?: EmailRegistrationStartResponse; + errorMsg?: string; +} + +export interface EmailVerificationStartResponse { + availableMethods?: string[]; + expiresAt?: string; + sent?: boolean; + verificationMethod?: string; +} + +export interface EmailVerificationStartResponseDoc { + data?: EmailVerificationStartResponse; + errorMsg?: string; +} + +export interface Envelope { + data?: any; + details?: any; + errorCode?: string; + errorMsg?: string; + requestId?: string; +} + +export interface FileListResponse { + quota?: StorageQuotaResponse; + results?: FileObjectResponse[]; + total?: number; +} + +export interface FileListResponseDoc { + data?: FileListResponse; + errorMsg?: string; +} + +export interface FileObjectResponse { + sha256?: string; + chunkCount?: number; + createdAt?: string; + detectedMIME?: string; + embedError?: string; + embedStatus?: string; + expiresAt?: string; + extractStatus?: string; + fileCategory?: string; + fileID?: string; + fileName?: string; + lastAccessedAt?: string; + mimeType?: string; + processingErrorCode?: string; + processingErrorMessage?: string; + processingReady?: boolean; + processingStatus?: string; + purpose?: string; + ragOptOut?: boolean; + sizeBytes?: number; + status?: string; + updatedAt?: string; +} + +export interface FileUpdateResponseDoc { + data?: FileObjectResponse; + errorMsg?: string; +} + +export interface FileUploadResponse { + file?: FileObjectResponse; + quota?: StorageQuotaResponse; + reused?: boolean; +} + +export interface GroupModelsResponse { + modelIDs?: number[]; + rules?: PermissionGroupModelRuleResponse[]; +} + +export interface GroupModelsResponseDoc { + data?: GroupModelsResponse; + errorMsg?: string; +} + +export interface GroupUsersResponse { + userIDs?: number[]; +} + +export interface GroupUsersResponseDoc { + data?: GroupUsersResponse; + errorMsg?: string; +} + +export interface IdentityProviderResponse { + authURL?: string; + avatarField?: string; + clientID?: string; + createdAt?: string; + defaultRole?: string; + discoveryURL?: string; + emailField?: string; + emailVerifiedField?: string; + issuerURL?: string; + jwksURL?: string; + loginEnabled?: boolean; + logoURL?: string; + name?: string; + nameField?: string; + publicID?: string; + registrationEnabled?: boolean; + scopes?: string; + slug?: string; + subjectField?: string; + tokenURL?: string; + type?: string; + updatedAt?: string; + userinfoURL?: string; +} + +export interface ImportOpenWebUIUsersRequest { + creditMultiplier: number; + dryRun?: boolean; + /** @maxLength 2048 */ + dsn: string; +} + +export interface ImportOpenWebUIUsersResponse { + dedupeField?: string; + dedupeRule?: string; + imported?: number; + scanned?: number; + skippedDuplicateSourceEmail?: number; + skippedExistingEmail?: number; + skippedInvalidEmail?: number; + skippedInvalidRow?: number; + source?: string; +} + +export interface ImportOpenWebUIUsersResponseDoc { + data?: ImportOpenWebUIUsersResponse; + errorMsg?: string; +} + +export interface ImportUpstreamModelItemRequest { + /** @maxLength 1000 */ + kindsJSON?: string; + /** + * @minLength 2 + * @maxLength 128 + */ + platformModelName: string; + priority?: number; + /** @maxLength 64 */ + protocol?: string; + protocols?: string[]; + status?: "active" | "inactive"; + /** + * @minLength 1 + * @maxLength 128 + */ + upstreamModelName: string; +} + +export interface ImportUpstreamModelResultResponse { + bindingCode?: string; + createdPlatform?: boolean; + createdRoute?: boolean; + createdRoutes?: number; + error?: string; + existingRoutes?: number; + platformModelName?: string; + protocols?: string[]; + status?: string; + upstreamModelName?: string; +} + +export interface ImportUpstreamModelsRequest { + /** @minItems 1 */ + items: ImportUpstreamModelItemRequest[]; + permissionGroupIDs?: number[]; +} + +export interface ImportUpstreamModelsResponse { + createdPlatform?: number; + createdRoutes?: number; + existingRoutes?: number; + failedCount?: number; + importedCount?: number; + results?: ImportUpstreamModelResultResponse[]; + total?: number; +} + +export interface ImportUpstreamModelsResponseDoc { + data?: ImportUpstreamModelsResponse; + errorMsg?: string; +} + +export interface LoginOptionsResponse { + emailEnabled?: boolean; + emailRegistrationEnabled?: boolean; + emailVerificationEnabled?: boolean; + passwordResetEnabled?: boolean; + providers?: IdentityProviderResponse[]; + turnstileRegistrationEnabled?: boolean; + turnstileSiteKey?: string; + usernameEnabled?: boolean; +} + +export interface LoginOptionsResponseDoc { + data?: LoginOptionsResponse; + errorMsg?: string; +} + +export interface LoginRequest { + /** + * @minLength 6 + * @maxLength 128 + */ + password: string; + /** + * @minLength 3 + * @maxLength 128 + */ + username: string; +} + +export interface LoginResponse { + accessToken?: string; + expiresAt?: string; + refreshExpiresAt?: string; + sessionID?: string; + twoFactorChallengeToken?: string; + twoFactorRequired?: boolean; + user?: AuthUserResponse; + verificationMethods?: string[]; +} + +export interface LoginResponseDoc { + data?: LoginResponse; + errorMsg?: string; +} + +export interface LogoutResponse { + revoked?: boolean; +} + +export interface LogoutResponseDoc { + data?: LogoutResponse; + errorMsg?: string; +} + +export interface MeResponse { + user?: AuthUserResponse; +} + +export interface MeResponseDoc { + data?: MeResponse; + errorMsg?: string; +} + +export interface MemoryErrorDoc { + data?: any; + details?: any; + errorCode?: string; + errorMsg?: string; + requestId?: string; +} + +export interface MessageBillingCostResponse { + billedCurrency?: string; + billedNanousd?: number; + billedUSD?: number; + billingMode?: string; + pricingSnapshotJSON?: string; +} + +export interface MessageFeedbackResponse { + messageID?: number; + messagePublicID?: string; + myFeedback?: string; + thumbsDownCount?: number; + thumbsUpCount?: number; +} + +export interface MessageFeedbackResponseDoc { + data?: MessageFeedbackResponse; + errorMsg?: string; +} + +export interface MessageListResponseDoc { + data?: { + results?: MessageResponse[]; + total?: number; + }; + errorMsg?: string; +} + +export interface MessageProcessTraceResponse { + enabled?: boolean; + events?: MessageTraceEventResponse[]; + process?: MessageTraceBlockResponse; + promptTrace?: MessagePromptTraceResponse; + status?: string; + tools?: MessageTraceBlockResponse; + upstreamThink?: MessageTraceBlockResponse; +} + +export interface MessagePromptTraceBlockResponse { + cacheable?: boolean; + kind?: string; + sourceCount?: number; + sourceRefs?: MessagePromptTraceSourceResponse[]; + title?: string; + tokenEstimate?: number; +} + +export interface MessagePromptTraceResponse { + blocks?: MessagePromptTraceBlockResponse[]; + fullMessageCount?: number; + mode?: string; + promptFingerprint?: string; + sentMessageCount?: number; + sentTokenEstimate?: number; + statefulDisabledReason?: string; + statefulSavedMessages?: number; + statefulSavedTokens?: number; + statefulUsed?: boolean; + totalTokenEstimate?: number; +} + +export interface MessagePromptTraceSourceResponse { + artifactID?: number; + sourceID?: string; + sourceType?: string; + title?: string; +} + +export interface MessageResponse { + attachments?: string; + billingCost?: MessageBillingCostResponse; + branchReason?: string; + cacheReadTokens?: number; + cacheWriteTokens?: number; + content?: string; + contentType?: string; + conversationID?: number; + createdAt?: string; + editedAt?: string; + errorCode?: string; + errorMessage?: string; + id?: number; + inputTokens?: number; + latencyMS?: number; + modelIcon?: string; + modelVendor?: string; + myFeedback?: string; + outputTokens?: number; + parentMessageID?: number; + parentPublicID?: string; + platformModelName?: string; + processTrace?: MessageProcessTraceResponse; + publicID?: string; + reasoningTokens?: number; + role?: string; + runID?: string; + sourceMessageID?: number; + sourcePublicID?: string; + status?: string; + thumbsDownCount?: number; + thumbsUpCount?: number; + tokenUsage?: number; + updatedAt?: string; + upstreamModelName?: string; + userID?: number; +} + +export interface MessageResponseDoc { + data?: MessageResponse; + errorMsg?: string; +} + +export interface MessageTraceBlockResponse { + contentMarkdown?: string; + parentEventID?: string; + payloadJSON?: string; + roundID?: string; + stage?: string; + status?: string; + summary?: string; + title?: string; + updatedAt?: string; +} + +export interface MessageTraceEventResponse { + contentMarkdown?: string; + endedAt?: string; + eventID?: string; + eventType?: string; + parentEventID?: string; + payloadJSON?: string; + phase?: string; + roundID?: string; + seq?: number; + stage?: string; + startedAt?: string; + status?: string; + summary?: string; + title?: string; + updatedAt?: string; +} + +export interface ModelDataResponse { + model?: ModelResponse; +} + +export interface ModelListResponseDoc { + data?: { + results?: ModelResponse[]; + total?: number; + }; + errorMsg?: string; +} + +export interface ModelPermissionGroupsResponse { + effectiveGroupIDs?: number[]; + manualGroupIDs?: number[]; + matchedGroupIDs?: number[]; + unassigned?: boolean; +} + +export interface ModelPermissionGroupsResponseDoc { + data?: ModelPermissionGroupsResponse; + errorMsg?: string; +} + +export interface ModelPricingDataResponse { + modelPricing?: ModelPricingResponse; +} + +export interface ModelPricingListResponseDoc { + data?: { + results?: ModelPricingResponse[]; + total?: number; + }; + errorMsg?: string; +} + +export interface ModelPricingResponse { + cacheReadNanousdPerMTokens?: number; + cacheReadUSDPerMTokens?: number; + cacheWriteNanousdPerMTokens?: number; + cacheWriteUSDPerMTokens?: number; + callNanousdPerCall?: number; + callUSDPerCall?: number; + createdAt?: string; + currency?: string; + durationNanousdPerSecond?: number; + durationUSDPerSecond?: number; + id?: number; + inputNanousdPerMTokens?: number; + inputUSDPerMTokens?: number; + isFree?: boolean; + modelIcon?: string; + modelVendor?: string; + outputNanousdPerMTokens?: number; + outputUSDPerMTokens?: number; + platformModelName?: string; + pricingMode?: string; + tieredPricingJSON?: string; + updatedAt?: string; +} + +export interface ModelProbeBatchResponse { + failedCount?: number; + results?: ModelProbeResponse[]; + successCount?: number; + totalCount?: number; + unsupportedCount?: number; +} + +export interface ModelProbeBatchResponseDoc { + data?: ModelProbeBatchResponse; + errorMsg?: string; +} + +export interface ModelProbeDebugRequestResponse { + body?: string; + headers?: Record; + method?: string; + path?: string; +} + +export interface ModelProbeDebugResponse { + request?: ModelProbeDebugRequestResponse; + response?: ModelProbeDebugResponseResponse; +} + +export interface ModelProbeDebugResponseResponse { + body?: string; + headers?: Record; + statusCode?: number; +} + +export interface ModelProbeRequest { + taskType?: "chat" | "image_generation" | "image_edit" | "video_generation"; +} + +export interface ModelProbeResponse { + bindingCode?: string; + debug?: ModelProbeDebugResponse; + endpoint?: string; + errorCode?: string; + errorMessage?: string; + latencyMS?: number; + platformModelID?: number; + platformModelName?: string; + protocol?: string; + routeID?: number; + status?: string; + success?: boolean; + upstreamID?: number; + upstreamModelID?: number; + upstreamModelName?: string; + upstreamName?: string; + upstreamStatusCode?: number; +} + +export interface ModelProbeResponseDoc { + data?: ModelProbeResponse; + errorMsg?: string; +} + +export interface ModelResponse { + accessScope?: string; + activeSourceCount?: number; + capabilitiesJSON?: string; + cbDurationMin?: number; + cbFailureThreshold?: number; + cbPolicyMode?: string; + cbWindowMin?: number; + createdAt?: string; + description?: string; + icon?: string; + id?: number; + kindsJSON?: string; + platformModelName?: string; + protocolsJSON?: string; + sortOrder?: number; + sourceCount?: number; + status?: string; + systemPrompt?: string; + updatedAt?: string; + upstreamNamesJSON?: string; + vendor?: string; +} + +export interface ModelUpstreamSourceDataResponse { + source?: ModelUpstreamSourceResponse; +} + +export interface ModelUpstreamSourceListResponseDoc { + data?: { + results?: ModelUpstreamSourceResponse[]; + total?: number; + }; + errorMsg?: string; +} + +export interface ModelUpstreamSourceResponse { + baseURL?: string; + bindingCode?: string; + cbDurationMin?: number; + cbFailureThreshold?: number; + cbWindowMin?: number; + circuitOpen?: boolean; + circuitScope?: string; + circuitUntil?: string; + createdAt?: string; + headersJSON?: string; + id?: number; + priority?: number; + protocol?: string; + source?: string; + status?: string; + suggestedProtocol?: string; + updatedAt?: string; + upstreamID?: number; + upstreamModelIcon?: string; + upstreamModelKindsJSON?: string; + upstreamModelName?: string; + upstreamModelStatus?: string; + upstreamModelVendor?: string; + upstreamName?: string; + upstreamStatus?: string; + weight?: number; +} + +export interface NativeToolPricingRequest { + billable?: boolean; + priceLabel?: string; + priceNanousd?: number; + toolKey?: string; + unit?: string; +} + +export interface NativeToolPricingResponse { + billable?: boolean; + description?: string; + label?: string; + priceLabel?: string; + priceNanousd?: number; + provider?: string; + toolKey?: string; + type?: string; + unit?: string; +} + +export interface OpenRouterOfficialPricingDataResponse { + cached?: boolean; + fetchedAt?: string; + items?: OpenRouterOfficialPricingItemResponse[]; + stale?: boolean; +} + +export interface OpenRouterOfficialPricingItemResponse { + canonicalSlug?: string; + id?: string; + name?: string; + pricing?: OpenRouterOfficialPricingUnitPricingResponse; +} + +export interface OpenRouterOfficialPricingResponseDoc { + data?: OpenRouterOfficialPricingDataResponse; + errorMsg?: string; +} + +export interface OpenRouterOfficialPricingUnitPricingResponse { + completion?: string; + inputCacheRead?: string; + inputCacheWrite?: string; + prompt?: string; +} + +export interface PasswordResetCompleteRequest { + code: string; + /** @maxLength 128 */ + email: string; + /** + * @minLength 8 + * @maxLength 128 + */ + newPassword: string; +} + +export interface PasswordResetCompleteResponse { + changed?: boolean; +} + +export interface PasswordResetCompleteResponseDoc { + data?: PasswordResetCompleteResponse; + errorMsg?: string; +} + +export interface PasswordResetStartRequest { + /** @maxLength 128 */ + email: string; +} + +export interface PasswordResetStartResponse { + expiresAt?: string; + sent?: boolean; +} + +export interface PasswordResetStartResponseDoc { + data?: PasswordResetStartResponse; + errorMsg?: string; +} + +export interface PatchAnnouncementRequestDoc { + /** @maxLength 20000 */ + contentMarkdown?: string; + expiresAt?: string; + pinned?: boolean; + priority?: number; + startsAt?: string; + status?: "active" | "inactive"; + /** @maxLength 120 */ + title?: string; + type?: "critical" | "warning" | "info" | "normal" | "general"; +} + +export interface PatchItem { + clear?: boolean; + key: string; + namespace: string; + value?: string; +} + +export interface PatchMeRequest { + /** @maxLength 2048 */ + appearancePreferences?: string; + /** @maxLength 2048 */ + avatarURL?: string; + /** + * @minLength 3 + * @maxLength 16 + */ + displayName?: string; + /** @maxLength 16 */ + locale?: string; + /** @maxLength 1024 */ + profilePreferences?: string; + /** @maxLength 64 */ + timezone?: string; +} + +export interface PatchMeResponseDoc { + data?: MeResponse; + errorMsg?: string; +} + +export interface PatchPromptPresetRequest { + /** @maxLength 10000 */ + content?: string; + /** @maxLength 256 */ + description?: string; + enabled?: boolean; + sortOrder?: number; + /** @maxLength 64 */ + title?: string; + /** @maxLength 64 */ + trigger?: string; +} + +export interface PatchRedemptionCodeRequestDoc { + /** @maxLength 255 */ + description?: string; + expiresAt?: string; + maxRedemptions?: number; + /** + * @min 1 + * @max 100 + */ + perUserLimit?: number; + status?: "active" | "inactive"; +} + +export interface PatchSkillRequest { + /** @maxLength 256 */ + description?: string; + enabled?: boolean; + /** @maxLength 10000 */ + markdown?: string; + sortOrder?: number; + /** @maxLength 64 */ + title?: string; + /** @maxLength 64 */ + trigger?: string; +} + +export interface PatchUserRequest { + /** @maxLength 2048 */ + avatarURL?: string; + /** + * @minLength 3 + * @maxLength 16 + */ + displayName?: string; + /** @maxLength 128 */ + email?: string; + /** @maxLength 16 */ + locale?: string; + /** @maxLength 32 */ + phone?: string; + /** @maxLength 1024 */ + profilePreferences?: string; + /** @maxLength 255 */ + reason?: string; + /** @maxLength 32 */ + role?: string; + /** @maxLength 32 */ + status?: string; + subscriptionExpiresAt?: string; + /** @maxLength 32 */ + subscriptionTier?: string; + /** @maxLength 64 */ + timezone?: string; +} + +export interface PatchUsernameRequest { + /** + * @minLength 3 + * @maxLength 16 + */ + username: string; +} + +export interface PaymentOrderListResponseDoc { + data?: { + results?: PaymentOrderResponse[]; + total?: number; + }; + errorMsg?: string; +} + +export interface PaymentOrderResponse { + baseAmountCents?: number; + baseCurrency?: string; + billingInterval?: string; + createdAt?: string; + creditNanousd?: number; + creditUSD?: number; + cycles?: number; + expiredAt?: string; + externalCheckoutID?: string; + externalPaymentID?: string; + fxRate?: string; + id?: number; + orderNo?: string; + orderType?: string; + paidAt?: string; + payAmountCents?: number; + payCurrency?: string; + planID?: number; + priceID?: number; + provider?: string; + snapshotJSON?: string; + status?: string; + updatedAt?: string; + userDisplayName?: string; + userID?: number; + userLabel?: string; + username?: string; +} + +export interface PaymentTypeResponse { + name?: string; + type?: string; +} + +export interface PermissionGroupDataResponse { + group?: PermissionGroupResponse; +} + +export interface PermissionGroupDataResponseDoc { + data?: PermissionGroupDataResponse; + errorMsg?: string; +} + +export interface PermissionGroupDeleteSummaryResponse { + manualModelCount?: number; + manualUserCount?: number; + planCount?: number; + ruleCount?: number; +} + +export interface PermissionGroupListResponse { + results?: PermissionGroupResponse[]; +} + +export interface PermissionGroupListResponseDoc { + data?: PermissionGroupListResponse; + errorMsg?: string; +} + +export interface PermissionGroupModelRuleRequest { + /** @maxLength 32 */ + type: string; + /** @maxLength 128 */ + value?: string; +} + +export interface PermissionGroupModelRuleResponse { + type?: string; + value?: string; +} + +export interface PermissionGroupResponse { + createdAt?: string; + description?: string; + id?: number; + isDefault?: boolean; + manualModelCount?: number; + manualUserCount?: number; + modelCount?: number; + name?: string; + rateMultiplierPercent?: number; + ruleModelCount?: number; + subscriptionUserCount?: number; + updatedAt?: string; + userCount?: number; +} + +export interface PlanListResponseDoc { + data?: BillingPlanResponse[]; + errorMsg?: string; +} + +export interface PromptPresetDataResponse { + promptPreset?: PromptPresetResponse; +} + +export interface PromptPresetDeleteDataResponse { + deleted?: boolean; +} + +export interface PromptPresetDeleteResponseDoc { + data?: PromptPresetDeleteDataResponse; + errorMsg?: string; +} + +export interface PromptPresetErrorDoc { + errorMsg?: string; +} + +export interface PromptPresetPageResponseDoc { + data?: { + results?: PromptPresetResponse[]; + total?: number; + }; + errorMsg?: string; +} + +export interface PromptPresetResponse { + content?: string; + createdAt?: string; + createdByUserID?: number; + description?: string; + enabled?: boolean; + id?: number; + scope?: string; + sortOrder?: number; + title?: string; + trigger?: string; + updatedAt?: string; + updatedByUserID?: number; +} + +export interface PromptPresetResponseDoc { + data?: PromptPresetDataResponse; + errorMsg?: string; +} + +export interface PublicModelListResponseDoc { + data?: PublicModelResponse[]; + errorMsg?: string; +} + +export interface PublicModelPricingResponse { + cacheReadUSDPerMTokens?: number; + cacheWriteUSDPerMTokens?: number; + callUSDPerCall?: number; + currency?: string; + durationUSDPerSecond?: number; + inputUSDPerMTokens?: number; + isFree?: boolean; + mode?: string; + outputUSDPerMTokens?: number; + tiers?: PublicModelPricingTierResponse[]; +} + +export interface PublicModelPricingTierResponse { + cacheReadUSDPerMTokens?: number; + cacheWriteUSDPerMTokens?: number; + fromTokens?: number; + inputUSDPerMTokens?: number; + outputUSDPerMTokens?: number; + upToTokens?: number; +} + +export interface PublicModelResponse { + capabilitiesJSON?: string; + description?: string; + icon?: string; + kindsJSON?: string; + platformModelName?: string; + pricing?: PublicModelPricingResponse; + protocolsJSON?: string; + sortOrder?: number; + vendor?: string; +} + +export interface PublicSharedConversationResponse { + createdAt?: string; + defaultMessagePublicIDs?: string[]; + lastAccessedAt?: string; + messages?: PublicSharedMessageResponse[]; + model?: string; + shareID?: string; + title?: string; +} + +export interface PublicSharedConversationResponseDoc { + data?: PublicSharedConversationResponse; + errorMsg?: string; +} + +export interface PublicSharedMessageResponse { + attachments?: string; + branchReason?: string; + cacheReadTokens?: number; + cacheWriteTokens?: number; + content?: string; + contentType?: string; + createdAt?: string; + editedAt?: string; + errorCode?: string; + errorMessage?: string; + inputTokens?: number; + latencyMS?: number; + modelIcon?: string; + modelVendor?: string; + outputTokens?: number; + parentPublicID?: string; + platformModelName?: string; + processTrace?: MessageProcessTraceResponse; + publicID?: string; + reasoningTokens?: number; + role?: string; + runID?: string; + sourcePublicID?: string; + status?: string; + tokenUsage?: number; + updatedAt?: string; + upstreamModelName?: string; +} + +export interface RedeemCodeRequest { + /** + * @minLength 3 + * @maxLength 64 + */ + code: string; +} + +export interface RedemptionApplyDataResponse { + account?: BillingAccountResponse; + overview?: BillingOverviewResponse; + redemption?: RedemptionResponse; + subscription?: SubscriptionResponse; +} + +export interface RedemptionApplyResponseDoc { + data?: RedemptionApplyDataResponse; + errorMsg?: string; +} + +export interface RedemptionCodeCreateDataResponse { + results?: RedemptionCodeResponse[]; +} + +export interface RedemptionCodeCreateResponseDoc { + data?: RedemptionCodeCreateDataResponse; + errorMsg?: string; +} + +export interface RedemptionCodeDataResponse { + code?: RedemptionCodeResponse; +} + +export interface RedemptionCodeDeleteDataResponse { + deleted?: boolean; +} + +export interface RedemptionCodeDeleteResponseDoc { + data?: RedemptionCodeDeleteDataResponse; + errorMsg?: string; +} + +export interface RedemptionCodeListDataResponse { + results?: RedemptionCodeResponse[]; + total?: number; +} + +export interface RedemptionCodeListResponseDoc { + data?: RedemptionCodeListDataResponse; + errorMsg?: string; +} + +export interface RedemptionCodeResponse { + code?: string; + codeHint?: string; + createdAt?: string; + createdByUserID?: number; + creditNanousd?: number; + creditUSD?: number; + description?: string; + durationDays?: number; + expiresAt?: string; + id?: number; + maxRedemptions?: number; + mode?: string; + perUserLimit?: number; + planID?: number; + redeemedCount?: number; + remainingRedemptions?: number; + rewardType?: string; + status?: string; + updatedAt?: string; +} + +export interface RedemptionCodeResponseDoc { + data?: RedemptionCodeDataResponse; + errorMsg?: string; +} + +export interface RedemptionResponse { + balanceTransactionID?: number; + codeID?: number; + createdAt?: string; + creditNanousd?: number; + creditUSD?: number; + id?: number; + mode?: string; + planID?: number; + rewardType?: string; + subscriptionID?: number; + userID?: number; +} + +export interface RefreshTokenResponseDoc { + data?: LoginResponse; + errorMsg?: string; +} + +export interface RenameConversationRequest { + /** @maxLength 255 */ + title: string; +} + +export interface ReorderConversationProjectsRequest { + /** @maxItems 200 */ + projectIDs: string[]; +} + +export interface ReorderModelsRequest { + /** @minItems 1 */ + modelIDs: number[]; +} + +export interface ResetUpstreamCircuitResponseDoc { + data?: CircuitResetResponse; + errorMsg?: string; +} + +export interface ResetUserPasswordRequest { + mustResetPassword?: boolean; + /** + * @minLength 8 + * @maxLength 128 + */ + newPassword: string; +} + +export interface ResetUserPasswordResponse { + reset?: boolean; +} + +export interface ResetUserPasswordResponseDoc { + data?: ResetUserPasswordResponse; + errorMsg?: string; +} + +export interface RevokeConversationSharesRequest { + /** @maxItems 1000 */ + conversationPublicIDs?: string[]; +} + +export interface RevokeConversationSharesResponse { + revoked?: boolean; +} + +export interface RevokeConversationSharesResponseDoc { + data?: RevokeConversationSharesResponse; + errorMsg?: string; +} + +export interface RevokeUserSessionsResponse { + revoked?: boolean; +} + +export interface RevokeUserSessionsResponseDoc { + data?: RevokeUserSessionsResponse; + errorMsg?: string; +} + +export interface RunResponse { + cacheReadTokens?: number; + cacheWriteTokens?: number; + conversationID?: number; + createdAt?: string; + endedAt?: string; + endpoint?: string; + errorCode?: string; + errorMessage?: string; + firstTokenLatencyMS?: number; + id?: number; + inputTokens?: number; + modelIcon?: string; + modelVendor?: string; + outputTokens?: number; + platformModelName?: string; + provider?: string; + providerProtocol?: string; + reasoningTokens?: number; + requestID?: string; + requestedModelName?: string; + routedBindingCode?: string; + runID?: string; + startedAt?: string; + status?: string; + taskType?: string; + toolCallsCount?: number; + totalLatencyMS?: number; + updatedAt?: string; + upstreamID?: number; + upstreamModelID?: number; + upstreamModelName?: string; + userID?: number; +} + +export interface SecurityVerificationStartRequest { + verificationMethod?: "none" | "two_factor" | "email"; +} + +export interface SendMessageRequest { + branchReason?: "default" | "retry" | "edit"; + /** @maxLength 64 */ + clientRunID?: string; + content: string; + contentType: "text" | "markdown" | "image" | "file" | "mixed"; + /** @maxItems 20 */ + fileIDs?: string[]; + htmlVisualColorMode?: "light" | "dark"; + htmlVisualPrompt?: boolean; + /** @maxLength 128 */ + model?: string; + options?: Record; + /** @maxLength 32 */ + parentMessagePublicID?: string; + /** @maxItems 128 */ + selectedToolIDs?: number[]; + /** @maxItems 128 */ + skillIDs?: number[]; + /** @maxLength 32 */ + sourceMessagePublicID?: string; +} + +export interface SendMessageResponse { + assistantMessage?: MessageResponse; + metadataRefreshHint?: string; + userMessage?: MessageResponse; +} + +export interface SendMessageResponseDoc { + data?: SendMessageResponse; + errorMsg?: string; +} + +export interface SetConversationArchiveRequest { + archived?: boolean; +} + +export interface SetConversationProjectRequest { + /** @maxLength 32 */ + projectID?: string; +} + +export interface SetConversationStarRequest { + starred?: boolean; +} + +export interface SetGroupModelsRequest { + modelIDs?: number[]; + rules?: PermissionGroupModelRuleRequest[]; +} + +export interface SetGroupUsersRequest { + userIDs?: number[]; +} + +export interface SetMessageFeedbackRequest { + feedback?: "up" | "down"; +} + +export interface SetModelPermissionGroupsRequest { + groupIDs?: number[]; +} + +export interface SettingsPatchSettingsRequest { + /** @minItems 1 */ + items: PatchItem[]; +} + +export interface SkillDataResponse { + skill?: SkillResponse; +} + +export interface SkillDeleteDataResponse { + deleted?: boolean; +} + +export interface SkillDeleteResponseDoc { + data?: SkillDeleteDataResponse; + errorMsg?: string; +} + +export interface SkillErrorDoc { + errorMsg?: string; +} + +export interface SkillPageResponseDoc { + data?: { + results?: SkillResponse[]; + total?: number; + }; + errorMsg?: string; +} + +export interface SkillResponse { + createdAt?: string; + createdByUserID?: number; + description?: string; + enabled?: boolean; + id?: number; + markdown?: string; + scope?: string; + sortOrder?: number; + title?: string; + trigger?: string; + updatedAt?: string; + updatedByUserID?: number; +} + +export interface SkillResponseDoc { + data?: SkillDataResponse; + errorMsg?: string; +} + +export interface SkillSummaryPageResponseDoc { + data?: { + results?: SkillSummaryResponse[]; + total?: number; + }; + errorMsg?: string; +} + +export interface SkillSummaryResponse { + createdAt?: string; + description?: string; + enabled?: boolean; + id?: number; + scope?: string; + sortOrder?: number; + title?: string; + trigger?: string; + updatedAt?: string; +} + +export interface StorageQuotaResponse { + createdAt?: string; + id?: number; + quotaBytes?: number; + reservedBytes?: number; + updatedAt?: string; + usedBytes?: number; + userID?: number; +} + +export interface SubscribeRequest { + /** + * @min 1 + * @max 120 + */ + cycles?: number; + /** @min 1 */ + priceID: number; +} + +export interface SubscribeResponseDoc { + data?: SubscriptionDataResponse; + errorMsg?: string; +} + +export interface SubscriptionDataResponse { + subscription?: SubscriptionResponse; +} + +export interface SubscriptionEntitlementResponse { + autoRenew?: boolean; + cancelAtPeriodEnd?: boolean; + currentPeriodEndAt?: string; + currentPeriodStartAt?: string; + id?: number; + isCurrent?: boolean; + plan?: BillingPlanResponse; + planID?: number; + priceID?: number; + startAt?: string; + status?: string; + userID?: number; +} + +export interface SubscriptionResponse { + autoRenew?: boolean; + cancelAtPeriodEnd?: boolean; + currentPeriodEndAt?: string; + currentPeriodStartAt?: string; + id?: number; + planID?: number; + priceID?: number; + startAt?: string; + status?: string; + userID?: number; +} + +export interface SuccessDoc { + data?: any; + details?: any; + /** @example "" */ + errorCode?: string; + /** @example "" */ + errorMsg?: string; + /** @example "" */ + requestId?: string; +} + +export interface SyncUpstreamModelsResponse { + createdUpstreamModels?: number; + existingUpstreamModels?: number; + inactivatedModels?: number; + skippedUpstreamModels?: number; + syncedModels?: UpstreamSyncModelResponse[]; + totalUpstream?: number; +} + +export interface SyncUpstreamModelsResponseDoc { + data?: SyncUpstreamModelsResponse; + errorMsg?: string; +} + +export interface SystemEventListResponseDoc { + data?: { + results?: SystemEventResponse[]; + total?: number; + }; + errorMsg?: string; +} + +export interface SystemEventResponse { + createdAt?: string; + detailJSON?: string; + event?: string; + id?: number; + level?: string; + message?: string; + requestID?: string; + resource?: string; + resourceID?: string; + source?: string; + traceID?: string; + updatedAt?: string; +} + +export interface UpdateBillingAccountBalanceRequest { + /** @min 0 */ + balanceUSD?: number; + /** @maxLength 255 */ + description?: string; +} + +export interface UpdateBillingPlanRequest { + /** @min 0 */ + amountUSD?: number; + billingInterval: "month" | "year" | "lifetime"; + /** @maxLength 16 */ + currency?: string; + /** @maxLength 255 */ + description?: string; + /** + * @min 0 + * @max 100 + */ + discountPercent?: number; + /** + * @minLength 1 + * @maxLength 64 + */ + name: string; + /** @min 0 */ + periodCreditUSD?: number; + permissionGroupID?: number; +} + +export interface UpdateConversationProjectRequest { + /** @maxLength 32 */ + color?: string; + /** @maxItems 128 */ + defaultMCPToolIDs?: number[]; + /** @maxItems 128 */ + defaultSkillIDs?: number[]; + /** @maxLength 255 */ + description?: string; + /** @maxLength 32 */ + icon?: string; + mcpDefaultMode?: "inherit" | "custom"; + /** @maxLength 80 */ + name?: string; + status?: "active" | "archived"; + /** @maxLength 12000 */ + systemPrompt?: string; +} + +export interface UpdateCurrentSessionLocationRequest { + /** + * @min 0 + * @max 1000000 + */ + accuracyMeters?: number; + latitude: number; + longitude: number; + /** @maxLength 64 */ + timezone?: string; +} + +export interface UpdateCurrentSessionLocationResponseDoc { + data?: ActiveSessionResponse; + errorMsg?: string; +} + +export interface UpdateFileRequest { + fileName?: string; + ragOptOut?: boolean; +} + +export interface UpdateMessageRequest { + content: string; +} + +export interface UpdateModelRequest { + accessScope?: "public" | "internal"; + /** @maxLength 10000 */ + capabilitiesJSON?: string; + /** @min 0 */ + cbDurationMin?: number; + /** @min 0 */ + cbFailureThreshold?: number; + cbPolicyMode?: "default" | "enforced"; + /** @min 0 */ + cbWindowMin?: number; + /** @maxLength 10000 */ + description?: string; + /** @maxLength 128 */ + icon?: string; + /** @maxLength 1000 */ + kindsJSON?: string; + /** + * @minLength 2 + * @maxLength 128 + */ + platformModelName?: string; + status?: "active" | "inactive"; + /** @maxLength 20000 */ + systemPrompt?: string; + /** @maxLength 64 */ + vendor?: string; +} + +export interface UpdateModelResponseDoc { + data?: ModelDataResponse; + errorMsg?: string; +} + +export interface UpdateModelUpstreamSourceRequest { + /** @min 0 */ + cbDurationMin?: number; + /** @min 0 */ + cbFailureThreshold?: number; + /** @min 0 */ + cbWindowMin?: number; + priority?: number; + /** @maxLength 64 */ + protocol?: string; + status?: "active" | "inactive"; + weight?: number; +} + +export interface UpdateModelUpstreamSourceResponseDoc { + data?: ModelUpstreamSourceDataResponse; + errorMsg?: string; +} + +export interface UpdatePermissionGroupRequest { + /** @maxLength 512 */ + description?: string; + /** @maxLength 128 */ + name: string; + /** + * @min 0 + * @max 10000 + */ + rateMultiplierPercent?: number; +} + +export interface UpdateUpstreamRequest { + /** + * @minLength 2 + * @maxLength 10000 + */ + addAPIKeys?: string; + /** + * @minLength 2 + * @maxLength 10000 + */ + apiKeys?: string; + /** @maxLength 512 */ + baseURL?: string; + cbDurationMin?: number; + cbFailureThreshold?: number; + cbModelThreshold?: number; + cbThresholdLogic?: "or" | "and"; + cbWindowMin?: number; + compatible?: + | "openai" + | "anthropic" + | "google" + | "xai" + | "openrouter" + | "custom"; + connectTimeoutMS?: number; + deleteAPIKeyIDs?: string[]; + /** @maxLength 10000 */ + headersJSON?: string; + /** + * @minLength 2 + * @maxLength 128 + */ + name?: string; + /** @maxLength 10000 */ + protocolDefaultsJSON?: string; + readTimeoutMS?: number; + status?: "active" | "inactive"; + streamIdleTimeoutMS?: number; +} + +export interface UpdateUpstreamResponseDoc { + data?: UpstreamDataResponse; + errorMsg?: string; +} + +export interface UpdateUserStatusRequest { + /** @maxLength 255 */ + reason?: string; + /** @maxLength 32 */ + status: string; +} + +export interface UpdateUserStatusResponseDoc { + data?: UserDataResponse; + errorMsg?: string; +} + +export interface UploadFileResponseDoc { + data?: FileUploadResponse; + errorMsg?: string; +} + +export interface UpsertMemoryResponse { + saved?: boolean; +} + +export interface UpsertModelPricingRequest { + /** @min 0 */ + cacheReadUSDPerMTokens?: number; + /** @min 0 */ + cacheWriteUSDPerMTokens?: number; + /** @min 0 */ + callUSDPerCall?: number; + /** @maxLength 16 */ + currency?: string; + /** @min 0 */ + durationUSDPerSecond?: number; + /** @min 0 */ + inputUSDPerMTokens?: number; + isFree?: boolean; + /** @min 0 */ + outputUSDPerMTokens?: number; + /** @maxLength 128 */ + platformModelName: string; + pricingMode?: "token" | "call" | "duration" | "tiered"; + /** @maxLength 20000 */ + tieredPricingJSON?: string; +} + +export interface UpsertUpstreamModelRequest { + cbDurationMin?: number; + cbFailureThreshold?: number; + cbWindowMin?: number; + /** @maxLength 10000 */ + headersJSON?: string; + /** @maxLength 1000 */ + kindsJSON?: string; + /** + * @minLength 2 + * @maxLength 128 + */ + platformModelName: string; + priority?: number; + /** @maxLength 64 */ + protocol?: string; + routeID?: number; + /** @maxLength 64 */ + source?: string; + status?: "active" | "inactive"; + /** + * @minLength 1 + * @maxLength 128 + */ + upstreamModelName: string; + weight?: number; +} + +export interface UpsertUpstreamModelResponseDoc { + data?: UpstreamModelDataResponse; + errorMsg?: string; +} + +export interface UpsertUserMemoryRequest { + /** @maxLength 128 */ + memoryKey: string; + scope: "profile" | "preference" | "custom"; + /** @maxLength 10000 */ + value: string; +} + +export interface UpsertUserMemoryResponseDoc { + data?: UpsertMemoryResponse; + errorMsg?: string; +} + +export interface UpstreamAPIKeyResponse { + id?: string; + index?: number; + keyMasked?: string; + note?: string; + status?: string; +} + +export interface UpstreamDataResponse { + upstream?: UpstreamResponse; +} + +export interface UpstreamListResponseDoc { + data?: { + results?: UpstreamResponse[]; + total?: number; + }; + errorMsg?: string; +} + +export interface UpstreamModelDataResponse { + binding?: UpstreamModelResponse; +} + +export interface UpstreamModelListResponseDoc { + data?: { + results?: UpstreamModelResponse[]; + total?: number; + }; + errorMsg?: string; +} + +export interface UpstreamModelResponse { + bindingCode?: string; + cbDurationMin?: number; + cbFailureThreshold?: number; + cbWindowMin?: number; + circuitOpen?: boolean; + circuitUntil?: string; + createdAt?: string; + headersJSON?: string; + id?: number; + modelIcon?: string; + modelKindsJSON?: string; + modelVendor?: string; + platformModelID?: number; + platformModelName?: string; + priority?: number; + protocol?: string; + routeID?: number; + routeStatus?: string; + source?: string; + suggestedProtocol?: string; + updatedAt?: string; + upstreamID?: number; + upstreamModelIcon?: string; + upstreamModelKindsJSON?: string; + upstreamModelName?: string; + upstreamModelStatus?: string; + upstreamModelVendor?: string; + weight?: number; +} + +export interface UpstreamRemoteModelResponse { + alreadyBound?: boolean; + alreadySynced?: boolean; + bindingCode?: string; + boundPlatformModels?: string[]; + suggestedKindsJSON?: string; + suggestedPlatformModelName?: string; + suggestedProtocol?: string; + suggestedProtocols?: string[]; + upstreamModelName?: string; + upstreamModelStatus?: string; +} + +export interface UpstreamRemoteModelsResponse { + items?: UpstreamRemoteModelResponse[]; + total?: number; +} + +export interface UpstreamRemoteModelsResponseDoc { + data?: UpstreamRemoteModelsResponse; + errorMsg?: string; +} + +export interface UpstreamResponse { + activeModelsCount?: number; + apiKeyItems?: UpstreamAPIKeyResponse[]; + apiKeysMasked?: string; + baseURL?: string; + cbDurationMin?: number; + cbFailureThreshold?: number; + cbModelThreshold?: number; + cbThresholdLogic?: string; + cbWindowMin?: number; + circuitOpen?: boolean; + circuitUntil?: string; + compatible?: string; + connectTimeoutMS?: number; + createdAt?: string; + headersJSON?: string; + id?: number; + modelsCount?: number; + name?: string; + protocolDefaultsJSON?: string; + readTimeoutMS?: number; + status?: string; + streamIdleTimeoutMS?: number; + updatedAt?: string; +} + +export interface UpstreamSyncModelResponse { + bindingCode?: string; + created?: boolean; + kindsJSON?: string; + status?: string; + suggestedProtocol?: string; + upstreamModelName?: string; +} + +export interface UsageDailyListResponseDoc { + data?: UsageDailyResponse[]; + errorMsg?: string; +} + +export interface UsageDailyModelResponse { + avgLatencyMS?: number; + billedNanousd?: number; + billedUSD?: number; + cacheReadTokens?: number; + cacheWriteTokens?: number; + callCount?: number; + durationSeconds?: number; + inputTokens?: number; + outputTokens?: number; + platformModelName?: string; + reasoningTokens?: number; + recordCount?: number; + totalTokens?: number; +} + +export interface UsageDailyResponse { + avgLatencyMS?: number; + billedNanousd?: number; + billedUSD?: number; + cacheReadTokens?: number; + cacheWriteTokens?: number; + callCount?: number; + durationSeconds?: number; + inputTokens?: number; + models?: UsageDailyModelResponse[]; + outputTokens?: number; + reasoningTokens?: number; + recordCount?: number; + totalTokens?: number; + usageDate?: string; +} + +export interface UsageLedgerListResponseDoc { + data?: { + results?: UsageLedgerResponse[]; + total?: number; + }; + errorMsg?: string; +} + +export interface UsageLedgerResponse { + cacheWrite1hTokens?: number; + cacheWrite5mTokens?: number; + billedCurrency?: string; + billedNanousd?: number; + billedUSD?: number; + billingAt?: string; + cacheReadTokens?: number; + cacheWriteTokens?: number; + callCount?: number; + conversationID?: number; + createdAt?: string; + durationSeconds?: number; + id?: number; + inputTokens?: number; + isFreeModel?: boolean; + latencyMS?: number; + modelIcon?: string; + modelVendor?: string; + outputTokens?: number; + platformModelName?: string; + pricingSnapshotJSON?: string; + providerProtocol?: string; + reasoningTokens?: number; + routedBindingCode?: string; + serviceTier?: string; + updatedAt?: string; + upstreamModelName?: string; + usageDate?: string; + usageSpeed?: string; + userID?: number; +} + +export interface UsageLogListResponseDoc { + data?: { + results?: UsageLogResponse[]; + total?: number; + }; + errorMsg?: string; +} + +export interface UsageLogResponse { + cacheWrite1hTokens?: number; + cacheWrite5mTokens?: number; + billedCurrency?: string; + billedNanousd?: number; + billedUSD?: number; + billingAt?: string; + cacheReadTokens?: number; + cacheWriteTokens?: number; + callCount?: number; + conversationID?: number; + createdAt?: string; + durationSeconds?: number; + id?: number; + inputTokens?: number; + isFreeModel?: boolean; + latencyMS?: number; + outputTokens?: number; + platformModelName?: string; + pricingSnapshotJSON?: string; + providerProtocol?: string; + reasoningTokens?: number; + routedBindingCode?: string; + serviceTier?: string; + updatedAt?: string; + upstreamModelName?: string; + upstreamName?: string; + usageDate?: string; + usageSpeed?: string; + userDisplayName?: string; + userID?: number; + userLabel?: string; + username?: string; +} + +export interface UsageMonthlyListResponseDoc { + data?: UsageMonthlyResponse[]; + errorMsg?: string; +} + +export interface UsageMonthlyResponse { + avgLatencyMS?: number; + billedNanousd?: number; + billedUSD?: number; + cacheReadTokens?: number; + cacheWriteTokens?: number; + callCount?: number; + durationSeconds?: number; + inputTokens?: number; + monthStartAt?: string; + outputTokens?: number; + reasoningTokens?: number; + recordCount?: number; + totalTokens?: number; +} + +export interface UsageStatisticsMetricsResponse { + avgLatencyMS?: number; + billedNanousd?: number; + billedUSD?: number; + cacheReadTokens?: number; + cacheWriteTokens?: number; + callCount?: number; + inputTokens?: number; + outputTokens?: number; + reasoningTokens?: number; + recordCount?: number; + totalTokens?: number; +} + +export interface UsageStatisticsModelRankResponse { + avgLatencyMS?: number; + billedNanousd?: number; + billedUSD?: number; + cacheReadTokens?: number; + cacheWriteTokens?: number; + callCount?: number; + inputTokens?: number; + outputTokens?: number; + platformModelName?: string; + reasoningTokens?: number; + recordCount?: number; + totalTokens?: number; + trend?: UsageStatisticsTrendResponse[]; +} + +export interface UsageStatisticsResponse { + range?: { + endDate?: string; + granularity?: string; + startDate?: string; + }; + section?: string; + topModels?: UsageStatisticsModelRankResponse[]; + topUsers?: UsageStatisticsUserRankResponse[]; + totals?: UsageStatisticsMetricsResponse; + trend?: UsageStatisticsTrendResponse[]; +} + +export interface UsageStatisticsResponseDoc { + data?: UsageStatisticsResponse; + errorMsg?: string; +} + +export interface UsageStatisticsTrendResponse { + avgLatencyMS?: number; + billedNanousd?: number; + billedUSD?: number; + cacheReadTokens?: number; + cacheWriteTokens?: number; + callCount?: number; + inputTokens?: number; + outputTokens?: number; + periodStart?: string; + reasoningTokens?: number; + recordCount?: number; + totalTokens?: number; +} + +export interface UsageStatisticsUserRankResponse { + avgLatencyMS?: number; + billedNanousd?: number; + billedUSD?: number; + cacheReadTokens?: number; + cacheWriteTokens?: number; + callCount?: number; + inputTokens?: number; + outputTokens?: number; + reasoningTokens?: number; + recordCount?: number; + totalTokens?: number; + trend?: UsageStatisticsTrendResponse[]; + userDisplayName?: string; + userID?: number; + userLabel?: string; + username?: string; +} + +export interface UserAuthEventListResponseDoc { + data?: { + results?: AuthEventResponse[]; + total?: number; + }; + errorMsg?: string; +} + +export interface UserDataResponse { + user?: AdminUserResponse; +} + +export interface UserListResponseDoc { + data?: { + results?: AdminUserResponse[]; + total?: number; + }; + errorMsg?: string; +} + +export interface UserMemoryListResponseDoc { + data?: UserMemoryResponse[]; + errorMsg?: string; +} + +export interface UserMemoryResponse { + createdAt?: string; + id?: number; + memoryKey?: string; + scope?: string; + updatedAt?: string; + updatedBy?: string; + userID?: number; + value?: string; +} + +export interface UserSettingsPatchSettingsRequest { + settings: Record; +} + +export interface UserSettingsResponse { + settings?: Record; +} + +export interface UserSettingsResponseDoc { + data?: UserSettingsResponse; + errorMsg?: string; +} + +export interface WritePromptPresetRequest { + /** @maxLength 10000 */ + content: string; + /** @maxLength 256 */ + description?: string; + enabled?: boolean; + sortOrder?: number; + /** @maxLength 64 */ + title: string; + /** @maxLength 64 */ + trigger: string; +} + +export interface WriteSkillRequest { + /** @maxLength 256 */ + description?: string; + enabled?: boolean; + /** @maxLength 10000 */ + markdown: string; + sortOrder?: number; + /** @maxLength 64 */ + title: string; + /** @maxLength 64 */ + trigger: string; +} + +export namespace Admin { + /** + * @description 分页查询站点公告 + * @tags admin-announcements + * @name AnnouncementsList + * @summary 管理员查询公告 + * @request GET:/admin/announcements + * @secure + */ + export namespace AnnouncementsList { + export type RequestParams = {}; + export type RequestQuery = { + /** 页码 */ + page?: number; + /** 每页数量 */ + page_size?: number; + /** 是否置顶 */ + pinned?: boolean; + /** 搜索关键词 */ + q?: string; + /** 状态:active/inactive */ + status?: string; + /** 类型:critical/warning/info/normal/general */ + type?: string; + }; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = AdminAnnouncementListResponseDoc; + } + + /** + * @description 创建一条 Markdown 站点公告 + * @tags admin-announcements + * @name AnnouncementsCreate + * @summary 管理员创建公告 + * @request POST:/admin/announcements + * @secure + */ + export namespace AnnouncementsCreate { + export type RequestParams = {}; + export type RequestQuery = {}; + export type RequestBody = CreateAnnouncementRequest; + export type RequestHeaders = {}; + export type ResponseBody = AnnouncementResponseDoc; + } + + /** + * @description 软删除公告 + * @tags admin-announcements + * @name AnnouncementsDelete + * @summary 管理员删除公告 + * @request DELETE:/admin/announcements/{id} + * @secure + */ + export namespace AnnouncementsDelete { + export type RequestParams = { + /** 公告ID */ + id: number; + }; + export type RequestQuery = {}; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = AnnouncementDeleteResponseDoc; + } + + /** + * @description 更新公告标题、内容、状态、优先级和有效期 + * @tags admin-announcements + * @name AnnouncementsPartialUpdate + * @summary 管理员更新公告 + * @request PATCH:/admin/announcements/{id} + * @secure + */ + export namespace AnnouncementsPartialUpdate { + export type RequestParams = { + /** 公告ID */ + id: number; + }; + export type RequestQuery = {}; + export type RequestBody = PatchAnnouncementRequestDoc; + export type RequestHeaders = {}; + export type ResponseBody = AnnouncementResponseDoc; + } + + /** + * @description 管理员分页查看全量可追溯审计日志 + * @tags admin + * @name AuditLogsList + * @summary 管理员查询审计日志 + * @request GET:/admin/audit-logs + * @secure + */ + export namespace AuditLogsList { + export type RequestParams = {}; + export type RequestQuery = { + /** 动作 */ + action?: string; + /** 操作人用户ID */ + actor_user_id?: number; + /** 创建时间起点(RFC3339) */ + created_from?: string; + /** 创建时间终点(RFC3339) */ + created_to?: string; + /** 页码 */ + page?: number; + /** 每页数量 */ + page_size?: number; + /** 搜索关键词 */ + query?: string; + /** 资源类型 */ + resource?: string; + /** 排序方式 */ + sort?: string; + }; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = AuditLogListResponseDoc; + } + + /** + * @description 设置指定用户的按量计费余额,金额单位为美元 + * @tags admin-billing + * @name BillingAccountsBalancePartialUpdate + * @summary 管理员设置用户按量余额 + * @request PATCH:/admin/billing/accounts/{user_id}/balance + * @secure + */ + export namespace BillingAccountsBalancePartialUpdate { + export type RequestParams = { + /** 用户ID */ + userId: number; + }; + export type RequestQuery = {}; + export type RequestBody = UpdateBillingAccountBalanceRequest; + export type RequestHeaders = {}; + export type ResponseBody = BillingAccountResponseDoc; + } + + /** + * @description 查询当前全局计费模式 + * @tags admin-billing + * @name BillingConfigList + * @summary 管理员查询计费配置 + * @request GET:/admin/billing/config + * @secure + */ + export namespace BillingConfigList { + export type RequestParams = {}; + export type RequestQuery = {}; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = BillingConfigResponseDoc; + } + + /** + * @description 更新当前全局计费模式 + * @tags admin-billing + * @name BillingConfigPartialUpdate + * @summary 管理员更新计费配置 + * @request PATCH:/admin/billing/config + * @secure + */ + export namespace BillingConfigPartialUpdate { + export type RequestParams = {}; + export type RequestQuery = {}; + export type RequestBody = BillingConfigRequest; + export type RequestHeaders = {}; + export type ResponseBody = BillingConfigResponseDoc; + } + + /** + * @description 按平台模型名查询模型按量计费配置 + * @tags admin-billing + * @name BillingModelPricesList + * @summary 管理员查询模型按量单价 + * @request GET:/admin/billing/model-prices + * @secure + */ + export namespace BillingModelPricesList { + export type RequestParams = {}; + export type RequestQuery = { + /** 页码 */ + page?: number; + /** 每页数量 */ + page_size?: number; + /** 搜索关键词 */ + q?: string; + }; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = ModelPricingListResponseDoc; + } + + /** + * @description 按平台模型名创建或更新模型按量计费配置,金额单位为美元 + * @tags admin-billing + * @name BillingModelPricesUpdate + * @summary 管理员保存模型按量单价 + * @request PUT:/admin/billing/model-prices + * @secure + */ + export namespace BillingModelPricesUpdate { + export type RequestParams = {}; + export type RequestQuery = {}; + export type RequestBody = UpsertModelPricingRequest; + export type RequestHeaders = {}; + export type ResponseBody = ModelPricingDataResponse; + } + + /** + * @description 从 storage 缓存读取 OpenRouter 模型定价;缓存不存在、过期或 refresh=true 时由后端刷新。 + * @tags admin-billing + * @name BillingOfficialPricingOpenrouterList + * @summary 管理员获取 OpenRouter 官方模型定价 + * @request GET:/admin/billing/official-pricing/openrouter + * @secure + */ + export namespace BillingOfficialPricingOpenrouterList { + export type RequestParams = {}; + export type RequestQuery = { + /** 强制刷新缓存 */ + refresh?: boolean; + }; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = OpenRouterOfficialPricingResponseDoc; + } + + /** + * @description 更新周期套餐基础配置与默认价格 + * @tags admin-billing + * @name BillingPlansPartialUpdate + * @summary 管理员更新周期套餐 + * @request PATCH:/admin/billing/plans/{id} + * @secure + */ + export namespace BillingPlansPartialUpdate { + export type RequestParams = { + /** 套餐ID */ + id: number; + }; + export type RequestQuery = {}; + export type RequestBody = UpdateBillingPlanRequest; + export type RequestHeaders = {}; + export type ResponseBody = BillingPlanResponseDoc; + } + + /** + * @description 分页查询计费兑换码配置 + * @tags admin-billing + * @name BillingRedemptionCodesList + * @summary 管理员查询兑换码 + * @request GET:/admin/billing/redemption-codes + * @secure + */ + export namespace BillingRedemptionCodesList { + export type RequestParams = {}; + export type RequestQuery = { + /** 可兑换性:available/expired/exhausted */ + availability?: string; + /** 计费模式:usage/period */ + mode?: string; + /** 页码 */ + page?: number; + /** 每页数量 */ + page_size?: number; + /** 搜索关键词 */ + q?: string; + /** 状态:active/inactive */ + status?: string; + }; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = RedemptionCodeListResponseDoc; + } + + /** + * @description 创建手动兑换码或随机兑换码,明文只在创建响应中返回 + * @tags admin-billing + * @name BillingRedemptionCodesCreate + * @summary 管理员创建兑换码 + * @request POST:/admin/billing/redemption-codes + * @secure + */ + export namespace BillingRedemptionCodesCreate { + export type RequestParams = {}; + export type RequestQuery = {}; + export type RequestBody = CreateRedemptionCodeRequest; + export type RequestHeaders = {}; + export type ResponseBody = RedemptionCodeCreateResponseDoc; + } + + /** + * @description 批量软删除兑换码,历史兑换记录保留,删除后不可再兑换 + * @tags admin-billing + * @name BillingRedemptionCodesBatchDeleteCreate + * @summary 管理员批量删除兑换码 + * @request POST:/admin/billing/redemption-codes/batch-delete + * @secure + */ + export namespace BillingRedemptionCodesBatchDeleteCreate { + export type RequestParams = {}; + export type RequestQuery = {}; + export type RequestBody = BatchDeleteRedemptionCodeRequest; + export type RequestHeaders = {}; + export type ResponseBody = BatchDeleteRedemptionCodeResponseDoc; + } + + /** + * @description 软删除兑换码,历史兑换记录保留,删除后不可再兑换 + * @tags admin-billing + * @name BillingRedemptionCodesDelete + * @summary 管理员删除兑换码 + * @request DELETE:/admin/billing/redemption-codes/{id} + * @secure + */ + export namespace BillingRedemptionCodesDelete { + export type RequestParams = { + /** 兑换码ID */ + id: number; + }; + export type RequestQuery = {}; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = RedemptionCodeDeleteResponseDoc; + } + + /** + * @description 更新兑换码状态、次数限制、过期时间和说明,不允许修改奖励本身 + * @tags admin-billing + * @name BillingRedemptionCodesPartialUpdate + * @summary 管理员更新兑换码 + * @request PATCH:/admin/billing/redemption-codes/{id} + * @secure + */ + export namespace BillingRedemptionCodesPartialUpdate { + export type RequestParams = { + /** 兑换码ID */ + id: number; + }; + export type RequestQuery = {}; + export type RequestBody = PatchRedemptionCodeRequestDoc; + export type RequestHeaders = {}; + export type ResponseBody = RedemptionCodeResponseDoc; + } + + /** + * @description 解密单个兑换码明文用于复制;列表接口不会返回明文 + * @tags admin-billing + * @name BillingRedemptionCodesCodeList + * @summary 管理员按需复制兑换码明文 + * @request GET:/admin/billing/redemption-codes/{id}/code + * @secure + */ + export namespace BillingRedemptionCodesCodeList { + export type RequestParams = { + /** 兑换码ID */ + id: number; + }; + export type RequestQuery = {}; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = RedemptionCodeResponseDoc; + } + + /** + * @description 管理员分页查看全量模型调用与计费用量账本 + * @tags admin + * @name CallLogsList + * @summary 管理员查询模型调用日志 + * @request GET:/admin/call-logs + * @secure + */ + export namespace CallLogsList { + export type RequestParams = {}; + export type RequestQuery = { + /** 计费模式筛选:free/token/call/duration/tiered */ + billing_mode?: string; + /** 创建时间起点(RFC3339) */ + created_from?: string; + /** 创建时间终点(RFC3339) */ + created_to?: string; + /** 页码 */ + page?: number; + /** 每页数量 */ + page_size?: number; + /** 平台模型名筛选 */ + platform_model_name?: string; + /** 搜索模型、上游、绑定编码、协议 */ + query?: string; + /** 排序方式 */ + sort?: string; + /** 调用人用户ID */ + user_id?: number; + }; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = UsageLogListResponseDoc; + } + + /** + * @description 管理员分页查看对话运行轨迹、工具、MCP 与处理事件 + * @tags admin + * @name ConversationEventsList + * @summary 管理员查询对话事件 + * @request GET:/admin/conversation-events + * @secure + */ + export namespace ConversationEventsList { + export type RequestParams = {}; + export type RequestQuery = { + /** 会话ID */ + conversation_id?: number; + /** 创建时间起点(RFC3339) */ + created_from?: string; + /** 创建时间终点(RFC3339) */ + created_to?: string; + /** 事件范围(trace_block/trace_event/tool_call) */ + event_scope?: string; + /** 事件类型 */ + event_type?: string; + /** 页码 */ + page?: number; + /** 每页数量 */ + page_size?: number; + /** 搜索运行ID、事件、阶段、标题、工具名 */ + query?: string; + /** 排序方式 */ + sort?: string; + /** 事件状态 */ + status?: string; + /** 用户ID */ + user_id?: number; + }; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = ConversationEventListResponseDoc; + } + + /** + * @description 流式导出全量会话及消息为 NDJSON 文件,最后一行为 export_manifest 元数据 + * @tags admin + * @name ConversationsExportList + * @summary 管理员导出全量对话数据 + * @request GET:/admin/conversations/export + * @secure + */ + export namespace ConversationsExportList { + export type RequestParams = {}; + export type RequestQuery = {}; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = string; + } + + /** + * @description 管理员分页查询平台模型目录,可按 only_active 过滤 + * @tags llm + * @name LlmModelsList + * @summary 管理员查询模型目录 + * @request GET:/admin/llm/models + * @secure + */ + export namespace LlmModelsList { + export type RequestParams = {}; + export type RequestQuery = { + /** 仅查询启用模型 */ + only_active?: boolean; + /** 仅查询公开且可路由模型 */ + only_available?: boolean; + /** 页码 */ + page?: number; + /** 每页数量 */ + page_size?: number; + /** 接口协议 */ + protocol?: string; + /** 搜索关键词 */ + q?: string; + /** 排序:sortOrder_asc/updated_desc/id_desc/platformModelName_asc/sourceCount_desc */ + sort?: string; + /** 状态:active/inactive */ + status?: string; + /** 上游 ID */ + upstream?: number; + /** 模型厂商 */ + vendor?: string; + }; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = ModelListResponseDoc; + } + + /** + * @description 管理员新增平台模型目录项 + * @tags llm + * @name LlmModelsCreate + * @summary 管理员创建模型 + * @request POST:/admin/llm/models + * @secure + */ + export namespace LlmModelsCreate { + export type RequestParams = {}; + export type RequestQuery = {}; + export type RequestBody = CreateModelRequest; + export type RequestHeaders = {}; + export type ResponseBody = CreateModelResponseDoc; + } + + /** + * @description 管理员批量删除模型目录及其关联路由绑定,保留上游 + * @tags llm + * @name LlmModelsBatchDeleteCreate + * @summary 管理员批量删除模型 + * @request POST:/admin/llm/models/batch-delete + * @secure + */ + export namespace LlmModelsBatchDeleteCreate { + export type RequestParams = {}; + export type RequestQuery = {}; + export type RequestBody = BatchDeleteRequest; + export type RequestHeaders = {}; + export type ResponseBody = BatchDeleteResponseDoc; + } + + /** + * @description 管理员调整平台模型在用户侧模型选择器中的展示顺序 + * @tags llm + * @name LlmModelsOrderCreate + * @summary 管理员调整模型顺序 + * @request POST:/admin/llm/models/order + * @secure + */ + export namespace LlmModelsOrderCreate { + export type RequestParams = {}; + export type RequestQuery = {}; + export type RequestBody = ReorderModelsRequest; + export type RequestHeaders = {}; + export type ResponseBody = SuccessDoc; + } + + /** + * @description 管理员删除平台模型目录项及其关联路由绑定 + * @tags llm + * @name LlmModelsDelete + * @summary 管理员删除模型 + * @request DELETE:/admin/llm/models/{id} + * @secure + */ + export namespace LlmModelsDelete { + export type RequestParams = { + /** 模型ID */ + id: number; + }; + export type RequestQuery = {}; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = SuccessDoc; + } + + /** + * @description 管理员更新平台模型目录项 + * @tags llm + * @name LlmModelsPartialUpdate + * @summary 管理员更新模型 + * @request PATCH:/admin/llm/models/{id} + * @secure + */ + export namespace LlmModelsPartialUpdate { + export type RequestParams = { + /** 模型ID */ + id: number; + }; + export type RequestQuery = {}; + export type RequestBody = UpdateModelRequest; + export type RequestHeaders = {}; + export type ResponseBody = UpdateModelResponseDoc; + } + + /** + * @description 管理员分页查询指定模型在各上游上的路由来源 + * @tags llm + * @name LlmModelsSourcesList + * @summary 管理员查询模型上游来源 + * @request GET:/admin/llm/models/{id}/sources + * @secure + */ + export namespace LlmModelsSourcesList { + export type RequestParams = { + /** 模型ID */ + id: number; + }; + export type RequestQuery = { + /** 页码 */ + page?: number; + /** 每页数量 */ + page_size?: number; + }; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = ModelUpstreamSourceListResponseDoc; + } + + /** + * @description 管理员将当前平台模型绑定到一个已存在的上游模型 + * @tags llm + * @name LlmModelsSourcesCreate + * @summary 管理员绑定模型上游来源 + * @request POST:/admin/llm/models/{id}/sources + * @secure + */ + export namespace LlmModelsSourcesCreate { + export type RequestParams = { + /** 模型ID */ + id: number; + }; + export type RequestQuery = {}; + export type RequestBody = BindModelUpstreamSourceRequest; + export type RequestHeaders = {}; + export type ResponseBody = ModelUpstreamSourceDataResponse; + } + + /** + * @description 管理员快速启停指定模型在某上游上的来源 + * @tags llm + * @name LlmModelsSourcesPartialUpdate + * @summary 管理员更新模型上游来源 + * @request PATCH:/admin/llm/models/{id}/sources/{route_id} + * @secure + */ + export namespace LlmModelsSourcesPartialUpdate { + export type RequestParams = { + /** 模型ID */ + id: number; + /** 路由绑定ID */ + routeId: number; + }; + export type RequestQuery = {}; + export type RequestBody = UpdateModelUpstreamSourceRequest; + export type RequestHeaders = {}; + export type ResponseBody = UpdateModelUpstreamSourceResponseDoc; + } + + /** + * @description 按平台模型当前活跃路由选择一个来源执行轻量连通性测试;返回结果内的调试信息已脱敏且不包含 Base URL 或密钥 + * @tags llm + * @name LlmModelsTestCreate + * @summary 管理员测试平台模型路由 + * @request POST:/admin/llm/models/{id}/test + * @secure + */ + export namespace LlmModelsTestCreate { + export type RequestParams = { + /** 模型ID */ + id: number; + }; + export type RequestQuery = {}; + export type RequestBody = ModelProbeRequest; + export type RequestHeaders = {}; + export type ResponseBody = ModelProbeResponseDoc; + } + + /** + * @description 按平台模型当前全部匹配的活跃路由并发执行轻量连通性测试;返回结果内的调试信息已脱敏且不包含 Base URL 或密钥 + * @tags llm + * @name LlmModelsTestAllCreate + * @summary 管理员批量测试平台模型全部路由 + * @request POST:/admin/llm/models/{id}/test-all + * @secure + */ + export namespace LlmModelsTestAllCreate { + export type RequestParams = { + /** 模型ID */ + id: number; + }; + export type RequestQuery = {}; + export type RequestBody = ModelProbeRequest; + export type RequestHeaders = {}; + export type ResponseBody = ModelProbeBatchResponseDoc; + } + + /** + * @description 管理员查询 LLM 全局设置列表 + * @tags llm + * @name LlmSettingsList + * @summary 管理员查询全局设置 + * @request GET:/admin/llm/settings + * @secure + */ + export namespace LlmSettingsList { + export type RequestParams = {}; + export type RequestQuery = {}; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = SuccessDoc; + } + + /** + * @description 管理员更新指定 LLM 全局设置项 + * @tags llm + * @name LlmSettingsPartialUpdate + * @summary 管理员更新全局设置 + * @request PATCH:/admin/llm/settings/{key} + * @secure + */ + export namespace LlmSettingsPartialUpdate { + export type RequestParams = { + /** 设置键 */ + key: string; + }; + export type RequestQuery = {}; + export type RequestBody = Record; + export type RequestHeaders = {}; + export type ResponseBody = SuccessDoc; + } + + /** + * @description 管理员分页查询 LLM 上游配置 + * @tags llm + * @name LlmUpstreamsList + * @summary 管理员查询上游列表 + * @request GET:/admin/llm/upstreams + * @secure + */ + export namespace LlmUpstreamsList { + export type RequestParams = {}; + export type RequestQuery = { + /** 兼容类型 */ + compatible?: string; + /** 页码 */ + page?: number; + /** 每页数量 */ + page_size?: number; + /** 搜索关键词 */ + q?: string; + /** 排序:id_desc/id_asc/name_asc/updated_desc */ + sort?: string; + /** 状态:active/inactive/circuit */ + status?: string; + }; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = UpstreamListResponseDoc; + } + + /** + * @description 管理员新增上游来源配置,内部标识自动分配 + * @tags llm + * @name LlmUpstreamsCreate + * @summary 管理员创建上游 + * @request POST:/admin/llm/upstreams + * @secure + */ + export namespace LlmUpstreamsCreate { + export type RequestParams = {}; + export type RequestQuery = {}; + export type RequestBody = CreateUpstreamRequest; + export type RequestHeaders = {}; + export type ResponseBody = CreateUpstreamResponseDoc; + } + + /** + * @description 管理员批量删除上游及其关联路由绑定,保留模型目录 + * @tags llm + * @name LlmUpstreamsBatchDeleteCreate + * @summary 管理员批量删除上游 + * @request POST:/admin/llm/upstreams/batch-delete + * @secure + */ + export namespace LlmUpstreamsBatchDeleteCreate { + export type RequestParams = {}; + export type RequestQuery = {}; + export type RequestBody = BatchDeleteRequest; + export type RequestHeaders = {}; + export type ResponseBody = BatchDeleteResponseDoc; + } + + /** + * @description 管理员删除上游配置及其关联路由绑定 + * @tags llm + * @name LlmUpstreamsDelete + * @summary 管理员删除上游 + * @request DELETE:/admin/llm/upstreams/{id} + * @secure + */ + export namespace LlmUpstreamsDelete { + export type RequestParams = { + /** 上游ID */ + id: number; + }; + export type RequestQuery = {}; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = SuccessDoc; + } + + /** + * @description 管理员更新上游配置(地址、密钥、状态等) + * @tags llm + * @name LlmUpstreamsPartialUpdate + * @summary 管理员更新上游 + * @request PATCH:/admin/llm/upstreams/{id} + * @secure + */ + export namespace LlmUpstreamsPartialUpdate { + export type RequestParams = { + /** 上游ID */ + id: number; + }; + export type RequestQuery = {}; + export type RequestBody = UpdateUpstreamRequest; + export type RequestHeaders = {}; + export type ResponseBody = UpdateUpstreamResponseDoc; + } + + /** + * @description 管理员手动开启上游熔断状态 + * @tags llm + * @name LlmUpstreamsCircuitOpenCreate + * @summary 管理员手动触发上游熔断 + * @request POST:/admin/llm/upstreams/{id}/circuit/open + * @secure + */ + export namespace LlmUpstreamsCircuitOpenCreate { + export type RequestParams = { + /** 上游ID */ + id: number; + }; + export type RequestQuery = {}; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = SuccessDoc; + } + + /** + * @description 管理员手动清空上游失败计数并关闭熔断状态 + * @tags llm + * @name LlmUpstreamsCircuitResetCreate + * @summary 管理员重置上游熔断 + * @request POST:/admin/llm/upstreams/{id}/circuit/reset + * @secure + */ + export namespace LlmUpstreamsCircuitResetCreate { + export type RequestParams = { + /** 上游ID */ + id: number; + }; + export type RequestQuery = {}; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = ResetUpstreamCircuitResponseDoc; + } + + /** + * @description 管理员分页查询指定上游的路由绑定列表 + * @tags llm + * @name LlmUpstreamsModelsList + * @summary 管理员查询上游模型路由绑定 + * @request GET:/admin/llm/upstreams/{id}/models + * @secure + */ + export namespace LlmUpstreamsModelsList { + export type RequestParams = { + /** 上游ID */ + id: number; + }; + export type RequestQuery = { + /** 页码 */ + page?: number; + /** 每页数量 */ + page_size?: number; + /** 接口协议 */ + protocol?: string; + /** 搜索关键词 */ + q?: string; + /** 路由状态:bound/active/inactive */ + route_status?: string; + /** 排序:upstream_asc/upstream_desc/platform_asc/platform_desc/status_asc/protocol_asc */ + sort?: string; + /** 上游模型状态:active/inactive */ + upstream_status?: string; + }; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = UpstreamModelListResponseDoc; + } + + /** + * @description 管理员配置平台模型到指定上游真实模型的路由绑定与覆盖请求头 + * @tags llm + * @name LlmUpstreamsModelsCreate + * @summary 管理员新增或更新上游模型路由绑定 + * @request POST:/admin/llm/upstreams/{id}/models + * @secure + */ + export namespace LlmUpstreamsModelsCreate { + export type RequestParams = { + /** 上游ID */ + id: number; + }; + export type RequestQuery = {}; + export type RequestBody = UpsertUpstreamModelRequest; + export type RequestHeaders = {}; + export type ResponseBody = UpsertUpstreamModelResponseDoc; + } + + /** + * @description 管理员批量删除指定上游下的路由绑定,保留模型目录 + * @tags llm + * @name LlmUpstreamsModelsBatchDeleteCreate + * @summary 管理员批量删除上游模型路由绑定 + * @request POST:/admin/llm/upstreams/{id}/models/batch-delete + * @secure + */ + export namespace LlmUpstreamsModelsBatchDeleteCreate { + export type RequestParams = { + /** 上游ID */ + id: number; + }; + export type RequestQuery = {}; + export type RequestBody = BatchDeleteRequest; + export type RequestHeaders = {}; + export type ResponseBody = BatchDeleteResponseDoc; + } + + /** + * @description 选择性导入上游模型,支持绑定平台模型与自定义条目 + * @tags llm + * @name LlmUpstreamsModelsImportCreate + * @summary 管理员批量导入上游模型 + * @request POST:/admin/llm/upstreams/{id}/models/import + * @secure + */ + export namespace LlmUpstreamsModelsImportCreate { + export type RequestParams = { + /** 上游ID */ + id: number; + }; + export type RequestQuery = {}; + export type RequestBody = ImportUpstreamModelsRequest; + export type RequestHeaders = {}; + export type ResponseBody = ImportUpstreamModelsResponseDoc; + } + + /** + * @description 调用上游 models 接口,仅返回可导入预览,不直接落库 + * @tags llm + * @name LlmUpstreamsModelsRemoteList + * @summary 管理员预览上游远程模型 + * @request GET:/admin/llm/upstreams/{id}/models/remote + * @secure + */ + export namespace LlmUpstreamsModelsRemoteList { + export type RequestParams = { + /** 上游ID */ + id: number; + }; + export type RequestQuery = {}; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = UpstreamRemoteModelsResponseDoc; + } + + /** + * @description 调用上游 models 接口写入上游真实模型清单,不自动绑定平台模型 + * @tags llm + * @name LlmUpstreamsModelsSyncCreate + * @summary 管理员同步上游模型目录 + * @request POST:/admin/llm/upstreams/{id}/models/sync + * @secure + */ + export namespace LlmUpstreamsModelsSyncCreate { + export type RequestParams = { + /** 上游ID */ + id: number; + }; + export type RequestQuery = {}; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = SyncUpstreamModelsResponseDoc; + } + + /** + * @description 管理员删除指定上游的路由绑定 + * @tags llm + * @name LlmUpstreamsModelsDelete + * @summary 管理员删除上游模型路由绑定 + * @request DELETE:/admin/llm/upstreams/{id}/models/{route_id} + * @secure + */ + export namespace LlmUpstreamsModelsDelete { + export type RequestParams = { + /** 上游ID */ + id: number; + /** 路由绑定ID */ + routeId: number; + }; + export type RequestQuery = {}; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = SuccessDoc; + } + + /** + * @description 管理员手动开启上游模型路由绑定熔断状态 + * @tags llm + * @name LlmUpstreamsModelsCircuitOpenCreate + * @summary 管理员手动触发上游模型路由熔断 + * @request POST:/admin/llm/upstreams/{id}/models/{route_id}/circuit/open + * @secure + */ + export namespace LlmUpstreamsModelsCircuitOpenCreate { + export type RequestParams = { + /** 上游ID */ + id: number; + /** 路由绑定ID */ + routeId: number; + }; + export type RequestQuery = {}; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = SuccessDoc; + } + + /** + * @description 管理员手动清空上游模型路由绑定失败计数并关闭熔断状态 + * @tags llm + * @name LlmUpstreamsModelsCircuitResetCreate + * @summary 管理员重置上游模型路由熔断 + * @request POST:/admin/llm/upstreams/{id}/models/{route_id}/circuit/reset + * @secure + */ + export namespace LlmUpstreamsModelsCircuitResetCreate { + export type RequestParams = { + /** 上游ID */ + id: number; + /** 路由绑定ID */ + routeId: number; + }; + export type RequestQuery = {}; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = ResetUpstreamCircuitResponseDoc; + } + + /** + * @description 管理员停用该路由绑定,后续路由不会选中 + * @tags llm + * @name LlmUpstreamsModelsDisablePartialUpdate + * @summary 管理员停用上游模型路由绑定 + * @request PATCH:/admin/llm/upstreams/{id}/models/{route_id}/disable + * @secure + */ + export namespace LlmUpstreamsModelsDisablePartialUpdate { + export type RequestParams = { + /** 上游ID */ + id: number; + /** 路由绑定ID */ + routeId: number; + }; + export type RequestQuery = {}; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = SuccessDoc; + } + + /** + * @description 管理员启用该路由绑定,使该上游模型重新参与路由 + * @tags llm + * @name LlmUpstreamsModelsEnablePartialUpdate + * @summary 管理员启用上游模型路由绑定 + * @request PATCH:/admin/llm/upstreams/{id}/models/{route_id}/enable + * @secure + */ + export namespace LlmUpstreamsModelsEnablePartialUpdate { + export type RequestParams = { + /** 上游ID */ + id: number; + /** 路由绑定ID */ + routeId: number; + }; + export type RequestQuery = {}; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = SuccessDoc; + } + + /** + * @description 使用指定路由绑定的当前上游配置执行一次轻量连通性测试;返回结果内的调试信息已脱敏且不包含 Base URL 或密钥 + * @tags llm + * @name LlmUpstreamsModelsTestCreate + * @summary 管理员测试上游模型路由绑定 + * @request POST:/admin/llm/upstreams/{id}/models/{route_id}/test + * @secure + */ + export namespace LlmUpstreamsModelsTestCreate { + export type RequestParams = { + /** 上游ID */ + id: number; + /** 路由绑定ID */ + routeId: number; + }; + export type RequestQuery = {}; + export type RequestBody = ModelProbeRequest; + export type RequestHeaders = {}; + export type ResponseBody = ModelProbeResponseDoc; + } + + /** + * @description 按日志类型物理删除指定时间点之前的日志;操作不可恢复 + * @tags admin + * @name LogsCleanupCreate + * @summary 管理员清理日志 + * @request POST:/admin/logs/cleanup + * @secure + */ + export namespace LogsCleanupCreate { + export type RequestParams = {}; + export type RequestQuery = {}; + export type RequestBody = CleanupLogsRequest; + export type RequestHeaders = {}; + export type ResponseBody = CleanupLogsResponseDoc; + } + + /** + * @description 返回平台模型的手动权限组与动态规则命中的有效权限组 + * @tags admin + * @name ModelsPermissionGroupsList + * @summary 管理员列出模型权限组 + * @request GET:/admin/models/{modelID}/permission-groups + * @secure + */ + export namespace ModelsPermissionGroupsList { + export type RequestParams = { + /** 平台模型ID */ + modelId: number; + }; + export type RequestQuery = {}; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = ModelPermissionGroupsResponseDoc; + } + + /** + * @description 全量替换平台模型的手动权限组,不影响权限组动态规则 + * @tags admin + * @name ModelsPermissionGroupsUpdate + * @summary 管理员设置模型手动权限组 + * @request PUT:/admin/models/{modelID}/permission-groups + * @secure + */ + export namespace ModelsPermissionGroupsUpdate { + export type RequestParams = { + /** 平台模型ID */ + modelId: number; + }; + export type RequestQuery = {}; + export type RequestBody = SetModelPermissionGroupsRequest; + export type RequestHeaders = {}; + export type ResponseBody = ModelPermissionGroupsResponseDoc; + } + + /** + * @description 管理员分页查看订阅和充值支付单 + * @tags admin + * @name PaymentOrdersList + * @summary 管理员查询支付订单记录 + * @request GET:/admin/payment-orders + * @secure + */ + export namespace PaymentOrdersList { + export type RequestParams = {}; + export type RequestQuery = { + /** 创建时间起点(RFC3339) */ + created_from?: string; + /** 创建时间终点(RFC3339) */ + created_to?: string; + /** 订单类型(subscription/topup) */ + order_type?: string; + /** 页码 */ + page?: number; + /** 每页数量 */ + page_size?: number; + /** 支付渠道 */ + provider?: string; + /** 搜索订单号、支付渠道、外部支付ID */ + query?: string; + /** 排序方式 */ + sort?: string; + /** 支付状态 */ + status?: string; + /** 用户ID */ + user_id?: number; + }; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = PaymentOrderListResponseDoc; + } + + /** + * @description 返回全部模型访问权限组,默认组优先 + * @tags admin + * @name PermissionGroupsList + * @summary 管理员列出权限组 + * @request GET:/admin/permission-groups + * @secure + */ + export namespace PermissionGroupsList { + export type RequestParams = {}; + export type RequestQuery = {}; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = PermissionGroupListResponseDoc; + } + + /** + * @description 创建模型访问权限组并设置计费倍率 + * @tags admin + * @name PermissionGroupsCreate + * @summary 管理员创建权限组 + * @request POST:/admin/permission-groups + * @secure + */ + export namespace PermissionGroupsCreate { + export type RequestParams = {}; + export type RequestQuery = {}; + export type RequestBody = CreatePermissionGroupRequest; + export type RequestHeaders = {}; + export type ResponseBody = PermissionGroupDataResponseDoc; + } + + /** + * @description 删除权限组及其模型、用户关联;默认组和被套餐引用的权限组不可删除 + * @tags admin + * @name PermissionGroupsDelete + * @summary 管理员删除权限组 + * @request DELETE:/admin/permission-groups/{id} + * @secure + */ + export namespace PermissionGroupsDelete { + export type RequestParams = { + /** 权限组ID */ + id: number; + }; + export type RequestQuery = {}; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = DeletePermissionGroupResponseDoc; + } + + /** + * @description 更新权限组名称、说明与计费倍率 + * @tags admin + * @name PermissionGroupsPartialUpdate + * @summary 管理员更新权限组 + * @request PATCH:/admin/permission-groups/{id} + * @secure + */ + export namespace PermissionGroupsPartialUpdate { + export type RequestParams = { + /** 权限组ID */ + id: number; + }; + export type RequestQuery = {}; + export type RequestBody = UpdatePermissionGroupRequest; + export type RequestHeaders = {}; + export type ResponseBody = PermissionGroupDataResponseDoc; + } + + /** + * @description 返回权限组授权的平台模型 ID 集合 + * @tags admin + * @name PermissionGroupsModelsList + * @summary 管理员列出权限组模型 + * @request GET:/admin/permission-groups/{id}/models + * @secure + */ + export namespace PermissionGroupsModelsList { + export type RequestParams = { + /** 权限组ID */ + id: number; + }; + export type RequestQuery = {}; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = GroupModelsResponseDoc; + } + + /** + * @description 全量替换权限组授权的平台模型 ID 集合与动态访问规则 + * @tags admin + * @name PermissionGroupsModelsUpdate + * @summary 管理员设置权限组模型 + * @request PUT:/admin/permission-groups/{id}/models + * @secure + */ + export namespace PermissionGroupsModelsUpdate { + export type RequestParams = { + /** 权限组ID */ + id: number; + }; + export type RequestQuery = {}; + export type RequestBody = SetGroupModelsRequest; + export type RequestHeaders = {}; + export type ResponseBody = GroupModelsResponseDoc; + } + + /** + * @description 返回权限组内的用户 ID 集合 + * @tags admin + * @name PermissionGroupsUsersList + * @summary 管理员列出权限组用户 + * @request GET:/admin/permission-groups/{id}/users + * @secure + */ + export namespace PermissionGroupsUsersList { + export type RequestParams = { + /** 权限组ID */ + id: number; + }; + export type RequestQuery = {}; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = GroupUsersResponseDoc; + } + + /** + * @description 全量替换权限组内的用户 ID 集合 + * @tags admin + * @name PermissionGroupsUsersUpdate + * @summary 管理员设置权限组用户 + * @request PUT:/admin/permission-groups/{id}/users + * @secure + */ + export namespace PermissionGroupsUsersUpdate { + export type RequestParams = { + /** 权限组ID */ + id: number; + }; + export type RequestQuery = {}; + export type RequestBody = SetGroupUsersRequest; + export type RequestHeaders = {}; + export type ResponseBody = GroupUsersResponseDoc; + } + + /** + * No description + * @tags admin-prompt-presets + * @name PromptPresetsList + * @summary 管理员查询内置提示词 + * @request GET:/admin/prompt-presets + * @secure + */ + export namespace PromptPresetsList { + export type RequestParams = {}; + export type RequestQuery = { + /** 是否启用 */ + enabled?: boolean; + /** 页码 */ + page?: number; + /** 每页数量 */ + page_size?: number; + /** 搜索关键词 */ + q?: string; + }; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = PromptPresetPageResponseDoc; + } + + /** + * No description + * @tags admin-prompt-presets + * @name PromptPresetsCreate + * @summary 管理员创建内置提示词 + * @request POST:/admin/prompt-presets + * @secure + */ + export namespace PromptPresetsCreate { + export type RequestParams = {}; + export type RequestQuery = {}; + export type RequestBody = WritePromptPresetRequest; + export type RequestHeaders = {}; + export type ResponseBody = PromptPresetResponseDoc; + } + + /** + * No description + * @tags admin-prompt-presets + * @name PromptPresetsDelete + * @summary 管理员删除内置提示词 + * @request DELETE:/admin/prompt-presets/{id} + * @secure + */ + export namespace PromptPresetsDelete { + export type RequestParams = { + /** 提示词ID */ + id: number; + }; + export type RequestQuery = {}; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = PromptPresetDeleteResponseDoc; + } + + /** + * No description + * @tags admin-prompt-presets + * @name PromptPresetsPartialUpdate + * @summary 管理员更新内置提示词 + * @request PATCH:/admin/prompt-presets/{id} + * @secure + */ + export namespace PromptPresetsPartialUpdate { + export type RequestParams = { + /** 提示词ID */ + id: number; + }; + export type RequestQuery = {}; + export type RequestBody = PatchPromptPresetRequest; + export type RequestHeaders = {}; + export type ResponseBody = PromptPresetResponseDoc; + } + + /** + * @description 按 namespace 分组返回全部动态配置项 + * @tags admin/settings + * @name SettingsList + * @summary 查询全部动态配置 + * @request GET:/admin/settings + * @secure + */ + export namespace SettingsList { + export type RequestParams = {}; + export type RequestQuery = {}; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = Envelope; + } + + /** + * @description 批量更新动态配置并清除缓存,下次读取自动刷新 + * @tags admin/settings + * @name SettingsPartialUpdate + * @summary 批量更新配置项 + * @request PATCH:/admin/settings + * @secure + */ + export namespace SettingsPartialUpdate { + export type RequestParams = {}; + export type RequestQuery = {}; + export type RequestBody = SettingsPatchSettingsRequest; + export type RequestHeaders = {}; + export type ResponseBody = Envelope; + } + + /** + * No description + * @tags admin/settings + * @name SettingsDoclingRuntimeList + * @summary 查询 Docling 运行状态 + * @request GET:/admin/settings/docling/runtime + * @secure + */ + export namespace SettingsDoclingRuntimeList { + export type RequestParams = {}; + export type RequestQuery = {}; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = Envelope; + } + + /** + * No description + * @tags admin/settings + * @name SettingsEmbeddingReindexCreate + * @summary 触发向量重建(重索引所有 stale/failed 文件) + * @request POST:/admin/settings/embedding/reindex + * @secure + */ + export namespace SettingsEmbeddingReindexCreate { + export type RequestParams = {}; + export type RequestQuery = {}; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = Envelope; + } + + /** + * No description + * @tags admin/settings + * @name SettingsEmbeddingRuntimeList + * @summary 查询 Embedding 服务运行状态 + * @request GET:/admin/settings/embedding/runtime + * @secure + */ + export namespace SettingsEmbeddingRuntimeList { + export type RequestParams = {}; + export type RequestQuery = {}; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = Envelope; + } + + /** + * No description + * @tags admin/settings + * @name SettingsEmbeddingStatusList + * @summary 查询向量索引健康状态 + * @request GET:/admin/settings/embedding/status + * @secure + */ + export namespace SettingsEmbeddingStatusList { + export type RequestParams = {}; + export type RequestQuery = {}; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = Envelope; + } + + /** + * No description + * @tags admin/settings + * @name SettingsMineruRuntimeList + * @summary 查询 MinerU 运行状态 + * @request GET:/admin/settings/mineru/runtime + * @secure + */ + export namespace SettingsMineruRuntimeList { + export type RequestParams = {}; + export type RequestQuery = {}; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = Envelope; + } + + /** + * No description + * @tags admin/settings + * @name SettingsRapidocrRuntimeList + * @summary 查询 RapidOCR 运行状态 + * @request GET:/admin/settings/rapidocr/runtime + * @secure + */ + export namespace SettingsRapidocrRuntimeList { + export type RequestParams = {}; + export type RequestQuery = {}; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = Envelope; + } + + /** + * No description + * @tags admin/settings + * @name SettingsRapidocrRuntimeRestartCreate + * @summary 重启托管 RapidOCR + * @request POST:/admin/settings/rapidocr/runtime/restart + * @secure + */ + export namespace SettingsRapidocrRuntimeRestartCreate { + export type RequestParams = {}; + export type RequestQuery = {}; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = Envelope; + } + + /** + * No description + * @tags admin/settings + * @name SettingsRapidocrRuntimeStartCreate + * @summary 启动托管 RapidOCR + * @request POST:/admin/settings/rapidocr/runtime/start + * @secure + */ + export namespace SettingsRapidocrRuntimeStartCreate { + export type RequestParams = {}; + export type RequestQuery = {}; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = Envelope; + } + + /** + * No description + * @tags admin/settings + * @name SettingsRapidocrRuntimeStopCreate + * @summary 停止托管 RapidOCR + * @request POST:/admin/settings/rapidocr/runtime/stop + * @secure + */ + export namespace SettingsRapidocrRuntimeStopCreate { + export type RequestParams = {}; + export type RequestQuery = {}; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = Envelope; + } + + /** + * No description + * @tags admin/settings + * @name SettingsTesseractRuntimeList + * @summary 查询 Tesseract OCR 运行状态 + * @request GET:/admin/settings/tesseract/runtime + * @secure + */ + export namespace SettingsTesseractRuntimeList { + export type RequestParams = {}; + export type RequestQuery = {}; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = Envelope; + } + + /** + * No description + * @tags admin/settings + * @name SettingsTikaRuntimeList + * @summary 查询 Tika 运行状态 + * @request GET:/admin/settings/tika/runtime + * @secure + */ + export namespace SettingsTikaRuntimeList { + export type RequestParams = {}; + export type RequestQuery = {}; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = Envelope; + } + + /** + * No description + * @tags admin/settings + * @name SettingsTikaRuntimeRestartCreate + * @summary 重启托管 Tika + * @request POST:/admin/settings/tika/runtime/restart + * @secure + */ + export namespace SettingsTikaRuntimeRestartCreate { + export type RequestParams = {}; + export type RequestQuery = {}; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = Envelope; + } + + /** + * No description + * @tags admin/settings + * @name SettingsTikaRuntimeStartCreate + * @summary 启动托管 Tika + * @request POST:/admin/settings/tika/runtime/start + * @secure + */ + export namespace SettingsTikaRuntimeStartCreate { + export type RequestParams = {}; + export type RequestQuery = {}; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = Envelope; + } + + /** + * No description + * @tags admin/settings + * @name SettingsTikaRuntimeStopCreate + * @summary 停止托管 Tika + * @request POST:/admin/settings/tika/runtime/stop + * @secure + */ + export namespace SettingsTikaRuntimeStopCreate { + export type RequestParams = {}; + export type RequestQuery = {}; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = Envelope; + } + + /** + * @description 查询指定 namespace 下的全部配置项 + * @tags admin/settings + * @name SettingsDetail + * @summary 查询指定 namespace 的配置 + * @request GET:/admin/settings/{namespace} + * @secure + */ + export namespace SettingsDetail { + export type RequestParams = { + /** 命名空间 */ + namespace: string; + }; + export type RequestQuery = {}; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = Envelope; + } + + /** + * No description + * @tags admin-skills + * @name SkillsList + * @summary 管理员查询内置技能 + * @request GET:/admin/skills + * @secure + */ + export namespace SkillsList { + export type RequestParams = {}; + export type RequestQuery = { + /** 是否启用 */ + enabled?: boolean; + /** 页码 */ + page?: number; + /** 每页数量 */ + page_size?: number; + /** 搜索关键词 */ + q?: string; + }; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = SkillPageResponseDoc; + } + + /** + * No description + * @tags admin-skills + * @name SkillsCreate + * @summary 管理员创建内置技能 + * @request POST:/admin/skills + * @secure + */ + export namespace SkillsCreate { + export type RequestParams = {}; + export type RequestQuery = {}; + export type RequestBody = WriteSkillRequest; + export type RequestHeaders = {}; + export type ResponseBody = SkillResponseDoc; + } + + /** + * No description + * @tags admin-skills + * @name SkillsDelete + * @summary 管理员删除内置技能 + * @request DELETE:/admin/skills/{id} + * @secure + */ + export namespace SkillsDelete { + export type RequestParams = { + /** 技能ID */ + id: number; + }; + export type RequestQuery = {}; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = SkillDeleteResponseDoc; + } + + /** + * No description + * @tags admin-skills + * @name SkillsPartialUpdate + * @summary 管理员更新内置技能 + * @request PATCH:/admin/skills/{id} + * @secure + */ + export namespace SkillsPartialUpdate { + export type RequestParams = { + /** 技能ID */ + id: number; + }; + export type RequestQuery = {}; + export type RequestBody = PatchSkillRequest; + export type RequestHeaders = {}; + export type ResponseBody = SkillResponseDoc; + } + + /** + * @description 管理员分页查看后台结构化系统事件 + * @tags admin + * @name SystemEventsList + * @summary 管理员查询系统事件 + * @request GET:/admin/system-events + * @secure + */ + export namespace SystemEventsList { + export type RequestParams = {}; + export type RequestQuery = { + /** 创建时间起点(RFC3339) */ + created_from?: string; + /** 创建时间终点(RFC3339) */ + created_to?: string; + /** 事件 */ + event?: string; + /** 级别 */ + level?: string; + /** 页码 */ + page?: number; + /** 每页数量 */ + page_size?: number; + /** 搜索关键词 */ + query?: string; + /** 排序方式 */ + sort?: string; + /** 来源 */ + source?: string; + }; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = SystemEventListResponseDoc; + } + + /** + * @description 管理员按日期、统计对象、平台模型和计费范围查看全局费用、Token、调用次数及排名;用户与权限组筛选互斥 + * @tags admin + * @name UsageStatisticsList + * @summary 管理员查询全局用量统计 + * @request GET:/admin/usage-statistics + * @secure + */ + export namespace UsageStatisticsList { + export type RequestParams = {}; + export type RequestQuery = { + /** 计费范围:all/free/billable */ + billing_scope?: string; + /** 结束日期(YYYY-MM-DD,包含当日) */ + end_date?: string; + /** 模型排名指标:cost/tokens/calls */ + model_rank_by?: string; + /** 权限组ID,与 user_id 互斥 */ + permission_group_id?: number; + /** 平台模型名 */ + platform_model_name?: string; + /** 返回范围:all/models/users */ + section?: string; + /** 开始日期(YYYY-MM-DD),默认近30天 */ + start_date?: string; + /** 用户ID */ + user_id?: number; + /** 用户排名指标:cost/tokens/calls */ + user_rank_by?: string; + }; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = UsageStatisticsResponseDoc; + } + + /** + * @description 管理员分页查询认证事件,支持 user_id/event_type/result 过滤 + * @tags admin + * @name UserAuthEventsList + * @summary 管理员查询用户认证事件 + * @request GET:/admin/user-auth-events + * @secure + */ + export namespace UserAuthEventsList { + export type RequestParams = {}; + export type RequestQuery = { + /** 事件类型过滤 */ + event_type?: string; + /** 页码 */ + page?: number; + /** 每页数量 */ + page_size?: number; + /** 结果过滤(success/failure/blocked) */ + result?: string; + /** 用户ID过滤 */ + user_id?: number; + }; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = UserAuthEventListResponseDoc; + } + + /** + * @description 管理员分页查看所有用户,实现账户隔离管理 + * @tags admin + * @name UsersList + * @summary 管理员查询用户 + * @request GET:/admin/users + * @secure + */ + export namespace UsersList { + export type RequestParams = {}; + export type RequestQuery = { + /** 身份源 slug 过滤 */ + identity_provider?: string; + /** 页码 */ + page?: number; + /** 每页数量 */ + page_size?: number; + /** 搜索用户名、昵称、邮箱或公开ID */ + q?: string; + /** 订阅状态过滤(active/free) */ + subscription_status?: string; + }; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = UserListResponseDoc; + } + + /** + * @description 创建普通用户账号;需要授予管理员权限时,可在账户编辑中调整角色 + * @tags admin + * @name UsersCreate + * @summary 管理员创建用户 + * @request POST:/admin/users + * @secure + */ + export namespace UsersCreate { + export type RequestParams = {}; + export type RequestQuery = {}; + export type RequestBody = CreateUserRequest; + export type RequestHeaders = {}; + export type ResponseBody = CreateUserResponseDoc; + } + + /** + * @description 从 OpenWebUI SQLite 或 PostgreSQL 数据库读取用户,按 email 去重导入;已存在用户不会修改 + * @tags admin + * @name UsersImportOpenwebuiCreate + * @summary 管理员导入 OpenWebUI 用户 + * @request POST:/admin/users/import/openwebui + * @secure + */ + export namespace UsersImportOpenwebuiCreate { + export type RequestParams = {}; + export type RequestQuery = {}; + export type RequestBody = ImportOpenWebUIUsersRequest; + export type RequestHeaders = {}; + export type ResponseBody = ImportOpenWebUIUsersResponseDoc; + } + + /** + * @description 管理员硬删除指定普通用户及其主要用户域数据 + * @tags admin + * @name UsersDelete + * @summary 管理员删除用户 + * @request DELETE:/admin/users/{id} + * @secure + */ + export namespace UsersDelete { + export type RequestParams = { + /** 用户ID */ + id: number; + }; + export type RequestQuery = {}; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = DeleteUserResponseDoc; + } + + /** + * @description 管理员统一维护角色、状态、时区等可编辑字段 + * @tags admin + * @name UsersPartialUpdate + * @summary 管理员更新用户可编辑字段 + * @request PATCH:/admin/users/{id} + * @secure + */ + export namespace UsersPartialUpdate { + export type RequestParams = { + /** 用户ID */ + id: number; + }; + export type RequestQuery = {}; + export type RequestBody = PatchUserRequest; + export type RequestHeaders = {}; + export type ResponseBody = UpdateUserStatusResponseDoc; + } + + /** + * @description 管理员重置指定用户密码并吊销其全部会话 + * @tags admin + * @name UsersResetPasswordCreate + * @summary 管理员重置用户密码 + * @request POST:/admin/users/{id}/reset-password + * @secure + */ + export namespace UsersResetPasswordCreate { + export type RequestParams = { + /** 用户ID */ + id: number; + }; + export type RequestQuery = {}; + export type RequestBody = ResetUserPasswordRequest; + export type RequestHeaders = {}; + export type ResponseBody = ResetUserPasswordResponseDoc; + } + + /** + * @description 管理员吊销指定用户全部活跃会话,用于安全治理和风险控制 + * @tags admin + * @name UsersRevokeSessionsCreate + * @summary 管理员吊销用户全部会话 + * @request POST:/admin/users/{id}/revoke-sessions + * @secure + */ + export namespace UsersRevokeSessionsCreate { + export type RequestParams = { + /** 用户ID */ + id: number; + }; + export type RequestQuery = {}; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = RevokeUserSessionsResponseDoc; + } + + /** + * @description 管理员维护用户状态(active/locked/suspended/deactivated),并联动会话治理 + * @tags admin + * @name UsersStatusPartialUpdate + * @summary 管理员更新用户状态 + * @request PATCH:/admin/users/{id}/status + * @secure + */ + export namespace UsersStatusPartialUpdate { + export type RequestParams = { + /** 用户ID */ + id: number; + }; + export type RequestQuery = {}; + export type RequestBody = UpdateUserStatusRequest; + export type RequestHeaders = {}; + export type ResponseBody = UpdateUserStatusResponseDoc; + } +} + +export namespace Announcements { + /** + * @description 登录用户获取当前可展示的站点公告列表 + * @tags announcements + * @name AnnouncementsList + * @summary 获取当前公告 + * @request GET:/announcements + * @secure + */ + export namespace AnnouncementsList { + export type RequestParams = {}; + export type RequestQuery = { + /** 是否包含今日不再显示的公告 */ + include_dismissed?: boolean; + }; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = AnnouncementListResponseDoc; + } + + /** + * @description 登录用户关闭当前公告版本;公告更新后会重新展示 + * @tags announcements + * @name CloseCreate + * @summary 关闭公告 + * @request POST:/announcements/{id}/close + * @secure + */ + export namespace CloseCreate { + export type RequestParams = { + /** 公告ID */ + id: number; + }; + export type RequestQuery = {}; + export type RequestBody = AnnouncementStateRequest; + export type RequestHeaders = {}; + export type ResponseBody = AnnouncementCloseResponseDoc; + } + + /** + * @description 登录用户对当前公告版本记录今日不再显示 + * @tags announcements + * @name DismissTodayCreate + * @summary 今日不再显示公告 + * @request POST:/announcements/{id}/dismiss-today + * @secure + */ + export namespace DismissTodayCreate { + export type RequestParams = { + /** 公告ID */ + id: number; + }; + export type RequestQuery = {}; + export type RequestBody = AnnouncementStateRequest; + export type RequestHeaders = {}; + export type ResponseBody = AnnouncementDismissResponseDoc; + } +} + +export namespace Auth { + /** + * @description 登录后返回JWT访问令牌 + * @tags auth + * @name LoginCreate + * @summary 用户登录 + * @request POST:/auth/login + */ + export namespace LoginCreate { + export type RequestParams = {}; + export type RequestQuery = {}; + export type RequestBody = LoginRequest; + export type RequestHeaders = {}; + export type ResponseBody = LoginResponseDoc; + } + + /** + * @description 获取用户名、邮箱、OAuth/OIDC 登录入口,以及邮箱注册 Turnstile 公共配置 + * @tags auth + * @name LoginOptionsList + * @summary 获取登录入口配置 + * @request GET:/auth/login-options + */ + export namespace LoginOptionsList { + export type RequestParams = {}; + export type RequestQuery = {}; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = LoginOptionsResponseDoc; + } + + /** + * @description 吊销当前 access token 对应会话 + * @tags auth + * @name LogoutCreate + * @summary 登出当前会话 + * @request POST:/auth/logout + * @secure + */ + export namespace LogoutCreate { + export type RequestParams = {}; + export type RequestQuery = {}; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = LogoutResponseDoc; + } + + /** + * @description 吊销当前用户所有活跃会话 + * @tags auth + * @name LogoutAllCreate + * @summary 登出全部会话 + * @request POST:/auth/logout-all + * @secure + */ + export namespace LogoutAllCreate { + export type RequestParams = {}; + export type RequestQuery = {}; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = LogoutResponseDoc; + } + + /** + * @description 使用邮箱、验证码和新密码完成密码重置;失败时返回通用错误,避免暴露账号状态 + * @tags auth + * @name PasswordResetCompleteCreate + * @summary 完成密码重置 + * @request POST:/auth/password/reset/complete + */ + export namespace PasswordResetCompleteCreate { + export type RequestParams = {}; + export type RequestQuery = {}; + export type RequestBody = PasswordResetCompleteRequest; + export type RequestHeaders = {}; + export type ResponseBody = PasswordResetCompleteResponseDoc; + } + + /** + * @description SMTP 配置可用时,向已验证邮箱发送密码重置验证码;失败时返回通用错误,避免暴露账号状态 + * @tags auth + * @name PasswordResetStartCreate + * @summary 发送密码重置验证码 + * @request POST:/auth/password/reset/start + */ + export namespace PasswordResetStartCreate { + export type RequestParams = {}; + export type RequestQuery = {}; + export type RequestBody = PasswordResetStartRequest; + export type RequestHeaders = {}; + export type ResponseBody = PasswordResetStartResponseDoc; + } + + /** + * @description 使用 HttpOnly refresh cookie 轮换并签发新的 access token + * @tags auth + * @name RefreshCreate + * @summary 刷新访问令牌 + * @request POST:/auth/refresh + */ + export namespace RefreshCreate { + export type RequestParams = {}; + export type RequestQuery = {}; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = RefreshTokenResponseDoc; + } + + /** + * @description 使用邮箱、密码和验证码完成注册;未开启邮箱验证码但启用 Turnstile 时需要提交 turnstileToken + * @tags auth + * @name RegisterEmailCompleteCreate + * @summary 完成邮箱注册 + * @request POST:/auth/register/email/complete + */ + export namespace RegisterEmailCompleteCreate { + export type RequestParams = {}; + export type RequestQuery = {}; + export type RequestBody = EmailRegistrationCompleteRequest; + export type RequestHeaders = {}; + export type ResponseBody = LoginResponseDoc; + } + + /** + * @description 邮箱验证码注册开启时发送验证码;启用 Turnstile 后需要提交 turnstileToken + * @tags auth + * @name RegisterEmailStartCreate + * @summary 发送邮箱注册验证码 + * @request POST:/auth/register/email/start + */ + export namespace RegisterEmailStartCreate { + export type RequestParams = {}; + export type RequestQuery = {}; + export type RequestBody = EmailRegistrationStartRequest; + export type RequestHeaders = {}; + export type ResponseBody = EmailRegistrationStartResponseDoc; + } + + /** + * @description 查询当前登录用户仍然有效的活跃会话列表 + * @tags auth + * @name SessionsList + * @summary 当前活跃会话 + * @request GET:/auth/sessions + * @secure + */ + export namespace SessionsList { + export type RequestParams = {}; + export type RequestQuery = {}; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = ActiveSessionListResponseDoc; + } + + /** + * @description 用户授权后,用浏览器定位能力补充当前登录会话的精确位置 + * @tags auth + * @name SessionsCurrentLocationUpdate + * @summary 更新当前会话精确位置 + * @request PUT:/auth/sessions/current/location + * @secure + */ + export namespace SessionsCurrentLocationUpdate { + export type RequestParams = {}; + export type RequestQuery = {}; + export type RequestBody = UpdateCurrentSessionLocationRequest; + export type RequestHeaders = {}; + export type ResponseBody = UpdateCurrentSessionLocationResponseDoc; + } + + /** + * @description 吊销当前用户指定 session_id 对应的活跃会话 + * @tags auth + * @name SessionsLogoutCreate + * @summary 登出指定会话 + * @request POST:/auth/sessions/{session_id}/logout + * @secure + */ + export namespace SessionsLogoutCreate { + export type RequestParams = { + /** 会话ID */ + sessionId: string; + }; + export type RequestQuery = {}; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = LogoutResponseDoc; + } +} + +export namespace Billing { + /** + * @description 查询当前用户按量余额 + * @tags billing + * @name AccountList + * @summary 获取按量计费账户 + * @request GET:/billing/account + * @secure + */ + export namespace AccountList { + export type RequestParams = {}; + export type RequestQuery = {}; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = BillingAccountResponseDoc; + } + + /** + * @description 查询当前计费方式、周期额度或按量余额 + * @tags billing + * @name OverviewList + * @summary 获取当前用户计费概览 + * @request GET:/billing/overview + * @secure + */ + export namespace OverviewList { + export type RequestParams = {}; + export type RequestQuery = {}; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = BillingOverviewResponseDoc; + } + + /** + * @description 为当前用户创建套餐支付单,并返回支付跳转地址 + * @tags billing + * @name PaymentsCheckoutCreate + * @summary 创建支付收银台 + * @request POST:/billing/payments/checkout + * @secure + */ + export namespace PaymentsCheckoutCreate { + export type RequestParams = {}; + export type RequestQuery = {}; + export type RequestBody = CreateCheckoutRequest; + export type RequestHeaders = {}; + export type ResponseBody = CheckoutResponseDoc; + } + + /** + * No description + * @tags billing + * @name PaymentsEpayNotifyCreate + * @summary 易支付异步通知 + * @request POST:/billing/payments/epay/notify + */ + export namespace PaymentsEpayNotifyCreate { + export type RequestParams = {}; + export type RequestQuery = {}; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = string; + } + + /** + * No description + * @tags billing + * @name PaymentsStripeWebhookCreate + * @summary Stripe 支付回调 + * @request POST:/billing/payments/stripe/webhook + */ + export namespace PaymentsStripeWebhookCreate { + export type RequestParams = {}; + export type RequestQuery = {}; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = Envelope; + } + + /** + * @description 查询所有启用的订阅套餐及价格 + * @tags billing + * @name PlansList + * @summary 获取订阅套餐 + * @request GET:/billing/plans + * @secure + */ + export namespace PlansList { + export type RequestParams = {}; + export type RequestQuery = {}; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = PlanListResponseDoc; + } + + /** + * @description 当前用户兑换余额或订阅权益 + * @tags billing + * @name RedemptionsCreate + * @summary 兑换计费权益码 + * @request POST:/billing/redemptions + * @secure + */ + export namespace RedemptionsCreate { + export type RequestParams = {}; + export type RequestQuery = {}; + export type RequestBody = RedeemCodeRequest; + export type RequestHeaders = {}; + export type ResponseBody = RedemptionApplyResponseDoc; + } + + /** + * @description 为当前用户创建或替换订阅 + * @tags billing + * @name SubscriptionsCreate + * @summary 创建订阅 + * @request POST:/billing/subscriptions + * @secure + */ + export namespace SubscriptionsCreate { + export type RequestParams = {}; + export type RequestQuery = {}; + export type RequestBody = SubscribeRequest; + export type RequestHeaders = {}; + export type ResponseBody = SubscribeResponseDoc; + } + + /** + * @description 查询当前用户的每日用量与费用 + * @tags billing + * @name UsageList + * @summary 查询用量账单 + * @request GET:/billing/usage + * @secure + */ + export namespace UsageList { + export type RequestParams = {}; + export type RequestQuery = { + /** 页码 */ + page?: number; + /** 每页数量 */ + page_size?: number; + /** 搜索模型 */ + query?: string; + /** 排序:newest/oldest/tokens_desc/cost_desc/latency_desc */ + sort?: string; + /** 状态筛选:free/billable */ + status?: string; + }; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = UsageLedgerListResponseDoc; + } + + /** + * @description 查询当前用户按日期聚合的用量与费用 + * @tags billing + * @name UsageDailyList + * @summary 查询每日用量 + * @request GET:/billing/usage/daily + * @secure + */ + export namespace UsageDailyList { + export type RequestParams = {}; + export type RequestQuery = { + /** 天数 */ + days?: number; + }; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = UsageDailyListResponseDoc; + } + + /** + * @description 查询当前用户按月份聚合的用量与费用 + * @tags billing + * @name UsageMonthlyList + * @summary 查询月度用量 + * @request GET:/billing/usage/monthly + * @secure + */ + export namespace UsageMonthlyList { + export type RequestParams = {}; + export type RequestQuery = { + /** 月份数量,默认近 12 个月 */ + months?: number; + }; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = UsageMonthlyListResponseDoc; + } +} + +export namespace Branding { + /** + * No description + * @tags settings + * @name BrandingList + * @summary 查询公开品牌配置 + * @request GET:/branding + */ + export namespace BrandingList { + export type RequestParams = {}; + export type RequestQuery = {}; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = BrandingResponseDoc; + } + + /** + * No description + * @tags settings + * @name ManifestWebmanifestList + * @summary 查询品牌 Web App Manifest + * @request GET:/branding/manifest.webmanifest + */ + export namespace ManifestWebmanifestList { + export type RequestParams = {}; + export type RequestQuery = {}; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = BrandingManifestResponse; + } +} + +export namespace ContextArtifacts { + /** + * @description 查询当前用户可访问的上下文证据详情,用于 Prompt Trace 来源查看 + * @tags chat + * @name ContextArtifactsDetail + * @summary 查询上下文证据详情 + * @request GET:/context-artifacts/{id} + * @secure + */ + export namespace ContextArtifactsDetail { + export type RequestParams = { + /** 上下文证据 ID */ + id: number; + }; + export type RequestQuery = {}; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = ContextArtifactResponseDoc; + } +} + +export namespace ConversationProjects { + /** + * @description 查询当前用户的会话项目分组 + * @tags chat + * @name ConversationProjectsList + * @summary 会话项目列表 + * @request GET:/conversation-projects + * @secure + */ + export namespace ConversationProjectsList { + export type RequestParams = {}; + export type RequestQuery = { + /** 状态筛选: active|archived|all */ + status?: string; + }; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = ConversationProjectListResponseDoc; + } + + /** + * @description 创建当前用户的会话项目分组 + * @tags chat + * @name ConversationProjectsCreate + * @summary 创建会话项目 + * @request POST:/conversation-projects + * @secure + */ + export namespace ConversationProjectsCreate { + export type RequestParams = {}; + export type RequestQuery = {}; + export type RequestBody = CreateConversationProjectRequest; + export type RequestHeaders = {}; + export type ResponseBody = ConversationProjectResponseDoc; + } + + /** + * @description 更新当前用户项目分组展示顺序 + * @tags chat + * @name ReorderCreate + * @summary 调整会话项目顺序 + * @request POST:/conversation-projects/reorder + * @secure + */ + export namespace ReorderCreate { + export type RequestParams = {}; + export type RequestQuery = {}; + export type RequestBody = ReorderConversationProjectsRequest; + export type RequestHeaders = {}; + export type ResponseBody = ConversationProjectListResponseDoc; + } + + /** + * @description 删除当前用户项目分组。默认仅解除其下会话归属;delete_conversations=true 时同时软删除项目内会话;delete_files=true 时同步删除不再被其他会话引用的文件。 + * @tags chat + * @name ConversationProjectsDelete + * @summary 删除会话项目 + * @request DELETE:/conversation-projects/{id} + * @secure + */ + export namespace ConversationProjectsDelete { + export type RequestParams = { + /** 项目 public_id */ + id: string; + }; + export type RequestQuery = { + /** 是否同时删除项目内会话 */ + delete_conversations?: boolean; + /** 是否同步删除不再被其他会话引用的会话文件 */ + delete_files?: boolean; + }; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = ConversationDeleteResponseDoc; + } + + /** + * @description 更新当前用户的会话项目分组 + * @tags chat + * @name ConversationProjectsPartialUpdate + * @summary 更新会话项目 + * @request PATCH:/conversation-projects/{id} + * @secure + */ + export namespace ConversationProjectsPartialUpdate { + export type RequestParams = { + /** 项目 public_id */ + id: string; + }; + export type RequestQuery = {}; + export type RequestBody = UpdateConversationProjectRequest; + export type RequestHeaders = {}; + export type ResponseBody = ConversationProjectResponseDoc; + } +} + +export namespace ConversationRuns { + /** + * @description 仅在用户显式点击暂停时取消对应 run;浏览器刷新或断开连接不会调用此接口 + * @tags chat + * @name CancelCreate + * @summary 取消流式生成 + * @request POST:/conversation-runs/{run_id}/cancel + * @secure + */ + export namespace CancelCreate { + export type RequestParams = { + /** 运行 ID */ + runId: string; + }; + export type RequestQuery = {}; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = SuccessDoc; + } + + /** + * @description 页面刷新后按 run_id 重新订阅仍在运行的生成流,返回 NDJSON 事件 + * @tags chat + * @name StreamList + * @summary 恢复流式生成订阅 + * @request GET:/conversation-runs/{run_id}/stream + * @secure + */ + export namespace StreamList { + export type RequestParams = { + /** 运行 ID */ + runId: string; + }; + export type RequestQuery = { + /** 已接收的最后事件序号 */ + after?: number; + }; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = string; + } +} + +export namespace Conversations { + /** + * @description 查询当前用户会话列表 + * @tags chat + * @name ConversationsList + * @summary 会话分页列表 + * @request GET:/conversations + * @secure + */ + export namespace ConversationsList { + export type RequestParams = {}; + export type RequestQuery = { + /** 页码 */ + page?: number; + /** 每页数量 */ + page_size?: number; + /** 项目筛选: all|unassigned|项目 public_id */ + project?: string; + /** 搜索关键词,匹配会话元数据、项目名称和消息正文 */ + q?: string; + /** 分享筛选: all|shared|unshared */ + share?: string; + /** 星标筛选: all|starred|unstarred */ + starred?: string; + /** 状态筛选: active|archived|all */ + status?: string; + }; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = ConversationListResponseDoc; + } + + /** + * @description 创建新的聊天会话 + * @tags chat + * @name ConversationsCreate + * @summary 创建会话 + * @request POST:/conversations + * @secure + */ + export namespace ConversationsCreate { + export type RequestParams = {}; + export type RequestQuery = {}; + export type RequestBody = CreateConversationRequest; + export type RequestHeaders = {}; + export type ResponseBody = ConversationCreateResponseDoc; + } + + /** + * @description 返回后台配置的新会话系统推荐模型;未配置时返回空候选 + * @tags chat + * @name DefaultModelCandidateList + * @summary 查询新会话默认模型候选 + * @request GET:/conversations/default-model-candidate + * @secure + */ + export namespace DefaultModelCandidateList { + export type RequestParams = {}; + export type RequestQuery = {}; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = ConversationDefaultModelCandidateResponseDoc; + } + + /** + * @description 流式导出当前用户全部会话及消息为 NDJSON 文件 + * @tags chat + * @name ExportList + * @summary 导出当前用户全部对话 + * @request GET:/conversations/export + * @secure + */ + export namespace ExportList { + export type RequestParams = {}; + export type RequestQuery = {}; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = string; + } + + /** + * @description 批量设置当前用户会话的项目归属 + * @tags chat + * @name ProjectCreate + * @summary 批量设置会话项目归属 + * @request POST:/conversations/project + * @secure + */ + export namespace ProjectCreate { + export type RequestParams = {}; + export type RequestQuery = {}; + export type RequestBody = BatchSetConversationProjectRequest; + export type RequestHeaders = {}; + export type ResponseBody = BatchSetConversationProjectResponseDoc; + } + + /** + * @description 批量关闭当前用户会话的公开分享链接 + * @tags chat + * @name SharesRevokeCreate + * @summary 批量关闭会话公开分享 + * @request POST:/conversations/shares/revoke + * @secure + */ + export namespace SharesRevokeCreate { + export type RequestParams = {}; + export type RequestQuery = {}; + export type RequestBody = RevokeConversationSharesRequest; + export type RequestHeaders = {}; + export type ResponseBody = RevokeConversationSharesResponseDoc; + } + + /** + * @description 查询当前用户的单个会话元信息 + * @tags chat + * @name ConversationsDetail + * @summary 查询会话 + * @request GET:/conversations/{id} + * @secure + */ + export namespace ConversationsDetail { + export type RequestParams = { + /** 会话 public_id */ + id: string; + }; + export type RequestQuery = {}; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = ConversationUpdateResponseDoc; + } + + /** + * @description 删除指定会话 + * @tags chat + * @name ConversationsDelete + * @summary 删除会话 + * @request DELETE:/conversations/{id} + * @secure + */ + export namespace ConversationsDelete { + export type RequestParams = { + /** 会话 public_id */ + id: string; + }; + export type RequestQuery = { + /** 是否同步删除不再被其他会话引用的会话文件 */ + delete_files?: boolean; + }; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = ConversationDeleteResponseDoc; + } + + /** + * @description 设置指定会话归档状态 + * @tags chat + * @name ArchivePartialUpdate + * @summary 设置会话归档 + * @request PATCH:/conversations/{id}/archive + * @secure + */ + export namespace ArchivePartialUpdate { + export type RequestParams = { + /** 会话 public_id */ + id: string; + }; + export type RequestQuery = {}; + export type RequestBody = SetConversationArchiveRequest; + export type RequestHeaders = {}; + export type ResponseBody = ConversationUpdateResponseDoc; + } + + /** + * @description 导出当前用户单个会话的元信息、消息、运行日志和可见处理轨迹 + * @tags chat + * @name ExportList2 + * @summary 导出会话 JSON + * @request GET:/conversations/{id}/export + * @originalName exportList + * @duplicate + * @secure + */ + export namespace ExportList2 { + export type RequestParams = { + /** 会话 public_id */ + id: string; + }; + export type RequestQuery = {}; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = ConversationExportResponseDoc; + } + + /** + * @description 查询会话内消息列表 + * @tags chat + * @name MessagesList + * @summary 查询会话消息 + * @request GET:/conversations/{id}/messages + * @secure + */ + export namespace MessagesList { + export type RequestParams = { + /** 会话 public_id */ + id: string; + }; + export type RequestQuery = { + /** 页码 */ + page?: number; + /** 每页数量 */ + page_size?: number; + }; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = MessageListResponseDoc; + } + + /** + * @description 在会话中发送消息,支持文件/图片等多模态附件 + * @tags chat + * @name MessagesCreate + * @summary 发送消息 + * @request POST:/conversations/{id}/messages + * @secure + */ + export namespace MessagesCreate { + export type RequestParams = { + /** 会话 public_id */ + id: string; + }; + export type RequestQuery = {}; + export type RequestBody = SendMessageRequest; + export type RequestHeaders = {}; + export type ResponseBody = SendMessageResponseDoc; + } + + /** + * @description 在会话中发送消息并以 NDJSON 流式返回 assistant 增量文本 + * @tags chat + * @name MessagesStreamCreate + * @summary 流式发送消息 + * @request POST:/conversations/{id}/messages/stream + * @secure + */ + export namespace MessagesStreamCreate { + export type RequestParams = { + /** 会话 public_id */ + id: string; + }; + export type RequestQuery = {}; + export type RequestBody = SendMessageRequest; + export type RequestHeaders = {}; + export type ResponseBody = string; + } + + /** + * @description 设置当前用户单个会话的项目归属 + * @tags chat + * @name ProjectPartialUpdate + * @summary 设置会话项目归属 + * @request PATCH:/conversations/{id}/project + * @secure + */ + export namespace ProjectPartialUpdate { + export type RequestParams = { + /** 会话 public_id */ + id: string; + }; + export type RequestQuery = {}; + export type RequestBody = SetConversationProjectRequest; + export type RequestHeaders = {}; + export type ResponseBody = ConversationUpdateResponseDoc; + } + + /** + * @description 查询会话内模型调用运行日志(tokens/时长/错误) + * @tags chat + * @name RunsList + * @summary 查询会话运行日志 + * @request GET:/conversations/{id}/runs + * @secure + */ + export namespace RunsList { + export type RequestParams = { + /** 会话 public_id */ + id: string; + }; + export type RequestQuery = { + /** 页码 */ + page?: number; + /** 每页数量 */ + page_size?: number; + }; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = ConversationRunListResponseDoc; + } + + /** + * @description 查询当前用户指定会话的最近分享状态 + * @tags chat + * @name ShareList + * @summary 查询会话分享状态 + * @request GET:/conversations/{id}/share + * @secure + */ + export namespace ShareList { + export type RequestParams = { + /** 会话 public_id */ + id: string; + }; + export type RequestQuery = {}; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = ConversationShareResponseDoc; + } + + /** + * @description 创建当前会话全部分支的公开快照分享链接 + * @tags chat + * @name ShareCreate + * @summary 创建会话公开分享 + * @request POST:/conversations/{id}/share + * @secure + */ + export namespace ShareCreate { + export type RequestParams = { + /** 会话 public_id */ + id: string; + }; + export type RequestQuery = {}; + export type RequestBody = CreateConversationShareRequest; + export type RequestHeaders = {}; + export type ResponseBody = ConversationShareResponseDoc; + } + + /** + * @description 关闭当前会话的有效公开分享链接 + * @tags chat + * @name ShareDelete + * @summary 关闭会话公开分享 + * @request DELETE:/conversations/{id}/share + * @secure + */ + export namespace ShareDelete { + export type RequestParams = { + /** 会话 public_id */ + id: string; + }; + export type RequestQuery = {}; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = ConversationShareResponseDoc; + } + + /** + * @description 关闭当前有效分享并创建新的公开快照链接 + * @tags chat + * @name ShareRegenerateCreate + * @summary 重新生成会话分享链接 + * @request POST:/conversations/{id}/share/regenerate + * @secure + */ + export namespace ShareRegenerateCreate { + export type RequestParams = { + /** 会话 public_id */ + id: string; + }; + export type RequestQuery = {}; + export type RequestBody = CreateConversationShareRequest; + export type RequestHeaders = {}; + export type ResponseBody = ConversationShareResponseDoc; + } + + /** + * @description 设置指定会话是否星标 + * @tags chat + * @name StarPartialUpdate + * @summary 设置会话星标 + * @request PATCH:/conversations/{id}/star + * @secure + */ + export namespace StarPartialUpdate { + export type RequestParams = { + /** 会话 public_id */ + id: string; + }; + export type RequestQuery = {}; + export type RequestBody = SetConversationStarRequest; + export type RequestHeaders = {}; + export type ResponseBody = ConversationUpdateResponseDoc; + } + + /** + * @description 修改指定会话标题 + * @tags chat + * @name TitlePartialUpdate + * @summary 重命名会话 + * @request PATCH:/conversations/{id}/title + * @secure + */ + export namespace TitlePartialUpdate { + export type RequestParams = { + /** 会话 public_id */ + id: string; + }; + export type RequestQuery = {}; + export type RequestBody = RenameConversationRequest; + export type RequestHeaders = {}; + export type ResponseBody = ConversationUpdateResponseDoc; + } + + /** + * @description 根据指定会话已有内容重新生成标题 + * @tags chat + * @name TitleRegenerateCreate + * @summary 自动重新命名会话 + * @request POST:/conversations/{id}/title/regenerate + * @secure + */ + export namespace TitleRegenerateCreate { + export type RequestParams = { + /** 会话 public_id */ + id: string; + }; + export type RequestQuery = {}; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = ConversationUpdateResponseDoc; + } +} + +export namespace Files { + /** + * @description 查询当前用户上传的文件 + * @tags chat + * @name FilesList + * @summary 文件分页列表 + * @request GET:/files + * @secure + */ + export namespace FilesList { + export type RequestParams = {}; + export type RequestQuery = { + /** 筛选,支持单值或逗号分隔多值: image,document,spreadsheet,presentation,code,pdf,audio,video */ + kind?: string; + /** 页码 */ + page?: number; + /** 每页数量 */ + page_size?: number; + /** 搜索关键词 */ + q?: string; + /** 排序: created|name|size|last_used */ + sort?: string; + }; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = FileListResponseDoc; + } + + /** + * @description 上传对话附件文件,统一存储并扣减用户配额(默认100MB) + * @tags chat + * @name FilesCreate + * @summary 上传文件 + * @request POST:/files + * @secure + */ + export namespace FilesCreate { + export type RequestParams = {}; + export type RequestQuery = {}; + export type RequestBody = { + /** + * 文件 + * @format binary + */ + file: File; + /** 文件用途 */ + purpose?: string; + }; + export type RequestHeaders = {}; + export type ResponseBody = UploadFileResponseDoc; + } + + /** + * @description 删除指定文件并回收用户配额 + * @tags chat + * @name FilesDelete + * @summary 删除文件 + * @request DELETE:/files/{file_id} + * @secure + */ + export namespace FilesDelete { + export type RequestParams = { + /** 文件ID */ + fileId: string; + }; + export type RequestQuery = {}; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = DeleteFileResponseDoc; + } + + /** + * @description 修改文件名或 RAG 检索开关,file_name 和 rag_opt_out 至少填一个 + * @tags chat + * @name FilesPartialUpdate + * @summary 更新文件属性 + * @request PATCH:/files/{file_id} + * @secure + */ + export namespace FilesPartialUpdate { + export type RequestParams = { + /** 文件ID */ + fileId: string; + }; + export type RequestQuery = {}; + export type RequestBody = UpdateFileRequest; + export type RequestHeaders = {}; + export type ResponseBody = FileUpdateResponseDoc; + } + + /** + * @description 按当前登录用户权限读取文件内容,用于在线预览或下载 + * @tags chat + * @name ContentList + * @summary 获取文件内容 + * @request GET:/files/{file_id}/content + * @secure + */ + export namespace ContentList { + export type RequestParams = { + /** 文件ID */ + fileId: string; + }; + export type RequestQuery = {}; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = Blob; + } +} + +export namespace Me { + /** + * @description 查询当前登录用户资料 + * @tags auth + * @name GetMe + * @summary 当前用户信息 + * @request GET:/me + * @secure + */ + export namespace GetMe { + export type RequestParams = {}; + export type RequestQuery = {}; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = MeResponseDoc; + } + + /** + * @description 删除当前登录用户账户及主要用户域数据 + * @tags auth + * @name DeleteMe + * @summary 删除当前用户账户 + * @request DELETE:/me + * @secure + */ + export namespace DeleteMe { + export type RequestParams = {}; + export type RequestQuery = {}; + export type RequestBody = DeleteAccountRequest; + export type RequestHeaders = {}; + export type ResponseBody = DeleteAccountResponseDoc; + } + + /** + * @description 更新当前登录用户的头像、昵称、时区、对话偏好 + * @tags auth + * @name PatchMe + * @summary 更新当前用户资料 + * @request PATCH:/me + * @secure + */ + export namespace PatchMe { + export type RequestParams = {}; + export type RequestQuery = {}; + export type RequestBody = PatchMeRequest; + export type RequestHeaders = {}; + export type ResponseBody = PatchMeResponseDoc; + } + + /** + * @description 发送删除当前账号前所需的邮箱验证码,或返回可用的两步验证方式 + * @tags auth + * @name DeleteStartCreate + * @summary 开始删除账号验证 + * @request POST:/me/delete/start + * @secure + */ + export namespace DeleteStartCreate { + export type RequestParams = {}; + export type RequestQuery = {}; + export type RequestBody = SecurityVerificationStartRequest; + export type RequestHeaders = {}; + export type ResponseBody = EmailVerificationStartResponseDoc; + } + + /** + * @description 标记当前用户已完成首次引导 + * @tags auth + * @name OnboardingCompleteCreate + * @summary 完成首次引导 + * @request POST:/me/onboarding/complete + * @secure + */ + export namespace OnboardingCompleteCreate { + export type RequestParams = {}; + export type RequestQuery = {}; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = PatchMeResponseDoc; + } + + /** + * @description 当前用户仅可自主修改一次登录用户名 + * @tags auth + * @name UsernamePartialUpdate + * @summary 修改当前用户用户名 + * @request PATCH:/me/username + * @secure + */ + export namespace UsernamePartialUpdate { + export type RequestParams = {}; + export type RequestQuery = {}; + export type RequestBody = PatchUsernameRequest; + export type RequestHeaders = {}; + export type ResponseBody = PatchMeResponseDoc; + } +} + +export namespace Memories { + /** + * @description 查询当前用户的长期个性化记忆 + * @tags memory + * @name ProfileList + * @summary 查询用户个性化记忆 + * @request GET:/memories/profile + * @secure + */ + export namespace ProfileList { + export type RequestParams = {}; + export type RequestQuery = {}; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = UserMemoryListResponseDoc; + } + + /** + * @description 新增或更新当前用户的长期个性化记忆 + * @tags memory + * @name ProfileUpdate + * @summary 更新用户个性化记忆 + * @request PUT:/memories/profile + * @secure + */ + export namespace ProfileUpdate { + export type RequestParams = {}; + export type RequestQuery = {}; + export type RequestBody = UpsertUserMemoryRequest; + export type RequestHeaders = {}; + export type ResponseBody = UpsertUserMemoryResponseDoc; + } + + /** + * @description 删除当前用户的指定 key 长期记忆 + * @tags memory + * @name ProfileDelete + * @summary 删除用户个性化记忆 + * @request DELETE:/memories/profile/{memory_key} + * @secure + */ + export namespace ProfileDelete { + export type RequestParams = { + /** 记忆 Key */ + memoryKey: string; + }; + export type RequestQuery = {}; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = UpsertUserMemoryResponseDoc; + } +} + +export namespace Messages { + /** + * @description 更新当前用户会话中的 assistant 消息内容,并标记为已编辑 + * @tags chat + * @name MessagesPartialUpdate + * @summary 更新消息内容 + * @request PATCH:/messages/{id} + * @secure + */ + export namespace MessagesPartialUpdate { + export type RequestParams = { + /** 消息 public_id */ + id: string; + }; + export type RequestQuery = {}; + export type RequestBody = UpdateMessageRequest; + export type RequestHeaders = {}; + export type ResponseBody = MessageResponseDoc; + } + + /** + * @description 对 assistant 消息设置点赞/点踩,传空 feedback 表示取消反馈 + * @tags chat + * @name FeedbackUpdate + * @summary 设置消息反馈 + * @request PUT:/messages/{id}/feedback + * @secure + */ + export namespace FeedbackUpdate { + export type RequestParams = { + /** 消息 public_id */ + id: string; + }; + export type RequestQuery = {}; + export type RequestBody = SetMessageFeedbackRequest; + export type RequestHeaders = {}; + export type ResponseBody = MessageFeedbackResponseDoc; + } +} + +export namespace Models { + /** + * @description 用户侧查询启用模型目录,用于聊天模型选择器 + * @tags llm + * @name ModelsList + * @summary 查询可用模型目录 + * @request GET:/models + * @secure + */ + export namespace ModelsList { + export type RequestParams = {}; + export type RequestQuery = {}; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = PublicModelListResponseDoc; + } +} + +export namespace PromptPresets { + /** + * @description 返回管理员内置和当前用户自定义的已启用提示词,用于 slash 选择器 + * @tags prompt-presets + * @name PromptPresetsList + * @summary 查询当前用户可用预制提示词 + * @request GET:/prompt-presets + * @secure + */ + export namespace PromptPresetsList { + export type RequestParams = {}; + export type RequestQuery = { + /** 页码 */ + page?: number; + /** 每页数量 */ + page_size?: number; + /** 搜索关键词 */ + q?: string; + }; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = PromptPresetPageResponseDoc; + } + + /** + * @description 分页查询当前用户自定义提示词 + * @tags prompt-presets + * @name MineList + * @summary 查询我的自定义提示词 + * @request GET:/prompt-presets/mine + * @secure + */ + export namespace MineList { + export type RequestParams = {}; + export type RequestQuery = { + /** 是否启用 */ + enabled?: boolean; + /** 页码 */ + page?: number; + /** 每页数量 */ + page_size?: number; + /** 搜索关键词 */ + q?: string; + }; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = PromptPresetPageResponseDoc; + } + + /** + * No description + * @tags prompt-presets + * @name MineCreate + * @summary 创建我的自定义提示词 + * @request POST:/prompt-presets/mine + * @secure + */ + export namespace MineCreate { + export type RequestParams = {}; + export type RequestQuery = {}; + export type RequestBody = WritePromptPresetRequest; + export type RequestHeaders = {}; + export type ResponseBody = PromptPresetResponseDoc; + } + + /** + * No description + * @tags prompt-presets + * @name MineDelete + * @summary 删除我的自定义提示词 + * @request DELETE:/prompt-presets/mine/{id} + * @secure + */ + export namespace MineDelete { + export type RequestParams = { + /** 提示词ID */ + id: number; + }; + export type RequestQuery = {}; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = PromptPresetDeleteResponseDoc; + } + + /** + * No description + * @tags prompt-presets + * @name MinePartialUpdate + * @summary 更新我的自定义提示词 + * @request PATCH:/prompt-presets/mine/{id} + * @secure + */ + export namespace MinePartialUpdate { + export type RequestParams = { + /** 提示词ID */ + id: number; + }; + export type RequestQuery = {}; + export type RequestBody = PatchPromptPresetRequest; + export type RequestHeaders = {}; + export type ResponseBody = PromptPresetResponseDoc; + } +} + +export namespace Settings { + /** + * No description + * @tags settings + * @name ChatContextPolicyList + * @summary 查询聊天上下文策略 + * @request GET:/settings/chat-context-policy + * @secure + */ + export namespace ChatContextPolicyList { + export type RequestParams = {}; + export type RequestQuery = {}; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = Envelope; + } + + /** + * No description + * @tags settings + * @name LoginPageList + * @summary 查询公开登录页配置 + * @request GET:/settings/login-page + */ + export namespace LoginPageList { + export type RequestParams = {}; + export type RequestQuery = {}; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = Envelope; + } + + /** + * No description + * @tags settings + * @name McpPolicyList + * @summary 查询 MCP 工具运行策略 + * @request GET:/settings/mcp-policy + * @secure + */ + export namespace McpPolicyList { + export type RequestParams = {}; + export type RequestQuery = {}; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = Envelope; + } + + /** + * No description + * @tags settings + * @name ModelOptionPolicyList + * @summary 查询模型 options 透传策略 + * @request GET:/settings/model-option-policy + * @secure + */ + export namespace ModelOptionPolicyList { + export type RequestParams = {}; + export type RequestQuery = {}; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = Envelope; + } +} + +export namespace SharedConversations { + /** + * @description 公开读取会话分享快照 + * @tags chat + * @name SharedConversationsDetail + * @summary 查询公开分享会话 + * @request GET:/shared-conversations/{share_id} + */ + export namespace SharedConversationsDetail { + export type RequestParams = { + /** 分享 ID */ + shareId: string; + }; + export type RequestQuery = {}; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = PublicSharedConversationResponseDoc; + } + + /** + * @description 将公开分享快照克隆到当前登录用户账户,包含全部分支消息和分享内附件 + * @tags chat + * @name CloneCreate + * @summary 克隆公开分享会话 + * @request POST:/shared-conversations/{share_id}/clone + * @secure + */ + export namespace CloneCreate { + export type RequestParams = { + /** 分享 ID */ + shareId: string; + }; + export type RequestQuery = {}; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = ConversationUpdateResponseDoc; + } + + /** + * @description 只允许读取公开分享快照中实际引用的附件内容 + * @tags chat + * @name FilesContentList + * @summary 获取公开分享附件内容 + * @request GET:/shared-conversations/{share_id}/files/{file_id}/content + */ + export namespace FilesContentList { + export type RequestParams = { + /** 文件 ID */ + fileId: string; + /** 分享 ID */ + shareId: string; + }; + export type RequestQuery = {}; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = Blob; + } +} + +export namespace Skills { + /** + * @description 返回管理员内置和当前用户自定义的已启用技能摘要,用于会话按需选择 Skill 上下文 + * @tags skills + * @name SkillsList + * @summary 查询当前用户可用技能 + * @request GET:/skills + * @secure + */ + export namespace SkillsList { + export type RequestParams = {}; + export type RequestQuery = { + /** 按技能 ID 筛选,可重复传递 */ + id?: number[]; + /** 页码 */ + page?: number; + /** 每页数量 */ + page_size?: number; + /** 搜索关键词 */ + q?: string; + }; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = SkillSummaryPageResponseDoc; + } + + /** + * No description + * @tags skills + * @name MineList + * @summary 查询我的自定义技能 + * @request GET:/skills/mine + * @secure + */ + export namespace MineList { + export type RequestParams = {}; + export type RequestQuery = { + /** 是否启用 */ + enabled?: boolean; + /** 页码 */ + page?: number; + /** 每页数量 */ + page_size?: number; + /** 搜索关键词 */ + q?: string; + }; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = SkillPageResponseDoc; + } + + /** + * No description + * @tags skills + * @name MineCreate + * @summary 创建我的自定义技能 + * @request POST:/skills/mine + * @secure + */ + export namespace MineCreate { + export type RequestParams = {}; + export type RequestQuery = {}; + export type RequestBody = WriteSkillRequest; + export type RequestHeaders = {}; + export type ResponseBody = SkillResponseDoc; + } + + /** + * No description + * @tags skills + * @name MineDelete + * @summary 删除我的自定义技能 + * @request DELETE:/skills/mine/{id} + * @secure + */ + export namespace MineDelete { + export type RequestParams = { + /** 技能ID */ + id: number; + }; + export type RequestQuery = {}; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = SkillDeleteResponseDoc; + } + + /** + * No description + * @tags skills + * @name MinePartialUpdate + * @summary 更新我的自定义技能 + * @request PATCH:/skills/mine/{id} + * @secure + */ + export namespace MinePartialUpdate { + export type RequestParams = { + /** 技能ID */ + id: number; + }; + export type RequestQuery = {}; + export type RequestBody = PatchSkillRequest; + export type RequestHeaders = {}; + export type ResponseBody = SkillResponseDoc; + } + + /** + * @description 按需返回单个可用 Skill 的完整 SKILL.md 内容,用于用户查看详情 + * @tags skills + * @name SkillsDetail + * @summary 查询当前用户可用技能详情 + * @request GET:/skills/{id} + * @secure + */ + export namespace SkillsDetail { + export type RequestParams = { + /** 技能ID */ + id: number; + }; + export type RequestQuery = {}; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = SkillResponseDoc; + } +} + +export namespace User { + /** + * @description 返回当前用户全部个人偏好配置,缺失项以默认值填充 + * @tags user/settings + * @name SettingsList + * @summary 获取当前用户的配置 + * @request GET:/user/settings + * @secure + */ + export namespace SettingsList { + export type RequestParams = {}; + export type RequestQuery = {}; + export type RequestBody = never; + export type RequestHeaders = {}; + export type ResponseBody = UserSettingsResponseDoc; + } + + /** + * @description 批量更新用户个人偏好配置,返回更新后的全量配置 + * @tags user/settings + * @name SettingsPartialUpdate + * @summary 更新当前用户的配置 + * @request PATCH:/user/settings + * @secure + */ + export namespace SettingsPartialUpdate { + export type RequestParams = {}; + export type RequestQuery = {}; + export type RequestBody = UserSettingsPatchSettingsRequest; + export type RequestHeaders = {}; + export type ResponseBody = UserSettingsResponseDoc; + } +} diff --git a/packages/api-contract/tsconfig.json b/packages/api-contract/tsconfig.json new file mode 100644 index 00000000..c5bd8139 --- /dev/null +++ b/packages/api-contract/tsconfig.json @@ -0,0 +1,12 @@ +{ + "compilerOptions": { + "module": "ESNext", + "moduleResolution": "Bundler", + "noEmit": true, + "skipLibCheck": true, + "strict": true, + "target": "ES2022", + "verbatimModuleSyntax": true + }, + "include": ["src/**/*.ts"] +} diff --git a/frontend/pnpm-lock.yaml b/pnpm-lock.yaml similarity index 69% rename from frontend/pnpm-lock.yaml rename to pnpm-lock.yaml index 93e586a7..db37c021 100644 --- a/frontend/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -20,10 +20,18 @@ overrides: importers: .: + devDependencies: + turbo: + specifier: 2.10.5 + version: 2.10.5 + + backend: {} + + frontend: dependencies: '@base-ui/react': specifier: ^1.4.1 - version: 1.4.1(@date-fns/tz@1.4.1)(@types/react@19.2.14)(date-fns@4.1.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + version: 1.6.0(@date-fns/tz@1.5.0)(@types/react@19.2.17)(date-fns@4.4.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@dnd-kit/core': specifier: ^6.3.1 version: 6.3.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) @@ -34,38 +42,38 @@ importers: specifier: ^3.2.2 version: 3.2.2(react@19.2.5) '@lobehub/icons-static-svg': - specifier: ^1.90.0 + specifier: 1.90.0 version: 1.90.0 '@radix-ui/react-avatar': specifier: ^1.1.11 - version: 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + version: 1.2.2(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@radix-ui/react-collapsible': specifier: ^1.1.12 - version: 1.1.12(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + version: 1.1.16(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@radix-ui/react-dialog': specifier: ^1.1.15 - version: 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + version: 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@radix-ui/react-dropdown-menu': specifier: ^2.1.16 - version: 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + version: 2.1.20(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@radix-ui/react-popover': specifier: ^1.1.15 - version: 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + version: 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@radix-ui/react-separator': specifier: ^1.1.8 - version: 1.1.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + version: 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@radix-ui/react-slot': specifier: ^1.2.4 - version: 1.2.4(@types/react@19.2.14)(react@19.2.5) + version: 1.3.0(@types/react@19.2.17)(react@19.2.5) '@radix-ui/react-tooltip': specifier: ^1.2.8 - version: 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + version: 1.2.12(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@radix-ui/react-use-controllable-state': specifier: ^1.2.2 - version: 1.2.2(@types/react@19.2.14)(react@19.2.5) + version: 1.2.3(@types/react@19.2.17)(react@19.2.5) '@shadcn/react': specifier: ^0.1.0 - version: 0.1.0(@types/react@19.2.14)(react@19.2.5) + version: 0.1.0(@types/react@19.2.17)(react@19.2.5) '@streamdown/cjk': specifier: ^1.0.3 version: 1.0.3(@types/mdast@4.0.4)(micromark-util-types@2.0.2)(micromark@4.0.2)(react@19.2.5)(unified@11.0.5) @@ -80,7 +88,7 @@ importers: version: 1.0.2(react@19.2.5) '@tanstack/react-virtual': specifier: ^3.14.2 - version: 3.14.2(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + version: 3.14.6(react-dom@19.2.5(react@19.2.5))(react@19.2.5) class-variance-authority: specifier: ^0.7.1 version: 0.7.1 @@ -89,19 +97,19 @@ importers: version: 2.1.1 cmdk: specifier: ^1.1.1 - version: 1.1.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + version: 1.1.1(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) date-fns: specifier: ^4.1.0 - version: 4.1.0 + version: 4.4.0 docx-preview: specifier: ^0.3.7 version: 0.3.7 katex: specifier: ^0.16.45 - version: 0.16.45 + version: 0.16.47 lucide-react: specifier: ^1.12.0 - version: 1.12.0(react@19.2.5) + version: 1.24.0(react@19.2.5) modern-screenshot: specifier: 4.6.5 version: 4.6.5 @@ -110,13 +118,13 @@ importers: version: 0.55.1 motion: specifier: ^12.38.0 - version: 12.38.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + version: 12.42.2(react-dom@19.2.5(react@19.2.5))(react@19.2.5) next: specifier: 16.3.0-preview.6 version: 16.3.0-preview.6(@babel/core@7.29.7)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) next-intl: specifier: ^4.12.0 - version: 4.12.0(next@16.3.0-preview.6(@babel/core@7.29.7)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react@19.2.5)(typescript@7.0.2) + version: 4.13.2(next@16.3.0-preview.6(@babel/core@7.29.7)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react@19.2.5)(typescript@7.0.2) next-themes: specifier: ^0.4.6 version: 0.4.6(react-dom@19.2.5(react@19.2.5))(react@19.2.5) @@ -128,22 +136,22 @@ importers: version: 5.7.284 radix-ui: specifier: ^1.4.3 - version: 1.4.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + version: 1.6.2(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) react: specifier: 19.2.5 version: 19.2.5 react-day-picker: specifier: ^10.0.0 - version: 10.0.0(react@19.2.5) + version: 10.0.1(@types/react@19.2.17)(react@19.2.5) react-dom: specifier: 19.2.5 version: 19.2.5(react@19.2.5) recharts: specifier: 3.8.0 - version: 3.8.0(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react-is@16.13.1)(react@19.2.5)(redux@5.0.1) + version: 3.8.0(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react-is@19.2.7)(react@19.2.5)(redux@5.0.1) shadcn: specifier: ^4.12.0 - version: 4.12.0(typescript@7.0.2) + version: 4.13.0(typescript@7.0.2) sonner: specifier: ^2.0.7 version: 2.0.7(react-dom@19.2.5(react@19.2.5))(react@19.2.5) @@ -152,29 +160,32 @@ importers: version: 2.5.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5) tailwind-merge: specifier: ^3.5.0 - version: 3.5.0 + version: 3.6.0 vaul: specifier: ^1.1.2 - version: 1.1.2(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + version: 1.1.2(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) devDependencies: '@biomejs/biome': specifier: 2.5.4 version: 2.5.4 + '@deeix/api-contract': + specifier: workspace:* + version: link:../packages/api-contract '@tailwindcss/postcss': specifier: ^4.2.4 - version: 4.2.4 + version: 4.3.2 '@types/node': specifier: ^25.6.0 - version: 25.6.0 + version: 25.9.5 '@types/react': specifier: ^19.2.14 - version: 19.2.14 + version: 19.2.17 '@types/react-dom': specifier: ^19.2.3 - version: 19.2.3(@types/react@19.2.14) + version: 19.2.3(@types/react@19.2.17) tailwindcss: specifier: ^4.2.4 - version: 4.2.4 + version: 4.3.2 tw-animate-css: specifier: ^1.4.0 version: 1.4.0 @@ -182,6 +193,15 @@ importers: specifier: 7.0.2 version: 7.0.2 + packages/api-contract: + devDependencies: + swagger-typescript-api: + specifier: 13.12.5 + version: 13.12.5(react@19.2.5) + typescript: + specifier: 7.0.2 + version: 7.0.2 + packages: '@alloc/quick-lru@5.2.0': @@ -191,6 +211,22 @@ packages: '@antfu/install-pkg@1.1.0': resolution: {integrity: sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==} + '@apidevtools/json-schema-ref-parser@14.0.1': + resolution: {integrity: sha512-Oc96zvmxx1fqoSEdUmfmvvb59/KDOnUoJ7s2t7bISyAn0XEz57LCCw8k2Y4Pf3mwKaZLMciESALORLgfe2frCw==} + engines: {node: '>= 16'} + + '@apidevtools/openapi-schemas@2.1.0': + resolution: {integrity: sha512-Zc1AlqrJlX3SlpupFGpiLi2EbteyP7fXmUOGup6/DnkRgjP9bgMM/ag+n91rsv0U1Gpz0H3VILA/o3bW7Ua6BQ==} + engines: {node: '>=10'} + + '@apidevtools/swagger-methods@3.0.2': + resolution: {integrity: sha512-QAkD5kK2b1WfjDS/UQn/qQkbwF31uqRjPTrsCs5ZG9BQGAkjwvqGFjjPqAuzac/IYzpPtRzjCP1WrTuAIjMrXg==} + + '@apidevtools/swagger-parser@12.1.0': + resolution: {integrity: sha512-e5mJoswsnAX0jG+J09xHFYQXb/bUc5S3pLpMxUuRUA2H8T2kni3yEoyz2R3Dltw5f4A6j6rPNMpWTK+iVDFlng==} + peerDependencies: + openapi-types: '>=7' + '@babel/code-frame@7.29.7': resolution: {integrity: sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==} engines: {node: '>=6.9.0'} @@ -308,8 +344,8 @@ packages: peerDependencies: '@babel/core': 7.29.7 - '@babel/runtime@7.29.2': - resolution: {integrity: sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g==} + '@babel/runtime@7.29.7': + resolution: {integrity: sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw==} engines: {node: '>=6.9.0'} '@babel/template@7.29.7': @@ -324,8 +360,8 @@ packages: resolution: {integrity: sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==} engines: {node: '>=6.9.0'} - '@base-ui/react@1.4.1': - resolution: {integrity: sha512-Ab5/LIhcmL8BQcsBUYiOfkSDRdLpvgUBzMK30cu684JPcLclYlztharvCZyNNgzJtbAiREzI9q0pI5erHCMgCw==} + '@base-ui/react@1.6.0': + resolution: {integrity: sha512-/jzjTWJYXhRFO45Bev9lc3cHbmjzCMpUqbMZ2AgKy/z25mY9B6shGSNcXcjQar9n5doM0KYW1W8fcFv2jZBuMw==} engines: {node: '>=14.0.0'} peerDependencies: '@date-fns/tz': ^1.2.0 @@ -341,8 +377,8 @@ packages: date-fns: optional: true - '@base-ui/utils@0.2.8': - resolution: {integrity: sha512-jvOi+c+ftGlGotNcKnzPVg2IhCaDTB6/6R3JeqdjdXktuAJi3wKH9T7+svuaKh1mmfVU11UWzUZVH74JDfi/wQ==} + '@base-ui/utils@0.3.1': + resolution: {integrity: sha512-gFFiltORVmW/N6IILTGxizP3PBpVpysqML1ALY5Vk0mH+7faVkCknOU31goYHN5Aoek2dkjxva1XOD2Ce9WuIg==} peerDependencies: '@types/react': ^17 || ^18 || ^19 react: ^17 || ^18 || ^19 @@ -404,14 +440,31 @@ packages: cpu: [x64] os: [win32] + '@biomejs/js-api@6.0.0': + resolution: {integrity: sha512-8HP7wexjQo5Np1J9h0B2x8L5G0GZpCacgjykxLHtvLPvF0hNqSG754oh8bxo+OSFDpVGMfSjmLO+ZY/5KbfjmQ==} + peerDependencies: + '@biomejs/wasm-bundler': ^2.5.0 + '@biomejs/wasm-nodejs': ^2.5.0 + '@biomejs/wasm-web': ^2.5.0 + peerDependenciesMeta: + '@biomejs/wasm-bundler': + optional: true + '@biomejs/wasm-nodejs': + optional: true + '@biomejs/wasm-web': + optional: true + + '@biomejs/wasm-nodejs@2.5.2': + resolution: {integrity: sha512-B0r7jLdCmXhq4+jnx1oA0/SChLy5G283r35HJr276T+w6qgqAPAhqfnlKs+UobclAfidNDbfj9ZmcuCijaHDxQ==} + '@braintree/sanitize-url@7.1.2': resolution: {integrity: sha512-jigsZK+sMF/cuiB7sERuo9V7N9jx+dhmHHnQyDSVdpZwVutaBu7WvNYqMDLSgFgfB30n452TP3vjDAvFC973mA==} '@chevrotain/types@11.1.2': resolution: {integrity: sha512-U+HFai5+zmJCkK86QsaJtoITlboZHBqrVketcO2ROv865xfCMSFpELQoz1GkX5GzME8pTa+3kbKrZHQtI0gdbw==} - '@date-fns/tz@1.4.1': - resolution: {integrity: sha512-P5LUNhtbj6YfI3iJjw5EL9eUAG6OitD0W3fWQcpQjDRc/QIsL0tRNuO1PcDvPccWL1fSTXXdE1ds+l95DV/OFA==} + '@date-fns/tz@1.5.0': + resolution: {integrity: sha512-lwYN/vDPeNRULcepoE/LO2Pgx+7/RV+S9ARfbc9lr2DtGkOD7pAiruHvbR1RX3Qyf6ja47EWJDMsNK5vK08DJg==} '@dnd-kit/accessibility@3.1.1': resolution: {integrity: sha512-2P+YgaXF+gRsIihwwY1gCsQSYnu9Zyj2py8kY5fFvUM1qm2WA2u639R6YNVfU4GWr+ZM5mqEsfHZZLoRONbemw==} @@ -442,35 +495,38 @@ packages: '@dotenvx/primitives@0.8.0': resolution: {integrity: sha512-VYJy0uhFm9zTJ1TxBaW/pA8bjbOM/OttaNMwZ1RHG4JKyRG7DhSdiqD1ipQoAyoD22olUtxbP78W9xY3Wd11bg==} - '@emnapi/runtime@1.10.0': - resolution: {integrity: sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==} + '@emnapi/runtime@1.11.2': + resolution: {integrity: sha512-kyOl3X0DuTiT1h2ft8r2fYO8JYtU9a9Xis/zBSiGArNaagCOWx90N1k2wxp18czFDH+OgcWGb5ZP/XMt3dcyPA==} + + '@exodus/schemasafe@1.3.0': + resolution: {integrity: sha512-5Aap/GaRupgNx/feGBwLLTVv8OQFfv3pq2lPRzPg9R+IOBnDgghTGW7l7EuVXOvg5cc/xSAlRW8rBrjIC3Nvqw==} - '@floating-ui/core@1.7.5': - resolution: {integrity: sha512-1Ih4WTWyw0+lKyFMcBHGbb5U5FtuHJuujoyyr5zTaWS5EYMeT6Jb2AuDeftsCsEuchO+mM2ij5+q9crhydzLhQ==} + '@floating-ui/core@1.8.0': + resolution: {integrity: sha512-0CIZ5itps/8x7BG8dEIhs53BvCUH2PCoogtakwRTut+Arm58sJooJ0AuZhLw2HJYIR5cMLNPBSS728sPho2khQ==} - '@floating-ui/dom@1.7.6': - resolution: {integrity: sha512-9gZSAI5XM36880PPMm//9dfiEngYoC6Am2izES1FF406YFsjvyBMmeJ2g4SAju3xWwtuynNRFL2s9hgxpLI5SQ==} + '@floating-ui/dom@1.8.0': + resolution: {integrity: sha512-yXSrzeHZBTZadLOlfyhCkJHNeLJnHRnRInwdZ40L7ZiaAtrBwoYlsDrX3v5zB1Utk7CLfzcOVnVVWoXEky7Ceg==} - '@floating-ui/react-dom@2.1.8': - resolution: {integrity: sha512-cC52bHwM/n/CxS87FH0yWdngEZrjdtLW/qVruo68qg+prK7ZQ4YGdut2GyDVpoGeAYe/h899rVeOVm6Oi40k2A==} + '@floating-ui/react-dom@2.1.9': + resolution: {integrity: sha512-JDjEFGCpImxDCA7JJKviA0M9+RtmJdj0m/NVU5IMgBK+AmZouAQQ7/+2GLH0GXXY0YMw9oXPB8hKdbPYg5QLYg==} peerDependencies: react: '>=16.8.0' react-dom: '>=16.8.0' - '@floating-ui/utils@0.2.11': - resolution: {integrity: sha512-RiB/yIh78pcIxl6lLMG0CgBXAZ2Y0eVHqMPYugu+9U0AeT6YBeiJpf7lbdJNIugFP5SIjwNRgo4DhR1Qxi26Gg==} + '@floating-ui/utils@0.2.12': + resolution: {integrity: sha512-HpCo8tmWzLVad5s2d19EhAz5zqrrQ6s69qd6moPMQvkOuSwDT1YgRfWSVuc4ennqrgv3OHppiOGMQ7oC13yIww==} - '@formatjs/fast-memoize@3.1.5': - resolution: {integrity: sha512-KLi3fan6WnCHmigd9pmEEN8Hid0v4wiFBW576M/d07KMWYecf1CvyMI3n34vCmHT4AoVqG2n702kiHbXjzZX2A==} + '@formatjs/fast-memoize@3.1.7': + resolution: {integrity: sha512-zXfhLpvA6T7+efdt9JLbBwZ00tT7NsBMDVnDu8rpHeNNv8KfRZAMo2gkG0k9lK/Nzc//3kJ9pImsfuJxk3KhUA==} - '@formatjs/icu-messageformat-parser@3.5.9': - resolution: {integrity: sha512-PZm6O9JI/gUPtQV9r2eaMuLb4yWqV2vz+ot03ORHWTKO343LSpZi0TqeXLB2ZZGDXLCw2SbfgsQ0GxoxXMl79g==} + '@formatjs/icu-messageformat-parser@3.5.15': + resolution: {integrity: sha512-5o4grXKotAB3JqQuisLApHG43g17N+paoRTa92Jiz35Zvfemq0cVf4EDvuxyHAzmsJji7igaEowicLO/VmfJ8Q==} - '@formatjs/icu-skeleton-parser@2.1.9': - resolution: {integrity: sha512-rsxswgHMfU1zUgB2byc08fesf83wLGjFnzLCEtuf00mx2doiqc6pYrf67raI37XqdRcGUviQepk2UKGqpng74Q==} + '@formatjs/icu-skeleton-parser@2.1.11': + resolution: {integrity: sha512-j8cUmOJzVgkHuS0QiQ6ga76UIoLOFSAMWhs7aZJztH3aAdCOAE6vpC8KVvFB4cU10ON0y2/5oOVmPJ43s2lTwA==} - '@formatjs/intl-localematcher@0.8.8': - resolution: {integrity: sha512-pBr2hVKWvkHVnfXegW+53NT9U2uaVQCc+EgzLPCCwXqBA3nvM5fPbK9IcJlNjV+NMKGyZ2F3ZSG78iGdxAAqbA==} + '@formatjs/intl-localematcher@0.8.13': + resolution: {integrity: sha512-kHEAFOkeJSPNi7c5PaKaRjxcBrJwzzt81ifUu+8uve1EDW/VJl83KsxmqgqNZLzcFEhSliZGvx3+pk/RH0IOmg==} '@hono/node-server@1.19.14': resolution: {integrity: sha512-GwtvgtXxnWsucXvbQXkRgqksiH2Qed37H9xHZocE5sA3N8O8O8/8FA3uclQXxXVzc9XBZuEOMK7+r02FmSpHtw==} @@ -481,8 +537,8 @@ packages: '@iconify/types@2.0.0': resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} - '@iconify/utils@3.1.0': - resolution: {integrity: sha512-Zlzem1ZXhI1iHeeERabLNzBHdOa4VhQbqAcOQaMKuTuyZCpwKbC2R4Dd0Zo3g9EAc+Y4fiarO8HIHRAth7+skw==} + '@iconify/utils@3.1.4': + resolution: {integrity: sha512-b1S7B1k9ohZ+iNTi2ATxbRYG9fTrJmUT0rc46bvVnNxqNRGW7dyo/vRREwyniI5IRN2RSJHDcm+s3BjWrSAjHw==} '@img/colour@1.1.0': resolution: {integrity: sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==} @@ -640,8 +696,8 @@ packages: '@lobehub/icons-static-svg@1.90.0': resolution: {integrity: sha512-iy/OBllvvj1YOCN7NqCYJJKdLS0l02+PSSYAwXKUWpGb6i+7J5rIpLh8RaetrYcqoqSmxE2jE6w5zhhaTmPw7Q==} - '@mermaid-js/parser@1.1.1': - resolution: {integrity: sha512-VuHdsYMK1bT6X2JbcAaWAhugTRvRBRyuZgd+c22swUeI9g/ntaxF7CY7dYarhZovofCbUNO0G7JesfmNtjYOCw==} + '@mermaid-js/parser@1.2.0': + resolution: {integrity: sha512-oYPyv8A4As1yH5Bx+04iQEQxXuIQDe0GKCNSRgao6z8AM9jixXIfP0vsppRLvGf+nKIOb9/LdpWA4YuJiVvESA==} '@modelcontextprotocol/sdk@1.29.0': resolution: {integrity: sha512-zo37mZA9hJWpULgkRpowewez1y6ML5GsXJPY8FI0tBBCd77HEvza4jDqRKOXgHNn867PVGCyTdzqpz0izu5ZjQ==} @@ -868,27 +924,14 @@ packages: resolution: {integrity: sha512-tmmZ3lQxAe/k/+rNnXQRawJ4NjxO2hqiOLTHvWchtGZULp4RyFeh6aU4XdOYBFe2KE1oShQTv4AblOs2iOrNnQ==} engines: {node: '>= 10.0.0'} - '@radix-ui/number@1.1.1': - resolution: {integrity: sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g==} - - '@radix-ui/primitive@1.1.3': - resolution: {integrity: sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==} + '@radix-ui/number@1.1.2': + resolution: {integrity: sha512-ceTwaxc4I5IOi97DgCotl3pqiyRGvffcc0oOsE2dQYaJOFIDsDt4VWG6xEbg1QePv9QWausCEIppud/tJ1wNig==} - '@radix-ui/react-accessible-icon@1.1.7': - resolution: {integrity: sha512-XM+E4WXl0OqUJFovy6GjmxxFyx9opfCAIUku4dlKRd5YEPqt4kALOkQOp0Of6reHuUkJuiPBEc5k0o4z4lTC8A==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true + '@radix-ui/primitive@1.1.5': + resolution: {integrity: sha512-d86WIWFYNtGA0H/d8exstrTRTp7eWJYlYJbtNofxr/3ljupZYn6EFDG/Qgu/0Kc8v7yMUxySagqJsL1+PdYjWg==} - '@radix-ui/react-accordion@1.2.12': - resolution: {integrity: sha512-T4nygeh9YE9dLRPhAHSeOZi7HBXo+0kYIPJXayZfvWOWA0+n3dESrZbjfDPUABkUNym6Hd+f2IR113To8D2GPA==} + '@radix-ui/react-accessible-icon@1.1.11': + resolution: {integrity: sha512-HQDOFTKwSnmUij6l54wYJJtxTAnxI71+YJLOrjm2ladFB8HAV5Jt7hwaZPhWTGBkYoW4+ZAOfNZrLDh/qvxSYA==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -900,8 +943,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-alert-dialog@1.1.15': - resolution: {integrity: sha512-oTVLkEw5GpdRe29BqJ0LSDFWI3qu0vR1M0mUkOQWDIUnY/QIkLpgDMWuKxP94c2NAC2LGcgVhG1ImF3jkZ5wXw==} + '@radix-ui/react-accordion@1.2.16': + resolution: {integrity: sha512-BpZJNmetujnGgUI6OX0jEhEmlA46WPqgub8Rv09Kyquwd0cc1ndMKpiPYCjmBU6KSSRPAMtgLpEoZSG/tdNIWQ==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -913,8 +956,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-arrow@1.1.7': - resolution: {integrity: sha512-F+M1tLhO+mlQaOWspE8Wstg+z6PwxwRd8oQ8IXceWz92kfAmalTRf0EjrouQeo7QssEPfCn05B4Ihs1K9WQ/7w==} + '@radix-ui/react-alert-dialog@1.1.19': + resolution: {integrity: sha512-FA7n1f6D/DwGE0+AWxiY5LacNbbExQuEgMubeG06idEaH+mSLuf9dp/qBNqOnvbTQ+4gZ2ue1RATF1Ub91Mg5g==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -926,8 +969,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-aspect-ratio@1.1.7': - resolution: {integrity: sha512-Yq6lvO9HQyPwev1onK1daHCHqXVLzPhSVjmsNjCa2Zcxy2f7uJD2itDtxknv6FzAKCwD1qQkeVDmX/cev13n/g==} + '@radix-ui/react-arrow@1.1.11': + resolution: {integrity: sha512-Kdil9BB1rIFC/khmf4hC35bn8701AJcizTU7G7cUbEbk5XqqbjDuHW60uUfKqO5WojjZcbAW51Q7P0hRmMLw8A==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -939,8 +982,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-avatar@1.1.10': - resolution: {integrity: sha512-V8piFfWapM5OmNCXTzVQY+E1rDa53zY+MQ4Y7356v4fFz6vqCyUtIz2rUD44ZEdwg78/jKmMJHj07+C/Z/rcog==} + '@radix-ui/react-aspect-ratio@1.1.11': + resolution: {integrity: sha512-IUAhIVpBUvP5NNICjlaB1OFmtRLGqQqTF3ZOSGPoq3XeLXRFtHiWTRxSVEULgOd9GQR2c7tsYqDnhUennapZnw==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -952,8 +995,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-avatar@1.1.11': - resolution: {integrity: sha512-0Qk603AHGV28BOBO34p7IgD5m+V5Sg/YovfayABkoDDBM5d3NCx0Mp4gGrjzLGes1jV5eNOE1r3itqOR33VC6Q==} + '@radix-ui/react-avatar@1.2.2': + resolution: {integrity: sha512-sST0qh8GzOB7besQ3tMLWLyngnRuSk0gc/Hm+667KYKQFCt6Y6ZXv25WlqM7dIDK54ULCh5+CHmk4LIolzfz+A==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -965,8 +1008,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-checkbox@1.3.3': - resolution: {integrity: sha512-wBbpv+NQftHDdG86Qc0pIyXk5IR3tM8Vd0nWLKDcX8nNn4nXFOFwsKuqw2okA/1D/mpaAkmuyndrPJTYDNZtFw==} + '@radix-ui/react-checkbox@1.3.7': + resolution: {integrity: sha512-JroKHfQBfh+fDuzpPsBC+pESkhuq8ql4hljTguz8MWnS35cISr3d/Jhl9kYrB44FlDtxCArYdDvTx+BSsJ64rQ==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -978,8 +1021,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-collapsible@1.1.12': - resolution: {integrity: sha512-Uu+mSh4agx2ib1uIGPP4/CKNULyajb3p92LsVXmH2EHVMTfZWpll88XJ0j4W0z3f8NK1eYl1+Mf/szHPmcHzyA==} + '@radix-ui/react-collapsible@1.1.16': + resolution: {integrity: sha512-opfXRe6nnzyGmCDPx+l1Aqo/RbqWtQal2FnsBqF9hhePp6j0LsRoBaRxcMOlTv+uYTJVtWYZKg9t9wTe+BA/ZA==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -991,8 +1034,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-collection@1.1.7': - resolution: {integrity: sha512-Fh9rGN0MoI4ZFUNyfFVNU4y9LUz93u9/0K+yLgA2bwRojxM8JU1DyvvMBabnZPBgMWREAJvU2jjVzq+LrFUglw==} + '@radix-ui/react-collection@1.1.12': + resolution: {integrity: sha512-nb67INpE0IahJKN7EYPp9m9YGwYeKlnzxT3MwXVkgCskaSJia97kG4T0ywpjNUSSnoJk/uvk12V8vbrEHEj+/Q==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -1004,8 +1047,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-compose-refs@1.1.2': - resolution: {integrity: sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==} + '@radix-ui/react-compose-refs@1.1.3': + resolution: {integrity: sha512-rYOP8OMnuuPMQF1uhPVlGNcCDlkokKqGFE3JcxFViIkAXP7EvFWUliJAstrapypaBLJNHbZL6jGhbVDGTwmVhA==} peerDependencies: '@types/react': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc @@ -1013,8 +1056,8 @@ packages: '@types/react': optional: true - '@radix-ui/react-context-menu@2.2.16': - resolution: {integrity: sha512-O8morBEW+HsVG28gYDZPTrT9UUovQUlJue5YO836tiTJhuIWBm/zQHc7j388sHWtdH/xUZurK9olD2+pcqx5ww==} + '@radix-ui/react-context-menu@2.3.3': + resolution: {integrity: sha512-PS+gKE0z2prJ74Y0sM+brAGK4mYOHIR7TlcV5EJgUQ6E0xMvyswkK2X4yRqyganrzsRL+WCSKAPu0NQITICRWg==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -1026,17 +1069,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-context@1.1.2': - resolution: {integrity: sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-context@1.1.3': - resolution: {integrity: sha512-ieIFACdMpYfMEjF0rEf5KLvfVyIkOz6PDGyNnP+u+4xQ6jny3VCgA4OgXOwNx2aUkxn8zx9fiVcM8CfFYv9Lxw==} + '@radix-ui/react-context@1.2.0': + resolution: {integrity: sha512-fOE+JtN9rygNZkCnHRBEP0TAvLldlhyOxMsbwFvTP4nAs+nBmfnna+o/Zski2wkmY1YMrFC0aSzsHoLY47iLrg==} peerDependencies: '@types/react': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc @@ -1044,8 +1078,8 @@ packages: '@types/react': optional: true - '@radix-ui/react-dialog@1.1.15': - resolution: {integrity: sha512-TCglVRtzlffRNxRMEyR36DGBLJpeusFcgMVD9PZEzAKnUs1lKCgX5u9BmC2Yg+LL9MgZDugFFs1Vl+Jp4t/PGw==} + '@radix-ui/react-dialog@1.1.19': + resolution: {integrity: sha512-+HhbN2+YtkRgVirjZ2afMeutQRuGOrdkWR5+EFC58SJojGmtyNQwYzgi6tHBpOxvFHefMtPeHdgtjz0BOGxFQg==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -1057,8 +1091,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-direction@1.1.1': - resolution: {integrity: sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw==} + '@radix-ui/react-direction@1.1.2': + resolution: {integrity: sha512-C3vFhbyi4SW3PmbAi6Awpu4OzJtd0MxGurvSsYtr7p7nM8RNB3VAF3CUmnp2j50knpkrRcB7+ycVXzgLgF6yNA==} peerDependencies: '@types/react': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc @@ -1066,8 +1100,8 @@ packages: '@types/react': optional: true - '@radix-ui/react-dismissable-layer@1.1.11': - resolution: {integrity: sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg==} + '@radix-ui/react-dismissable-layer@1.1.15': + resolution: {integrity: sha512-b0XaRlzn2QKuo10XyNgi2DAJDf5XC9d1nD3FJcuvCjbR7+4Ad28zmZsLsqx+hvDEzMnRuZaZxZm9gYObV6RmRA==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -1079,8 +1113,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-dropdown-menu@2.1.16': - resolution: {integrity: sha512-1PLGQEynI/3OX/ftV54COn+3Sud/Mn8vALg2rWnBLnRaGtJDduNW/22XjlGgPdpcIbiQxjKtb7BkcjP00nqfJw==} + '@radix-ui/react-dropdown-menu@2.1.20': + resolution: {integrity: sha512-slfm+rRaZRuQBvHq60lXvSVUPhid0IPtjSZzIuUlWZMUs01iYZNlGS3mJgRD3ChLQVBAYlKiL/tFyWGX+dz8Xw==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -1092,30 +1126,17 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-focus-guards@1.1.3': - resolution: {integrity: sha512-0rFg/Rj2Q62NCm62jZw0QX7a3sz6QCQU0LpZdNrJX8byRGaGVTqbrW9jAoIAHyMQqsNpeZ81YgSizOt5WXq0Pw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-focus-scope@1.1.7': - resolution: {integrity: sha512-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw==} + '@radix-ui/react-focus-guards@1.1.4': + resolution: {integrity: sha512-cot/aB/mOm0IYVYTTmQcEEK1M48lZWi8FlYe5nDPQQ8NYZUlXEFgncJ9p2Kzer3RKSrY7cTTpEMLZKNo9QoP5Q==} peerDependencies: '@types/react': '*' - '@types/react-dom': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true - '@types/react-dom': - optional: true - '@radix-ui/react-form@0.1.8': - resolution: {integrity: sha512-QM70k4Zwjttifr5a4sZFts9fn8FzHYvQ5PiB19O2HsYibaHSVt9fH9rzB0XZo/YcM+b7t/p7lYCT/F5eOeF5yQ==} + '@radix-ui/react-focus-scope@1.1.12': + resolution: {integrity: sha512-jjk/lqTeNL0azUx5ZYzVrl4NgaDIrdzTNE4mABV9yBFI7FQqN7pIgzV1bTleUezP2QiTGA1BFTqY8MegDgWX9A==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -1127,8 +1148,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-hover-card@1.1.15': - resolution: {integrity: sha512-qgTkjNT1CfKMoP0rcasmlH2r1DAiYicWsDsufxl940sT2wHNEWWv6FMWIQXWhVdmC1d/HYfbhQx60KYyAtKxjg==} + '@radix-ui/react-form@0.1.12': + resolution: {integrity: sha512-JTX94E4LDL91rzLg7X0mHPdxr0A8JEdVwZEmeOwZJSMDHCGW5DFtSlTSJozUyUs807IQmnvbfzKZFVCK5DmkqQ==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -1140,17 +1161,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-id@1.1.1': - resolution: {integrity: sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-label@2.1.7': - resolution: {integrity: sha512-YT1GqPSL8kJn20djelMX7/cTRp/Y9w5IZHvfxQTVHrOqa2yMl7i/UfMqKRU5V7mEyKTrUVgJXhNQPVCG8PBLoQ==} + '@radix-ui/react-hover-card@1.1.19': + resolution: {integrity: sha512-2KTgMLQtKvicznQgbindEI2RZ3QbDIwU5gabjUPwFJsormjGDz+rUvO4NANmYwzEEpTcTONUt33vBHIfTIVSfw==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -1162,21 +1174,17 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-menu@2.1.16': - resolution: {integrity: sha512-72F2T+PLlphrqLcAotYPp0uJMr5SjP5SL01wfEspJbru5Zs5vQaSHb4VB3ZMJPimgHHCHG7gMOeOB9H3Hdmtxg==} + '@radix-ui/react-id@1.1.2': + resolution: {integrity: sha512-orBC88futVpqCmhX1p4cvquNHsELQ+w+vBJnuj3ftETI5bJb0bZn3Tqu3SWN2IOcPycTnMGnhwoermvISt72sA==} peerDependencies: '@types/react': '*' - '@types/react-dom': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true - '@types/react-dom': - optional: true - '@radix-ui/react-menubar@1.1.16': - resolution: {integrity: sha512-EB1FktTz5xRRi2Er974AUQZWg2yVBb1yjip38/lgwtCVRd3a+maUoGHN/xs9Yv8SY8QwbSEb+YrxGadVWbEutA==} + '@radix-ui/react-label@2.1.11': + resolution: {integrity: sha512-3PKvDDxOn62k0oV1n4QtNtD2vpu+zYjXR7ojLBPaO6SPvhy53yg0vAmgNeBQeJW5rV3dffoRG+HYfLBZuzw0CQ==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -1188,8 +1196,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-navigation-menu@1.2.14': - resolution: {integrity: sha512-YB9mTFQvCOAQMHU+C/jVl96WmuWeltyUEpRJJky51huhds5W2FQr1J8D/16sQlf0ozxkPK8uF3niQMdUwZPv5w==} + '@radix-ui/react-menu@2.1.20': + resolution: {integrity: sha512-VsUrXxFe9d2ScbZF0fR/oPR1+qjyeLs5p0jzG8h90puMoA9bq4SirYlXbE+USRg9Q2qTeJSFNqjw2nts8jJe4w==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -1201,8 +1209,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-one-time-password-field@0.1.8': - resolution: {integrity: sha512-ycS4rbwURavDPVjCb5iS3aG4lURFDILi6sKI/WITUMZ13gMmn/xGjpLoqBAalhJaDk8I3UbCM5GzKHrnzwHbvg==} + '@radix-ui/react-menubar@1.1.20': + resolution: {integrity: sha512-gzFZvybgmwYsFBWDqanycIoEYnhyk8MMnuLamdFVHUZYGp4COM+sqXiwbnn0VMWqGLeeU7GV7jm+dXRa+Wufag==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -1214,8 +1222,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-password-toggle-field@0.1.3': - resolution: {integrity: sha512-/UuCrDBWravcaMix4TdT+qlNdVwOM1Nck9kWx/vafXsdfj1ChfhOdfi3cy9SGBpWgTXwYCuboT/oYpJy3clqfw==} + '@radix-ui/react-navigation-menu@1.2.18': + resolution: {integrity: sha512-K9HiuxZ6xCwSaHcIuUpxyhy4w5gpwzWjh9dHTSbMN3Ix4qAyVObS9RlU3zMycb0PO3v9Tpk0BXMwWvXOUbVXew==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -1227,8 +1235,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-popover@1.1.15': - resolution: {integrity: sha512-kr0X2+6Yy/vJzLYJUPCZEc8SfQcf+1COFoAqauJm74umQhta9M7lNJHP7QQS3vkvcGLQUbWpMzwrXYwrYztHKA==} + '@radix-ui/react-one-time-password-field@0.1.12': + resolution: {integrity: sha512-nQLu5OAcORDQp1EHAv6k3mJGV1hjMTw2NTGVAsGE1g/mWeNqAd1R5jyaAs3U+A8ZD/W8XNPY2yKT0ZdQnqo3NA==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -1240,8 +1248,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-popper@1.2.8': - resolution: {integrity: sha512-0NJQ4LFFUuWkE7Oxf0htBKS6zLkkjBH+hM1uk7Ng705ReR8m/uelduy1DBo0PyBXPKVnBA6YBlU94MBGXrSBCw==} + '@radix-ui/react-password-toggle-field@0.1.7': + resolution: {integrity: sha512-gB1Mr8vzdv1XzDjrtJTXmL0JORRs1B4g7ngUs0F+H2VvMOwXTZMTmLCl0wZZ3m7ylX8TssI7NCvgiSHmLuTm/A==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -1253,8 +1261,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-portal@1.1.9': - resolution: {integrity: sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ==} + '@radix-ui/react-popover@1.1.19': + resolution: {integrity: sha512-jkrTdQVxnIB8fpn0NyyxW9CTB5aCXZZelVz5z+Xmii6g5WxMqS3fInNslZ63puP39+Puu4jYohUK31y3dT87gQ==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -1266,8 +1274,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-presence@1.1.5': - resolution: {integrity: sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ==} + '@radix-ui/react-popper@1.3.3': + resolution: {integrity: sha512-mS7dGpyjv6b+gsDjLF7e0ia1W4Im1B1hSCy2yuXlHuvnZxHKagfDaobt/KAKt27EpZMit2pss8eJBVyVjEWM+g==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -1279,8 +1287,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-primitive@2.1.3': - resolution: {integrity: sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==} + '@radix-ui/react-portal@1.1.13': + resolution: {integrity: sha512-z3oXfmaHLJTF1wktbjgD6cn9jiEbq3WSondB10LIuIt2m2Ym4iJlrW04/euMwENDdWDdE7z+OuY7Qyp1YpRSwA==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -1292,8 +1300,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-primitive@2.1.4': - resolution: {integrity: sha512-9hQc4+GNVtJAIEPEqlYqW5RiYdrr8ea5XQ0ZOnD6fgru+83kqT15mq2OCcbe8KnjRZl5vF3ks69AKz3kh1jrhg==} + '@radix-ui/react-presence@1.1.7': + resolution: {integrity: sha512-zBZ4QM5XG3JRanDmqXYf3MD6th4AFXFmgU6KNMFzUaV6F3uw9I5/zjMUvFriSEn5ewo1nxuibvyxJdmLlDcslA==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -1305,8 +1313,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-progress@1.1.7': - resolution: {integrity: sha512-vPdg/tF6YC/ynuBIJlk1mm7Le0VgW6ub6J2UWnTQ7/D23KXcPI1qy+0vBkgKgd38RCMJavBXpB83HPNFMTb0Fg==} + '@radix-ui/react-primitive@2.1.7': + resolution: {integrity: sha512-bC3NiwsprbxKjuon9l7X6BUTw7FPVzEYaL92MPEY5SCd/9hUTPXVFtVwRix7778wtRsVao+zE062gL79FZleeQ==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -1318,8 +1326,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-radio-group@1.3.8': - resolution: {integrity: sha512-VBKYIYImA5zsxACdisNQ3BjCBfmbGH3kQlnFVqlWU4tXwjy7cGX8ta80BcrO+WJXIn5iBylEH3K6ZTlee//lgQ==} + '@radix-ui/react-progress@1.1.12': + resolution: {integrity: sha512-ZPHyI0JyzoH/rP0tq2uRaIZTj/4s8+kAbqPz+e2N8+ejHvwPJ889dHhqn+vh7PNvNeq+boAoH9yzqeoShzwF2w==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -1331,8 +1339,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-roving-focus@1.1.11': - resolution: {integrity: sha512-7A6S9jSgm/S+7MdtNDSb+IU859vQqJ/QAtcYQcfFC6W8RS4IxIZDldLR0xqCFZ6DCyrQLjLPsxtTNch5jVA4lA==} + '@radix-ui/react-radio-group@1.4.3': + resolution: {integrity: sha512-WwZFjWV4s3aC1QtR3k04R+oANHtX2q6fgKlc7MCEiDNlnTxCZ3H8k3mHtEgVlOejystwk1WQgarQhNOQZ2bK1g==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -1344,8 +1352,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-scroll-area@1.2.10': - resolution: {integrity: sha512-tAXIa1g3sM5CGpVT0uIbUx/U3Gs5N8T52IICuCtObaos1S8fzsrPXG5WObkQN3S6NVl6wKgPhAIiBGbWnvc97A==} + '@radix-ui/react-roving-focus@1.1.15': + resolution: {integrity: sha512-40svmmugfM3mUN7VUDGVE1tQGOhyi8enlGD0CNJEcMM36C1f71PKM21DFgNHUfem0XnA+d8H8oN3Z9ZpJjSslg==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -1357,8 +1365,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-select@2.2.6': - resolution: {integrity: sha512-I30RydO+bnn2PQztvo25tswPH+wFBjehVGtmagkU78yMdwTwVf12wnAOF+AeP8S2N8xD+5UPbGhkUfPyvT+mwQ==} + '@radix-ui/react-scroll-area@1.2.14': + resolution: {integrity: sha512-bBODCWZK7JTbQLHs0uIP4f73wIWatakK4OS33UzkR1x897wu0PuO658a3f+6P2GEGyDzGYMuHRatMVoAk9WZTw==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -1370,8 +1378,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-separator@1.1.7': - resolution: {integrity: sha512-0HEb8R9E8A+jZjvmFCy/J4xhbXy3TV+9XSnGJ3KvTtjlIUy/YQ/p6UYZvi7YbeoeXdyU9+Y3scizK6hkY37baA==} + '@radix-ui/react-select@2.3.3': + resolution: {integrity: sha512-L5RQTXz6Anxsf9CCv+pTgiAsUpyVj7rJxsGtmhFaEOJ++cVfXucv4qWfsIO0AIB4NAhi3yovWGVMKKS1Xf1Wrg==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -1383,8 +1391,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-separator@1.1.8': - resolution: {integrity: sha512-sDvqVY4itsKwwSMEe0jtKgfTh+72Sy3gPmQpjqcQneqQ4PFmr/1I0YA+2/puilhggCe2gJcx5EBAYFkWkdpa5g==} + '@radix-ui/react-separator@1.1.11': + resolution: {integrity: sha512-jRhe86+8PF7VZ1u14eOWVOuh2BuAhALg/FT1VcMC4OHedMTRUazDnDlKTt+yxo5cRNKHMfmvZ4sSQtWDeMV4CQ==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -1396,8 +1404,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-slider@1.3.6': - resolution: {integrity: sha512-JPYb1GuM1bxfjMRlNLE+BcmBC8onfCi60Blk7OBqi2MLTFdS+8401U4uFjnwkOr49BLmXxLC6JHkvAsx5OJvHw==} + '@radix-ui/react-slider@1.4.3': + resolution: {integrity: sha512-CWVVj+XaTom0SKCqw1EUgb0NuiLwS+N3OFG73mVEezKEjgNIvZiu0EevMelSSU+CbX3owbqJweG2gPU31WGC5A==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -1409,17 +1417,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-slot@1.2.3': - resolution: {integrity: sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-slot@1.2.4': - resolution: {integrity: sha512-Jl+bCv8HxKnlTLVrcDE8zTMJ09R9/ukw4qBs/oZClOfoQk/cOTbDn+NceXfV7j09YPVQUryJPHurafcSg6EVKA==} + '@radix-ui/react-slot@1.3.0': + resolution: {integrity: sha512-MojKku4U/miO8Av4Dkb+ctMAQx7JmY96LmtDQlAarCRtd7rN52QCSzBF+XAvr5S6coSVj9HEPBgHAHKEJVk/WA==} peerDependencies: '@types/react': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc @@ -1427,8 +1426,8 @@ packages: '@types/react': optional: true - '@radix-ui/react-switch@1.2.6': - resolution: {integrity: sha512-bByzr1+ep1zk4VubeEVViV592vu2lHE2BZY5OnzehZqOOgogN80+mNtCqPkhn2gklJqOpxWgPoYTSnhBCqpOXQ==} + '@radix-ui/react-switch@1.3.3': + resolution: {integrity: sha512-1+mlB4/lxJfk5tgJ4g+R5mUCbRpPE1T9+UsEyeLYbGgMtwiMgmuTnfKz4Mw1nHALHjuwyxw4MLd4cSHn6pNSlQ==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -1440,8 +1439,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-tabs@1.1.13': - resolution: {integrity: sha512-7xdcatg7/U+7+Udyoj2zodtI9H/IIopqo+YOIcZOq1nJwXWBZ9p8xiu5llXlekDbZkca79a/fozEYQXIA4sW6A==} + '@radix-ui/react-tabs@1.1.17': + resolution: {integrity: sha512-nRyXnrAVCwjeXcHbvEbLS6ndbTeKHG1RqCP4A8Gw5L4cemDzPXdD8rAmr6wet0v57R69wGvuIIsFjHSVkZiMzQ==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -1453,8 +1452,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-toast@1.2.15': - resolution: {integrity: sha512-3OSz3TacUWy4WtOXV38DggwxoqJK4+eDkNMl5Z/MJZaoUPaP4/9lf81xXMe1I2ReTAptverZUpbPY4wWwWyL5g==} + '@radix-ui/react-toast@1.2.19': + resolution: {integrity: sha512-SxfVZfVOibWKWdkf0Xx1awW2d09fQu4V4PXDY1j5hi4MVf7MWdJZqTBJMa1KWtOr1S6GGtCk02nniZ0Iia+dHw==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -1466,8 +1465,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-toggle-group@1.1.11': - resolution: {integrity: sha512-5umnS0T8JQzQT6HbPyO7Hh9dgd82NmS36DQr+X/YJ9ctFNCiiQd6IJAYYZ33LUwm8M+taCz5t2ui29fHZc4Y6Q==} + '@radix-ui/react-toggle-group@1.1.15': + resolution: {integrity: sha512-gIC5Q+Xljg7lmUdzSuDoy0t97yZn1sZl00Ra37ZvKrYdWnQLU6sWLd09yG8cIB9jUAlQfHgJ2ACAG00MFwsqSQ==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -1479,8 +1478,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-toggle@1.1.10': - resolution: {integrity: sha512-lS1odchhFTeZv3xwHH31YPObmJn8gOg7Lq12inrr0+BH/l3Tsq32VfjqH1oh80ARM3mlkfMic15n0kg4sD1poQ==} + '@radix-ui/react-toggle@1.1.14': + resolution: {integrity: sha512-QI/hB65XKWACA66P64A+aHxtLUgHJeJLkaQa+awUNXT6T3swndtY5DojeHA+vldrTspMTtFBd7HfZ9QGbM1Qrw==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -1492,8 +1491,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-toolbar@1.1.11': - resolution: {integrity: sha512-4ol06/1bLoFu1nwUqzdD4Y5RZ9oDdKeiHIsntug54Hcr1pgaHiPqHFEaXI1IFP/EsOfROQZ8Mig9VTIRza6Tjg==} + '@radix-ui/react-toolbar@1.1.15': + resolution: {integrity: sha512-t/iEuVjUnXXtrsGK40AA43uIx37sn3AqZ7oAVnPICK6lFJP6dzMzWR3U9b6eCfFjb6wtSEqkJ9Rn9xDjiOx20g==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -1505,8 +1504,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-tooltip@1.2.8': - resolution: {integrity: sha512-tY7sVt1yL9ozIxvmbtN5qtmH2krXcBCfjEiCgKGLqunJHvgvZG2Pcl2oQ3kbcZARb1BGEHdkLzcYGO8ynVlieg==} + '@radix-ui/react-tooltip@1.2.12': + resolution: {integrity: sha512-U3HoftgWnmla78vzQbLvKKb7bUYJxoiiqYFzp1wu/TBMyDqMZSuCl3aRICsD6EfVEwcJD2mumGDGUXLFVqQHKA==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -1518,8 +1517,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-use-callback-ref@1.1.1': - resolution: {integrity: sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==} + '@radix-ui/react-use-callback-ref@1.1.2': + resolution: {integrity: sha512-xCso9j1/u8sEgP1RNHjFrXJLApL8LiqOkI1R4ywuN00rxWdYg4oQXuwKLS3i0j5NWLromUD27/4nlxj2UFVvIw==} peerDependencies: '@types/react': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc @@ -1527,8 +1526,8 @@ packages: '@types/react': optional: true - '@radix-ui/react-use-controllable-state@1.2.2': - resolution: {integrity: sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==} + '@radix-ui/react-use-controllable-state@1.2.3': + resolution: {integrity: sha512-PLzC90MS+ReootmjC597dvopoelpZ8Q61HJkDXZSExitIq7PL55vHNnesAHwguHK0aPfBnpdNzQtv1uliaqQrA==} peerDependencies: '@types/react': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc @@ -1536,8 +1535,8 @@ packages: '@types/react': optional: true - '@radix-ui/react-use-effect-event@0.0.2': - resolution: {integrity: sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA==} + '@radix-ui/react-use-effect-event@0.0.3': + resolution: {integrity: sha512-6c8ZqvPTWILEKnyVkP53EGRCcpnJiKTC21sS/6R1GF5xKyHJJWQEPfkqlcgUkdRQivd6tb23abUwe4ngWmY0JA==} peerDependencies: '@types/react': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc @@ -1545,8 +1544,8 @@ packages: '@types/react': optional: true - '@radix-ui/react-use-escape-keydown@1.1.1': - resolution: {integrity: sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==} + '@radix-ui/react-use-escape-keydown@1.1.3': + resolution: {integrity: sha512-3wEkMiPHXha/2VadZ68rYBcmYnPINVGl4Y3gtcM7fKRjANk0OscK+cdqBgUWdozb7YJxsh0vefM7vgAMHXOjqg==} peerDependencies: '@types/react': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc @@ -1554,8 +1553,8 @@ packages: '@types/react': optional: true - '@radix-ui/react-use-is-hydrated@0.1.0': - resolution: {integrity: sha512-U+UORVEq+cTnRIaostJv9AGdV3G6Y+zbVd+12e18jQ5A3c0xL03IhnHuiU4UV69wolOQp5GfR58NW/EgdQhwOA==} + '@radix-ui/react-use-is-hydrated@0.1.1': + resolution: {integrity: sha512-qwOiz4Tjo8CNnrOLAYUMXeZwDzXgXpvK4TKQPmWLECM9XoWvA6+0Z2/7Ag3A4ivjS4ovbLJPbskkxioFyBhr8A==} peerDependencies: '@types/react': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc @@ -1563,8 +1562,8 @@ packages: '@types/react': optional: true - '@radix-ui/react-use-layout-effect@1.1.1': - resolution: {integrity: sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==} + '@radix-ui/react-use-layout-effect@1.1.2': + resolution: {integrity: sha512-jrBWOxZITuGcnjRCM2t2U5ZPkCLxD+Ym6DjfssS5haTj2iiak/DOb64JeN6OdLfLgptb6/e2kKR+ZuTrGoZTPA==} peerDependencies: '@types/react': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc @@ -1572,8 +1571,8 @@ packages: '@types/react': optional: true - '@radix-ui/react-use-previous@1.1.1': - resolution: {integrity: sha512-2dHfToCj/pzca2Ck724OZ5L0EVrr3eHRNsG/b3xQJLA2hZpVCS99bLAX+hm1IHXDEnzU6by5z/5MIY794/a8NQ==} + '@radix-ui/react-use-previous@1.1.2': + resolution: {integrity: sha512-IGBQPtRFdhN6MQ8dbegVmBq1LVZluya3F1jWY+puIcQC3MHctRwTDSBWCkL/3ZcnMJLTMJ++Z+ktmvg0F89iCw==} peerDependencies: '@types/react': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc @@ -1581,8 +1580,8 @@ packages: '@types/react': optional: true - '@radix-ui/react-use-rect@1.1.1': - resolution: {integrity: sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w==} + '@radix-ui/react-use-rect@1.1.2': + resolution: {integrity: sha512-d8a+bBY/FxikNPlgJJoaBHZX+zKVbWHYJGTLnLvveQgFSTntkGdEKv3JDtHrMS0DNYpllz2nRsTLGLKYttbpmw==} peerDependencies: '@types/react': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc @@ -1590,8 +1589,8 @@ packages: '@types/react': optional: true - '@radix-ui/react-use-size@1.1.1': - resolution: {integrity: sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ==} + '@radix-ui/react-use-size@1.1.2': + resolution: {integrity: sha512-giWQp+4mxjBPt4KZ0MmyuykFNWfbDxKt4x+fPkRYmgRFJSbCZFzUglvMb/Kjn38tm10YP4ufiQZDx3zna4LU6w==} peerDependencies: '@types/react': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc @@ -1599,8 +1598,8 @@ packages: '@types/react': optional: true - '@radix-ui/react-visually-hidden@1.2.3': - resolution: {integrity: sha512-pzJq12tEaaIhqjbzpCuv/OypJY/BPavOofm+dbab+MHLajy277+1lLm6JFcGgF5eskJ6mquGirhXY2GD/8u8Ug==} + '@radix-ui/react-visually-hidden@1.2.7': + resolution: {integrity: sha512-1wNZBggTDK3GRuuQ6nP4k2yi7a6l7I5qbMPbZcRsrGsGVead/f/d5FhEzUvqFs0bcrDLx7n1zKQ3JvLR6whaaw==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -1612,11 +1611,11 @@ packages: '@types/react-dom': optional: true - '@radix-ui/rect@1.1.1': - resolution: {integrity: sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==} + '@radix-ui/rect@1.1.2': + resolution: {integrity: sha512-xnXE7wG13PI+cxieVssYXlQJuYVRhH9NBoxt3KNwzghDIA69GMm7d4wXRouHIYjE+KvS6U/MsMO73NdS2MH9ZA==} - '@reduxjs/toolkit@2.11.2': - resolution: {integrity: sha512-Kd6kAHTA6/nUpp8mySPqj3en3dm0tdMIgbttnQ1xFMVpufoj+ADi8pXLBsd4xzTRHQa7t/Jv8W5UnCuW4kuWMQ==} + '@reduxjs/toolkit@2.12.0': + resolution: {integrity: sha512-KiT+RzZbp6mQET+Mg+h2c97+9j1sNflUxQkIHI7Yuzf6Peu+OYpmkn6nbHWmLLWj+1ZODUJFwGZ7gx3L9R9EOw==} peerDependencies: react: ^16.9.0 || ^17.0.0 || ^18 || ^19 react-redux: ^7.2.1 || ^8.1.3 || ^9.0.0 @@ -1694,80 +1693,80 @@ packages: peerDependencies: react: ^18.0.0 || ^19.0.0 - '@swc/core-darwin-arm64@1.15.33': - resolution: {integrity: sha512-N+L0uXhuO7FIfzqwgxmzv0zIpV0qEp8wPX3QQs2p4atjMoywup2JTeDlXPw+z9pWJGCae3JjM+tZ6myclI+2gA==} + '@swc/core-darwin-arm64@1.15.43': + resolution: {integrity: sha512-v1aVuvXdo/BHxJzco9V2xpHrvwWmhfS8t6gziY5wJxd+Z2h8AeJRnAwPD8itCDaGXVBwJ/CaKfxEzTkG0Va0OA==} engines: {node: '>=10'} cpu: [arm64] os: [darwin] - '@swc/core-darwin-x64@1.15.33': - resolution: {integrity: sha512-/Il4QHSOhV4FekbsDtkrNmKbsX26oSysvgrRswa/RYOHXAkwXDbB4jaeKq6PsJLSPkzJ2KzQ061gtBnk0vNHfA==} + '@swc/core-darwin-x64@1.15.43': + resolution: {integrity: sha512-lp3d4Lamc8dt5huYdGLSR+9hLxmfr1jb0l+4XXG2zPqZwYWRN9R0U2qYoTrggiU2RWW0oV9VbWM3kBnqIc2kdQ==} engines: {node: '>=10'} cpu: [x64] os: [darwin] - '@swc/core-linux-arm-gnueabihf@1.15.33': - resolution: {integrity: sha512-C64hBnBxq4viOPQ8hlx+2lJ23bzZBGnjw7ryALmS+0Q3zHmwO8lw1/DArLENw4Q18/0w5wdEO1k3m1wWNtKGqQ==} + '@swc/core-linux-arm-gnueabihf@1.15.43': + resolution: {integrity: sha512-JWTQQELtsG5GgphDrr/XqqmM2pDN3cZqbMS0Mrg+iTiXL3F74sn/S2IyYE/5u4h2KLkTf9qQ7dXyxsbx7YzkeA==} engines: {node: '>=10'} cpu: [arm] os: [linux] - '@swc/core-linux-arm64-gnu@1.15.33': - resolution: {integrity: sha512-TRJfnJbX3jqpxRDRoieMzRiCBS5jOmXNb3iQXmcgjFEHKLnAgK1RZRU8Cq1MsPqO4jAJp/ld1G4O3fXuxv85uw==} + '@swc/core-linux-arm64-gnu@1.15.43': + resolution: {integrity: sha512-B4otJRdPWIsmiSBf0uG7Z/+vMWmkufjz5MmYxubwKuZazDW14Zd3symga1N62QR4RT+kEFeHEgsXfZGyn/w0hw==} engines: {node: '>=10'} cpu: [arm64] os: [linux] - '@swc/core-linux-arm64-musl@1.15.33': - resolution: {integrity: sha512-il7tYM+CpUNzieQbwAjFT1P8zqAhmGWNAGhQZBnxurXZ0aNn+5nqYFTEUKNZl7QibtT0uQXzTZrNGHCIj6Y1Og==} + '@swc/core-linux-arm64-musl@1.15.43': + resolution: {integrity: sha512-6zB6OnpViBxYy4tgY3v2i6AZY9fwkcHZ032UOwtwUuW1d19sdT07qF0kZe6/3UR1tUaK6jjg2rmVcUIBCEYVjQ==} engines: {node: '>=10'} cpu: [arm64] os: [linux] - '@swc/core-linux-ppc64-gnu@1.15.33': - resolution: {integrity: sha512-ZtNBwN0Z7CFj9Il0FcPaKdjgP7URyKu/3RfH46vq+0paOBqLj4NYldD6Qo//Duif/7IOtAraUfDOmp0PLAufog==} + '@swc/core-linux-ppc64-gnu@1.15.43': + resolution: {integrity: sha512-coxE1ZWdB3uSDVNoEtYNrRi/1epvckZx9cTJ8ICUxTMTxGk+yvQ/Twacp3ruZSaMPGCriUjP86C37VhaT6nyRg==} engines: {node: '>=10'} cpu: [ppc64] os: [linux] - '@swc/core-linux-s390x-gnu@1.15.33': - resolution: {integrity: sha512-De1IyajoOmhOYYjw/lx66bKlyDpHZTueqwpDrWgf5O7T6d1ODeJJO9/OqMBmrBQc5C+dNnlmIufHsp4QVCWufA==} + '@swc/core-linux-s390x-gnu@1.15.43': + resolution: {integrity: sha512-lXfLhs+LpBsD5inuYx+YDH5WsPPBQ95KPUiy8P5wq9ob9xKDZFqwNfU2QW6bGO8NqRO/H9JQomTSt5Yyh+FGfA==} engines: {node: '>=10'} cpu: [s390x] os: [linux] - '@swc/core-linux-x64-gnu@1.15.33': - resolution: {integrity: sha512-mGTH0YxmUN+x6vRN/I6NOk5X0ogNktkwPnJ94IMvR7QjhRDwL0O8RXEDhyUM0YtwWrryBOqaJQBX4zruxEPRGw==} + '@swc/core-linux-x64-gnu@1.15.43': + resolution: {integrity: sha512-07XnKwTmKy8TGOZG3D9fRnLWGynxPjwQnZLVmBFbo6F+7vHYzBIOuwXEhemrChBWb6yDNZsVCcMWCPX6FDD2xg==} engines: {node: '>=10'} cpu: [x64] os: [linux] - '@swc/core-linux-x64-musl@1.15.33': - resolution: {integrity: sha512-hj628ZkSEJf6zMf5VMbYrG2O6QqyTIp2qwY6VlCjvIa9lAEZ5c2lfPblCLVGYubTeLJDxadLB/CxqQYOQABeEQ==} + '@swc/core-linux-x64-musl@1.15.43': + resolution: {integrity: sha512-TJc+bsSIaBh+hZvZ5GRtW/K1bw66TJ9vsUwvVIsZdiWxU5ObLwZvfcnZ3UpgVfMnFibRes9uriJrQNBHEEogRQ==} engines: {node: '>=10'} cpu: [x64] os: [linux] - '@swc/core-win32-arm64-msvc@1.15.33': - resolution: {integrity: sha512-GV2oohtN2/5+KSccl86VULu3aT+LrISC8uzgSq0FRnikpD+Zwc+sBlXmoKQ+Db6jI57ITUOIB8jRkdGMABC29g==} + '@swc/core-win32-arm64-msvc@1.15.43': + resolution: {integrity: sha512-jfd7s2/bUQYkOHLs+LWQNKZdmDa8+sufKLllhpWAhVQ2GDCwsHe3vR/j+OSiItZNtkzFuaawa3+SAKz9y5gYfw==} engines: {node: '>=10'} cpu: [arm64] os: [win32] - '@swc/core-win32-ia32-msvc@1.15.33': - resolution: {integrity: sha512-gtyvzSNR8DHKfFEA2uqb8Ld1myqi6uEg2jyeUq3ikn5ytYs7H8RpZYC8mdy4NXr8hfcdJfCLXPlYaqqfBXpoEQ==} + '@swc/core-win32-ia32-msvc@1.15.43': + resolution: {integrity: sha512-rLAE8JvucqEW1ZGohxPQrQWPBQeJG4+ypKbWfdlU/qmKScvCkxf9/Jxnzki1dkUQCQ7P5Enp13RlvqOlvx/32g==} engines: {node: '>=10'} cpu: [ia32] os: [win32] - '@swc/core-win32-x64-msvc@1.15.33': - resolution: {integrity: sha512-d6fRqQSkJI+kmMEBWaDQ7TMl8+YjLYbwRUPZQ9DY0ORBJeTzOrG0twvfvlZ2xgw6jA0ScQKgfBm4vHLSLl5Hqg==} + '@swc/core-win32-x64-msvc@1.15.43': + resolution: {integrity: sha512-h8MLDHZcfIukwQWj03rIJZx1I0E81AYj2X7J/nGErG4nz+QAv6G1Z+peotvinL3lqpbo32tLYSMFo32/ySzxKg==} engines: {node: '>=10'} cpu: [x64] os: [win32] - '@swc/core@1.15.33': - resolution: {integrity: sha512-jOlwnFV2xhuuZeAUILGFULeR6vDPfijEJ57evfocwznQldLU3w2cZ9bSDryY9ip+AsM3r1NJKzf47V2NXebkeQ==} + '@swc/core@1.15.43': + resolution: {integrity: sha512-1CuKjFkPxIgGdeHVuNbkxmBxkcbdc08u0aiI43pFq6yY1tTVKmXT9hFEooyyKs/sJ3xf1GPHyEwTtk9Xl8dvQw==} engines: {node: '>=10'} peerDependencies: '@swc/helpers': '>=0.5.17' @@ -1781,68 +1780,68 @@ packages: '@swc/helpers@0.5.15': resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} - '@swc/types@0.1.26': - resolution: {integrity: sha512-lyMwd7WGgG79RS7EERZV3T8wMdmPq3xwyg+1nmAM64kIhx5yl+juO2PYIHb7vTiPgPCj8LYjsNV2T5wiQHUEaw==} + '@swc/types@0.1.27': + resolution: {integrity: sha512-K6h3iUlqeM946U4sXFYeahefR1YBbXJvko+hv8WS8/0BNJ4OHiHRywMnQUJCqkR7Y9+hqQ1TvEpiKqUhz7NEFg==} - '@tailwindcss/node@4.2.4': - resolution: {integrity: sha512-Ai7+yQPxz3ddrDQzFfBKdHEVBg0w3Zl83jnjuwxnZOsnH9pGn93QHQtpU0p/8rYWxvbFZHneni6p1BSLK4DkGA==} + '@tailwindcss/node@4.3.2': + resolution: {integrity: sha512-yWP/sqEcBLaD8JuA6zNwxoYKr75qxTioYwlRwekj5Jr/I5GXnoJfjetH/psLUIv74cYTH2lBUEzBkinthoYcBg==} - '@tailwindcss/oxide-android-arm64@4.2.4': - resolution: {integrity: sha512-e7MOr1SAn9U8KlZzPi1ZXGZHeC5anY36qjNwmZv9pOJ8E4Q6jmD1vyEHkQFmNOIN7twGPEMXRHmitN4zCMN03g==} + '@tailwindcss/oxide-android-arm64@4.3.2': + resolution: {integrity: sha512-WHxqIuHpvZ5VtdX6GTl1Ik/Vp2YuN42Et+0CdeaVd/frQ9jAvGmvR8vLT+jk3e8/Q3x8kECB9+R17pgpp2BulA==} engines: {node: '>= 20'} cpu: [arm64] os: [android] - '@tailwindcss/oxide-darwin-arm64@4.2.4': - resolution: {integrity: sha512-tSC/Kbqpz/5/o/C2sG7QvOxAKqyd10bq+ypZNf+9Fi2TvbVbv1zNpcEptcsU7DPROaSbVgUXmrzKhurFvo5eDg==} + '@tailwindcss/oxide-darwin-arm64@4.3.2': + resolution: {integrity: sha512-GZypeUY/IDJW3877KeM+O67vbXr3MBnbtEL4aYhNErv/JWZhye2vGSWWG9tB6iiqR2MqRNkY8IOUy4NdSZV26w==} engines: {node: '>= 20'} cpu: [arm64] os: [darwin] - '@tailwindcss/oxide-darwin-x64@4.2.4': - resolution: {integrity: sha512-yPyUXn3yO/ufR6+Kzv0t4fCg2qNr90jxXc5QqBpjlPNd0NqyDXcmQb/6weunH/MEDXW5dhyEi+agTDiqa3WsGg==} + '@tailwindcss/oxide-darwin-x64@4.3.2': + resolution: {integrity: sha512-UIIzmefR6KO1sDU7MzRqAxC8iBpft/VhkGjTjnhoS6k7Z3rQ9wEgA1ODSiyH/tcSYssulNm4Ci3hOeK1jH7ccQ==} engines: {node: '>= 20'} cpu: [x64] os: [darwin] - '@tailwindcss/oxide-freebsd-x64@4.2.4': - resolution: {integrity: sha512-BoMIB4vMQtZsXdGLVc2z+P9DbETkiopogfWZKbWwM8b/1Vinbs4YcUwo+kM/KeLkX3Ygrf4/PsRndKaYhS8Eiw==} + '@tailwindcss/oxide-freebsd-x64@4.3.2': + resolution: {integrity: sha512-GN+uAmcI6DNspnCDwtOAZrTz6oukJnp337qZvxqCGLd3BHBzJpO0ZbTLRvJNdztOeAmTzewewGIMPb0tk2R4WA==} engines: {node: '>= 20'} cpu: [x64] os: [freebsd] - '@tailwindcss/oxide-linux-arm-gnueabihf@4.2.4': - resolution: {integrity: sha512-7pIHBLTHYRAlS7V22JNuTh33yLH4VElwKtB3bwchK/UaKUPpQ0lPQiOWcbm4V3WP2I6fNIJ23vABIvoy2izdwA==} + '@tailwindcss/oxide-linux-arm-gnueabihf@4.3.2': + resolution: {integrity: sha512-4ABn7qSbdHRwTiDiuWNegCyb5+2FJ4vKIKc3DmKrvAFw7MU1Lm11dIkTPwUaFdTzc7IsOpDbqBrlh0x6y36U/w==} engines: {node: '>= 20'} cpu: [arm] os: [linux] - '@tailwindcss/oxide-linux-arm64-gnu@4.2.4': - resolution: {integrity: sha512-+E4wxJ0ZGOzSH325reXTWB48l42i93kQqMvDyz5gqfRzRZ7faNhnmvlV4EPGJU3QJM/3Ab5jhJ5pCRUsKn6OQw==} + '@tailwindcss/oxide-linux-arm64-gnu@4.3.2': + resolution: {integrity: sha512-wDgEIGwoM8w8pufh9LVt1PahDgNdKXrLC2qfAnV3vAmococ9RWbxeAw4pxPttd/TsJfwjyLf90Dg1y9y8I6Emw==} engines: {node: '>= 20'} cpu: [arm64] os: [linux] - '@tailwindcss/oxide-linux-arm64-musl@4.2.4': - resolution: {integrity: sha512-bBADEGAbo4ASnppIziaQJelekCxdMaxisrk+fB7Thit72IBnALp9K6ffA2G4ruj90G9XRS2VQ6q2bCKbfFV82g==} + '@tailwindcss/oxide-linux-arm64-musl@4.3.2': + resolution: {integrity: sha512-J5Nuk0uZQIiMTJj3LEx4sAA9tMFUoXQZFv1J6An+QGYe53HKRJuFDi0rpq/tuouCZeAbOBY3kQ6g8qeD4TUjtA==} engines: {node: '>= 20'} cpu: [arm64] os: [linux] - '@tailwindcss/oxide-linux-x64-gnu@4.2.4': - resolution: {integrity: sha512-7Mx25E4WTfnht0TVRTyC00j3i0M+EeFe7wguMDTlX4mRxafznw0CA8WJkFjWYH5BlgELd1kSjuU2JiPnNZbJDA==} + '@tailwindcss/oxide-linux-x64-gnu@4.3.2': + resolution: {integrity: sha512-kqCZpSKOBEJO4mz7OqWoofBZeXTAwaVGPj0ErAj7CojmhKpWVWVOnrt9dE8odoIraZq4oj3ausM37kXi+Tow8w==} engines: {node: '>= 20'} cpu: [x64] os: [linux] - '@tailwindcss/oxide-linux-x64-musl@4.2.4': - resolution: {integrity: sha512-2wwJRF7nyhOR0hhHoChc04xngV3iS+akccHTGtz965FwF0up4b2lOdo6kI1EbDaEXKgvcrFBYcYQQ/rrnWFVfA==} + '@tailwindcss/oxide-linux-x64-musl@4.3.2': + resolution: {integrity: sha512-cixpqbh2toJDmkuCRI68nXA8ZxNmdK9Y+9v5h3MC3ZQKy/0BO8AWzlkWyRM7JAFSGBlfig4YVTPsK6MVgqz1uw==} engines: {node: '>= 20'} cpu: [x64] os: [linux] - '@tailwindcss/oxide-wasm32-wasi@4.2.4': - resolution: {integrity: sha512-FQsqApeor8Fo6gUEklzmaa9994orJZZDBAlQpK2Mq+DslRKFJeD6AjHpBQ0kZFQohVr8o85PPh8eOy86VlSCmw==} + '@tailwindcss/oxide-wasm32-wasi@4.3.2': + resolution: {integrity: sha512-4ec2Z/LOmRsAgU23CS4xeJfcJlmRg94A/XrbGRCF1gyU/zdDfRLYDVsS+ynSZCmGNxQ1jQriQOKMQeQxBA3Isw==} engines: {node: '>=14.0.0'} cpu: [wasm32] bundledDependencies: @@ -1853,37 +1852,67 @@ packages: - '@emnapi/wasi-threads' - tslib - '@tailwindcss/oxide-win32-arm64-msvc@4.2.4': - resolution: {integrity: sha512-L9BXqxC4ToVgwMFqj3pmZRqyHEztulpUJzCxUtLjobMCzTPsGt1Fa9enKbOpY2iIyVtaHNeNvAK8ERP/64sqGQ==} + '@tailwindcss/oxide-win32-arm64-msvc@4.3.2': + resolution: {integrity: sha512-Zyr/M0+XcYZu3bZrUytc7TXvrk0ftWfl8gN2MwekNDzhqhKRUucMPSeOzM0o0wH5AWOU49BsKRrfKxI2atCPMQ==} engines: {node: '>= 20'} cpu: [arm64] os: [win32] - '@tailwindcss/oxide-win32-x64-msvc@4.2.4': - resolution: {integrity: sha512-ESlKG0EpVJQwRjXDDa9rLvhEAh0mhP1sF7sap9dNZT0yyl9SAG6T7gdP09EH0vIv0UNTlo6jPWyujD6559fZvw==} + '@tailwindcss/oxide-win32-x64-msvc@4.3.2': + resolution: {integrity: sha512-QI9BO7KlNZsp2GuO0jwAAj5jCDABOKXRkCk2XuKTSaNEFSdfzqswYVTtCHBNKHLsqyjFyFkqlDiwkNbTYSssMQ==} engines: {node: '>= 20'} cpu: [x64] os: [win32] - '@tailwindcss/oxide@4.2.4': - resolution: {integrity: sha512-9El/iI069DKDSXwTvB9J4BwdO5JhRrOweGaK25taBAvBXyXqJAX+Jqdvs8r8gKpsI/1m0LeJLyQYTf/WLrBT1Q==} + '@tailwindcss/oxide@4.3.2': + resolution: {integrity: sha512-z8ZgnzX8gdNoWLBLqBPoh/sjnxkwvf9ZuWjnO0l0yIzbLa5/9S+eC5QxGZKRobVHIC3/1BoMWjHblqWjcgFgag==} engines: {node: '>= 20'} - '@tailwindcss/postcss@4.2.4': - resolution: {integrity: sha512-wgAVj6nUWAolAu8YFvzT2cTBIElWHkjZwFYovF+xsqKsW2ADxM/X2opxj5NsF/qVccAOjRNe8X2IdPzMsWyHTg==} + '@tailwindcss/postcss@4.3.2': + resolution: {integrity: sha512-rjVWYCa7Ngbi5AarT6k8TkxUG3Wl1QKzHdIZVsjZSzf36Jmo2IKZt/NHRAwly8oDkbBOH0YTu+CHuf9jPxMc+g==} - '@tanstack/react-virtual@3.14.2': - resolution: {integrity: sha512-IpWnmCLvuymRfeeLNVXIzNEYBFLpd3drVIS91sqV78VTZFyldlChkOocZRCPp1B+Wnk09bcLNme8WaMU/9/9bQ==} + '@tanstack/react-virtual@3.14.6': + resolution: {integrity: sha512-4+Uq8m0/gzO4kMCHUEpTtGX1RnONK0C+g88b2ltwPMWUBiaVarBuWKoPJaz7gj1cKCVRAdyu+U8GcKhwCc2beA==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - '@tanstack/virtual-core@3.17.0': - resolution: {integrity: sha512-gOxY/hFkPh/XQYhnThBHzkbkX3Ed+z/iushyz+R+JAr213aXxUDgQoTgTdrDpBSRsjFM73P/KfUyWmaF9WHMkQ==} + '@tanstack/virtual-core@3.17.4': + resolution: {integrity: sha512-nGm5KteqxasUdThLc2izl6dHUqLv0LQj7Nuyo5gYalTPf/U8a9ermvsl7reT+6ioBW1l8WfpP/mcU338nLXpqw==} '@ts-morph/common@0.27.0': resolution: {integrity: sha512-Wf29UqxWDpc+i61k3oIOzcUfQt79PIT9y/MWfAGlrkjg6lBC1hwDECLXPVJAhWjiGbfBCxZd65F/LIZF3+jeJQ==} + '@turbo/darwin-64@2.10.5': + resolution: {integrity: sha512-ENvPwy3x5yS7MwNYHeWjqOBXkwIMp39Pd+/zXC6PoiNzF8EIvvLZOZZ+ny6L9x4WgS5vxUii2LM5gM+zjPdnWw==} + cpu: [x64] + os: [darwin] + + '@turbo/darwin-arm64@2.10.5': + resolution: {integrity: sha512-rqROo9zsF/P9RqsdtbLD1nFJicjSrYyvQ9kNJC38AbxA3pAs6VAlATvtvOFx7bqOv6vicf20SP9kF33avJjy2w==} + cpu: [arm64] + os: [darwin] + + '@turbo/linux-64@2.10.5': + resolution: {integrity: sha512-RoSSiNFUxi27zLJuM9F6GyWWjHgLch9t6nwD6K0FkXRirZkTLlzIj6IhFnK8H9++nefLtdFqylE4vGjZAv6AAA==} + cpu: [x64] + os: [linux] + + '@turbo/linux-arm64@2.10.5': + resolution: {integrity: sha512-4ZComcpzmHGmVynQqvvi+iZOSq/tBvY1SltXB8g4NZRsrA01W8E+yRL8RNM+PLoyWsrCnJa8xa+DkWkv+xg4iQ==} + cpu: [arm64] + os: [linux] + + '@turbo/windows-64@2.10.5': + resolution: {integrity: sha512-eL2Iyj4DbMINq1Sr1w0iAi6nAiZOF16KSlRGwCJpVh+IWZeY33MAsLHVOBMj1xoFtncVJXclCVpTPL2nBoYkFg==} + cpu: [x64] + os: [win32] + + '@turbo/windows-arm64@2.10.5': + resolution: {integrity: sha512-sog+wP+8YSJrdWZ/rUJg8xghVTrwoG+BrSlDQpnK5fzSgJHn1INRWXbVWRH0d3vX8dBI01E3yxXRre9Dn+OXQA==} + cpu: [arm64] + os: [win32] + '@types/d3-array@3.2.2': resolution: {integrity: sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw==} @@ -1944,8 +1973,8 @@ packages: '@types/d3-quadtree@3.0.6': resolution: {integrity: sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg==} - '@types/d3-random@3.0.3': - resolution: {integrity: sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ==} + '@types/d3-random@3.0.4': + resolution: {integrity: sha512-UHYId5WTCx4L4YNel7NU00XUXXgvgpgZOvp10PuvsQENjMDXhh2RyFc0KBjO7B45ne4Ha1yVH7ii0vnzKkuzWA==} '@types/d3-scale-chromatic@3.1.0': resolution: {integrity: sha512-iWMJgwkK7yTRmWqRB5plb1kadXyQ5Sj8V/zYlFGMUBbIPKQScw+Dku9cAAMgJG+z5GYDoMjWGLVOvjghDEFnKQ==} @@ -1977,20 +2006,23 @@ packages: '@types/d3@7.4.3': resolution: {integrity: sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==} - '@types/debug@4.1.12': - resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} + '@types/debug@4.1.13': + resolution: {integrity: sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw==} '@types/estree-jsx@1.0.5': resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} - '@types/estree@1.0.8': - resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + '@types/estree@1.0.9': + resolution: {integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==} '@types/geojson@7946.0.16': resolution: {integrity: sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==} - '@types/hast@3.0.4': - resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} + '@types/hast@3.0.5': + resolution: {integrity: sha512-rp/ezSWaD1m44dPKICGhiskI13nVr7qTloFwDa/IYkhhf5nzwP+zIQcIJh3WIFSBOy/H1PzB40jPjMDksN4F+g==} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} '@types/katex@0.16.8': resolution: {integrity: sha512-trgaNyfU+Xh2Tc+ABIb44a5AYUpicB3uwirOioeOkNPPbmgRNtcWyDeeFRzjPZENO9Vq8gvVqfhaaXWLlevVwg==} @@ -2001,16 +2033,19 @@ packages: '@types/ms@2.1.0': resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} - '@types/node@25.6.0': - resolution: {integrity: sha512-+qIYRKdNYJwY3vRCZMdJbPLJAtGjQBudzZzdzwQYkEPQd+PJGixUL5QfvCLDaULoLv+RhT3LDkwEfKaAkgSmNQ==} + '@types/node@25.9.5': + resolution: {integrity: sha512-OScDchr2fwuUmWdf4kZ9h7PcJiYDVInhJizG/biAq3cAvqwYktuy/TYGGdZNMtNTFUP7rnb0NU4TUdm82kt4Rg==} '@types/react-dom@19.2.3': resolution: {integrity: sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==} peerDependencies: '@types/react': ^19.2.0 - '@types/react@19.2.14': - resolution: {integrity: sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==} + '@types/react@19.2.17': + resolution: {integrity: sha512-MXfmqaVPEVgkBT/aY0aGCkRWWtByiYQXo3xdQ8r5RzuFrPiRn8Gar2tQdXSUQ2GKV3bkXckek89V8wQBY2Q/Aw==} + + '@types/swagger-schema-official@2.0.25': + resolution: {integrity: sha512-T92Xav+Gf/Ik1uPW581nA+JftmjWPgskw/WBf4TJzxRG/SJ+DfNnNE+WuZ4mrXuzflQMqMkm1LSYjzYW7MB1Cg==} '@types/trusted-types@2.0.7': resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} @@ -2147,9 +2182,8 @@ packages: cpu: [x64] os: [win32] - '@ungap/structured-clone@1.3.0': - resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} - deprecated: Potential CWE-502 - Update to 1.3.1 or higher + '@ungap/structured-clone@1.3.3': + resolution: {integrity: sha512-60YRaenCQcVjYEKOcG824+DRGGIQ3VKErcBoAEDJZz5bKIs2ZG+X/H9Nk+Q6EVkwJk5QNApxbrc5QtBSwtrXAg==} '@upsetjs/venn.js@2.0.0': resolution: {integrity: sha512-WbBhLrooyePuQ1VZxrJjtLvTc4NVfpOyKx0sKqioq9bX1C1m7Jgykkn8gLrtwumBioXIqam8DLxp88Adbue6Hw==} @@ -2158,10 +2192,13 @@ packages: resolution: {integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==} engines: {node: '>= 0.6'} - acorn@8.16.0: - resolution: {integrity: sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==} - engines: {node: '>=0.4.0'} - hasBin: true + ajv-draft-04@1.0.0: + resolution: {integrity: sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==} + peerDependencies: + ajv: ^8.5.0 + peerDependenciesMeta: + ajv: + optional: true ajv-formats@2.1.1: resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} @@ -2194,6 +2231,10 @@ packages: resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} engines: {node: '>=12'} + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} @@ -2216,8 +2257,8 @@ packages: resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} engines: {node: 18 || 20 || >=22} - baseline-browser-mapping@2.10.31: - resolution: {integrity: sha512-MujYO3eP72uvmSE0i4wltsodRfIpZATP3jvzRNRGGxgzId7aVocVJJV3nf01qnzzKFGxQVC9bpWxl5cjxTr/7Q==} + baseline-browser-mapping@2.10.43: + resolution: {integrity: sha512-AjYpR78kDWAY3Efj+cDTFH9t9SCoL7OoTp1BOb0mQV7S+6CiLwnWM3FyxhJtdPufDFKzmCSFoUncKjWgJEZTCQ==} engines: {node: '>=6.0.0'} hasBin: true @@ -2233,8 +2274,8 @@ packages: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} - browserslist@4.28.1: - resolution: {integrity: sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==} + browserslist@4.28.6: + resolution: {integrity: sha512-FQBYNK15VMslhLHpA7+n+n1GOlF1kId2xcCg7/j95f24AOF6VDYMNH4mFxF7KuaTdv627faazpOAjFzMrfJOUw==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true @@ -2246,6 +2287,14 @@ packages: resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} engines: {node: '>= 0.8'} + c12@3.3.4: + resolution: {integrity: sha512-cM0ApFQSBXuourJejzwv/AuPRvAxordTyParRVcHjjtXirtkzM0uK2L9TTn9s0cXZbG7E55jCivRQzoxYmRAlA==} + peerDependencies: + magicast: '*' + peerDependenciesMeta: + magicast: + optional: true + call-bind-apply-helpers@1.0.2: resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} engines: {node: '>= 0.4'} @@ -2254,12 +2303,15 @@ packages: resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} engines: {node: '>= 0.4'} + call-me-maybe@1.0.2: + resolution: {integrity: sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==} + callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} - caniuse-lite@1.0.30001793: - resolution: {integrity: sha512-iwSsYWaCOoh26cV8NwNRViHlrfUvYsHDfRVcbtmw0Kg6PJIZZXwMkj1442FYLBGkeUf1juAsU3DTfxW579mrPA==} + caniuse-lite@1.0.30001806: + resolution: {integrity: sha512-72Cuvd95zbSYPKq6Fhg8eDJRlzgWDf7/mtoZv6Qe/DYNCEBdNxoA3+rZAU2ZhGCpZlns3EssFavaZomckT5Uuw==} ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} @@ -2280,6 +2332,13 @@ packages: character-reference-invalid@2.0.1: resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} + chokidar@5.0.0: + resolution: {integrity: sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==} + engines: {node: '>= 20.19.0'} + + citty@0.2.2: + resolution: {integrity: sha512-+6vJA3L98yv+IdfKGZHBNiGW5KHn22e/JwID0Strsz8h4S/csAu/OuICwxrg44k5MRiZHWIo8XXuJgQTriRP4w==} + class-variance-authority@0.7.1: resolution: {integrity: sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==} @@ -2294,6 +2353,10 @@ packages: client-only@0.0.1: resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + clsx@2.1.1: resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} engines: {node: '>=6'} @@ -2307,6 +2370,13 @@ packages: code-block-writer@13.0.3: resolution: {integrity: sha512-Oofo0pq3IKnsFtuHqSF7TqBfr71aeyZDVJ0HpmqB7FBM2qEigL0iPONSCZSO9pE9dZTAxANe5XHG9Uy0YMv8cg==} + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + comma-separated-tokens@2.0.3: resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} @@ -2330,8 +2400,12 @@ packages: resolution: {integrity: sha512-8fLl9F04EJqjSqH+QjITQfJF8BrOVaYr1jewVgSRAEWePfxT0sku4w2hrGQ60BC/TNLGQ2pgxNlTbWQmMPFvXg==} engines: {node: '>=12'} - confbox@0.1.8: - resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} + confbox@0.2.4: + resolution: {integrity: sha512-ysOGlgTFbN2/Y6Cg3Iye8YKulHw+R2fNXHrgSmXISQdMnomY6eNDprVdW9R5xBguEqI954+S6709UyiO7B+6OQ==} + + consola@3.4.2: + resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==} + engines: {node: ^14.18.0 || >=16.10.0} content-disposition@1.1.0: resolution: {integrity: sha512-5jRCH9Z/+DRP7rkvY83B+yGIGX96OYdJmzngqnw2SBSxqCFPd0w2km3s5iawpGX8krnwSGmF0FW5Nhr0Hfai3g==} @@ -2400,8 +2474,8 @@ packages: peerDependencies: cytoscape: ^3.2.0 - cytoscape@3.33.2: - resolution: {integrity: sha512-sj4HXd3DokGhzZAdjDejGvTPLqlt84vNFN8m7bGsOzDY5DyVcxIb2ejIXat2Iy7HxWhdT/N1oKyheJ5YdpsGuw==} + cytoscape@3.34.0: + resolution: {integrity: sha512-62rNSrioXw93uliKFBwjukeQyeWwH2PqDrTac31r2P6464u3AUvTk0xS4LVvT251g7IgkFunrI48ZEZGjywSOg==} engines: {node: '>=0.10'} d3-array@2.12.1: @@ -2546,11 +2620,11 @@ packages: dagre-d3-es@7.0.14: resolution: {integrity: sha512-P4rFMVq9ESWqmOgK+dlXvOtLwYg0i7u0HBGJER0LZDJT2VHIPAMZ/riPxqJceWMStH5+E61QxFra9kIS3AqdMg==} - date-fns@4.1.0: - resolution: {integrity: sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==} + date-fns@4.4.0: + resolution: {integrity: sha512-+1UMbeh68lH1SegH83CGWwpb6OHHbpSgr3+s5Eww5M4CAgswBpoWS0AjTOfEJ33HiYKz1hdj/KTFprzXHmq/6w==} - dayjs@1.11.20: - resolution: {integrity: sha512-YbwwqR/uYpeoP4pu043q+LTDLFBLApUP6VxRihdfNTqu4ubqMlGDLd6ErXhEgsyvY0K6nCs7nggYumAN+9uEuQ==} + dayjs@1.11.21: + resolution: {integrity: sha512-98IT+HOahAisibz/yjKbzuOBwYcjJ7BCLPzARyHiyEBmRz4fatF+KPJszEHXsGYjUG234aH/cOjW1wwTbKUZlA==} debounce-fn@4.0.0: resolution: {integrity: sha512-8pYCQiL9Xdcg0UPSD3d+0KMlOjp+KGU5EPwYddgzQ7DATsg4fuUDjQtsYLmWjnk2obnNHgV3vE2Y4jejSOJVBQ==} @@ -2599,8 +2673,11 @@ packages: resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} engines: {node: '>=12'} - delaunator@5.0.1: - resolution: {integrity: sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==} + defu@6.1.7: + resolution: {integrity: sha512-7z22QmUWiQ/2d0KkdYmANbRUVABpZ9SNYyH5vx6PZ+nE5bcC0l7uFvEfHlyld/HcGBFTL536ClDt3DEcSlEJAQ==} + + delaunator@5.1.0: + resolution: {integrity: sha512-AGrQ4QSgssa1NGmWmLPqN5NY2KajF5MqxetNEO+o0n3ZwZZeTmt7bBnvzHWrmkZFxGgr4HdyFgelzgi06otLuQ==} depd@2.0.0: resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} @@ -2610,6 +2687,9 @@ packages: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} + destr@2.0.5: + resolution: {integrity: sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==} + detect-libc@2.1.2: resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} engines: {node: '>=8'} @@ -2645,18 +2725,21 @@ packages: ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - electron-to-chromium@1.5.307: - resolution: {integrity: sha512-5z3uFKBWjiNR44nFcYdkcXjKMbg5KXNdciu7mhTPo9tB7NbqSNP2sSnGR+fqknZSCwKkBN+oxiiajWs4dT6ORg==} + electron-to-chromium@1.5.392: + resolution: {integrity: sha512-1yQq3VQCZRwsnYc67Oc+1fge6Lwtn0hzi6zmEVkB61Zx21kTbwJAW4dFLadl5Rc1tKhG/kSpYXnfiAhu0f0a1g==} emoji-regex@10.6.0: resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + encodeurl@2.0.0: resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} engines: {node: '>= 0.8'} - enhanced-resolve@5.21.0: - resolution: {integrity: sha512-otxSQPw4lkOZWkHpB3zaEQs6gWYEsmX4xQF68ElXC/TWvGxGMSGOvoNbaLXm6/cS/fSfHtsEdw90y20PCd+sCA==} + enhanced-resolve@5.21.6: + resolution: {integrity: sha512-aNnGCvbJ/RIyWo1IuhNdVjnNF+EjH9wpzpNHt+ci/m9He9LJvUN8wrCcXjp9cWsGNAuvSpVFTx/vraAFQ8qGjQ==} engines: {node: '>=10.13.0'} enquirer@2.4.1: @@ -2682,12 +2765,15 @@ packages: resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} - es-object-atoms@1.1.1: - resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} + es-object-atoms@1.1.2: + resolution: {integrity: sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==} engines: {node: '>= 0.4'} - es-toolkit@1.46.1: - resolution: {integrity: sha512-5eNtXOs3tbfxXOj04tjjseeWkRWaoCjdEI+96DgwzZoe6c9juL49pXlzAFTI72aWC9Y8p7168g6XIKjh7k6pyQ==} + es-toolkit@1.49.0: + resolution: {integrity: sha512-G5iZ6Pc/FNRY/soKZHC+TxGDD83rHUDXxzaWhGCX44vAv/tMs56WMusnm/KMNK+luUPsgA9U28cGr4RDlSzL2g==} + + es6-promise@3.3.1: + resolution: {integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==} escalade@3.2.0: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} @@ -2708,6 +2794,10 @@ packages: estree-util-is-identifier-name@3.0.0: resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==} + eta@3.5.0: + resolution: {integrity: sha512-e3x3FBvGzeCIHhF+zhK8FZA2vC5uFn6b4HJjegUbIWrDb4mJ7JjTGMJY9VGIbRVpmSwHopNiaJibhjIr+HfLug==} + engines: {node: '>=6.0.0'} + etag@1.8.1: resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} engines: {node: '>= 0.6'} @@ -2741,6 +2831,9 @@ packages: resolution: {integrity: sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==} engines: {node: '>= 18'} + exsolve@1.1.0: + resolution: {integrity: sha512-D+42+T12DdIlJM3uepa55qGiL3sYdLBOxIl2ifQCzCHz4c7eiolaHsi3BIqEr7JxBzxv2pYZQX9kw16ziMcEmw==} + extend@3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} @@ -2751,11 +2844,14 @@ packages: resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} engines: {node: '>=8.6.0'} - fast-uri@3.1.2: - resolution: {integrity: sha512-rVjf7ArG3LTk+FS6Yw81V1DLuZl1bRbNrev6Tmd/9RaroeeRRJhAt7jg/6YFxbvAQXUCavSoZhPPj6oOx+5KjQ==} + fast-safe-stringify@2.1.1: + resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} + + fast-uri@3.1.3: + resolution: {integrity: sha512-i70LwGWUduXqzicKXWshooq+sWL1K3WUU5rKZNG/0i3a1OSoX3HqhH5WbWwTmqWfor4urUakGPiRQcleRZTwOg==} - fastq@1.19.1: - resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} + fastq@1.20.1: + resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==} fdir@6.5.0: resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} @@ -2786,8 +2882,8 @@ packages: resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} engines: {node: '>= 0.6'} - framer-motion@12.38.0: - resolution: {integrity: sha512-rFYkY/pigbcswl1XQSb7q424kSTQ8q6eAC+YUsSKooHQYuLdzdHjrt6uxUC+PRAO++q5IS7+TamgIw1AphxR+g==} + framer-motion@12.42.2: + resolution: {integrity: sha512-5XY9luDiu0oHfHBjpDthFMh0ES+122w6p/papSJBweMkO8Sn+PW2QaEgRblQBpWFnuvZS5qvarpt/hO2pjGmnw==} peerDependencies: '@emotion/is-prop-valid': '*' react: ^18.0.0 || ^19.0.0 @@ -2804,8 +2900,8 @@ packages: resolution: {integrity: sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==} engines: {node: '>= 0.8'} - fs-extra@11.3.5: - resolution: {integrity: sha512-eKpRKAovdpZtR1WopLHxlBWvAgPny3c4gX1G5Jhwmmw4XJj0ifSD5qB5TOo8hmA0wlRKDAOAhEE1yVPgs6Fgcg==} + fs-extra@11.3.6: + resolution: {integrity: sha512-w8ZNZr2mKIc7qeNaQ9AVPT1+iFaI+Avd4xudVOvdDJ8VytREi1Ft5Ih7hd9jjehod8vAM5GMsfQ/TpPf4EyoEA==} engines: {node: '>=14.14'} function-bind@1.1.2: @@ -2818,8 +2914,12 @@ packages: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} - get-east-asian-width@1.5.0: - resolution: {integrity: sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA==} + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + get-east-asian-width@1.6.0: + resolution: {integrity: sha512-QRbvDIbx6YklUe6RxeTeleMR0yv3cYH6PsPZHcnVn7xv7zO1BHN8r0XETu8n6Ye3Q+ahtSarc3WgtNWmehIBfA==} engines: {node: '>=18'} get-intrinsic@1.3.0: @@ -2846,6 +2946,10 @@ packages: resolution: {integrity: sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==} engines: {node: '>=18'} + giget@3.3.0: + resolution: {integrity: sha512-gzi2D96p+AMfDcmJHGDj3KJ9NRiwvlFAU5yfa3ROwWZmFUjX4P43x3BcyRaOMMLto1vUo7C+86+MFhYTl6Ryiw==} + hasBin: true + glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} @@ -2864,8 +2968,8 @@ packages: resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} engines: {node: '>= 0.4'} - hasown@2.0.2: - resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + hasown@2.0.4: + resolution: {integrity: sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==} engines: {node: '>= 0.4'} hast-util-from-dom@5.0.1: @@ -2910,8 +3014,8 @@ packages: hastscript@9.0.1: resolution: {integrity: sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w==} - hono@4.12.27: - resolution: {integrity: sha512-1yrb/+w6HWQJrUCLkJ2IF5jNIPvvFkblV5RNOYl6bV+OA6p9GLcMpHFFGTosSvHvcAUibuUukRqhlYI4z32C7Q==} + hono@4.12.30: + resolution: {integrity: sha512-emn+JoJjrN9YTpRDS5it/UI2SO9BAE37T6I3d963RxcZ81G9A4pr2SZTEiiaiKbzx+NKRg5BZ89fCL7gCJCUog==} engines: {node: '>=16.9.0'} html-url-attributes@3.0.1: @@ -2924,6 +3028,9 @@ packages: resolution: {integrity: sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==} engines: {node: '>= 0.8'} + http2-client@1.3.5: + resolution: {integrity: sha512-EC2utToWl4RKfs5zd36Mxq7nzHHBuomZboI0yYL6Y0RmBgT7Sgkq4rQ0ezFTYoIsSs7Tm9SJe+o2FcAg6GBhGA==} + human-signals@2.1.0: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} @@ -2936,12 +3043,12 @@ packages: resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} engines: {node: '>=0.10.0'} - iconv-lite@0.7.2: - resolution: {integrity: sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==} + iconv-lite@0.7.3: + resolution: {integrity: sha512-IKXpvIzjnC9XTAUbVBcMfGS0EPaIXtW6v+zr+RRp+hqULEpo0owZax6wyRwPOJbWbzjYspQwusTsfVr0ifh4uQ==} engines: {node: '>=0.10.0'} - icu-minify@4.12.0: - resolution: {integrity: sha512-zDmM05uav3t3+kxSfRrNlmyXOdj2b+uHA+p04CG32eJabtaHbugXujuL+YfRkwP9joAnf0Uh+RMGCKD5NLa5rQ==} + icu-minify@4.13.2: + resolution: {integrity: sha512-XhYQTEnBXBCyF6ERiwItFweoOXDUciujaGjIWCA7RhOCEPDfhVSTtuwfRq6HdVk7tKnYJh+yaurP96zGnaKsPg==} ignore@5.3.2: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} @@ -2953,13 +3060,16 @@ packages: immer@10.2.0: resolution: {integrity: sha512-d/+XTN3zfODyjr89gM3mPq1WNX2B8pYsu7eORitdwyA2sBubnTl3laYlBk4sXY5FUa5qTZGBDPJICVbvqzjlbw==} - immer@11.1.4: - resolution: {integrity: sha512-XREFCPo6ksxVzP4E0ekD5aMdf8WMwmdNaz6vuvxgI40UaEiu6q3p8X52aU6GdyvLY3XXX/8R7JOTXStz/nBbRw==} + immer@11.1.11: + resolution: {integrity: sha512-qzXuyXAkPySAGYkfsAwodDPWT8Zm7/Uo5BNt4BjhMhG5WlWyZZ4wQqnWwdS8kjlQ1Cwu6gjw3A6+0gTQwlyYtw==} import-fresh@3.3.1: resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} engines: {node: '>=6'} + import-meta-resolve@4.2.0: + resolution: {integrity: sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==} + inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} @@ -2973,8 +3083,8 @@ packages: resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==} engines: {node: '>=12'} - intl-messageformat@11.2.6: - resolution: {integrity: sha512-afAN2yNN7zjB77G1ZC5L8GtLrEshyBvOQXz88flxCO/ocTIQist98gu0r/O6H/SSiQhQsOOtWPxmCEvtDABXXQ==} + intl-messageformat@11.2.12: + resolution: {integrity: sha512-KW70Xxfcvy7vV3qODfvShWkFDPMqKDAa4N+hSyVBWGNtVhTUFYaqlD/l88DaYPKiVcPP4rPQ3qnH7i5K82Mg7g==} ip-address@10.2.0: resolution: {integrity: sha512-/+S6j4E9AHvW9SWMSEY9Xfy66O5PWvVEJ08O0y5JGyEKQpojb0K0GKpz/v5HJ/G0vi3D2sjGK78119oXZeE0qA==} @@ -3010,6 +3120,10 @@ packages: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} @@ -3087,8 +3201,8 @@ packages: resolution: {integrity: sha512-6B3tLtFqtQS4ekarvLVMZ+X+VlvQekbe4taUkf/rhVO3d/h0M2rfARm/pXLcPEsjjMsFgrFgSrhQIxcSVrBz8w==} engines: {node: '>=18'} - jiti@2.6.1: - resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} + jiti@2.7.0: + resolution: {integrity: sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==} hasBin: true jose@6.2.3: @@ -3129,8 +3243,8 @@ packages: jszip@3.10.1: resolution: {integrity: sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==} - katex@0.16.45: - resolution: {integrity: sha512-pQpZbdBu7wCTmQUh7ufPmLr0pFoObnGUoL/yhtwJDgmmQpbkg/0HSVti25Fu4rmd1oCR6NGWe9vqTWuWv3GcNA==} + katex@0.16.47: + resolution: {integrity: sha512-Eeo8Ys1doU1z+x8AZsPpQu+p/QcZBI5PeOo7QGQdy2x2m0MU/hYagBbGOmXwr5KVbEfVuWv9LpnQWeehogurjg==} hasBin: true khroma@2.1.0: @@ -3243,8 +3357,8 @@ packages: lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - lucide-react@1.12.0: - resolution: {integrity: sha512-rTKR3RN6HIAxdNZALoPvqxd64vjL9nTThU0JF9q1Qg8yUnmo1r+d8baN72YNVK3RGxUmzBzbd77IWJq/fkm+Xw==} + lucide-react@1.24.0: + resolution: {integrity: sha512-YT6mBD8lGKkg4nM39enlm94/sfJIiW0YKUT60fBy4YK8tai31ylg1VhGNWxkpSKHo9UagfnZqwIff3HTDQwXeA==} peerDependencies: react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0 @@ -3315,6 +3429,24 @@ packages: mdast-util-to-hast@13.2.1: resolution: {integrity: sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==} + mdast-util-to-markdown-cjk-friendly-gfm-strikethrough@1.0.0: + resolution: {integrity: sha512-1ePVfB4P/vz3xSsm6H3D32r6VYGErxclnuLLFK02/2ReF+UdEKm7caulK6Vm0LBIp5gPRtB2Z1OYDznCkX3k2w==} + engines: {node: '>=18'} + peerDependencies: + '@types/mdast': '*' + peerDependenciesMeta: + '@types/mdast': + optional: true + + mdast-util-to-markdown-cjk-friendly@1.0.0: + resolution: {integrity: sha512-BoaAm8mlJ+LAYz0Qs532Y3ciTuQYgBUPZcSFbvC/ZKmEMAKgulw84YvQK1gI34t/vL2euSfuaWlqczkTBgamkw==} + engines: {node: '>=18'} + peerDependencies: + '@types/mdast': '*' + peerDependenciesMeta: + '@types/mdast': + optional: true + mdast-util-to-markdown@2.1.2: resolution: {integrity: sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==} @@ -3479,30 +3611,27 @@ packages: resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} engines: {node: '>=18'} - minimatch@10.2.4: - resolution: {integrity: sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==} + minimatch@10.2.5: + resolution: {integrity: sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==} engines: {node: 18 || 20 || >=22} minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - mlly@1.8.1: - resolution: {integrity: sha512-SnL6sNutTwRWWR/vcmCYHSADjiEesp5TGQQ0pXyLhW5IoeibRlF/CbSLailbB3CNqJUk9cVJ9dUDnbD7GrcHBQ==} - modern-screenshot@4.6.5: resolution: {integrity: sha512-0sDePJ9ssXWDO7V+yW9lwAxAu8jmVp4CXlBbjskSqrDxkIrcZO2EGqwD2mLtfTTinqZjmP4X/V6INOvNM1K7CQ==} monaco-editor@0.55.1: resolution: {integrity: sha512-jz4x+TJNFHwHtwuV9vA9rMujcZRb0CEilTEwG2rRSpe/A7Jdkuj8xPKttCgOh+v/lkHy7HsZ64oj+q3xoAFl9A==} - motion-dom@12.38.0: - resolution: {integrity: sha512-pdkHLD8QYRp8VfiNLb8xIBJis1byQ9gPT3Jnh2jqfFtAsWUA3dEepDlsWe/xMpO8McV+VdpKVcp+E+TGJEtOoA==} + motion-dom@12.42.2: + resolution: {integrity: sha512-5gIMWLp/PycBtJRJWRgjxke5n8dlvkSn2DrYW+tr3XcqAZY1xZh6BJyooJXCM8wdfM7wfMjkBJNLge1CKPUIRA==} - motion-utils@12.36.0: - resolution: {integrity: sha512-eHWisygbiwVvf6PZ1vhaHCLamvkSbPIeAYxWUuL3a2PD/TROgE7FvfHWTIH4vMl798QLfMw15nRqIaRDXTlYRg==} + motion-utils@12.39.0: + resolution: {integrity: sha512-8nadJAJjTtqRkmRF36FoJTrywK9nnFmnPwnSMyxaOCU7GDjN9RTMJIxx9De8ErM+vpPhMccr/6fo5WciyQLnMQ==} - motion@12.38.0: - resolution: {integrity: sha512-uYfXzeHlgThchzwz5Te47dlv5JOUC7OB4rjJ/7XTUgtBZD8CchMN8qEJ4ZVsUmTyYA44zjV0fBwsiktRuFnn+w==} + motion@12.42.2: + resolution: {integrity: sha512-Atvv11yUKIid41cVrRBDVX5m8tF8kNpExRSlbpt6APClhDjtwQssgFHhQzejxw7/7YYbjHSPKBVbHo05BuJT5Q==} peerDependencies: '@emotion/is-prop-valid': '*' react: ^18.0.0 || ^19.0.0 @@ -3518,20 +3647,25 @@ packages: ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - nanoid@3.3.12: - resolution: {integrity: sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==} + nanoid@3.3.16: + resolution: {integrity: sha512-bzlKTyNJ7+LdGIIwy8ijFpIqEQIvafahV7eYykJ8Cvh42EdJeODoJ6gUJXpQJvej1BddH8OqTXZNE/KfbWAu8Q==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true + nanoid@5.1.16: + resolution: {integrity: sha512-kVrnsrJqMR8+oLJnGEmSWw9BivK5mt7H3FZatVRjrc5wGqFYuBxX1yG7+A7Gi5AefkX6t/oCkizcQgpu0cY1dQ==} + engines: {node: ^18 || >=20} + hasBin: true + negotiator@1.0.0: resolution: {integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==} engines: {node: '>= 0.6'} - next-intl-swc-plugin-extractor@4.12.0: - resolution: {integrity: sha512-jUxVEu1Nryjt4YgaDktSys7ioOgQfcNPF/SF2dbPNxbVb6U+P1INRgHeCVN+EC59H2rnTFIQwbddmOCrUWFr3g==} + next-intl-swc-plugin-extractor@4.13.2: + resolution: {integrity: sha512-O30N/Y4ifzRe5Sz80jD1Qkg4VY6Zfef4SbHNNE166QkHswBf3/Kygpdd1X52sUUwTCk6uvdisO8ybfAN/VYJHQ==} - next-intl@4.12.0: - resolution: {integrity: sha512-v8KpppWG0yLLlChJ3Of6uoPew9LeRDBAtY6vpJmF7YJmBZlHEzzoEL4w1g1dAU+VleEPNoXNm9hg1eEsKWV5hw==} + next-intl@4.13.2: + resolution: {integrity: sha512-iCYycEP7/PE+1ue4MWBuz1qns6ESA+SGzuXxNMNN1qiYUh2fLhJPiZvHW1zZC7zMTn44aJUglOVZxUb1+hUz6g==} peerDependencies: next: ^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 react: ^16.8.0 || ^17.0.0 || ^18.0.0 || >=19.0.0-rc <19.0.0 || ^19.0.0 @@ -3570,8 +3704,25 @@ packages: node-addon-api@7.1.1: resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} - node-releases@2.0.36: - resolution: {integrity: sha512-TdC8FSgHz8Mwtw9g5L4gR/Sh9XhSP/0DEkQxfEFXOpiul5IiHgHan2VhYYb6agDSfp4KuvltmGApc8HMgUrIkA==} + node-fetch-h2@2.3.0: + resolution: {integrity: sha512-ofRW94Ab0T4AOh5Fk8t0h8OBWrmjb0SSB20xh1H8YnPV9EJ+f5AMoYSUQ2zgJ4Iq2HAK0I2l5/Nequ8YzFS3Hg==} + engines: {node: 4.x || >=6.0.0} + + node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + + node-readfiles@0.2.0: + resolution: {integrity: sha512-SU00ZarexNlE4Rjdm83vglt5Y9yiQ+XI1XpflWlb7q7UTN1JUItm69xMeiQCTxtTfnzt+83T8Cx+vI2ED++VDA==} + + node-releases@2.0.51: + resolution: {integrity: sha512-wRNIrw4DmVLKQlbgOMdkMx27Wrpzes2hh5Jtbi2bjPd+4wJstWIqP5A+lscnqbm0xxmT5Bpg8Lec5ItEBwx6BQ==} + engines: {node: '>=18'} npm-run-path@4.0.1: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} @@ -3581,6 +3732,22 @@ packages: resolution: {integrity: sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==} engines: {node: '>=18'} + oas-kit-common@1.0.8: + resolution: {integrity: sha512-pJTS2+T0oGIwgjGpw7sIRU8RQMcUoKCDWFLdBqKB2BNmGpbBMH2sdqAaOXUg8OzonZHU0L7vfJu1mJFEiYDWOQ==} + + oas-linter@3.2.2: + resolution: {integrity: sha512-KEGjPDVoU5K6swgo9hJVA/qYGlwfbFx+Kg2QB/kd7rzV5N8N5Mg6PlsoCMohVnQmo+pzJap/F610qTodKzecGQ==} + + oas-resolver@2.5.6: + resolution: {integrity: sha512-Yx5PWQNZomfEhPPOphFbZKi9W93CocQj18NlD2Pa4GWZzdZpSJvYwoiuurRI7m3SpcChrnO08hkuQDL3FGsVFQ==} + hasBin: true + + oas-schema-walker@1.1.5: + resolution: {integrity: sha512-2yucenq1a9YPmeNExoUa9Qwrt9RFkjqaMAA1X+U7sbb0AqBeTIdMHky9SQQ6iN94bO5NW0W4TRYXerG+BdAvAQ==} + + oas-validator@5.0.8: + resolution: {integrity: sha512-cu20/HE5N5HKqVygs3dt94eYJfBi0TsZvPVXDhbXQHiEityDN+RROTleefoKRKKJ9dFAF2JBkDHgvWj0sjKGmw==} + object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} @@ -3596,6 +3763,9 @@ packages: ogl@1.0.11: resolution: {integrity: sha512-kUpC154AFfxi16pmZUK4jk3J+8zxwTWGPo03EoYA8QPbzikHoaC82n6pNTbd+oEaJonaE8aPWBlX7ad9zrqLsA==} + ohash@2.0.11: + resolution: {integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==} + on-finished@2.4.1: resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} engines: {node: '>= 0.8'} @@ -3611,11 +3781,11 @@ packages: resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} engines: {node: '>=18'} - oniguruma-parser@0.12.1: - resolution: {integrity: sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w==} + oniguruma-parser@0.12.2: + resolution: {integrity: sha512-6HVa5oIrgMC6aA6WF6XyyqbhRPJrKR02L20+2+zpDtO5QAzGHAUGw5TKQvwi5vctNnRHkJYmjAhRVQF2EKdTQw==} - oniguruma-to-es@4.3.5: - resolution: {integrity: sha512-Zjygswjpsewa0NLTsiizVuMQZbp0MDyM6lIt66OxsF21npUDlzpHi1Mgb/qhQdkb+dWFTzJmFbEWdvZgRho8eQ==} + oniguruma-to-es@4.3.6: + resolution: {integrity: sha512-csuQ9x3Yr0cEIs/Zgx/OEt9iBw9vqIunAPQkx19R/fiMq2oGVTgcMqO/V3Ybqefr1TBvosI6jU539ksaBULJyA==} open@11.0.0: resolution: {integrity: sha512-smsWv2LzFjP03xmvFoJ331ss6h+jixfA4UUV/Bsiyuu4YJPfN+FIQGOIiv4w9/+MoHkfkJ22UIaQWRVFRfH6Vw==} @@ -3625,6 +3795,9 @@ packages: resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} engines: {node: '>=12'} + openapi-types@12.1.3: + resolution: {integrity: sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw==} + ora@8.2.0: resolution: {integrity: sha512-weP+BZ8MVNnlCm8c0Qdc1WSWq4Qn7I+9CJGm7Qali6g44e/PUzbjNqJX5NJ9ljlNMosfJvg1fKEGILklK9cwnw==} engines: {node: '>=18'} @@ -3641,8 +3814,8 @@ packages: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} - package-manager-detector@1.6.0: - resolution: {integrity: sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA==} + package-manager-detector@1.7.0: + resolution: {integrity: sha512-xg1eHpwYL/D/HEdWw2goFZP6vV0FH7W+PZ5rFkGjdIDLtxq7EkzBUeT3m+lndYCt8wKbmofUu1MUdMCXkCk9ZQ==} pako@1.0.11: resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} @@ -3697,6 +3870,9 @@ packages: resolution: {integrity: sha512-h4EdYQczmGhbOlqc3PPZwxevn7ApdWPbovAuWXOB/DjIyigSnwfy2oze7c6mRcSr9XgLp3eN3EeL4DyySTPMFw==} engines: {node: '>=22.13.0 || >=24'} + perfect-debounce@2.1.0: + resolution: {integrity: sha512-LjgdTytVFXeUgtHZr9WYViYSM/g8MkcTPYDlPa3cDqMirHjKiSZPYd6DoL7pK8AJQr+uWkQvCjHNdiMqsrJs+g==} + picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} @@ -3708,8 +3884,8 @@ packages: resolution: {integrity: sha512-wQ0b/W4Fr01qtpHlqSqspcj3EhBvimsdh0KlHhH8HRZnMsEa0ea2fTULOXOS9ccQr3om+GcGRk4e+isrZWV8qQ==} engines: {node: '>=16.20.0'} - pkg-types@1.3.1: - resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} + pkg-types@2.3.1: + resolution: {integrity: sha512-y+ichcgc2LrADuhLNAx8DFjVfgz91pRxfZdI3UDhxHvcVEZsenLO+7XaU5vOp0u/7V/wZ+plyuQxtrDlZJ+yeg==} pkg-up@3.1.0: resolution: {integrity: sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==} @@ -3747,8 +3923,8 @@ packages: resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} engines: {node: '>= 6'} - property-information@7.1.0: - resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==} + property-information@7.2.0: + resolution: {integrity: sha512-IAtzIB6sUiWaJYrX9smp3V46pBGbBeLFRGdh25kg1334VcBlD8HzhPeNIWQH9zhGmo2itIe25EHt9dQP7G5hmg==} proxy-addr@2.0.7: resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} @@ -3761,8 +3937,8 @@ packages: queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - radix-ui@1.4.3: - resolution: {integrity: sha512-aWizCQiyeAenIdUbqEpXgRA1ya65P13NKn/W8rWkcN0OPkRDxdBVLWnIEDsS2RpwCK2nobI7oMUSmexzTDyAmA==} + radix-ui@1.6.2: + resolution: {integrity: sha512-OwYUjzMwiInCUxgAWpPsavXC3Kh4iyi/49uU1/qZTG3RQDlvegyk1GOMiGvSkjua1RDb3JD3fo3eroL9FV4GQw==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -3782,22 +3958,29 @@ packages: resolution: {integrity: sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==} engines: {node: '>= 0.10'} - react-day-picker@10.0.0: - resolution: {integrity: sha512-lrEXo5wFPsq5LTcayelM3BPueD00v7zbdipAY+EIdPcseVykYwkOWx4Ujn/EtbBvpnp8ZPUHol17HXH6kVbZoA==} + rc9@3.0.1: + resolution: {integrity: sha512-gMDyleLWVE+i6Sgtc0QbbY6pEKqYs97NGi6isHQPqYlLemPoO8dxQ3uGi0f4NiP98c+jMW6cG1Kx9dDwfvqARQ==} + + react-day-picker@10.0.1: + resolution: {integrity: sha512-eNh6BlwcYInWaJtRv18mXQ06Ys/H6rdTZAnTaSdOYJuTpwP1JMCHNd1FDRadA+gbeinq+psdULN5Xnowy9mV8w==} engines: {node: '>=18'} peerDependencies: + '@types/react': '>=16.8.0' react: '>=16.8.0' + peerDependenciesMeta: + '@types/react': + optional: true react-dom@19.2.5: resolution: {integrity: sha512-J5bAZz+DXMMwW/wV3xzKke59Af6CHY7G4uYLN1OvBcKEsWOs4pQExj86BBKamxl/Ik5bx9whOrvBlSDfWzgSag==} peerDependencies: react: ^19.2.5 - react-is@16.13.1: - resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + react-is@19.2.7: + resolution: {integrity: sha512-kZFnouyVv7eP/Phmrlo9FK+zcAdriZJvzxXHF1Sl1P377WSGe2G/JxVolhTrB/jeV47lKImhNUsijjHAAbcl/A==} - react-redux@9.2.0: - resolution: {integrity: sha512-ROY9fvHhwOD9ySfrF0wmvu//bKCQ6AeZZq1nJNtbDC+kk5DuSuNX/n6YWYF/SYy7bSba4D4FSz8DJeKY/S/r+g==} + react-redux@9.3.0: + resolution: {integrity: sha512-KQopgqFo/p/fgmAs5qz6p5RWaNAzq40WAu7fJIXnQpYxFPbJYtsJPWvGeF2rOBaY/kEuV77AVsX8TsQzKm+A/g==} peerDependencies: '@types/react': ^18.2.25 || ^19 react: ^18.0 || ^19 @@ -3818,8 +4001,8 @@ packages: '@types/react': optional: true - react-remove-scroll@2.7.1: - resolution: {integrity: sha512-HpMh8+oahmIdOuS5aFKKY6Pyog+FNaZV/XyJOq7b4YFwsFHe5yYfdbIalI4k3vU2nSDql7YskmUseHsRrJqIPA==} + react-remove-scroll@2.7.2: + resolution: {integrity: sha512-Iqb9NjCCTt6Hf+vOdNIZGdTiH1QSqr27H/Ek9sv/a97gfueI/5h1s3yRi1nngzMUaOOToin5dI1dXKdXiF+u0Q==} engines: {node: '>=10'} peerDependencies: '@types/react': '*' @@ -3845,6 +4028,10 @@ packages: readable-stream@2.3.8: resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + readdirp@5.0.0: + resolution: {integrity: sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==} + engines: {node: '>= 20.19.0'} + recast@0.23.12: resolution: {integrity: sha512-dEWRjcINDu/F4l2dYx57ugBtD7HV9KXESyxhzw/MqWLeglJrsjJKqACPyUPg+6AF8mIgm+Zi0dZ3ACoIg+QtpA==} engines: {node: '>= 4'} @@ -3865,6 +4052,9 @@ packages: redux@5.0.1: resolution: {integrity: sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==} + reftools@1.1.9: + resolution: {integrity: sha512-OVede/NQE13xBQ+ob5CKd5KyeJYU2YInb1bmV4nRoOfquZPkAkxuOXicSe1PvqIuZZ4kD13sPKBbR7UFDmli6w==} + regex-recursion@6.0.2: resolution: {integrity: sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==} @@ -3886,8 +4076,8 @@ packages: rehype-sanitize@6.0.0: resolution: {integrity: sha512-CsnhKNsyI8Tub6L4sm5ZFsme4puGfc6pYylvXo1AeqaGbjOYyzNv3qZPwvs0oMJ39eryyeOdmxwUIo94IpEhqg==} - remark-cjk-friendly-gfm-strikethrough@2.0.1: - resolution: {integrity: sha512-pWKj25O2eLXIL1aBupayl1fKhco+Brw8qWUWJPVB9EBzbQNd7nGLj0nLmJpggWsGLR5j5y40PIdjxby9IEYTuA==} + remark-cjk-friendly-gfm-strikethrough@2.3.1: + resolution: {integrity: sha512-JE3TGgouk/sy92SemNMEUhO5mNP4on04cmzOV3s3R5Dbk160ewmpM4tgPiinKKvoJ5UW2fTu7FOYsjVbusSA9w==} engines: {node: '>=18'} peerDependencies: '@types/mdast': ^4.0.0 @@ -3896,8 +4086,8 @@ packages: '@types/mdast': optional: true - remark-cjk-friendly@2.0.1: - resolution: {integrity: sha512-6WwkoQyZf/4j5k53zdFYrR8Ca+UVn992jXdLUSBDZR4eBpFhKyVxmA4gUHra/5fesjGIxrDhHesNr/sVoiiysA==} + remark-cjk-friendly@2.3.1: + resolution: {integrity: sha512-f+pKZRxCRwNEGFBKNRAZAqU91GIK1SAo3ZyFHWRUgC9zcxRR0BXKd6YwqgSsxtW0rNpUDtONj7H5nje2WL3fcA==} engines: {node: '>=18'} peerDependencies: '@types/mdast': ^4.0.0 @@ -3924,6 +4114,10 @@ packages: remend@1.3.0: resolution: {integrity: sha512-iIhggPkhW3hFImKtB10w0dz4EZbs28mV/dmbcYVonWEJ6UGHHpP+bFZnTh6GNWJONg5m+U56JrL+8IxZRdgWjw==} + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + require-from-string@2.0.2: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} @@ -3931,6 +4125,9 @@ packages: reselect@5.1.1: resolution: {integrity: sha512-K/BG6eIky/SBpzfHZv/dd+9JBFiS4SWV7FIujVyJRux6e45+73RaUHXLmIR1f7WOMaQ0U1km6qwklRQxpJJY0w==} + reselect@5.2.0: + resolution: {integrity: sha512-AgZ3UOZm3YndfrJ4OYjgrT7bmCm/1iqkjvEfH/oYjzh6PD2qw4QuT3jjnXIrpdt4MTpMXclMT3lXbmRY+XRakw==} + resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} @@ -3943,8 +4140,8 @@ packages: resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - robust-predicates@3.0.2: - resolution: {integrity: sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==} + robust-predicates@3.0.3: + resolution: {integrity: sha512-NS3levdsRIUOmiJ8FZWCP7LG3QpJyrs/TE0Zpf1yvZu8cAJJ6QMW92H1c7kWpdIHo8RvmLxN/o2JXTKHp74lUA==} roughjs@4.6.6: resolution: {integrity: sha512-ZUz/69+SYpFN/g/lUlo2FXcIjRkSu3nDarreVdGGndHEBJ6cXPdKguS8JGxwj5HA5xIbVKSmLgr5b3AWxtRfvQ==} @@ -3976,8 +4173,8 @@ packages: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true - semver@7.8.0: - resolution: {integrity: sha512-AcM7dV/5ul4EekoQ29Agm5vri8JNqRyj39o0qpX6vDF2GZrtutZl5RwgD1XnZjiTAfncsJhMI48QQH3sN87YNA==} + semver@7.8.5: + resolution: {integrity: sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==} engines: {node: '>=10'} hasBin: true @@ -3995,8 +4192,8 @@ packages: setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} - shadcn@4.12.0: - resolution: {integrity: sha512-o781ieQziCnXH2FKsEqxp1fnbHdbgAPO9inTSPeZ59hQfsZXuMGp3ul8oFSV5KQS4nbUK9b+DrDE6C7OvfKKQQ==} + shadcn@4.13.0: + resolution: {integrity: sha512-5fuJ4jI/GcPeA/iTL4cJivCZuYQGXz/N3bIzyd+Gd/FM6xUCy2MxGG+LaDQuw2cjNy9zGPSFPTEmI048UwPTZA==} engines: {node: '>=20.18.1'} hasBin: true @@ -4015,6 +4212,24 @@ packages: shiki@3.23.0: resolution: {integrity: sha512-55Dj73uq9ZXL5zyeRPzHQsK7Nbyt6Y10k5s7OjuFZGMhpp4r/rsLBH0o/0fstIzX1Lep9VxefWljK/SKCzygIA==} + should-equal@2.0.0: + resolution: {integrity: sha512-ZP36TMrK9euEuWQYBig9W55WPC7uo37qzAEmbjHz4gfyuXrEUgF8cUvQVO+w+d3OMfPvSRQJ22lSm8MQJ43LTA==} + + should-format@3.0.3: + resolution: {integrity: sha512-hZ58adtulAk0gKtua7QxevgUaXTTXxIi8t41L3zo9AHvjXO1/7sdLECuHeIN2SRtYXpNkmhoUP2pdeWgricQ+Q==} + + should-type-adaptors@1.1.0: + resolution: {integrity: sha512-JA4hdoLnN+kebEp2Vs8eBe9g7uy0zbRo+RMcU0EsNy+R+k049Ki+N5tT5Jagst2g7EAja+euFuoXFCa8vIklfA==} + + should-type@1.4.0: + resolution: {integrity: sha512-MdAsTu3n25yDbIe1NeN69G4n6mUnJGtSJHygX3+oN0ZbO3DTiATnf7XnYJdGT42JCXurTb1JI0qOBR65shvhPQ==} + + should-util@1.0.1: + resolution: {integrity: sha512-oXF8tfxx5cDk8r2kYqlkUJzZpDBqVY/II2WhvU0n9Y3XYvAYRmeaf1PvvIvTgPnv4KJ+ES5M0PyDq5Jp+Ygy2g==} + + should@13.2.3: + resolution: {integrity: sha512-ggLesLtu2xp+ZxI+ysJTmNjh2U0TsC+rQ/pfED9bUZZ4DKefP27D+7YJVVTvKsmjLpIi9jAa7itwDGkDDmt1GQ==} + side-channel-list@1.0.1: resolution: {integrity: sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==} engines: {node: '>= 0.4'} @@ -4072,6 +4287,10 @@ packages: react: ^18.0.0 || ^19.0.0 react-dom: ^18.0.0 || ^19.0.0 + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + string-width@7.2.0: resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} engines: {node: '>=18'} @@ -4128,17 +4347,33 @@ packages: stylis@4.4.0: resolution: {integrity: sha512-5Z9ZpRzfuH6l/UAvCPAPUo3665Nk2wLaZU3x+TLHKVzIz33+sbJqbtrYoC3KD4/uVOr2Zp+L0LySezP9OHV9yA==} - systeminformation@5.31.11: - resolution: {integrity: sha512-I6O7iaUj23AXRgCPDDnvi3xHvdOLp4+1YMbF+X194lJwY1NeWojgHJPhslVKcmTtrLTguRk3QJK+xEdTiI3P0w==} + swagger-schema-official@2.0.0-bab6bed: + resolution: {integrity: sha512-rCC0NWGKr/IJhtRuPq/t37qvZHI/mH4I4sxflVM+qgVe5Z2uOCivzWaVbuioJaB61kvm5UvB7b49E+oBY0M8jA==} + + swagger-typescript-api@13.12.5: + resolution: {integrity: sha512-v1KVrz36OpK+7Y7b77ri+Z2dCLEu+U6ZLM3jruHdoSybaQK/yJGwIjSJLGtUG6htE5ohruCvFMAzateva96GKA==} + engines: {node: '>=20'} + hasBin: true + + swagger2openapi@7.0.8: + resolution: {integrity: sha512-upi/0ZGkYgEcLeGieoz8gT74oWHA0E7JivX7aN9mAf+Tc7BQoRBvnIGHoPDw+f9TXTW4s6kGYCZJtauP6OYp7g==} + hasBin: true + + systeminformation@5.31.17: + resolution: {integrity: sha512-TvFA9iwDWlMjqZVlKIJ0Cy+Zgm9ttlMx0SMRwJDMNKyhlEKWBMb3+WRwDi/3dvHdWbexpos4Osp4U49p5WjB5g==} engines: {node: '>=8.0.0'} os: [darwin, linux, win32, freebsd, openbsd, netbsd, sunos, android] hasBin: true - tailwind-merge@3.5.0: - resolution: {integrity: sha512-I8K9wewnVDkL1NTGoqWmVEIlUcB9gFriAEkXkfCjX5ib8ezGxtR3xD7iZIxrfArjEsH7F1CHD4RFUtxefdqV/A==} + tagged-tag@1.0.0: + resolution: {integrity: sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng==} + engines: {node: '>=20'} + + tailwind-merge@3.6.0: + resolution: {integrity: sha512-uxL7qAVQriqRQPAyK3pj66VqskWqoZ37PW94jwOTwNfq/z9oyu1V+eqrZqtR2+fCiXdYOZe/Modt8GtvqNzu+w==} - tailwindcss@4.2.4: - resolution: {integrity: sha512-HhKppgO81FQof5m6TEnuBWCZGgfRAWbaeOaGT00KOy/Pf/j6oUihdvBpA7ltCeAvZpFhW3j0PTclkxsd4IXYDA==} + tailwindcss@4.3.2: + resolution: {integrity: sha512-WtctNNSH8A9jlMIqxzuYumOHU5uGZyRv0Q5svQl+oEPy5w84YpBxdb7MdqyiSPQge5jTJ6zFQLq0PFygdccSBA==} tapable@2.3.3: resolution: {integrity: sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==} @@ -4147,8 +4382,8 @@ packages: tiny-invariant@1.3.3: resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} - tinyexec@1.0.4: - resolution: {integrity: sha512-u9r3uZC0bdpGOXtlxUIdwf9pkmvhqJdrVCH9fapQtgy/OeTTMZ1nqH7agtvEfmGui6e1XxjcdrlxvxJvc3sMqw==} + tinyexec@1.2.4: + resolution: {integrity: sha512-SHf/r48b7vOrjve9PxJo3MN5v5yuyjHvdUcrQffT3WXMUfnGmHDVbC4k3sHJaJTgZCwpUplIaAo5ANtMyp3YHg==} engines: {node: '>=18'} to-regex-range@5.0.1: @@ -4159,14 +4394,17 @@ packages: resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} engines: {node: '>=0.6'} + tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + trim-lines@3.0.1: resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} trough@2.2.0: resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} - ts-dedent@2.2.0: - resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==} + ts-dedent@2.3.0: + resolution: {integrity: sha512-JfJeIHke7y2egdGGgRAvpCwYFUsHlM2gPcrVOxFkznt/4uzQ7HFmvE63iFHVLBJNDuyDOQgijDK/tXH/f6Msjg==} engines: {node: '>=6.10'} ts-morph@26.0.0: @@ -4179,23 +4417,33 @@ packages: tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + turbo@2.10.5: + resolution: {integrity: sha512-07Y/C7OUp23l4P92PJoYtFNbHjLhftrZH5Ce7dbczS4kX2Re+wtbXvZLoxn/pUtzgsQaRCBaRuZPJp4zmAn0WQ==} + hasBin: true + tw-animate-css@1.4.0: resolution: {integrity: sha512-7bziOlRqH0hJx80h/3mbicLW7o8qLsH5+RaLR2t+OHM3D0JlWGODQKQ4cxbK7WlvmUxpcj6Kgu6EKqjrGFe3QQ==} + type-fest@5.8.0: + resolution: {integrity: sha512-YGYEVz3Fm5iy/AybuA0oyNFq7H4CgQNfRp/qfe8nurE1kuCeNm3/vfm9X4Mtl+qLyaKJUh5xrFZwogr41SMjYA==} + engines: {node: '>=20'} + type-is@2.1.0: resolution: {integrity: sha512-faYHw0anBbc/kWF3zFTEnxSFOAGUX9GFbOBthvDdLsIlEoWOFOtS0zgCiQYwIskL9iGXZL3kAXD8OoZ4GmMATA==} engines: {node: '>= 18'} + typescript@6.0.3: + resolution: {integrity: sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==} + engines: {node: '>=14.17'} + hasBin: true + typescript@7.0.2: resolution: {integrity: sha512-8FYau96o3NKOhbjKi/qNvG/W5jhzxkbdm5sj9AbZ/5T5sWqn3hJgLfGx27sRKZWTvyzCP8dLRBTf5tBTSRVUNA==} engines: {node: '>=16.20.0'} hasBin: true - ufo@1.6.3: - resolution: {integrity: sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q==} - - undici-types@7.19.2: - resolution: {integrity: sha512-qYVnV5OEm2AW8cJMCpdV20CDyaN3g0AjDlOGf1OW4iaDEx8MwdtChUp4zu4H0VP3nDRF/8RKWH+IPp9uW0YGZg==} + undici-types@7.24.6: + resolution: {integrity: sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg==} undici@7.28.0: resolution: {integrity: sha512-cRZYrTDwWznlnRiPjggAGxZXanty6M8RV1ff8Wm4LWXBp7/IG8v5DnOm74DtUBp9OONpK75YlPnIjQqX0dBDtA==} @@ -4253,8 +4501,8 @@ packages: '@types/react': optional: true - use-intl@4.12.0: - resolution: {integrity: sha512-r+qVb7UI1+kiOhjYsmsNUCY+jrnjVopwGeFlmMyQj4YInlwZzgMeMSv9n8MqnWWy77HL5BVM8K2WgX50SbtcpA==} + use-intl@4.13.2: + resolution: {integrity: sha512-p6/gCromeBoec+wEuOIkPaytH77RBjW94KWv8MRsNrbI4UOx8QgwNhgl9lbPOKM/b0dpanLhCYztLEH5yQUjtg==} peerDependencies: react: ^17.0.0 || ^18.0.0 || >=19.0.0-rc <19.0.0 || ^19.0.0 @@ -4309,6 +4557,12 @@ packages: web-namespaces@2.0.1: resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} + webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + + whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} @@ -4319,6 +4573,10 @@ packages: engines: {node: ^16.13.0 || >=18.0.0} hasBin: true + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} @@ -4326,17 +4584,49 @@ packages: resolution: {integrity: sha512-g/eziiSUNBSsdDJtCLB8bdYEUMj4jR7AGeUo96p/3dTafgjHhpF4RiCFPiRILwjQoDXx5MqkBr4fwWtR3Ky4Wg==} engines: {node: '>=20'} + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - yocto-spinner@1.2.0: - resolution: {integrity: sha512-Yw0hUB6UA3o4YUgKy3oSe9a4cxoaZ9sBfYDw+JSxo6Id0KoJGoxzPA24qqUXYKBWABs/zDSGTz9kww7t3F0XGw==} + yaml@1.10.3: + resolution: {integrity: sha512-vIYeF1u3CjlhAFekPPAk2h/Kv4T3mAkMox5OymRiJQB0spDP10LHvt+K7G9Ny6NuuMAb25/6n1qyUjAcGNf/AA==} + engines: {node: '>= 6'} + + yaml@2.9.0: + resolution: {integrity: sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==} + engines: {node: '>= 14.6'} + hasBin: true + + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + yargs@17.7.3: + resolution: {integrity: sha512-GZtjxm/J/4TSxuL3FNYjCmLktBTnIw/rVmKSIyKeYAZpmJB2ig9VauCC5xsa82GNKVKDAqpOn3KVzNt0zmrU0g==} + engines: {node: '>=12'} + + yocto-spinner@1.2.1: + resolution: {integrity: sha512-9cbFWLhbiZp+820O4pkHGNncI7+MrUGzBOjw8NMG+ewsY+aG0DdEXnr19Smxao32YOjLZRMdn1UtaxcrXOYOIg==} engines: {node: '>=18.19'} yoctocolors@2.1.2: resolution: {integrity: sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==} engines: {node: '>=18'} + yummies@7.20.1: + resolution: {integrity: sha512-H/AxRy+SjVlfpeI0TkiVkU/M2n+XpR1XGt5yS5r7GsP9Iz3mr17dbq9DLW18PmMlyKO78+yvH/9Z9VAnVuV3og==} + peerDependencies: + mobx: ^6.12.4 + react: ^18 || ^19 + peerDependenciesMeta: + mobx: + optional: true + react: + optional: true + zod-to-json-schema@3.25.2: resolution: {integrity: sha512-O/PgfnpT1xKSDeQYSCfRI5Gy3hPf91mKVDuYLUHZJMiDFptvP41MSnWofm8dnCm0256ZNfZIM7DSzuSMAFnjHA==} peerDependencies: @@ -4354,8 +4644,27 @@ snapshots: '@antfu/install-pkg@1.1.0': dependencies: - package-manager-detector: 1.6.0 - tinyexec: 1.0.4 + package-manager-detector: 1.7.0 + tinyexec: 1.2.4 + + '@apidevtools/json-schema-ref-parser@14.0.1': + dependencies: + '@types/json-schema': 7.0.15 + js-yaml: 4.2.0 + + '@apidevtools/openapi-schemas@2.1.0': {} + + '@apidevtools/swagger-methods@3.0.2': {} + + '@apidevtools/swagger-parser@12.1.0(openapi-types@12.1.3)': + dependencies: + '@apidevtools/json-schema-ref-parser': 14.0.1 + '@apidevtools/openapi-schemas': 2.1.0 + '@apidevtools/swagger-methods': 3.0.2 + ajv: 8.20.0 + ajv-draft-04: 1.0.0(ajv@8.20.0) + call-me-maybe: 1.0.2 + openapi-types: 12.1.3 '@babel/code-frame@7.29.7': dependencies: @@ -4401,7 +4710,7 @@ snapshots: dependencies: '@babel/compat-data': 7.29.7 '@babel/helper-validator-option': 7.29.7 - browserslist: 4.28.1 + browserslist: 4.28.6 lru-cache: 5.1.1 semver: 6.3.1 @@ -4520,7 +4829,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/runtime@7.29.2': {} + '@babel/runtime@7.29.7': {} '@babel/template@7.29.7': dependencies: @@ -4545,30 +4854,30 @@ snapshots: '@babel/helper-string-parser': 7.29.7 '@babel/helper-validator-identifier': 7.29.7 - '@base-ui/react@1.4.1(@date-fns/tz@1.4.1)(@types/react@19.2.14)(date-fns@4.1.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': + '@base-ui/react@1.6.0(@date-fns/tz@1.5.0)(@types/react@19.2.17)(date-fns@4.4.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - '@babel/runtime': 7.29.2 - '@base-ui/utils': 0.2.8(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@floating-ui/react-dom': 2.1.8(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@floating-ui/utils': 0.2.11 + '@babel/runtime': 7.29.7 + '@base-ui/utils': 0.3.1(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@floating-ui/react-dom': 2.1.9(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@floating-ui/utils': 0.2.12 react: 19.2.5 react-dom: 19.2.5(react@19.2.5) use-sync-external-store: 1.6.0(react@19.2.5) optionalDependencies: - '@date-fns/tz': 1.4.1 - '@types/react': 19.2.14 - date-fns: 4.1.0 + '@date-fns/tz': 1.5.0 + '@types/react': 19.2.17 + date-fns: 4.4.0 - '@base-ui/utils@0.2.8(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': + '@base-ui/utils@0.3.1(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - '@babel/runtime': 7.29.2 - '@floating-ui/utils': 0.2.11 + '@babel/runtime': 7.29.7 + '@floating-ui/utils': 0.2.12 react: 19.2.5 react-dom: 19.2.5(react@19.2.5) - reselect: 5.1.1 + reselect: 5.2.0 use-sync-external-store: 1.6.0(react@19.2.5) optionalDependencies: - '@types/react': 19.2.14 + '@types/react': 19.2.17 '@biomejs/biome@2.5.4': optionalDependencies: @@ -4605,11 +4914,17 @@ snapshots: '@biomejs/cli-win32-x64@2.5.4': optional: true + '@biomejs/js-api@6.0.0(@biomejs/wasm-nodejs@2.5.2)': + optionalDependencies: + '@biomejs/wasm-nodejs': 2.5.2 + + '@biomejs/wasm-nodejs@2.5.2': {} + '@braintree/sanitize-url@7.1.2': {} '@chevrotain/types@11.1.2': {} - '@date-fns/tz@1.4.1': {} + '@date-fns/tz@1.5.0': {} '@dnd-kit/accessibility@3.1.1(react@19.2.5)': dependencies: @@ -4650,58 +4965,60 @@ snapshots: object-treeify: 1.1.33 open: 8.4.2 picomatch: 4.0.4 - systeminformation: 5.31.11 + systeminformation: 5.31.17 undici: 7.28.0 which: 4.0.0 - yocto-spinner: 1.2.0 + yocto-spinner: 1.2.1 '@dotenvx/primitives@0.8.0': {} - '@emnapi/runtime@1.10.0': + '@emnapi/runtime@1.11.2': dependencies: tslib: 2.8.1 optional: true - '@floating-ui/core@1.7.5': + '@exodus/schemasafe@1.3.0': {} + + '@floating-ui/core@1.8.0': dependencies: - '@floating-ui/utils': 0.2.11 + '@floating-ui/utils': 0.2.12 - '@floating-ui/dom@1.7.6': + '@floating-ui/dom@1.8.0': dependencies: - '@floating-ui/core': 1.7.5 - '@floating-ui/utils': 0.2.11 + '@floating-ui/core': 1.8.0 + '@floating-ui/utils': 0.2.12 - '@floating-ui/react-dom@2.1.8(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': + '@floating-ui/react-dom@2.1.9(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - '@floating-ui/dom': 1.7.6 + '@floating-ui/dom': 1.8.0 react: 19.2.5 react-dom: 19.2.5(react@19.2.5) - '@floating-ui/utils@0.2.11': {} + '@floating-ui/utils@0.2.12': {} - '@formatjs/fast-memoize@3.1.5': {} + '@formatjs/fast-memoize@3.1.7': {} - '@formatjs/icu-messageformat-parser@3.5.9': + '@formatjs/icu-messageformat-parser@3.5.15': dependencies: - '@formatjs/icu-skeleton-parser': 2.1.9 + '@formatjs/icu-skeleton-parser': 2.1.11 - '@formatjs/icu-skeleton-parser@2.1.9': {} + '@formatjs/icu-skeleton-parser@2.1.11': {} - '@formatjs/intl-localematcher@0.8.8': + '@formatjs/intl-localematcher@0.8.13': dependencies: - '@formatjs/fast-memoize': 3.1.5 + '@formatjs/fast-memoize': 3.1.7 - '@hono/node-server@1.19.14(hono@4.12.27)': + '@hono/node-server@1.19.14(hono@4.12.30)': dependencies: - hono: 4.12.27 + hono: 4.12.30 '@iconify/types@2.0.0': {} - '@iconify/utils@3.1.0': + '@iconify/utils@3.1.4': dependencies: '@antfu/install-pkg': 1.1.0 '@iconify/types': 2.0.0 - mlly: 1.8.1 + import-meta-resolve: 4.2.0 '@img/colour@1.1.0': optional: true @@ -4788,7 +5105,7 @@ snapshots: '@img/sharp-wasm32@0.34.5': dependencies: - '@emnapi/runtime': 1.10.0 + '@emnapi/runtime': 1.11.2 optional: true '@img/sharp-win32-arm64@0.34.5': @@ -4821,13 +5138,13 @@ snapshots: '@lobehub/icons-static-svg@1.90.0': {} - '@mermaid-js/parser@1.1.1': + '@mermaid-js/parser@1.2.0': dependencies: '@chevrotain/types': 11.1.2 '@modelcontextprotocol/sdk@1.29.0(zod@3.25.76)': dependencies: - '@hono/node-server': 1.19.14(hono@4.12.27) + '@hono/node-server': 1.19.14(hono@4.12.30) ajv: 8.20.0 ajv-formats: 3.0.1(ajv@8.20.0) content-type: 1.0.5 @@ -4837,7 +5154,7 @@ snapshots: eventsource-parser: 3.1.0 express: 5.2.1 express-rate-limit: 8.5.2(express@5.2.1) - hono: 4.12.27 + hono: 4.12.30 jose: 6.2.3 json-schema-typed: 8.0.2 pkce-challenge: 5.0.1 @@ -4931,7 +5248,7 @@ snapshots: '@nodelib/fs.walk@1.2.8': dependencies: '@nodelib/fs.scandir': 2.1.5 - fastq: 1.19.1 + fastq: 1.20.1 '@parcel/watcher-android-arm64@2.5.6': optional: true @@ -4993,830 +5310,785 @@ snapshots: '@parcel/watcher-win32-ia32': 2.5.6 '@parcel/watcher-win32-x64': 2.5.6 - '@radix-ui/number@1.1.1': {} + '@radix-ui/number@1.1.2': {} - '@radix-ui/primitive@1.1.3': {} + '@radix-ui/primitive@1.1.5': {} - '@radix-ui/react-accessible-icon@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': + '@radix-ui/react-accessible-icon@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - react: 19.2.5 - react-dom: 19.2.5(react@19.2.5) - optionalDependencies: - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3(@types/react@19.2.14) - - '@radix-ui/react-accordion@1.2.12(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': - dependencies: - '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-collapsible': 1.1.12(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-visually-hidden': 1.2.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) react: 19.2.5 react-dom: 19.2.5(react@19.2.5) optionalDependencies: - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3(@types/react@19.2.14) - - '@radix-ui/react-alert-dialog@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': - dependencies: - '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.5) + '@types/react': 19.2.17 + '@types/react-dom': 19.2.3(@types/react@19.2.17) + + '@radix-ui/react-accordion@1.2.16(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': + dependencies: + '@radix-ui/primitive': 1.1.5 + '@radix-ui/react-collapsible': 1.1.16(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-collection': 1.1.12(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-compose-refs': 1.1.3(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-context': 1.2.0(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-direction': 1.1.2(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-id': 1.1.2(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-primitive': 2.1.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-use-controllable-state': 1.2.3(@types/react@19.2.17)(react@19.2.5) react: 19.2.5 react-dom: 19.2.5(react@19.2.5) optionalDependencies: - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3(@types/react@19.2.14) + '@types/react': 19.2.17 + '@types/react-dom': 19.2.3(@types/react@19.2.17) - '@radix-ui/react-arrow@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': + '@radix-ui/react-alert-dialog@1.1.19(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/primitive': 1.1.5 + '@radix-ui/react-compose-refs': 1.1.3(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-context': 1.2.0(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-dialog': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-primitive': 2.1.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) react: 19.2.5 react-dom: 19.2.5(react@19.2.5) optionalDependencies: - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3(@types/react@19.2.14) + '@types/react': 19.2.17 + '@types/react-dom': 19.2.3(@types/react@19.2.17) - '@radix-ui/react-aspect-ratio@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': + '@radix-ui/react-arrow@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-primitive': 2.1.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) react: 19.2.5 react-dom: 19.2.5(react@19.2.5) optionalDependencies: - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3(@types/react@19.2.14) + '@types/react': 19.2.17 + '@types/react-dom': 19.2.3(@types/react@19.2.17) - '@radix-ui/react-avatar@1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': + '@radix-ui/react-aspect-ratio@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-use-is-hydrated': 0.1.0(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-primitive': 2.1.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) react: 19.2.5 react-dom: 19.2.5(react@19.2.5) optionalDependencies: - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3(@types/react@19.2.14) + '@types/react': 19.2.17 + '@types/react-dom': 19.2.3(@types/react@19.2.17) - '@radix-ui/react-avatar@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': + '@radix-ui/react-avatar@1.2.2(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - '@radix-ui/react-context': 1.1.3(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-primitive': 2.1.4(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-use-is-hydrated': 0.1.0(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-context': 1.2.0(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-primitive': 2.1.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-use-callback-ref': 1.1.2(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-use-is-hydrated': 0.1.1(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-use-layout-effect': 1.1.2(@types/react@19.2.17)(react@19.2.5) react: 19.2.5 react-dom: 19.2.5(react@19.2.5) optionalDependencies: - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3(@types/react@19.2.14) - - '@radix-ui/react-checkbox@1.3.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': - dependencies: - '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@types/react': 19.2.17 + '@types/react-dom': 19.2.3(@types/react@19.2.17) + + '@radix-ui/react-checkbox@1.3.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': + dependencies: + '@radix-ui/primitive': 1.1.5 + '@radix-ui/react-compose-refs': 1.1.3(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-context': 1.2.0(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-presence': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-primitive': 2.1.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-use-controllable-state': 1.2.3(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-use-previous': 1.1.2(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-use-size': 1.1.2(@types/react@19.2.17)(react@19.2.5) react: 19.2.5 react-dom: 19.2.5(react@19.2.5) optionalDependencies: - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3(@types/react@19.2.14) - - '@radix-ui/react-collapsible@1.1.12(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': - dependencies: - '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@types/react': 19.2.17 + '@types/react-dom': 19.2.3(@types/react@19.2.17) + + '@radix-ui/react-collapsible@1.1.16(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': + dependencies: + '@radix-ui/primitive': 1.1.5 + '@radix-ui/react-compose-refs': 1.1.3(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-context': 1.2.0(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-id': 1.1.2(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-presence': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-primitive': 2.1.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-use-controllable-state': 1.2.3(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-use-layout-effect': 1.1.2(@types/react@19.2.17)(react@19.2.5) react: 19.2.5 react-dom: 19.2.5(react@19.2.5) optionalDependencies: - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3(@types/react@19.2.14) + '@types/react': 19.2.17 + '@types/react-dom': 19.2.3(@types/react@19.2.17) - '@radix-ui/react-collection@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': + '@radix-ui/react-collection@1.1.12(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-compose-refs': 1.1.3(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-context': 1.2.0(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-primitive': 2.1.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-slot': 1.3.0(@types/react@19.2.17)(react@19.2.5) react: 19.2.5 react-dom: 19.2.5(react@19.2.5) optionalDependencies: - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3(@types/react@19.2.14) + '@types/react': 19.2.17 + '@types/react-dom': 19.2.3(@types/react@19.2.17) - '@radix-ui/react-compose-refs@1.1.2(@types/react@19.2.14)(react@19.2.5)': + '@radix-ui/react-compose-refs@1.1.3(@types/react@19.2.17)(react@19.2.5)': dependencies: react: 19.2.5 optionalDependencies: - '@types/react': 19.2.14 + '@types/react': 19.2.17 - '@radix-ui/react-context-menu@2.2.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': + '@radix-ui/react-context-menu@2.3.3(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-menu': 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/primitive': 1.1.5 + '@radix-ui/react-context': 1.2.0(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-menu': 2.1.20(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-primitive': 2.1.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-use-controllable-state': 1.2.3(@types/react@19.2.17)(react@19.2.5) react: 19.2.5 react-dom: 19.2.5(react@19.2.5) optionalDependencies: - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3(@types/react@19.2.14) - - '@radix-ui/react-context@1.1.2(@types/react@19.2.14)(react@19.2.5)': - dependencies: - react: 19.2.5 - optionalDependencies: - '@types/react': 19.2.14 + '@types/react': 19.2.17 + '@types/react-dom': 19.2.3(@types/react@19.2.17) - '@radix-ui/react-context@1.1.3(@types/react@19.2.14)(react@19.2.5)': + '@radix-ui/react-context@1.2.0(@types/react@19.2.17)(react@19.2.5)': dependencies: react: 19.2.5 optionalDependencies: - '@types/react': 19.2.14 - - '@radix-ui/react-dialog@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': - dependencies: - '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.5) + '@types/react': 19.2.17 + + '@radix-ui/react-dialog@1.1.19(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': + dependencies: + '@radix-ui/primitive': 1.1.5 + '@radix-ui/react-compose-refs': 1.1.3(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-context': 1.2.0(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-dismissable-layer': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-focus-guards': 1.1.4(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-focus-scope': 1.1.12(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-id': 1.1.2(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-portal': 1.1.13(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-presence': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-primitive': 2.1.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-slot': 1.3.0(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-use-controllable-state': 1.2.3(@types/react@19.2.17)(react@19.2.5) aria-hidden: 1.2.6 react: 19.2.5 react-dom: 19.2.5(react@19.2.5) - react-remove-scroll: 2.7.1(@types/react@19.2.14)(react@19.2.5) + react-remove-scroll: 2.7.2(@types/react@19.2.17)(react@19.2.5) optionalDependencies: - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3(@types/react@19.2.14) + '@types/react': 19.2.17 + '@types/react-dom': 19.2.3(@types/react@19.2.17) - '@radix-ui/react-direction@1.1.1(@types/react@19.2.14)(react@19.2.5)': + '@radix-ui/react-direction@1.1.2(@types/react@19.2.17)(react@19.2.5)': dependencies: react: 19.2.5 optionalDependencies: - '@types/react': 19.2.14 + '@types/react': 19.2.17 - '@radix-ui/react-dismissable-layer@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': + '@radix-ui/react-dismissable-layer@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/primitive': 1.1.5 + '@radix-ui/react-compose-refs': 1.1.3(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-primitive': 2.1.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-use-callback-ref': 1.1.2(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-use-effect-event': 0.0.3(@types/react@19.2.17)(react@19.2.5) react: 19.2.5 react-dom: 19.2.5(react@19.2.5) optionalDependencies: - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3(@types/react@19.2.14) - - '@radix-ui/react-dropdown-menu@2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': - dependencies: - '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-menu': 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.5) + '@types/react': 19.2.17 + '@types/react-dom': 19.2.3(@types/react@19.2.17) + + '@radix-ui/react-dropdown-menu@2.1.20(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': + dependencies: + '@radix-ui/primitive': 1.1.5 + '@radix-ui/react-compose-refs': 1.1.3(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-context': 1.2.0(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-id': 1.1.2(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-menu': 2.1.20(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-primitive': 2.1.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-use-controllable-state': 1.2.3(@types/react@19.2.17)(react@19.2.5) react: 19.2.5 react-dom: 19.2.5(react@19.2.5) optionalDependencies: - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3(@types/react@19.2.14) + '@types/react': 19.2.17 + '@types/react-dom': 19.2.3(@types/react@19.2.17) - '@radix-ui/react-focus-guards@1.1.3(@types/react@19.2.14)(react@19.2.5)': + '@radix-ui/react-focus-guards@1.1.4(@types/react@19.2.17)(react@19.2.5)': dependencies: react: 19.2.5 optionalDependencies: - '@types/react': 19.2.14 + '@types/react': 19.2.17 - '@radix-ui/react-focus-scope@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': + '@radix-ui/react-focus-scope@1.1.12(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-compose-refs': 1.1.3(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-primitive': 2.1.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-use-callback-ref': 1.1.2(@types/react@19.2.17)(react@19.2.5) react: 19.2.5 react-dom: 19.2.5(react@19.2.5) optionalDependencies: - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3(@types/react@19.2.14) + '@types/react': 19.2.17 + '@types/react-dom': 19.2.3(@types/react@19.2.17) - '@radix-ui/react-form@0.1.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': + '@radix-ui/react-form@0.1.12(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-label': 2.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/primitive': 1.1.5 + '@radix-ui/react-compose-refs': 1.1.3(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-context': 1.2.0(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-id': 1.1.2(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-label': 2.1.11(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-primitive': 2.1.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) react: 19.2.5 react-dom: 19.2.5(react@19.2.5) optionalDependencies: - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3(@types/react@19.2.14) - - '@radix-ui/react-hover-card@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': - dependencies: - '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.5) + '@types/react': 19.2.17 + '@types/react-dom': 19.2.3(@types/react@19.2.17) + + '@radix-ui/react-hover-card@1.1.19(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': + dependencies: + '@radix-ui/primitive': 1.1.5 + '@radix-ui/react-compose-refs': 1.1.3(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-context': 1.2.0(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-dismissable-layer': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-popper': 1.3.3(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-portal': 1.1.13(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-presence': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-primitive': 2.1.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-use-controllable-state': 1.2.3(@types/react@19.2.17)(react@19.2.5) react: 19.2.5 react-dom: 19.2.5(react@19.2.5) optionalDependencies: - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3(@types/react@19.2.14) + '@types/react': 19.2.17 + '@types/react-dom': 19.2.3(@types/react@19.2.17) - '@radix-ui/react-id@1.1.1(@types/react@19.2.14)(react@19.2.5)': + '@radix-ui/react-id@1.1.2(@types/react@19.2.17)(react@19.2.5)': dependencies: - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-layout-effect': 1.1.2(@types/react@19.2.17)(react@19.2.5) react: 19.2.5 optionalDependencies: - '@types/react': 19.2.14 + '@types/react': 19.2.17 - '@radix-ui/react-label@2.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': + '@radix-ui/react-label@2.1.11(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-primitive': 2.1.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) react: 19.2.5 react-dom: 19.2.5(react@19.2.5) optionalDependencies: - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3(@types/react@19.2.14) - - '@radix-ui/react-menu@2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': - dependencies: - '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@types/react': 19.2.17 + '@types/react-dom': 19.2.3(@types/react@19.2.17) + + '@radix-ui/react-menu@2.1.20(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': + dependencies: + '@radix-ui/primitive': 1.1.5 + '@radix-ui/react-collection': 1.1.12(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-compose-refs': 1.1.3(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-context': 1.2.0(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-direction': 1.1.2(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-dismissable-layer': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-focus-guards': 1.1.4(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-focus-scope': 1.1.12(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-id': 1.1.2(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-popper': 1.3.3(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-portal': 1.1.13(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-presence': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-primitive': 2.1.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-roving-focus': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-slot': 1.3.0(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-use-callback-ref': 1.1.2(@types/react@19.2.17)(react@19.2.5) aria-hidden: 1.2.6 react: 19.2.5 react-dom: 19.2.5(react@19.2.5) - react-remove-scroll: 2.7.1(@types/react@19.2.14)(react@19.2.5) + react-remove-scroll: 2.7.2(@types/react@19.2.17)(react@19.2.5) optionalDependencies: - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3(@types/react@19.2.14) - - '@radix-ui/react-menubar@1.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': - dependencies: - '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-menu': 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.5) + '@types/react': 19.2.17 + '@types/react-dom': 19.2.3(@types/react@19.2.17) + + '@radix-ui/react-menubar@1.1.20(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': + dependencies: + '@radix-ui/primitive': 1.1.5 + '@radix-ui/react-collection': 1.1.12(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-compose-refs': 1.1.3(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-context': 1.2.0(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-direction': 1.1.2(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-id': 1.1.2(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-menu': 2.1.20(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-primitive': 2.1.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-roving-focus': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-use-controllable-state': 1.2.3(@types/react@19.2.17)(react@19.2.5) react: 19.2.5 react-dom: 19.2.5(react@19.2.5) optionalDependencies: - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3(@types/react@19.2.14) - - '@radix-ui/react-navigation-menu@1.2.14(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': - dependencies: - '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@types/react': 19.2.17 + '@types/react-dom': 19.2.3(@types/react@19.2.17) + + '@radix-ui/react-navigation-menu@1.2.18(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': + dependencies: + '@radix-ui/primitive': 1.1.5 + '@radix-ui/react-collection': 1.1.12(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-compose-refs': 1.1.3(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-context': 1.2.0(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-direction': 1.1.2(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-dismissable-layer': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-id': 1.1.2(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-presence': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-primitive': 2.1.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-use-callback-ref': 1.1.2(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-use-controllable-state': 1.2.3(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-use-layout-effect': 1.1.2(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-use-previous': 1.1.2(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-visually-hidden': 1.2.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) react: 19.2.5 react-dom: 19.2.5(react@19.2.5) optionalDependencies: - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3(@types/react@19.2.14) - - '@radix-ui/react-one-time-password-field@0.1.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': - dependencies: - '@radix-ui/number': 1.1.1 - '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-use-is-hydrated': 0.1.0(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@types/react': 19.2.17 + '@types/react-dom': 19.2.3(@types/react@19.2.17) + + '@radix-ui/react-one-time-password-field@0.1.12(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': + dependencies: + '@radix-ui/number': 1.1.2 + '@radix-ui/primitive': 1.1.5 + '@radix-ui/react-collection': 1.1.12(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-compose-refs': 1.1.3(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-context': 1.2.0(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-direction': 1.1.2(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-primitive': 2.1.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-roving-focus': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-use-controllable-state': 1.2.3(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-use-effect-event': 0.0.3(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-use-is-hydrated': 0.1.1(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-use-layout-effect': 1.1.2(@types/react@19.2.17)(react@19.2.5) react: 19.2.5 react-dom: 19.2.5(react@19.2.5) optionalDependencies: - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3(@types/react@19.2.14) - - '@radix-ui/react-password-toggle-field@0.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': - dependencies: - '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-use-is-hydrated': 0.1.0(@types/react@19.2.14)(react@19.2.5) + '@types/react': 19.2.17 + '@types/react-dom': 19.2.3(@types/react@19.2.17) + + '@radix-ui/react-password-toggle-field@0.1.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': + dependencies: + '@radix-ui/primitive': 1.1.5 + '@radix-ui/react-compose-refs': 1.1.3(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-context': 1.2.0(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-id': 1.1.2(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-primitive': 2.1.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-use-controllable-state': 1.2.3(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-use-effect-event': 0.0.3(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-use-is-hydrated': 0.1.1(@types/react@19.2.17)(react@19.2.5) react: 19.2.5 react-dom: 19.2.5(react@19.2.5) optionalDependencies: - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3(@types/react@19.2.14) - - '@radix-ui/react-popover@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': - dependencies: - '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.5) + '@types/react': 19.2.17 + '@types/react-dom': 19.2.3(@types/react@19.2.17) + + '@radix-ui/react-popover@1.1.19(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': + dependencies: + '@radix-ui/primitive': 1.1.5 + '@radix-ui/react-compose-refs': 1.1.3(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-context': 1.2.0(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-dismissable-layer': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-focus-guards': 1.1.4(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-focus-scope': 1.1.12(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-id': 1.1.2(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-popper': 1.3.3(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-portal': 1.1.13(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-presence': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-primitive': 2.1.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-slot': 1.3.0(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-use-controllable-state': 1.2.3(@types/react@19.2.17)(react@19.2.5) aria-hidden: 1.2.6 react: 19.2.5 react-dom: 19.2.5(react@19.2.5) - react-remove-scroll: 2.7.1(@types/react@19.2.14)(react@19.2.5) - optionalDependencies: - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3(@types/react@19.2.14) - - '@radix-ui/react-popper@1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': - dependencies: - '@floating-ui/react-dom': 2.1.8(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-arrow': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-use-rect': 1.1.1(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/rect': 1.1.1 - react: 19.2.5 - react-dom: 19.2.5(react@19.2.5) + react-remove-scroll: 2.7.2(@types/react@19.2.17)(react@19.2.5) optionalDependencies: - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3(@types/react@19.2.14) - - '@radix-ui/react-portal@1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': - dependencies: - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@types/react': 19.2.17 + '@types/react-dom': 19.2.3(@types/react@19.2.17) + + '@radix-ui/react-popper@1.3.3(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': + dependencies: + '@floating-ui/react-dom': 2.1.9(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-arrow': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-compose-refs': 1.1.3(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-context': 1.2.0(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-primitive': 2.1.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-use-callback-ref': 1.1.2(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-use-layout-effect': 1.1.2(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-use-rect': 1.1.2(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-use-size': 1.1.2(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/rect': 1.1.2 react: 19.2.5 react-dom: 19.2.5(react@19.2.5) optionalDependencies: - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3(@types/react@19.2.14) + '@types/react': 19.2.17 + '@types/react-dom': 19.2.3(@types/react@19.2.17) - '@radix-ui/react-presence@1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': + '@radix-ui/react-portal@1.1.13(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-primitive': 2.1.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-use-layout-effect': 1.1.2(@types/react@19.2.17)(react@19.2.5) react: 19.2.5 react-dom: 19.2.5(react@19.2.5) optionalDependencies: - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3(@types/react@19.2.14) + '@types/react': 19.2.17 + '@types/react-dom': 19.2.3(@types/react@19.2.17) - '@radix-ui/react-primitive@2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': + '@radix-ui/react-presence@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-layout-effect': 1.1.2(@types/react@19.2.17)(react@19.2.5) react: 19.2.5 react-dom: 19.2.5(react@19.2.5) optionalDependencies: - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3(@types/react@19.2.14) + '@types/react': 19.2.17 + '@types/react-dom': 19.2.3(@types/react@19.2.17) - '@radix-ui/react-primitive@2.1.4(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': + '@radix-ui/react-primitive@2.1.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - '@radix-ui/react-slot': 1.2.4(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-slot': 1.3.0(@types/react@19.2.17)(react@19.2.5) react: 19.2.5 react-dom: 19.2.5(react@19.2.5) optionalDependencies: - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3(@types/react@19.2.14) + '@types/react': 19.2.17 + '@types/react-dom': 19.2.3(@types/react@19.2.17) - '@radix-ui/react-progress@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': + '@radix-ui/react-progress@1.1.12(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-context': 1.2.0(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-primitive': 2.1.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) react: 19.2.5 react-dom: 19.2.5(react@19.2.5) optionalDependencies: - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3(@types/react@19.2.14) - - '@radix-ui/react-radio-group@1.3.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': - dependencies: - '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@types/react': 19.2.17 + '@types/react-dom': 19.2.3(@types/react@19.2.17) + + '@radix-ui/react-radio-group@1.4.3(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': + dependencies: + '@radix-ui/primitive': 1.1.5 + '@radix-ui/react-compose-refs': 1.1.3(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-context': 1.2.0(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-direction': 1.1.2(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-presence': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-primitive': 2.1.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-roving-focus': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-use-controllable-state': 1.2.3(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-use-previous': 1.1.2(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-use-size': 1.1.2(@types/react@19.2.17)(react@19.2.5) react: 19.2.5 react-dom: 19.2.5(react@19.2.5) optionalDependencies: - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3(@types/react@19.2.14) - - '@radix-ui/react-roving-focus@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': - dependencies: - '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.5) + '@types/react': 19.2.17 + '@types/react-dom': 19.2.3(@types/react@19.2.17) + + '@radix-ui/react-roving-focus@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': + dependencies: + '@radix-ui/primitive': 1.1.5 + '@radix-ui/react-collection': 1.1.12(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-compose-refs': 1.1.3(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-context': 1.2.0(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-direction': 1.1.2(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-id': 1.1.2(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-primitive': 2.1.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-use-callback-ref': 1.1.2(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-use-controllable-state': 1.2.3(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-use-is-hydrated': 0.1.1(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-use-layout-effect': 1.1.2(@types/react@19.2.17)(react@19.2.5) react: 19.2.5 react-dom: 19.2.5(react@19.2.5) optionalDependencies: - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3(@types/react@19.2.14) - - '@radix-ui/react-scroll-area@1.2.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': - dependencies: - '@radix-ui/number': 1.1.1 - '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@types/react': 19.2.17 + '@types/react-dom': 19.2.3(@types/react@19.2.17) + + '@radix-ui/react-scroll-area@1.2.14(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': + dependencies: + '@radix-ui/number': 1.1.2 + '@radix-ui/primitive': 1.1.5 + '@radix-ui/react-compose-refs': 1.1.3(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-context': 1.2.0(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-direction': 1.1.2(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-presence': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-primitive': 2.1.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-use-callback-ref': 1.1.2(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-use-layout-effect': 1.1.2(@types/react@19.2.17)(react@19.2.5) react: 19.2.5 react-dom: 19.2.5(react@19.2.5) optionalDependencies: - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3(@types/react@19.2.14) - - '@radix-ui/react-select@2.2.6(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': - dependencies: - '@radix-ui/number': 1.1.1 - '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@types/react': 19.2.17 + '@types/react-dom': 19.2.3(@types/react@19.2.17) + + '@radix-ui/react-select@2.3.3(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': + dependencies: + '@radix-ui/number': 1.1.2 + '@radix-ui/primitive': 1.1.5 + '@radix-ui/react-collection': 1.1.12(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-compose-refs': 1.1.3(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-context': 1.2.0(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-direction': 1.1.2(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-dismissable-layer': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-focus-guards': 1.1.4(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-focus-scope': 1.1.12(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-id': 1.1.2(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-popper': 1.3.3(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-portal': 1.1.13(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-presence': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-primitive': 2.1.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-slot': 1.3.0(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-use-callback-ref': 1.1.2(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-use-controllable-state': 1.2.3(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-use-layout-effect': 1.1.2(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-use-previous': 1.1.2(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-visually-hidden': 1.2.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) aria-hidden: 1.2.6 react: 19.2.5 react-dom: 19.2.5(react@19.2.5) - react-remove-scroll: 2.7.1(@types/react@19.2.14)(react@19.2.5) - optionalDependencies: - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3(@types/react@19.2.14) - - '@radix-ui/react-separator@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': - dependencies: - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - react: 19.2.5 - react-dom: 19.2.5(react@19.2.5) + react-remove-scroll: 2.7.2(@types/react@19.2.17)(react@19.2.5) optionalDependencies: - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3(@types/react@19.2.14) + '@types/react': 19.2.17 + '@types/react-dom': 19.2.3(@types/react@19.2.17) - '@radix-ui/react-separator@1.1.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': + '@radix-ui/react-separator@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - '@radix-ui/react-primitive': 2.1.4(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-primitive': 2.1.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) react: 19.2.5 react-dom: 19.2.5(react@19.2.5) optionalDependencies: - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3(@types/react@19.2.14) - - '@radix-ui/react-slider@1.3.6(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': - dependencies: - '@radix-ui/number': 1.1.1 - '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@types/react': 19.2.17 + '@types/react-dom': 19.2.3(@types/react@19.2.17) + + '@radix-ui/react-slider@1.4.3(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': + dependencies: + '@radix-ui/number': 1.1.2 + '@radix-ui/primitive': 1.1.5 + '@radix-ui/react-collection': 1.1.12(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-compose-refs': 1.1.3(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-context': 1.2.0(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-direction': 1.1.2(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-primitive': 2.1.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-use-controllable-state': 1.2.3(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-use-layout-effect': 1.1.2(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-use-previous': 1.1.2(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-use-size': 1.1.2(@types/react@19.2.17)(react@19.2.5) react: 19.2.5 react-dom: 19.2.5(react@19.2.5) optionalDependencies: - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3(@types/react@19.2.14) + '@types/react': 19.2.17 + '@types/react-dom': 19.2.3(@types/react@19.2.17) - '@radix-ui/react-slot@1.2.3(@types/react@19.2.14)(react@19.2.5)': + '@radix-ui/react-slot@1.3.0(@types/react@19.2.17)(react@19.2.5)': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-compose-refs': 1.1.3(@types/react@19.2.17)(react@19.2.5) react: 19.2.5 optionalDependencies: - '@types/react': 19.2.14 + '@types/react': 19.2.17 - '@radix-ui/react-slot@1.2.4(@types/react@19.2.14)(react@19.2.5)': + '@radix-ui/react-switch@1.3.3(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) - react: 19.2.5 - optionalDependencies: - '@types/react': 19.2.14 - - '@radix-ui/react-switch@1.2.6(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': - dependencies: - '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/primitive': 1.1.5 + '@radix-ui/react-compose-refs': 1.1.3(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-context': 1.2.0(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-primitive': 2.1.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-use-controllable-state': 1.2.3(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-use-previous': 1.1.2(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-use-size': 1.1.2(@types/react@19.2.17)(react@19.2.5) react: 19.2.5 react-dom: 19.2.5(react@19.2.5) optionalDependencies: - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3(@types/react@19.2.14) - - '@radix-ui/react-tabs@1.1.13(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': - dependencies: - '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.5) + '@types/react': 19.2.17 + '@types/react-dom': 19.2.3(@types/react@19.2.17) + + '@radix-ui/react-tabs@1.1.17(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': + dependencies: + '@radix-ui/primitive': 1.1.5 + '@radix-ui/react-context': 1.2.0(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-direction': 1.1.2(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-id': 1.1.2(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-presence': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-primitive': 2.1.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-roving-focus': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-use-controllable-state': 1.2.3(@types/react@19.2.17)(react@19.2.5) react: 19.2.5 react-dom: 19.2.5(react@19.2.5) optionalDependencies: - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3(@types/react@19.2.14) - - '@radix-ui/react-toast@1.2.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': - dependencies: - '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@types/react': 19.2.17 + '@types/react-dom': 19.2.3(@types/react@19.2.17) + + '@radix-ui/react-toast@1.2.19(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': + dependencies: + '@radix-ui/primitive': 1.1.5 + '@radix-ui/react-collection': 1.1.12(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-compose-refs': 1.1.3(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-context': 1.2.0(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-dismissable-layer': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-portal': 1.1.13(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-presence': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-primitive': 2.1.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-use-callback-ref': 1.1.2(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-use-controllable-state': 1.2.3(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-use-layout-effect': 1.1.2(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-visually-hidden': 1.2.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) react: 19.2.5 react-dom: 19.2.5(react@19.2.5) optionalDependencies: - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3(@types/react@19.2.14) - - '@radix-ui/react-toggle-group@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': - dependencies: - '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-toggle': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.5) + '@types/react': 19.2.17 + '@types/react-dom': 19.2.3(@types/react@19.2.17) + + '@radix-ui/react-toggle-group@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': + dependencies: + '@radix-ui/primitive': 1.1.5 + '@radix-ui/react-context': 1.2.0(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-direction': 1.1.2(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-primitive': 2.1.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-roving-focus': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-toggle': 1.1.14(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-use-controllable-state': 1.2.3(@types/react@19.2.17)(react@19.2.5) react: 19.2.5 react-dom: 19.2.5(react@19.2.5) optionalDependencies: - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3(@types/react@19.2.14) + '@types/react': 19.2.17 + '@types/react-dom': 19.2.3(@types/react@19.2.17) - '@radix-ui/react-toggle@1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': + '@radix-ui/react-toggle@1.1.14(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/primitive': 1.1.5 + '@radix-ui/react-primitive': 2.1.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-use-controllable-state': 1.2.3(@types/react@19.2.17)(react@19.2.5) react: 19.2.5 react-dom: 19.2.5(react@19.2.5) optionalDependencies: - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3(@types/react@19.2.14) - - '@radix-ui/react-toolbar@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': - dependencies: - '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-separator': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-toggle-group': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@types/react': 19.2.17 + '@types/react-dom': 19.2.3(@types/react@19.2.17) + + '@radix-ui/react-toolbar@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': + dependencies: + '@radix-ui/primitive': 1.1.5 + '@radix-ui/react-context': 1.2.0(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-direction': 1.1.2(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-primitive': 2.1.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-roving-focus': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-separator': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-toggle-group': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) react: 19.2.5 react-dom: 19.2.5(react@19.2.5) optionalDependencies: - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3(@types/react@19.2.14) - - '@radix-ui/react-tooltip@1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': - dependencies: - '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@types/react': 19.2.17 + '@types/react-dom': 19.2.3(@types/react@19.2.17) + + '@radix-ui/react-tooltip@1.2.12(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': + dependencies: + '@radix-ui/primitive': 1.1.5 + '@radix-ui/react-compose-refs': 1.1.3(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-context': 1.2.0(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-dismissable-layer': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-id': 1.1.2(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-popper': 1.3.3(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-portal': 1.1.13(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-presence': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-primitive': 2.1.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-slot': 1.3.0(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-use-controllable-state': 1.2.3(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-visually-hidden': 1.2.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) react: 19.2.5 react-dom: 19.2.5(react@19.2.5) optionalDependencies: - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3(@types/react@19.2.14) + '@types/react': 19.2.17 + '@types/react-dom': 19.2.3(@types/react@19.2.17) - '@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.2.14)(react@19.2.5)': + '@radix-ui/react-use-callback-ref@1.1.2(@types/react@19.2.17)(react@19.2.5)': dependencies: react: 19.2.5 optionalDependencies: - '@types/react': 19.2.14 + '@types/react': 19.2.17 - '@radix-ui/react-use-controllable-state@1.2.2(@types/react@19.2.14)(react@19.2.5)': + '@radix-ui/react-use-controllable-state@1.2.3(@types/react@19.2.17)(react@19.2.5)': dependencies: - '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-effect-event': 0.0.3(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-use-layout-effect': 1.1.2(@types/react@19.2.17)(react@19.2.5) react: 19.2.5 optionalDependencies: - '@types/react': 19.2.14 + '@types/react': 19.2.17 - '@radix-ui/react-use-effect-event@0.0.2(@types/react@19.2.14)(react@19.2.5)': + '@radix-ui/react-use-effect-event@0.0.3(@types/react@19.2.17)(react@19.2.5)': dependencies: - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-layout-effect': 1.1.2(@types/react@19.2.17)(react@19.2.5) react: 19.2.5 optionalDependencies: - '@types/react': 19.2.14 + '@types/react': 19.2.17 - '@radix-ui/react-use-escape-keydown@1.1.1(@types/react@19.2.14)(react@19.2.5)': + '@radix-ui/react-use-escape-keydown@1.1.3(@types/react@19.2.17)(react@19.2.5)': dependencies: - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-callback-ref': 1.1.2(@types/react@19.2.17)(react@19.2.5) react: 19.2.5 optionalDependencies: - '@types/react': 19.2.14 + '@types/react': 19.2.17 - '@radix-ui/react-use-is-hydrated@0.1.0(@types/react@19.2.14)(react@19.2.5)': + '@radix-ui/react-use-is-hydrated@0.1.1(@types/react@19.2.17)(react@19.2.5)': dependencies: react: 19.2.5 - use-sync-external-store: 1.6.0(react@19.2.5) optionalDependencies: - '@types/react': 19.2.14 + '@types/react': 19.2.17 - '@radix-ui/react-use-layout-effect@1.1.1(@types/react@19.2.14)(react@19.2.5)': + '@radix-ui/react-use-layout-effect@1.1.2(@types/react@19.2.17)(react@19.2.5)': dependencies: react: 19.2.5 optionalDependencies: - '@types/react': 19.2.14 + '@types/react': 19.2.17 - '@radix-ui/react-use-previous@1.1.1(@types/react@19.2.14)(react@19.2.5)': + '@radix-ui/react-use-previous@1.1.2(@types/react@19.2.17)(react@19.2.5)': dependencies: react: 19.2.5 optionalDependencies: - '@types/react': 19.2.14 + '@types/react': 19.2.17 - '@radix-ui/react-use-rect@1.1.1(@types/react@19.2.14)(react@19.2.5)': + '@radix-ui/react-use-rect@1.1.2(@types/react@19.2.17)(react@19.2.5)': dependencies: - '@radix-ui/rect': 1.1.1 + '@radix-ui/rect': 1.1.2 react: 19.2.5 optionalDependencies: - '@types/react': 19.2.14 + '@types/react': 19.2.17 - '@radix-ui/react-use-size@1.1.1(@types/react@19.2.14)(react@19.2.5)': + '@radix-ui/react-use-size@1.1.2(@types/react@19.2.17)(react@19.2.5)': dependencies: - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-layout-effect': 1.1.2(@types/react@19.2.17)(react@19.2.5) react: 19.2.5 optionalDependencies: - '@types/react': 19.2.14 + '@types/react': 19.2.17 - '@radix-ui/react-visually-hidden@1.2.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': + '@radix-ui/react-visually-hidden@1.2.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-primitive': 2.1.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) react: 19.2.5 react-dom: 19.2.5(react@19.2.5) optionalDependencies: - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3(@types/react@19.2.14) + '@types/react': 19.2.17 + '@types/react-dom': 19.2.3(@types/react@19.2.17) - '@radix-ui/rect@1.1.1': {} + '@radix-ui/rect@1.1.2': {} - '@reduxjs/toolkit@2.11.2(react-redux@9.2.0(@types/react@19.2.14)(react@19.2.5)(redux@5.0.1))(react@19.2.5)': + '@reduxjs/toolkit@2.12.0(react-redux@9.3.0(@types/react@19.2.17)(react@19.2.5)(redux@5.0.1))(react@19.2.5)': dependencies: '@standard-schema/spec': 1.1.0 '@standard-schema/utils': 0.3.0 - immer: 11.1.4 + immer: 11.1.11 redux: 5.0.1 redux-thunk: 3.1.0(redux@5.0.1) reselect: 5.1.1 optionalDependencies: react: 19.2.5 - react-redux: 9.2.0(@types/react@19.2.14)(react@19.2.5)(redux@5.0.1) + react-redux: 9.3.0(@types/react@19.2.17)(react@19.2.5)(redux@5.0.1) '@schummar/icu-type-parser@1.21.5': {} '@sec-ant/readable-stream@0.4.1': {} - '@shadcn/react@0.1.0(@types/react@19.2.14)(react@19.2.5)': + '@shadcn/react@0.1.0(@types/react@19.2.17)(react@19.2.5)': optionalDependencies: - '@types/react': 19.2.14 + '@types/react': 19.2.17 react: 19.2.5 '@shikijs/core@3.23.0': dependencies: '@shikijs/types': 3.23.0 '@shikijs/vscode-textmate': 10.0.2 - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 hast-util-to-html: 9.0.5 '@shikijs/engine-javascript@3.23.0': dependencies: '@shikijs/types': 3.23.0 '@shikijs/vscode-textmate': 10.0.2 - oniguruma-to-es: 4.3.5 + oniguruma-to-es: 4.3.6 '@shikijs/engine-oniguruma@3.23.0': dependencies: @@ -5834,7 +6106,7 @@ snapshots: '@shikijs/types@3.23.0': dependencies: '@shikijs/vscode-textmate': 10.0.2 - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 '@shikijs/vscode-textmate@10.0.2': {} @@ -5847,13 +6119,14 @@ snapshots: '@streamdown/cjk@1.0.3(@types/mdast@4.0.4)(micromark-util-types@2.0.2)(micromark@4.0.2)(react@19.2.5)(unified@11.0.5)': dependencies: react: 19.2.5 - remark-cjk-friendly: 2.0.1(@types/mdast@4.0.4)(micromark-util-types@2.0.2)(micromark@4.0.2)(unified@11.0.5) - remark-cjk-friendly-gfm-strikethrough: 2.0.1(@types/mdast@4.0.4)(micromark-util-types@2.0.2)(micromark@4.0.2)(unified@11.0.5) + remark-cjk-friendly: 2.3.1(@types/mdast@4.0.4)(micromark-util-types@2.0.2)(micromark@4.0.2)(unified@11.0.5) + remark-cjk-friendly-gfm-strikethrough: 2.3.1(@types/mdast@4.0.4)(micromark-util-types@2.0.2)(micromark@4.0.2)(unified@11.0.5) unist-util-visit: 5.1.0 transitivePeerDependencies: - '@types/mdast' - micromark - micromark-util-types + - supports-color - unified '@streamdown/code@1.1.1(react@19.2.5)': @@ -5863,7 +6136,7 @@ snapshots: '@streamdown/math@1.0.2(react@19.2.5)': dependencies: - katex: 0.16.45 + katex: 0.16.47 react: 19.2.5 rehype-katex: 7.0.1 remark-math: 6.0.0 @@ -5875,59 +6148,59 @@ snapshots: mermaid: 11.15.0 react: 19.2.5 - '@swc/core-darwin-arm64@1.15.33': + '@swc/core-darwin-arm64@1.15.43': optional: true - '@swc/core-darwin-x64@1.15.33': + '@swc/core-darwin-x64@1.15.43': optional: true - '@swc/core-linux-arm-gnueabihf@1.15.33': + '@swc/core-linux-arm-gnueabihf@1.15.43': optional: true - '@swc/core-linux-arm64-gnu@1.15.33': + '@swc/core-linux-arm64-gnu@1.15.43': optional: true - '@swc/core-linux-arm64-musl@1.15.33': + '@swc/core-linux-arm64-musl@1.15.43': optional: true - '@swc/core-linux-ppc64-gnu@1.15.33': + '@swc/core-linux-ppc64-gnu@1.15.43': optional: true - '@swc/core-linux-s390x-gnu@1.15.33': + '@swc/core-linux-s390x-gnu@1.15.43': optional: true - '@swc/core-linux-x64-gnu@1.15.33': + '@swc/core-linux-x64-gnu@1.15.43': optional: true - '@swc/core-linux-x64-musl@1.15.33': + '@swc/core-linux-x64-musl@1.15.43': optional: true - '@swc/core-win32-arm64-msvc@1.15.33': + '@swc/core-win32-arm64-msvc@1.15.43': optional: true - '@swc/core-win32-ia32-msvc@1.15.33': + '@swc/core-win32-ia32-msvc@1.15.43': optional: true - '@swc/core-win32-x64-msvc@1.15.33': + '@swc/core-win32-x64-msvc@1.15.43': optional: true - '@swc/core@1.15.33': + '@swc/core@1.15.43': dependencies: '@swc/counter': 0.1.3 - '@swc/types': 0.1.26 + '@swc/types': 0.1.27 optionalDependencies: - '@swc/core-darwin-arm64': 1.15.33 - '@swc/core-darwin-x64': 1.15.33 - '@swc/core-linux-arm-gnueabihf': 1.15.33 - '@swc/core-linux-arm64-gnu': 1.15.33 - '@swc/core-linux-arm64-musl': 1.15.33 - '@swc/core-linux-ppc64-gnu': 1.15.33 - '@swc/core-linux-s390x-gnu': 1.15.33 - '@swc/core-linux-x64-gnu': 1.15.33 - '@swc/core-linux-x64-musl': 1.15.33 - '@swc/core-win32-arm64-msvc': 1.15.33 - '@swc/core-win32-ia32-msvc': 1.15.33 - '@swc/core-win32-x64-msvc': 1.15.33 + '@swc/core-darwin-arm64': 1.15.43 + '@swc/core-darwin-x64': 1.15.43 + '@swc/core-linux-arm-gnueabihf': 1.15.43 + '@swc/core-linux-arm64-gnu': 1.15.43 + '@swc/core-linux-arm64-musl': 1.15.43 + '@swc/core-linux-ppc64-gnu': 1.15.43 + '@swc/core-linux-s390x-gnu': 1.15.43 + '@swc/core-linux-x64-gnu': 1.15.43 + '@swc/core-linux-x64-musl': 1.15.43 + '@swc/core-win32-arm64-msvc': 1.15.43 + '@swc/core-win32-ia32-msvc': 1.15.43 + '@swc/core-win32-x64-msvc': 1.15.43 '@swc/counter@0.1.3': {} @@ -5935,93 +6208,111 @@ snapshots: dependencies: tslib: 2.8.1 - '@swc/types@0.1.26': + '@swc/types@0.1.27': dependencies: '@swc/counter': 0.1.3 - '@tailwindcss/node@4.2.4': + '@tailwindcss/node@4.3.2': dependencies: '@jridgewell/remapping': 2.3.5 - enhanced-resolve: 5.21.0 - jiti: 2.6.1 + enhanced-resolve: 5.21.6 + jiti: 2.7.0 lightningcss: 1.32.0 magic-string: 0.30.21 source-map-js: 1.2.1 - tailwindcss: 4.2.4 + tailwindcss: 4.3.2 - '@tailwindcss/oxide-android-arm64@4.2.4': + '@tailwindcss/oxide-android-arm64@4.3.2': optional: true - '@tailwindcss/oxide-darwin-arm64@4.2.4': + '@tailwindcss/oxide-darwin-arm64@4.3.2': optional: true - '@tailwindcss/oxide-darwin-x64@4.2.4': + '@tailwindcss/oxide-darwin-x64@4.3.2': optional: true - '@tailwindcss/oxide-freebsd-x64@4.2.4': + '@tailwindcss/oxide-freebsd-x64@4.3.2': optional: true - '@tailwindcss/oxide-linux-arm-gnueabihf@4.2.4': + '@tailwindcss/oxide-linux-arm-gnueabihf@4.3.2': optional: true - '@tailwindcss/oxide-linux-arm64-gnu@4.2.4': + '@tailwindcss/oxide-linux-arm64-gnu@4.3.2': optional: true - '@tailwindcss/oxide-linux-arm64-musl@4.2.4': + '@tailwindcss/oxide-linux-arm64-musl@4.3.2': optional: true - '@tailwindcss/oxide-linux-x64-gnu@4.2.4': + '@tailwindcss/oxide-linux-x64-gnu@4.3.2': optional: true - '@tailwindcss/oxide-linux-x64-musl@4.2.4': + '@tailwindcss/oxide-linux-x64-musl@4.3.2': optional: true - '@tailwindcss/oxide-wasm32-wasi@4.2.4': + '@tailwindcss/oxide-wasm32-wasi@4.3.2': optional: true - '@tailwindcss/oxide-win32-arm64-msvc@4.2.4': + '@tailwindcss/oxide-win32-arm64-msvc@4.3.2': optional: true - '@tailwindcss/oxide-win32-x64-msvc@4.2.4': + '@tailwindcss/oxide-win32-x64-msvc@4.3.2': optional: true - '@tailwindcss/oxide@4.2.4': + '@tailwindcss/oxide@4.3.2': optionalDependencies: - '@tailwindcss/oxide-android-arm64': 4.2.4 - '@tailwindcss/oxide-darwin-arm64': 4.2.4 - '@tailwindcss/oxide-darwin-x64': 4.2.4 - '@tailwindcss/oxide-freebsd-x64': 4.2.4 - '@tailwindcss/oxide-linux-arm-gnueabihf': 4.2.4 - '@tailwindcss/oxide-linux-arm64-gnu': 4.2.4 - '@tailwindcss/oxide-linux-arm64-musl': 4.2.4 - '@tailwindcss/oxide-linux-x64-gnu': 4.2.4 - '@tailwindcss/oxide-linux-x64-musl': 4.2.4 - '@tailwindcss/oxide-wasm32-wasi': 4.2.4 - '@tailwindcss/oxide-win32-arm64-msvc': 4.2.4 - '@tailwindcss/oxide-win32-x64-msvc': 4.2.4 - - '@tailwindcss/postcss@4.2.4': + '@tailwindcss/oxide-android-arm64': 4.3.2 + '@tailwindcss/oxide-darwin-arm64': 4.3.2 + '@tailwindcss/oxide-darwin-x64': 4.3.2 + '@tailwindcss/oxide-freebsd-x64': 4.3.2 + '@tailwindcss/oxide-linux-arm-gnueabihf': 4.3.2 + '@tailwindcss/oxide-linux-arm64-gnu': 4.3.2 + '@tailwindcss/oxide-linux-arm64-musl': 4.3.2 + '@tailwindcss/oxide-linux-x64-gnu': 4.3.2 + '@tailwindcss/oxide-linux-x64-musl': 4.3.2 + '@tailwindcss/oxide-wasm32-wasi': 4.3.2 + '@tailwindcss/oxide-win32-arm64-msvc': 4.3.2 + '@tailwindcss/oxide-win32-x64-msvc': 4.3.2 + + '@tailwindcss/postcss@4.3.2': dependencies: '@alloc/quick-lru': 5.2.0 - '@tailwindcss/node': 4.2.4 - '@tailwindcss/oxide': 4.2.4 + '@tailwindcss/node': 4.3.2 + '@tailwindcss/oxide': 4.3.2 postcss: 8.5.10 - tailwindcss: 4.2.4 + tailwindcss: 4.3.2 - '@tanstack/react-virtual@3.14.2(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': + '@tanstack/react-virtual@3.14.6(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - '@tanstack/virtual-core': 3.17.0 + '@tanstack/virtual-core': 3.17.4 react: 19.2.5 react-dom: 19.2.5(react@19.2.5) - '@tanstack/virtual-core@3.17.0': {} + '@tanstack/virtual-core@3.17.4': {} '@ts-morph/common@0.27.0': dependencies: fast-glob: 3.3.3 - minimatch: 10.2.4 + minimatch: 10.2.5 path-browserify: 1.0.1 + '@turbo/darwin-64@2.10.5': + optional: true + + '@turbo/darwin-arm64@2.10.5': + optional: true + + '@turbo/linux-64@2.10.5': + optional: true + + '@turbo/linux-arm64@2.10.5': + optional: true + + '@turbo/windows-64@2.10.5': + optional: true + + '@turbo/windows-arm64@2.10.5': + optional: true + '@types/d3-array@3.2.2': {} '@types/d3-axis@3.0.6': @@ -6077,7 +6368,7 @@ snapshots: '@types/d3-quadtree@3.0.6': {} - '@types/d3-random@3.0.3': {} + '@types/d3-random@3.0.4': {} '@types/d3-scale-chromatic@3.1.0': {} @@ -6128,7 +6419,7 @@ snapshots: '@types/d3-path': 3.1.1 '@types/d3-polygon': 3.0.2 '@types/d3-quadtree': 3.0.6 - '@types/d3-random': 3.0.3 + '@types/d3-random': 3.0.4 '@types/d3-scale': 4.0.9 '@types/d3-scale-chromatic': 3.1.0 '@types/d3-selection': 3.0.11 @@ -6139,22 +6430,24 @@ snapshots: '@types/d3-transition': 3.0.9 '@types/d3-zoom': 3.0.8 - '@types/debug@4.1.12': + '@types/debug@4.1.13': dependencies: '@types/ms': 2.1.0 '@types/estree-jsx@1.0.5': dependencies: - '@types/estree': 1.0.8 + '@types/estree': 1.0.9 - '@types/estree@1.0.8': {} + '@types/estree@1.0.9': {} '@types/geojson@7946.0.16': {} - '@types/hast@3.0.4': + '@types/hast@3.0.5': dependencies: '@types/unist': 3.0.3 + '@types/json-schema@7.0.15': {} + '@types/katex@0.16.8': {} '@types/mdast@4.0.4': @@ -6163,18 +6456,20 @@ snapshots: '@types/ms@2.1.0': {} - '@types/node@25.6.0': + '@types/node@25.9.5': dependencies: - undici-types: 7.19.2 + undici-types: 7.24.6 - '@types/react-dom@19.2.3(@types/react@19.2.14)': + '@types/react-dom@19.2.3(@types/react@19.2.17)': dependencies: - '@types/react': 19.2.14 + '@types/react': 19.2.17 - '@types/react@19.2.14': + '@types/react@19.2.17': dependencies: csstype: 3.2.3 + '@types/swagger-schema-official@2.0.25': {} + '@types/trusted-types@2.0.7': optional: true @@ -6246,7 +6541,7 @@ snapshots: '@typescript/typescript-win32-x64@7.0.2': optional: true - '@ungap/structured-clone@1.3.0': {} + '@ungap/structured-clone@1.3.3': {} '@upsetjs/venn.js@2.0.0': optionalDependencies: @@ -6258,7 +6553,9 @@ snapshots: mime-types: 3.0.2 negotiator: 1.0.0 - acorn@8.16.0: {} + ajv-draft-04@1.0.0(ajv@8.20.0): + optionalDependencies: + ajv: 8.20.0 ajv-formats@2.1.1(ajv@8.20.0): optionalDependencies: @@ -6271,7 +6568,7 @@ snapshots: ajv@8.20.0: dependencies: fast-deep-equal: 3.1.3 - fast-uri: 3.1.2 + fast-uri: 3.1.3 json-schema-traverse: 1.0.0 require-from-string: 2.0.2 @@ -6281,6 +6578,10 @@ snapshots: ansi-regex@6.2.2: {} + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + argparse@2.0.1: {} aria-hidden@1.2.6: @@ -6297,7 +6598,7 @@ snapshots: balanced-match@4.0.4: {} - baseline-browser-mapping@2.10.31: {} + baseline-browser-mapping@2.10.43: {} body-parser@2.3.0: dependencies: @@ -6305,7 +6606,7 @@ snapshots: content-type: 2.0.0 debug: 4.4.3 http-errors: 2.0.1 - iconv-lite: 0.7.2 + iconv-lite: 0.7.3 on-finished: 2.4.1 qs: 6.15.3 raw-body: 3.0.2 @@ -6321,13 +6622,13 @@ snapshots: dependencies: fill-range: 7.1.1 - browserslist@4.28.1: + browserslist@4.28.6: dependencies: - baseline-browser-mapping: 2.10.31 - caniuse-lite: 1.0.30001793 - electron-to-chromium: 1.5.307 - node-releases: 2.0.36 - update-browserslist-db: 1.2.3(browserslist@4.28.1) + baseline-browser-mapping: 2.10.43 + caniuse-lite: 1.0.30001806 + electron-to-chromium: 1.5.392 + node-releases: 2.0.51 + update-browserslist-db: 1.2.3(browserslist@4.28.6) bundle-name@4.1.0: dependencies: @@ -6335,6 +6636,21 @@ snapshots: bytes@3.1.2: {} + c12@3.3.4: + dependencies: + chokidar: 5.0.0 + confbox: 0.2.4 + defu: 6.1.7 + dotenv: 17.4.2 + exsolve: 1.1.0 + giget: 3.3.0 + jiti: 2.7.0 + ohash: 2.0.11 + pathe: 2.0.3 + perfect-debounce: 2.1.0 + pkg-types: 2.3.1 + rc9: 3.0.1 + call-bind-apply-helpers@1.0.2: dependencies: es-errors: 1.3.0 @@ -6345,9 +6661,11 @@ snapshots: call-bind-apply-helpers: 1.0.2 get-intrinsic: 1.3.0 + call-me-maybe@1.0.2: {} + callsites@3.1.0: {} - caniuse-lite@1.0.30001793: {} + caniuse-lite@1.0.30001806: {} ccount@2.0.1: {} @@ -6361,6 +6679,12 @@ snapshots: character-reference-invalid@2.0.1: {} + chokidar@5.0.0: + dependencies: + readdirp: 5.0.0 + + citty@0.2.2: {} + class-variance-authority@0.7.1: dependencies: clsx: 2.1.1 @@ -6373,14 +6697,20 @@ snapshots: client-only@0.0.1: {} + cliui@8.0.1: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + clsx@2.1.1: {} - cmdk@1.1.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5): + cmdk@1.1.1(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5): dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-compose-refs': 1.1.3(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-dialog': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-id': 1.1.2(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-primitive': 2.1.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) react: 19.2.5 react-dom: 19.2.5(react@19.2.5) transitivePeerDependencies: @@ -6389,6 +6719,12 @@ snapshots: code-block-writer@13.0.3: {} + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.4: {} + comma-separated-tokens@2.0.3: {} commander@11.1.0: {} @@ -6410,9 +6746,11 @@ snapshots: json-schema-typed: 7.0.3 onetime: 5.1.2 pkg-up: 3.1.0 - semver: 7.8.0 + semver: 7.8.5 + + confbox@0.2.4: {} - confbox@0.1.8: {} + consola@3.4.2: {} content-disposition@1.1.0: {} @@ -6460,17 +6798,17 @@ snapshots: csstype@3.2.3: {} - cytoscape-cose-bilkent@4.1.0(cytoscape@3.33.2): + cytoscape-cose-bilkent@4.1.0(cytoscape@3.34.0): dependencies: cose-base: 1.0.3 - cytoscape: 3.33.2 + cytoscape: 3.34.0 - cytoscape-fcose@2.2.0(cytoscape@3.33.2): + cytoscape-fcose@2.2.0(cytoscape@3.34.0): dependencies: cose-base: 2.2.0 - cytoscape: 3.33.2 + cytoscape: 3.34.0 - cytoscape@3.33.2: {} + cytoscape@3.34.0: {} d3-array@2.12.1: dependencies: @@ -6502,7 +6840,7 @@ snapshots: d3-delaunay@6.0.4: dependencies: - delaunator: 5.0.1 + delaunator: 5.1.0 d3-dispatch@3.0.1: {} @@ -6644,9 +6982,9 @@ snapshots: d3: 7.9.0 lodash-es: 4.18.1 - date-fns@4.1.0: {} + date-fns@4.4.0: {} - dayjs@1.11.20: {} + dayjs@1.11.21: {} debounce-fn@4.0.0: dependencies: @@ -6677,14 +7015,18 @@ snapshots: define-lazy-prop@3.0.0: {} - delaunator@5.0.1: + defu@6.1.7: {} + + delaunator@5.1.0: dependencies: - robust-predicates: 3.0.2 + robust-predicates: 3.0.3 depd@2.0.0: {} dequal@2.0.3: {} + destr@2.0.5: {} + detect-libc@2.1.2: {} detect-node-es@1.1.0: {} @@ -6717,13 +7059,15 @@ snapshots: ee-first@1.1.1: {} - electron-to-chromium@1.5.307: {} + electron-to-chromium@1.5.392: {} emoji-regex@10.6.0: {} + emoji-regex@8.0.0: {} + encodeurl@2.0.0: {} - enhanced-resolve@5.21.0: + enhanced-resolve@5.21.6: dependencies: graceful-fs: 4.2.11 tapable: 2.3.3 @@ -6745,11 +7089,13 @@ snapshots: es-errors@1.3.0: {} - es-object-atoms@1.1.1: + es-object-atoms@1.1.2: dependencies: es-errors: 1.3.0 - es-toolkit@1.46.1: {} + es-toolkit@1.49.0: {} + + es6-promise@3.3.1: {} escalade@3.2.0: {} @@ -6761,6 +7107,8 @@ snapshots: estree-util-is-identifier-name@3.0.0: {} + eta@3.5.0: {} + etag@1.8.1: {} eventemitter3@5.0.4: {} @@ -6836,6 +7184,8 @@ snapshots: transitivePeerDependencies: - supports-color + exsolve@1.1.0: {} + extend@3.0.2: {} fast-deep-equal@3.1.3: {} @@ -6848,9 +7198,11 @@ snapshots: merge2: 1.4.1 micromatch: 4.0.8 - fast-uri@3.1.2: {} + fast-safe-stringify@2.1.1: {} - fastq@1.19.1: + fast-uri@3.1.3: {} + + fastq@1.20.1: dependencies: reusify: 1.1.0 @@ -6883,10 +7235,10 @@ snapshots: forwarded@0.2.0: {} - framer-motion@12.38.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5): + framer-motion@12.42.2(react-dom@19.2.5(react@19.2.5))(react@19.2.5): dependencies: - motion-dom: 12.38.0 - motion-utils: 12.36.0 + motion-dom: 12.42.2 + motion-utils: 12.39.0 tslib: 2.8.1 optionalDependencies: react: 19.2.5 @@ -6894,7 +7246,7 @@ snapshots: fresh@2.0.0: {} - fs-extra@11.3.5: + fs-extra@11.3.6: dependencies: graceful-fs: 4.2.11 jsonfile: 6.2.1 @@ -6906,19 +7258,21 @@ snapshots: gensync@1.0.0-beta.2: {} - get-east-asian-width@1.5.0: {} + get-caller-file@2.0.5: {} + + get-east-asian-width@1.6.0: {} get-intrinsic@1.3.0: dependencies: call-bind-apply-helpers: 1.0.2 es-define-property: 1.0.1 es-errors: 1.3.0 - es-object-atoms: 1.1.1 + es-object-atoms: 1.1.2 function-bind: 1.1.2 get-proto: 1.0.1 gopd: 1.2.0 has-symbols: 1.1.0 - hasown: 2.0.2 + hasown: 2.0.4 math-intrinsics: 1.1.0 get-nonce@1.0.1: {} @@ -6928,7 +7282,7 @@ snapshots: get-proto@1.0.1: dependencies: dunder-proto: 1.0.1 - es-object-atoms: 1.1.1 + es-object-atoms: 1.1.2 get-stream@6.0.1: {} @@ -6937,6 +7291,8 @@ snapshots: '@sec-ant/readable-stream': 0.4.1 is-stream: 4.0.1 + giget@3.3.0: {} + glob-parent@5.1.2: dependencies: is-glob: 4.0.3 @@ -6949,26 +7305,26 @@ snapshots: has-symbols@1.1.0: {} - hasown@2.0.2: + hasown@2.0.4: dependencies: function-bind: 1.1.2 hast-util-from-dom@5.0.1: dependencies: - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 hastscript: 9.0.1 web-namespaces: 2.0.1 hast-util-from-html-isomorphic@2.0.0: dependencies: - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 hast-util-from-dom: 5.0.1 hast-util-from-html: 2.0.3 unist-util-remove-position: 5.0.0 hast-util-from-html@2.0.3: dependencies: - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 devlop: 1.1.0 hast-util-from-parse5: 8.0.3 parse5: 7.3.0 @@ -6977,28 +7333,28 @@ snapshots: hast-util-from-parse5@8.0.3: dependencies: - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 '@types/unist': 3.0.3 devlop: 1.1.0 hastscript: 9.0.1 - property-information: 7.1.0 + property-information: 7.2.0 vfile: 6.0.3 vfile-location: 5.0.3 web-namespaces: 2.0.1 hast-util-is-element@3.0.0: dependencies: - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 hast-util-parse-selector@4.0.0: dependencies: - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 hast-util-raw@9.1.0: dependencies: - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 '@types/unist': 3.0.3 - '@ungap/structured-clone': 1.3.0 + '@ungap/structured-clone': 1.3.3 hast-util-from-parse5: 8.0.3 hast-util-to-parse5: 8.0.1 html-void-elements: 3.0.0 @@ -7012,28 +7368,28 @@ snapshots: hast-util-sanitize@5.0.2: dependencies: - '@types/hast': 3.0.4 - '@ungap/structured-clone': 1.3.0 + '@types/hast': 3.0.5 + '@ungap/structured-clone': 1.3.3 unist-util-position: 5.0.0 hast-util-to-html@9.0.5: dependencies: - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 '@types/unist': 3.0.3 ccount: 2.0.1 comma-separated-tokens: 2.0.3 hast-util-whitespace: 3.0.0 html-void-elements: 3.0.0 mdast-util-to-hast: 13.2.1 - property-information: 7.1.0 + property-information: 7.2.0 space-separated-tokens: 2.0.2 stringify-entities: 4.0.4 zwitch: 2.0.4 hast-util-to-jsx-runtime@2.3.6: dependencies: - '@types/estree': 1.0.8 - '@types/hast': 3.0.4 + '@types/estree': 1.0.9 + '@types/hast': 3.0.5 '@types/unist': 3.0.3 comma-separated-tokens: 2.0.3 devlop: 1.1.0 @@ -7042,7 +7398,7 @@ snapshots: mdast-util-mdx-expression: 2.0.1 mdast-util-mdx-jsx: 3.2.0 mdast-util-mdxjs-esm: 2.0.1 - property-information: 7.1.0 + property-information: 7.2.0 space-separated-tokens: 2.0.2 style-to-js: 1.1.21 unist-util-position: 5.0.0 @@ -7052,34 +7408,34 @@ snapshots: hast-util-to-parse5@8.0.1: dependencies: - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 comma-separated-tokens: 2.0.3 devlop: 1.1.0 - property-information: 7.1.0 + property-information: 7.2.0 space-separated-tokens: 2.0.2 web-namespaces: 2.0.1 zwitch: 2.0.4 hast-util-to-text@4.0.2: dependencies: - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 '@types/unist': 3.0.3 hast-util-is-element: 3.0.0 unist-util-find-after: 5.0.0 hast-util-whitespace@3.0.0: dependencies: - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 hastscript@9.0.1: dependencies: - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 comma-separated-tokens: 2.0.3 hast-util-parse-selector: 4.0.0 - property-information: 7.1.0 + property-information: 7.2.0 space-separated-tokens: 2.0.2 - hono@4.12.27: {} + hono@4.12.30: {} html-url-attributes@3.0.1: {} @@ -7093,6 +7449,8 @@ snapshots: statuses: 2.0.2 toidentifier: 1.0.1 + http2-client@1.3.5: {} + human-signals@2.1.0: {} human-signals@8.0.1: {} @@ -7101,13 +7459,13 @@ snapshots: dependencies: safer-buffer: 2.1.2 - iconv-lite@0.7.2: + iconv-lite@0.7.3: dependencies: safer-buffer: 2.1.2 - icu-minify@4.12.0: + icu-minify@4.13.2: dependencies: - '@formatjs/icu-messageformat-parser': 3.5.9 + '@formatjs/icu-messageformat-parser': 3.5.15 ignore@5.3.2: {} @@ -7115,13 +7473,15 @@ snapshots: immer@10.2.0: {} - immer@11.1.4: {} + immer@11.1.11: {} import-fresh@3.3.1: dependencies: parent-module: 1.0.1 resolve-from: 4.0.0 + import-meta-resolve@4.2.0: {} + inherits@2.0.4: {} inline-style-parser@0.2.7: {} @@ -7130,10 +7490,10 @@ snapshots: internmap@2.0.3: {} - intl-messageformat@11.2.6: + intl-messageformat@11.2.12: dependencies: - '@formatjs/fast-memoize': 3.1.5 - '@formatjs/icu-messageformat-parser': 3.5.9 + '@formatjs/fast-memoize': 3.1.7 + '@formatjs/icu-messageformat-parser': 3.5.15 ip-address@10.2.0: {} @@ -7156,6 +7516,8 @@ snapshots: is-extglob@2.1.1: {} + is-fullwidth-code-point@3.0.0: {} + is-glob@4.0.3: dependencies: is-extglob: 2.1.1 @@ -7204,7 +7566,7 @@ snapshots: isexe@3.1.5: {} - jiti@2.6.1: {} + jiti@2.7.0: {} jose@6.2.3: {} @@ -7239,7 +7601,7 @@ snapshots: readable-stream: 2.3.8 setimmediate: 1.0.5 - katex@0.16.45: + katex@0.16.47: dependencies: commander: 8.3.0 @@ -7326,7 +7688,7 @@ snapshots: dependencies: yallist: 3.1.1 - lucide-react@1.12.0(react@19.2.5): + lucide-react@1.24.0(react@19.2.5): dependencies: react: 19.2.5 @@ -7427,7 +7789,7 @@ snapshots: mdast-util-math@3.0.0: dependencies: - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 '@types/mdast': 4.0.4 devlop: 1.1.0 longest-streak: 3.1.0 @@ -7440,7 +7802,7 @@ snapshots: mdast-util-mdx-expression@2.0.1: dependencies: '@types/estree-jsx': 1.0.5 - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 '@types/mdast': 4.0.4 devlop: 1.1.0 mdast-util-from-markdown: 2.0.3 @@ -7451,7 +7813,7 @@ snapshots: mdast-util-mdx-jsx@3.2.0: dependencies: '@types/estree-jsx': 1.0.5 - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 '@types/mdast': 4.0.4 '@types/unist': 3.0.3 ccount: 2.0.1 @@ -7468,7 +7830,7 @@ snapshots: mdast-util-mdxjs-esm@2.0.1: dependencies: '@types/estree-jsx': 1.0.5 - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 '@types/mdast': 4.0.4 devlop: 1.1.0 mdast-util-from-markdown: 2.0.3 @@ -7483,9 +7845,9 @@ snapshots: mdast-util-to-hast@13.2.1: dependencies: - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 '@types/mdast': 4.0.4 - '@ungap/structured-clone': 1.3.0 + '@ungap/structured-clone': 1.3.3 devlop: 1.1.0 micromark-util-sanitize-uri: 2.0.1 trim-lines: 3.0.1 @@ -7493,6 +7855,28 @@ snapshots: unist-util-visit: 5.1.0 vfile: 6.0.3 + mdast-util-to-markdown-cjk-friendly-gfm-strikethrough@1.0.0(@types/mdast@4.0.4)(micromark-util-types@2.0.2): + dependencies: + mdast-util-gfm-strikethrough: 2.0.0 + mdast-util-to-markdown: 2.1.2 + micromark-extension-cjk-friendly-util: 3.0.1(micromark-util-types@2.0.2) + micromark-util-symbol: 2.0.1 + optionalDependencies: + '@types/mdast': 4.0.4 + transitivePeerDependencies: + - micromark-util-types + - supports-color + + mdast-util-to-markdown-cjk-friendly@1.0.0(@types/mdast@4.0.4)(micromark-util-types@2.0.2): + dependencies: + mdast-util-to-markdown: 2.1.2 + micromark-extension-cjk-friendly-util: 3.0.1(micromark-util-types@2.0.2) + micromark-util-symbol: 2.0.1 + optionalDependencies: + '@types/mdast': 4.0.4 + transitivePeerDependencies: + - micromark-util-types + mdast-util-to-markdown@2.1.2: dependencies: '@types/mdast': 4.0.4 @@ -7520,25 +7904,25 @@ snapshots: mermaid@11.15.0: dependencies: '@braintree/sanitize-url': 7.1.2 - '@iconify/utils': 3.1.0 - '@mermaid-js/parser': 1.1.1 + '@iconify/utils': 3.1.4 + '@mermaid-js/parser': 1.2.0 '@types/d3': 7.4.3 '@upsetjs/venn.js': 2.0.0 - cytoscape: 3.33.2 - cytoscape-cose-bilkent: 4.1.0(cytoscape@3.33.2) - cytoscape-fcose: 2.2.0(cytoscape@3.33.2) + cytoscape: 3.34.0 + cytoscape-cose-bilkent: 4.1.0(cytoscape@3.34.0) + cytoscape-fcose: 2.2.0(cytoscape@3.34.0) d3: 7.9.0 d3-sankey: 0.12.3 dagre-d3-es: 7.0.14 - dayjs: 1.11.20 + dayjs: 1.11.21 dompurify: 3.4.11 - es-toolkit: 1.46.1 - katex: 0.16.45 + es-toolkit: 1.49.0 + katex: 0.16.47 khroma: 2.1.0 marked: 16.4.2 roughjs: 4.6.6 stylis: 4.4.0 - ts-dedent: 2.2.0 + ts-dedent: 2.3.0 uuid: 11.1.1 micromark-core-commonmark@2.0.3: @@ -7563,7 +7947,7 @@ snapshots: micromark-extension-cjk-friendly-gfm-strikethrough@2.0.1(micromark-util-types@2.0.2)(micromark@4.0.2): dependencies: devlop: 1.1.0 - get-east-asian-width: 1.5.0 + get-east-asian-width: 1.6.0 micromark: 4.0.2 micromark-extension-cjk-friendly-util: 3.0.1(micromark-util-types@2.0.2) micromark-util-character: 2.1.1 @@ -7575,7 +7959,7 @@ snapshots: micromark-extension-cjk-friendly-util@3.0.1(micromark-util-types@2.0.2): dependencies: - get-east-asian-width: 1.5.0 + get-east-asian-width: 1.6.0 micromark-util-character: 2.1.1 micromark-util-symbol: 2.0.1 optionalDependencies: @@ -7654,7 +8038,7 @@ snapshots: dependencies: '@types/katex': 0.16.8 devlop: 1.1.0 - katex: 0.16.45 + katex: 0.16.47 micromark-factory-space: 2.0.1 micromark-util-character: 2.1.1 micromark-util-symbol: 2.0.1 @@ -7754,7 +8138,7 @@ snapshots: micromark@4.0.2: dependencies: - '@types/debug': 4.1.12 + '@types/debug': 4.1.13 debug: 4.4.3 decode-named-character-reference: 1.3.0 devlop: 1.1.0 @@ -7791,19 +8175,12 @@ snapshots: mimic-function@5.0.1: {} - minimatch@10.2.4: + minimatch@10.2.5: dependencies: brace-expansion: 5.0.6 minimist@1.2.8: {} - mlly@1.8.1: - dependencies: - acorn: 8.16.0 - pathe: 2.0.3 - pkg-types: 1.3.1 - ufo: 1.6.3 - modern-screenshot@4.6.5: {} monaco-editor@0.55.1: @@ -7811,15 +8188,15 @@ snapshots: dompurify: 3.4.11 marked: 14.0.0 - motion-dom@12.38.0: + motion-dom@12.42.2: dependencies: - motion-utils: 12.36.0 + motion-utils: 12.39.0 - motion-utils@12.36.0: {} + motion-utils@12.39.0: {} - motion@12.38.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5): + motion@12.42.2(react-dom@19.2.5(react@19.2.5))(react@19.2.5): dependencies: - framer-motion: 12.38.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + framer-motion: 12.42.2(react-dom@19.2.5(react@19.2.5))(react@19.2.5) tslib: 2.8.1 optionalDependencies: react: 19.2.5 @@ -7827,24 +8204,26 @@ snapshots: ms@2.1.3: {} - nanoid@3.3.12: {} + nanoid@3.3.16: {} + + nanoid@5.1.16: {} negotiator@1.0.0: {} - next-intl-swc-plugin-extractor@4.12.0: {} + next-intl-swc-plugin-extractor@4.13.2: {} - next-intl@4.12.0(next@16.3.0-preview.6(@babel/core@7.29.7)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react@19.2.5)(typescript@7.0.2): + next-intl@4.13.2(next@16.3.0-preview.6(@babel/core@7.29.7)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react@19.2.5)(typescript@7.0.2): dependencies: - '@formatjs/intl-localematcher': 0.8.8 + '@formatjs/intl-localematcher': 0.8.13 '@parcel/watcher': 2.5.6 - '@swc/core': 1.15.33 - icu-minify: 4.12.0 + '@swc/core': 1.15.43 + icu-minify: 4.13.2 negotiator: 1.0.0 next: 16.3.0-preview.6(@babel/core@7.29.7)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - next-intl-swc-plugin-extractor: 4.12.0 + next-intl-swc-plugin-extractor: 4.13.2 po-parser: 2.1.1 react: 19.2.5 - use-intl: 4.12.0(react@19.2.5) + use-intl: 4.13.2(react@19.2.5) optionalDependencies: typescript: 7.0.2 transitivePeerDependencies: @@ -7859,8 +8238,8 @@ snapshots: dependencies: '@next/env': 16.3.0-preview.6 '@swc/helpers': 0.5.15 - baseline-browser-mapping: 2.10.31 - caniuse-lite: 1.0.30001793 + baseline-browser-mapping: 2.10.43 + caniuse-lite: 1.0.30001806 postcss: 8.5.10 react: 19.2.5 react-dom: 19.2.5(react@19.2.5) @@ -7881,7 +8260,19 @@ snapshots: node-addon-api@7.1.1: {} - node-releases@2.0.36: {} + node-fetch-h2@2.3.0: + dependencies: + http2-client: 1.3.5 + + node-fetch@2.7.0: + dependencies: + whatwg-url: 5.0.0 + + node-readfiles@0.2.0: + dependencies: + es6-promise: 3.3.1 + + node-releases@2.0.51: {} npm-run-path@4.0.1: dependencies: @@ -7892,6 +8283,37 @@ snapshots: path-key: 4.0.0 unicorn-magic: 0.3.0 + oas-kit-common@1.0.8: + dependencies: + fast-safe-stringify: 2.1.1 + + oas-linter@3.2.2: + dependencies: + '@exodus/schemasafe': 1.3.0 + should: 13.2.3 + yaml: 1.10.3 + + oas-resolver@2.5.6: + dependencies: + node-fetch-h2: 2.3.0 + oas-kit-common: 1.0.8 + reftools: 1.1.9 + yaml: 1.10.3 + yargs: 17.7.3 + + oas-schema-walker@1.1.5: {} + + oas-validator@5.0.8: + dependencies: + call-me-maybe: 1.0.2 + oas-kit-common: 1.0.8 + oas-linter: 3.2.2 + oas-resolver: 2.5.6 + oas-schema-walker: 1.1.5 + reftools: 1.1.9 + should: 13.2.3 + yaml: 1.10.3 + object-assign@4.1.1: {} object-inspect@1.13.4: {} @@ -7900,6 +8322,8 @@ snapshots: ogl@1.0.11: {} + ohash@2.0.11: {} + on-finished@2.4.1: dependencies: ee-first: 1.1.1 @@ -7916,11 +8340,11 @@ snapshots: dependencies: mimic-function: 5.0.1 - oniguruma-parser@0.12.1: {} + oniguruma-parser@0.12.2: {} - oniguruma-to-es@4.3.5: + oniguruma-to-es@4.3.6: dependencies: - oniguruma-parser: 0.12.1 + oniguruma-parser: 0.12.2 regex: 6.1.0 regex-recursion: 6.0.2 @@ -7939,6 +8363,8 @@ snapshots: is-docker: 2.2.1 is-wsl: 2.2.0 + openapi-types@12.1.3: {} + ora@8.2.0: dependencies: chalk: 5.6.2 @@ -7961,7 +8387,7 @@ snapshots: p-try@2.2.0: {} - package-manager-detector@1.6.0: {} + package-manager-detector@1.7.0: {} pako@1.0.11: {} @@ -8012,16 +8438,18 @@ snapshots: optionalDependencies: '@napi-rs/canvas': 0.1.100 + perfect-debounce@2.1.0: {} + picocolors@1.1.1: {} picomatch@4.0.4: {} pkce-challenge@5.0.1: {} - pkg-types@1.3.1: + pkg-types@2.3.1: dependencies: - confbox: 0.1.8 - mlly: 1.8.1 + confbox: 0.2.4 + exsolve: 1.1.0 pathe: 2.0.3 pkg-up@3.1.0: @@ -8044,7 +8472,7 @@ snapshots: postcss@8.5.10: dependencies: - nanoid: 3.3.12 + nanoid: 3.3.16 picocolors: 1.1.1 source-map-js: 1.2.1 @@ -8061,7 +8489,7 @@ snapshots: kleur: 3.0.3 sisteransi: 1.0.5 - property-information@7.1.0: {} + property-information@7.2.0: {} proxy-addr@2.0.7: dependencies: @@ -8075,68 +8503,68 @@ snapshots: queue-microtask@1.2.3: {} - radix-ui@1.4.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5): - dependencies: - '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-accessible-icon': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-accordion': 1.2.12(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-alert-dialog': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-arrow': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-aspect-ratio': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-avatar': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-checkbox': 1.3.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-collapsible': 1.1.12(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-context-menu': 2.2.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-dropdown-menu': 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-form': 0.1.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-hover-card': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-label': 2.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-menu': 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-menubar': 1.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-navigation-menu': 1.2.14(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-one-time-password-field': 0.1.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-password-toggle-field': 0.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-popover': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-progress': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-radio-group': 1.3.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-scroll-area': 1.2.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-select': 2.2.6(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-separator': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-slider': 1.3.6(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-switch': 1.2.6(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-tabs': 1.1.13(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-toast': 1.2.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-toggle': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-toggle-group': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-toolbar': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-tooltip': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-use-is-hydrated': 0.1.0(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + radix-ui@1.6.2(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5): + dependencies: + '@radix-ui/primitive': 1.1.5 + '@radix-ui/react-accessible-icon': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-accordion': 1.2.16(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-alert-dialog': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-arrow': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-aspect-ratio': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-avatar': 1.2.2(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-checkbox': 1.3.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-collapsible': 1.1.16(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-collection': 1.1.12(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-compose-refs': 1.1.3(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-context': 1.2.0(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-context-menu': 2.3.3(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-dialog': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-direction': 1.1.2(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-dismissable-layer': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-dropdown-menu': 2.1.20(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-focus-guards': 1.1.4(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-focus-scope': 1.1.12(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-form': 0.1.12(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-hover-card': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-label': 2.1.11(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-menu': 2.1.20(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-menubar': 1.1.20(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-navigation-menu': 1.2.18(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-one-time-password-field': 0.1.12(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-password-toggle-field': 0.1.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-popover': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-popper': 1.3.3(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-portal': 1.1.13(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-presence': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-primitive': 2.1.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-progress': 1.1.12(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-radio-group': 1.4.3(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-roving-focus': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-scroll-area': 1.2.14(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-select': 2.3.3(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-separator': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-slider': 1.4.3(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-slot': 1.3.0(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-switch': 1.3.3(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-tabs': 1.1.17(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-toast': 1.2.19(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-toggle': 1.1.14(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-toggle-group': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-toolbar': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-tooltip': 1.2.12(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-use-callback-ref': 1.1.2(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-use-controllable-state': 1.2.3(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-use-effect-event': 0.0.3(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-use-escape-keydown': 1.1.3(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-use-is-hydrated': 0.1.1(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-use-layout-effect': 1.1.2(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-use-size': 1.1.2(@types/react@19.2.17)(react@19.2.5) + '@radix-ui/react-visually-hidden': 1.2.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) react: 19.2.5 react-dom: 19.2.5(react@19.2.5) optionalDependencies: - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3(@types/react@19.2.14) + '@types/react': 19.2.17 + '@types/react-dom': 19.2.3(@types/react@19.2.17) range-parser@1.3.0: {} @@ -8144,57 +8572,64 @@ snapshots: dependencies: bytes: 3.1.2 http-errors: 2.0.1 - iconv-lite: 0.7.2 + iconv-lite: 0.7.3 unpipe: 1.0.0 - react-day-picker@10.0.0(react@19.2.5): + rc9@3.0.1: dependencies: - '@date-fns/tz': 1.4.1 - date-fns: 4.1.0 + defu: 6.1.7 + destr: 2.0.5 + + react-day-picker@10.0.1(@types/react@19.2.17)(react@19.2.5): + dependencies: + '@date-fns/tz': 1.5.0 + date-fns: 4.4.0 react: 19.2.5 + optionalDependencies: + '@types/react': 19.2.17 react-dom@19.2.5(react@19.2.5): dependencies: react: 19.2.5 scheduler: 0.27.0 - react-is@16.13.1: {} + react-is@19.2.7: {} - react-redux@9.2.0(@types/react@19.2.14)(react@19.2.5)(redux@5.0.1): + react-redux@9.3.0(@types/react@19.2.17)(react@19.2.5)(redux@5.0.1): dependencies: '@types/use-sync-external-store': 0.0.6 react: 19.2.5 use-sync-external-store: 1.6.0(react@19.2.5) optionalDependencies: - '@types/react': 19.2.14 + '@types/react': 19.2.17 redux: 5.0.1 - react-remove-scroll-bar@2.3.8(@types/react@19.2.14)(react@19.2.5): + react-remove-scroll-bar@2.3.8(@types/react@19.2.17)(react@19.2.5): dependencies: react: 19.2.5 - react-style-singleton: 2.2.3(@types/react@19.2.14)(react@19.2.5) + react-style-singleton: 2.2.3(@types/react@19.2.17)(react@19.2.5) tslib: 2.8.1 optionalDependencies: - '@types/react': 19.2.14 + '@types/react': 19.2.17 - react-remove-scroll@2.7.1(@types/react@19.2.14)(react@19.2.5): + react-remove-scroll@2.7.2(@types/react@19.2.17)(react@19.2.5): dependencies: react: 19.2.5 - react-remove-scroll-bar: 2.3.8(@types/react@19.2.14)(react@19.2.5) - react-style-singleton: 2.2.3(@types/react@19.2.14)(react@19.2.5) + react-remove-scroll-bar: 2.3.8(@types/react@19.2.17)(react@19.2.5) + react-style-singleton: 2.2.3(@types/react@19.2.17)(react@19.2.5) tslib: 2.8.1 - use-callback-ref: 1.3.3(@types/react@19.2.14)(react@19.2.5) - use-sidecar: 1.1.3(@types/react@19.2.14)(react@19.2.5) + use-callback-ref: 1.3.3(@types/react@19.2.17)(react@19.2.5) + use-sidecar: 1.1.3(@types/react@19.2.17)(react@19.2.5) optionalDependencies: - '@types/react': 19.2.14 + '@types/react': 19.2.17 - react-style-singleton@2.2.3(@types/react@19.2.14)(react@19.2.5): + react-style-singleton@2.2.3(@types/react@19.2.17)(react@19.2.5): dependencies: get-nonce: 1.0.1 react: 19.2.5 tslib: 2.8.1 optionalDependencies: - '@types/react': 19.2.14 + '@types/react': 19.2.17 react@19.2.5: {} @@ -8208,6 +8643,8 @@ snapshots: string_decoder: 1.1.1 util-deprecate: 1.0.2 + readdirp@5.0.0: {} + recast@0.23.12: dependencies: ast-types: 0.16.1 @@ -8216,18 +8653,18 @@ snapshots: tiny-invariant: 1.3.3 tslib: 2.8.1 - recharts@3.8.0(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react-is@16.13.1)(react@19.2.5)(redux@5.0.1): + recharts@3.8.0(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react-is@19.2.7)(react@19.2.5)(redux@5.0.1): dependencies: - '@reduxjs/toolkit': 2.11.2(react-redux@9.2.0(@types/react@19.2.14)(react@19.2.5)(redux@5.0.1))(react@19.2.5) + '@reduxjs/toolkit': 2.12.0(react-redux@9.3.0(@types/react@19.2.17)(react@19.2.5)(redux@5.0.1))(react@19.2.5) clsx: 2.1.1 decimal.js-light: 2.5.1 - es-toolkit: 1.46.1 + es-toolkit: 1.49.0 eventemitter3: 5.0.4 immer: 10.2.0 react: 19.2.5 react-dom: 19.2.5(react@19.2.5) - react-is: 16.13.1 - react-redux: 9.2.0(@types/react@19.2.14)(react@19.2.5)(redux@5.0.1) + react-is: 19.2.7 + react-redux: 9.3.0(@types/react@19.2.17)(react@19.2.5)(redux@5.0.1) reselect: 5.1.1 tiny-invariant: 1.3.3 use-sync-external-store: 1.6.0(react@19.2.5) @@ -8242,6 +8679,8 @@ snapshots: redux@5.0.1: {} + reftools@1.1.9: {} + regex-recursion@6.0.2: dependencies: regex-utilities: 2.3.0 @@ -8258,27 +8697,28 @@ snapshots: rehype-katex@7.0.1: dependencies: - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 '@types/katex': 0.16.8 hast-util-from-html-isomorphic: 2.0.0 hast-util-to-text: 4.0.2 - katex: 0.16.45 + katex: 0.16.47 unist-util-visit-parents: 6.0.2 vfile: 6.0.3 rehype-raw@7.0.0: dependencies: - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 hast-util-raw: 9.1.0 vfile: 6.0.3 rehype-sanitize@6.0.0: dependencies: - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 hast-util-sanitize: 5.0.2 - remark-cjk-friendly-gfm-strikethrough@2.0.1(@types/mdast@4.0.4)(micromark-util-types@2.0.2)(micromark@4.0.2)(unified@11.0.5): + remark-cjk-friendly-gfm-strikethrough@2.3.1(@types/mdast@4.0.4)(micromark-util-types@2.0.2)(micromark@4.0.2)(unified@11.0.5): dependencies: + mdast-util-to-markdown-cjk-friendly-gfm-strikethrough: 1.0.0(@types/mdast@4.0.4)(micromark-util-types@2.0.2) micromark-extension-cjk-friendly-gfm-strikethrough: 2.0.1(micromark-util-types@2.0.2)(micromark@4.0.2) unified: 11.0.5 optionalDependencies: @@ -8286,9 +8726,11 @@ snapshots: transitivePeerDependencies: - micromark - micromark-util-types + - supports-color - remark-cjk-friendly@2.0.1(@types/mdast@4.0.4)(micromark-util-types@2.0.2)(micromark@4.0.2)(unified@11.0.5): + remark-cjk-friendly@2.3.1(@types/mdast@4.0.4)(micromark-util-types@2.0.2)(micromark@4.0.2)(unified@11.0.5): dependencies: + mdast-util-to-markdown-cjk-friendly: 1.0.0(@types/mdast@4.0.4)(micromark-util-types@2.0.2) micromark-extension-cjk-friendly: 2.0.1(micromark-util-types@2.0.2)(micromark@4.0.2) unified: 11.0.5 optionalDependencies: @@ -8328,7 +8770,7 @@ snapshots: remark-rehype@11.1.2: dependencies: - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 '@types/mdast': 4.0.4 mdast-util-to-hast: 13.2.1 unified: 11.0.5 @@ -8342,10 +8784,14 @@ snapshots: remend@1.3.0: {} + require-directory@2.1.1: {} + require-from-string@2.0.2: {} reselect@5.1.1: {} + reselect@5.2.0: {} + resolve-from@4.0.0: {} restore-cursor@5.1.0: @@ -8355,7 +8801,7 @@ snapshots: reusify@1.1.0: {} - robust-predicates@3.0.2: {} + robust-predicates@3.0.3: {} roughjs@4.6.6: dependencies: @@ -8390,7 +8836,7 @@ snapshots: semver@6.3.1: {} - semver@7.8.0: {} + semver@7.8.5: {} send@1.2.1: dependencies: @@ -8421,7 +8867,7 @@ snapshots: setprototypeof@1.2.0: {} - shadcn@4.12.0(typescript@7.0.2): + shadcn@4.13.0(typescript@7.0.2): dependencies: '@babel/core': 7.29.7 '@babel/parser': 7.29.7 @@ -8430,7 +8876,7 @@ snapshots: '@dotenvx/dotenvx': 1.75.1 '@modelcontextprotocol/sdk': 1.29.0(zod@3.25.76) '@types/validate-npm-package-name': 4.0.2 - browserslist: 4.28.1 + browserslist: 4.28.6 commander: 14.0.3 cosmiconfig: 9.0.2(typescript@7.0.2) dedent: 1.7.2 @@ -8438,7 +8884,7 @@ snapshots: diff: 8.0.4 execa: 9.6.1 fast-glob: 3.3.3 - fs-extra: 11.3.5 + fs-extra: 11.3.6 fuzzysort: 3.1.0 kleur: 4.1.5 open: 11.0.0 @@ -8448,7 +8894,7 @@ snapshots: prompts: 2.4.2 recast: 0.23.12 stringify-object: 5.0.0 - tailwind-merge: 3.5.0 + tailwind-merge: 3.6.0 ts-morph: 26.0.0 tsconfig-paths: 4.2.0 undici: 7.28.0 @@ -8465,7 +8911,7 @@ snapshots: dependencies: '@img/colour': 1.1.0 detect-libc: 2.1.2 - semver: 7.8.0 + semver: 7.8.5 optionalDependencies: '@img/sharp-darwin-arm64': 0.34.5 '@img/sharp-darwin-x64': 0.34.5 @@ -8508,7 +8954,33 @@ snapshots: '@shikijs/themes': 3.23.0 '@shikijs/types': 3.23.0 '@shikijs/vscode-textmate': 10.0.2 - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 + + should-equal@2.0.0: + dependencies: + should-type: 1.4.0 + + should-format@3.0.3: + dependencies: + should-type: 1.4.0 + should-type-adaptors: 1.1.0 + + should-type-adaptors@1.1.0: + dependencies: + should-type: 1.4.0 + should-util: 1.0.1 + + should-type@1.4.0: {} + + should-util@1.0.1: {} + + should@13.2.3: + dependencies: + should-equal: 2.0.0 + should-format: 3.0.3 + should-type: 1.4.0 + should-type-adaptors: 1.1.0 + should-util: 1.0.1 side-channel-list@1.0.1: dependencies: @@ -8575,17 +9047,23 @@ snapshots: remark-parse: 11.0.0 remark-rehype: 11.1.2 remend: 1.3.0 - tailwind-merge: 3.5.0 + tailwind-merge: 3.6.0 unified: 11.0.5 unist-util-visit: 5.1.0 unist-util-visit-parents: 6.0.2 transitivePeerDependencies: - supports-color + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + string-width@7.2.0: dependencies: emoji-regex: 10.6.0 - get-east-asian-width: 1.5.0 + get-east-asian-width: 1.6.0 strip-ansi: 7.2.0 string_decoder@1.1.1: @@ -8634,17 +9112,64 @@ snapshots: stylis@4.4.0: {} - systeminformation@5.31.11: {} + swagger-schema-official@2.0.0-bab6bed: {} + + swagger-typescript-api@13.12.5(react@19.2.5): + dependencies: + '@apidevtools/swagger-parser': 12.1.0(openapi-types@12.1.3) + '@biomejs/js-api': 6.0.0(@biomejs/wasm-nodejs@2.5.2) + '@biomejs/wasm-nodejs': 2.5.2 + '@types/swagger-schema-official': 2.0.25 + c12: 3.3.4 + citty: 0.2.2 + consola: 3.4.2 + es-toolkit: 1.49.0 + eta: 3.5.0 + nanoid: 5.1.16 + openapi-types: 12.1.3 + swagger-schema-official: 2.0.0-bab6bed + swagger2openapi: 7.0.8 + type-fest: 5.8.0 + typescript: 6.0.3 + yaml: 2.9.0 + yummies: 7.20.1(react@19.2.5) + transitivePeerDependencies: + - '@biomejs/wasm-bundler' + - '@biomejs/wasm-web' + - encoding + - magicast + - mobx + - react + + swagger2openapi@7.0.8: + dependencies: + call-me-maybe: 1.0.2 + node-fetch: 2.7.0 + node-fetch-h2: 2.3.0 + node-readfiles: 0.2.0 + oas-kit-common: 1.0.8 + oas-resolver: 2.5.6 + oas-schema-walker: 1.1.5 + oas-validator: 5.0.8 + reftools: 1.1.9 + yaml: 1.10.3 + yargs: 17.7.3 + transitivePeerDependencies: + - encoding + + systeminformation@5.31.17: {} - tailwind-merge@3.5.0: {} + tagged-tag@1.0.0: {} - tailwindcss@4.2.4: {} + tailwind-merge@3.6.0: {} + + tailwindcss@4.3.2: {} tapable@2.3.3: {} tiny-invariant@1.3.3: {} - tinyexec@1.0.4: {} + tinyexec@1.2.4: {} to-regex-range@5.0.1: dependencies: @@ -8652,11 +9177,13 @@ snapshots: toidentifier@1.0.1: {} + tr46@0.0.3: {} + trim-lines@3.0.1: {} trough@2.2.0: {} - ts-dedent@2.2.0: {} + ts-dedent@2.3.0: {} ts-morph@26.0.0: dependencies: @@ -8671,14 +9198,29 @@ snapshots: tslib@2.8.1: {} + turbo@2.10.5: + optionalDependencies: + '@turbo/darwin-64': 2.10.5 + '@turbo/darwin-arm64': 2.10.5 + '@turbo/linux-64': 2.10.5 + '@turbo/linux-arm64': 2.10.5 + '@turbo/windows-64': 2.10.5 + '@turbo/windows-arm64': 2.10.5 + tw-animate-css@1.4.0: {} + type-fest@5.8.0: + dependencies: + tagged-tag: 1.0.0 + type-is@2.1.0: dependencies: content-type: 2.0.0 media-typer: 1.1.0 mime-types: 3.0.2 + typescript@6.0.3: {} + typescript@7.0.2: optionalDependencies: '@typescript/typescript-aix-ppc64': 7.0.2 @@ -8702,9 +9244,7 @@ snapshots: '@typescript/typescript-win32-arm64': 7.0.2 '@typescript/typescript-win32-x64': 7.0.2 - ufo@1.6.3: {} - - undici-types@7.19.2: {} + undici-types@7.24.6: {} undici@7.28.0: {} @@ -8757,34 +9297,34 @@ snapshots: unpipe@1.0.0: {} - update-browserslist-db@1.2.3(browserslist@4.28.1): + update-browserslist-db@1.2.3(browserslist@4.28.6): dependencies: - browserslist: 4.28.1 + browserslist: 4.28.6 escalade: 3.2.0 picocolors: 1.1.1 - use-callback-ref@1.3.3(@types/react@19.2.14)(react@19.2.5): + use-callback-ref@1.3.3(@types/react@19.2.17)(react@19.2.5): dependencies: react: 19.2.5 tslib: 2.8.1 optionalDependencies: - '@types/react': 19.2.14 + '@types/react': 19.2.17 - use-intl@4.12.0(react@19.2.5): + use-intl@4.13.2(react@19.2.5): dependencies: - '@formatjs/fast-memoize': 3.1.5 + '@formatjs/fast-memoize': 3.1.7 '@schummar/icu-type-parser': 1.21.5 - icu-minify: 4.12.0 - intl-messageformat: 11.2.6 + icu-minify: 4.13.2 + intl-messageformat: 11.2.12 react: 19.2.5 - use-sidecar@1.1.3(@types/react@19.2.14)(react@19.2.5): + use-sidecar@1.1.3(@types/react@19.2.17)(react@19.2.5): dependencies: detect-node-es: 1.1.0 react: 19.2.5 tslib: 2.8.1 optionalDependencies: - '@types/react': 19.2.14 + '@types/react': 19.2.17 use-sync-external-store@1.6.0(react@19.2.5): dependencies: @@ -8798,9 +9338,9 @@ snapshots: vary@1.1.2: {} - vaul@1.1.2(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5): + vaul@1.1.2(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5): dependencies: - '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-dialog': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) react: 19.2.5 react-dom: 19.2.5(react@19.2.5) transitivePeerDependencies: @@ -8841,6 +9381,13 @@ snapshots: web-namespaces@2.0.1: {} + webidl-conversions@3.0.1: {} + + whatwg-url@5.0.0: + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + which@2.0.2: dependencies: isexe: 2.0.0 @@ -8849,6 +9396,12 @@ snapshots: dependencies: isexe: 3.1.5 + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrappy@1.0.2: {} wsl-utils@0.3.1: @@ -8856,14 +9409,43 @@ snapshots: is-wsl: 3.1.1 powershell-utils: 0.1.0 + y18n@5.0.8: {} + yallist@3.1.1: {} - yocto-spinner@1.2.0: + yaml@1.10.3: {} + + yaml@2.9.0: {} + + yargs-parser@21.1.1: {} + + yargs@17.7.3: + dependencies: + cliui: 8.0.1 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + + yocto-spinner@1.2.1: dependencies: yoctocolors: 2.1.2 yoctocolors@2.1.2: {} + yummies@7.20.1(react@19.2.5): + dependencies: + class-variance-authority: 0.7.1 + clsx: 2.1.1 + dayjs: 1.11.21 + dompurify: 3.4.11 + nanoid: 5.1.16 + tailwind-merge: 3.6.0 + optionalDependencies: + react: 19.2.5 + zod-to-json-schema@3.25.2(zod@3.25.76): dependencies: zod: 3.25.76 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml new file mode 100644 index 00000000..d50dbf04 --- /dev/null +++ b/pnpm-workspace.yaml @@ -0,0 +1,9 @@ +packages: + - backend + - frontend + - "packages/*" + +onlyBuiltDependencies: + - "@parcel/watcher" + - "@swc/core" + - sharp diff --git a/turbo.json b/turbo.json new file mode 100644 index 00000000..e928daf3 --- /dev/null +++ b/turbo.json @@ -0,0 +1,23 @@ +{ + "$schema": "https://turborepo.com/schema.json", + "globalDependencies": ["VERSION", "backend/docs/swagger.json", "scripts/sync-version.mjs"], + "tasks": { + "build": { + "dependsOn": ["^build"], + "outputs": [".next/**", "!.next/cache/**", "out/**"] + }, + "check": { + "dependsOn": ["^check"] + }, + "test": { + "dependsOn": ["^test"] + }, + "dev": { + "cache": false, + "persistent": true + }, + "clean": { + "cache": false + } + } +}