diff --git a/.agents/skills/feature-scaffold/SKILL.md b/.agents/skills/feature-scaffold/SKILL.md index 814398ab2..179ffa40b 100644 --- a/.agents/skills/feature-scaffold/SKILL.md +++ b/.agents/skills/feature-scaffold/SKILL.md @@ -505,6 +505,28 @@ Use `err: error` (not `error: error`) — pino's serializer is keyed on `err`. Client components may use `console` only for local development debugging that is removed before merge. +## Services — Business Logic Belongs in @chatbotx.io/business + +Business logic services (DB queries, domain mutations, cache management) **MUST NOT** be placed inside `features//`. They belong in `packages/business/src//service.ts`. + +### Pattern +- `packages/business/src//service.ts` — class extending `BaseService`, singleton export +- `packages/business/src//index.ts` — `export * from "./service"` +- `packages/business/src/index.ts` — add `export * from "./"` + +### Feature folders only contain +- `queries/` — RSC wrappers that call business services + add auth checks +- `actions/` — next-safe-action handlers that call business services +- `api/` — oRPC handlers +- `schema/` — Zod validation schemas (NOT imported by business package) +- `components/`, `hooks/`, `provider/` — UI concerns + +**Never** create a `*.service.ts` inside a feature folder for new work. If one already exists, move it to `@chatbotx.io/business` before extending it. + +```typescript +import { integrationService, webhookService } from "@chatbotx.io/business" +``` + ## Checklist for New Feature 1. Create feature directory under `src/features//` diff --git a/apps/builder/src/enterprise/features/inbox-teams/api/workspace-token.ts b/apps/builder/src/enterprise/features/inbox-teams/api/workspace-token.ts index d15b63d1c..70c3ca70f 100644 --- a/apps/builder/src/enterprise/features/inbox-teams/api/workspace-token.ts +++ b/apps/builder/src/enterprise/features/inbox-teams/api/workspace-token.ts @@ -3,12 +3,12 @@ import { listInboxTeams } from "../queries" import { listInboxTeamsResponse } from "../schema/action" export const inboxTeamsWorkspaceTokenAPIs = { - listInboxTeamsWorkspaceTokenAPI: workspaceTokenAuthAPI + listTeamsWorkspaceTokenAPI: workspaceTokenAuthAPI .route({ method: "GET", - path: "/v1/inbox-teams", - summary: "List inbox teams", - tags: ["Inbox Teams"], + path: "/v1/teams", + summary: "List teams", + tags: ["Teams"], }) .output(listInboxTeamsResponse) .handler( diff --git a/apps/builder/src/features/ai-agents/actions/create.action.ts b/apps/builder/src/features/ai-agents/actions/create.action.ts index 5e904b2fd..538ce0140 100644 --- a/apps/builder/src/features/ai-agents/actions/create.action.ts +++ b/apps/builder/src/features/ai-agents/actions/create.action.ts @@ -1,9 +1,9 @@ "use server" +import { aiAgentService } from "@chatbotx.io/business" import { createAIAgentRequest } from "@/features/ai-agents/schemas/action" import { workspaceIdrequestParams } from "@/features/common/schemas" import { workspaceActionClient } from "@/lib/safe-action" -import { aiAgentService } from "../ai-agent.service" export const createAIAgentAction = workspaceActionClient .bindArgsSchemas(workspaceIdrequestParams) diff --git a/apps/builder/src/features/ai-agents/actions/delete.action.ts b/apps/builder/src/features/ai-agents/actions/delete.action.ts index 5c0344f9c..709f80f8b 100644 --- a/apps/builder/src/features/ai-agents/actions/delete.action.ts +++ b/apps/builder/src/features/ai-agents/actions/delete.action.ts @@ -1,11 +1,11 @@ "use server" +import { aiAgentService } from "@chatbotx.io/business" import { bulkUpdateIdsRequest, workspaceIdrequestParams, } from "@/features/common/schemas" import { authActionClient } from "@/lib/safe-action" -import { aiAgentService } from "../ai-agent.service" export const deleteAIAgentAction = authActionClient .bindArgsSchemas(workspaceIdrequestParams) diff --git a/apps/builder/src/features/ai-agents/actions/update.action.ts b/apps/builder/src/features/ai-agents/actions/update.action.ts index ce6662953..85ef365eb 100644 --- a/apps/builder/src/features/ai-agents/actions/update.action.ts +++ b/apps/builder/src/features/ai-agents/actions/update.action.ts @@ -1,9 +1,9 @@ "use server" +import { aiAgentService } from "@chatbotx.io/business" import { zodBigintAsString } from "@chatbotx.io/utils" import { updateAIAgentRequest } from "@/features/ai-agents/schemas/action" import { workspaceActionClient } from "@/lib/safe-action" -import { aiAgentService } from "../ai-agent.service" export const updateAIAgentAction = workspaceActionClient .bindArgsSchemas([zodBigintAsString(), zodBigintAsString()]) diff --git a/apps/builder/src/features/ai-agents/api/authenticated.ts b/apps/builder/src/features/ai-agents/api/authenticated.ts new file mode 100644 index 000000000..281126c73 --- /dev/null +++ b/apps/builder/src/features/ai-agents/api/authenticated.ts @@ -0,0 +1,21 @@ +import { withWorkspaceIdSchema } from "@/features/workspaces/schema/resource" +import { workspaceAuthorizedMidddleware } from "@/middlewares/auth" +import { authorizedAPI } from "@/orpc" +import { listAIAgents } from "../queries" +import { listAIAgentsRequest, listAIAgentsResponse } from "../schemas/query" + +const listAIAgentsAPI = authorizedAPI + .route({ + method: "GET", + path: "/workspaces/{workspaceId}/ai-agents", + summary: "List AI agents", + tags: ["AI"], + }) + .input(listAIAgentsRequest.and(withWorkspaceIdSchema)) + .use(workspaceAuthorizedMidddleware, (input) => input.workspaceId) + .output(listAIAgentsResponse) + .handler(async ({ input }) => await listAIAgents(input)) + +export const aiAgentsAuthenticatedAPI = { + listAIAgentsAPI, +} diff --git a/apps/builder/src/features/ai-agents/api/index.ts b/apps/builder/src/features/ai-agents/api/index.ts index 985543635..4d0f9c70a 100644 --- a/apps/builder/src/features/ai-agents/api/index.ts +++ b/apps/builder/src/features/ai-agents/api/index.ts @@ -1,21 +1,7 @@ -import { withWorkspaceIdSchema } from "@/features/workspaces/schema/resource" -import { workspaceAuthorizedMidddleware } from "@/middlewares/auth" -import { authorizedAPI } from "@/orpc" -import { listAIAgents } from "../queries" -import { listAIAgentsRequest, listAIAgentsResponse } from "../schemas/query" - -const listAIAgentsAPI = authorizedAPI - .route({ - method: "GET", - path: "/workspaces/{workspaceId}/ai-agents", - summary: "List AI agents", - tags: ["AI"], - }) - .input(listAIAgentsRequest.and(withWorkspaceIdSchema)) - .use(workspaceAuthorizedMidddleware, (input) => input.workspaceId) - .output(listAIAgentsResponse) - .handler(async ({ input }) => await listAIAgents(input)) +import { aiAgentsAuthenticatedAPI } from "./authenticated" +import aiAgentsWorkspaceTokenAPIs from "./workspace-token" export const aiAgentsAPI = { - listAIAgentsAPI, + ...aiAgentsAuthenticatedAPI, + ...aiAgentsWorkspaceTokenAPIs, } diff --git a/apps/builder/src/features/ai-agents/api/workspace-token.ts b/apps/builder/src/features/ai-agents/api/workspace-token.ts new file mode 100644 index 000000000..fb4c688ae --- /dev/null +++ b/apps/builder/src/features/ai-agents/api/workspace-token.ts @@ -0,0 +1,27 @@ +import { aiAgentService } from "@chatbotx.io/business" +import { workspaceTokenAuthAPI } from "@/orpc" +import { listAIAgentsResponse } from "../schemas/query" + +const listAIAgentsWorkspaceTokenAPI = workspaceTokenAuthAPI + .route({ + method: "GET", + path: "/v1/ai-agents", + summary: "List AI agents", + tags: ["AI Agents"], + }) + .output(listAIAgentsResponse) + .handler( + async ({ context }) => + await aiAgentService.listAIAgents({ + workspaceId: context.workspace.id, + page: 1, + perPage: 100, + sort: [{ id: "createdAt", desc: true }], + }), + ) + +export const aiAgentsWorkspaceTokenAPIs = { + listAIAgentsWorkspaceTokenAPI, +} + +export default aiAgentsWorkspaceTokenAPIs diff --git a/apps/builder/src/features/ai-agents/queries/index.ts b/apps/builder/src/features/ai-agents/queries/index.ts index 9f272fc89..b58c28004 100644 --- a/apps/builder/src/features/ai-agents/queries/index.ts +++ b/apps/builder/src/features/ai-agents/queries/index.ts @@ -1,9 +1,9 @@ "use server" +import { aiAgentService } from "@chatbotx.io/business" import type { AIAgentModel } from "@chatbotx.io/database/types" import type { ListAIAgentsRequest } from "@/features/ai-agents/schemas/query" import type { PaginatedResponse } from "@/features/common/schemas/pagination" -import { aiAgentService } from "../ai-agent.service" export async function listAIAgents( input: ListAIAgentsRequest, diff --git a/apps/builder/src/features/ai-functions/actions/create-ai-function.action.ts b/apps/builder/src/features/ai-functions/actions/create-ai-function.action.ts index a3a60bcdd..3c994d524 100644 --- a/apps/builder/src/features/ai-functions/actions/create-ai-function.action.ts +++ b/apps/builder/src/features/ai-functions/actions/create-ai-function.action.ts @@ -1,10 +1,10 @@ "use server" +import { aiFunctionService } from "@chatbotx.io/business" import { getTranslations } from "next-intl/server" import { returnValidationErrors } from "next-safe-action" import { workspaceIdrequestParams } from "@/features/common/schemas" import { workspaceActionClient } from "@/lib/safe-action" -import { aiFunctionService } from "../ai-function.service" import { createAIFunctionRequest } from "../schemas/action" export const createAIFunctionAction = workspaceActionClient diff --git a/apps/builder/src/features/ai-functions/actions/delete-ai-function.action.ts b/apps/builder/src/features/ai-functions/actions/delete-ai-function.action.ts index adeabe601..9e2548277 100644 --- a/apps/builder/src/features/ai-functions/actions/delete-ai-function.action.ts +++ b/apps/builder/src/features/ai-functions/actions/delete-ai-function.action.ts @@ -1,9 +1,9 @@ "use server" +import { aiFunctionService } from "@chatbotx.io/business" import { zodBigintAsString } from "@chatbotx.io/utils" import { getTranslations } from "next-intl/server" import { workspaceActionClient } from "@/lib/safe-action" -import { aiFunctionService } from "../ai-function.service" export const deleteAIFunctionAction = workspaceActionClient .bindArgsSchemas([zodBigintAsString(), zodBigintAsString()]) diff --git a/apps/builder/src/features/ai-functions/actions/update-ai-function.action.ts b/apps/builder/src/features/ai-functions/actions/update-ai-function.action.ts index 70b76dda8..834513520 100644 --- a/apps/builder/src/features/ai-functions/actions/update-ai-function.action.ts +++ b/apps/builder/src/features/ai-functions/actions/update-ai-function.action.ts @@ -1,10 +1,10 @@ "use server" +import { aiFunctionService } from "@chatbotx.io/business" import { zodBigintAsString } from "@chatbotx.io/utils" import { getTranslations } from "next-intl/server" import { returnValidationErrors } from "next-safe-action" import { workspaceActionClient } from "@/lib/safe-action" -import { aiFunctionService } from "../ai-function.service" import { updateAIFunctionRequest } from "../schemas/action" export const updateAIFunctionAction = workspaceActionClient diff --git a/apps/builder/src/features/ai-mcp-servers/actions/create-ai-mcp-server.action.ts b/apps/builder/src/features/ai-mcp-servers/actions/create-ai-mcp-server.action.ts index 5b91b3e3b..68e10ac9f 100644 --- a/apps/builder/src/features/ai-mcp-servers/actions/create-ai-mcp-server.action.ts +++ b/apps/builder/src/features/ai-mcp-servers/actions/create-ai-mcp-server.action.ts @@ -1,10 +1,10 @@ "use server" +import { aiMcpServerService } from "@chatbotx.io/business" import { getTranslations } from "next-intl/server" import { returnValidationErrors } from "next-safe-action" import { workspaceIdrequestParams } from "@/features/common/schemas" import { workspaceActionClient } from "@/lib/safe-action" -import { aiMcpServerService } from "../ai-mcp-server.service" import { createAIMcpServerRequest } from "../schemas/action" export const createAIMcpServerAction = workspaceActionClient diff --git a/apps/builder/src/features/ai-mcp-servers/actions/delete-ai-mcp-server.action.ts b/apps/builder/src/features/ai-mcp-servers/actions/delete-ai-mcp-server.action.ts index a595bf995..970b23e80 100644 --- a/apps/builder/src/features/ai-mcp-servers/actions/delete-ai-mcp-server.action.ts +++ b/apps/builder/src/features/ai-mcp-servers/actions/delete-ai-mcp-server.action.ts @@ -1,10 +1,10 @@ "use server" +import { aiMcpServerService } from "@chatbotx.io/business" import { notFoundException } from "@chatbotx.io/business/errors" import { zodBigintAsString } from "@chatbotx.io/utils" import { getTranslations } from "next-intl/server" import { workspaceActionClient } from "@/lib/safe-action" -import { aiMcpServerService } from "../ai-mcp-server.service" export const deleteAIMcpServerAction = workspaceActionClient .bindArgsSchemas([zodBigintAsString(), zodBigintAsString()]) diff --git a/apps/builder/src/features/ai-mcp-servers/actions/update-ai-mcp-server.action.ts b/apps/builder/src/features/ai-mcp-servers/actions/update-ai-mcp-server.action.ts index b36baec40..47e01d7e1 100644 --- a/apps/builder/src/features/ai-mcp-servers/actions/update-ai-mcp-server.action.ts +++ b/apps/builder/src/features/ai-mcp-servers/actions/update-ai-mcp-server.action.ts @@ -1,15 +1,15 @@ "use server" +import { + aiMcpServerService, + type UpdateAIMcpServerRequest, +} from "@chatbotx.io/business" import { notFoundException } from "@chatbotx.io/business/errors" import { zodBigintAsString } from "@chatbotx.io/utils" import { getTranslations } from "next-intl/server" import { returnValidationErrors } from "next-safe-action" import { workspaceActionClient } from "@/lib/safe-action" -import { aiMcpServerService } from "../ai-mcp-server.service" -import { - type UpdateAIMcpServerRequest, - updateAIMcpServerRequest, -} from "../schemas/action" +import { updateAIMcpServerRequest } from "../schemas/action" export const updateAIMcpServerAction = workspaceActionClient .bindArgsSchemas([zodBigintAsString(), zodBigintAsString()]) diff --git a/apps/builder/src/features/automated-response/actions/create-automated-response-action.ts b/apps/builder/src/features/automated-response/actions/create-automated-response-action.ts index bddf70aa5..30eb6277c 100644 --- a/apps/builder/src/features/automated-response/actions/create-automated-response-action.ts +++ b/apps/builder/src/features/automated-response/actions/create-automated-response-action.ts @@ -1,11 +1,10 @@ "use server" +import { automatedResponseService, flowService } from "@chatbotx.io/business" import { returnValidationErrors } from "next-safe-action" import { workspaceIdrequestParams } from "@/features/common/schemas" -import { flowService } from "@/features/flows/flow.service" import { ensureFolderIsExists } from "@/features/folders/actions/utils" import { workspaceActionClient } from "@/lib/safe-action" -import { automatedResponseService } from "../automated-response.service" import { createAutomatedResponseRequest } from "../schema/action" export const createAutomatedResponseAction = workspaceActionClient diff --git a/apps/builder/src/features/automated-response/actions/delete-automated-response-action.ts b/apps/builder/src/features/automated-response/actions/delete-automated-response-action.ts index 65b99b172..3d36a1f4a 100644 --- a/apps/builder/src/features/automated-response/actions/delete-automated-response-action.ts +++ b/apps/builder/src/features/automated-response/actions/delete-automated-response-action.ts @@ -1,11 +1,11 @@ "use server" +import { automatedResponseService } from "@chatbotx.io/business" import { bulkUpdateIdsRequest, workspaceIdrequestParams, } from "@/features/common/schemas" import { workspaceActionClient } from "@/lib/safe-action" -import { automatedResponseService } from "../automated-response.service" export const deleteAutomatedResponseAction = workspaceActionClient .bindArgsSchemas(workspaceIdrequestParams) diff --git a/apps/builder/src/features/automated-response/actions/enable-automated-response-action.ts b/apps/builder/src/features/automated-response/actions/enable-automated-response-action.ts index 59e0ec4f6..9d2b29448 100644 --- a/apps/builder/src/features/automated-response/actions/enable-automated-response-action.ts +++ b/apps/builder/src/features/automated-response/actions/enable-automated-response-action.ts @@ -1,9 +1,9 @@ "use server" +import { automatedResponseService } from "@chatbotx.io/business" import { zodBigintAsString } from "@chatbotx.io/utils" import z from "zod" import { workspaceActionClient } from "@/lib/safe-action" -import { automatedResponseService } from "../automated-response.service" const enableRequest = z.object({ status: z.boolean(), diff --git a/apps/builder/src/features/automated-response/actions/update-automated-response-action.ts b/apps/builder/src/features/automated-response/actions/update-automated-response-action.ts index b23111375..87a6375cf 100644 --- a/apps/builder/src/features/automated-response/actions/update-automated-response-action.ts +++ b/apps/builder/src/features/automated-response/actions/update-automated-response-action.ts @@ -1,14 +1,14 @@ "use server" +import { + automatedResponseService, + flowService, + type UpdateAutomatedResponseRequest, +} from "@chatbotx.io/business" import { zodBigintAsString } from "@chatbotx.io/utils" import { returnValidationErrors } from "next-safe-action" -import { flowService } from "@/features/flows/flow.service" import { workspaceActionClient } from "@/lib/safe-action" -import { automatedResponseService } from "../automated-response.service" -import { - type UpdateAutomatedResponseRequest, - updateAutomatedResponseRequest, -} from "../schema/action" +import { updateAutomatedResponseRequest } from "../schema/action" export const updateAutomatedResponseAction = workspaceActionClient .bindArgsSchemas([zodBigintAsString(), zodBigintAsString()]) diff --git a/apps/builder/src/features/automated-response/api/index.ts b/apps/builder/src/features/automated-response/api/index.ts new file mode 100644 index 000000000..761764e39 --- /dev/null +++ b/apps/builder/src/features/automated-response/api/index.ts @@ -0,0 +1,5 @@ +import keywordsWorkspaceTokenAPIs from "./workspace-token" + +export const keywordsAPI = { + ...keywordsWorkspaceTokenAPIs, +} diff --git a/apps/builder/src/features/automated-response/api/workspace-token.ts b/apps/builder/src/features/automated-response/api/workspace-token.ts new file mode 100644 index 000000000..2734688e3 --- /dev/null +++ b/apps/builder/src/features/automated-response/api/workspace-token.ts @@ -0,0 +1,42 @@ +import { automatedResponseService } from "@chatbotx.io/business" +import { + automatedResponseModel, + createSelectSchema, +} from "@chatbotx.io/database/schema" +import z from "zod" +import { maxPerPage } from "@/lib/shared-request" +import { workspaceTokenAuthAPI } from "@/orpc" + +const keywordResource = createSelectSchema(automatedResponseModel, { + id: z.string(), + workspaceId: z.string(), + folderId: z.string().nullable(), + flowId: z.string().nullable(), +}) + +const listKeywordsWorkspaceTokenAPI = workspaceTokenAuthAPI + .route({ + method: "GET", + path: "/v1/keywords", + summary: "List keywords (automated responses)", + tags: ["Keywords"], + }) + .output(z.object({ data: z.array(keywordResource) })) + .handler(async ({ context }) => { + const { data } = await automatedResponseService.list({ + workspaceId: context.workspace.id, + page: 1, + perPage: maxPerPage, + sort: [{ id: "createdAt", desc: true }], + keyword: null, + folderId: null, + }) + + return { data } + }) + +export const keywordsWorkspaceTokenAPIs = { + listKeywordsWorkspaceTokenAPI, +} + +export default keywordsWorkspaceTokenAPIs diff --git a/apps/builder/src/features/automated-response/queries/index.ts b/apps/builder/src/features/automated-response/queries/index.ts index a46558c16..b6b1e9355 100644 --- a/apps/builder/src/features/automated-response/queries/index.ts +++ b/apps/builder/src/features/automated-response/queries/index.ts @@ -1,6 +1,6 @@ +import { automatedResponseService } from "@chatbotx.io/business" import type { PaginatedResponse } from "@/features/common/schemas/pagination" import { assertCurrentUserCanAccessChatbot } from "@/lib/auth/utils" -import { automatedResponseService } from "../automated-response.service" import type { FindAutomatedResponseRequest, ListAutomatedResponsesRequest, diff --git a/apps/builder/src/features/bot-fields/api/workspace-token.ts b/apps/builder/src/features/bot-fields/api/workspace-token.ts index c0c0b3ae3..4b5afd781 100644 --- a/apps/builder/src/features/bot-fields/api/workspace-token.ts +++ b/apps/builder/src/features/bot-fields/api/workspace-token.ts @@ -53,58 +53,123 @@ const botFieldWorkspaceTokenAPIs = { }), ), - searchBotFieldWorkspaceTokenAPI: workspaceTokenAuthAPI + getBotFieldWorkspaceTokenAPI: workspaceTokenAuthAPI .route({ method: "GET", - path: "/v1/bot-fields/{key}", - summary: "Search bot field by id or name", + path: "/v1/bot-fields/{idOrName}", + summary: "Get bot field by id or name", tags: ["Bot Fields"], }) - .input(z.object({ key: z.string().max(255) })) + .input(z.object({ idOrName: z.string().max(255) })) .output(publicBotFieldResource) .errors(possibleErrorsOnFindingResource) .handler( async ({ context, input }) => await botFieldService.findByKeyOrFail({ - key: input.key, + key: input.idOrName, workspaceId: context.workspace.id, }), ), - updateBotFieldWorkspaceTokenAPI: workspaceTokenAuthAPI + setBotFieldWorkspaceTokenAPI: workspaceTokenAuthAPI .route({ method: "PUT", - path: "/v1/bot-fields/{key}", - summary: "Update bot field by id or name", + path: "/v1/bot-fields/{idOrName}", + summary: "Set bot field value by id or name", tags: ["Bot Fields"], }) - .input(z.object({ key: z.string().max(255), value: z.string().max(255) })) + .input( + z.object({ idOrName: z.string().max(255), value: z.string().max(255) }), + ) .output(publicBotFieldResource) .errors(possibleErrorsOnCreatingResource) .handler(async ({ context, input }) => { - const { key, ...rest } = input + const { idOrName, ...rest } = input return await botFieldService.updateByKey({ workspaceId: context.workspace.id, - key, + key: idOrName, data: rest, }) }), + setBotFieldsWorkspaceTokenAPI: workspaceTokenAuthAPI + .route({ + method: "PUT", + path: "/v1/bot-fields", + summary: "Set multiple bot field values", + successStatus: 204, + tags: ["Bot Fields"], + }) + .input( + z.object({ + fields: z.array( + z.object({ key: z.string().max(255), value: z.string().max(255) }), + ), + }), + ) + .errors(possibleErrorsOnCreatingResource) + .handler(async ({ context, input }) => { + await Promise.all( + input.fields.map(({ key, value }) => + botFieldService.updateByKey({ + workspaceId: context.workspace.id, + key, + data: { value }, + }), + ), + ) + }), + + bulkUpdateBotFieldsWorkspaceTokenAPI: workspaceTokenAuthAPI + .route({ + method: "PUT", + path: "/v1/bot-fields/bulk-update", + summary: "Bulk update bot field values by id or name", + successStatus: 204, + tags: ["Bot Fields"], + }) + .input( + z.object({ + fields: z.array( + z.union([ + z.object({ + id: z.coerce.number().int().positive(), + value: z.union([z.string(), z.number()]).transform(String), + }), + z.object({ + name: z.string().max(255), + value: z.union([z.string(), z.number()]).transform(String), + }), + ]), + ), + }), + ) + .errors(possibleErrorsOnCreatingResource) + .handler(async ({ context, input }) => { + await botFieldService.bulkUpdateByKeys({ + workspaceId: context.workspace.id, + updates: input.fields.map((field) => ({ + key: "id" in field ? String(field.id) : field.name, + value: field.value, + })), + }) + }), + deleteBotFieldsWorkspaceTokenAPI: workspaceTokenAuthAPI .route({ method: "DELETE", - path: "/v1/bot-fields/{key}", + path: "/v1/bot-fields/{idOrName}", summary: "Unset the value of the bot field by id or name", successStatus: 204, tags: ["Bot Fields"], }) - .input(z.object({ key: z.string().max(255) })) + .input(z.object({ idOrName: z.string().max(255) })) .errors(possibleErrorsOnDeletingResource) .handler( async ({ context, input }) => await botFieldService.deleteByKey({ workspaceId: context.workspace.id, - key: input.key, + key: input.idOrName, }), ), } diff --git a/apps/builder/src/features/broadcasts/api/private.ts b/apps/builder/src/features/broadcasts/api/private.ts index 40090533c..8f847d8d4 100644 --- a/apps/builder/src/features/broadcasts/api/private.ts +++ b/apps/builder/src/features/broadcasts/api/private.ts @@ -4,7 +4,7 @@ import { listBroadcastContactsRequest, listBroadcastContactsResponse, } from "@chatbotx.io/analytics/schemas" -import { db } from "@chatbotx.io/database/client" +import { contactInboxService } from "@chatbotx.io/business" import type { ChannelType } from "@chatbotx.io/database/partials" import { z } from "zod" import { workspaceAuthorizedMidddleware } from "@/middlewares/auth" @@ -76,33 +76,8 @@ export const broadcastPrivateAPIs = { } } - const contactInboxes = await db.query.contactInboxModel.findMany({ - where: { - id: { in: contactInboxIds }, - }, - columns: { - id: true, - contactId: true, - sourceId: true, - channel: true, - }, - with: { - contact: { - columns: { - id: true, - firstName: true, - lastName: true, - fullName: true, - avatar: true, - }, - }, - conversation: { - columns: { - id: true, - }, - }, - }, - }) + const contactInboxes = + await contactInboxService.findManyByIds(contactInboxIds) const contactMap = new Map(contactInboxes.map((c) => [c.id, c])) const pageCount = Math.ceil(totalValue / perPage) @@ -137,5 +112,3 @@ export const broadcastPrivateAPIs = { return { data, total: totalValue, page, pageCount } }), } - -export default broadcastPrivateAPIs diff --git a/apps/builder/src/features/contacts/api/authenticated.ts b/apps/builder/src/features/contacts/api/authenticated.ts index 248f3ce7b..ffc40913b 100644 --- a/apps/builder/src/features/contacts/api/authenticated.ts +++ b/apps/builder/src/features/contacts/api/authenticated.ts @@ -243,5 +243,3 @@ export const contactsAuthenticatedAPI = { }) }), } - -export default contactsAuthenticatedAPI diff --git a/apps/builder/src/features/contacts/api/index.ts b/apps/builder/src/features/contacts/api/index.ts index d9104916b..56df72c36 100644 --- a/apps/builder/src/features/contacts/api/index.ts +++ b/apps/builder/src/features/contacts/api/index.ts @@ -1,7 +1,7 @@ -import privateAPIs from "./authenticated" +import { contactsAuthenticatedAPI } from "./authenticated" import workspaceTokenAuthAPIs from "./workspace-token" export const contactsAPIs = { ...workspaceTokenAuthAPIs, - ...privateAPIs, + ...contactsAuthenticatedAPI, } diff --git a/apps/builder/src/features/contacts/api/workspace-token.ts b/apps/builder/src/features/contacts/api/workspace-token.ts index 5e6dbe176..1fd3e5cc4 100644 --- a/apps/builder/src/features/contacts/api/workspace-token.ts +++ b/apps/builder/src/features/contacts/api/workspace-token.ts @@ -1,6 +1,10 @@ -import { contactCustomFieldService, tagService } from "@chatbotx.io/business" +import { + automatedResponseService, + contactCustomFieldService, + conversationService, + tagService, +} from "@chatbotx.io/business" import { notFoundException } from "@chatbotx.io/business/errors" -import { db } from "@chatbotx.io/database/client" import { zodBigintAsString } from "@chatbotx.io/utils" import { z } from "zod" import { createMessage } from "@/features/messages/actions/create-message.action" @@ -12,6 +16,8 @@ import { blockContact } from "../actions/block-contact.action" import { createContact } from "../actions/create-contact.action" import { deleteContact } from "../actions/delete-contact.action" import { unblockContact } from "../actions/unblock-contact.action" +import { updateContactFields } from "../actions/update-contact-field.action" +import { contactImportService } from "../contact-import.service" import { findContactCustomField, listContactCustomFields, @@ -22,13 +28,17 @@ import { publicFindContact, publicListContactsByCustomField, } from "../queries/public-find-contact" -import { createContactRequest } from "../schemas/action" +import { + createContactRequest, + updateContactFieldRequest, +} from "../schemas/action" import { listPublicContactCustomFieldsResponse, publicContactCustomFieldResource, setBulkContactCustomFieldsRequest, setContactCustomFieldValueRequest, } from "../schemas/contact-custom-field" +import { importContactsRequest } from "../schemas/contact-import" import { contactResponse, listContactsRequest, @@ -55,7 +65,7 @@ export const workspaceTokenAuthAPIs = { }), ), - findContactWorkspaceTokenAPI: workspaceTokenAuthAPI + getContactWorkspaceTokenAPI: workspaceTokenAuthAPI .route({ method: "GET", path: "/v1/contacts/{contactId}", @@ -99,7 +109,7 @@ export const workspaceTokenAuthAPIs = { return newContact }), - listContactsByCustomFieldWorkspaceTokenAPI: workspaceTokenAuthAPI + filterContactsWorkspaceTokenAPI: workspaceTokenAuthAPI .route({ method: "GET", path: "/v1/contacts/find-by-custom-field", @@ -157,7 +167,7 @@ export const workspaceTokenAuthAPIs = { }) }), - deleteContactTagsWorkspaceTokenAPI: workspaceTokenAuthAPI + removeContactTagsWorkspaceTokenAPI: workspaceTokenAuthAPI .route({ method: "DELETE", path: "/v1/contacts/{contactId}/tags", @@ -196,7 +206,7 @@ export const workspaceTokenAuthAPIs = { }), ), - findContactCustomFieldValueWorkspaceTokenAPI: workspaceTokenAuthAPI + getContactCustomFieldWorkspaceTokenAPI: workspaceTokenAuthAPI .route({ method: "GET", path: "/v1/contacts/{contactId}/custom-fields/{customFieldId}", @@ -219,7 +229,7 @@ export const workspaceTokenAuthAPIs = { }), ), - setContactCustomFieldValueWorkspaceTokenAPI: workspaceTokenAuthAPI + setContactCustomFieldWorkspaceTokenAPI: workspaceTokenAuthAPI .route({ method: "POST", path: "/v1/contacts/{contactId}/custom-fields/{customFieldId}", @@ -236,7 +246,7 @@ export const workspaceTokenAuthAPIs = { }) }), - setBulkContactCustomFieldsWorkspaceTokenAPI: workspaceTokenAuthAPI + setContactCustomFieldsWorkspaceTokenAPI: workspaceTokenAuthAPI .route({ method: "PUT", path: "/v1/contacts/{contactId}/custom-fields", @@ -253,10 +263,10 @@ export const workspaceTokenAuthAPIs = { }) }), - deleteContactCustomFieldWorkspaceTokenAPI: workspaceTokenAuthAPI + clearContactCustomFieldWorkspaceTokenAPI: workspaceTokenAuthAPI .route({ method: "DELETE", - path: "/v1/contacts/{contactId}/custom-fields/{keyword}", + path: "/v1/contacts/{contactId}/custom-fields/{idOrName}", summary: "Delete contact custom field by id or name", successStatus: 204, tags: ["Contacts"], @@ -264,14 +274,14 @@ export const workspaceTokenAuthAPIs = { .input( z.object({ contactId: zodBigintAsString(), - keyword: z.string().min(1), + idOrName: z.string().min(1), }), ) .handler(async ({ context, input }) => { await contactCustomFieldService.deleteByKey({ workspaceId: context.workspace.id, contactId: input.contactId, - keyword: input.keyword, + keyword: input.idOrName, }) }), @@ -338,17 +348,9 @@ export const workspaceTokenAuthAPIs = { ), ) .handler(async ({ context, input }) => { - const conversation = await db.query.conversationModel.findFirst({ - where: { - contactId: input.contactId, - workspaceId: context.workspace.id, - contactInboxes: { - channel: input.inboxId, - }, - }, - with: { - contactInboxes: true, - }, + const conversation = await conversationService.findByContactWithInboxes({ + contactId: input.contactId, + workspaceId: context.workspace.id, }) if (!conversation) { throw notFoundException("Conversation not found") @@ -367,6 +369,149 @@ export const workspaceTokenAuthAPIs = { parsedInput: input, }) }), + + triggerAutoReplyWorkspaceTokenAPI: workspaceTokenAuthAPI + .route({ + method: "POST", + path: "/v1/contacts/{contactId}/auto-replies", + summary: "Trigger auto reply for contact", + successStatus: 204, + tags: ["Contacts"], + }) + .input( + z.object({ + contactId: zodBigintAsString(), + keyword: z.string().min(1), + inboxId: zodBigintAsString().optional(), + }), + ) + .handler(async ({ context, input }) => { + const autoReply = await automatedResponseService.findByKeyword( + context.workspace.id, + input.keyword, + ) + if (!autoReply) { + throw notFoundException("No automated response found for this keyword") + } + + const conversation = await conversationService.findByContactWithInboxes({ + contactId: input.contactId, + workspaceId: context.workspace.id, + }) + if (!conversation) { + throw notFoundException("Conversation not found") + } + + const contactInbox = input.inboxId + ? conversation.contactInboxes.find((ci) => ci.inboxId === input.inboxId) + : conversation.contactInboxes[0] + if (!contactInbox) { + throw notFoundException("Conversation not found") + } + + const parsedInput = autoReply.flowId + ? { flowId: autoReply.flowId, inboxId: input.inboxId } + : { text: autoReply.text ?? "", inboxId: input.inboxId } + + await createMessage({ conversation, contactInbox, parsedInput }) + }), + + sendContactFlowWorkspaceTokenAPI: workspaceTokenAuthAPI + .route({ + method: "POST", + path: "/v1/contacts/{contactId}/flows", + summary: "Send flow to contact", + successStatus: 204, + tags: ["Contacts"], + }) + .input( + z.object({ + contactId: zodBigintAsString(), + flowId: zodBigintAsString(), + inboxId: zodBigintAsString().optional(), + }), + ) + .handler(async ({ context, input }) => { + const conversation = await conversationService.findByContactWithInboxes({ + contactId: input.contactId, + workspaceId: context.workspace.id, + }) + if (!conversation) { + throw notFoundException("Conversation not found") + } + + const contactInbox = input.inboxId + ? conversation.contactInboxes.find((ci) => ci.inboxId === input.inboxId) + : conversation.contactInboxes[0] + if (!contactInbox) { + throw notFoundException("Conversation not found") + } + + await createMessage({ + conversation, + contactInbox, + parsedInput: { flowId: input.flowId, inboxId: input.inboxId }, + }) + }), + + importContactsWorkspaceTokenAPI: workspaceTokenAuthAPI + .route({ + method: "POST", + path: "/v1/contacts/import", + summary: "Import contacts from a file", + successStatus: 201, + tags: ["Contacts"], + }) + .input(importContactsRequest) + .handler( + async ({ context, input }) => + await contactImportService.startImport(context.workspace.id, input), + ), + + updateContactWorkspaceTokenAPI: workspaceTokenAuthAPI + .route({ + method: "PUT", + path: "/v1/contacts/{contactId}", + summary: "Update contact fields", + successStatus: 204, + tags: ["Contacts"], + }) + .input( + z + .object({ contactId: zodBigintAsString() }) + .and(updateContactFieldRequest), + ) + .handler(async ({ context, input }) => { + const { contactId, ...fields } = input + await updateContactFields( + { workspaceId: context.workspace.id, id: contactId }, + fields, + ) + }), + + clearContactCustomFieldsWorkspaceTokenAPI: workspaceTokenAuthAPI + .route({ + method: "DELETE", + path: "/v1/contacts/{contactId}/custom-fields", + summary: "Clear all custom fields from a contact", + successStatus: 204, + tags: ["Contacts"], + }) + .input(z.object({ contactId: zodBigintAsString() })) + .handler(async ({ context, input }) => { + const contact = await publicFindContact({ + id: input.contactId, + workspaceId: context.workspace.id, + }) + if (!contact) { + throw notFoundException("Contact not found") + } + + await contactCustomFieldService.clearByContactId({ + workspaceId: context.workspace.id, + contactId: input.contactId, + }) + }), } export default workspaceTokenAuthAPIs diff --git a/apps/builder/src/features/contacts/contact-import.service.ts b/apps/builder/src/features/contacts/contact-import.service.ts new file mode 100644 index 000000000..dcde6dbf6 --- /dev/null +++ b/apps/builder/src/features/contacts/contact-import.service.ts @@ -0,0 +1,90 @@ +import { inboxService } from "@chatbotx.io/business" +import { notFoundException } from "@chatbotx.io/business/errors" +import { db } from "@chatbotx.io/database/client" +import type { ContactImportMeta } from "@chatbotx.io/database/partials" +import { fileContextTypes, importTypes } from "@chatbotx.io/database/partials" +import { importModel } from "@chatbotx.io/database/schema" +import { getImportEntry, inferImportFormat } from "@chatbotx.io/imports" +import { createId } from "@chatbotx.io/utils" +import { DefaultJobAction, defaultQueue } from "@chatbotx.io/worker-config" +import type { ImportContactsRequest } from "./schemas/contact-import" + +export const contactImportService = { + async startImport( + workspaceId: string, + input: ImportContactsRequest, + ): Promise<{ importId: string }> { + const file = await db.query.fileModel.findFirst({ + where: { id: input.fileId, workspaceId }, + }) + if (!file) { + throw notFoundException("File not found") + } + if ( + file.contextType !== fileContextTypes.enum.import || + file.subType !== importTypes.enum.contacts + ) { + throw notFoundException("File is not a contacts import") + } + + const format = inferImportFormat({ + mimeType: file.mimeType, + fileName: file.fileName, + }) + const contactsConfig = getImportEntry(importTypes.enum.contacts).config + if (!(format && contactsConfig.acceptedFormats.includes(format))) { + throw notFoundException("Unsupported file format") + } + + const inbox = await inboxService.find({ + where: { id: input.inboxId, workspaceId }, + }) + if (!inbox) { + throw notFoundException("Inbox not found") + } + + const activeImport = await db.query.importModel.findFirst({ + where: { + workspaceId, + type: importTypes.enum.contacts, + OR: [{ status: "pending" }, { status: "processing" }], + }, + columns: { id: true }, + }) + if (activeImport) { + throw notFoundException("An import is already in progress") + } + + const importId = createId() + const meta: ContactImportMeta = { + channel: input.channel, + countryCode: input.countryCode, + columnMap: { + contactId: input.contactId, + phoneNumber: input.phoneNumber, + email: input.email, + firstName: input.firstName, + lastName: input.lastName, + }, + fieldMapping: input.fieldMapping, + } + + await db.insert(importModel).values({ + id: importId, + workspaceId, + inboxId: input.inboxId, + fileId: file.id, + type: importTypes.enum.contacts, + format, + status: "pending", + meta, + }) + + await defaultQueue.add(DefaultJobAction.runImport, { + type: DefaultJobAction.runImport, + data: { importId }, + }) + + return { importId } + }, +} diff --git a/apps/builder/src/features/conversations/api/workspace-token.ts b/apps/builder/src/features/conversations/api/workspace-token.ts index ebade10b5..3cecd0be8 100644 --- a/apps/builder/src/features/conversations/api/workspace-token.ts +++ b/apps/builder/src/features/conversations/api/workspace-token.ts @@ -1,21 +1,63 @@ +import { + channelTypes, + conversationBotCategories, + conversationStatuses, +} from "@chatbotx.io/database/partials" +import z from "zod" +import { contactFilterCriteriaSchema } from "@/features/contacts/schemas/contact-filter" +import { cursorPaginationRequest } from "@/lib/pagination" import { workspaceTokenAuthAPI } from "@/orpc" import { listConversations } from "../queries/list-conversations.query" -import { listConversationsRequest } from "../schema/query" import { listConversationsResponse } from "../schema/resource" +function jsonQueryParam(schema: z.ZodType) { + return z.preprocess((val) => { + if (val === undefined || val === null || val === "") { + return + } + try { + return JSON.parse(decodeURIComponent(String(val))) + } catch { + return + } + }, schema) +} + +const listConversationsQueryRequest = z.object({ + botCategory: conversationBotCategories.optional(), + assignedId: z.string().nullable().optional(), + channel: channelTypes.optional(), + status: jsonQueryParam(z.array(conversationStatuses).optional()), + keyword: z.string().optional(), + botEnabled: z.preprocess((val) => { + if (val === "true") { + return true + } + if (val === "false") { + return false + } + return val + }, z.boolean().nullish()), + tags: jsonQueryParam( + z + .array( + z.enum(["noAdminReply", "unread", "followUp", "archived", "blocked"]), + ) + .optional(), + ), + contactFilter: jsonQueryParam(contactFilterCriteriaSchema.optional()), + ...cursorPaginationRequest.shape, +}) + export const conversationWorkspaceTokenAPIs = { listConversationsWorkspaceTokenAPI: workspaceTokenAuthAPI .route({ - method: "POST", + method: "GET", path: "/v1/conversations", summary: "List conversations", tags: ["Conversations"], }) - .input( - listConversationsRequest.omit({ - workspaceId: true, - }), - ) + .input(listConversationsQueryRequest) .output(listConversationsResponse) .handler( async ({ context, input }) => diff --git a/apps/builder/src/features/custom-fields/api/index.ts b/apps/builder/src/features/custom-fields/api/index.ts index 346358ddc..acf1ab2e6 100644 --- a/apps/builder/src/features/custom-fields/api/index.ts +++ b/apps/builder/src/features/custom-fields/api/index.ts @@ -1,4 +1,4 @@ -import privateCustomFieldsAPI from "./private" +import { privateCustomFieldsAPI } from "./private" import customFieldsWorkspaceTokenAPI from "./workspace-token" export const customFieldsAPI = { diff --git a/apps/builder/src/features/custom-fields/api/private.ts b/apps/builder/src/features/custom-fields/api/private.ts index da3f916ef..1b78ecd5a 100644 --- a/apps/builder/src/features/custom-fields/api/private.ts +++ b/apps/builder/src/features/custom-fields/api/private.ts @@ -95,5 +95,3 @@ export const privateCustomFieldsAPI = { }) }), } - -export default privateCustomFieldsAPI diff --git a/apps/builder/src/features/custom-fields/api/workspace-token.ts b/apps/builder/src/features/custom-fields/api/workspace-token.ts index e72ef2e1d..75c2a1f68 100644 --- a/apps/builder/src/features/custom-fields/api/workspace-token.ts +++ b/apps/builder/src/features/custom-fields/api/workspace-token.ts @@ -54,19 +54,19 @@ const customFieldsWorkspaceTokenAPI = { }), ), - findCustomFieldWorkspaceTokenAPI: workspaceTokenAuthAPI + getCustomFieldWorkspaceTokenAPI: workspaceTokenAuthAPI .route({ method: "GET", - path: "/v1/custom-fields/{keyword}", + path: "/v1/custom-fields/{idOrName}", summary: "Get custom field by id or name", tags: ["Custom Fields"], }) - .input(z.object({ keyword: z.string() })) + .input(z.object({ idOrName: z.string() })) .output(publicCustomFieldResource) .errors(possibleErrorsOnFindingResource) .handler(async ({ context, input }) => { const customField = await customFieldService.findByKey({ - key: input.keyword, + key: input.idOrName, workspaceId: context.workspace.id, }) if (!customField) { diff --git a/apps/builder/src/features/inboxes/api/workspace-token.ts b/apps/builder/src/features/inboxes/api/workspace-token.ts index ad1ad8f73..518410017 100644 --- a/apps/builder/src/features/inboxes/api/workspace-token.ts +++ b/apps/builder/src/features/inboxes/api/workspace-token.ts @@ -6,7 +6,7 @@ import { } from "../schema/action" export const inboxesWorkspaceTokenAPIs = { - listInboxesWorkspaceTokenAPI: workspaceTokenAuthAPI + listChannelsWorkspaceTokenAPI: workspaceTokenAuthAPI .route({ method: "GET", path: "/v1/channels", diff --git a/apps/builder/src/features/integration-whatsapp/message-templates/api/workspace-token.ts b/apps/builder/src/features/integration-whatsapp/message-templates/api/workspace-token.ts index d2d625450..760b0219b 100644 --- a/apps/builder/src/features/integration-whatsapp/message-templates/api/workspace-token.ts +++ b/apps/builder/src/features/integration-whatsapp/message-templates/api/workspace-token.ts @@ -6,11 +6,11 @@ import { } from "../schema/query" export const whatsappMessageTemplateWorkspaceTokenAPIs = { - listWhatsappMessageTemplatesWorkspaceTokenAPI: workspaceTokenAuthAPI + listTemplateMessagesWorkspaceTokenAPI: workspaceTokenAuthAPI .route({ method: "GET", - path: "/v1/whatsapp-message-templates", - summary: "List WhatsApp message templates", + path: "/v1/template-messages", + summary: "List template messages", tags: ["Template Messages"], }) .input( diff --git a/apps/builder/src/features/integrations/api/index.ts b/apps/builder/src/features/integrations/api/index.ts new file mode 100644 index 000000000..1e774a6b2 --- /dev/null +++ b/apps/builder/src/features/integrations/api/index.ts @@ -0,0 +1,5 @@ +import integrationsWorkspaceTokenAPIs from "./workspace-token" + +export const integrationsAPI = { + ...integrationsWorkspaceTokenAPIs, +} diff --git a/apps/builder/src/features/integrations/api/workspace-token.ts b/apps/builder/src/features/integrations/api/workspace-token.ts new file mode 100644 index 000000000..66c7a28e6 --- /dev/null +++ b/apps/builder/src/features/integrations/api/workspace-token.ts @@ -0,0 +1,33 @@ +import { integrationService } from "@chatbotx.io/business" +import { + createSelectSchema, + integrationModel, +} from "@chatbotx.io/database/schema" +import z from "zod" +import { workspaceTokenAuthAPI } from "@/orpc" + +const integrationResource = createSelectSchema(integrationModel, { + id: z.string(), + workspaceId: z.string(), +}) + +const listIntegrationsWorkspaceTokenAPI = workspaceTokenAuthAPI + .route({ + method: "GET", + path: "/v1/integrations", + summary: "List integrations", + tags: ["Integrations"], + }) + .output(z.object({ data: z.array(integrationResource) })) + .handler(async ({ context }) => { + const data = await integrationService.listByWorkspaceId( + context.workspace.id, + ) + return { data } + }) + +export const integrationsWorkspaceTokenAPIs = { + listIntegrationsWorkspaceTokenAPI, +} + +export default integrationsWorkspaceTokenAPIs diff --git a/apps/builder/src/features/sequences/api/private.ts b/apps/builder/src/features/sequences/api/private.ts index e608f0c95..397faf633 100644 --- a/apps/builder/src/features/sequences/api/private.ts +++ b/apps/builder/src/features/sequences/api/private.ts @@ -5,7 +5,7 @@ import { listSequenceStepContactsRequest, listSequenceStepContactsResponse, } from "@chatbotx.io/analytics/schemas" -import { db } from "@chatbotx.io/database/client" +import { contactInboxService } from "@chatbotx.io/business" import type { ChannelType } from "@chatbotx.io/database/partials" import { workspaceAuthorizedMidddleware } from "@/middlewares/auth" import { authorizedAPI } from "@/orpc" @@ -71,49 +71,30 @@ export const sequencesPrivateAPI = { } } - const contactInboxes = await db.query.contactInboxModel.findMany({ - where: { - id: { in: contactInboxIds }, - }, - columns: { - id: true, - contactId: true, - sourceId: true, - channel: true, - }, - with: { - contact: { - columns: { - id: true, - firstName: true, - lastName: true, - fullName: true, - avatar: true, - }, - }, - conversation: { - columns: { - id: true, - }, - }, - }, - }) + const contactInboxes = + await contactInboxService.findManyByIds(contactInboxIds) const contactMap = new Map(contactInboxes.map((c) => [c.id, c])) const pageCount = Math.ceil(totalValue / perPage) - const data = contactInboxIds - .map((contactInboxId) => { - const eventData = contactEventMap.get(contactInboxId) - if (!eventData) { - return null - } + const data = contactInboxIds.flatMap((contactInboxId) => { + const eventData = contactEventMap.get(contactInboxId) + if (!eventData) { + return [] + } + + const contact = contactMap.get(contactInboxId) + if (!contact) { + return [] + } - const contact = contactMap.get(contactInboxId) - if (!contact) { - return null - } - return { + const conversationId = contact.conversation?.id + if (!conversationId) { + return [] + } + + return [ + { contactId: contact.id, contactInboxId, firstName: contact.contact?.firstName ?? null, @@ -122,12 +103,12 @@ export const sequencesPrivateAPI = { sourceId: contact.sourceId as string | null, avatar: contact.contact?.avatar ?? null, channel: contact.channel as ChannelType, - conversationId: contact.conversation?.id ?? null, + conversationId, errorContent: eventData.errorContent ?? null, occurredAt: eventData.occurredAt, - } - }) - .filter((c) => c !== null) + }, + ] + }) return { data, total: totalValue, page, pageCount } }), diff --git a/apps/builder/src/features/sequences/api/workspace-token.ts b/apps/builder/src/features/sequences/api/workspace-token.ts index cfcaf4298..b233cff63 100644 --- a/apps/builder/src/features/sequences/api/workspace-token.ts +++ b/apps/builder/src/features/sequences/api/workspace-token.ts @@ -9,7 +9,7 @@ export const sequencesWorkspaceTokenAPIs = { listSequencesWorkspaceTokenAPI: workspaceTokenAuthAPI .route({ method: "GET", - path: "/sequences", + path: "/v1/sequences", summary: "List sequences", tags: ["Sequences"], }) @@ -26,7 +26,7 @@ export const sequencesWorkspaceTokenAPIs = { getSequenceWorkspaceTokenAPI: workspaceTokenAuthAPI .route({ method: "GET", - path: "/sequences/{id}", + path: "/v1/sequences/{id}", summary: "Get sequence details", tags: ["Sequences"], }) diff --git a/apps/builder/src/features/tags/api/token-auth.ts b/apps/builder/src/features/tags/api/token-auth.ts index 74e4d8b81..855aa603e 100644 --- a/apps/builder/src/features/tags/api/token-auth.ts +++ b/apps/builder/src/features/tags/api/token-auth.ts @@ -57,20 +57,20 @@ const createTagWorkspaceTokenAPI = workspaceTokenAuthAPI return data }) -const findTagWorkspaceTokenAPI = workspaceTokenAuthAPI +const getTagWorkspaceTokenAPI = workspaceTokenAuthAPI .route({ method: "GET", - path: "/v1/tags/{key}", + path: "/v1/tags/{idOrName}", summary: "Get tag by id or name", tags: ["Tags"], }) - .input(z.object({ key: z.string() })) + .input(z.object({ idOrName: z.string() })) .output(tagResource.pick({ id: true, name: true })) .errors(possibleErrorsOnFindingResource) .handler( async ({ context, input }) => await tagService.findByKeyOrFail({ - key: input.key, + key: input.idOrName, workspaceId: context.workspace.id, }), ) @@ -98,7 +98,7 @@ const updateTagWorkspaceTokenAPI = workspaceTokenAuthAPI }) }) -const deleteTagsWorkspaceTokenAPI = workspaceTokenAuthAPI +const deleteTagWorkspaceTokenAPI = workspaceTokenAuthAPI .route({ method: "DELETE", path: "/v1/tags/{id}", @@ -120,7 +120,7 @@ const deleteTagsWorkspaceTokenAPI = workspaceTokenAuthAPI export const tagWorkspaceTokenAPIs = { listTagsWorkspaceTokenAPI, createTagWorkspaceTokenAPI, - findTagWorkspaceTokenAPI, + getTagWorkspaceTokenAPI, updateTagWorkspaceTokenAPI, - deleteTagsWorkspaceTokenAPI, + deleteTagWorkspaceTokenAPI, } diff --git a/apps/builder/src/features/triggers/api/index.ts b/apps/builder/src/features/triggers/api/index.ts new file mode 100644 index 000000000..84bba6b23 --- /dev/null +++ b/apps/builder/src/features/triggers/api/index.ts @@ -0,0 +1,5 @@ +import triggersWorkspaceTokenAPIs from "./workspace-token" + +export const triggersAPI = { + ...triggersWorkspaceTokenAPIs, +} diff --git a/apps/builder/src/features/triggers/api/workspace-token.ts b/apps/builder/src/features/triggers/api/workspace-token.ts new file mode 100644 index 000000000..268ea14c5 --- /dev/null +++ b/apps/builder/src/features/triggers/api/workspace-token.ts @@ -0,0 +1,31 @@ +import { triggerService } from "@chatbotx.io/business" +import z from "zod" +import { workspaceTokenAuthAPI } from "@/orpc" +import { triggerResource } from "../schema/resource" + +const listTriggersWorkspaceTokenAPI = workspaceTokenAuthAPI + .route({ + method: "GET", + path: "/v1/triggers", + summary: "List triggers", + tags: ["Triggers"], + }) + .output(z.object({ data: z.array(triggerResource) })) + .handler(async ({ context }) => { + const triggers = await triggerService.listByWorkspaceId( + context.workspace.id, + ) + return { + data: triggers.map((trigger) => ({ + ...trigger, + conditions: [], + actions: [], + })), + } + }) + +export const triggersWorkspaceTokenAPIs = { + listTriggersWorkspaceTokenAPI, +} + +export default triggersWorkspaceTokenAPIs diff --git a/apps/builder/src/features/webhooks/api/index.ts b/apps/builder/src/features/webhooks/api/index.ts new file mode 100644 index 000000000..e92add4dd --- /dev/null +++ b/apps/builder/src/features/webhooks/api/index.ts @@ -0,0 +1,5 @@ +import webhooksWorkspaceTokenAPIs from "./workspace-token" + +export const webhooksAPI = { + ...webhooksWorkspaceTokenAPIs, +} diff --git a/apps/builder/src/features/webhooks/api/workspace-token.ts b/apps/builder/src/features/webhooks/api/workspace-token.ts new file mode 100644 index 000000000..f6073255a --- /dev/null +++ b/apps/builder/src/features/webhooks/api/workspace-token.ts @@ -0,0 +1,29 @@ +import { webhookService } from "@chatbotx.io/business" +import { createSelectSchema, webhookModel } from "@chatbotx.io/database/schema" +import z from "zod" +import { workspaceTokenAuthAPI } from "@/orpc" + +const webhookResource = createSelectSchema(webhookModel, { + id: z.string(), + workspaceId: z.string(), + folderId: z.string().nullable(), +}) + +const listWebhooksWorkspaceTokenAPI = workspaceTokenAuthAPI + .route({ + method: "GET", + path: "/v1/webhooks", + summary: "List webhooks", + tags: ["Webhooks"], + }) + .output(z.object({ data: z.array(webhookResource) })) + .handler(async ({ context }) => { + const data = await webhookService.listByWorkspaceId(context.workspace.id) + return { data } + }) + +export const webhooksWorkspaceTokenAPIs = { + listWebhooksWorkspaceTokenAPI, +} + +export default webhooksWorkspaceTokenAPIs diff --git a/apps/builder/src/features/workspace-members/api/workspace-token.ts b/apps/builder/src/features/workspace-members/api/workspace-token.ts index ce70bc754..77ea11d9a 100644 --- a/apps/builder/src/features/workspace-members/api/workspace-token.ts +++ b/apps/builder/src/features/workspace-members/api/workspace-token.ts @@ -1,6 +1,9 @@ +import { notFoundException } from "@chatbotx.io/business/errors" import { workspaceTokenAuthAPI } from "@/orpc" -import { listWorkspaceMembers } from "../queries" +import { getWorkspaceMember, listWorkspaceMembers } from "../queries" import { + getWorkspaceMemberRequest, + getWorkspaceMemberResponse, listWorkspaceMembersRequest, listWorkspaceMembersResponse, } from "../schema/query" @@ -9,7 +12,7 @@ export const workspaceMembersAPIs = { listMembersWorkspaceTokenAPI: workspaceTokenAuthAPI .route({ method: "GET", - path: "/v1/workspace-members", + path: "/v1/members", summary: "List workspace members", tags: ["Members"], }) @@ -22,6 +25,25 @@ export const workspaceMembersAPIs = { workspaceId: context.workspace.id, }), ), + getMemberWorkspaceTokenAPI: workspaceTokenAuthAPI + .route({ + method: "GET", + path: "/v1/members/{memberId}", + summary: "Get workspace member by id", + tags: ["Members"], + }) + .input(getWorkspaceMemberRequest.omit({ workspaceId: true })) + .output(getWorkspaceMemberResponse) + .handler(async ({ context, input }) => { + const member = await getWorkspaceMember({ + ...input, + workspaceId: context.workspace.id, + }) + if (!member) { + throw notFoundException("Member not found") + } + return member + }), } export default workspaceMembersAPIs diff --git a/apps/builder/src/features/workspace-members/queries/index.ts b/apps/builder/src/features/workspace-members/queries/index.ts index f0fe111e8..bd654dec8 100644 --- a/apps/builder/src/features/workspace-members/queries/index.ts +++ b/apps/builder/src/features/workspace-members/queries/index.ts @@ -5,6 +5,8 @@ import { workspaceMemberModel } from "@chatbotx.io/database/schema" import { getPaginationWithDefaults } from "@chatbotx.io/database/utils" import { assertCurrentUserCanAccessChatbot } from "@/lib/auth/utils" import type { + GetWorkspaceMemberRequest, + GetWorkspaceMemberResponse, ListWorkspaceMembersRequest, ListWorkspaceMembersResponse, } from "../schema/query" @@ -46,6 +48,20 @@ export async function listWorkspaceMembers( return { data, pageCount } } +export async function getWorkspaceMember( + input: GetWorkspaceMemberRequest, +): Promise { + return await db.query.workspaceMemberModel.findFirst({ + where: { + id: input.memberId, + workspaceId: input.workspaceId, + }, + with: { + user: true, + }, + }) +} + export const getAllWorkspaceMembers = async (userId: string) => { const workspaceMembers = await db.query.workspaceMemberModel.findMany({ where: { diff --git a/apps/builder/src/features/workspace-members/schema/query.ts b/apps/builder/src/features/workspace-members/schema/query.ts index 08e59f789..3b4fa6f46 100644 --- a/apps/builder/src/features/workspace-members/schema/query.ts +++ b/apps/builder/src/features/workspace-members/schema/query.ts @@ -40,3 +40,18 @@ export const listWorkspaceMembersResponse = z.object({ export type ListWorkspaceMembersResponse = z.infer< typeof listWorkspaceMembersResponse > + +export const getWorkspaceMemberRequest = z.object({ + memberId: zodBigintAsString(), + workspaceId: zodBigintAsString(), +}) +export type GetWorkspaceMemberRequest = z.infer< + typeof getWorkspaceMemberRequest +> + +export const getWorkspaceMemberResponse = workspaceMemberResource.extend({ + user: userResource.pick({ id: true, name: true, image: true }), +}) +export type GetWorkspaceMemberResponse = z.infer< + typeof getWorkspaceMemberResponse +> diff --git a/apps/builder/src/features/workspaces/api/workspace-token.ts b/apps/builder/src/features/workspaces/api/workspace-token.ts index e6d14ec63..b35d3764a 100644 --- a/apps/builder/src/features/workspaces/api/workspace-token.ts +++ b/apps/builder/src/features/workspaces/api/workspace-token.ts @@ -5,7 +5,7 @@ export const workspaceWorkspaceTokenAPIs = { getWorkspaceWorkspaceTokenAPI: workspaceTokenAuthAPI .route({ method: "GET", - path: "/v1/workspace", + path: "/v1/workspaces", summary: "Get workspace", tags: ["Workspace"], }) diff --git a/apps/builder/src/routers/index.ts b/apps/builder/src/routers/index.ts index b6d615627..db8a6cd73 100644 --- a/apps/builder/src/routers/index.ts +++ b/apps/builder/src/routers/index.ts @@ -4,6 +4,7 @@ import { aiAgentsAPI } from "@/features/ai-agents/api" import { aiFilesAPI } from "@/features/ai-files/api" import { aiFunctionsAPI } from "@/features/ai-functions/api" import { aiMcpServerAPIs } from "@/features/ai-mcp-servers/api" +import { keywordsAPI } from "@/features/automated-response/api" import { botFieldAPIs } from "@/features/bot-fields/api" import { broadcastAPIs } from "@/features/broadcasts/api" import { contactsAPIs } from "@/features/contacts/api" @@ -20,6 +21,7 @@ import { integrationSmtpAPI } from "@/features/integration-smtp/api" import { integrationWhatsappAPIs } from "@/features/integration-whatsapp/api" import { whatsappFlowAPIs } from "@/features/integration-whatsapp/flows/api" import { whatsappMessageTemplateAPIs } from "@/features/integration-whatsapp/message-templates/api" +import { integrationsAPI } from "@/features/integrations/api" import { messagesAPI } from "@/features/messages/api" import { platformCredentialsAPI } from "@/features/platform-credentials/api" import { productsAPI } from "@/features/products/api" @@ -27,6 +29,8 @@ import { savedRepliesAPI } from "@/features/saved-replies/api" import { sequencesAPI } from "@/features/sequences/api" import { spreadsheetsAPI } from "@/features/spreadsheets/api" import { tagsAPI } from "@/features/tags/api" +import { triggersAPI } from "@/features/triggers/api" +import { webhooksAPI } from "@/features/webhooks/api" import { workspaceMembersAPI } from "@/features/workspace-members/api" import { workspacesAPI } from "@/features/workspaces/api" import { workspaceAuthorizedMidddleware } from "@/middlewares/auth" @@ -67,4 +71,8 @@ export const router = { aiFunctionsAPI, platformCredentialsAPI, productsAPI, + keywordsAPI, + integrationsAPI, + triggersAPI, + webhooksAPI, } diff --git a/apps/builder/src/routers/public.ts b/apps/builder/src/routers/public.ts index 4e4203aab..55235e7a7 100644 --- a/apps/builder/src/routers/public.ts +++ b/apps/builder/src/routers/public.ts @@ -1,4 +1,6 @@ import { inboxTeamsWorkspaceTokenAPIs } from "@/enterprise/features/inbox-teams/api/workspace-token" +import aiAgentsWorkspaceTokenAPIs from "@/features/ai-agents/api/workspace-token" +import keywordsWorkspaceTokenAPIs from "@/features/automated-response/api/workspace-token" import botFieldWorkspaceTokenAPIs from "@/features/bot-fields/api/workspace-token" import { broadcastWorkspaceTokenAPIs } from "@/features/broadcasts/api/workspace-token" import contactWorkspaceTokenAPIs from "@/features/contacts/api/workspace-token" @@ -8,9 +10,12 @@ import errorLogWorkspaceTokenAPIs from "@/features/error-logs/api/workspace-toke import flowWorkspaceTokenAPIs from "@/features/flows/api/workspace-token" import inboxWorkspaceTokenAPIs from "@/features/inboxes/api/workspace-token" import whatsappMessageTemplateWorkspaceTokenAPIs from "@/features/integration-whatsapp/message-templates/api/workspace-token" +import integrationsWorkspaceTokenAPIs from "@/features/integrations/api/workspace-token" import savedReplyWorkspaceTokenAPIs from "@/features/saved-replies/api/workspace-token" import { sequencesWorkspaceTokenAPIs } from "@/features/sequences/api/workspace-token" import { tagWorkspaceTokenAPIs } from "@/features/tags/api/token-auth" +import triggersWorkspaceTokenAPIs from "@/features/triggers/api/workspace-token" +import webhooksWorkspaceTokenAPIs from "@/features/webhooks/api/workspace-token" import workspaceMembersAPIs from "@/features/workspace-members/api/workspace-token" import workspaceAPIs from "@/features/workspaces/api/workspace-token" @@ -30,4 +35,9 @@ export const publicRouter = { ...sequencesWorkspaceTokenAPIs, ...inboxTeamsWorkspaceTokenAPIs, ...whatsappMessageTemplateWorkspaceTokenAPIs, + ...triggersWorkspaceTokenAPIs, + ...webhooksWorkspaceTokenAPIs, + ...aiAgentsWorkspaceTokenAPIs, + ...keywordsWorkspaceTokenAPIs, + ...integrationsWorkspaceTokenAPIs, } diff --git a/apps/cli/README.md b/apps/cli/README.md index 1d7a88ebe..a72b44092 100644 --- a/apps/cli/README.md +++ b/apps/cli/README.md @@ -9,9 +9,9 @@ Commands are automatically generated from the ChatbotX public API spec — no ma ## Installation ```bash -npm install -g chatbotx-cli +npm install -g chatbotx # or -pnpm add -g chatbotx-cli +pnpm install -g chatbotx ``` --- @@ -74,18 +74,20 @@ chatbotx config set --apiKey --apiUrl --- -### `workspace` +### `workspaces` ```bash -chatbotx workspace list # Get workspace info +chatbotx workspaces get # Get workspace info ``` --- -### `workspace-members` +### `members` ```bash -chatbotx workspace-members list # List workspace members +chatbotx members list # List workspace members + # [--page --perPage --sort --keyword] +chatbotx members get # Get workspace member by id ``` --- @@ -93,15 +95,16 @@ chatbotx workspace-members list # List workspace members ### `channels` ```bash -chatbotx channels list # List channels +chatbotx channels list # List channels + # [--includes --page --perPage] ``` --- -### `inbox-teams` +### `teams` ```bash -chatbotx inbox-teams list # List inbox teams +chatbotx teams list # List teams ``` --- @@ -109,12 +112,11 @@ chatbotx inbox-teams list # List inbox teams ### `tags` ```bash -chatbotx tags list # Get all tags -chatbotx tags create --name # Create a new tag -chatbotx tags show # Get tag by ID -chatbotx tags update --name # Update tag name -chatbotx tags delete # Delete tag -chatbotx tags find-by-name # Find tag by name +chatbotx tags list # Get all tags +chatbotx tags create --name # Create a new tag +chatbotx tags get # Get tag by id or name +chatbotx tags update --name # Update tag +chatbotx tags delete # Delete tag ``` --- @@ -122,10 +124,11 @@ chatbotx tags find-by-name # Find tag by name ### `custom-fields` ```bash -chatbotx custom-fields list # Get all custom fields -chatbotx custom-fields create --name ... # Create a custom field -chatbotx custom-fields show # Get custom field by ID -chatbotx custom-fields find-by-name # Find custom field by name +chatbotx custom-fields list # Get all custom fields +chatbotx custom-fields create --name --type +chatbotx custom-fields get # Get custom field by id or name +chatbotx custom-fields update --name # [--description --folderId] +chatbotx custom-fields delete ``` --- @@ -133,11 +136,15 @@ chatbotx custom-fields find-by-name # Find custom field by name ### `bot-fields` ```bash -chatbotx bot-fields list # Get all bot fields -chatbotx bot-fields create ... # Create a bot field -chatbotx bot-fields show # Get bot field by key/name -chatbotx bot-fields update --value # Update bot field value -chatbotx bot-fields delete # Unset bot field value +chatbotx bot-fields list # Get all bot fields +chatbotx bot-fields create --name --type --value --description + # [--folderId] +chatbotx bot-fields update --fields # Set multiple bot field values +chatbotx bot-fields bulk-update --fields # Bulk update values by id or name + # fields: JSON array of {id,value} or {name,value} +chatbotx bot-fields get # Get bot field by id or name +chatbotx bot-fields update --value # Set bot field value by id or name +chatbotx bot-fields delete # Unset bot field value ``` --- @@ -146,24 +153,36 @@ chatbotx bot-fields delete # Unset bot field value ```bash # Basic CRUD -chatbotx contacts create --phoneNumber --email --gender -chatbotx contacts show -chatbotx contacts find-by-custom-field --customFieldId --value +chatbotx contacts list # [--page --perPage --sort --keyword ...] +chatbotx contacts create --phoneNumber --email --gender + # [--firstName --lastName] +chatbotx contacts get +chatbotx contacts update +chatbotx contacts delete +chatbotx contacts find-by-custom-field # [--customFieldId --value] +chatbotx contacts import --fileId --channel --inboxId + # [--countryCode --phoneNumber --fieldMapping ...] # Tags -chatbotx contacts list-tags -chatbotx contacts add-tag -chatbotx contacts delete-tag +chatbotx contacts tags list # Get all tags on a contact +chatbotx contacts tag add --tagIds +chatbotx contacts tag delete --tagIds # Custom fields -chatbotx contacts list-custom-fields -chatbotx contacts show-custom-field -chatbotx contacts add-custom-field --value -chatbotx contacts delete-custom-field - -# Messaging -chatbotx contacts add-message --text -chatbotx contacts add-message --flowId --nodeId +chatbotx contacts custom-fields list # Get all custom fields from a contact +chatbotx contacts custom-fields update --fields # Set multiple values +chatbotx contacts custom-field get +chatbotx contacts custom-field add --value +chatbotx contacts custom-field delete # Delete by id or name + +# Block / Unblock +chatbotx contacts block +chatbotx contacts unblock + +# Messaging & Automation +chatbotx contacts message send # [--text --files --flowId --nodeId --inboxId] +chatbotx contacts flow add --flowId # [--inboxId] +chatbotx contacts auto-replie add --keyword # [--inboxId] ``` --- @@ -171,7 +190,8 @@ chatbotx contacts add-message --flowId --nodeId ### `conversations` ```bash -chatbotx conversations create ... # Create a conversation +chatbotx conversations list # [--botCategory --assignedId --channel --status + # --keyword --botEnabled --cursor --perPage --sort] ``` --- @@ -179,7 +199,7 @@ chatbotx conversations create ... # Create a conversation ### `broadcasts` ```bash -chatbotx broadcasts list # Get all broadcasts +chatbotx broadcasts list ``` --- @@ -187,7 +207,7 @@ chatbotx broadcasts list # Get all broadcasts ### `flows` ```bash -chatbotx flows list # Get all flows +chatbotx flows list ``` --- @@ -195,8 +215,8 @@ chatbotx flows list # Get all flows ### `sequences` ```bash -chatbotx sequences list # List sequences -chatbotx sequences show # Get sequence details +chatbotx sequences list # [--page --perPage --sort] +chatbotx sequences get ``` --- @@ -204,15 +224,55 @@ chatbotx sequences show # Get sequence details ### `saved-replies` ```bash -chatbotx saved-replies list # List saved replies +chatbotx saved-replies list +``` + +--- + +### `template-messages` + +```bash +chatbotx template-messages list # [--inboxId --integrationWhatsappId --status] +``` + +--- + +### `ai-agents` + +```bash +chatbotx ai-agents list +``` + +--- + +### `integrations` + +```bash +chatbotx integrations list +``` + +--- + +### `keywords` + +```bash +chatbotx keywords list # List keywords (automated responses) +``` + +--- + +### `triggers` + +```bash +chatbotx triggers list ``` --- -### `whatsapp-message-templates` +### `webhooks` ```bash -chatbotx whatsapp-message-templates list # List WhatsApp message templates +chatbotx webhooks list ``` --- @@ -220,7 +280,7 @@ chatbotx whatsapp-message-templates list # List WhatsApp message templates ### `error-logs` ```bash -chatbotx error-logs list # List error logs +chatbotx error-logs list # [--page --perPage --sort --keyword] ``` --- @@ -249,6 +309,7 @@ CHATBOTX_SPEC_CACHE_TTL_SECONDS=300 chatbotx tags list ```bash chatbotx --help # List all command groups -chatbotx tags --help # List actions for a group -chatbotx tags create --help # Show options for a specific action +chatbotx contacts --help # List actions for a group +chatbotx contacts message --help # List subactions +chatbotx contacts message send --help # Show options for a specific action ``` diff --git a/apps/cli/package.json b/apps/cli/package.json index 149eca149..64fc6a4a3 100644 --- a/apps/cli/package.json +++ b/apps/cli/package.json @@ -1,17 +1,22 @@ { - "name": "chatbotx-cli", - "version": "0.1.0", + "name": "chatbotx", + "version": "0.1.1", "description": "ChatbotX CLI - Command line interface for the ChatbotX API", "main": "dist/index.cjs", "type": "module", + "files": [ + "dist", + "README.md", + "LICENSE" + ], "bin": { "chatbotx": "./dist/index.cjs" }, "scripts": { "build": "tsdown", "check-types": "tsc --noEmit", - "dev:cli": "dotenv -e .env -- tsx src/index.ts", - "publish": "pnpm build && pnpm publish --access public --no-git-checks", + "dev:cli": "tsx src/index.ts", + "release": "pnpm build && pnpm publish --access public --no-git-checks", "start": "node ./dist/index.cjs", "test": "vitest run --passWithNoTests", "test:watch": "vitest" @@ -32,7 +37,6 @@ "devDependencies": { "@types/node": "~24.12.2", "@types/yargs": "^17.0.35", - "dotenv-cli": "^11.0.0", "tsdown": "0.21.10", "tsx": "^4.0.0", "typescript": "^5", diff --git a/apps/cli/src/dynamic-executor.ts b/apps/cli/src/dynamic-executor.ts index cc2524db1..3aacb2abf 100644 --- a/apps/cli/src/dynamic-executor.ts +++ b/apps/cli/src/dynamic-executor.ts @@ -31,11 +31,22 @@ export async function executeDynamicCommand( } } - const body: Record = {} + const body: Record = {} for (const key of tool.bodyParamNames) { const value = params[key] if (value !== undefined) { - body[key] = value + const propSchema = tool.inputSchema.properties[key] as + | { type?: string } + | undefined + if (propSchema?.type === "array" || propSchema?.type === "object") { + try { + body[key] = JSON.parse(value) + } catch { + body[key] = value + } + } else { + body[key] = value + } } } diff --git a/apps/cli/src/index.ts b/apps/cli/src/index.ts index 0ce80942f..3833d41ff 100644 --- a/apps/cli/src/index.ts +++ b/apps/cli/src/index.ts @@ -54,21 +54,45 @@ const buildActionHandler = await executeDynamicCommand(tool, params, config) } +type ActionEntry = { tool: DynamicTool; name: string } +type GroupEntry = { + actions: Record + subgroups: Record> +} + +const registerActionsOnCli = ( + groupCli: Argv, + actions: Record, + config: { apiKey: string; apiUrl: string }, +): void => { + for (const [actionName, { tool, name }] of Object.entries(actions)) { + const commandStr = buildActionCommandString(actionName, tool) + groupCli.command( + commandStr, + name, + (actionCli: Argv) => registerActionArgs(actionCli, tool), + async (argv) => + buildActionHandler(tool, config)(argv as Record), + ) + } +} + const registerGroupCommand = ( cli: ReturnType, groupName: string, - actions: Record, + group: GroupEntry, config: { apiKey: string; apiUrl: string }, ): void => { cli.command(groupName, `${groupName} commands`, (groupCli: Argv) => { - for (const [actionName, { tool, name }] of Object.entries(actions)) { - const commandStr = buildActionCommandString(actionName, tool) + registerActionsOnCli(groupCli, group.actions, config) + for (const [subgroupName, actions] of Object.entries(group.subgroups)) { groupCli.command( - commandStr, - name, - (actionCli: Argv) => registerActionArgs(actionCli, tool), - async (argv) => - buildActionHandler(tool, config)(argv as Record), + subgroupName, + `${subgroupName} commands`, + (subgroupCli: Argv) => { + registerActionsOnCli(subgroupCli, actions, config) + return subgroupCli.demandCommand(1, "You need at least one action") + }, ) } return groupCli.demandCommand(1, "You need at least one action") @@ -109,22 +133,30 @@ const registerConfigCommand = (cli: ReturnType): void => { const toolsToCommands = ( tools: DynamicTool[], _config: { apiKey: string; apiUrl: string }, -): Record> => { - const grouped: Record< - string, - Record - > = {} +): Record => { + const grouped: Record = {} for (const tool of tools) { - const colonIndex = tool.commandName.indexOf(":") - const group = tool.commandName.slice(0, colonIndex) - const action = tool.commandName.slice(colonIndex + 1) + const parts = tool.commandName.split(":") + const group = parts[0] if (!grouped[group]) { - grouped[group] = {} + grouped[group] = { actions: {}, subgroups: {} } } - grouped[group][action] = { tool, name: tool.description } + if (parts.length === 3) { + const [, subgroup, action] = parts + if (!grouped[group].subgroups[subgroup]) { + grouped[group].subgroups[subgroup] = {} + } + grouped[group].subgroups[subgroup][action] = { + tool, + name: tool.description, + } + } else { + const action = parts.slice(1).join(":") + grouped[group].actions[action] = { tool, name: tool.description } + } } return grouped diff --git a/apps/cli/src/openapi-loader.ts b/apps/cli/src/openapi-loader.ts index 6ed596cad..fa53fde90 100644 --- a/apps/cli/src/openapi-loader.ts +++ b/apps/cli/src/openapi-loader.ts @@ -72,6 +72,15 @@ const CACHE_FILE = join(CACHE_DIR, "openapi-cache.json") const DEFAULT_TTL_SECONDS = 3600 const HTTP_METHODS = new Set(["get", "post", "put", "patch", "delete"]) + +const POST_VERB_OVERRIDES: Record = { + message: "send", +} + +// Sub-paths that are actions themselves (not nouns), collapse to group:action (2-level) +const ACTION_SUBPATHS = new Set(["block", "unblock"]) +// Singleton resources — GET on the collection returns a single object, use "get" not "list" +const SINGLETON_RESOURCES = new Set(["workspaces"]) const V1_PREFIX_RE = /^\/v1\// const LEADING_SLASH_RE = /^\// @@ -129,7 +138,7 @@ export function pathAndMethodToCommandName( if (segments.length === 1) { const actions: Record = { - get: "list", + get: SINGLETON_RESOURCES.has(group) ? "get" : "list", post: "create", put: "update", patch: "update", @@ -152,7 +161,7 @@ export function pathAndMethodToCommandName( if (remainingAfterResource.length === 0) { const actions: Record = { - get: "show", + get: "get", put: "update", patch: "update", delete: "delete", @@ -172,18 +181,24 @@ export function pathAndMethodToCommandName( : subResource if (m === "get") { - return `${group}:${isLastRemainderParam ? `show-${singular}` : `list-${subResource}`}` + const sub = isLastRemainderParam ? singular : subResource + const verb = isLastRemainderParam ? "get" : "list" + return `${group}:${sub}:${verb}` } if (m === "post") { - return `${group}:add-${singular}` + if (ACTION_SUBPATHS.has(subResource ?? "")) { + return `${group}:${subResource}` + } + const verb = POST_VERB_OVERRIDES[singular ?? ""] ?? "add" + return `${group}:${singular}:${verb}` } if (m === "delete") { - return `${group}:delete-${singular}` + return `${group}:${singular}:delete` } if (m === "put" || m === "patch") { - return `${group}:update-${subResource}` + return `${group}:${subResource}:update` } - return `${group}:${m}-${subResource}` + return `${group}:${subResource}:${m}` } function buildInputSchema(operation: OpenAPIOperation): { diff --git a/apps/mcp-server/README.md b/apps/mcp-server/README.md index 92d3009b2..6246d2ee5 100644 --- a/apps/mcp-server/README.md +++ b/apps/mcp-server/README.md @@ -6,6 +6,166 @@ On startup the server fetches `{CHATBOTX_API_URL}/api/public-spec.json` and registers one MCP tool per API operation. Adding a new API endpoint in ChatbotX automatically makes it available as a tool on the next server restart — no code changes required. +## Available tools + +Tool names are derived from the OpenAPI `operationId` converted to `snake_case`. The current set of tools: + +### Workspace + +| Tool | Description | +|---|---| +| `get_workspace_workspace_token_api` | Get workspace | + +### Channels + +| Tool | Description | +|---|---| +| `list_channels_workspace_token_api` | List channels | + +### Members + +| Tool | Description | +|---|---| +| `list_members_workspace_token_api` | List workspace members | +| `get_member_workspace_token_api` | Get workspace member by id | + +### Teams + +| Tool | Description | +|---|---| +| `list_teams_workspace_token_api` | List teams | + +### Tags + +| Tool | Description | +|---|---| +| `list_tags_workspace_token_api` | Get all tags | +| `create_tag_workspace_token_api` | Create a new tag | +| `get_tag_workspace_token_api` | Get tag by id or name | +| `update_tag_workspace_token_api` | Update tag | +| `delete_tag_workspace_token_api` | Delete tag | + +### Custom Fields + +| Tool | Description | +|---|---| +| `list_custom_fields_workspace_token_api` | Get all custom fields | +| `create_custom_field_workspace_token_api` | Create a custom field | +| `get_custom_field_workspace_token_api` | Get custom field by id or name | +| `update_custom_field_workspace_token_api` | Update custom field | +| `delete_custom_field_workspace_token_api` | Delete custom field | + +### Bot Fields + +| Tool | Description | +|---|---| +| `list_bot_fields_workspace_token_api` | Get all bot fields | +| `create_bot_field_workspace_token_api` | Create a new bot field | +| `set_bot_fields_workspace_token_api` | Set multiple bot field values | +| `bulk_update_bot_fields_workspace_token_api` | Bulk update bot field values by id or name | +| `get_bot_field_workspace_token_api` | Get bot field by id or name | +| `set_bot_field_workspace_token_api` | Set bot field value by id or name | +| `delete_bot_fields_workspace_token_api` | Unset the value of the bot field by id or name | + +### Contacts + +| Tool | Description | +|---|---| +| `list_contacts_workspace_token_api` | List contacts | +| `create_contact_workspace_token_api` | Create a contact | +| `get_contact_workspace_token_api` | Get contact by contact id | +| `update_contact_workspace_token_api` | Update contact fields | +| `delete_contact_workspace_token_api` | Delete a contact | +| `filter_contacts_workspace_token_api` | List contacts by custom field | +| `import_contacts_workspace_token_api` | Import contacts from a file | +| `list_contact_tags_workspace_token_api` | Get all tags added to this contact | +| `add_contact_tags_workspace_token_api` | Add tags to the contact | +| `remove_contact_tags_workspace_token_api` | Remove tags from the contact | +| `list_contact_custom_fields_workspace_token_api` | Get all custom fields from a contact | +| `set_contact_custom_fields_workspace_token_api` | Set multiple custom field values for a contact | +| `clear_contact_custom_fields_workspace_token_api` | Clear all custom fields from a contact | +| `get_contact_custom_field_workspace_token_api` | Get contact custom field value | +| `set_contact_custom_field_workspace_token_api` | Set contact custom field value | +| `clear_contact_custom_field_workspace_token_api` | Delete contact custom field by id or name | +| `block_contact_workspace_token_api` | Block a contact | +| `unblock_contact_workspace_token_api` | Unblock a contact | +| `send_message_workspace_token_api` | Send message to contact | +| `send_contact_flow_workspace_token_api` | Send flow to contact | +| `trigger_auto_reply_workspace_token_api` | Trigger auto reply for contact | + +### Conversations + +| Tool | Description | +|---|---| +| `list_conversations_workspace_token_api` | List conversations | + +### Broadcasts + +| Tool | Description | +|---|---| +| `list_broadcasts_workspace_token_api` | Get all broadcasts | + +### Flows + +| Tool | Description | +|---|---| +| `list_flows_workspace_token_api` | Get all flows | + +### Sequences + +| Tool | Description | +|---|---| +| `list_sequences_workspace_token_api` | List sequences | +| `get_sequence_workspace_token_api` | Get sequence details | + +### Saved Replies + +| Tool | Description | +|---|---| +| `list_saved_replies_workspace_token_api` | List saved replies | + +### Template Messages + +| Tool | Description | +|---|---| +| `list_template_messages_workspace_token_api` | List template messages | + +### AI Agents + +| Tool | Description | +|---|---| +| `list_aiagents_workspace_token_api` | List AI agents | + +### Integrations + +| Tool | Description | +|---|---| +| `list_integrations_workspace_token_api` | List integrations | + +### Keywords + +| Tool | Description | +|---|---| +| `list_keywords_workspace_token_api` | List keywords (automated responses) | + +### Triggers + +| Tool | Description | +|---|---| +| `list_triggers_workspace_token_api` | List triggers | + +### Webhooks + +| Tool | Description | +|---|---| +| `list_webhooks_workspace_token_api` | List webhooks | + +### Error Logs + +| Tool | Description | +|---|---| +| `list_error_logs_workspace_token_api` | List error logs | + ## Prerequisites - Node.js >= 18 diff --git a/apps/mcp-server/SKILL.md b/apps/mcp-server/SKILL.md new file mode 100644 index 000000000..a0068b2a2 --- /dev/null +++ b/apps/mcp-server/SKILL.md @@ -0,0 +1,295 @@ +--- +name: chatbotx +description: ChatbotX is an open-source chat marketing platform for managing contacts, conversations, flows, broadcasts, and sequences across WhatsApp, Messenger, Instagram, TikTok, Telegram, Zalo OA, Email, and Webchat. An alternative to ManyChat, Chatfuel, Wati, Respond, etc... +version: 0.1.1 +emoji: 🤖 +homepage: https://github.com/ChatbotXIO/ChatbotX +metadata: + openclaw: + primaryEnv: CHATBOTX_API_KEY + requires: + env: + - CHATBOTX_API_KEY + - CHATBOTX_API_URL + envVars: + - name: CHATBOTX_API_KEY + description: Workspace API token (Settings → Developer → API Keys) + required: true + - name: CHATBOTX_API_URL + description: Base URL of your ChatbotX instance, e.g. https://app.chatbotx.io/api + required: true + - name: CHATBOTX_ALLOW_SELF_SIGNED_CERT + description: Set to true to disable TLS verification for self-hosted instances + required: false + os: + - macos + - linux + - windows +--- + +# ChatbotX Agent Documentation + +**ChatbotX** is an open-source omnichannel chatbot platform for managing contacts, conversations, flows, broadcasts, and sequences across channels like WhatsApp, Messenger, Telegram, and more. + +## Key Highlights + +**Two Critical Rules:** +1. Authenticate before executing any commands — every API call requires a workspace token +2. Always resolve IDs first — commands like `contacts tag add` require both a `contactId` and a `tagId`; fetch them with `list` commands before using them + +**Integration Modes:** +- **CLI** (`chatbotx`) — terminal-based automation and scripting +- **MCP Server** — gives AI agents (Claude, Cursor, ChatGPT) direct tool access via Model Context Protocol + +--- + +## Authentication + +### CLI + +Save credentials once — they persist across all future runs: + +```bash +chatbotx config set --apiKey --apiUrl https://app.chatbotx.io/api +``` + +Or via environment variables (no config file needed): + +```bash +export CHATBOTX_API_KEY=your_workspace_token +export CHATBOTX_API_URL=https://app.chatbotx.io/api +``` + +For local instances with self-signed certificates: + +```bash +export CHATBOTX_ALLOW_SELF_SIGNED_CERT=true +``` + +Find your workspace token at: **Settings → Developer → API Keys** + +### MCP Server (stdio — recommended for local use) + +```bash +claude mcp add chatbotx \ + -e CHATBOTX_API_KEY= \ + -e CHATBOTX_API_URL=https://your-instance.com \ + -e CHATBOTX_MCP_TRANSPORT=stdio \ + -s user \ + -- node /path/to/dist/index.mjs +``` + +### MCP Server (SSE — for shared/remote access) + +```bash +claude mcp add chatbotx \ + -t sse \ + -H "x-workspace-token: " \ + -s user \ + "https://your-mcp-server.com/sse" +``` + +--- + +## Core Workflow + +The platform follows a six-step pattern: + +1. **Authenticate** — set API key and URL +2. **Discover** — list channels, tags, custom fields, flows, sequences to get IDs +3. **Find contacts** — list or search contacts to get `contactId` +4. **Act** — create, update, tag, message, block/unblock contacts +5. **Monitor** — check conversations, broadcasts, error logs +6. **Automate** — trigger flows or sequences for a contact via messaging commands + +--- + +## CLI Commands + +### Config + +```bash +chatbotx config set --apiKey --apiUrl +``` + +### Workspace & Members + +```bash +chatbotx workspaces get +chatbotx members list # [--page --perPage --sort --keyword] +chatbotx members get +chatbotx channels list # [--includes --page --perPage] +chatbotx teams list +``` + +### Tags + +```bash +chatbotx tags list +chatbotx tags create --name +chatbotx tags get # accepts id or name +chatbotx tags update --name +chatbotx tags delete +``` + +### Custom Fields + +```bash +chatbotx custom-fields list +chatbotx custom-fields create --name --type +chatbotx custom-fields get # accepts id or name +chatbotx custom-fields update --name # [--description --folderId] +chatbotx custom-fields delete +``` + +### Bot Fields + +```bash +chatbotx bot-fields list +chatbotx bot-fields create --name --type --value --description +chatbotx bot-fields update --fields # set multiple values +chatbotx bot-fields get # accepts id or name +chatbotx bot-fields update --value # set single value by id or name +chatbotx bot-fields delete +``` + +### Contacts + +```bash +# CRUD +chatbotx contacts list # [--page --perPage --sort --keyword ...] +chatbotx contacts create --phoneNumber

--email --gender # [--firstName --lastName] +chatbotx contacts get +chatbotx contacts update +chatbotx contacts delete +chatbotx contacts find-by-custom-field # [--customFieldId --value] +chatbotx contacts import --fileId --channel --inboxId + +# Tags on a contact +chatbotx contacts tags list +chatbotx contacts tag add --tagIds +chatbotx contacts tag delete --tagIds + +# Custom fields on a contact +chatbotx contacts custom-fields list +chatbotx contacts custom-fields update --fields +chatbotx contacts custom-field get +chatbotx contacts custom-field add --value +chatbotx contacts custom-field delete + +# Block / Unblock +chatbotx contacts block +chatbotx contacts unblock + +# Messaging & Automation +chatbotx contacts message send # [--text --files --flowId --nodeId --inboxId] +chatbotx contacts flow add --flowId # [--inboxId] +chatbotx contacts auto-replie add --keyword # [--inboxId] +``` + +### Conversations & Broadcasts + +```bash +chatbotx conversations list # [--botCategory --assignedId --channel --status --keyword] +chatbotx broadcasts list +``` + +### Flows & Sequences + +```bash +chatbotx flows list +chatbotx sequences list # [--page --perPage --sort] +chatbotx sequences get +``` + +### Other + +```bash +chatbotx saved-replies list +chatbotx template-messages list # [--inboxId --integrationWhatsappId --status] +chatbotx ai-agents list +chatbotx integrations list +chatbotx keywords list +chatbotx triggers list +chatbotx webhooks list +chatbotx error-logs list # [--page --perPage --sort --keyword] +``` + +--- + +## MCP Tools (for AI agents) + +Tool names are the OpenAPI `operationId` converted to `snake_case` (full name including `_workspace_token_api` suffix). + +| Category | Tool | +|---|---| +| Workspace | `get_workspace_workspace_token_api` | +| Channels | `list_channels_workspace_token_api` | +| Members | `list_members_workspace_token_api`, `get_member_workspace_token_api` | +| Teams | `list_teams_workspace_token_api` | +| Tags | `list_tags_workspace_token_api`, `create_tag_workspace_token_api`, `get_tag_workspace_token_api`, `update_tag_workspace_token_api`, `delete_tag_workspace_token_api` | +| Custom Fields | `list_custom_fields_workspace_token_api`, `create_custom_field_workspace_token_api`, `get_custom_field_workspace_token_api`, `update_custom_field_workspace_token_api`, `delete_custom_field_workspace_token_api` | +| Bot Fields | `list_bot_fields_workspace_token_api`, `create_bot_field_workspace_token_api`, `set_bot_fields_workspace_token_api`, `bulk_update_bot_fields_workspace_token_api`, `get_bot_field_workspace_token_api`, `set_bot_field_workspace_token_api`, `delete_bot_fields_workspace_token_api` | +| Contacts | `list_contacts_workspace_token_api`, `create_contact_workspace_token_api`, `get_contact_workspace_token_api`, `update_contact_workspace_token_api`, `delete_contact_workspace_token_api`, `filter_contacts_workspace_token_api`, `import_contacts_workspace_token_api` | +| Contact Tags | `list_contact_tags_workspace_token_api`, `add_contact_tags_workspace_token_api`, `remove_contact_tags_workspace_token_api` | +| Contact Custom Fields | `list_contact_custom_fields_workspace_token_api`, `set_contact_custom_fields_workspace_token_api`, `clear_contact_custom_fields_workspace_token_api`, `get_contact_custom_field_workspace_token_api`, `set_contact_custom_field_workspace_token_api`, `clear_contact_custom_field_workspace_token_api` | +| Contact Actions | `block_contact_workspace_token_api`, `unblock_contact_workspace_token_api`, `send_message_workspace_token_api`, `send_contact_flow_workspace_token_api`, `trigger_auto_reply_workspace_token_api` | +| Conversations | `list_conversations_workspace_token_api` | +| Broadcasts | `list_broadcasts_workspace_token_api` | +| Flows | `list_flows_workspace_token_api` | +| Sequences | `list_sequences_workspace_token_api`, `get_sequence_workspace_token_api` | +| Saved Replies | `list_saved_replies_workspace_token_api` | +| Template Messages | `list_template_messages_workspace_token_api` | +| AI Agents | `list_aiagents_workspace_token_api` | +| Integrations | `list_integrations_workspace_token_api` | +| Keywords | `list_keywords_workspace_token_api` | +| Triggers | `list_triggers_workspace_token_api` | +| Webhooks | `list_webhooks_workspace_token_api` | +| Error Logs | `list_error_logs_workspace_token_api` | + +Tools are auto-generated from the OpenAPI spec — new API endpoints appear automatically on server restart. + +--- + +## Common Patterns + +**Tag a contact by name (not ID):** +```bash +TAG_ID=$(chatbotx tags get "vip" --json | jq -r '.id') +chatbotx contacts tag add --tagIds $TAG_ID +``` + +**Send a flow to a contact:** +```bash +FLOW_ID=$(chatbotx flows list --json | jq -r '.[] | select(.name=="Welcome") | .id') +chatbotx contacts flow add --flowId $FLOW_ID +``` + +**Set a custom field value on a contact:** +```bash +FIELD_ID=$(chatbotx custom-fields get "plan" --json | jq -r '.id') +chatbotx contacts custom-field add $FIELD_ID --value "premium" +``` + +--- + +## Caching + +The CLI caches the API spec at `~/.chatbotX/openapi-cache.json` for 1 hour. Force refresh when new APIs are available: + +```bash +chatbotx --refresh-spec +# or +rm ~/.chatbotX/openapi-cache.json +``` + +--- + +## Getting Help + +```bash +chatbotx --help +chatbotx contacts --help +chatbotx contacts message --help +chatbotx contacts message send --help +``` diff --git a/apps/mcp-server/src/openapi-loader.ts b/apps/mcp-server/src/openapi-loader.ts index 4df9f3075..b231eb1dd 100644 --- a/apps/mcp-server/src/openapi-loader.ts +++ b/apps/mcp-server/src/openapi-loader.ts @@ -62,6 +62,7 @@ export interface DynamicTool { let cachedTools: DynamicTool[] | null = null const HTTP_METHODS = new Set(["get", "post", "put", "patch", "delete"]) +const WORKSPACE_TOKEN_API_SUFFIX_RE = /_workspace_token_api$/ function toSnakeCase(str: string): string { return str @@ -167,7 +168,10 @@ export async function loadOpenApiSpec(): Promise { buildInputSchema(operation) tools.push({ - name: toSnakeCase(operation.operationId), + name: toSnakeCase(operation.operationId).replace( + WORKSPACE_TOKEN_API_SUFFIX_RE, + "", + ), description: operation.summary ?? operation.description ?? operation.operationId, inputSchema: schema, diff --git a/packages/business/src/ai-agent/index.ts b/packages/business/src/ai-agent/index.ts new file mode 100644 index 000000000..9376fea80 --- /dev/null +++ b/packages/business/src/ai-agent/index.ts @@ -0,0 +1 @@ +export * from "./service" diff --git a/apps/builder/src/features/ai-agents/ai-agent.service.ts b/packages/business/src/ai-agent/service.ts similarity index 75% rename from apps/builder/src/features/ai-agents/ai-agent.service.ts rename to packages/business/src/ai-agent/service.ts index 5729cbcbb..ef346b72e 100644 --- a/apps/builder/src/features/ai-agents/ai-agent.service.ts +++ b/packages/business/src/ai-agent/service.ts @@ -1,4 +1,3 @@ -import { notFoundException } from "@chatbotx.io/business/errors" import { and, type DatabaseClient, @@ -16,26 +15,58 @@ import { } from "@chatbotx.io/database/utils" import { withCache } from "@chatbotx.io/redis" import { createId } from "@chatbotx.io/utils" -import type { PaginatedResponse } from "@/features/common/schemas/pagination" -import { BaseService } from "../common/base.service" -import { normalizeWebSearchDomains } from "./lib/web-search-tool" -import type { - CreateAIAgentRequest, - UpdateAIAgentRequest, -} from "./schemas/action" -import type { ListAIAgentsRequest } from "./schemas/query" +import { BaseService } from "../base.service" +import { notFoundException } from "../errors" +import type { PaginatedResult } from "../types" const AI_AGENTS_LIST_CACHE_TTL_SECONDS = 5 * 60 type FindByProps = { tx?: DatabaseClient where: Partial<{ - id?: RelationsFieldFilter - workspaceId?: RelationsFieldFilter - name?: RelationsFieldFilter + id: RelationsFieldFilter + workspaceId: RelationsFieldFilter + name: RelationsFieldFilter }> } +type WebSearchAuthorizedDomain = { value: string } + +function normalizeWebSearchDomains( + domains?: WebSearchAuthorizedDomain[] | null, +): string[] { + const result = new Set() + for (const domain of domains ?? []) { + const normalized = domain.value.trim().toLowerCase() + if (normalized) { + result.add(normalized) + } + } + return Array.from(result) +} + +export type CreateAIAgentRequest = { + name: string + prompt: string + messages: Array<{ role: string; content: string }> + models: Array<{ provider: string; model: string }> + temperature: number + maxOutputTokens: number + tools: string[] + isDefault: boolean + webSearchAuthorizedDomains?: WebSearchAuthorizedDomain[] | null +} + +export type UpdateAIAgentRequest = Partial + +export type ListAIAgentsRequest = { + workspaceId: string + page: number + perPage: number + sort: Array<{ id: string; desc: boolean }> + name?: string +} + class AiAgentService extends BaseService { private getWorkspaceCacheTag(workspaceId: string): string { return `ai-agents:workspace:${workspaceId}` @@ -49,16 +80,17 @@ class AiAgentService extends BaseService { sort: JSON.stringify(input.sort), name: input.name, } - const sortedKeys = Object.keys(parts) - .filter((key) => parts[key] !== undefined) + const key = Object.keys(parts) + .filter((k) => parts[k] !== undefined) .sort() - const keyParts = sortedKeys.map((key) => `${key}:${parts[key]}`).join(":") - return `ai-agents:list:${keyParts}` + .map((k) => `${k}:${parts[k]}`) + .join(":") + return `ai-agents:list:${key}` } async listAIAgents( input: ListAIAgentsRequest, - ): Promise> { + ): Promise> { return await withCache( this.getListCacheKey(input), async () => { @@ -119,11 +151,7 @@ class AiAgentService extends BaseService { }) } - if (tx) { - await execute(tx) - } else { - await db.transaction(execute) - } + await (tx ? execute(tx) : db.transaction(execute)) await this.invalidateCacheTags(this.getWorkspaceCacheTag(workspaceId)) } diff --git a/packages/business/src/ai-function/index.ts b/packages/business/src/ai-function/index.ts new file mode 100644 index 000000000..9376fea80 --- /dev/null +++ b/packages/business/src/ai-function/index.ts @@ -0,0 +1 @@ +export * from "./service" diff --git a/apps/builder/src/features/ai-functions/ai-function.service.ts b/packages/business/src/ai-function/service.ts similarity index 88% rename from apps/builder/src/features/ai-functions/ai-function.service.ts rename to packages/business/src/ai-function/service.ts index a540c9a49..661811839 100644 --- a/apps/builder/src/features/ai-functions/ai-function.service.ts +++ b/packages/business/src/ai-function/service.ts @@ -1,4 +1,3 @@ -import { notFoundException } from "@chatbotx.io/business/errors" import { type DatabaseClient, db, @@ -8,11 +7,8 @@ import { import { aiFunctionModel } from "@chatbotx.io/database/schema" import type { AIFunctionModel } from "@chatbotx.io/database/types" import { createId } from "@chatbotx.io/utils" -import { BaseService } from "../common/base.service" -import type { - CreateAIFunctionRequest, - UpdateAIFunctionRequest, -} from "./schemas/action" +import { BaseService } from "../base.service" +import { notFoundException } from "../errors" type FindByProps = { tx?: DatabaseClient @@ -28,6 +24,16 @@ type TranslationFn = ( params?: Record, ) => string +export type CreateAIFunctionRequest = { + name: string + purpose?: string | null + dataCollect: Array<{ from: string; to: string }> + outputMessage?: string | null + triggerFlowId?: string | null +} + +export type UpdateAIFunctionRequest = CreateAIFunctionRequest + class AiFunctionService extends BaseService { async findBy(props: FindByProps): Promise { const { tx = db, where } = props diff --git a/packages/business/src/ai-mcp-server/index.ts b/packages/business/src/ai-mcp-server/index.ts new file mode 100644 index 000000000..9376fea80 --- /dev/null +++ b/packages/business/src/ai-mcp-server/index.ts @@ -0,0 +1 @@ +export * from "./service" diff --git a/apps/builder/src/features/ai-mcp-servers/ai-mcp-server.service.ts b/packages/business/src/ai-mcp-server/service.ts similarity index 82% rename from apps/builder/src/features/ai-mcp-servers/ai-mcp-server.service.ts rename to packages/business/src/ai-mcp-server/service.ts index 65f813d0c..b27bee095 100644 --- a/apps/builder/src/features/ai-mcp-servers/ai-mcp-server.service.ts +++ b/packages/business/src/ai-mcp-server/service.ts @@ -4,14 +4,11 @@ import { eq, type RelationsFieldFilter, } from "@chatbotx.io/database/client" +import type { AIMcpServerAuth } from "@chatbotx.io/database/partials" import { aiMCPServerModel } from "@chatbotx.io/database/schema" import type { AIMCPServerModel } from "@chatbotx.io/database/types" import { createId } from "@chatbotx.io/utils" -import { BaseService } from "../common/base.service" -import type { - CreateAIMcpServerRequest, - UpdateAIMcpServerRequest, -} from "./schemas/action" +import { BaseService } from "../base.service" type FindByProps = { tx?: DatabaseClient @@ -22,6 +19,16 @@ type FindByProps = { }> } +export type CreateAIMcpServerRequest = { + name: string + url: string + auth: AIMcpServerAuth + availableTools: Record + selectedTools: string[] +} + +export type UpdateAIMcpServerRequest = CreateAIMcpServerRequest + class AiMcpServerService extends BaseService { async findBy(props: FindByProps): Promise { const { tx = db, where } = props diff --git a/packages/business/src/automated-response/index.ts b/packages/business/src/automated-response/index.ts new file mode 100644 index 000000000..9376fea80 --- /dev/null +++ b/packages/business/src/automated-response/index.ts @@ -0,0 +1 @@ +export * from "./service" diff --git a/apps/builder/src/features/automated-response/automated-response.service.ts b/packages/business/src/automated-response/service.ts similarity index 78% rename from apps/builder/src/features/automated-response/automated-response.service.ts rename to packages/business/src/automated-response/service.ts index 6f7f5bf8e..12a22e0f4 100644 --- a/apps/builder/src/features/automated-response/automated-response.service.ts +++ b/packages/business/src/automated-response/service.ts @@ -1,5 +1,3 @@ -import { automatedResponseService as automatedResponseRuntime } from "@chatbotx.io/automated-response" -import { notFoundException } from "@chatbotx.io/business/errors" import { and, type DatabaseClient, @@ -7,6 +5,7 @@ import { eq, inArray, relationsFilterToSQL, + sql, } from "@chatbotx.io/database/client" import { rootFolderId } from "@chatbotx.io/database/partials" import { automatedResponseModel } from "@chatbotx.io/database/schema" @@ -15,15 +14,32 @@ import { getPaginationWithDefaults, parseOrderByAsObject, } from "@chatbotx.io/database/utils" +import { distributedStore } from "@chatbotx.io/redis" import { createId } from "@chatbotx.io/utils" -import { BaseService } from "../common/base.service" -import type { PaginatedResponse } from "../common/schemas/pagination" -import type { UpdateAutomatedResponseRequest } from "./schema/action" -import type { - FindAutomatedResponseRequest, - ListAutomatedResponsesRequest, -} from "./schema/query" -import type { AutomatedResponseResource } from "./schema/resource" +import { BaseService } from "../base.service" +import { notFoundException } from "../errors" +import type { PaginatedResult } from "../types" + +export type UpdateAutomatedResponseRequest = { + folderId?: string | null + keywords?: Array<{ value: string }> + text?: string | null + flowId?: string | null +} + +export type FindAutomatedResponseRequest = { + workspaceId: string + id: string +} + +export type ListAutomatedResponsesRequest = { + workspaceId: string + folderId?: string | null + page: number + perPage: number + keyword?: string | null + sort: Array<{ id: string; desc: boolean }> +} class AutomatedResponseService extends BaseService { async findBy( @@ -39,6 +55,23 @@ class AutomatedResponseService extends BaseService { }) } + async findByKeyword( + workspaceId: string, + keyword: string, + ): Promise { + const [result] = await db + .select() + .from(automatedResponseModel) + .where( + and( + eq(automatedResponseModel.workspaceId, workspaceId), + sql`${automatedResponseModel.keywords} @> ARRAY[${keyword}]::text[]`, + ), + ) + .limit(1) + return result + } + async findOrFail( input: FindAutomatedResponseRequest, tx?: DatabaseClient, @@ -52,7 +85,7 @@ class AutomatedResponseService extends BaseService { async list( input: ListAutomatedResponsesRequest, - ): Promise> { + ): Promise> { const where = { workspaceId: input.workspaceId, keywords: input.keyword @@ -173,7 +206,9 @@ class AutomatedResponseService extends BaseService { } async invalidateCache(workspaceId: string): Promise { - await automatedResponseRuntime.invalidateCache(workspaceId) + await distributedStore.delete( + `workspaces:${workspaceId}:automated-responses:all`, + ) } } diff --git a/packages/business/src/bot-field/service.ts b/packages/business/src/bot-field/service.ts index 33c1a7bb9..023326531 100644 --- a/packages/business/src/bot-field/service.ts +++ b/packages/business/src/bot-field/service.ts @@ -206,6 +206,21 @@ class BotFieldService extends BaseService { return updated } + async bulkUpdateByKeys(props: { + workspaceId: string + updates: Array<{ key: string; value: string }> + }): Promise { + await Promise.all( + props.updates.map(({ key, value }) => + this.updateByKey({ + workspaceId: props.workspaceId, + key, + data: { value }, + }), + ), + ) + } + async deleteByKey(props: { workspaceId: string key: string diff --git a/packages/business/src/contact-custom-field/service.ts b/packages/business/src/contact-custom-field/service.ts index df438609c..4205a2aa2 100644 --- a/packages/business/src/contact-custom-field/service.ts +++ b/packages/business/src/contact-custom-field/service.ts @@ -84,6 +84,16 @@ class ContactCustomFieldService extends BaseService { await this.invalidate({ workspaceId, contactId }) } + async clearByContactId(input: { + workspaceId: string + contactId: string + }): Promise { + await db + .delete(contactCustomFieldModel) + .where(eq(contactCustomFieldModel.contactId, input.contactId)) + await this.invalidate(input) + } + async deleteByKey(input: DeleteByKeyInput): Promise { const { workspaceId, contactId, keyword } = input diff --git a/packages/business/src/contact-inbox/service.ts b/packages/business/src/contact-inbox/service.ts index 8f84ae573..85636de21 100644 --- a/packages/business/src/contact-inbox/service.ts +++ b/packages/business/src/contact-inbox/service.ts @@ -1,8 +1,23 @@ import { type DatabaseClient, db } from "@chatbotx.io/database/client" -import type { ContactInboxModel } from "@chatbotx.io/database/types" +import type { + ContactInboxModel, + ContactModel, + ConversationModel, +} from "@chatbotx.io/database/types" import { withCache } from "@chatbotx.io/redis" import { BaseService } from "../base.service" +export type ContactInboxWithAnalytics = Pick< + ContactInboxModel, + "id" | "contactId" | "sourceId" | "channel" +> & { + contact: Pick< + ContactModel, + "id" | "firstName" | "lastName" | "fullName" | "avatar" + > + conversation: Pick | null +} + type FindByProps = { id: string contactId: string @@ -66,6 +81,25 @@ class ContactInboxService extends BaseService { ) } + async findManyByIds(ids: string[]): Promise { + return (await db.query.contactInboxModel.findMany({ + where: { id: { in: ids } }, + columns: { id: true, contactId: true, sourceId: true, channel: true }, + with: { + contact: { + columns: { + id: true, + firstName: true, + lastName: true, + fullName: true, + avatar: true, + }, + }, + conversation: { columns: { id: true } }, + }, + })) as ContactInboxWithAnalytics[] + } + async findRecentByContactId(props: { tx?: DatabaseClient contactId: string diff --git a/packages/business/src/conversation/service.ts b/packages/business/src/conversation/service.ts index 3469e8c17..883a7e046 100644 --- a/packages/business/src/conversation/service.ts +++ b/packages/business/src/conversation/service.ts @@ -87,6 +87,10 @@ type FindByProps = { workspaceId: string } +export type ConversationWithContactInboxes = ConversationModel & { + contactInboxes: ContactInboxModel[] +} + class ConversationService extends BaseService { protected readonly cachePrefix: string = "conversations" @@ -102,6 +106,18 @@ class ConversationService extends BaseService { }) } + async findByContactWithInboxes(props: { + contactId: string + workspaceId: string + tx?: DatabaseClient + }): Promise { + const { tx = db, contactId, workspaceId } = props + return (await tx.query.conversationModel.findFirst({ + where: { contactId, workspaceId }, + with: { contactInboxes: true }, + })) as ConversationWithContactInboxes | undefined + } + async findBy(props: { tx?: DatabaseClient where: Partial diff --git a/packages/business/src/flow/index.ts b/packages/business/src/flow/index.ts new file mode 100644 index 000000000..9376fea80 --- /dev/null +++ b/packages/business/src/flow/index.ts @@ -0,0 +1 @@ +export * from "./service" diff --git a/apps/builder/src/features/flows/flow.service.ts b/packages/business/src/flow/service.ts similarity index 93% rename from apps/builder/src/features/flows/flow.service.ts rename to packages/business/src/flow/service.ts index bd8bc1804..913621f22 100644 --- a/apps/builder/src/features/flows/flow.service.ts +++ b/packages/business/src/flow/service.ts @@ -1,6 +1,6 @@ import { type DatabaseClient, db } from "@chatbotx.io/database/client" import type { FlowModel } from "@chatbotx.io/database/types" -import { BaseService } from "../common/base.service" +import { BaseService } from "../base.service" class FlowService extends BaseService { async findBy( diff --git a/packages/business/src/index.ts b/packages/business/src/index.ts index 5b6e7fe32..ac003ece8 100644 --- a/packages/business/src/index.ts +++ b/packages/business/src/index.ts @@ -1,3 +1,7 @@ +export * from "./ai-agent" +export * from "./ai-function" +export * from "./ai-mcp-server" +export * from "./automated-response" export * from "./bot-field" export * from "./contact" export * from "./contact-custom-field" @@ -7,8 +11,10 @@ export * from "./conversation" export * from "./custom-field" export * from "./email-topic" export * from "./enterprise" +export * from "./flow" export * from "./folder" export * from "./inbox" +export * from "./integration" export * from "./integration-context" export * from "./integration-google-sheet" export * from "./integration-instagram" @@ -24,8 +30,10 @@ export * from "./platform-credential" export * from "./qr-code" export * from "./referral" export * from "./tag" +export * from "./trigger" export * from "./types" export * from "./user" export * from "./user-quota" +export * from "./webhook" export * from "./workspace" export * from "./workspace-member" diff --git a/packages/business/src/integration/index.ts b/packages/business/src/integration/index.ts new file mode 100644 index 000000000..9376fea80 --- /dev/null +++ b/packages/business/src/integration/index.ts @@ -0,0 +1 @@ +export * from "./service" diff --git a/packages/business/src/integration/service.ts b/packages/business/src/integration/service.ts new file mode 100644 index 000000000..56753cf59 --- /dev/null +++ b/packages/business/src/integration/service.ts @@ -0,0 +1,15 @@ +import { db, eq } from "@chatbotx.io/database/client" +import { integrationModel } from "@chatbotx.io/database/schema" +import type { IntegrationModel } from "@chatbotx.io/database/types" +import { BaseService } from "../base.service" + +class IntegrationService extends BaseService { + async listByWorkspaceId(workspaceId: string): Promise { + return await db + .select() + .from(integrationModel) + .where(eq(integrationModel.workspaceId, workspaceId)) + } +} + +export const integrationService = new IntegrationService() diff --git a/packages/business/src/trigger/index.ts b/packages/business/src/trigger/index.ts new file mode 100644 index 000000000..9376fea80 --- /dev/null +++ b/packages/business/src/trigger/index.ts @@ -0,0 +1 @@ +export * from "./service" diff --git a/packages/business/src/trigger/service.ts b/packages/business/src/trigger/service.ts new file mode 100644 index 000000000..419d0e9c7 --- /dev/null +++ b/packages/business/src/trigger/service.ts @@ -0,0 +1,15 @@ +import { db, eq } from "@chatbotx.io/database/client" +import { triggerModel } from "@chatbotx.io/database/schema" +import type { TriggerModel } from "@chatbotx.io/database/types" +import { BaseService } from "../base.service" + +class TriggerService extends BaseService { + async listByWorkspaceId(workspaceId: string): Promise { + return await db + .select() + .from(triggerModel) + .where(eq(triggerModel.workspaceId, workspaceId)) + } +} + +export const triggerService = new TriggerService() diff --git a/packages/business/src/webhook/index.ts b/packages/business/src/webhook/index.ts new file mode 100644 index 000000000..9376fea80 --- /dev/null +++ b/packages/business/src/webhook/index.ts @@ -0,0 +1 @@ +export * from "./service" diff --git a/packages/business/src/webhook/service.ts b/packages/business/src/webhook/service.ts new file mode 100644 index 000000000..be071878c --- /dev/null +++ b/packages/business/src/webhook/service.ts @@ -0,0 +1,15 @@ +import { db, eq } from "@chatbotx.io/database/client" +import { webhookModel } from "@chatbotx.io/database/schema" +import type { WebhookModel } from "@chatbotx.io/database/types" +import { BaseService } from "../base.service" + +class WebhookService extends BaseService { + async listByWorkspaceId(workspaceId: string): Promise { + return await db + .select() + .from(webhookModel) + .where(eq(webhookModel.workspaceId, workspaceId)) + } +} + +export const webhookService = new WebhookService() diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1f404b04e..646b3016e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -23,13 +23,13 @@ importers: version: link:packages/vitest-config '@types/node': specifier: 24.x - version: 24.13.0 + version: 24.13.1 dependency-cruiser: specifier: ^17.3.10 version: 17.4.3 knip: specifier: ^6.9.0 - version: 6.15.0 + version: 6.16.1 lefthook: specifier: ^2.1.6 version: 2.1.9 @@ -47,7 +47,7 @@ importers: version: 7.6.2 vitest: specifier: ^4.1.0 - version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.13.0)(@vitest/coverage-v8@4.1.8)(jsdom@25.0.1)(msw@2.14.6(@types/node@24.13.0)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) + version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.13.1)(@vitest/coverage-v8@4.1.8)(jsdom@25.0.1)(msw@2.14.6(@types/node@24.13.1)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.1)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) zod: specifier: ^4.3.6 version: 4.4.3 @@ -194,22 +194,22 @@ importers: version: 2.0.6(@hookform/resolvers@5.4.0(react-hook-form@7.77.0(react@19.2.5)))(next-safe-action@8.5.3(next@16.2.4(@opentelemetry/api@1.9.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(next@16.2.4(@opentelemetry/api@1.9.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react-hook-form@7.77.0(react@19.2.5))(react@19.2.5) '@orpc/client': specifier: ^1.14.0 - version: 1.14.4(@opentelemetry/api@1.9.1) + version: 1.14.5(@opentelemetry/api@1.9.1) '@orpc/json-schema': specifier: ^1.14.0 - version: 1.14.4(@opentelemetry/api@1.9.1)(ws@8.21.0) + version: 1.14.5(@opentelemetry/api@1.9.1)(ws@8.21.0) '@orpc/openapi': specifier: ^1.14.0 - version: 1.14.4(@opentelemetry/api@1.9.1)(ws@8.21.0) + version: 1.14.5(@opentelemetry/api@1.9.1)(ws@8.21.0) '@orpc/server': specifier: ^1.14.0 - version: 1.14.4(@opentelemetry/api@1.9.1)(ws@8.21.0) + version: 1.14.5(@opentelemetry/api@1.9.1)(ws@8.21.0) '@orpc/zod': specifier: ^1.14.0 - version: 1.14.4(@opentelemetry/api@1.9.1)(@orpc/contract@1.14.4(@opentelemetry/api@1.9.1))(@orpc/server@1.14.4(@opentelemetry/api@1.9.1)(ws@8.21.0))(ws@8.21.0)(zod@4.4.3) + version: 1.14.5(@opentelemetry/api@1.9.1)(@orpc/contract@1.14.5(@opentelemetry/api@1.9.1))(@orpc/server@1.14.5(@opentelemetry/api@1.9.1)(ws@8.21.0))(ws@8.21.0)(zod@4.4.3) '@radix-ui/react-slot': specifier: ^1.2.4 - version: 1.2.4(@types/react@19.2.14)(react@19.2.5) + version: 1.2.5(@types/react@19.2.14)(react@19.2.5) '@t3-oss/env-nextjs': specifier: ^0.13.11 version: 0.13.11(typescript@5.9.3)(zod@4.4.3) @@ -218,25 +218,25 @@ importers: version: 8.21.3(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@tiptap/extension-emoji': specifier: ^3.22.5 - version: 3.25.0(@tiptap/core@3.25.0(@tiptap/pm@3.25.0))(@tiptap/pm@3.25.0)(@tiptap/suggestion@3.25.0(@tiptap/core@3.25.0(@tiptap/pm@3.25.0))(@tiptap/pm@3.25.0))(emojibase@17.0.0) + version: 3.26.0(@tiptap/core@3.26.0(@tiptap/pm@3.26.0))(@tiptap/pm@3.26.0)(@tiptap/suggestion@3.26.0(@tiptap/core@3.26.0(@tiptap/pm@3.26.0))(@tiptap/pm@3.26.0))(emojibase@17.0.0) '@tiptap/extension-mention': specifier: ^3.22.5 - version: 3.25.0(@tiptap/core@3.25.0(@tiptap/pm@3.25.0))(@tiptap/pm@3.25.0)(@tiptap/suggestion@3.25.0(@tiptap/core@3.25.0(@tiptap/pm@3.25.0))(@tiptap/pm@3.25.0)) + version: 3.26.0(@tiptap/core@3.26.0(@tiptap/pm@3.26.0))(@tiptap/pm@3.26.0)(@tiptap/suggestion@3.26.0(@tiptap/core@3.26.0(@tiptap/pm@3.26.0))(@tiptap/pm@3.26.0)) '@tiptap/extension-placeholder': specifier: ^3.22.5 - version: 3.25.0(@tiptap/extensions@3.25.0(@tiptap/core@3.25.0(@tiptap/pm@3.25.0))(@tiptap/pm@3.25.0)) + version: 3.26.0(@tiptap/extensions@3.26.0(@tiptap/core@3.26.0(@tiptap/pm@3.26.0))(@tiptap/pm@3.26.0)) '@tiptap/pm': specifier: ^3.22.5 - version: 3.25.0 + version: 3.26.0 '@tiptap/react': specifier: ^3.22.5 - version: 3.25.0(@floating-ui/dom@1.7.6)(@tiptap/core@3.25.0(@tiptap/pm@3.25.0))(@tiptap/pm@3.25.0)(@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: 3.26.0(@floating-ui/dom@1.7.6)(@tiptap/core@3.26.0(@tiptap/pm@3.26.0))(@tiptap/pm@3.26.0)(@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) '@tiptap/starter-kit': specifier: ^3.22.5 - version: 3.25.0 + version: 3.26.0 '@tiptap/suggestion': specifier: ^3.22.5 - version: 3.25.0(@tiptap/core@3.25.0(@tiptap/pm@3.25.0))(@tiptap/pm@3.25.0) + version: 3.26.0(@tiptap/core@3.26.0(@tiptap/pm@3.26.0))(@tiptap/pm@3.26.0) '@types/html-to-text': specifier: ^9.0.4 version: 9.0.4 @@ -278,7 +278,7 @@ importers: version: 2.0.2 libphonenumber-js: specifier: ^1.12.42 - version: 1.13.5 + version: 1.13.6 lodash.unset: specifier: ^4.18.0 version: 4.18.0 @@ -344,7 +344,7 @@ importers: version: 2.0.7(react-dom@19.2.5(react@19.2.5))(react@19.2.5) stripe: specifier: ^22.1.0 - version: 22.2.0(@types/node@24.13.0) + version: 22.2.0(@types/node@24.13.1) swr: specifier: ^2.4.1 version: 2.4.1(react@19.2.5) @@ -369,7 +369,7 @@ importers: devDependencies: '@aws-sdk/client-s3': specifier: ^3.1039.0 - version: 3.1061.0 + version: 3.1063.0 '@chatbotx.io/typescript-config': specifier: workspace:* version: link:../../packages/typescript-config @@ -393,7 +393,7 @@ importers: version: 3.0.1 '@types/node': specifier: 24.x - version: 24.13.0 + version: 24.13.1 '@types/react': specifier: 19.2.14 version: 19.2.14 @@ -429,7 +429,7 @@ importers: version: 5.9.3 vitest: specifier: ^4.1.0 - version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.13.0)(@vitest/coverage-v8@4.1.8)(jsdom@25.0.1)(msw@2.14.6(@types/node@24.13.0)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) + version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.13.1)(@vitest/coverage-v8@4.1.8)(jsdom@25.0.1)(msw@2.14.6(@types/node@24.13.1)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.1)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) apps/cli: dependencies: @@ -445,13 +445,10 @@ importers: devDependencies: '@types/node': specifier: 24.x - version: 24.13.0 + version: 24.13.1 '@types/yargs': specifier: ^17.0.35 version: 17.0.35 - dotenv-cli: - specifier: ^11.0.0 - version: 11.0.0 tsdown: specifier: 0.21.10 version: 0.21.10(oxc-resolver@11.20.0)(typescript@5.9.3) @@ -463,7 +460,7 @@ importers: version: 5.9.3 vitest: specifier: ^4.1.0 - version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.13.0)(@vitest/coverage-v8@4.1.8)(jsdom@25.0.1)(msw@2.14.6(@types/node@24.13.0)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) + version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.13.1)(@vitest/coverage-v8@4.1.8)(jsdom@25.0.1)(msw@2.14.6(@types/node@24.13.1)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.1)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) apps/mcp-server: dependencies: @@ -482,7 +479,7 @@ importers: devDependencies: '@types/node': specifier: 24.x - version: 24.13.0 + version: 24.13.1 dotenv-cli: specifier: ^11.0.0 version: 11.0.0 @@ -497,7 +494,7 @@ importers: version: 5.9.3 vitest: specifier: ^4.1.0 - version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.13.0)(@vitest/coverage-v8@4.1.8)(jsdom@25.0.1)(msw@2.14.6(@types/node@24.13.0)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) + version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.13.1)(@vitest/coverage-v8@4.1.8)(jsdom@25.0.1)(msw@2.14.6(@types/node@24.13.1)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.1)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) apps/realtime: dependencies: @@ -528,13 +525,13 @@ importers: version: link:../../packages/vitest-config '@types/node': specifier: 24.x - version: 24.13.0 + version: 24.13.1 dotenv-cli: specifier: ^11.0.0 version: 11.0.0 vitest: specifier: ^4.1.0 - version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.13.0)(@vitest/coverage-v8@4.1.8)(jsdom@25.0.1)(msw@2.14.6(@types/node@24.13.0)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) + version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.13.1)(@vitest/coverage-v8@4.1.8)(jsdom@25.0.1)(msw@2.14.6(@types/node@24.13.1)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.1)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) apps/worker: dependencies: @@ -549,10 +546,10 @@ importers: version: 3.0.80(zod@4.4.3) '@ai-sdk/openai': specifier: ^3.0.54 - version: 3.0.67(zod@4.4.3) + version: 3.0.68(zod@4.4.3) '@aws-sdk/client-s3': specifier: ^3.1039.0 - version: 3.1061.0 + version: 3.1063.0 '@chatbotx.io/ai': specifier: workspace:* version: link:../../packages/ai @@ -660,7 +657,7 @@ importers: version: 0.13.11(typescript@5.9.3)(zod@4.4.3) ai: specifier: ^6.0.170 - version: 6.0.196(zod@4.4.3) + version: 6.0.197(zod@4.4.3) bullmq: specifier: ^5.76.4 version: 5.78.0 @@ -690,7 +687,7 @@ importers: version: 2.0.2 libphonenumber-js: specifier: ^1.12.42 - version: 1.13.5 + version: 1.13.6 mailparser: specifier: ^3.9.8 version: 3.9.9 @@ -742,7 +739,7 @@ importers: version: 3.0.1 '@types/node': specifier: 24.x - version: 24.13.0 + version: 24.13.1 concurrently: specifier: ^9.2.1 version: 9.2.1 @@ -757,7 +754,7 @@ importers: version: 0.21.10(oxc-resolver@11.20.0)(typescript@5.9.3) vitest: specifier: ^4.1.0 - version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.13.0)(@vitest/coverage-v8@4.1.8)(jsdom@25.0.1)(msw@2.14.6(@types/node@24.13.0)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) + version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.13.1)(@vitest/coverage-v8@4.1.8)(jsdom@25.0.1)(msw@2.14.6(@types/node@24.13.1)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.1)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) integrations/chatbotx: dependencies: @@ -779,13 +776,13 @@ importers: version: link:../../packages/vitest-config '@types/node': specifier: 24.x - version: 24.13.0 + version: 24.13.1 typescript: specifier: ^5 version: 5.9.3 vitest: specifier: ^4.1.0 - version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.13.0)(@vitest/coverage-v8@4.1.8)(jsdom@25.0.1)(msw@2.14.6(@types/node@24.13.0)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) + version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.13.1)(@vitest/coverage-v8@4.1.8)(jsdom@25.0.1)(msw@2.14.6(@types/node@24.13.1)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.1)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) integrations/google-sheets: dependencies: @@ -797,7 +794,7 @@ importers: version: link:../../packages/sdk google-auth-library: specifier: ^10.6.2 - version: 10.6.2 + version: 10.7.0 googleapis: specifier: ^171.4.0 version: 171.4.0 @@ -810,16 +807,16 @@ importers: version: link:../../packages/vitest-config '@types/node': specifier: 24.x - version: 24.13.0 + version: 24.13.1 msw: specifier: ^2.7.3 - version: 2.14.6(@types/node@24.13.0)(typescript@5.9.3) + version: 2.14.6(@types/node@24.13.1)(typescript@5.9.3) typescript: specifier: ^5 version: 5.9.3 vitest: specifier: ^4.1.0 - version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.13.0)(@vitest/coverage-v8@4.1.8)(jsdom@25.0.1)(msw@2.14.6(@types/node@24.13.0)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) + version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.13.1)(@vitest/coverage-v8@4.1.8)(jsdom@25.0.1)(msw@2.14.6(@types/node@24.13.1)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.1)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) integrations/instagram: dependencies: @@ -859,13 +856,13 @@ importers: version: link:../../packages/vitest-config '@types/node': specifier: 24.x - version: 24.13.0 + version: 24.13.1 typescript: specifier: ^5 version: 5.9.3 vitest: specifier: ^4.1.0 - version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.13.0)(@vitest/coverage-v8@4.1.8)(jsdom@25.0.1)(msw@2.14.6(@types/node@24.13.0)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) + version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.13.1)(@vitest/coverage-v8@4.1.8)(jsdom@25.0.1)(msw@2.14.6(@types/node@24.13.1)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.1)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) integrations/messenger: dependencies: @@ -883,7 +880,7 @@ importers: version: link:../../packages/utils '@types/node': specifier: 24.x - version: 24.13.0 + version: 24.13.1 cross-fetch: specifier: ^4.1.0 version: 4.1.0 @@ -908,25 +905,25 @@ importers: version: link:../../packages/vitest-config msw: specifier: ^2.7.3 - version: 2.14.6(@types/node@24.13.0)(typescript@5.9.3) + version: 2.14.6(@types/node@24.13.1)(typescript@5.9.3) typescript: specifier: ^5 version: 5.9.3 vitest: specifier: ^4.1.0 - version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.13.0)(@vitest/coverage-v8@4.1.8)(jsdom@25.0.1)(msw@2.14.6(@types/node@24.13.0)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) + version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.13.1)(@vitest/coverage-v8@4.1.8)(jsdom@25.0.1)(msw@2.14.6(@types/node@24.13.1)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.1)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) integrations/openai: dependencies: '@ai-sdk/openai': specifier: ^3.0.54 - version: 3.0.67(zod@4.4.3) + version: 3.0.68(zod@4.4.3) '@chatbotx.io/sdk': specifier: workspace:* version: link:../../packages/sdk ai: specifier: ^6.0.170 - version: 6.0.196(zod@4.4.3) + version: 6.0.197(zod@4.4.3) devDependencies: '@chatbotx.io/typescript-config': specifier: workspace:* @@ -936,16 +933,16 @@ importers: version: link:../../packages/vitest-config '@types/node': specifier: 24.x - version: 24.13.0 + version: 24.13.1 msw: specifier: ^2.7.3 - version: 2.14.6(@types/node@24.13.0)(typescript@5.9.3) + version: 2.14.6(@types/node@24.13.1)(typescript@5.9.3) typescript: specifier: ^5 version: 5.9.3 vitest: specifier: ^4.1.0 - version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.13.0)(@vitest/coverage-v8@4.1.8)(jsdom@25.0.1)(msw@2.14.6(@types/node@24.13.0)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) + version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.13.1)(@vitest/coverage-v8@4.1.8)(jsdom@25.0.1)(msw@2.14.6(@types/node@24.13.1)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.1)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) integrations/smtp: dependencies: @@ -967,7 +964,7 @@ importers: version: link:../../packages/vitest-config '@types/node': specifier: 24.x - version: 24.13.0 + version: 24.13.1 '@types/nodemailer': specifier: ^8.0.0 version: 8.0.0 @@ -976,7 +973,7 @@ importers: version: 5.9.3 vitest: specifier: ^4.1.0 - version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.13.0)(@vitest/coverage-v8@4.1.8)(jsdom@25.0.1)(msw@2.14.6(@types/node@24.13.0)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) + version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.13.1)(@vitest/coverage-v8@4.1.8)(jsdom@25.0.1)(msw@2.14.6(@types/node@24.13.1)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.1)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) integrations/telegram: dependencies: @@ -1010,16 +1007,16 @@ importers: version: link:../../packages/vitest-config '@types/node': specifier: 24.x - version: 24.13.0 + version: 24.13.1 msw: specifier: ^2.7.3 - version: 2.14.6(@types/node@24.13.0)(typescript@5.9.3) + version: 2.14.6(@types/node@24.13.1)(typescript@5.9.3) typescript: specifier: ^5 version: 5.9.3 vitest: specifier: ^4.1.0 - version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.13.0)(@vitest/coverage-v8@4.1.8)(jsdom@25.0.1)(msw@2.14.6(@types/node@24.13.0)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) + version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.13.1)(@vitest/coverage-v8@4.1.8)(jsdom@25.0.1)(msw@2.14.6(@types/node@24.13.1)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.1)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) integrations/tiktok: dependencies: @@ -1037,7 +1034,7 @@ importers: version: link:../../packages/utils '@types/node': specifier: 24.x - version: 24.13.0 + version: 24.13.1 ky: specifier: ^2.0.2 version: 2.0.2 @@ -1056,13 +1053,13 @@ importers: version: link:../../packages/vitest-config msw: specifier: ^2.7.3 - version: 2.14.6(@types/node@24.13.0)(typescript@5.9.3) + version: 2.14.6(@types/node@24.13.1)(typescript@5.9.3) typescript: specifier: ^5 version: 5.9.3 vitest: specifier: ^3.2.4 - version: 3.2.6(@types/node@24.13.0)(jiti@2.7.0)(jsdom@25.0.1)(lightningcss@1.32.0)(msw@2.14.6(@types/node@24.13.0)(typescript@5.9.3))(tsx@4.22.4)(yaml@2.9.0) + version: 3.2.6(@types/node@24.13.1)(jiti@2.7.0)(jsdom@25.0.1)(lightningcss@1.32.0)(msw@2.14.6(@types/node@24.13.1)(typescript@5.9.3))(tsx@4.22.4)(yaml@2.9.0) integrations/webchat: dependencies: @@ -1081,13 +1078,13 @@ importers: version: link:../../packages/vitest-config '@types/node': specifier: 24.x - version: 24.13.0 + version: 24.13.1 typescript: specifier: ^5 version: 5.9.3 vitest: specifier: ^4.1.0 - version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.13.0)(@vitest/coverage-v8@4.1.8)(jsdom@25.0.1)(msw@2.14.6(@types/node@24.13.0)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) + version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.13.1)(@vitest/coverage-v8@4.1.8)(jsdom@25.0.1)(msw@2.14.6(@types/node@24.13.1)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.1)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) integrations/whatsapp: dependencies: @@ -1108,7 +1105,7 @@ importers: version: 1.0.1 '@types/node': specifier: 24.x - version: 24.13.0 + version: 24.13.1 cross-fetch: specifier: ^4.1.0 version: 4.1.0 @@ -1120,7 +1117,7 @@ importers: version: 2.0.2 libphonenumber-js: specifier: ^1.12.42 - version: 1.13.5 + version: 1.13.6 remeda: specifier: ^2.34.0 version: 2.37.0 @@ -1139,13 +1136,13 @@ importers: version: link:../../packages/vitest-config msw: specifier: ^2.7.3 - version: 2.14.6(@types/node@24.13.0)(typescript@5.9.3) + version: 2.14.6(@types/node@24.13.1)(typescript@5.9.3) typescript: specifier: ^5 version: 5.9.3 vitest: specifier: ^4.1.0 - version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.13.0)(@vitest/coverage-v8@4.1.8)(jsdom@25.0.1)(msw@2.14.6(@types/node@24.13.0)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) + version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.13.1)(@vitest/coverage-v8@4.1.8)(jsdom@25.0.1)(msw@2.14.6(@types/node@24.13.1)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.1)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) integrations/zalo: dependencies: @@ -1185,16 +1182,16 @@ importers: version: link:../../packages/vitest-config '@types/node': specifier: 24.x - version: 24.13.0 + version: 24.13.1 msw: specifier: ^2.7.3 - version: 2.14.6(@types/node@24.13.0)(typescript@5.9.3) + version: 2.14.6(@types/node@24.13.1)(typescript@5.9.3) typescript: specifier: ^5 version: 5.9.3 vitest: specifier: ^4.1.0 - version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.13.0)(@vitest/coverage-v8@4.1.8)(jsdom@25.0.1)(msw@2.14.6(@types/node@24.13.0)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) + version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.13.1)(@vitest/coverage-v8@4.1.8)(jsdom@25.0.1)(msw@2.14.6(@types/node@24.13.1)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.1)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) packages/ai: dependencies: @@ -1209,7 +1206,7 @@ importers: version: 3.0.80(zod@4.4.3) '@ai-sdk/openai': specifier: ^3.0.54 - version: 3.0.67(zod@4.4.3) + version: 3.0.68(zod@4.4.3) '@chatbotx.io/database': specifier: workspace:* version: link:../database @@ -1233,7 +1230,7 @@ importers: version: 0.13.11(typescript@5.9.3)(zod@4.4.3) ai: specifier: ^6.0.170 - version: 6.0.196(zod@4.4.3) + version: 6.0.197(zod@4.4.3) ky: specifier: ^2.0.2 version: 2.0.2 @@ -1261,7 +1258,7 @@ importers: version: 5.9.3 vitest: specifier: ^4.1.0 - version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.13.0)(@vitest/coverage-v8@4.1.8)(jsdom@25.0.1)(msw@2.14.6(@types/node@24.13.0)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) + version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.13.1)(@vitest/coverage-v8@4.1.8)(jsdom@25.0.1)(msw@2.14.6(@types/node@24.13.1)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.1)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) packages/analytics: dependencies: @@ -1304,13 +1301,13 @@ importers: version: link:../vitest-config '@types/node': specifier: 24.x - version: 24.13.0 + version: 24.13.1 tsx: specifier: ^4.21.0 version: 4.22.4 vitest: specifier: ^4.1.0 - version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.13.0)(@vitest/coverage-v8@4.1.8)(jsdom@25.0.1)(msw@2.14.6(@types/node@24.13.0)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) + version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.13.1)(@vitest/coverage-v8@4.1.8)(jsdom@25.0.1)(msw@2.14.6(@types/node@24.13.1)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.1)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) packages/analytics-nextjs: dependencies: @@ -1334,13 +1331,13 @@ importers: version: 5.4.0(react-hook-form@7.77.0(react@19.2.5)) '@orpc/server': specifier: ^1.14.0 - version: 1.14.4(@opentelemetry/api@1.9.1)(ws@8.21.0) + version: 1.14.5(@opentelemetry/api@1.9.1)(ws@8.21.0) '@t3-oss/env-nextjs': specifier: ^0.13.11 version: 0.13.11(typescript@5.9.3)(zod@4.4.3) '@types/node': specifier: 24.x - version: 24.13.0 + version: 24.13.1 date-fns: specifier: ^4.1.0 version: 4.4.0 @@ -1380,7 +1377,7 @@ importers: version: 4.22.4 vitest: specifier: ^4.1.0 - version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.13.0)(@vitest/coverage-v8@4.1.8)(jsdom@25.0.1)(msw@2.14.6(@types/node@24.13.0)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) + version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.13.1)(@vitest/coverage-v8@4.1.8)(jsdom@25.0.1)(msw@2.14.6(@types/node@24.13.1)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.1)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) packages/auth: dependencies: @@ -1423,7 +1420,7 @@ importers: version: 5.9.3 vitest: specifier: ^4.1.0 - version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.13.0)(@vitest/coverage-v8@4.1.8)(jsdom@25.0.1)(msw@2.14.6(@types/node@24.13.0)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) + version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.13.1)(@vitest/coverage-v8@4.1.8)(jsdom@25.0.1)(msw@2.14.6(@types/node@24.13.1)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.1)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) packages/automated-response: dependencies: @@ -1460,13 +1457,13 @@ importers: version: link:../vitest-config '@types/node': specifier: 24.x - version: 24.13.0 + version: 24.13.1 typescript: specifier: ^5 version: 5.9.3 vitest: specifier: ^4.1.0 - version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.13.0)(@vitest/coverage-v8@4.1.8)(jsdom@25.0.1)(msw@2.14.6(@types/node@24.13.0)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) + version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.13.1)(@vitest/coverage-v8@4.1.8)(jsdom@25.0.1)(msw@2.14.6(@types/node@24.13.1)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.1)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) packages/business: dependencies: @@ -1514,7 +1511,7 @@ importers: version: 1.0.0-beta.22(@cloudflare/workers-types@4.20240718.0)(@opentelemetry/api@1.9.1)(@types/pg@8.20.0)(pg@8.21.0)(zod@4.4.3) libphonenumber-js: specifier: ^1.12.42 - version: 1.13.5 + version: 1.13.6 zod: specifier: ^4.3.6 version: 4.4.3 @@ -1527,13 +1524,13 @@ importers: version: link:../vitest-config '@types/node': specifier: 24.x - version: 24.13.0 + version: 24.13.1 typescript: specifier: ^5 version: 5.9.3 vitest: specifier: ^4.1.0 - version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.13.0)(@vitest/coverage-v8@4.1.8)(jsdom@25.0.1)(msw@2.14.6(@types/node@24.13.0)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) + version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.13.1)(@vitest/coverage-v8@4.1.8)(jsdom@25.0.1)(msw@2.14.6(@types/node@24.13.1)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.1)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) packages/database: dependencies: @@ -1567,7 +1564,7 @@ importers: version: link:../vitest-config '@types/node': specifier: 24.x - version: 24.13.0 + version: 24.13.1 '@types/pg': specifier: ^8.20.0 version: 8.20.0 @@ -1582,7 +1579,7 @@ importers: version: 0.28.0 vitest: specifier: ^4.1.0 - version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.13.0)(@vitest/coverage-v8@4.1.8)(jsdom@25.0.1)(msw@2.14.6(@types/node@24.13.0)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) + version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.13.1)(@vitest/coverage-v8@4.1.8)(jsdom@25.0.1)(msw@2.14.6(@types/node@24.13.1)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.1)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) packages/encryption: dependencies: @@ -1601,13 +1598,13 @@ importers: version: link:../vitest-config '@types/node': specifier: 24.x - version: 24.13.0 + version: 24.13.1 typescript: specifier: ^5 version: 5.9.3 vitest: specifier: ^4.1.0 - version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.13.0)(@vitest/coverage-v8@4.1.8)(jsdom@25.0.1)(msw@2.14.6(@types/node@24.13.0)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) + version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.13.1)(@vitest/coverage-v8@4.1.8)(jsdom@25.0.1)(msw@2.14.6(@types/node@24.13.1)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.1)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) packages/event-bus: dependencies: @@ -1635,10 +1632,10 @@ importers: version: link:../vitest-config '@types/node': specifier: 24.x - version: 24.13.0 + version: 24.13.1 vitest: specifier: ^4.1.0 - version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.13.0)(@vitest/coverage-v8@4.1.8)(jsdom@25.0.1)(msw@2.14.6(@types/node@24.13.0)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) + version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.13.1)(@vitest/coverage-v8@4.1.8)(jsdom@25.0.1)(msw@2.14.6(@types/node@24.13.1)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.1)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) packages/events: dependencies: @@ -1666,19 +1663,19 @@ importers: version: 5.9.3 vitest: specifier: ^4.1.0 - version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.13.0)(@vitest/coverage-v8@4.1.8)(jsdom@25.0.1)(msw@2.14.6(@types/node@24.13.0)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) + version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.13.1)(@vitest/coverage-v8@4.1.8)(jsdom@25.0.1)(msw@2.14.6(@types/node@24.13.1)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.1)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) packages/filesystem: dependencies: '@aws-sdk/client-s3': specifier: ^3.1039.0 - version: 3.1061.0 + version: 3.1063.0 '@aws-sdk/lib-storage': specifier: ^3.1039.0 - version: 3.1061.0(@aws-sdk/client-s3@3.1061.0) + version: 3.1063.0(@aws-sdk/client-s3@3.1063.0) '@aws-sdk/s3-presigned-post': specifier: ^3.1039.0 - version: 3.1061.0 + version: 3.1063.0 '@chatbotx.io/database': specifier: workspace:* version: link:../database @@ -1715,7 +1712,7 @@ importers: version: link:../vitest-config '@types/node': specifier: 24.x - version: 24.13.0 + version: 24.13.1 '@types/probe-image-size': specifier: ^7.2.5 version: 7.2.5 @@ -1724,7 +1721,7 @@ importers: version: 5.9.3 vitest: specifier: ^4.1.0 - version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.13.0)(@vitest/coverage-v8@4.1.8)(jsdom@25.0.1)(msw@2.14.6(@types/node@24.13.0)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) + version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.13.1)(@vitest/coverage-v8@4.1.8)(jsdom@25.0.1)(msw@2.14.6(@types/node@24.13.1)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.1)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) packages/flow-config: dependencies: @@ -1749,7 +1746,7 @@ importers: version: link:../vitest-config '@types/node': specifier: 24.x - version: 24.13.0 + version: 24.13.1 '@types/react': specifier: 19.2.14 version: 19.2.14 @@ -1758,7 +1755,7 @@ importers: version: 5.9.3 vitest: specifier: ^4.1.0 - version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.13.0)(@vitest/coverage-v8@4.1.8)(jsdom@25.0.1)(msw@2.14.6(@types/node@24.13.0)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) + version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.13.1)(@vitest/coverage-v8@4.1.8)(jsdom@25.0.1)(msw@2.14.6(@types/node@24.13.1)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.1)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) packages/imports: dependencies: @@ -1783,13 +1780,13 @@ importers: version: link:../vitest-config '@types/node': specifier: 24.x - version: 24.13.0 + version: 24.13.1 typescript: specifier: ^5 version: 5.9.3 vitest: specifier: ^3.2.4 - version: 3.2.6(@types/node@24.13.0)(jiti@2.7.0)(jsdom@25.0.1)(lightningcss@1.32.0)(msw@2.14.6(@types/node@24.13.0)(typescript@5.9.3))(tsx@4.22.4)(yaml@2.9.0) + version: 3.2.6(@types/node@24.13.1)(jiti@2.7.0)(jsdom@25.0.1)(lightningcss@1.32.0)(msw@2.14.6(@types/node@24.13.1)(typescript@5.9.3))(tsx@4.22.4)(yaml@2.9.0) packages/kafka: dependencies: @@ -1817,19 +1814,19 @@ importers: version: link:../vitest-config '@types/node': specifier: 24.x - version: 24.13.0 + version: 24.13.1 typescript: specifier: ^5 version: 5.9.3 vitest: specifier: ^4.1.0 - version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.13.0)(@vitest/coverage-v8@4.1.8)(jsdom@25.0.1)(msw@2.14.6(@types/node@24.13.0)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) + version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.13.1)(@vitest/coverage-v8@4.1.8)(jsdom@25.0.1)(msw@2.14.6(@types/node@24.13.1)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.1)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) packages/logger: dependencies: '@types/node': specifier: 24.x - version: 24.13.0 + version: 24.13.1 pino: specifier: ^10.3.1 version: 10.3.1 @@ -1845,7 +1842,7 @@ importers: version: 5.9.3 vitest: specifier: ^4.1.0 - version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.13.0)(@vitest/coverage-v8@4.1.8)(jsdom@25.0.1)(msw@2.14.6(@types/node@24.13.0)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) + version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.13.1)(@vitest/coverage-v8@4.1.8)(jsdom@25.0.1)(msw@2.14.6(@types/node@24.13.1)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.1)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) packages/mail: dependencies: @@ -1876,7 +1873,7 @@ importers: version: 5.0.0 '@types/node': specifier: 24.x - version: 24.13.0 + version: 24.13.1 '@types/nodemailer': specifier: ^8.0.0 version: 8.0.0 @@ -1885,7 +1882,7 @@ importers: version: 5.9.3 vitest: specifier: ^4.1.0 - version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.13.0)(@vitest/coverage-v8@4.1.8)(jsdom@25.0.1)(msw@2.14.6(@types/node@24.13.0)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) + version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.13.1)(@vitest/coverage-v8@4.1.8)(jsdom@25.0.1)(msw@2.14.6(@types/node@24.13.1)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.1)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) packages/partysocket-config: dependencies: @@ -1913,13 +1910,13 @@ importers: version: link:../vitest-config '@types/node': specifier: 24.x - version: 24.13.0 + version: 24.13.1 typescript: specifier: ^5 version: 5.9.3 vitest: specifier: ^4.1.0 - version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.13.0)(@vitest/coverage-v8@4.1.8)(jsdom@25.0.1)(msw@2.14.6(@types/node@24.13.0)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) + version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.13.1)(@vitest/coverage-v8@4.1.8)(jsdom@25.0.1)(msw@2.14.6(@types/node@24.13.1)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.1)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) packages/public-apis: dependencies: @@ -1938,7 +1935,7 @@ importers: version: link:../vitest-config '@types/node': specifier: 24.x - version: 24.13.0 + version: 24.13.1 openapi-typescript: specifier: ^7.13.0 version: 7.13.0(typescript@5.9.3) @@ -1947,7 +1944,7 @@ importers: version: 5.9.3 vitest: specifier: ^4.1.0 - version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.13.0)(@vitest/coverage-v8@4.1.8)(jsdom@25.0.1)(msw@2.14.6(@types/node@24.13.0)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) + version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.13.1)(@vitest/coverage-v8@4.1.8)(jsdom@25.0.1)(msw@2.14.6(@types/node@24.13.1)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.1)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) packages/redis: dependencies: @@ -1981,7 +1978,7 @@ importers: version: 5.9.3 vitest: specifier: ^4.1.0 - version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.13.0)(@vitest/coverage-v8@4.1.8)(jsdom@25.0.1)(msw@2.14.6(@types/node@24.13.0)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) + version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.13.1)(@vitest/coverage-v8@4.1.8)(jsdom@25.0.1)(msw@2.14.6(@types/node@24.13.1)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.1)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) packages/scheduler: dependencies: @@ -2006,7 +2003,7 @@ importers: version: 5.9.3 vitest: specifier: ^4.1.0 - version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.13.0)(@vitest/coverage-v8@4.1.8)(jsdom@25.0.1)(msw@2.14.6(@types/node@24.13.0)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) + version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.13.1)(@vitest/coverage-v8@4.1.8)(jsdom@25.0.1)(msw@2.14.6(@types/node@24.13.1)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.1)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) packages/sdk: dependencies: @@ -2028,13 +2025,13 @@ importers: version: link:../vitest-config '@types/node': specifier: 24.x - version: 24.13.0 + version: 24.13.1 typescript: specifier: ^5 version: 5.9.3 vitest: specifier: ^4.1.0 - version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.13.0)(@vitest/coverage-v8@4.1.8)(jsdom@25.0.1)(msw@2.14.6(@types/node@24.13.0)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) + version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.13.1)(@vitest/coverage-v8@4.1.8)(jsdom@25.0.1)(msw@2.14.6(@types/node@24.13.1)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.1)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) packages/sequence-scheduler: dependencies: @@ -2065,13 +2062,13 @@ importers: version: 5.9.3 vitest: specifier: ^4.1.0 - version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.13.0)(@vitest/coverage-v8@4.1.8)(jsdom@25.0.1)(msw@2.14.6(@types/node@24.13.0)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) + version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.13.1)(@vitest/coverage-v8@4.1.8)(jsdom@25.0.1)(msw@2.14.6(@types/node@24.13.1)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.1)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) packages/typescript-config: dependencies: '@types/node': specifier: 24.x - version: 24.13.0 + version: 24.13.1 packages/ui: dependencies: @@ -2101,82 +2098,82 @@ importers: version: 3.2.2(react@19.2.5) '@radix-ui/react-accordion': specifier: ^1.2.12 - version: 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) + version: 1.2.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-alert-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.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-aspect-ratio': 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.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-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.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-checkbox': specifier: ^1.3.3 - version: 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) + version: 1.3.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-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.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-context-menu': specifier: ^2.2.16 - version: 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) + version: 2.3.0(@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': 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.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-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.17(@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': 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.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-label': specifier: ^2.1.8 - version: 2.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: 2.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-menubar': specifier: ^1.1.16 - version: 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) + version: 1.1.17(@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': specifier: ^1.2.14 - version: 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) + version: 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-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.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-progress': 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.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-radio-group': specifier: ^1.3.8 - version: 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) + version: 1.4.0(@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': specifier: ^1.2.10 - version: 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) + version: 1.2.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-select': specifier: ^2.2.6 - version: 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) + version: 2.3.0(@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': 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.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-slider': specifier: ^1.3.6 - version: 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) + version: 1.4.0(@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': specifier: ^1.2.4 - version: 1.2.4(@types/react@19.2.14)(react@19.2.5) + version: 1.2.5(@types/react@19.2.14)(react@19.2.5) '@radix-ui/react-switch': specifier: ^1.2.6 - version: 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) + version: 1.3.0(@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': specifier: ^1.1.13 - version: 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) + version: 1.1.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-toggle': specifier: ^1.1.10 - version: 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) + 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) '@radix-ui/react-toggle-group': 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.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-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.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) '@stepperize/react': specifier: ^6.1.0 version: 6.1.0(react@19.2.5)(typescript@5.9.3) @@ -2233,7 +2230,7 @@ importers: version: 2.8.9(next@16.2.4(@opentelemetry/api@1.9.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react@19.2.5) 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.5.0(@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: specifier: 19.2.5 version: 19.2.5 @@ -2297,7 +2294,7 @@ importers: version: 3.0.1 '@types/node': specifier: 24.x - version: 24.13.0 + version: 24.13.1 '@types/react': specifier: 19.2.14 version: 19.2.14 @@ -2315,7 +2312,7 @@ importers: version: 5.9.3 vitest: specifier: ^4.1.0 - version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.13.0)(@vitest/coverage-v8@4.1.8)(jsdom@25.0.1)(msw@2.14.6(@types/node@24.13.0)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) + version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.13.1)(@vitest/coverage-v8@4.1.8)(jsdom@25.0.1)(msw@2.14.6(@types/node@24.13.1)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.1)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) packages/utils: dependencies: @@ -2334,13 +2331,13 @@ importers: version: link:../vitest-config '@types/node': specifier: 24.x - version: 24.13.0 + version: 24.13.1 typescript: specifier: ^5 version: 5.9.3 vitest: specifier: ^4.1.0 - version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.13.0)(@vitest/coverage-v8@4.1.8)(jsdom@25.0.1)(msw@2.14.6(@types/node@24.13.0)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) + version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.13.1)(@vitest/coverage-v8@4.1.8)(jsdom@25.0.1)(msw@2.14.6(@types/node@24.13.1)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.1)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) packages/variables: dependencies: @@ -2374,19 +2371,19 @@ importers: version: link:../vitest-config '@types/node': specifier: 24.x - version: 24.13.0 + version: 24.13.1 typescript: specifier: ^5 version: 5.9.3 vitest: specifier: ^4.1.0 - version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.13.0)(@vitest/coverage-v8@4.1.8)(jsdom@25.0.1)(msw@2.14.6(@types/node@24.13.0)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) + version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.13.1)(@vitest/coverage-v8@4.1.8)(jsdom@25.0.1)(msw@2.14.6(@types/node@24.13.1)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.1)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) packages/vitest-config: dependencies: '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@7.3.5(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) + version: 4.7.0(vite@7.3.5(@types/node@24.13.1)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) '@vitest/coverage-v8': specifier: ^4.1.8 version: 4.1.8(vitest@4.1.8) @@ -2395,20 +2392,20 @@ importers: version: 25.0.1 msw: specifier: ^2.7.3 - version: 2.14.6(@types/node@24.13.0)(typescript@5.9.3) + version: 2.14.6(@types/node@24.13.1)(typescript@5.9.3) vite-tsconfig-paths: specifier: ^5.1.4 - version: 5.1.4(typescript@5.9.3)(vite@7.3.5(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) + version: 5.1.4(typescript@5.9.3)(vite@7.3.5(@types/node@24.13.1)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) vitest: specifier: ^4.1.8 - version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.13.0)(@vitest/coverage-v8@4.1.8)(jsdom@25.0.1)(msw@2.14.6(@types/node@24.13.0)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) + version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.13.1)(@vitest/coverage-v8@4.1.8)(jsdom@25.0.1)(msw@2.14.6(@types/node@24.13.1)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.1)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) devDependencies: '@chatbotx.io/typescript-config': specifier: workspace:* version: link:../typescript-config '@types/node': specifier: 24.x - version: 24.13.0 + version: 24.13.1 typescript: specifier: ^5 version: 5.9.3 @@ -2438,7 +2435,7 @@ importers: version: 0.13.11(typescript@5.9.3)(zod@4.4.3) '@types/node': specifier: 24.x - version: 24.13.0 + version: 24.13.1 bullmq: specifier: ^5.76.4 version: 5.78.0 @@ -2460,7 +2457,7 @@ importers: version: 5.9.3 vitest: specifier: ^4.1.0 - version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.13.0)(@vitest/coverage-v8@4.1.8)(jsdom@25.0.1)(msw@2.14.6(@types/node@24.13.0)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) + version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.13.1)(@vitest/coverage-v8@4.1.8)(jsdom@25.0.1)(msw@2.14.6(@types/node@24.13.1)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.1)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) packages: @@ -2476,8 +2473,8 @@ packages: peerDependencies: zod: ^4.3.6 - '@ai-sdk/gateway@3.0.124': - resolution: {integrity: sha512-h8CrmbSG+8X0C+M/E1M4oiDHYevqwbzAPN+uLRHS0eJaatF2MZ+juNtOHXNOjk7Bsk9mD2RjYMjJO9dFkb9I7Q==} + '@ai-sdk/gateway@3.0.125': + resolution: {integrity: sha512-tocl7cUDoTpmhZqeW8XVKMMznZQwwQAEunF0VyNKmf64qt8NbMIAEiet/vRMzh7Jr9WcFeb6EZjmhLTP4Qx2Og==} engines: {node: '>=18'} peerDependencies: zod: ^4.3.6 @@ -2494,8 +2491,8 @@ packages: peerDependencies: zod: ^4.3.6 - '@ai-sdk/openai@3.0.67': - resolution: {integrity: sha512-oAiGC9eWG7IgtdsdS74bOCnAAHarAfTJhWN9x5INwnWPekL802AvF+0I5DvLzIF1MIRmNw4N8mPSL/GUVbX9Mw==} + '@ai-sdk/openai@3.0.68': + resolution: {integrity: sha512-FCs/DPr4M95UyZ/ABHJmTmCEYRCka/4J0Bna0nsd78QCdGIS0X/zhn+fVzB7mZJo7464uOWYUjROx9PGNGOb0w==} engines: {node: '>=18'} peerDependencies: zod: ^4.3.6 @@ -2540,106 +2537,90 @@ packages: '@aws-crypto/util@5.2.0': resolution: {integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==} - '@aws-sdk/checksums@3.1000.1': - resolution: {integrity: sha512-DFCtlisEuWzw7rESV65jHK7De1QsJZRZgUNJ8ovpmdVaayPrxvmlsAlW8hka9E7f9B31d1T7lHG9oozZf6Bp6w==} + '@aws-sdk/checksums@3.1000.2': + resolution: {integrity: sha512-PIha+kauTbp6IRmOpYktPTrlfrrSqDVixvhO/EUOFOf62DPX81CaJoHJreuA1m9HYpSKyXf99BKjU1dvJPeUfw==} engines: {node: '>=20.0.0'} - '@aws-sdk/client-s3@3.1061.0': - resolution: {integrity: sha512-ygyRCIkktaDz4/kNzsxhbZqocLwCJV5absi/k7Xd3LThPOmVkid7Nghm/xTW2Yg+vSQIL0yq99oV7u3T+4ZbAQ==} + '@aws-sdk/client-s3@3.1063.0': + resolution: {integrity: sha512-ETn+vvmZVK1MmOZwVBXmWANpmD5iTbzojIqyEIoZ86qo+8oWy35S8QyQNE/ZDI+WHgMU1dS+VSYbpRl1QkEySg==} engines: {node: '>=20.0.0'} - '@aws-sdk/core@3.974.17': - resolution: {integrity: sha512-r8o4h2K7j6P9ngno+8ei0aK0U/4JwDb7A2fMMxGVoSqDN8AFlIzSDeZHME9LcVLR2codyhtr1WAAg+/nmkeeMA==} + '@aws-sdk/core@3.974.18': + resolution: {integrity: sha512-JDYCPI0j7zGrzXTDFsLB346cxss7J/AxH7+O0MzWlqppJBEyB9Qe6TQXRL6iwLUo/xZkNv9KFmBL2hqElmwW0g==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-env@3.972.43': - resolution: {integrity: sha512-g0XVQKzaA/4cq1vz1IvCQwYM+1Pkv01J9yHDpCTXekVuGZRDEz0wqBQ1AuYTq7FM6uik4uBGH8Tb5d9YvgeA7g==} + '@aws-sdk/credential-provider-env@3.972.44': + resolution: {integrity: sha512-3hKJVrZ7bqXzDAXCQp+OaQ1ASN+vWstaNuEH418wQVl//cRZhqhfR9Bjk1qIWmgUGe8/D3gdO73PgidRj378EQ==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-http@3.972.45': - resolution: {integrity: sha512-w9PuOoKCt6+xoESvY+zlV0u3PKQ0mVL259PcsVR6a3S/uYJJHnIi4r1NxdJHEcNldUVRIciltWnFMGBR4YEm3g==} + '@aws-sdk/credential-provider-http@3.972.46': + resolution: {integrity: sha512-VhwC9pGAZHhiQ2xSViyOPDFqvr9aRxGCAXZtADsUhU3R65nad7y//CwynE6mQnWNR+suRlqE79W36IVayL+m1g==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-ini@3.972.48': - resolution: {integrity: sha512-+6BQ6Lrnc+EyAGElLRW6j+Sa+RirPHnIJsobvYO6nnyK+oGKmz1ne/ieclbLWyjyDKEU3/JVJWcWY3VLFPvGtQ==} + '@aws-sdk/credential-provider-ini@3.972.50': + resolution: {integrity: sha512-09Xi6ovxiK42+De/qBGF71sT5F2bWgYM+1fFyDwSOpy1xpsQ5R/naIu7MVDpH6Dic36QNc8dAv4KADtMGK2JYg==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-login@3.972.47': - resolution: {integrity: sha512-Iy2ebWVgrZBH05464uJiQYu6HSSiROnwVZptthEFXx2gWjo1ORCxEAFZB5Cr2MdfrSnZ+0QUPkZ1ZpCqpkUrLQ==} + '@aws-sdk/credential-provider-login@3.972.49': + resolution: {integrity: sha512-EfJF/1Fh9mI4pZyoheU2RY9xUhTcugIZNkD63+orXMkYj/QXacJNbKVDUK90Yv5hE+aX+rt9J/EZ9Qr3vKOa7g==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-node@3.972.50': - resolution: {integrity: sha512-b05Aelq5cqAvCCDQjCYacl0XmR8QhBNSqLbsdISkQmlQBa5oPS66zYPteWcSp5LswbpoIe552EUGjluKiadBig==} + '@aws-sdk/credential-provider-node@3.972.52': + resolution: {integrity: sha512-7QX+PbyiWBEOVipJq8Nke/TqXT6lAPLE7fvTaopa39/IVWuLfS+Fzdy71sZJONf/mLGgmtj6aU17+REw3+aRrw==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-process@3.972.43': - resolution: {integrity: sha512-GPokLNyvTfCmuaHk+v3GKVs4ZT3cMu5kgS2a+NPkOMt96cq6fSIK0g+mZHpGS6Cd4QGrPKesANEaLUKgOskTzg==} + '@aws-sdk/credential-provider-process@3.972.44': + resolution: {integrity: sha512-V+UUhZpRP7QDRhi+qgBDisM9tUBnYmMje8Bk77A6MZsfeGeGdMsQXmaHP1CDYFcept0o/Rz5g2Y0TMeVlG9dzg==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-sso@3.972.47': - resolution: {integrity: sha512-0AzvLrzlvJs0DzbeWGvNj+bX3Uzd7VNS6vDqCOdZzBlCGKGd78uxctJSW9iK/Rt/nxiJqpTvrYQlVJ4guVM2Dw==} + '@aws-sdk/credential-provider-sso@3.972.49': + resolution: {integrity: sha512-9QqOYGuh5tZ76OzaT68kwI78AH+5lS/uZGGvkfxb3fc8FzRrIz2jOufNTliEBEeSAwmgK2rWLNsK+IB3zbtNPA==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-web-identity@3.972.47': - resolution: {integrity: sha512-eksfbUErOejUAGWBAcNqaP7IX21oUOEo73d9R56k9Ua4d57qS90NEYkWJsuSGzTXMFulCu17qXJI/qGmM7hvoA==} + '@aws-sdk/credential-provider-web-identity@3.972.49': + resolution: {integrity: sha512-IYx1lN38MnnPXv+NBLpuATu0cZakbZ321TAfjW+aVkw7HIJF38YnEwdeEO55MSl3pl7hIX1IvvnD6EmnAzmAJw==} engines: {node: '>=20.0.0'} - '@aws-sdk/lib-storage@3.1061.0': - resolution: {integrity: sha512-8jEu8CUhLyw05whk523nUZm3UEkmNy05NORU5pMsY6wOtjLgRH66CDBUXpSAeTJtyqOzLEDXsd2+ZC7GQF6kMA==} + '@aws-sdk/lib-storage@3.1063.0': + resolution: {integrity: sha512-WfDUIna6HicL8oTs26etBIr7yGwHIkadr8ecp/SjQAhX3t5xM/PLJCl0ZJ+bcLtYyjmWrO3Ydyf/EUyraEz8Qw==} engines: {node: '>=20.0.0'} peerDependencies: - '@aws-sdk/client-s3': ^3.1061.0 - - '@aws-sdk/middleware-bucket-endpoint@3.972.20': - resolution: {integrity: sha512-D35MfedGvTTzK1oygFPjm7DViSJwj9cuPV26ElHKwZqEz2rWag1hzYeAQ7st0jlCIAAihQgOyQ0/JwmqLOOinw==} - engines: {node: '>=20.0.0'} - - '@aws-sdk/middleware-expect-continue@3.972.16': - resolution: {integrity: sha512-S52iw+M9zJC+7uxRdvvKeiR0s2PDeYEmbNZQkWE6OJf8upIs+r4WQY0TER+6akVitEMeRdwS0DrBUhKkmpsyng==} - engines: {node: '>=20.0.0'} - - '@aws-sdk/middleware-flexible-checksums@3.974.26': - resolution: {integrity: sha512-WndRXQV8wAU/bW3GH8THumEOSV7FpS0AtoluT2M7lYaaDUyG0gOCD+DppB+IWQ4TPmzuTtFcCedh9xCzM4Zv4g==} - engines: {node: '>=20.0.0'} + '@aws-sdk/client-s3': ^3.1063.0 - '@aws-sdk/middleware-location-constraint@3.972.13': - resolution: {integrity: sha512-Yh0MmpADMsSR7ExRM/2w85D26i/U2aDC/pC7fMwhUpmOl6sebGpmBPoRL/uJRDhqRrwX/tvXWWZrsbsPM/O9FQ==} + '@aws-sdk/middleware-flexible-checksums@3.974.27': + resolution: {integrity: sha512-bZqezPLdllFC4VAeV/f+EIc/hz56ab3TD/+4zNCgOgmG5ZHAE5dMHrX1gtTwdcQXbPr3KR7x3zTC3zuCTE6+ng==} engines: {node: '>=20.0.0'} - '@aws-sdk/middleware-sdk-s3@3.972.47': - resolution: {integrity: sha512-fzVBvGib8P1G6RFV3qVTPlXy9bMFAy5nxhdhA7LwyhWjRkJufNfJIPiloZq2mt36YAXSlLsEa4s3Kgcw6cv3+g==} + '@aws-sdk/middleware-sdk-s3@3.972.48': + resolution: {integrity: sha512-MRTqx8wD/T3REt6LTT3/yN8rrp6+xIHrbUekkDYJTYWVch70mwtdJBovR4qKJz1jIPlbN+9R/Sn6R04BfsglzA==} engines: {node: '>=20.0.0'} - '@aws-sdk/middleware-ssec@3.972.13': - resolution: {integrity: sha512-M+dDhWp2zv9u92I4/4rgUFdiF8jSIk5PIj5ktyBdhvR/dkmKSYMo07nuh+3g8/59HnizwkcRC3glcLMX5GhyaQ==} + '@aws-sdk/nested-clients@3.997.17': + resolution: {integrity: sha512-lDRgraoTfKRawUyc176Ow93mrNrOho/x+EoK4C+lKU+vKkHWhNhzvSMVAx0WEJUJoeQxxDN5ZdKMfiGEyNejig==} engines: {node: '>=20.0.0'} - '@aws-sdk/nested-clients@3.997.15': - resolution: {integrity: sha512-Fpri1/PXKMKveORZ7E00VLTlWS5DkfZkW70PUE+bOnpWpAeHAQLoiDHhkzN3kNWbbSsGg64+IZYiq/EZgME3Mg==} + '@aws-sdk/s3-presigned-post@3.1063.0': + resolution: {integrity: sha512-5iASs4kaN6OXTzryNQEVAqogDqdD7b1DsqSd6hcUC73Izj2vpSBK6RCDSiHmSNe7HQQIF8B72XBi+NtCixop2A==} engines: {node: '>=20.0.0'} - '@aws-sdk/s3-presigned-post@3.1061.0': - resolution: {integrity: sha512-zMHvrgEYpMqG9oLprpn+2O0rKis+58dqWp+D/icrgdTA/KR31/rUAVGTpBrjf7tKMBPah4pr6xNmsSvf3/dcEw==} + '@aws-sdk/signature-v4-multi-region@3.996.32': + resolution: {integrity: sha512-llvApLcsWtmRFhG2wT3WIp1CmDeRaIYutqty1ZZXoMzK7TiJ6MOLOimk9eXUS8PwgG4ew4pa4QAbt0lfhn++1w==} engines: {node: '>=20.0.0'} - '@aws-sdk/signature-v4-multi-region@3.996.31': - resolution: {integrity: sha512-Kn2up9SlG1KC6wRtwf0d7waTGF6rvp9DxYqB54x6UCKdQ6kyaXCqHL4WGb5vUJga5kS8FxnjhY0LqM28aMvnNQ==} + '@aws-sdk/token-providers@3.1063.0': + resolution: {integrity: sha512-nYDaWWdzjKiDP5xj8k4oUgcYd4WPgzfAOgdU5vJsaqH/07Dfvm7ffisHCFJ+NEl7kUC9JEIUxh0kznvenbo3NQ==} engines: {node: '>=20.0.0'} - '@aws-sdk/token-providers@3.1060.0': - resolution: {integrity: sha512-6NZaMKkFhpaNiwLpHi1sZaYjidL/lCJE6ME6NxwA8gv9vQna+Kr0j4OFwVoz6tANRWM3WbGz6jiPsGX/Vkjwow==} + '@aws-sdk/types@3.973.11': + resolution: {integrity: sha512-YjS0qFuECClRh4qhEyW8XagW0fwEPBeZ1cfsW/gU73Kh/ExFILxbzxOfPCmzF/2DwEvhvsHYt0b0qnvStwKYrg==} engines: {node: '>=20.0.0'} - '@aws-sdk/types@3.973.10': - resolution: {integrity: sha512-992QrTO7G9qCvKD0fx1rMlqcL14plUcRAbwmqqYVsuF3GrqcvlAL9qxR+baMafarEZ+l7DUQ5lCMmt5mbMhF7g==} + '@aws-sdk/util-locate-window@3.965.6': + resolution: {integrity: sha512-ZfHjfwSzeXj+Lg9AK5ZNmeDkXev6V+w2tn1t4kgDdRtUaRCthepTQiFwbD06EF9oNGH4LaLg+Mb6U16Ypv5bSw==} engines: {node: '>=20.0.0'} - '@aws-sdk/util-locate-window@3.965.5': - resolution: {integrity: sha512-WhlJNNINQB+9qtLtZJcpQdgZw3SCDCpXdUJP7cToGwHbCWCnRckGlc6Bx/OhWwIYFNAn+FIydY8SZ0QmVu3xTQ==} - engines: {node: '>=20.0.0'} - - '@aws-sdk/xml-builder@3.972.27': - resolution: {integrity: sha512-hpsCXCOI436kxWpjtRuIHVvuPP81MOw8f18jzfZeg+UOiiOvlqWcmWChzEhJEu16cOC6+ku4ncBN+7rdt+DZ9g==} + '@aws-sdk/xml-builder@3.972.28': + resolution: {integrity: sha512-lI/l3c/vPvsxmspzV63NfS3x9q4CkMmdhJy4QiM+NThAufVkDvi/PZZQ6xETnICL0UD7jI808pY83gllf86RFg==} engines: {node: '>=20.0.0'} '@aws/lambda-invoke-store@0.2.4': @@ -3743,8 +3724,8 @@ packages: '@floating-ui/utils@0.2.11': resolution: {integrity: sha512-RiB/yIh78pcIxl6lLMG0CgBXAZ2Y0eVHqMPYugu+9U0AeT6YBeiJpf7lbdJNIugFP5SIjwNRgo4DhR1Qxi26Gg==} - '@formatjs/cli-lib@8.7.5': - resolution: {integrity: sha512-yaFFDQ2vOaZN/Uao4eJmc9SsFzRZPKsVeHS0hnMbvLicCu8OXhANqrU9uzr5S8xUNqn0uDx72H1SPAp8O4BKtw==} + '@formatjs/cli-lib@8.7.9': + resolution: {integrity: sha512-xyq06kSJU92ubGe10fff/FqMGniFZrGgA/xHX1j4P8hTNM/S4vnljDAfLG8DPIkutT4BRYRZgzLIctwvDI4jWw==} engines: {node: '>= 20.12.0'} peerDependencies: '@glimmer/env': '*' @@ -3773,25 +3754,37 @@ packages: vue: optional: true - '@formatjs/cli-native-darwin-arm64@1.1.1': - resolution: {integrity: sha512-G2IfmxwDN1kUMIbM9ec5HfJTNR89X11+U3bt4lewfrRqoHOc9bQAkkVHLsY8gNVLjyQIXch58Ewd+AAHkg6cag==} + '@formatjs/cli-native-darwin-arm64@1.1.4': + resolution: {integrity: sha512-ejXNrd4RDHKWgnNY425RJZglduSVmFFgPLK1+lZa+zLbHz1Z6XyXV7aX1jlicMLGL7HYmaU2i4co//6vu3DrRg==} cpu: [arm64] os: [darwin] - '@formatjs/cli-native-linux-arm64@1.2.1': - resolution: {integrity: sha512-dbafLt5p1wQi16QnTFuz6s5j5c8HcyRSw+gUp5xEtaQ9Ua2YKRu+YqlgsERg+ArTWN+ZTHIGu+0YymTvfTropA==} + '@formatjs/cli-native-linux-arm64-musl@1.0.2': + resolution: {integrity: sha512-oDJ6xJANOd/HB+g86vvvWc6oSic/SvEDwu/QUjGhqursTFPQZr2iewzhwm/wFbTp7x9P1X4fy5k87leSSrm45g==} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@formatjs/cli-native-linux-arm64@1.2.4': + resolution: {integrity: sha512-YDLXzRnI85a96imavjcBUBwt5GMt/DKdwLyOgFeW2htQZYwWr1Vxjsi0Fvc/A4c89DxwkQ64cmhC0Wpl+o/kKQ==} cpu: [arm64] os: [linux] libc: [glibc] - '@formatjs/cli-native-linux-x64@1.1.1': - resolution: {integrity: sha512-zi6eOPAc03fszPyiGCkmzBxjIxynDFflie9zgbyZIQgKV7MhXEmUmpGYeaTTDX903OFCJJ3ZvpajSTdZ7C7yeQ==} + '@formatjs/cli-native-linux-x64-musl@1.0.2': + resolution: {integrity: sha512-fmBUVOeGb2Aaf1qVnEybjNx3vk7PQwAshSMLV7xJgSAyht0P1tgoSmq4o2mjYgZ87n/QaqZfiHJlqLwkjsaPtA==} + cpu: [x64] + os: [linux] + libc: [musl] + + '@formatjs/cli-native-linux-x64@1.1.4': + resolution: {integrity: sha512-BnLTyb2q3j37hUiWYrFuarGvA9XTL0Ye2++pV4LRo1sQJN8TJb3dWfc6O4RTjt/9imKl+egjw4hkrxB6s3XUYw==} cpu: [x64] os: [linux] libc: [glibc] - '@formatjs/cli-native-win32-x64@1.1.2': - resolution: {integrity: sha512-2TKatQRlDbVc+eJE4b9n0/+bsDg+DpS0kmHw7OYI1zGXhus4YqRPtlJnraazRmPlXtRNgvY/UYCPgBvX7DbYhw==} + '@formatjs/cli-native-win32-x64@1.1.5': + resolution: {integrity: sha512-TrF7H25n58o6/L8GP2hA6eCUxKUq2y3+fQE/DFGKkmqWhwLNl/qd+HVEX1Yoz6MiO0dUznNgDsrPvbvZGfERGA==} cpu: [x64] os: [win32] @@ -3801,29 +3794,29 @@ packages: '@formatjs/fast-memoize@2.2.7': resolution: {integrity: sha512-Yabmi9nSvyOMrlSeGGWDiH7rf3a7sIwplbvo/dlz9WCIjzIQAfy1RMf4S0X3yG724n5Ghu2GmEl5NJIV6O9sZQ==} - '@formatjs/fast-memoize@3.1.5': - resolution: {integrity: sha512-KLi3fan6WnCHmigd9pmEEN8Hid0v4wiFBW576M/d07KMWYecf1CvyMI3n34vCmHT4AoVqG2n702kiHbXjzZX2A==} + '@formatjs/fast-memoize@3.1.6': + resolution: {integrity: sha512-H5aexk1Le7T9TPmscacZ+1pR6CTa2n1wq+HDVGXhH8TzUlQQpeXzZs91dRtmFHrbeNbjPFPfQujUqm7MHgVoXQ==} '@formatjs/icu-messageformat-parser@2.11.4': resolution: {integrity: sha512-7kR78cRrPNB4fjGFZg3Rmj5aah8rQj9KPzuLsmcSn4ipLXQvC04keycTI1F7kJYDwIXtT2+7IDEto842CfZBtw==} - '@formatjs/icu-messageformat-parser@3.5.10': - resolution: {integrity: sha512-XeJihYLy1lCe19xfK1KWKG/betBOK2rB0luL8lSkjfvJj0zP+LTJvkC+RKd0jsFI8mWxN71LrarHSrEXE8xxOQ==} + '@formatjs/icu-messageformat-parser@3.5.11': + resolution: {integrity: sha512-NVsuNsc2dUVG9+4HBJ/srScxtA/18LqGgwtop/tuN/OIBjVl6QA+0KhfZQddDD9sEh2LeVjLFPGVU3ixa3blcA==} '@formatjs/icu-skeleton-parser@1.8.16': resolution: {integrity: sha512-H13E9Xl+PxBd8D5/6TVUluSpxGNvFSlN/b3coUp0e0JpuWXXnQDiavIpY3NnvSp4xhEMoXyyBvVfdFX8jglOHQ==} - '@formatjs/icu-skeleton-parser@2.1.9': - resolution: {integrity: sha512-rsxswgHMfU1zUgB2byc08fesf83wLGjFnzLCEtuf00mx2doiqc6pYrf67raI37XqdRcGUviQepk2UKGqpng74Q==} + '@formatjs/icu-skeleton-parser@2.1.10': + resolution: {integrity: sha512-XuSva+8ZGawk8VnD5VD6UeH8KarQ/Z022zgjHDoHmlNiAewstXuuzXc0Hk5pGFSdG+nNw5bfJKXqj1ZXHn9yUA==} '@formatjs/intl-localematcher@0.6.2': resolution: {integrity: sha512-XOMO2Hupl0wdd172Y06h6kLpBz6Dv+J4okPLl4LPtzbr8f66WbIoy4ev98EBuZ6ZK4h5ydTN6XneT4QVpD7cdA==} - '@formatjs/intl-localematcher@0.8.9': - resolution: {integrity: sha512-GmB0F/gYh4Hdl4rLWjgDsgT+x4pB54fkJeRh8kAZ4XFzKeCK8dGs+SBJWXO42QZtOUni+IDWKNuCw6wiL4lTvw==} + '@formatjs/intl-localematcher@0.8.10': + resolution: {integrity: sha512-P/IC3qws3jH+1fEs+o0RIFgXKRaQlFehjS5W0FPAqdo6hgzawLl+eD0q0JjheQ3XtoOe5n8WSYfX06KQZI/QJA==} - '@formatjs/ts-transformer@4.4.11': - resolution: {integrity: sha512-xfL/YAPRZZeO+X386WqAOA9XHHW7NymM1Fb53IxxHW6oV0p3OKfoBy6Oi98GvWQQsr8y0H/2RyD0ok+mkAExWg==} + '@formatjs/ts-transformer@4.4.13': + resolution: {integrity: sha512-MQZyDrwULZ7MrJz6ar4cuCWCVn8HTlEXMEJffZfhpGJMI+RLx6WwmM7aCGeVa7q3rcV9ChAGFym5Bm2ZBUwV8A==} engines: {node: '>= 20.12.0'} peerDependencies: ts-jest: ^29 @@ -4382,26 +4375,26 @@ packages: resolution: {integrity: sha512-/UhIkaZgPutTFmQ7RnIJGgDXZmtEJ7Dvi86xNTFWcnRxVRNk/aotsqDJYeEvDP+FSMB2SdW+pQzNMcWP0rwuNA==} engines: {node: '>=14'} - '@orpc/client@1.14.4': - resolution: {integrity: sha512-i6Z9FikIm9Qz3Br10vk8/cllgjdYdlRKK2OV3x2/CdOBRr+B68tboNdpH3eeb1kv8/Zd6ZsXcWaDfrANdj2GZQ==} + '@orpc/client@1.14.5': + resolution: {integrity: sha512-7kDiGJDyiwdHUnWJGGY2/evUenfAjvw6skrfuIKX+ZNtNrJecNNl3ytURmWOoZbcNZ4bX/1NKViO8BrtPgY0KA==} - '@orpc/contract@1.14.4': - resolution: {integrity: sha512-In7auWZL++EsDM2vMLSDekCi/w4UpwUv2SRCBx8hCkwCG/xBn5oFERnVhAGdEu/Kr55OOn/ZZuiWFYvaatEOiA==} + '@orpc/contract@1.14.5': + resolution: {integrity: sha512-DARmTs1w5Z+bRtccMptc+d/k2DmZCY2pqtHhF3I2DxmN5IXEp9nch+MO/b5cnq1khjxy4XK6CIFL2psXyaXYTQ==} - '@orpc/interop@1.14.4': - resolution: {integrity: sha512-9RMBh4D2Lp7d6m2vAd91SN5pzflKcMOKKb7BxAvlK6An1bpdzRQ/2yJ0nqgK5GrmkWDY4EtKK5fPOhq131k3mA==} + '@orpc/interop@1.14.5': + resolution: {integrity: sha512-0cZuUVmBCkX1AsyjhDb5nG+odE/Zggl+kr3LZo3x+X4czUWlSSmPMomJ0sqtQdzv1LVyIRHmfHMWt5/9dY4BDQ==} - '@orpc/json-schema@1.14.4': - resolution: {integrity: sha512-JWt60lGCyCVdE9bH4vPNO7dOCGnF8R9aCm7zFSq2a8RDUX7Luqj+fiVVhK7QkcvXTLOMPpVU4ja8zWEoeZuwrQ==} + '@orpc/json-schema@1.14.5': + resolution: {integrity: sha512-8vabQ3eWFpdk+ivwTm5lCy7mhFaTa7BlatjUIO0hiGlixgjtSc41v6zqK8bzV2QsyvPrHDuD1Q4Uasjzmk77+A==} - '@orpc/openapi-client@1.14.4': - resolution: {integrity: sha512-wGGu0PpEqjezPbCFN6S1dtkU4qHD3pLRb/TKwwevRRD+KnTiYPdzUxhLZeHEZftf9yDG9WKM6UV3Se8h3DDGng==} + '@orpc/openapi-client@1.14.5': + resolution: {integrity: sha512-wfxXmQSXHdEsMjMr+mMxg6NKbtsyBCeCvbTAWdo9mr4I59HErGaiH/lVEuPpIH5G980Y5kewcdHexm+hNBefFw==} - '@orpc/openapi@1.14.4': - resolution: {integrity: sha512-D2TZ83GBft88/gdhTSxfA6CFE0Vh3DxRm576eh3UnH1hUXCDXM3nqpFtbCZBKELIXdBhrJ9BHP09V9uS9Y+rHA==} + '@orpc/openapi@1.14.5': + resolution: {integrity: sha512-/wbjotmAbOKRxKEWW31jIp8/WwcbwTKEPtny+BNWGD2PrLWK+xiVKkmjjGFxbqIgETk3MZ2vLGRi1iwA6kZVyg==} - '@orpc/server@1.14.4': - resolution: {integrity: sha512-Cv58hggL2zG/YX44whiuLEroLH+ihTp5Rm3+ycTNYAUGzeiAWqBqvtFxrMd7t+w15JxAT6ZbA4qZjBPOFyL5zw==} + '@orpc/server@1.14.5': + resolution: {integrity: sha512-+yT4LEPnGdYCveBVPUwAwSTSuwsIsU7QywGEu+ug51KYKwtm5qCPNBMyoA7R1/J/Q4Q5a+qaHWBTDq8bElT0Ew==} peerDependencies: crossws: '>=0.3.4' ws: '>=8.18.1' @@ -4411,42 +4404,42 @@ packages: ws: optional: true - '@orpc/shared@1.14.4': - resolution: {integrity: sha512-XltdytNlp68cN/WvrfsG7BdUUWV4a7kFN+7HL9LskTqt+q396ITWggJeoyBBMl+u1WHCF7GO2OHx4XQBBYOM8Q==} + '@orpc/shared@1.14.5': + resolution: {integrity: sha512-D3rYULnYfTYC/ZcgSP6A2Fdypwkfm/vZQ7i2ycXXXfYNrnpAINQJfN32p6+M8GTDqmNkt0R7eALV1rrvxjmZCg==} peerDependencies: '@opentelemetry/api': '>=1.9.0' peerDependenciesMeta: '@opentelemetry/api': optional: true - '@orpc/standard-server-aws-lambda@1.14.4': - resolution: {integrity: sha512-6XMm1xNfdJESzJaxWiwsJCG7aeWyg3RhR9iknRCJOK0XeIXfLkXs8f6CRhfeEzqZIDBqKyeocjOqfj3KM/qy7Q==} + '@orpc/standard-server-aws-lambda@1.14.5': + resolution: {integrity: sha512-qHMSWp5d85WZzch2BAL8egrz7xQNorAElHNXC1S4q5W/Ssib5Krv5zLAXVKki4IUxwAHqfrO/EYnWgEdufQzNQ==} - '@orpc/standard-server-fastify@1.14.4': - resolution: {integrity: sha512-FSc4WpYRDa3e1lJs+pXarGuqyxVgadEDQdWBAXFFBQY32IzmXxZNOff7pZG4PtuV1o1lHwJRMHsxMrzjrGyG4w==} + '@orpc/standard-server-fastify@1.14.5': + resolution: {integrity: sha512-agxnwypSaS/LUkUFRzVxy+wO2EMBD0+paZw9SXk2rAsW+Gxl9/XTUundUqUoukusdhgZ7R2Fp7gQLt2p0wH3Qg==} peerDependencies: fastify: '>=5.6.1' peerDependenciesMeta: fastify: optional: true - '@orpc/standard-server-fetch@1.14.4': - resolution: {integrity: sha512-Qkhr/W1hZXDQ40abDKb8C8icL9XBh5Uc1oDdhUOj+DxoJLQmQlH+3PtxP+/FQwnPJwr5UzQqa8BAU5goZugoGw==} + '@orpc/standard-server-fetch@1.14.5': + resolution: {integrity: sha512-7h83p6/TgogOpaTuEXMVMB+UkMuAMUyFQ0zw4HM2B5/XSiEOzVO1YyFzuC2EmeuuLIV11sEI3vcw5oWbNAQROQ==} - '@orpc/standard-server-node@1.14.4': - resolution: {integrity: sha512-HjL3s2M6DV00x6zwiKX3kK87GGuydKBrYLlq4uaoP8ZbO9a9cQxqPCZ5QFaP25GfM6mKOWizw7oWKAhgbmJFCg==} + '@orpc/standard-server-node@1.14.5': + resolution: {integrity: sha512-GrRGpCaZ8uQQRRCPCq/IWf30k/22gVsske3EP/vU93cQ8I+ArKHhmvnRQIiG2y4V/QvSTwvGpj/X279LmdnV4A==} - '@orpc/standard-server-peer@1.14.4': - resolution: {integrity: sha512-swN+48ekPQdZtqP81jDoaolc3IvLbpWaRsWJfXHv05d4x7Gplo1rVjk0qmwoFsYXOx5D/ZZlUaJ79BOdMJRyaA==} + '@orpc/standard-server-peer@1.14.5': + resolution: {integrity: sha512-zp2QyfVzw4/Be5/D1NWB+r7+WDerxC39XZYsvD1+I1sT13P5HlVWfZpBIlF6eEig416O4wMwHYLOfnN4Ngom0g==} - '@orpc/standard-server@1.14.4': - resolution: {integrity: sha512-DGhgCXaS1vghoemaK8ANnsI8u69k056vFYNuXMLbbDYn9miWeQyI7Af+Ya5Y0T/YNzGtEvqFP4nkNja7KTHivQ==} + '@orpc/standard-server@1.14.5': + resolution: {integrity: sha512-bCd1BkShxknFjIDixUEjOj3fvP4hxN0IIV/hvTdtk6sdWApadBjw3UuK3iprkECgoBt/31zTOKwgHB/wnnUfhw==} - '@orpc/zod@1.14.4': - resolution: {integrity: sha512-8KCdnhR1TJLgXJA1DmqAGmyuZO1ID66+TzBtlO1w75x22m6IfhWAjC3Fy8L716G0QwEkpx1iSiiAm/QdJaViww==} + '@orpc/zod@1.14.5': + resolution: {integrity: sha512-Al0Tim0CxO7o4UkZCmIPWJyNXnB0f0qL2YzB/MA0E65ss7qJydBmvyPUES9b3z8GeXgPQAmIOYl/Jq2jtx8DfQ==} peerDependencies: - '@orpc/contract': 1.14.4 - '@orpc/server': 1.14.4 + '@orpc/contract': 1.14.5 + '@orpc/server': 1.14.5 zod: ^4.3.6 '@oxc-parser/binding-android-arm-eabi@0.133.0': @@ -4798,14 +4791,14 @@ packages: '@quansync/fs@1.0.0': resolution: {integrity: sha512-4TJ3DFtlf1L5LDMaM6CanJ/0lckGNtJcMjQ1NAV6zDmA0tEHKZtxNKin8EgPaVX1YzljbxckyT2tJrpQKAtngQ==} - '@radix-ui/number@1.1.1': - resolution: {integrity: sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g==} + '@radix-ui/number@1.1.2': + resolution: {integrity: sha512-ceTwaxc4I5IOi97DgCotl3pqiyRGvffcc0oOsE2dQYaJOFIDsDt4VWG6xEbg1QePv9QWausCEIppud/tJ1wNig==} - '@radix-ui/primitive@1.1.3': - resolution: {integrity: sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==} + '@radix-ui/primitive@1.1.4': + resolution: {integrity: sha512-7AdCK9PQyiljKoBDbN8OuctCbd/esdwZPQ8RtOE3SsyQtUpiPb+ND75q0jEhC1m1ecBI0MFNeLJvwIh9iKHRcQ==} - '@radix-ui/react-accessible-icon@1.1.7': - resolution: {integrity: sha512-XM+E4WXl0OqUJFovy6GjmxxFyx9opfCAIUku4dlKRd5YEPqt4kALOkQOp0Of6reHuUkJuiPBEc5k0o4z4lTC8A==} + '@radix-ui/react-accessible-icon@1.1.9': + resolution: {integrity: sha512-5W9KzJz/3DeYbGJHbZv8Q6AkxMOKUmALfc+PRg9dWwJZMk6zD37Sz8sZrF7UD6CBkiJvn7dNeRzn5G7XiCMyig==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -4817,8 +4810,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-accordion@1.2.12': - resolution: {integrity: sha512-T4nygeh9YE9dLRPhAHSeOZi7HBXo+0kYIPJXayZfvWOWA0+n3dESrZbjfDPUABkUNym6Hd+f2IR113To8D2GPA==} + '@radix-ui/react-accordion@1.2.13': + resolution: {integrity: sha512-xITxBB2p5m5tAe7M0F95kb4uAh7jSIKGlExMEm93HlW+XxZHV2eXFbPWLktd4JhRiwcnXNbO7iekcrbZy6ZCvA==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -4830,8 +4823,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-alert-dialog@1.1.15': - resolution: {integrity: sha512-oTVLkEw5GpdRe29BqJ0LSDFWI3qu0vR1M0mUkOQWDIUnY/QIkLpgDMWuKxP94c2NAC2LGcgVhG1ImF3jkZ5wXw==} + '@radix-ui/react-alert-dialog@1.1.16': + resolution: {integrity: sha512-vPaIgo0mxYlvcFaM9jB2Uot9TjGXMuAPEvrc6BOLeV+I5U8s1dkIoouYaa6lmSfc5SPMo5x5djOTOTvaigdGMQ==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -4843,8 +4836,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-arrow@1.1.9': + resolution: {integrity: sha512-yqHW5WQ/cTpU/un7dqqIKNy2iRU8BC0JB78PEzTfCCYvZu1U6W9KwObAniMk9nhSfyotKPQTYaUD/HB0f5muig==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -4856,8 +4849,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-aspect-ratio@1.1.7': - resolution: {integrity: sha512-Yq6lvO9HQyPwev1onK1daHCHqXVLzPhSVjmsNjCa2Zcxy2f7uJD2itDtxknv6FzAKCwD1qQkeVDmX/cev13n/g==} + '@radix-ui/react-aspect-ratio@1.1.9': + resolution: {integrity: sha512-Xy+Dpxt/5n9rVTdPrNFmf8GwG1NlT1pzCF/z1MgOGZMLZWdWl+km+ZRWGQAPEhbkzSwYEsfYmTca8NhUtVxqnw==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -4869,8 +4862,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-aspect-ratio@1.1.8': - resolution: {integrity: sha512-5nZrJTF7gH+e0nZS7/QxFz6tJV4VimhQb1avEgtsJxvvIp5JilL+c58HICsKzPxghdwaDt48hEfPM1au4zGy+w==} + '@radix-ui/react-avatar@1.1.12': + resolution: {integrity: sha512-NQCQyWC7QrDPhjMn8hUqFeU0lUrprIgm1AyMgLbzuQJibNnatdc3SSMo3/UGFu/eUkJUU1cEcKCnyhXTQzq6tA==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -4882,8 +4875,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-checkbox@1.3.4': + resolution: {integrity: sha512-m3JmIOAX5ZzZ6VPjxEU2dbTOhoHi0nT5riwcDwe8idocsWf4a5DXJLDtZ6LfJwMBx7W+A2b7kp2TgPEKtaiF6A==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -4895,8 +4888,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-avatar@1.1.11': - resolution: {integrity: sha512-0Qk603AHGV28BOBO34p7IgD5m+V5Sg/YovfayABkoDDBM5d3NCx0Mp4gGrjzLGes1jV5eNOE1r3itqOR33VC6Q==} + '@radix-ui/react-collapsible@1.1.13': + resolution: {integrity: sha512-F0s8+p2XNpfc3k02zBfB0jPWbkHVG162+p7BdUMyJ2308QMqZ+oaclX+FAzKFovgL5OqRU+Rvy6f/vbdlJVaqA==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -4908,8 +4901,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-checkbox@1.3.3': - resolution: {integrity: sha512-wBbpv+NQftHDdG86Qc0pIyXk5IR3tM8Vd0nWLKDcX8nNn4nXFOFwsKuqw2okA/1D/mpaAkmuyndrPJTYDNZtFw==} + '@radix-ui/react-collection@1.1.9': + resolution: {integrity: sha512-zuSVi7ziP7uQRqc+yGxsKJfNkdyHv3ZKDaHe0gzg4dRgws96TPKWIiz84tVHP4GEcEl8bC0mdt17NkcxaJHmaQ==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -4921,21 +4914,17 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-collapsible@1.1.12': - resolution: {integrity: sha512-Uu+mSh4agx2ib1uIGPP4/CKNULyajb3p92LsVXmH2EHVMTfZWpll88XJ0j4W0z3f8NK1eYl1+Mf/szHPmcHzyA==} + '@radix-ui/react-compose-refs@1.1.3': + resolution: {integrity: sha512-rYOP8OMnuuPMQF1uhPVlGNcCDlkokKqGFE3JcxFViIkAXP7EvFWUliJAstrapypaBLJNHbZL6jGhbVDGTwmVhA==} 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-collection@1.1.7': - resolution: {integrity: sha512-Fh9rGN0MoI4ZFUNyfFVNU4y9LUz93u9/0K+yLgA2bwRojxM8JU1DyvvMBabnZPBgMWREAJvU2jjVzq+LrFUglw==} + '@radix-ui/react-context-menu@2.3.0': + resolution: {integrity: sha512-d7CouXhAW+CGmFOqmB+IEvd3E9GcaqfgvfjCc3hfulp2pkaUCEVEGa0SN5nNWYA+IvQ6g1Pt+S5dpNn1AoY9hg==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -4947,8 +4936,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-compose-refs@1.1.2': - resolution: {integrity: sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==} + '@radix-ui/react-context@1.1.4': + resolution: {integrity: sha512-QwH4PO5urrbO+FaGd5Aglg+YJgWTyyuZ3g/6mKvsqraLkglDdckw9JafgL5McL5VEJ6EPNduPaT3ZE9BttDAqg==} peerDependencies: '@types/react': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc @@ -4956,8 +4945,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-dialog@1.1.16': + resolution: {integrity: sha512-l9ok83YBclEZhbjgzt76Hw733e6cvRKPNgO6GJ/IETlufXG9p+fRu2wlvpImQvR6xdJ8h7J8J2DBvsPEiEsKMw==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -4969,8 +4958,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-context@1.1.2': - resolution: {integrity: sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==} + '@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 @@ -4978,17 +4967,8 @@ packages: '@types/react': optional: true - '@radix-ui/react-context@1.1.3': - resolution: {integrity: sha512-ieIFACdMpYfMEjF0rEf5KLvfVyIkOz6PDGyNnP+u+4xQ6jny3VCgA4OgXOwNx2aUkxn8zx9fiVcM8CfFYv9Lxw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-dialog@1.1.15': - resolution: {integrity: sha512-TCglVRtzlffRNxRMEyR36DGBLJpeusFcgMVD9PZEzAKnUs1lKCgX5u9BmC2Yg+LL9MgZDugFFs1Vl+Jp4t/PGw==} + '@radix-ui/react-dismissable-layer@1.1.12': + resolution: {integrity: sha512-MhoruH6xEzsbvOmo4TNgMfmtvRGyDZw4MDSdf4ybMHfezjqwzv6hyd4lsMzBp8K9Sn6sGzCF62x1I7BYUECXOg==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -5000,17 +4980,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-direction@1.1.1': - resolution: {integrity: sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-dismissable-layer@1.1.11': - resolution: {integrity: sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg==} + '@radix-ui/react-dropdown-menu@2.1.17': + resolution: {integrity: sha512-S6b3Jm57sY5EdDyOMLkacbB0qMnKhy1RCKZCt795ZkmtUOAvojYIZ5p7dXHIh5Cyr3jCLLI5/g64V3FKLudZmw==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -5022,78 +4993,17 @@ 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-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-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==} - 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==} - 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-hover-card@1.1.15': - resolution: {integrity: sha512-qgTkjNT1CfKMoP0rcasmlH2r1DAiYicWsDsufxl940sT2wHNEWWv6FMWIQXWhVdmC1d/HYfbhQx60KYyAtKxjg==} - 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-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-focus-scope@1.1.9': + resolution: {integrity: sha512-9Se8t+Zry+1rEOL7Y6l/4ANYU/TOtAtf8O2fKdwLltcaMcm6kOqYGbzO4tMFQ0bvzO920pRAoHpFZ4W85S3keQ==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -5105,8 +5015,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-label@2.1.8': - resolution: {integrity: sha512-FmXs37I6hSBVDlO4y764TNz1rLgKwjJMQ0EGte6F3Cb3f4bIuHB/iLa/8I9VKkmOy+gNHq8rql3j686ACVV21A==} + '@radix-ui/react-form@0.1.9': + resolution: {integrity: sha512-eTPyThIKDacJ3mJDvYwf/PSmsEYlOyA2Qcb+aGyWwYv+P5w57VPUkMVA2XJ9z0Du2KBY1HoHQzhPV9iYL/r4hg==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -5118,8 +5028,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-menu@2.1.16': - resolution: {integrity: sha512-72F2T+PLlphrqLcAotYPp0uJMr5SjP5SL01wfEspJbru5Zs5vQaSHb4VB3ZMJPimgHHCHG7gMOeOB9H3Hdmtxg==} + '@radix-ui/react-hover-card@1.1.16': + resolution: {integrity: sha512-hAileDBtd6CX7nlZOarOnISQ6PP4q0e16BX51ulzdZ+7IzjL0sDTVpFdmSYrIjw6zVNsfQBao5gG6AWr3qwfvA==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -5131,21 +5041,17 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-menubar@1.1.16': - resolution: {integrity: sha512-EB1FktTz5xRRi2Er974AUQZWg2yVBb1yjip38/lgwtCVRd3a+maUoGHN/xs9Yv8SY8QwbSEb+YrxGadVWbEutA==} + '@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-navigation-menu@1.2.14': - resolution: {integrity: sha512-YB9mTFQvCOAQMHU+C/jVl96WmuWeltyUEpRJJky51huhds5W2FQr1J8D/16sQlf0ozxkPK8uF3niQMdUwZPv5w==} + '@radix-ui/react-label@2.1.9': + resolution: {integrity: sha512-rDoTeMbCwRVcnmo7NGT9IlPo1yXmEI+xc1URP3oeewwZEV4mdTp1dYUhYbQdo4D1q2SjKVvv4N1gNY77QAQtjA==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -5157,8 +5063,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-menu@2.1.17': + resolution: {integrity: sha512-fmbNnFyf+JYCN0DhhWnEdUTDnZD1mXaPQWivdsPIb8oOSbARfD3LIQJbLCG8a8QLCwoMxiJ7GVPIFcC8Dw8v2Q==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -5170,8 +5076,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-menubar@1.1.17': + resolution: {integrity: sha512-AKtZ4O782yO7qwIyq73WpulYt1IHhQ0htDb6wNcxzxnSDCcSWMVBiU9ycpcA90XzQO4IVIxIErtak6Kg/Vt0rQ==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -5183,8 +5089,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-popover@1.1.15': - resolution: {integrity: sha512-kr0X2+6Yy/vJzLYJUPCZEc8SfQcf+1COFoAqauJm74umQhta9M7lNJHP7QQS3vkvcGLQUbWpMzwrXYwrYztHKA==} + '@radix-ui/react-navigation-menu@1.2.15': + resolution: {integrity: sha512-/fS8hKCcRt4DwCGa5QIB3juRXmfYSOk4a2AEe/BDIyy7Hm+eje2Y13oUx5zejl+wFt1owrM7E8NWlbaEl5EGpg==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -5196,8 +5102,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-popper@1.2.8': - resolution: {integrity: sha512-0NJQ4LFFUuWkE7Oxf0htBKS6zLkkjBH+hM1uk7Ng705ReR8m/uelduy1DBo0PyBXPKVnBA6YBlU94MBGXrSBCw==} + '@radix-ui/react-one-time-password-field@0.1.9': + resolution: {integrity: sha512-fvCzA9hm7yN5xxTPJIi4VhSmH5gv+76ILsxguBK3cm3icD5BR4vW7POQmu8Zio0yh91uuouG/Kang40IbMkaSQ==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -5209,8 +5115,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-portal@1.1.9': - resolution: {integrity: sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ==} + '@radix-ui/react-password-toggle-field@0.1.4': + resolution: {integrity: sha512-qoDSkObZ9faJlsjlwyBH6ia7kq9vaJ2QwWTowT3nQpzPvUTAKesmWuGJYpd91HIoJqS+5ZPXy5uFPp+HlwdaAg==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -5222,8 +5128,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-presence@1.1.5': - resolution: {integrity: sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ==} + '@radix-ui/react-popover@1.1.16': + resolution: {integrity: sha512-8brVpAU5Uq7Bh0c8EFc4ZTf2JJTYn0o+1L+CUJB3UYIOkTjKGMgoHvduylrahdmNlr3DfH0rFq2DrbNZXgaspw==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -5235,8 +5141,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-primitive@2.1.3': - resolution: {integrity: sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==} + '@radix-ui/react-popper@1.3.0': + resolution: {integrity: sha512-9PB589e1aWZbrlFUHdz6WiPCL+xLZHQFX7oibqG/6Q0SwOkxDyQX9W/cyPa+sAPPKuC8cpLCpRczE5a/1DiwVQ==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -5248,8 +5154,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-primitive@2.1.4': - resolution: {integrity: sha512-9hQc4+GNVtJAIEPEqlYqW5RiYdrr8ea5XQ0ZOnD6fgru+83kqT15mq2OCcbe8KnjRZl5vF3ks69AKz3kh1jrhg==} + '@radix-ui/react-portal@1.1.11': + resolution: {integrity: sha512-UEytdjgEh2tJGgD/gZK4FUx6t1rNIlM3U0DENhSrG7I75FGm1DnaDuVUWF1pWAWUwGmn1sCJ1VGHn8LhN1aTOw==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -5261,8 +5167,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-presence@1.1.6': + resolution: {integrity: sha512-zdTk4PlUO0E18HnZ3wYbW0KkJJxWCdiNYp6g6X1PtONFhxVkg01vliTJAmwIszU6mHiyBOoW9P0rAugl5/hULQ==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -5274,8 +5180,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-progress@1.1.8': - resolution: {integrity: sha512-+gISHcSPUJ7ktBy9RnTqbdKW78bcGke3t6taawyZ71pio1JewwGSJizycs7rLhGTvMJYCQB1DBK4KQsxs7U8dA==} + '@radix-ui/react-primitive@2.1.5': + resolution: {integrity: sha512-zifXeB8Y88qCYx8PLZ5oQb32KwZub+s925mMoZsBBq9KUQqWKkREubTfs6ASjRPPBe7Jt9O8OHH89+95VG+grA==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -5287,8 +5193,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.9': + resolution: {integrity: sha512-+EOkvg1Zn1vI1+fRDfRSAiJ7BWfcDAo5ASMmbqrcLZ4s4USk2FGkoHgeb2X+CkUgo2zJMiyObwf1k44CrRWsyw==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -5300,8 +5206,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.0': + resolution: {integrity: sha512-eHdV5bLx9sH+tBnbDjkIBdvQEH/c6MEtQYhTbxkaDK9qsIFFLtmJYEQFVdwhnruWotLfQmIuWEL/J+L3utE8rQ==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -5313,8 +5219,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.12': + resolution: {integrity: sha512-FvgPt1bRmg8Xt2QpF7NUZW3dE0ZQHGm41dAdgT2J2GJPoIXz+9Em3NobAxf4fupcxhgHu03E5CRiU2MWvObXyg==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -5326,8 +5232,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.11': + resolution: {integrity: sha512-DS39ziOgea75U/TrXKU2/oKp0be2jrDHnzFLvahg/0iNAT1Zq16e4Uw0WXwyXvsK+mG3BRyMb7A3NRZMDuEXtQ==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -5339,8 +5245,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.0': + resolution: {integrity: sha512-mENc7WpJvJcW8hlMpzfFcHcEhTvYS5JMBmi9HVC1Q00uhBwML086MHYUV8QQdQv6lcu0Wg8dzd1RB8AFADcG/g==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -5352,8 +5258,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.9': + resolution: {integrity: sha512-gvgW+JV/Mbjj6darztTetnmElpQEzZrXpJvfj+dOxNAxiyHEAyUvEjjl4zxblvmjmKmi3jfPoy7ZdxzCuUBJSA==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -5365,8 +5271,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.0': + resolution: {integrity: sha512-RHcPlLOThRJM51DSIC33ZnpDEBYhyEFroVWkd2P54PGGjkmAt14RboYUU9E1MFst666zFHM0tGtWvMjSOtU1pw==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -5378,17 +5284,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.2.5': + resolution: {integrity: sha512-rCMO3QsIVKv5JTY5CVbo2MvO77SpEqqYc8AvRE7OWqRDOIqAKjsp+DrmnY9uc8NPdxB5E2z47HTYGeE2+NTptg==} peerDependencies: '@types/react': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc @@ -5396,8 +5293,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.0': + resolution: {integrity: sha512-GP1EZwhoZO/GGnhM1P5/2Vpm8iN8EnngyU0oezn2l78kN8tj25pyrvjIaT7azBhK615KSt+P2w39y57YV5jVkA==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -5409,8 +5306,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.14': + resolution: {integrity: sha512-D5jwp9JNuwDeCw3CYD2Fz+sSHo0droQjC8u75dJHe4aWr5q6yBiXZU+hurXnKudRgEpUkD5TsI6bjHPo5ThUxA==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -5422,8 +5319,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.16': + resolution: {integrity: sha512-WUymDDiN2DpoGudRN1aW4wF5O3BNQjZZO/5nngPoNiEVqjyOzirvZZNO0R6dC1ifucSINVaSv8JX1aq47VGgiA==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -5435,8 +5332,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.12': + resolution: {integrity: sha512-TEgECgJaWGAHJJZGzNNEYTNBdIXqX7LchANycpyP7DkfjmuiSN7ISt1k/ZRGVJgVJonsgP4vwaiKMn5utrcwWQ==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -5448,8 +5345,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.11': + resolution: {integrity: sha512-FikrKJemoBGZQ6uRID0HJqSPBP6D7OppdD2OhLl0ZYLlAyPXI7MezoYGmumwNkrAoRm35xXkb4C8JPfJZZzcaw==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -5461,8 +5358,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.12': + resolution: {integrity: sha512-4wHtJVdIgqMmEwUvxA0BYg/2JMRbt0L3+8UD8Ml/nhKkfXtiZcM8u/S15gQ5xj9YEd/0qlrm5bE805LsjQ+J8A==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -5474,8 +5371,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-tooltip@1.2.8': - resolution: {integrity: sha512-tY7sVt1yL9ozIxvmbtN5qtmH2krXcBCfjEiCgKGLqunJHvgvZG2Pcl2oQ3kbcZARb1BGEHdkLzcYGO8ynVlieg==} + '@radix-ui/react-tooltip@1.2.9': + resolution: {integrity: sha512-u6F9MmTtBSLkiXNVDrtB/yPCZarM9smNswC24YYLV/M+bth6J3Gs3vlJezEoFwKZvPvxhCpUYdUnOsNG/0XOlA==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -5487,8 +5384,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 @@ -5496,8 +5393,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 @@ -5505,8 +5402,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 @@ -5514,8 +5411,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.2': + resolution: {integrity: sha512-2uVLvLjgO7NZCWw01/FdqRwmA42J0BcjPMUCA+koFEOAb+zjqIP7SiFz/7zWPrKnVmSqr76Omq2ALyCuX4dhLw==} peerDependencies: '@types/react': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc @@ -5523,8 +5420,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 @@ -5532,8 +5429,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 @@ -5541,8 +5438,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 @@ -5550,8 +5447,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 @@ -5559,8 +5456,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 @@ -5568,8 +5465,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.5': + resolution: {integrity: sha512-tPcHNI3FajdDBFpl/Ez1m2WL0ufJqBKyHxMDBvKitopamK36WwBGOMicuMEZKkM5Wce41QxUyv6BsiqfrWBiGg==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -5581,8 +5478,8 @@ 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==} '@redocly/ajv@8.11.2': resolution: {integrity: sha512-io1JpnwtIcvojV7QKDUSIuMN/ikdOUd1ReEnUnMKGfDVridQZ31J0MmIuqwuRjWDZfmvr+Q0MqCcfHM2gTivOg==} @@ -5859,8 +5756,8 @@ packages: resolution: {integrity: sha512-wBXDRup6UU97VKyaiRo8AssnfStPtG0oAAfpq/bC0a1YYau8pM86YB4kM6ccoVi1mS8l/UHbn9oDM+7uozr/ug==} engines: {node: '>=18.0.0'} - '@smithy/credential-provider-imds@4.3.7': - resolution: {integrity: sha512-xj8gq/bjFABAh6qWPSDCYcY3kzQIm4b561C+YnHH4zGq8rOgzQ3Shk+JGlpUxSd41UGiO6FkLdUCtNX1FAeHgg==} + '@smithy/credential-provider-imds@4.3.8': + resolution: {integrity: sha512-5cAM+KZC02sTqDt6NaLXyu50M/GNMd1eTzDVR8Lb0BBsVtu7RWHo47VPPEEv1vt3Yub6uzr+M5FHC+GtoT0USg==} engines: {node: '>=18.0.0'} '@smithy/fetch-http-handler@5.4.6': @@ -5871,8 +5768,8 @@ packages: resolution: {integrity: sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==} engines: {node: '>=14.0.0'} - '@smithy/node-http-handler@4.7.6': - resolution: {integrity: sha512-3fya8i7GrJilQouk4cZJKdy5k8MWQBpjfXrRNaXDedH8r779tr0jcxyH3+yoTmsluc2+vF4S343yFbnvu8ExDQ==} + '@smithy/node-http-handler@4.7.7': + resolution: {integrity: sha512-ZAFvHXrEk6K180EVhmZVg8GU5pUH5BSFqRs27JW3j1qEFx9YyYwWFx17x/MHcjALYimGAji7qEOlF1++be+G5A==} engines: {node: '>=18.0.0'} '@smithy/signature-v4@5.4.6': @@ -6147,179 +6044,179 @@ packages: resolution: {integrity: sha512-ldZXEhOBb8Is7xLs01fR3YEc3DERiz5silj8tnGkFZytt1abEvl/GhUmCE0PMLaMPTa3Jk4HbKmRlHmu+gCftg==} engines: {node: '>=12'} - '@tiptap/core@3.25.0': - resolution: {integrity: sha512-I9edH6vUXgbjUl5GPICYYYQeql8hC77VZnHLvWg8wc7FwaOw242Uy4Y89c/eX7LGmKwVxz28JFvAsZ8tIdDVvg==} + '@tiptap/core@3.26.0': + resolution: {integrity: sha512-7jTed/RirIVsp+lLdLvGzGqF3EBGpnGHGYKOwz6t28V2BIJLAFdUhfEVdWie7xPxQNWK0TP+fPlsqZS0vxfHBg==} peerDependencies: - '@tiptap/pm': 3.25.0 + '@tiptap/pm': 3.26.0 - '@tiptap/extension-blockquote@3.25.0': - resolution: {integrity: sha512-nSWhYtAKVFAZluRTew+BZUMHo5+87uQqTBOnbyy9ZFBp3gjHjCgGqhboJg5ksMHLCEz1XVoHnS5iXcu9d6Bm6Q==} + '@tiptap/extension-blockquote@3.26.0': + resolution: {integrity: sha512-57accpka9affjiJRjP2LMNCDJDTMjTvO23RJCxtP43sp9cTIZ7YZnyDfRxCINTRBNK0X4o4w2+emOLyRwsk3CA==} peerDependencies: - '@tiptap/core': 3.25.0 + '@tiptap/core': 3.26.0 - '@tiptap/extension-bold@3.25.0': - resolution: {integrity: sha512-owygVm6XMtk8VVclm2CCCz3Q1HfNpkjeoRTIbeM5r/R1cDrPQAVOuAd3w+mdXlC3iDsvCkfYzSTSphZcDpwThQ==} + '@tiptap/extension-bold@3.26.0': + resolution: {integrity: sha512-j6CzTMofcGJ5iMoUgDRQpM0FkG00jBID3aKqs+UBbgtzLgtG/CI/91tMFv0XPC30LeFA895qYgvGZtHdejZhiQ==} peerDependencies: - '@tiptap/core': 3.25.0 + '@tiptap/core': 3.26.0 - '@tiptap/extension-bubble-menu@3.25.0': - resolution: {integrity: sha512-IL6WRTMS0X6szJ1F9qrAbslbet8awUcQ4cJEJLL2lxDgcxpxDHcKxIQRsX5A7qmrWnHxo0tCIpsXKvJ6toaSCQ==} + '@tiptap/extension-bubble-menu@3.26.0': + resolution: {integrity: sha512-H2E3Hp0lV79jQV8YGtdDJkXkUalXZeYzKCx+vCZlDpb2ChS7/rNT9YY7poRA1NlJLUO0DH1wbAnFhx9KZMUx5g==} peerDependencies: - '@tiptap/core': 3.25.0 - '@tiptap/pm': 3.25.0 + '@tiptap/core': 3.26.0 + '@tiptap/pm': 3.26.0 - '@tiptap/extension-bullet-list@3.25.0': - resolution: {integrity: sha512-v0+0kvg0CddW4bz05YVssnMhfe+4x32Tg9qNzYMYK4jGtSm5GDLYG7JaOqAUwiXj5jhKmoOTfXzV6cB5Tk4OEA==} + '@tiptap/extension-bullet-list@3.26.0': + resolution: {integrity: sha512-Jv7BX+kBB2wUIvO/NhuUjv+T3kAed2Tjr664fgQ2zKT6X69jKIkYuCCedrIHuOyaOQ+SBDuH9h51wYv/E97QgQ==} peerDependencies: - '@tiptap/extension-list': 3.25.0 + '@tiptap/extension-list': 3.26.0 - '@tiptap/extension-code-block@3.25.0': - resolution: {integrity: sha512-bMKhg+Qcve1O3L5k6dzNCbCI/QsWPK1ez+1k9CQEd5rO0mwCpqLGb5tyFztI6umdFr5dulI3FZVt8IOtUptuxQ==} + '@tiptap/extension-code-block@3.26.0': + resolution: {integrity: sha512-WPN9iZ3UjeDD2ckDzSs9tleibXv0cLj7j575NxuvjhwZTehYGNeYDSUTi+6DQUG6bKbhGg9Wcei5H0131vvJHg==} peerDependencies: - '@tiptap/core': 3.25.0 - '@tiptap/pm': 3.25.0 + '@tiptap/core': 3.26.0 + '@tiptap/pm': 3.26.0 - '@tiptap/extension-code@3.25.0': - resolution: {integrity: sha512-1Lcwwny7JwQ6m2wEqytKWmSfQzV0ONhZqUmMaAAAFvDCCG7dRPOVKT+3s0UqFlGePP1xbYl0Yy0YOVv3M6sedg==} + '@tiptap/extension-code@3.26.0': + resolution: {integrity: sha512-VJYcV6rvjnENRTroOi9tDcHWW6G0pmCoRETwatlbgfDzuCmkTOwVwQjeJCXOVMMLNPzNiXZzibsRCUt+Azq/jw==} peerDependencies: - '@tiptap/core': 3.25.0 + '@tiptap/core': 3.26.0 - '@tiptap/extension-document@3.25.0': - resolution: {integrity: sha512-YEENTItTHdOiIAemTDej2HsbMvq4IlrgQ7obR89Kyaxs2oE4gYw0GPA3gjHfuJnv2VHMQqFn7K37nlyuiABhHw==} + '@tiptap/extension-document@3.26.0': + resolution: {integrity: sha512-Xhd6DCjaxCN4otQNvV6qra+XuoIjk6Vyjm87E5xn5Y/BMw7UGAG7LTkk3C2IEvxKrVZwJjalfxEqdHOgXQzVfw==} peerDependencies: - '@tiptap/core': 3.25.0 + '@tiptap/core': 3.26.0 - '@tiptap/extension-dropcursor@3.25.0': - resolution: {integrity: sha512-4SyWreaR82Gx1vMp5fYTM+acijNNWXQyrx7yKQPFSjh1I9cPNz3wvQEY6gEpBQ6WDwS/WdUIZq9nw99JQx7XRQ==} + '@tiptap/extension-dropcursor@3.26.0': + resolution: {integrity: sha512-rhAtp5J/YVDUCUIc5T7b0XY9dLeuI72JgOr53w0QQc0VA0uwbfTn7sx0LI9PDCE9uwmDH8H3snVRZRnAvlM8oA==} peerDependencies: - '@tiptap/extensions': 3.25.0 + '@tiptap/extensions': 3.26.0 - '@tiptap/extension-emoji@3.25.0': - resolution: {integrity: sha512-tnp1fsZ7jUNPY3ZJzpKshWzWA8fzeqzTgsbDWXGMRmdzLVe8N8kXeoI36pgpL3hsqg8YhhZsCDXHbI3Rt2/0bQ==} + '@tiptap/extension-emoji@3.26.0': + resolution: {integrity: sha512-2AGUh7fdX1gwWiwd+wBSHadLMxLB6fjtrFwqTPiFoaavmrc/nKgYSvuJ3fo1Hs76gzJ5IjriGrPC89/Ok4MDVA==} peerDependencies: - '@tiptap/core': 3.25.0 - '@tiptap/pm': 3.25.0 - '@tiptap/suggestion': 3.25.0 + '@tiptap/core': 3.26.0 + '@tiptap/pm': 3.26.0 + '@tiptap/suggestion': 3.26.0 - '@tiptap/extension-floating-menu@3.25.0': - resolution: {integrity: sha512-ZUC+89Kggg4zxRcb8NxyMwErnGxwp5GDVqjxrqo7DReYiOuKeKF/tqvxxa/x+ADJ0Hsy36hVUJqd6gzoi02njA==} + '@tiptap/extension-floating-menu@3.26.0': + resolution: {integrity: sha512-reQ77NRYAOP7iPudsNbzLBuBTdL2aGxZzjccUFmE2lNdmwP23n9A/JhkuUhshVBs/6IozvahI+smG3Bnea0TCQ==} peerDependencies: '@floating-ui/dom': ^1.0.0 - '@tiptap/core': 3.25.0 - '@tiptap/pm': 3.25.0 + '@tiptap/core': 3.26.0 + '@tiptap/pm': 3.26.0 - '@tiptap/extension-gapcursor@3.25.0': - resolution: {integrity: sha512-XLXfYLtP744b88qLEWcUUAMB0yD3TFGUtfiFh5eYw3ybOW/BA0f6SIJQWk6l0Uk8TZ1x/YQURWNo07/csJcwew==} + '@tiptap/extension-gapcursor@3.26.0': + resolution: {integrity: sha512-SIe68SDwx2fozt/XKG0FhCwzz/yRN6Bvo4D5TqvfDg6NK3PQb1DS4GN9PilmJqbY+kXryuiWEEJOWi7HpO8SuQ==} peerDependencies: - '@tiptap/extensions': 3.25.0 + '@tiptap/extensions': 3.26.0 - '@tiptap/extension-hard-break@3.25.0': - resolution: {integrity: sha512-86JdgqwBUSPhLH5l5TaOA1JbdaE1nCEv/INdPykVCC0Tlf1sdoF356rmFNLo8cLxmDLp9bTVo85EZx7HWl+d+w==} + '@tiptap/extension-hard-break@3.26.0': + resolution: {integrity: sha512-baXvv/rtOTVd2Axjb7Zbb41Y9Qmy3U2fP7EHqLuhViqGxVX8LwQtP0PHUXEZkPokbBpRez10+dmOlvvsYFKAZQ==} peerDependencies: - '@tiptap/core': 3.25.0 + '@tiptap/core': 3.26.0 - '@tiptap/extension-heading@3.25.0': - resolution: {integrity: sha512-3SJGZgV3cNQiUi98dWQQ3SFQAKaZg+O8PTdQmA4XC4JJn3NgDpBHiRz+bSE4NYjaRXk8DOq3+zxgGGiaGsC1Ww==} + '@tiptap/extension-heading@3.26.0': + resolution: {integrity: sha512-qenEQEgzE5FjQay/H6iKOnwIt6DPO27cS+v0mGhXmrL1MjrNER4X0ZkATJbVd0WA6ffsAGaP44NKYDworGeidw==} peerDependencies: - '@tiptap/core': 3.25.0 + '@tiptap/core': 3.26.0 - '@tiptap/extension-horizontal-rule@3.25.0': - resolution: {integrity: sha512-Ku1PQxiBoprEwf7O2uzJSYvfpkQ26UhZ4tptXqCUdsG9IXYn/Gg9qAtJrm8UFnPwsxm0CrkMsAlAG3JmBrtXKQ==} + '@tiptap/extension-horizontal-rule@3.26.0': + resolution: {integrity: sha512-a+N/C4wkQV+/8x4ShdoiC2JdTW3Tw84C5cAloYLFMeaWmRa2me9ACSI+zo0SO9bbH9RJwsoRp7eaxBbk27eF1Q==} peerDependencies: - '@tiptap/core': 3.25.0 - '@tiptap/pm': 3.25.0 + '@tiptap/core': 3.26.0 + '@tiptap/pm': 3.26.0 - '@tiptap/extension-italic@3.25.0': - resolution: {integrity: sha512-eZw+q8mtap8n0B5LtvPSgpyqkSIL7FzT7syD5ut++29FoXNl3fhJO6ct0hspWKFB4ihbvo3NG2gIwHi2ESXQow==} + '@tiptap/extension-italic@3.26.0': + resolution: {integrity: sha512-s8oFpH+0xmhvY19f452/2dExO3p1tjxh761g6cg4irwEUNUEAJKF2VLcjiaeOhNJ+pmnQYxb+VSkwkXvO+7vHQ==} peerDependencies: - '@tiptap/core': 3.25.0 + '@tiptap/core': 3.26.0 - '@tiptap/extension-link@3.25.0': - resolution: {integrity: sha512-DauqQS55xZACzPb0+KxXDiDw1GVDszltMUikHSLZSCp1+EjPSVt86X8CxJNc83rC/ZrqJMM/iUK74DHRUg2XSA==} + '@tiptap/extension-link@3.26.0': + resolution: {integrity: sha512-FA/d157aBxyvZFvsdc5eSu46tmHWXebAsqOQSvivOMyw+deBb00VlMsf+iD2J8+sekjbMYwx/hvbsu+xUoX43Q==} peerDependencies: - '@tiptap/core': 3.25.0 - '@tiptap/pm': 3.25.0 + '@tiptap/core': 3.26.0 + '@tiptap/pm': 3.26.0 - '@tiptap/extension-list-item@3.25.0': - resolution: {integrity: sha512-RfxDdLXUggC4tKB9V8Vhfxqjn4ZFbL2suFpl3ct0RY7ynrv9tE66ukYQ2SPg6rAYZK+WxVND0VSeLFB5QclO2A==} + '@tiptap/extension-list-item@3.26.0': + resolution: {integrity: sha512-MccGyj9HY4fkl04eIiFoTCkr8067Jku/VVdJNtRWW104Spx43C/7V2zpbxPvpcDhq3dW384fDxYXfpnb186xLg==} peerDependencies: - '@tiptap/extension-list': 3.25.0 + '@tiptap/extension-list': 3.26.0 - '@tiptap/extension-list-keymap@3.25.0': - resolution: {integrity: sha512-8JOWSQc4mpXNmQWn52THIEpcGdVgBz51J/pz/KcbJBMDZIPvB7nDwFsLkkURrcWDX0DO7G9uepjvAEb8LfBFXg==} + '@tiptap/extension-list-keymap@3.26.0': + resolution: {integrity: sha512-oBcj6qaNrRHQ+N0+pDuOVAQa4Nx9r8Cm5ANvyM2lTpoy60sOLOizuVvcvw1andVxbSrsZ1N/Sk+RZWyv1uoWyQ==} peerDependencies: - '@tiptap/extension-list': 3.25.0 + '@tiptap/extension-list': 3.26.0 - '@tiptap/extension-list@3.25.0': - resolution: {integrity: sha512-bYw4o2YiTdj/tdgktgbMRUfqAJgsnRkwUQTTKElycPdIwlNNs6EQiXku+E2ACftLaFxd3Ek+P50H0AQ5fA/hPw==} + '@tiptap/extension-list@3.26.0': + resolution: {integrity: sha512-EM8woyHDNKLEQ+lWUEoDtA4KrwP6fei/mYX1NxseMzKHHo7LFecx7wk6sovAXZrUvdML/yFBihgiMiO5VIsfkg==} peerDependencies: - '@tiptap/core': 3.25.0 - '@tiptap/pm': 3.25.0 + '@tiptap/core': 3.26.0 + '@tiptap/pm': 3.26.0 - '@tiptap/extension-mention@3.25.0': - resolution: {integrity: sha512-iSX3A+fxZROnsXq8KRTeODLV3v37kiCt+U20Q18SAV+ED5XCjnRuvsAkAnrfInt0S90/on1vomdRIMrE3Ho+HQ==} + '@tiptap/extension-mention@3.26.0': + resolution: {integrity: sha512-YBUt978hsvHOsDtDVPpCjaBItjHxdH/m4x9kmFxdG8JrK0j6yURegM6Hwn/JHikGTXL0ad58QS5IC2a7Tngk8g==} peerDependencies: - '@tiptap/core': 3.25.0 - '@tiptap/pm': 3.25.0 - '@tiptap/suggestion': 3.25.0 + '@tiptap/core': 3.26.0 + '@tiptap/pm': 3.26.0 + '@tiptap/suggestion': 3.26.0 - '@tiptap/extension-ordered-list@3.25.0': - resolution: {integrity: sha512-3qs1Q7HgJWlgI0VDXGMiTKTOQdNKN6omAgaq5i+jITCbKn+OKC95E9tbkTq9fPWPgH0svJRUfvvACRem4rhJew==} + '@tiptap/extension-ordered-list@3.26.0': + resolution: {integrity: sha512-ItLdFlcMsJz2vhbs1PcUfcN7nzVqGBOwPeCrrWxjrgscp+K3JoOGD+HhVVpBACOMwivUrlh8Ry5Ohvues2nOeA==} peerDependencies: - '@tiptap/extension-list': 3.25.0 + '@tiptap/extension-list': 3.26.0 - '@tiptap/extension-paragraph@3.25.0': - resolution: {integrity: sha512-yETzkQFjcRA7JeaAw927qaT5xTweAMr1rznN5fRxJdHdURPjvm+8gz76W/8DuloN4EF/fzAjpVBXZwwcJ+61yg==} + '@tiptap/extension-paragraph@3.26.0': + resolution: {integrity: sha512-h8fYLikg4qN39IghQ1y9g+zzUsgxBpDi5YS3IZbWoxWYYx1YqLL8nAvOiPr7Us14aQ0TjA2/xY7zqmyf29rX1A==} peerDependencies: - '@tiptap/core': 3.25.0 + '@tiptap/core': 3.26.0 - '@tiptap/extension-placeholder@3.25.0': - resolution: {integrity: sha512-QrMwpQeHQ+DPbbaNe1i4ppofYkEZycZg0hFLeYHTVeGBf6cHkoBuF9LEEuaLIKoOVfVpNx0PT54eQAN9YAETEw==} + '@tiptap/extension-placeholder@3.26.0': + resolution: {integrity: sha512-q9RsGWmL0xEwrMK5Wx53eMdZlkA3J1cqloIc69rEugjOCjoExEkfF4e2nC9YK49qGxJZBKKksw1Ij7oCWEyu+g==} peerDependencies: - '@tiptap/extensions': 3.25.0 + '@tiptap/extensions': 3.26.0 - '@tiptap/extension-strike@3.25.0': - resolution: {integrity: sha512-rtM9tkqH8XWay7TplUcXPjlBiNg/dbEOuaCvZGvNxTw8xbH+cmEGPxojWVW6oVMsQodBlUoNveATE2yzhiUB1A==} + '@tiptap/extension-strike@3.26.0': + resolution: {integrity: sha512-jUll3Pqhq7u1JKvO0B6USW/bmVmUsO6sRcxo/d5tXqLhS0tWAobOGoGU2IgwXnQDSjf+vF73RYD5tRGDLkRC9Q==} peerDependencies: - '@tiptap/core': 3.25.0 + '@tiptap/core': 3.26.0 - '@tiptap/extension-text@3.25.0': - resolution: {integrity: sha512-qXAYiIIOX7F6wVftN7FeHTAg9lDLzgqrscrT4BJxTL3Vk38EP1R3w1sDDfSCTQ53ui8SzoaKe0iyzkTa6V/1LQ==} + '@tiptap/extension-text@3.26.0': + resolution: {integrity: sha512-yZXdevp3/8omGbb40Z52VfvID+tsRNhPQ1GNUToD56XSr2BjdJyAzAb9rWGgDKgVMUPLgJ26yT0O278RFqOKhA==} peerDependencies: - '@tiptap/core': 3.25.0 + '@tiptap/core': 3.26.0 - '@tiptap/extension-underline@3.25.0': - resolution: {integrity: sha512-GTCjXnOhjQ8ipiOrdskMdBqQ8nUnczFWWNJ5IoCkMcEDWviOS14Mr2n6zewjlKjtPoRTzwOpFDQUevSK1SHpJg==} + '@tiptap/extension-underline@3.26.0': + resolution: {integrity: sha512-LlVkivH5cBwov/EMD8BL7ZRcU6YcadiSVIffLW1hyalw9YfhaFzoLxjtWhL7jiU/n2Kg+9dXSZxmV2hTeTwyrQ==} peerDependencies: - '@tiptap/core': 3.25.0 + '@tiptap/core': 3.26.0 - '@tiptap/extensions@3.25.0': - resolution: {integrity: sha512-aRXZwOPLdIRey28uctNT/Nbh3EaiNYnKt5qBhBbxs5aTtwoExzYAEtR7D8KjpUVBJAZNeLwFxvD2Ub+F94uAAw==} + '@tiptap/extensions@3.26.0': + resolution: {integrity: sha512-4wajuqnO2X0+LVvsBjW/xk3/tmdb16bNL939QhicAay4YYqXITeV2v3XJsryzmG4L5GkK1yLxvRGk4aLoxWrnA==} peerDependencies: - '@tiptap/core': 3.25.0 - '@tiptap/pm': 3.25.0 + '@tiptap/core': 3.26.0 + '@tiptap/pm': 3.26.0 - '@tiptap/pm@3.25.0': - resolution: {integrity: sha512-JeaVgyLj0gQZ1gVxDI73QkP+/Ozcjyp37HyL1pXLCRVjY8nnsDrdMzuKsP1SWN2fOhC+JBGW8/88g0rPmwZQFg==} + '@tiptap/pm@3.26.0': + resolution: {integrity: sha512-q4RDeWwVrhOL0jJCGRgGxLSdjOYwzQ4h2InURZVhC66433ipcHd6f3bqSOhcXZ4r0sFmMNsuF7aZmUntjWLc7w==} - '@tiptap/react@3.25.0': - resolution: {integrity: sha512-S0KhuF+Vs/bJeKc2oxgCA33C3q5rMFOqleQCSx18W80jygeGnLaQ6c8yVUlbR1YQJwVk2gm1X15719580kBYIg==} + '@tiptap/react@3.26.0': + resolution: {integrity: sha512-NLPAG6tk4/AsfOsUNsbGqdgIHuGsD4A/hlYriozuo+LCAAduuluhzsL/MEHZXtFT4GXUOlCdaEqNCOrMuz/zaw==} peerDependencies: - '@tiptap/core': 3.25.0 - '@tiptap/pm': 3.25.0 + '@tiptap/core': 3.26.0 + '@tiptap/pm': 3.26.0 '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0 '@types/react-dom': ^17.0.0 || ^18.0.0 || ^19.0.0 react: ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0 - '@tiptap/starter-kit@3.25.0': - resolution: {integrity: sha512-bKe1BhA8YXX7DHC6dsvkkedeQM7r2Iif36i9meTY4szNd9limlnP0ZlFBrBcktl7D/XFy1rkDfD+diWfYeG9BQ==} + '@tiptap/starter-kit@3.26.0': + resolution: {integrity: sha512-o34EtMfqtBaljdmeElZsRG/067oGx9Zcq+j2GWo71KlZe22ga/ALexeTf1c+ETsjCxSTKR6eyQ4RZvz/2JpYfg==} - '@tiptap/suggestion@3.25.0': - resolution: {integrity: sha512-1Idw1WM4Oz9v+3fQ00nh0sajNjIjUtcAREni1Ivky/r1JV6IGjp0q8/v86YQGvp7B+R6OsRks62H8cKO7J+TJg==} + '@tiptap/suggestion@3.26.0': + resolution: {integrity: sha512-3jxBvjmfooQroR0eCw61kSgr+g90KFVD3dM5bANhpQbCpCYRydp/iXDQmpoPHjv8FpeU5JZgcnJ3R9vhjeIM2A==} peerDependencies: - '@tiptap/core': 3.25.0 - '@tiptap/pm': 3.25.0 + '@tiptap/core': 3.26.0 + '@tiptap/pm': 3.26.0 '@turbo/darwin-64@2.9.16': resolution: {integrity: sha512-jLjApWTSNd7JZ5JaLYfelW1ytnGQOvB7ivl+2RD1xQvJTbi8I9gBjzcga7tDZVPyaxpl10YTfJt3BrYXR18KDw==} @@ -6474,8 +6371,8 @@ packages: '@types/needle@3.3.0': resolution: {integrity: sha512-UFIuc1gdyzAqeVUYpSL+cliw2MmU/ZUhVZKE7Zo4wPbgc8hbljeKSnn6ls6iG8r5jpegPXLUIhJ+Wb2kLVs8cg==} - '@types/node@24.13.0': - resolution: {integrity: sha512-5vtOqGQr4NJKeEzV441FcOi2MeG9UTWq9LqVLGneDdu4vlX17H8kQ2PA2UmNwCUGPVDj4oBjNhS7ReVEIWJJrg==} + '@types/node@24.13.1': + resolution: {integrity: sha512-RSpUJGmvsJ1ZeBehQZFhIdpsz+bIpES0nIQXko4Ybq+N+kX6XvOq3Jo+iJ82FWLdblFq85AsMikd3m35jgezYg==} '@types/nodemailer@8.0.0': resolution: {integrity: sha512-fyf8jWULsCo0d0BuoQ75i6IeoHs47qcqxWc7yUdUcV0pOZGjUTTOvwdG1PRXUDqN/8A64yQdQdnA2pZgcdi+cA==} @@ -6680,8 +6577,8 @@ packages: resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} engines: {node: '>= 14'} - ai@6.0.196: - resolution: {integrity: sha512-2T45UeqKL4a11KQ14I5i1YYHOvCFrMF478E1k6PVjlQSGUvXSv4xrxIaQbUL4qgv91DADSbddwv3oR49pPAK3g==} + ai@6.0.197: + resolution: {integrity: sha512-U3KsjkqwQXGHC0u0VeUDqUaNaBS/uQc7v4Vj92Cjv5lPx5DIyRBQYk4Hipy5vwD9AQKIG8uRvdaN9R+pAvrtcQ==} engines: {node: '>=18'} peerDependencies: zod: ^4.3.6 @@ -6789,8 +6686,8 @@ packages: base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - baseline-browser-mapping@2.10.33: - resolution: {integrity: sha512-bA6+tcSLpz2tIEdDXZPpPTIuxBcC4+w6SieaYyfigIa4h8GlFxbA17v22Vx3JUtuZQj9SgOsnbK+aTBzyDyEuw==} + baseline-browser-mapping@2.10.34: + resolution: {integrity: sha512-IMDedajPifLnHNY0X9n8hKxRTQ6/eTHwr5bDo04WnuqxyKw6LYtQywCuuqPZwhl3aBXMvQpJov42GLCwRRdQzw==} engines: {node: '>=6.0.0'} hasBin: true @@ -6945,8 +6842,8 @@ packages: caniuse-api@3.0.0: resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} - caniuse-lite@1.0.30001793: - resolution: {integrity: sha512-iwSsYWaCOoh26cV8NwNRViHlrfUvYsHDfRVcbtmw0Kg6PJIZZXwMkj1442FYLBGkeUf1juAsU3DTfxW579mrPA==} + caniuse-lite@1.0.30001797: + resolution: {integrity: sha512-l8xKG+gwAIExZGl9FrF7KUwuOmk6wbEPC9Xoy/RtnWv1XG0Q4LFlagaLpUv3Kiza3W/wm27zy0yWJEieYKAP6w==} capnp-ts@0.7.0: resolution: {integrity: sha512-XKxXAC3HVPv7r674zP0VC3RTXz+/JKhfyw94ljvF80yynK6VkTnqE3jMuN8b3dUVmmc43TjyxjW4KTsmB3c86g==} @@ -7615,8 +7512,8 @@ packages: ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - electron-to-chromium@1.5.367: - resolution: {integrity: sha512-4Mk/mrynCNQ+atY40D3UpmhLWB6AHMbYMlIrPhHcMF6x0L7O0b052FCAsxw1LlaR++UFuNg3D/A6XCuGDa0guQ==} + electron-to-chromium@1.5.368: + resolution: {integrity: sha512-7RckJJK4uESJF9PxvfMWd3TGqIiieUTG4HxnKaKuIpGbcr+r2ZEB3g2gAhCP3Fqm42vJSzLfgab9eva/C4/XVw==} embla-carousel-react@8.6.0: resolution: {integrity: sha512-0/PjqU7geVmo6F734pmPqpyHqiM99olvyecY7zdweCw+6tKEXnrE90pBiBbMMU8s5tICemzpQ3hi5EpxzGW+JA==} @@ -7677,8 +7574,8 @@ packages: resolution: {integrity: sha512-6QEuw3zoX1SJQc7b87aBXke/no+mG2bTBgw29gWMQonLmpEkWoCAVkl+M49e48AZlWzxiDzDZzYdp6kobcyLww==} engines: {node: '>=10.13.0'} - enhanced-resolve@5.22.2: - resolution: {integrity: sha512-0rxICaFZ7NQho/sHely2bvOPRP0Eu2B0NZ9zM54YvRvWMn7jfz3DmnOZDR9LlXDdDcqntAVc6Hfy4gr/tdH/Ag==} + enhanced-resolve@5.23.0: + resolution: {integrity: sha512-yJN/BOOLxcOW2aQgeif9mSnaUB8KtvmMMp56oA1kx1CRfBKbhZm2pJ+NBY+3eOboHxix8lfjWpHE0Ei5U8RbSA==} engines: {node: '>=10.13.0'} entities@2.2.0: @@ -7967,14 +7864,22 @@ packages: function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - gaxios@7.1.4: - resolution: {integrity: sha512-bTIgTsM2bWn3XklZISBTQX7ZSddGW+IO3bMdGaemHZ3tbqExMENHLx6kKZ/KlejgrMtj8q7wBItt51yegqalrA==} + gaxios@7.1.3: + resolution: {integrity: sha512-YGGyuEdVIjqxkxVH1pUTMY/XtmmsApXrCVv5EU25iX6inEPbV+VakJfLealkBtJN69AQmh1eGOdCl9Sm1UP6XQ==} + engines: {node: '>=18'} + + gaxios@7.1.5: + resolution: {integrity: sha512-5FZy72Rh8LhtjmvDrKkI+lVhrsQrVKVsItxMoDm5mNQE+xR0WVIIs+jzPSJgBvKVsLi24fZhXJIsNI0bihDzFg==} engines: {node: '>=18'} gcp-metadata@8.1.2: resolution: {integrity: sha512-zV/5HKTfCeKWnxG0Dmrw51hEWFGfcF2xiXqcA3+J90WDuP0SvoiSO5ORvcBsifmx/FoIjgQN3oNOGaQ5PhLFkg==} engines: {node: '>=18'} + gcp-metadata@8.1.3: + resolution: {integrity: sha512-ziTrzUhhpL9Zk5k0HHzgP/KIpWDJT0VMBC/ynt/QIBvTW+UUcSivQRl6VlwTf/EilDxtSWklHoRsKy1c4k+59w==} + engines: {node: '>=18'} + gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} @@ -8018,11 +7923,13 @@ packages: glob@10.5.0: resolution: {integrity: sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==} + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me hasBin: true glob@11.1.0: resolution: {integrity: sha512-vuNwKSaKiqm7g0THUBu2x7ckSs3XJLXE+2ssL7/MfTGPLLcrJQ/4Uq1CjPTtO5cCIiRxqvN6Twy1qOwhL0Xjcw==} engines: {node: 20 || >=22} + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me hasBin: true glob@13.0.6: @@ -8036,16 +7943,20 @@ packages: globrex@0.1.2: resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} - google-auth-library@10.6.2: - resolution: {integrity: sha512-e27Z6EThmVNNvtYASwQxose/G57rkRuaRbQyxM2bvYLLX/GqWZ5chWq2EBoUchJbCc57eC9ArzO5wMsEmWftCw==} + google-auth-library@10.5.0: + resolution: {integrity: sha512-7ABviyMOlX5hIVD60YOfHw4/CxOfBhyduaYB+wbFWCWoni4N7SLcV46hrVRktuBbZjFC9ONyqamZITN7q3n32w==} + engines: {node: '>=18'} + + google-auth-library@10.7.0: + resolution: {integrity: sha512-QpTAbNJ36TliZLx3TTtahR8HG0hN9RllL1e3FymOvQSIKK8JmgV58H924ub2wa2DsS3ANjjP1Aw1N+Ramc8hqQ==} engines: {node: '>=18'} google-logging-utils@1.1.3: resolution: {integrity: sha512-eAmLkjDjAFCVXg7A1unxHsLf961m6y17QFqXqAXGj/gVkKFrEICfStRfwUlGNfeCEjNRa32JEWOUTlYXPyyKvA==} engines: {node: '>=14'} - googleapis-common@8.0.1: - resolution: {integrity: sha512-eCzNACUXPb1PW5l0ULTzMHaL/ltPRADoPgjBlT8jWsTbxkCp6siv+qKJ/1ldaybCthGwsYFYallF7u9AkU4L+A==} + googleapis-common@8.0.2: + resolution: {integrity: sha512-5MXeQzIZaqCH7B+HJWqhQm946VARpZep6acbWSr/fcgF2cQANq7allgX+i/G0EqF0WyUxB277gtWMzRYHMl9tg==} engines: {node: '>=18.0.0'} googleapis@171.4.0: @@ -8063,6 +7974,10 @@ packages: resolution: {integrity: sha512-cQOsSMS/IrDz82PVyRDvf/Q1F/bRbBVjJlh+xYOkI1qw2bWRvWGiWc+m2O0d6l4Bt1fyY+8kzJ8JFWGJqNeDBg==} engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} + gtoken@8.0.0: + resolution: {integrity: sha512-+CqsMbHPiSTdtSO14O51eMNlrp9N79gmeqmXeouJOhfucAedHw9noVe/n5uJk3tbKE6a+6ZCQg3RPhVhHByAIw==} + engines: {node: '>=18'} + has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} @@ -8252,9 +8167,10 @@ packages: intersection-observer@0.12.2: resolution: {integrity: sha512-7m1vEcPCxXYI8HqnL8CKI6siDyD+eIWSwgB3DZA+ZTogxk9I4CDnj4wilt9x/+/QbHI4YG5YZNmC6458/e9Ktg==} + deprecated: The Intersection Observer polyfill is no longer needed and can safely be removed. Intersection Observer has been Baseline since 2019. - intl-messageformat@11.2.7: - resolution: {integrity: sha512-+q6Ktg119nULZEpZ8YTuGOst9MyEzFtjD63FTGBlN1mLz0Z/MOUYDIvnpVKwq17eezIEh+cfJIebfJoCetpiNw==} + intl-messageformat@11.2.8: + resolution: {integrity: sha512-l323RCl3qJDVQ8U9j74ut/hVMdg3VPsOHpVMDvFfz9qiq4dPO5ooVYFNVUzzrpgG39a+RLzcXyJb8VFgIU+tUA==} ioredis@5.10.1: resolution: {integrity: sha512-HuEDBTI70aYdx1v6U97SbNx9F1+svQKBDo30o0b9fw055LMepzpOOd0Ccg9Q6tbqmBSJaMuY0fB7yw9/vjBYCA==} @@ -8475,8 +8391,8 @@ packages: resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} engines: {node: '>=6'} - knip@6.15.0: - resolution: {integrity: sha512-uBaKFEGcu/HG4EY2gWFBMr+fBF43Jftoc2riJX51TKME1Z46C8UQIbNEusenYbEWihphxe2PY0Kns0yPvPYz4A==} + knip@6.16.1: + resolution: {integrity: sha512-TKMn1rxgH6h9vXR9Y0B+Cq7AdPTr9EI02IwoT65NzqYUkvoDQAaJ/aPybiFpAhZ1px6cNYYwXf86iHkBgzCo9w==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true @@ -8554,8 +8470,8 @@ packages: libmime@5.3.8: resolution: {integrity: sha512-ZrCY+Q66mPvasAfjsQ/IgahzoBvfE1VdtGRpo1hwRB1oK3wJKxhKA3GOcd2a6j7AH5eMFccxK9fBoCpRZTf8ng==} - libphonenumber-js@1.13.5: - resolution: {integrity: sha512-7/kRezHmQlMfO6pmvt34orO/g3j1C47k8FCBXFgj/mklTLwQdBca1LkhDK6RM8UyM6JqHFAIikMdkKkyfQy39A==} + libphonenumber-js@1.13.6: + resolution: {integrity: sha512-NdB6O6QvlGMCoG003m0YIKG2+Xw7DjmCZhmc1RH+K6HncADUbRf8TZeLegxBBN1VFyPHcNpPTKpIhYLXzJVy1Q==} libqp@2.1.1: resolution: {integrity: sha512-0Wd+GPz1O134cP62YU2GTOPNA7Qgl09XwCqM5zpBv87ERCXdfDtyKXvV7c9U22yWJh44QZqBocFnXN11K96qow==} @@ -9048,6 +8964,7 @@ packages: node-domexception@1.0.0: resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} engines: {node: '>=10.5.0'} + deprecated: Use your platform's native DOMException instead node-ensure@0.0.0: resolution: {integrity: sha512-DRI60hzo2oKN1ma0ckc6nQWlHU69RH6xN0sjQTjMpChPfTYvKZdcQFfdYK2RWbJcKyUizSIy/l8OTGxMAM1QDw==} @@ -9113,8 +9030,8 @@ packages: react-router-dom: optional: true - nwsapi@2.2.23: - resolution: {integrity: sha512-7wfH4sLbt4M0gCDzGE6vzQBo0bfTKjU7Sfpqy/7gs1qBfYz2vEJH6vXcBKpO3+6Yu1telwd0t9HpyOoLEQQbIQ==} + nwsapi@2.2.24: + resolution: {integrity: sha512-7YRhZ3jS45LwmSCT4b2sVFHt/WuovaktDU07QrtOBY2PXskss5a9jfmR9jptyumwXST+rFjrmppMY1KT/yn35A==} nypm@0.6.6: resolution: {integrity: sha512-vRyr0r4cbBapw07Xw8xrj9Teq3o7MUD35rSaTcanDbW+aK2XHDgJFiU6ZTj2GBw7Q12ysdsyFss+Vdz4hQ0Y6Q==} @@ -9640,8 +9557,8 @@ packages: proto-list@1.2.4: resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} - protobufjs@8.5.0: - resolution: {integrity: sha512-df1jWDPA5VIBNRtuAHjqr09f2qN5D4Vke1wYqOQg1XJ7ZDpA7BD6L7E4tyChgGRLB5hqk2m79Zsy0WHwV9a84A==} + protobufjs@8.6.1: + resolution: {integrity: sha512-s4qQPr4pU0W95iYnUInh95skjIg+3aM2sakYsw60QYanU+qWRDY2zQxOAQV6zU7ROJpSNDG9B+VSmk4dqdWWSA==} engines: {node: '>=12.0.0'} proxy-addr@2.0.7: @@ -9679,8 +9596,8 @@ packages: resolution: {integrity: sha512-h36JMxKRqrAxVD8201FrCpyeNuUY9Y5zZwujr20fFO77tpUtGa6EZzfKw/3WaiBX95fq7+MpsuMLNdSnORAwSA==} engines: {node: '>=14.18.0'} - radix-ui@1.4.3: - resolution: {integrity: sha512-aWizCQiyeAenIdUbqEpXgRA1ya65P13NKn/W8rWkcN0OPkRDxdBVLWnIEDsS2RpwCK2nobI7oMUSmexzTDyAmA==} + radix-ui@1.5.0: + resolution: {integrity: sha512-Nzh2HNpClgB31FBHRqt2xG8XNUfVfQRpf34hACC5PNrXTd5JdXdqOXwLs3BL+D8CNYiNQiJiT8QGr5Q4vq+00w==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -9934,6 +9851,10 @@ packages: resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + rimraf@5.0.10: + resolution: {integrity: sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==} + hasBin: true + rolldown-plugin-dts@0.23.2: resolution: {integrity: sha512-PbSqLawLgZBGcOGT3yqWBGn4cX+wh2nt5FuBGdcMHyOhoukmjbhYAl8NT9sE4U38Cm9tqLOIQeOrvzeayM0DLQ==} engines: {node: '>=20.19.0'} @@ -10045,6 +9966,11 @@ packages: engines: {node: '>=10'} hasBin: true + semver@7.8.2: + resolution: {integrity: sha512-c8jsqUZm3omBOI66G90z1Dyw5z622G8oLG+omfsHBJf3CWQTlOcwOjvOG6wtiNfW6anKm/eA39LMwMtMez2TiQ==} + engines: {node: '>=10'} + hasBin: true + send@1.2.1: resolution: {integrity: sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==} engines: {node: '>= 18'} @@ -10553,8 +10479,8 @@ packages: undici-types@7.18.2: resolution: {integrity: sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==} - undici-types@7.27.1: - resolution: {integrity: sha512-NyfbU7cCMYYxzBT07eOv0/WR3L5j6vmza6sRlF2sDVCkNvsNaCcaFDGu0a4WqzE983tKuSk7YRTY2C+1krumMg==} + undici-types@7.27.2: + resolution: {integrity: sha512-cH9f42mHuljpNuoS47sWDDWXVxWnJgYCzHVUlr3tn7+HVx0L6QSO+VG5qgzT4kXkR2K8ZsReaT5bupam6RNAEQ==} undici@5.29.0: resolution: {integrity: sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==} @@ -10651,6 +10577,7 @@ packages: uuid@9.0.1: resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + deprecated: uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028). hasBin: true uuniq@1.3.22: @@ -10833,6 +10760,7 @@ packages: whatwg-encoding@3.1.1: resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} engines: {node: '>=18'} + deprecated: Use @exodus/bytes instead for a more spec-conformant and faster implementation whatwg-mimetype@4.0.0: resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} @@ -11021,7 +10949,7 @@ snapshots: '@ai-sdk/provider-utils': 4.0.27(zod@4.4.3) zod: 4.4.3 - '@ai-sdk/gateway@3.0.124(zod@4.4.3)': + '@ai-sdk/gateway@3.0.125(zod@4.4.3)': dependencies: '@ai-sdk/provider': 3.0.10 '@ai-sdk/provider-utils': 4.0.27(zod@4.4.3) @@ -11041,7 +10969,7 @@ snapshots: pkce-challenge: 5.0.1 zod: 4.4.3 - '@ai-sdk/openai@3.0.67(zod@4.4.3)': + '@ai-sdk/openai@3.0.68(zod@4.4.3)': dependencies: '@ai-sdk/provider': 3.0.10 '@ai-sdk/provider-utils': 4.0.27(zod@4.4.3) @@ -11071,21 +10999,21 @@ snapshots: '@aws-crypto/crc32@5.2.0': dependencies: '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.973.10 + '@aws-sdk/types': 3.973.11 tslib: 2.8.1 '@aws-crypto/crc32c@5.2.0': dependencies: '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.973.10 + '@aws-sdk/types': 3.973.11 tslib: 2.8.1 '@aws-crypto/sha1-browser@5.2.0': dependencies: '@aws-crypto/supports-web-crypto': 5.2.0 '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.973.10 - '@aws-sdk/util-locate-window': 3.965.5 + '@aws-sdk/types': 3.973.11 + '@aws-sdk/util-locate-window': 3.965.6 '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 @@ -11094,15 +11022,15 @@ snapshots: '@aws-crypto/sha256-js': 5.2.0 '@aws-crypto/supports-web-crypto': 5.2.0 '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.973.10 - '@aws-sdk/util-locate-window': 3.965.5 + '@aws-sdk/types': 3.973.11 + '@aws-sdk/util-locate-window': 3.965.6 '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 '@aws-crypto/sha256-js@5.2.0': dependencies: '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.973.10 + '@aws-sdk/types': 3.973.11 tslib: 2.8.1 '@aws-crypto/supports-web-crypto@5.2.0': @@ -11111,46 +11039,42 @@ snapshots: '@aws-crypto/util@5.2.0': dependencies: - '@aws-sdk/types': 3.973.10 + '@aws-sdk/types': 3.973.11 '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 - '@aws-sdk/checksums@3.1000.1': + '@aws-sdk/checksums@3.1000.2': dependencies: '@aws-crypto/crc32': 5.2.0 '@aws-crypto/crc32c': 5.2.0 '@aws-crypto/util': 5.2.0 - '@aws-sdk/core': 3.974.17 - '@aws-sdk/types': 3.973.10 + '@aws-sdk/core': 3.974.18 + '@aws-sdk/types': 3.973.11 '@smithy/core': 3.24.6 '@smithy/types': 4.14.3 tslib: 2.8.1 - '@aws-sdk/client-s3@3.1061.0': + '@aws-sdk/client-s3@3.1063.0': dependencies: '@aws-crypto/sha1-browser': 5.2.0 '@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/core': 3.974.17 - '@aws-sdk/credential-provider-node': 3.972.50 - '@aws-sdk/middleware-bucket-endpoint': 3.972.20 - '@aws-sdk/middleware-expect-continue': 3.972.16 - '@aws-sdk/middleware-flexible-checksums': 3.974.26 - '@aws-sdk/middleware-location-constraint': 3.972.13 - '@aws-sdk/middleware-sdk-s3': 3.972.47 - '@aws-sdk/middleware-ssec': 3.972.13 - '@aws-sdk/signature-v4-multi-region': 3.996.31 - '@aws-sdk/types': 3.973.10 + '@aws-sdk/core': 3.974.18 + '@aws-sdk/credential-provider-node': 3.972.52 + '@aws-sdk/middleware-flexible-checksums': 3.974.27 + '@aws-sdk/middleware-sdk-s3': 3.972.48 + '@aws-sdk/signature-v4-multi-region': 3.996.32 + '@aws-sdk/types': 3.973.11 '@smithy/core': 3.24.6 '@smithy/fetch-http-handler': 5.4.6 - '@smithy/node-http-handler': 4.7.6 + '@smithy/node-http-handler': 4.7.7 '@smithy/types': 4.14.3 tslib: 2.8.1 - '@aws-sdk/core@3.974.17': + '@aws-sdk/core@3.974.18': dependencies: - '@aws-sdk/types': 3.973.10 - '@aws-sdk/xml-builder': 3.972.27 + '@aws-sdk/types': 3.973.11 + '@aws-sdk/xml-builder': 3.972.28 '@aws/lambda-invoke-store': 0.2.4 '@smithy/core': 3.24.6 '@smithy/signature-v4': 5.4.6 @@ -11158,93 +11082,93 @@ snapshots: bowser: 2.14.1 tslib: 2.8.1 - '@aws-sdk/credential-provider-env@3.972.43': + '@aws-sdk/credential-provider-env@3.972.44': dependencies: - '@aws-sdk/core': 3.974.17 - '@aws-sdk/types': 3.973.10 + '@aws-sdk/core': 3.974.18 + '@aws-sdk/types': 3.973.11 '@smithy/core': 3.24.6 '@smithy/types': 4.14.3 tslib: 2.8.1 - '@aws-sdk/credential-provider-http@3.972.45': + '@aws-sdk/credential-provider-http@3.972.46': dependencies: - '@aws-sdk/core': 3.974.17 - '@aws-sdk/types': 3.973.10 + '@aws-sdk/core': 3.974.18 + '@aws-sdk/types': 3.973.11 '@smithy/core': 3.24.6 '@smithy/fetch-http-handler': 5.4.6 - '@smithy/node-http-handler': 4.7.6 + '@smithy/node-http-handler': 4.7.7 '@smithy/types': 4.14.3 tslib: 2.8.1 - '@aws-sdk/credential-provider-ini@3.972.48': - dependencies: - '@aws-sdk/core': 3.974.17 - '@aws-sdk/credential-provider-env': 3.972.43 - '@aws-sdk/credential-provider-http': 3.972.45 - '@aws-sdk/credential-provider-login': 3.972.47 - '@aws-sdk/credential-provider-process': 3.972.43 - '@aws-sdk/credential-provider-sso': 3.972.47 - '@aws-sdk/credential-provider-web-identity': 3.972.47 - '@aws-sdk/nested-clients': 3.997.15 - '@aws-sdk/types': 3.973.10 + '@aws-sdk/credential-provider-ini@3.972.50': + dependencies: + '@aws-sdk/core': 3.974.18 + '@aws-sdk/credential-provider-env': 3.972.44 + '@aws-sdk/credential-provider-http': 3.972.46 + '@aws-sdk/credential-provider-login': 3.972.49 + '@aws-sdk/credential-provider-process': 3.972.44 + '@aws-sdk/credential-provider-sso': 3.972.49 + '@aws-sdk/credential-provider-web-identity': 3.972.49 + '@aws-sdk/nested-clients': 3.997.17 + '@aws-sdk/types': 3.973.11 '@smithy/core': 3.24.6 - '@smithy/credential-provider-imds': 4.3.7 + '@smithy/credential-provider-imds': 4.3.8 '@smithy/types': 4.14.3 tslib: 2.8.1 - '@aws-sdk/credential-provider-login@3.972.47': + '@aws-sdk/credential-provider-login@3.972.49': dependencies: - '@aws-sdk/core': 3.974.17 - '@aws-sdk/nested-clients': 3.997.15 - '@aws-sdk/types': 3.973.10 + '@aws-sdk/core': 3.974.18 + '@aws-sdk/nested-clients': 3.997.17 + '@aws-sdk/types': 3.973.11 '@smithy/core': 3.24.6 '@smithy/types': 4.14.3 tslib: 2.8.1 - '@aws-sdk/credential-provider-node@3.972.50': + '@aws-sdk/credential-provider-node@3.972.52': dependencies: - '@aws-sdk/credential-provider-env': 3.972.43 - '@aws-sdk/credential-provider-http': 3.972.45 - '@aws-sdk/credential-provider-ini': 3.972.48 - '@aws-sdk/credential-provider-process': 3.972.43 - '@aws-sdk/credential-provider-sso': 3.972.47 - '@aws-sdk/credential-provider-web-identity': 3.972.47 - '@aws-sdk/types': 3.973.10 + '@aws-sdk/credential-provider-env': 3.972.44 + '@aws-sdk/credential-provider-http': 3.972.46 + '@aws-sdk/credential-provider-ini': 3.972.50 + '@aws-sdk/credential-provider-process': 3.972.44 + '@aws-sdk/credential-provider-sso': 3.972.49 + '@aws-sdk/credential-provider-web-identity': 3.972.49 + '@aws-sdk/types': 3.973.11 '@smithy/core': 3.24.6 - '@smithy/credential-provider-imds': 4.3.7 + '@smithy/credential-provider-imds': 4.3.8 '@smithy/types': 4.14.3 tslib: 2.8.1 - '@aws-sdk/credential-provider-process@3.972.43': + '@aws-sdk/credential-provider-process@3.972.44': dependencies: - '@aws-sdk/core': 3.974.17 - '@aws-sdk/types': 3.973.10 + '@aws-sdk/core': 3.974.18 + '@aws-sdk/types': 3.973.11 '@smithy/core': 3.24.6 '@smithy/types': 4.14.3 tslib: 2.8.1 - '@aws-sdk/credential-provider-sso@3.972.47': + '@aws-sdk/credential-provider-sso@3.972.49': dependencies: - '@aws-sdk/core': 3.974.17 - '@aws-sdk/nested-clients': 3.997.15 - '@aws-sdk/token-providers': 3.1060.0 - '@aws-sdk/types': 3.973.10 + '@aws-sdk/core': 3.974.18 + '@aws-sdk/nested-clients': 3.997.17 + '@aws-sdk/token-providers': 3.1063.0 + '@aws-sdk/types': 3.973.11 '@smithy/core': 3.24.6 '@smithy/types': 4.14.3 tslib: 2.8.1 - '@aws-sdk/credential-provider-web-identity@3.972.47': + '@aws-sdk/credential-provider-web-identity@3.972.49': dependencies: - '@aws-sdk/core': 3.974.17 - '@aws-sdk/nested-clients': 3.997.15 - '@aws-sdk/types': 3.973.10 + '@aws-sdk/core': 3.974.18 + '@aws-sdk/nested-clients': 3.997.17 + '@aws-sdk/types': 3.973.11 '@smithy/core': 3.24.6 '@smithy/types': 4.14.3 tslib: 2.8.1 - '@aws-sdk/lib-storage@3.1061.0(@aws-sdk/client-s3@3.1061.0)': + '@aws-sdk/lib-storage@3.1063.0(@aws-sdk/client-s3@3.1063.0)': dependencies: - '@aws-sdk/client-s3': 3.1061.0 + '@aws-sdk/client-s3': 3.1063.0 '@smithy/core': 3.24.6 '@smithy/types': 4.14.3 buffer: 5.6.0 @@ -11252,89 +11176,69 @@ snapshots: stream-browserify: 3.0.0 tslib: 2.8.1 - '@aws-sdk/middleware-bucket-endpoint@3.972.20': + '@aws-sdk/middleware-flexible-checksums@3.974.27': dependencies: - '@aws-sdk/middleware-sdk-s3': 3.972.47 + '@aws-sdk/checksums': 3.1000.2 tslib: 2.8.1 - '@aws-sdk/middleware-expect-continue@3.972.16': + '@aws-sdk/middleware-sdk-s3@3.972.48': dependencies: - '@aws-sdk/middleware-sdk-s3': 3.972.47 - tslib: 2.8.1 - - '@aws-sdk/middleware-flexible-checksums@3.974.26': - dependencies: - '@aws-sdk/checksums': 3.1000.1 - tslib: 2.8.1 - - '@aws-sdk/middleware-location-constraint@3.972.13': - dependencies: - '@aws-sdk/middleware-sdk-s3': 3.972.47 - tslib: 2.8.1 - - '@aws-sdk/middleware-sdk-s3@3.972.47': - dependencies: - '@aws-sdk/core': 3.974.17 - '@aws-sdk/signature-v4-multi-region': 3.996.31 - '@aws-sdk/types': 3.973.10 + '@aws-sdk/core': 3.974.18 + '@aws-sdk/signature-v4-multi-region': 3.996.32 + '@aws-sdk/types': 3.973.11 '@smithy/core': 3.24.6 '@smithy/types': 4.14.3 tslib: 2.8.1 - '@aws-sdk/middleware-ssec@3.972.13': - dependencies: - '@aws-sdk/middleware-sdk-s3': 3.972.47 - tslib: 2.8.1 - - '@aws-sdk/nested-clients@3.997.15': + '@aws-sdk/nested-clients@3.997.17': dependencies: '@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/core': 3.974.17 - '@aws-sdk/signature-v4-multi-region': 3.996.31 - '@aws-sdk/types': 3.973.10 + '@aws-sdk/core': 3.974.18 + '@aws-sdk/signature-v4-multi-region': 3.996.32 + '@aws-sdk/types': 3.973.11 '@smithy/core': 3.24.6 '@smithy/fetch-http-handler': 5.4.6 - '@smithy/node-http-handler': 4.7.6 + '@smithy/node-http-handler': 4.7.7 '@smithy/types': 4.14.3 tslib: 2.8.1 - '@aws-sdk/s3-presigned-post@3.1061.0': + '@aws-sdk/s3-presigned-post@3.1063.0': dependencies: - '@aws-sdk/client-s3': 3.1061.0 - '@aws-sdk/core': 3.974.17 - '@aws-sdk/types': 3.973.10 + '@aws-sdk/client-s3': 3.1063.0 + '@aws-sdk/core': 3.974.18 + '@aws-sdk/types': 3.973.11 '@smithy/core': 3.24.6 '@smithy/signature-v4': 5.4.6 '@smithy/types': 4.14.3 tslib: 2.8.1 - '@aws-sdk/signature-v4-multi-region@3.996.31': + '@aws-sdk/signature-v4-multi-region@3.996.32': dependencies: - '@aws-sdk/types': 3.973.10 + '@aws-sdk/types': 3.973.11 '@smithy/signature-v4': 5.4.6 '@smithy/types': 4.14.3 tslib: 2.8.1 - '@aws-sdk/token-providers@3.1060.0': + '@aws-sdk/token-providers@3.1063.0': dependencies: - '@aws-sdk/core': 3.974.17 - '@aws-sdk/nested-clients': 3.997.15 - '@aws-sdk/types': 3.973.10 + '@aws-sdk/core': 3.974.18 + '@aws-sdk/nested-clients': 3.997.17 + '@aws-sdk/types': 3.973.11 '@smithy/core': 3.24.6 '@smithy/types': 4.14.3 tslib: 2.8.1 - '@aws-sdk/types@3.973.10': + '@aws-sdk/types@3.973.11': dependencies: '@smithy/types': 4.14.3 tslib: 2.8.1 - '@aws-sdk/util-locate-window@3.965.5': + '@aws-sdk/util-locate-window@3.965.6': dependencies: tslib: 2.8.1 - '@aws-sdk/xml-builder@3.972.27': + '@aws-sdk/xml-builder@3.972.28': dependencies: '@smithy/types': 4.14.3 fast-xml-parser: 5.7.3 @@ -12137,14 +12041,13 @@ snapshots: '@floating-ui/utils@0.2.11': {} - '@formatjs/cli-lib@8.7.5': + '@formatjs/cli-lib@8.7.9': dependencies: - '@formatjs/icu-messageformat-parser': 3.5.10 - '@formatjs/icu-skeleton-parser': 2.1.9 - '@formatjs/ts-transformer': 4.4.11 - '@types/estree': 1.0.9 + '@babel/types': 7.29.7 + '@formatjs/icu-messageformat-parser': 3.5.11 + '@formatjs/ts-transformer': 4.4.13 '@types/fs-extra': 11.0.4 - '@types/node': 24.13.0 + '@types/node': 24.13.1 commander: 14.0.3 fast-glob: 3.3.3 fs-extra: 11.3.5 @@ -12152,23 +12055,31 @@ snapshots: loud-rejection: 2.2.0 typescript: 5.9.3 optionalDependencies: - '@formatjs/cli-native-darwin-arm64': 1.1.1 - '@formatjs/cli-native-linux-arm64': 1.2.1 - '@formatjs/cli-native-linux-x64': 1.1.1 - '@formatjs/cli-native-win32-x64': 1.1.2 + '@formatjs/cli-native-darwin-arm64': 1.1.4 + '@formatjs/cli-native-linux-arm64': 1.2.4 + '@formatjs/cli-native-linux-arm64-musl': 1.0.2 + '@formatjs/cli-native-linux-x64': 1.1.4 + '@formatjs/cli-native-linux-x64-musl': 1.0.2 + '@formatjs/cli-native-win32-x64': 1.1.5 transitivePeerDependencies: - ts-jest - '@formatjs/cli-native-darwin-arm64@1.1.1': + '@formatjs/cli-native-darwin-arm64@1.1.4': optional: true - '@formatjs/cli-native-linux-arm64@1.2.1': + '@formatjs/cli-native-linux-arm64-musl@1.0.2': optional: true - '@formatjs/cli-native-linux-x64@1.1.1': + '@formatjs/cli-native-linux-arm64@1.2.4': optional: true - '@formatjs/cli-native-win32-x64@1.1.2': + '@formatjs/cli-native-linux-x64-musl@1.0.2': + optional: true + + '@formatjs/cli-native-linux-x64@1.1.4': + optional: true + + '@formatjs/cli-native-win32-x64@1.1.5': optional: true '@formatjs/ecma402-abstract@2.3.6': @@ -12182,7 +12093,7 @@ snapshots: dependencies: tslib: 2.8.1 - '@formatjs/fast-memoize@3.1.5': {} + '@formatjs/fast-memoize@3.1.6': {} '@formatjs/icu-messageformat-parser@2.11.4': dependencies: @@ -12190,29 +12101,30 @@ snapshots: '@formatjs/icu-skeleton-parser': 1.8.16 tslib: 2.8.1 - '@formatjs/icu-messageformat-parser@3.5.10': + '@formatjs/icu-messageformat-parser@3.5.11': dependencies: - '@formatjs/icu-skeleton-parser': 2.1.9 + '@formatjs/icu-skeleton-parser': 2.1.10 '@formatjs/icu-skeleton-parser@1.8.16': dependencies: '@formatjs/ecma402-abstract': 2.3.6 tslib: 2.8.1 - '@formatjs/icu-skeleton-parser@2.1.9': {} + '@formatjs/icu-skeleton-parser@2.1.10': {} '@formatjs/intl-localematcher@0.6.2': dependencies: tslib: 2.8.1 - '@formatjs/intl-localematcher@0.8.9': + '@formatjs/intl-localematcher@0.8.10': dependencies: - '@formatjs/fast-memoize': 3.1.5 + '@formatjs/fast-memoize': 3.1.6 - '@formatjs/ts-transformer@4.4.11': + '@formatjs/ts-transformer@4.4.13': dependencies: - '@formatjs/icu-messageformat-parser': 3.5.10 - '@types/node': 24.13.0 + '@formatjs/icu-messageformat-parser': 3.5.11 + '@types/babel__core': 7.20.5 + '@types/node': 24.13.1 json-stable-stringify: 1.3.0 typescript: 5.9.3 @@ -12368,30 +12280,30 @@ snapshots: '@inquirer/ansi@2.0.7': {} - '@inquirer/confirm@6.1.1(@types/node@24.13.0)': + '@inquirer/confirm@6.1.1(@types/node@24.13.1)': dependencies: - '@inquirer/core': 11.2.1(@types/node@24.13.0) - '@inquirer/type': 4.0.7(@types/node@24.13.0) + '@inquirer/core': 11.2.1(@types/node@24.13.1) + '@inquirer/type': 4.0.7(@types/node@24.13.1) optionalDependencies: - '@types/node': 24.13.0 + '@types/node': 24.13.1 - '@inquirer/core@11.2.1(@types/node@24.13.0)': + '@inquirer/core@11.2.1(@types/node@24.13.1)': dependencies: '@inquirer/ansi': 2.0.7 '@inquirer/figures': 2.0.7 - '@inquirer/type': 4.0.7(@types/node@24.13.0) + '@inquirer/type': 4.0.7(@types/node@24.13.1) cli-width: 4.1.0 fast-wrap-ansi: 0.2.2 mute-stream: 3.0.0 signal-exit: 4.1.0 optionalDependencies: - '@types/node': 24.13.0 + '@types/node': 24.13.1 '@inquirer/figures@2.0.7': {} - '@inquirer/type@4.0.7(@types/node@24.13.0)': + '@inquirer/type@4.0.7(@types/node@24.13.1)': optionalDependencies: - '@types/node': 24.13.0 + '@types/node': 24.13.1 '@ioredis/commands@1.5.1': {} @@ -12464,7 +12376,7 @@ snapshots: '@lingual/i18n-check@0.9.5': dependencies: - '@formatjs/cli-lib': 8.7.5 + '@formatjs/cli-lib': 8.7.9 '@formatjs/icu-messageformat-parser': 2.11.4 chalk: 4.1.2 commander: 12.1.0 @@ -12681,33 +12593,33 @@ snapshots: '@opentelemetry/semantic-conventions@1.41.1': {} - '@orpc/client@1.14.4(@opentelemetry/api@1.9.1)': + '@orpc/client@1.14.5(@opentelemetry/api@1.9.1)': dependencies: - '@orpc/shared': 1.14.4(@opentelemetry/api@1.9.1) - '@orpc/standard-server': 1.14.4(@opentelemetry/api@1.9.1) - '@orpc/standard-server-fetch': 1.14.4(@opentelemetry/api@1.9.1) - '@orpc/standard-server-peer': 1.14.4(@opentelemetry/api@1.9.1) + '@orpc/shared': 1.14.5(@opentelemetry/api@1.9.1) + '@orpc/standard-server': 1.14.5(@opentelemetry/api@1.9.1) + '@orpc/standard-server-fetch': 1.14.5(@opentelemetry/api@1.9.1) + '@orpc/standard-server-peer': 1.14.5(@opentelemetry/api@1.9.1) transitivePeerDependencies: - '@opentelemetry/api' - '@orpc/contract@1.14.4(@opentelemetry/api@1.9.1)': + '@orpc/contract@1.14.5(@opentelemetry/api@1.9.1)': dependencies: - '@orpc/client': 1.14.4(@opentelemetry/api@1.9.1) - '@orpc/shared': 1.14.4(@opentelemetry/api@1.9.1) + '@orpc/client': 1.14.5(@opentelemetry/api@1.9.1) + '@orpc/shared': 1.14.5(@opentelemetry/api@1.9.1) '@standard-schema/spec': 1.1.0 openapi-types: 12.1.3 transitivePeerDependencies: - '@opentelemetry/api' - '@orpc/interop@1.14.4': {} + '@orpc/interop@1.14.5': {} - '@orpc/json-schema@1.14.4(@opentelemetry/api@1.9.1)(ws@8.21.0)': + '@orpc/json-schema@1.14.5(@opentelemetry/api@1.9.1)(ws@8.21.0)': dependencies: - '@orpc/contract': 1.14.4(@opentelemetry/api@1.9.1) - '@orpc/interop': 1.14.4 - '@orpc/openapi': 1.14.4(@opentelemetry/api@1.9.1)(ws@8.21.0) - '@orpc/server': 1.14.4(@opentelemetry/api@1.9.1)(ws@8.21.0) - '@orpc/shared': 1.14.4(@opentelemetry/api@1.9.1) + '@orpc/contract': 1.14.5(@opentelemetry/api@1.9.1) + '@orpc/interop': 1.14.5 + '@orpc/openapi': 1.14.5(@opentelemetry/api@1.9.1)(ws@8.21.0) + '@orpc/server': 1.14.5(@opentelemetry/api@1.9.1)(ws@8.21.0) + '@orpc/shared': 1.14.5(@opentelemetry/api@1.9.1) json-schema-typed: 8.0.2 transitivePeerDependencies: - '@opentelemetry/api' @@ -12715,24 +12627,24 @@ snapshots: - fastify - ws - '@orpc/openapi-client@1.14.4(@opentelemetry/api@1.9.1)': + '@orpc/openapi-client@1.14.5(@opentelemetry/api@1.9.1)': dependencies: - '@orpc/client': 1.14.4(@opentelemetry/api@1.9.1) - '@orpc/contract': 1.14.4(@opentelemetry/api@1.9.1) - '@orpc/shared': 1.14.4(@opentelemetry/api@1.9.1) - '@orpc/standard-server': 1.14.4(@opentelemetry/api@1.9.1) + '@orpc/client': 1.14.5(@opentelemetry/api@1.9.1) + '@orpc/contract': 1.14.5(@opentelemetry/api@1.9.1) + '@orpc/shared': 1.14.5(@opentelemetry/api@1.9.1) + '@orpc/standard-server': 1.14.5(@opentelemetry/api@1.9.1) transitivePeerDependencies: - '@opentelemetry/api' - '@orpc/openapi@1.14.4(@opentelemetry/api@1.9.1)(ws@8.21.0)': + '@orpc/openapi@1.14.5(@opentelemetry/api@1.9.1)(ws@8.21.0)': dependencies: - '@orpc/client': 1.14.4(@opentelemetry/api@1.9.1) - '@orpc/contract': 1.14.4(@opentelemetry/api@1.9.1) - '@orpc/interop': 1.14.4 - '@orpc/openapi-client': 1.14.4(@opentelemetry/api@1.9.1) - '@orpc/server': 1.14.4(@opentelemetry/api@1.9.1)(ws@8.21.0) - '@orpc/shared': 1.14.4(@opentelemetry/api@1.9.1) - '@orpc/standard-server': 1.14.4(@opentelemetry/api@1.9.1) + '@orpc/client': 1.14.5(@opentelemetry/api@1.9.1) + '@orpc/contract': 1.14.5(@opentelemetry/api@1.9.1) + '@orpc/interop': 1.14.5 + '@orpc/openapi-client': 1.14.5(@opentelemetry/api@1.9.1) + '@orpc/server': 1.14.5(@opentelemetry/api@1.9.1)(ws@8.21.0) + '@orpc/shared': 1.14.5(@opentelemetry/api@1.9.1) + '@orpc/standard-server': 1.14.5(@opentelemetry/api@1.9.1) json-schema-typed: 8.0.2 rou3: 0.7.12 transitivePeerDependencies: @@ -12741,18 +12653,18 @@ snapshots: - fastify - ws - '@orpc/server@1.14.4(@opentelemetry/api@1.9.1)(ws@8.21.0)': - dependencies: - '@orpc/client': 1.14.4(@opentelemetry/api@1.9.1) - '@orpc/contract': 1.14.4(@opentelemetry/api@1.9.1) - '@orpc/interop': 1.14.4 - '@orpc/shared': 1.14.4(@opentelemetry/api@1.9.1) - '@orpc/standard-server': 1.14.4(@opentelemetry/api@1.9.1) - '@orpc/standard-server-aws-lambda': 1.14.4(@opentelemetry/api@1.9.1) - '@orpc/standard-server-fastify': 1.14.4(@opentelemetry/api@1.9.1) - '@orpc/standard-server-fetch': 1.14.4(@opentelemetry/api@1.9.1) - '@orpc/standard-server-node': 1.14.4(@opentelemetry/api@1.9.1) - '@orpc/standard-server-peer': 1.14.4(@opentelemetry/api@1.9.1) + '@orpc/server@1.14.5(@opentelemetry/api@1.9.1)(ws@8.21.0)': + dependencies: + '@orpc/client': 1.14.5(@opentelemetry/api@1.9.1) + '@orpc/contract': 1.14.5(@opentelemetry/api@1.9.1) + '@orpc/interop': 1.14.5 + '@orpc/shared': 1.14.5(@opentelemetry/api@1.9.1) + '@orpc/standard-server': 1.14.5(@opentelemetry/api@1.9.1) + '@orpc/standard-server-aws-lambda': 1.14.5(@opentelemetry/api@1.9.1) + '@orpc/standard-server-fastify': 1.14.5(@opentelemetry/api@1.9.1) + '@orpc/standard-server-fetch': 1.14.5(@opentelemetry/api@1.9.1) + '@orpc/standard-server-node': 1.14.5(@opentelemetry/api@1.9.1) + '@orpc/standard-server-peer': 1.14.5(@opentelemetry/api@1.9.1) cookie: 1.1.1 optionalDependencies: ws: 8.21.0 @@ -12760,65 +12672,65 @@ snapshots: - '@opentelemetry/api' - fastify - '@orpc/shared@1.14.4(@opentelemetry/api@1.9.1)': + '@orpc/shared@1.14.5(@opentelemetry/api@1.9.1)': dependencies: radash: 12.1.1 type-fest: 5.7.0 optionalDependencies: '@opentelemetry/api': 1.9.1 - '@orpc/standard-server-aws-lambda@1.14.4(@opentelemetry/api@1.9.1)': + '@orpc/standard-server-aws-lambda@1.14.5(@opentelemetry/api@1.9.1)': dependencies: - '@orpc/shared': 1.14.4(@opentelemetry/api@1.9.1) - '@orpc/standard-server': 1.14.4(@opentelemetry/api@1.9.1) - '@orpc/standard-server-fetch': 1.14.4(@opentelemetry/api@1.9.1) - '@orpc/standard-server-node': 1.14.4(@opentelemetry/api@1.9.1) + '@orpc/shared': 1.14.5(@opentelemetry/api@1.9.1) + '@orpc/standard-server': 1.14.5(@opentelemetry/api@1.9.1) + '@orpc/standard-server-fetch': 1.14.5(@opentelemetry/api@1.9.1) + '@orpc/standard-server-node': 1.14.5(@opentelemetry/api@1.9.1) transitivePeerDependencies: - '@opentelemetry/api' - '@orpc/standard-server-fastify@1.14.4(@opentelemetry/api@1.9.1)': + '@orpc/standard-server-fastify@1.14.5(@opentelemetry/api@1.9.1)': dependencies: - '@orpc/shared': 1.14.4(@opentelemetry/api@1.9.1) - '@orpc/standard-server': 1.14.4(@opentelemetry/api@1.9.1) - '@orpc/standard-server-node': 1.14.4(@opentelemetry/api@1.9.1) + '@orpc/shared': 1.14.5(@opentelemetry/api@1.9.1) + '@orpc/standard-server': 1.14.5(@opentelemetry/api@1.9.1) + '@orpc/standard-server-node': 1.14.5(@opentelemetry/api@1.9.1) transitivePeerDependencies: - '@opentelemetry/api' - '@orpc/standard-server-fetch@1.14.4(@opentelemetry/api@1.9.1)': + '@orpc/standard-server-fetch@1.14.5(@opentelemetry/api@1.9.1)': dependencies: - '@orpc/shared': 1.14.4(@opentelemetry/api@1.9.1) - '@orpc/standard-server': 1.14.4(@opentelemetry/api@1.9.1) + '@orpc/shared': 1.14.5(@opentelemetry/api@1.9.1) + '@orpc/standard-server': 1.14.5(@opentelemetry/api@1.9.1) transitivePeerDependencies: - '@opentelemetry/api' - '@orpc/standard-server-node@1.14.4(@opentelemetry/api@1.9.1)': + '@orpc/standard-server-node@1.14.5(@opentelemetry/api@1.9.1)': dependencies: - '@orpc/shared': 1.14.4(@opentelemetry/api@1.9.1) - '@orpc/standard-server': 1.14.4(@opentelemetry/api@1.9.1) - '@orpc/standard-server-fetch': 1.14.4(@opentelemetry/api@1.9.1) + '@orpc/shared': 1.14.5(@opentelemetry/api@1.9.1) + '@orpc/standard-server': 1.14.5(@opentelemetry/api@1.9.1) + '@orpc/standard-server-fetch': 1.14.5(@opentelemetry/api@1.9.1) transitivePeerDependencies: - '@opentelemetry/api' - '@orpc/standard-server-peer@1.14.4(@opentelemetry/api@1.9.1)': + '@orpc/standard-server-peer@1.14.5(@opentelemetry/api@1.9.1)': dependencies: - '@orpc/shared': 1.14.4(@opentelemetry/api@1.9.1) - '@orpc/standard-server': 1.14.4(@opentelemetry/api@1.9.1) + '@orpc/shared': 1.14.5(@opentelemetry/api@1.9.1) + '@orpc/standard-server': 1.14.5(@opentelemetry/api@1.9.1) transitivePeerDependencies: - '@opentelemetry/api' - '@orpc/standard-server@1.14.4(@opentelemetry/api@1.9.1)': + '@orpc/standard-server@1.14.5(@opentelemetry/api@1.9.1)': dependencies: - '@orpc/shared': 1.14.4(@opentelemetry/api@1.9.1) + '@orpc/shared': 1.14.5(@opentelemetry/api@1.9.1) transitivePeerDependencies: - '@opentelemetry/api' - '@orpc/zod@1.14.4(@opentelemetry/api@1.9.1)(@orpc/contract@1.14.4(@opentelemetry/api@1.9.1))(@orpc/server@1.14.4(@opentelemetry/api@1.9.1)(ws@8.21.0))(ws@8.21.0)(zod@4.4.3)': + '@orpc/zod@1.14.5(@opentelemetry/api@1.9.1)(@orpc/contract@1.14.5(@opentelemetry/api@1.9.1))(@orpc/server@1.14.5(@opentelemetry/api@1.9.1)(ws@8.21.0))(ws@8.21.0)(zod@4.4.3)': dependencies: - '@orpc/contract': 1.14.4(@opentelemetry/api@1.9.1) - '@orpc/json-schema': 1.14.4(@opentelemetry/api@1.9.1)(ws@8.21.0) - '@orpc/openapi': 1.14.4(@opentelemetry/api@1.9.1)(ws@8.21.0) - '@orpc/server': 1.14.4(@opentelemetry/api@1.9.1)(ws@8.21.0) - '@orpc/shared': 1.14.4(@opentelemetry/api@1.9.1) + '@orpc/contract': 1.14.5(@opentelemetry/api@1.9.1) + '@orpc/json-schema': 1.14.5(@opentelemetry/api@1.9.1)(ws@8.21.0) + '@orpc/openapi': 1.14.5(@opentelemetry/api@1.9.1)(ws@8.21.0) + '@orpc/server': 1.14.5(@opentelemetry/api@1.9.1)(ws@8.21.0) + '@orpc/shared': 1.14.5(@opentelemetry/api@1.9.1) escape-string-regexp: 5.0.0 wildcard-match: 5.1.4 zod: 4.4.3 @@ -13036,7 +12948,7 @@ snapshots: scule: 1.3.0 optionalDependencies: '@node-rs/crc32': 1.10.6 - protobufjs: 8.5.0 + protobufjs: 8.6.1 transitivePeerDependencies: - supports-color @@ -13050,193 +12962,164 @@ snapshots: dependencies: quansync: 1.0.0 - '@radix-ui/number@1.1.1': {} - - '@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)': - 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/number@1.1.2': {} - '@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) - 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/primitive@1.1.4': {} - '@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-accessible-icon@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/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) + '@radix-ui/react-visually-hidden': 1.2.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) 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-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)': - 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-accordion@1.2.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.4 + '@radix-ui/react-collapsible': 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-collection': 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-compose-refs': 1.1.3(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-context': 1.1.4(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-direction': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-id': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-primitive': 2.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-use-controllable-state': 1.2.3(@types/react@19.2.14)(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-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-alert-dialog@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/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.4 + '@radix-ui/react-compose-refs': 1.1.3(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-context': 1.1.4(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-dialog': 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-primitive': 2.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-slot': 1.2.5(@types/react@19.2.14)(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-aspect-ratio@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-arrow@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.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.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) 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-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.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-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.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) 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-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.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/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.1.4(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-primitive': 2.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-use-callback-ref': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-is-hydrated': 0.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-layout-effect': 1.1.2(@types/react@19.2.14)(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)': + '@radix-ui/react-checkbox@1.3.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)': 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) + '@radix-ui/primitive': 1.1.4 + '@radix-ui/react-compose-refs': 1.1.3(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-context': 1.1.4(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-presence': 1.1.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-primitive': 2.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-use-controllable-state': 1.2.3(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-previous': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-size': 1.1.2(@types/react@19.2.14)(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)': + '@radix-ui/react-collapsible@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-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) + '@radix-ui/primitive': 1.1.4 + '@radix-ui/react-compose-refs': 1.1.3(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-context': 1.1.4(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-id': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-presence': 1.1.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-primitive': 2.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-use-controllable-state': 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.14)(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-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.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-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.14)(react@19.2.5) + '@radix-ui/react-context': 1.1.4(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-primitive': 2.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-slot': 1.2.5(@types/react@19.2.14)(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-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.14)(react@19.2.5)': dependencies: react: 19.2.5 optionalDependencies: '@types/react': 19.2.14 - '@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.0(@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-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.4 + '@radix-ui/react-context': 1.1.4(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-menu': 2.1.17(@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.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-use-controllable-state': 1.2.3(@types/react@19.2.14)(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)': + '@radix-ui/react-context@1.1.4(@types/react@19.2.14)(react@19.2.5)': dependencies: react: 19.2.5 optionalDependencies: '@types/react': 19.2.14 - '@radix-ui/react-context@1.1.3(@types/react@19.2.14)(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) + '@radix-ui/react-dialog@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.4 + '@radix-ui/react-compose-refs': 1.1.3(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-context': 1.1.4(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-dismissable-layer': 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-focus-guards': 1.1.4(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-focus-scope': 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-id': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-portal': 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-presence': 1.1.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-primitive': 2.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-slot': 1.2.5(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-controllable-state': 1.2.3(@types/react@19.2.14)(react@19.2.5) aria-hidden: 1.2.6 react: 19.2.5 react-dom: 19.2.5(react@19.2.5) @@ -13245,131 +13128,122 @@ snapshots: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@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.14)(react@19.2.5)': dependencies: react: 19.2.5 optionalDependencies: '@types/react': 19.2.14 - '@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.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-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.4 + '@radix-ui/react-compose-refs': 1.1.3(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-primitive': 2.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-use-callback-ref': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-escape-keydown': 1.1.2(@types/react@19.2.14)(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)': + '@radix-ui/react-dropdown-menu@2.1.17(@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) + '@radix-ui/primitive': 1.1.4 + '@radix-ui/react-compose-refs': 1.1.3(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-context': 1.1.4(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-id': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-menu': 2.1.17(@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.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-use-controllable-state': 1.2.3(@types/react@19.2.14)(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-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.14)(react@19.2.5)': dependencies: react: 19.2.5 optionalDependencies: '@types/react': 19.2.14 - '@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.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-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.14)(react@19.2.5) + '@radix-ui/react-primitive': 2.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-use-callback-ref': 1.1.2(@types/react@19.2.14)(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-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.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/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.4 + '@radix-ui/react-compose-refs': 1.1.3(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-context': 1.1.4(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-id': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-label': 2.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.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) 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) + '@radix-ui/react-hover-card@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.4 + '@radix-ui/react-compose-refs': 1.1.3(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-context': 1.1.4(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-dismissable-layer': 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-popper': 1.3.0(@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.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-presence': 1.1.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-primitive': 2.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-use-controllable-state': 1.2.3(@types/react@19.2.14)(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-id@1.1.1(@types/react@19.2.14)(react@19.2.5)': - dependencies: - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.5) - react: 19.2.5 - optionalDependencies: - '@types/react': 19.2.14 - - '@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-id@1.1.2(@types/react@19.2.14)(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.2(@types/react@19.2.14)(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-label@2.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-label@2.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.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.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) 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) + '@radix-ui/react-menu@2.1.17(@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.4 + '@radix-ui/react-collection': 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-compose-refs': 1.1.3(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-context': 1.1.4(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-direction': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-dismissable-layer': 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-focus-guards': 1.1.4(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-focus-scope': 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-id': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-popper': 1.3.0(@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.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-presence': 1.1.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-primitive': 2.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-roving-focus': 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-slot': 1.2.5(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-callback-ref': 1.1.2(@types/react@19.2.14)(react@19.2.5) aria-hidden: 1.2.6 react: 19.2.5 react-dom: 19.2.5(react@19.2.5) @@ -13378,97 +13252,97 @@ snapshots: '@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) + '@radix-ui/react-menubar@1.1.17(@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.4 + '@radix-ui/react-collection': 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-compose-refs': 1.1.3(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-context': 1.1.4(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-direction': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-id': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-menu': 2.1.17(@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.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-roving-focus': 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-use-controllable-state': 1.2.3(@types/react@19.2.14)(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) + '@radix-ui/react-navigation-menu@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.4 + '@radix-ui/react-collection': 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-compose-refs': 1.1.3(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-context': 1.1.4(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-direction': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-dismissable-layer': 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-id': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-presence': 1.1.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-primitive': 2.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-use-callback-ref': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-controllable-state': 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.14)(react@19.2.5) + '@radix-ui/react-use-previous': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-visually-hidden': 1.2.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) 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) + '@radix-ui/react-one-time-password-field@0.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/number': 1.1.2 + '@radix-ui/primitive': 1.1.4 + '@radix-ui/react-collection': 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-compose-refs': 1.1.3(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-context': 1.1.4(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-direction': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-primitive': 2.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-roving-focus': 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-use-controllable-state': 1.2.3(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-effect-event': 0.0.3(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-is-hydrated': 0.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-layout-effect': 1.1.2(@types/react@19.2.14)(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)': + '@radix-ui/react-password-toggle-field@0.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)': 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) + '@radix-ui/primitive': 1.1.4 + '@radix-ui/react-compose-refs': 1.1.3(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-context': 1.1.4(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-id': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-primitive': 2.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-use-controllable-state': 1.2.3(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-effect-event': 0.0.3(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-is-hydrated': 0.1.1(@types/react@19.2.14)(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) + '@radix-ui/react-popover@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.4 + '@radix-ui/react-compose-refs': 1.1.3(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-context': 1.1.4(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-dismissable-layer': 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-focus-guards': 1.1.4(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-focus-scope': 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-id': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-popper': 1.3.0(@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.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-presence': 1.1.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-primitive': 2.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-slot': 1.2.5(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-controllable-state': 1.2.3(@types/react@19.2.14)(react@19.2.5) aria-hidden: 1.2.6 react: 19.2.5 react-dom: 19.2.5(react@19.2.5) @@ -13477,155 +13351,136 @@ snapshots: '@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)': + '@radix-ui/react-popper@1.3.0(@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) - 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) + '@radix-ui/react-arrow': 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-compose-refs': 1.1.3(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-context': 1.1.4(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-primitive': 2.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-use-callback-ref': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-layout-effect': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-rect': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-size': 1.1.2(@types/react@19.2.14)(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) - '@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.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/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.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-use-layout-effect': 1.1.2(@types/react@19.2.14)(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-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.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/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.14)(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-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.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)': dependencies: - '@radix-ui/react-slot': 1.2.4(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-slot': 1.2.5(@types/react@19.2.14)(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-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.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-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.1.4(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-primitive': 2.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) 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-progress@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)': - 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-radio-group@1.4.0(@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.4 + '@radix-ui/react-compose-refs': 1.1.3(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-context': 1.1.4(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-direction': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-presence': 1.1.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-primitive': 2.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-roving-focus': 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-use-controllable-state': 1.2.3(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-previous': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-size': 1.1.2(@types/react@19.2.14)(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) + '@radix-ui/react-roving-focus@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.4 + '@radix-ui/react-collection': 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-compose-refs': 1.1.3(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-context': 1.1.4(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-direction': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-id': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-primitive': 2.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-use-callback-ref': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-controllable-state': 1.2.3(@types/react@19.2.14)(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) + '@radix-ui/react-scroll-area@1.2.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/number': 1.1.2 + '@radix-ui/primitive': 1.1.4 + '@radix-ui/react-compose-refs': 1.1.3(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-context': 1.1.4(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-direction': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-presence': 1.1.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-primitive': 2.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-use-callback-ref': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-layout-effect': 1.1.2(@types/react@19.2.14)(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) - 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) + '@radix-ui/react-select@2.3.0(@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.2 + '@radix-ui/primitive': 1.1.4 + '@radix-ui/react-collection': 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-compose-refs': 1.1.3(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-context': 1.1.4(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-direction': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-dismissable-layer': 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-focus-guards': 1.1.4(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-focus-scope': 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-id': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-popper': 1.3.0(@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.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-presence': 1.1.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-primitive': 2.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-slot': 1.2.5(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-callback-ref': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-controllable-state': 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.14)(react@19.2.5) + '@radix-ui/react-use-previous': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-visually-hidden': 1.2.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) aria-hidden: 1.2.6 react: 19.2.5 react-dom: 19.2.5(react@19.2.5) @@ -13634,240 +13489,223 @@ snapshots: '@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)': + '@radix-ui/react-separator@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-primitive': 2.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) 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-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)': - 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-slider@1.4.0(@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.2 + '@radix-ui/primitive': 1.1.4 + '@radix-ui/react-collection': 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-compose-refs': 1.1.3(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-context': 1.1.4(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-direction': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-primitive': 2.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-use-controllable-state': 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.14)(react@19.2.5) + '@radix-ui/react-use-previous': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-size': 1.1.2(@types/react@19.2.14)(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) - 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-slot@1.2.3(@types/react@19.2.14)(react@19.2.5)': + '@radix-ui/react-slot@1.2.5(@types/react@19.2.14)(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.14)(react@19.2.5) react: 19.2.5 optionalDependencies: '@types/react': 19.2.14 - '@radix-ui/react-slot@1.2.4(@types/react@19.2.14)(react@19.2.5)': + '@radix-ui/react-switch@1.3.0(@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-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.4 + '@radix-ui/react-compose-refs': 1.1.3(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-context': 1.1.4(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-primitive': 2.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-use-controllable-state': 1.2.3(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-previous': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-size': 1.1.2(@types/react@19.2.14)(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)': + '@radix-ui/react-tabs@1.1.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-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) + '@radix-ui/primitive': 1.1.4 + '@radix-ui/react-context': 1.1.4(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-direction': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-id': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-presence': 1.1.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-primitive': 2.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-roving-focus': 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-use-controllable-state': 1.2.3(@types/react@19.2.14)(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) + '@radix-ui/react-toast@1.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)': + dependencies: + '@radix-ui/primitive': 1.1.4 + '@radix-ui/react-collection': 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-compose-refs': 1.1.3(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-context': 1.1.4(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-dismissable-layer': 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-portal': 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-presence': 1.1.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-primitive': 2.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-use-callback-ref': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-controllable-state': 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.14)(react@19.2.5) + '@radix-ui/react-visually-hidden': 1.2.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) 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)': + '@radix-ui/react-toggle-group@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-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) + '@radix-ui/primitive': 1.1.4 + '@radix-ui/react-context': 1.1.4(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-direction': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-primitive': 2.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-roving-focus': 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-toggle': 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.3(@types/react@19.2.14)(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@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.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-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.4 + '@radix-ui/react-primitive': 2.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-use-controllable-state': 1.2.3(@types/react@19.2.14)(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)': + '@radix-ui/react-toolbar@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-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) + '@radix-ui/primitive': 1.1.4 + '@radix-ui/react-context': 1.1.4(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-direction': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-primitive': 2.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-roving-focus': 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-separator': 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-toggle-group': 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) 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) + '@radix-ui/react-tooltip@1.2.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/primitive': 1.1.4 + '@radix-ui/react-compose-refs': 1.1.3(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-context': 1.1.4(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-dismissable-layer': 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-id': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-popper': 1.3.0(@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.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-presence': 1.1.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-primitive': 2.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-slot': 1.2.5(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-controllable-state': 1.2.3(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-visually-hidden': 1.2.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) 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-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.14)(react@19.2.5)': dependencies: react: 19.2.5 optionalDependencies: '@types/react': 19.2.14 - '@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.14)(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.14)(react@19.2.5) + '@radix-ui/react-use-layout-effect': 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-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.14)(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.14)(react@19.2.5) react: 19.2.5 optionalDependencies: '@types/react': 19.2.14 - '@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.2(@types/react@19.2.14)(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.14)(react@19.2.5) react: 19.2.5 optionalDependencies: '@types/react': 19.2.14 - '@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.14)(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 - '@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.14)(react@19.2.5)': dependencies: react: 19.2.5 optionalDependencies: '@types/react': 19.2.14 - '@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.14)(react@19.2.5)': dependencies: react: 19.2.5 optionalDependencies: '@types/react': 19.2.14 - '@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.14)(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 - '@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.14)(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.14)(react@19.2.5) react: 19.2.5 optionalDependencies: '@types/react': 19.2.14 - '@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.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)': 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.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) 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/rect@1.1.1': {} + '@radix-ui/rect@1.1.2': {} '@redocly/ajv@8.11.2': dependencies: @@ -14051,7 +13889,7 @@ snapshots: '@smithy/types': 4.14.3 tslib: 2.8.1 - '@smithy/credential-provider-imds@4.3.7': + '@smithy/credential-provider-imds@4.3.8': dependencies: '@smithy/core': 3.24.6 '@smithy/types': 4.14.3 @@ -14067,7 +13905,7 @@ snapshots: dependencies: tslib: 2.8.1 - '@smithy/node-http-handler@4.7.6': + '@smithy/node-http-handler@4.7.7': dependencies: '@smithy/core': 3.24.6 '@smithy/types': 4.14.3 @@ -14191,7 +14029,7 @@ snapshots: '@tailwindcss/node@4.3.0': dependencies: '@jridgewell/remapping': 2.3.5 - enhanced-resolve: 5.22.2 + enhanced-resolve: 5.23.0 jiti: 2.7.0 lightningcss: 1.32.0 magic-string: 0.30.21 @@ -14265,140 +14103,140 @@ snapshots: '@tanstack/table-core@8.21.3': {} - '@tiptap/core@3.25.0(@tiptap/pm@3.25.0)': + '@tiptap/core@3.26.0(@tiptap/pm@3.26.0)': dependencies: - '@tiptap/pm': 3.25.0 + '@tiptap/pm': 3.26.0 - '@tiptap/extension-blockquote@3.25.0(@tiptap/core@3.25.0(@tiptap/pm@3.25.0))': + '@tiptap/extension-blockquote@3.26.0(@tiptap/core@3.26.0(@tiptap/pm@3.26.0))': dependencies: - '@tiptap/core': 3.25.0(@tiptap/pm@3.25.0) + '@tiptap/core': 3.26.0(@tiptap/pm@3.26.0) - '@tiptap/extension-bold@3.25.0(@tiptap/core@3.25.0(@tiptap/pm@3.25.0))': + '@tiptap/extension-bold@3.26.0(@tiptap/core@3.26.0(@tiptap/pm@3.26.0))': dependencies: - '@tiptap/core': 3.25.0(@tiptap/pm@3.25.0) + '@tiptap/core': 3.26.0(@tiptap/pm@3.26.0) - '@tiptap/extension-bubble-menu@3.25.0(@tiptap/core@3.25.0(@tiptap/pm@3.25.0))(@tiptap/pm@3.25.0)': + '@tiptap/extension-bubble-menu@3.26.0(@tiptap/core@3.26.0(@tiptap/pm@3.26.0))(@tiptap/pm@3.26.0)': dependencies: '@floating-ui/dom': 1.7.6 - '@tiptap/core': 3.25.0(@tiptap/pm@3.25.0) - '@tiptap/pm': 3.25.0 + '@tiptap/core': 3.26.0(@tiptap/pm@3.26.0) + '@tiptap/pm': 3.26.0 optional: true - '@tiptap/extension-bullet-list@3.25.0(@tiptap/extension-list@3.25.0(@tiptap/core@3.25.0(@tiptap/pm@3.25.0))(@tiptap/pm@3.25.0))': + '@tiptap/extension-bullet-list@3.26.0(@tiptap/extension-list@3.26.0(@tiptap/core@3.26.0(@tiptap/pm@3.26.0))(@tiptap/pm@3.26.0))': dependencies: - '@tiptap/extension-list': 3.25.0(@tiptap/core@3.25.0(@tiptap/pm@3.25.0))(@tiptap/pm@3.25.0) + '@tiptap/extension-list': 3.26.0(@tiptap/core@3.26.0(@tiptap/pm@3.26.0))(@tiptap/pm@3.26.0) - '@tiptap/extension-code-block@3.25.0(@tiptap/core@3.25.0(@tiptap/pm@3.25.0))(@tiptap/pm@3.25.0)': + '@tiptap/extension-code-block@3.26.0(@tiptap/core@3.26.0(@tiptap/pm@3.26.0))(@tiptap/pm@3.26.0)': dependencies: - '@tiptap/core': 3.25.0(@tiptap/pm@3.25.0) - '@tiptap/pm': 3.25.0 + '@tiptap/core': 3.26.0(@tiptap/pm@3.26.0) + '@tiptap/pm': 3.26.0 - '@tiptap/extension-code@3.25.0(@tiptap/core@3.25.0(@tiptap/pm@3.25.0))': + '@tiptap/extension-code@3.26.0(@tiptap/core@3.26.0(@tiptap/pm@3.26.0))': dependencies: - '@tiptap/core': 3.25.0(@tiptap/pm@3.25.0) + '@tiptap/core': 3.26.0(@tiptap/pm@3.26.0) - '@tiptap/extension-document@3.25.0(@tiptap/core@3.25.0(@tiptap/pm@3.25.0))': + '@tiptap/extension-document@3.26.0(@tiptap/core@3.26.0(@tiptap/pm@3.26.0))': dependencies: - '@tiptap/core': 3.25.0(@tiptap/pm@3.25.0) + '@tiptap/core': 3.26.0(@tiptap/pm@3.26.0) - '@tiptap/extension-dropcursor@3.25.0(@tiptap/extensions@3.25.0(@tiptap/core@3.25.0(@tiptap/pm@3.25.0))(@tiptap/pm@3.25.0))': + '@tiptap/extension-dropcursor@3.26.0(@tiptap/extensions@3.26.0(@tiptap/core@3.26.0(@tiptap/pm@3.26.0))(@tiptap/pm@3.26.0))': dependencies: - '@tiptap/extensions': 3.25.0(@tiptap/core@3.25.0(@tiptap/pm@3.25.0))(@tiptap/pm@3.25.0) + '@tiptap/extensions': 3.26.0(@tiptap/core@3.26.0(@tiptap/pm@3.26.0))(@tiptap/pm@3.26.0) - '@tiptap/extension-emoji@3.25.0(@tiptap/core@3.25.0(@tiptap/pm@3.25.0))(@tiptap/pm@3.25.0)(@tiptap/suggestion@3.25.0(@tiptap/core@3.25.0(@tiptap/pm@3.25.0))(@tiptap/pm@3.25.0))(emojibase@17.0.0)': + '@tiptap/extension-emoji@3.26.0(@tiptap/core@3.26.0(@tiptap/pm@3.26.0))(@tiptap/pm@3.26.0)(@tiptap/suggestion@3.26.0(@tiptap/core@3.26.0(@tiptap/pm@3.26.0))(@tiptap/pm@3.26.0))(emojibase@17.0.0)': dependencies: - '@tiptap/core': 3.25.0(@tiptap/pm@3.25.0) - '@tiptap/pm': 3.25.0 - '@tiptap/suggestion': 3.25.0(@tiptap/core@3.25.0(@tiptap/pm@3.25.0))(@tiptap/pm@3.25.0) + '@tiptap/core': 3.26.0(@tiptap/pm@3.26.0) + '@tiptap/pm': 3.26.0 + '@tiptap/suggestion': 3.26.0(@tiptap/core@3.26.0(@tiptap/pm@3.26.0))(@tiptap/pm@3.26.0) emoji-regex: 10.6.0 emojibase-data: 17.0.0(emojibase@17.0.0) is-emoji-supported: 0.0.5 transitivePeerDependencies: - emojibase - '@tiptap/extension-floating-menu@3.25.0(@floating-ui/dom@1.7.6)(@tiptap/core@3.25.0(@tiptap/pm@3.25.0))(@tiptap/pm@3.25.0)': + '@tiptap/extension-floating-menu@3.26.0(@floating-ui/dom@1.7.6)(@tiptap/core@3.26.0(@tiptap/pm@3.26.0))(@tiptap/pm@3.26.0)': dependencies: '@floating-ui/dom': 1.7.6 - '@tiptap/core': 3.25.0(@tiptap/pm@3.25.0) - '@tiptap/pm': 3.25.0 + '@tiptap/core': 3.26.0(@tiptap/pm@3.26.0) + '@tiptap/pm': 3.26.0 optional: true - '@tiptap/extension-gapcursor@3.25.0(@tiptap/extensions@3.25.0(@tiptap/core@3.25.0(@tiptap/pm@3.25.0))(@tiptap/pm@3.25.0))': + '@tiptap/extension-gapcursor@3.26.0(@tiptap/extensions@3.26.0(@tiptap/core@3.26.0(@tiptap/pm@3.26.0))(@tiptap/pm@3.26.0))': dependencies: - '@tiptap/extensions': 3.25.0(@tiptap/core@3.25.0(@tiptap/pm@3.25.0))(@tiptap/pm@3.25.0) + '@tiptap/extensions': 3.26.0(@tiptap/core@3.26.0(@tiptap/pm@3.26.0))(@tiptap/pm@3.26.0) - '@tiptap/extension-hard-break@3.25.0(@tiptap/core@3.25.0(@tiptap/pm@3.25.0))': + '@tiptap/extension-hard-break@3.26.0(@tiptap/core@3.26.0(@tiptap/pm@3.26.0))': dependencies: - '@tiptap/core': 3.25.0(@tiptap/pm@3.25.0) + '@tiptap/core': 3.26.0(@tiptap/pm@3.26.0) - '@tiptap/extension-heading@3.25.0(@tiptap/core@3.25.0(@tiptap/pm@3.25.0))': + '@tiptap/extension-heading@3.26.0(@tiptap/core@3.26.0(@tiptap/pm@3.26.0))': dependencies: - '@tiptap/core': 3.25.0(@tiptap/pm@3.25.0) + '@tiptap/core': 3.26.0(@tiptap/pm@3.26.0) - '@tiptap/extension-horizontal-rule@3.25.0(@tiptap/core@3.25.0(@tiptap/pm@3.25.0))(@tiptap/pm@3.25.0)': + '@tiptap/extension-horizontal-rule@3.26.0(@tiptap/core@3.26.0(@tiptap/pm@3.26.0))(@tiptap/pm@3.26.0)': dependencies: - '@tiptap/core': 3.25.0(@tiptap/pm@3.25.0) - '@tiptap/pm': 3.25.0 + '@tiptap/core': 3.26.0(@tiptap/pm@3.26.0) + '@tiptap/pm': 3.26.0 - '@tiptap/extension-italic@3.25.0(@tiptap/core@3.25.0(@tiptap/pm@3.25.0))': + '@tiptap/extension-italic@3.26.0(@tiptap/core@3.26.0(@tiptap/pm@3.26.0))': dependencies: - '@tiptap/core': 3.25.0(@tiptap/pm@3.25.0) + '@tiptap/core': 3.26.0(@tiptap/pm@3.26.0) - '@tiptap/extension-link@3.25.0(@tiptap/core@3.25.0(@tiptap/pm@3.25.0))(@tiptap/pm@3.25.0)': + '@tiptap/extension-link@3.26.0(@tiptap/core@3.26.0(@tiptap/pm@3.26.0))(@tiptap/pm@3.26.0)': dependencies: - '@tiptap/core': 3.25.0(@tiptap/pm@3.25.0) - '@tiptap/pm': 3.25.0 + '@tiptap/core': 3.26.0(@tiptap/pm@3.26.0) + '@tiptap/pm': 3.26.0 linkifyjs: 4.3.3 - '@tiptap/extension-list-item@3.25.0(@tiptap/extension-list@3.25.0(@tiptap/core@3.25.0(@tiptap/pm@3.25.0))(@tiptap/pm@3.25.0))': + '@tiptap/extension-list-item@3.26.0(@tiptap/extension-list@3.26.0(@tiptap/core@3.26.0(@tiptap/pm@3.26.0))(@tiptap/pm@3.26.0))': dependencies: - '@tiptap/extension-list': 3.25.0(@tiptap/core@3.25.0(@tiptap/pm@3.25.0))(@tiptap/pm@3.25.0) + '@tiptap/extension-list': 3.26.0(@tiptap/core@3.26.0(@tiptap/pm@3.26.0))(@tiptap/pm@3.26.0) - '@tiptap/extension-list-keymap@3.25.0(@tiptap/extension-list@3.25.0(@tiptap/core@3.25.0(@tiptap/pm@3.25.0))(@tiptap/pm@3.25.0))': + '@tiptap/extension-list-keymap@3.26.0(@tiptap/extension-list@3.26.0(@tiptap/core@3.26.0(@tiptap/pm@3.26.0))(@tiptap/pm@3.26.0))': dependencies: - '@tiptap/extension-list': 3.25.0(@tiptap/core@3.25.0(@tiptap/pm@3.25.0))(@tiptap/pm@3.25.0) + '@tiptap/extension-list': 3.26.0(@tiptap/core@3.26.0(@tiptap/pm@3.26.0))(@tiptap/pm@3.26.0) - '@tiptap/extension-list@3.25.0(@tiptap/core@3.25.0(@tiptap/pm@3.25.0))(@tiptap/pm@3.25.0)': + '@tiptap/extension-list@3.26.0(@tiptap/core@3.26.0(@tiptap/pm@3.26.0))(@tiptap/pm@3.26.0)': dependencies: - '@tiptap/core': 3.25.0(@tiptap/pm@3.25.0) - '@tiptap/pm': 3.25.0 + '@tiptap/core': 3.26.0(@tiptap/pm@3.26.0) + '@tiptap/pm': 3.26.0 - '@tiptap/extension-mention@3.25.0(@tiptap/core@3.25.0(@tiptap/pm@3.25.0))(@tiptap/pm@3.25.0)(@tiptap/suggestion@3.25.0(@tiptap/core@3.25.0(@tiptap/pm@3.25.0))(@tiptap/pm@3.25.0))': + '@tiptap/extension-mention@3.26.0(@tiptap/core@3.26.0(@tiptap/pm@3.26.0))(@tiptap/pm@3.26.0)(@tiptap/suggestion@3.26.0(@tiptap/core@3.26.0(@tiptap/pm@3.26.0))(@tiptap/pm@3.26.0))': dependencies: - '@tiptap/core': 3.25.0(@tiptap/pm@3.25.0) - '@tiptap/pm': 3.25.0 - '@tiptap/suggestion': 3.25.0(@tiptap/core@3.25.0(@tiptap/pm@3.25.0))(@tiptap/pm@3.25.0) + '@tiptap/core': 3.26.0(@tiptap/pm@3.26.0) + '@tiptap/pm': 3.26.0 + '@tiptap/suggestion': 3.26.0(@tiptap/core@3.26.0(@tiptap/pm@3.26.0))(@tiptap/pm@3.26.0) - '@tiptap/extension-ordered-list@3.25.0(@tiptap/extension-list@3.25.0(@tiptap/core@3.25.0(@tiptap/pm@3.25.0))(@tiptap/pm@3.25.0))': + '@tiptap/extension-ordered-list@3.26.0(@tiptap/extension-list@3.26.0(@tiptap/core@3.26.0(@tiptap/pm@3.26.0))(@tiptap/pm@3.26.0))': dependencies: - '@tiptap/extension-list': 3.25.0(@tiptap/core@3.25.0(@tiptap/pm@3.25.0))(@tiptap/pm@3.25.0) + '@tiptap/extension-list': 3.26.0(@tiptap/core@3.26.0(@tiptap/pm@3.26.0))(@tiptap/pm@3.26.0) - '@tiptap/extension-paragraph@3.25.0(@tiptap/core@3.25.0(@tiptap/pm@3.25.0))': + '@tiptap/extension-paragraph@3.26.0(@tiptap/core@3.26.0(@tiptap/pm@3.26.0))': dependencies: - '@tiptap/core': 3.25.0(@tiptap/pm@3.25.0) + '@tiptap/core': 3.26.0(@tiptap/pm@3.26.0) - '@tiptap/extension-placeholder@3.25.0(@tiptap/extensions@3.25.0(@tiptap/core@3.25.0(@tiptap/pm@3.25.0))(@tiptap/pm@3.25.0))': + '@tiptap/extension-placeholder@3.26.0(@tiptap/extensions@3.26.0(@tiptap/core@3.26.0(@tiptap/pm@3.26.0))(@tiptap/pm@3.26.0))': dependencies: - '@tiptap/extensions': 3.25.0(@tiptap/core@3.25.0(@tiptap/pm@3.25.0))(@tiptap/pm@3.25.0) + '@tiptap/extensions': 3.26.0(@tiptap/core@3.26.0(@tiptap/pm@3.26.0))(@tiptap/pm@3.26.0) - '@tiptap/extension-strike@3.25.0(@tiptap/core@3.25.0(@tiptap/pm@3.25.0))': + '@tiptap/extension-strike@3.26.0(@tiptap/core@3.26.0(@tiptap/pm@3.26.0))': dependencies: - '@tiptap/core': 3.25.0(@tiptap/pm@3.25.0) + '@tiptap/core': 3.26.0(@tiptap/pm@3.26.0) - '@tiptap/extension-text@3.25.0(@tiptap/core@3.25.0(@tiptap/pm@3.25.0))': + '@tiptap/extension-text@3.26.0(@tiptap/core@3.26.0(@tiptap/pm@3.26.0))': dependencies: - '@tiptap/core': 3.25.0(@tiptap/pm@3.25.0) + '@tiptap/core': 3.26.0(@tiptap/pm@3.26.0) - '@tiptap/extension-underline@3.25.0(@tiptap/core@3.25.0(@tiptap/pm@3.25.0))': + '@tiptap/extension-underline@3.26.0(@tiptap/core@3.26.0(@tiptap/pm@3.26.0))': dependencies: - '@tiptap/core': 3.25.0(@tiptap/pm@3.25.0) + '@tiptap/core': 3.26.0(@tiptap/pm@3.26.0) - '@tiptap/extensions@3.25.0(@tiptap/core@3.25.0(@tiptap/pm@3.25.0))(@tiptap/pm@3.25.0)': + '@tiptap/extensions@3.26.0(@tiptap/core@3.26.0(@tiptap/pm@3.26.0))(@tiptap/pm@3.26.0)': dependencies: - '@tiptap/core': 3.25.0(@tiptap/pm@3.25.0) - '@tiptap/pm': 3.25.0 + '@tiptap/core': 3.26.0(@tiptap/pm@3.26.0) + '@tiptap/pm': 3.26.0 - '@tiptap/pm@3.25.0': + '@tiptap/pm@3.26.0': dependencies: prosemirror-changeset: 2.4.1 prosemirror-commands: 1.7.1 @@ -14414,10 +14252,10 @@ snapshots: prosemirror-transform: 1.12.0 prosemirror-view: 1.41.8 - '@tiptap/react@3.25.0(@floating-ui/dom@1.7.6)(@tiptap/core@3.25.0(@tiptap/pm@3.25.0))(@tiptap/pm@3.25.0)(@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)': + '@tiptap/react@3.26.0(@floating-ui/dom@1.7.6)(@tiptap/core@3.26.0(@tiptap/pm@3.26.0))(@tiptap/pm@3.26.0)(@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: - '@tiptap/core': 3.25.0(@tiptap/pm@3.25.0) - '@tiptap/pm': 3.25.0 + '@tiptap/core': 3.26.0(@tiptap/pm@3.26.0) + '@tiptap/pm': 3.26.0 '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) '@types/use-sync-external-store': 0.0.6 @@ -14426,42 +14264,42 @@ snapshots: react-dom: 19.2.5(react@19.2.5) use-sync-external-store: 1.6.0(react@19.2.5) optionalDependencies: - '@tiptap/extension-bubble-menu': 3.25.0(@tiptap/core@3.25.0(@tiptap/pm@3.25.0))(@tiptap/pm@3.25.0) - '@tiptap/extension-floating-menu': 3.25.0(@floating-ui/dom@1.7.6)(@tiptap/core@3.25.0(@tiptap/pm@3.25.0))(@tiptap/pm@3.25.0) + '@tiptap/extension-bubble-menu': 3.26.0(@tiptap/core@3.26.0(@tiptap/pm@3.26.0))(@tiptap/pm@3.26.0) + '@tiptap/extension-floating-menu': 3.26.0(@floating-ui/dom@1.7.6)(@tiptap/core@3.26.0(@tiptap/pm@3.26.0))(@tiptap/pm@3.26.0) transitivePeerDependencies: - '@floating-ui/dom' - '@tiptap/starter-kit@3.25.0': - dependencies: - '@tiptap/core': 3.25.0(@tiptap/pm@3.25.0) - '@tiptap/extension-blockquote': 3.25.0(@tiptap/core@3.25.0(@tiptap/pm@3.25.0)) - '@tiptap/extension-bold': 3.25.0(@tiptap/core@3.25.0(@tiptap/pm@3.25.0)) - '@tiptap/extension-bullet-list': 3.25.0(@tiptap/extension-list@3.25.0(@tiptap/core@3.25.0(@tiptap/pm@3.25.0))(@tiptap/pm@3.25.0)) - '@tiptap/extension-code': 3.25.0(@tiptap/core@3.25.0(@tiptap/pm@3.25.0)) - '@tiptap/extension-code-block': 3.25.0(@tiptap/core@3.25.0(@tiptap/pm@3.25.0))(@tiptap/pm@3.25.0) - '@tiptap/extension-document': 3.25.0(@tiptap/core@3.25.0(@tiptap/pm@3.25.0)) - '@tiptap/extension-dropcursor': 3.25.0(@tiptap/extensions@3.25.0(@tiptap/core@3.25.0(@tiptap/pm@3.25.0))(@tiptap/pm@3.25.0)) - '@tiptap/extension-gapcursor': 3.25.0(@tiptap/extensions@3.25.0(@tiptap/core@3.25.0(@tiptap/pm@3.25.0))(@tiptap/pm@3.25.0)) - '@tiptap/extension-hard-break': 3.25.0(@tiptap/core@3.25.0(@tiptap/pm@3.25.0)) - '@tiptap/extension-heading': 3.25.0(@tiptap/core@3.25.0(@tiptap/pm@3.25.0)) - '@tiptap/extension-horizontal-rule': 3.25.0(@tiptap/core@3.25.0(@tiptap/pm@3.25.0))(@tiptap/pm@3.25.0) - '@tiptap/extension-italic': 3.25.0(@tiptap/core@3.25.0(@tiptap/pm@3.25.0)) - '@tiptap/extension-link': 3.25.0(@tiptap/core@3.25.0(@tiptap/pm@3.25.0))(@tiptap/pm@3.25.0) - '@tiptap/extension-list': 3.25.0(@tiptap/core@3.25.0(@tiptap/pm@3.25.0))(@tiptap/pm@3.25.0) - '@tiptap/extension-list-item': 3.25.0(@tiptap/extension-list@3.25.0(@tiptap/core@3.25.0(@tiptap/pm@3.25.0))(@tiptap/pm@3.25.0)) - '@tiptap/extension-list-keymap': 3.25.0(@tiptap/extension-list@3.25.0(@tiptap/core@3.25.0(@tiptap/pm@3.25.0))(@tiptap/pm@3.25.0)) - '@tiptap/extension-ordered-list': 3.25.0(@tiptap/extension-list@3.25.0(@tiptap/core@3.25.0(@tiptap/pm@3.25.0))(@tiptap/pm@3.25.0)) - '@tiptap/extension-paragraph': 3.25.0(@tiptap/core@3.25.0(@tiptap/pm@3.25.0)) - '@tiptap/extension-strike': 3.25.0(@tiptap/core@3.25.0(@tiptap/pm@3.25.0)) - '@tiptap/extension-text': 3.25.0(@tiptap/core@3.25.0(@tiptap/pm@3.25.0)) - '@tiptap/extension-underline': 3.25.0(@tiptap/core@3.25.0(@tiptap/pm@3.25.0)) - '@tiptap/extensions': 3.25.0(@tiptap/core@3.25.0(@tiptap/pm@3.25.0))(@tiptap/pm@3.25.0) - '@tiptap/pm': 3.25.0 - - '@tiptap/suggestion@3.25.0(@tiptap/core@3.25.0(@tiptap/pm@3.25.0))(@tiptap/pm@3.25.0)': - dependencies: - '@tiptap/core': 3.25.0(@tiptap/pm@3.25.0) - '@tiptap/pm': 3.25.0 + '@tiptap/starter-kit@3.26.0': + dependencies: + '@tiptap/core': 3.26.0(@tiptap/pm@3.26.0) + '@tiptap/extension-blockquote': 3.26.0(@tiptap/core@3.26.0(@tiptap/pm@3.26.0)) + '@tiptap/extension-bold': 3.26.0(@tiptap/core@3.26.0(@tiptap/pm@3.26.0)) + '@tiptap/extension-bullet-list': 3.26.0(@tiptap/extension-list@3.26.0(@tiptap/core@3.26.0(@tiptap/pm@3.26.0))(@tiptap/pm@3.26.0)) + '@tiptap/extension-code': 3.26.0(@tiptap/core@3.26.0(@tiptap/pm@3.26.0)) + '@tiptap/extension-code-block': 3.26.0(@tiptap/core@3.26.0(@tiptap/pm@3.26.0))(@tiptap/pm@3.26.0) + '@tiptap/extension-document': 3.26.0(@tiptap/core@3.26.0(@tiptap/pm@3.26.0)) + '@tiptap/extension-dropcursor': 3.26.0(@tiptap/extensions@3.26.0(@tiptap/core@3.26.0(@tiptap/pm@3.26.0))(@tiptap/pm@3.26.0)) + '@tiptap/extension-gapcursor': 3.26.0(@tiptap/extensions@3.26.0(@tiptap/core@3.26.0(@tiptap/pm@3.26.0))(@tiptap/pm@3.26.0)) + '@tiptap/extension-hard-break': 3.26.0(@tiptap/core@3.26.0(@tiptap/pm@3.26.0)) + '@tiptap/extension-heading': 3.26.0(@tiptap/core@3.26.0(@tiptap/pm@3.26.0)) + '@tiptap/extension-horizontal-rule': 3.26.0(@tiptap/core@3.26.0(@tiptap/pm@3.26.0))(@tiptap/pm@3.26.0) + '@tiptap/extension-italic': 3.26.0(@tiptap/core@3.26.0(@tiptap/pm@3.26.0)) + '@tiptap/extension-link': 3.26.0(@tiptap/core@3.26.0(@tiptap/pm@3.26.0))(@tiptap/pm@3.26.0) + '@tiptap/extension-list': 3.26.0(@tiptap/core@3.26.0(@tiptap/pm@3.26.0))(@tiptap/pm@3.26.0) + '@tiptap/extension-list-item': 3.26.0(@tiptap/extension-list@3.26.0(@tiptap/core@3.26.0(@tiptap/pm@3.26.0))(@tiptap/pm@3.26.0)) + '@tiptap/extension-list-keymap': 3.26.0(@tiptap/extension-list@3.26.0(@tiptap/core@3.26.0(@tiptap/pm@3.26.0))(@tiptap/pm@3.26.0)) + '@tiptap/extension-ordered-list': 3.26.0(@tiptap/extension-list@3.26.0(@tiptap/core@3.26.0(@tiptap/pm@3.26.0))(@tiptap/pm@3.26.0)) + '@tiptap/extension-paragraph': 3.26.0(@tiptap/core@3.26.0(@tiptap/pm@3.26.0)) + '@tiptap/extension-strike': 3.26.0(@tiptap/core@3.26.0(@tiptap/pm@3.26.0)) + '@tiptap/extension-text': 3.26.0(@tiptap/core@3.26.0(@tiptap/pm@3.26.0)) + '@tiptap/extension-underline': 3.26.0(@tiptap/core@3.26.0(@tiptap/pm@3.26.0)) + '@tiptap/extensions': 3.26.0(@tiptap/core@3.26.0(@tiptap/pm@3.26.0))(@tiptap/pm@3.26.0) + '@tiptap/pm': 3.26.0 + + '@tiptap/suggestion@3.26.0(@tiptap/core@3.26.0(@tiptap/pm@3.26.0))(@tiptap/pm@3.26.0)': + dependencies: + '@tiptap/core': 3.26.0(@tiptap/pm@3.26.0) + '@tiptap/pm': 3.26.0 '@turbo/darwin-64@2.9.16': optional: true @@ -14572,7 +14410,7 @@ snapshots: '@types/fs-extra@11.0.4': dependencies: '@types/jsonfile': 6.1.4 - '@types/node': 24.13.0 + '@types/node': 24.13.1 '@types/html-to-text@9.0.4': {} @@ -14580,16 +14418,16 @@ snapshots: '@types/jsdom@28.0.3': dependencies: - '@types/node': 24.13.0 + '@types/node': 24.13.1 '@types/tough-cookie': 4.0.5 parse5: 8.0.1 - undici-types: 7.27.1 + undici-types: 7.27.2 '@types/jsesc@2.5.1': {} '@types/jsonfile@6.1.4': dependencies: - '@types/node': 24.13.0 + '@types/node': 24.13.1 '@types/lodash.merge@4.6.9': dependencies: @@ -14607,7 +14445,7 @@ snapshots: '@types/mailparser@3.4.6': dependencies: - '@types/node': 24.13.0 + '@types/node': 24.13.1 iconv-lite: 0.6.3 '@types/mime-types@3.0.1': {} @@ -14620,26 +14458,26 @@ snapshots: '@types/needle@3.3.0': dependencies: - '@types/node': 24.13.0 + '@types/node': 24.13.1 - '@types/node@24.13.0': + '@types/node@24.13.1': dependencies: undici-types: 7.18.2 '@types/nodemailer@8.0.0': dependencies: - '@types/node': 24.13.0 + '@types/node': 24.13.1 '@types/pg@8.20.0': dependencies: - '@types/node': 24.13.0 + '@types/node': 24.13.1 pg-protocol: 1.14.0 pg-types: 2.2.0 '@types/probe-image-size@7.2.5': dependencies: '@types/needle': 3.3.0 - '@types/node': 24.13.0 + '@types/node': 24.13.1 '@types/react-dom@19.2.3(@types/react@19.2.14)': dependencies: @@ -14653,7 +14491,7 @@ snapshots: '@types/set-cookie-parser@2.4.10': dependencies: - '@types/node': 24.13.0 + '@types/node': 24.13.1 '@types/statuses@2.0.6': {} @@ -14700,7 +14538,7 @@ snapshots: '@vercel/oidc@3.2.0': {} - '@vitejs/plugin-react@4.7.0(vite@7.3.5(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0))': + '@vitejs/plugin-react@4.7.0(vite@7.3.5(@types/node@24.13.1)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0))': dependencies: '@babel/core': 7.29.7 '@babel/plugin-transform-react-jsx-self': 7.29.7(@babel/core@7.29.7) @@ -14708,7 +14546,7 @@ snapshots: '@rolldown/pluginutils': 1.0.0-beta.27 '@types/babel__core': 7.20.5 react-refresh: 0.17.0 - vite: 7.3.5(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0) + vite: 7.3.5(@types/node@24.13.1)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0) transitivePeerDependencies: - supports-color @@ -14724,7 +14562,7 @@ snapshots: obug: 2.1.2 std-env: 4.1.0 tinyrainbow: 3.1.0 - vitest: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.13.0)(@vitest/coverage-v8@4.1.8)(jsdom@25.0.1)(msw@2.14.6(@types/node@24.13.0)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) + vitest: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.13.1)(@vitest/coverage-v8@4.1.8)(jsdom@25.0.1)(msw@2.14.6(@types/node@24.13.1)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.1)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) '@vitest/expect@3.2.6': dependencies: @@ -14743,23 +14581,23 @@ snapshots: chai: 6.2.2 tinyrainbow: 3.1.0 - '@vitest/mocker@3.2.6(msw@2.14.6(@types/node@24.13.0)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0))': + '@vitest/mocker@3.2.6(msw@2.14.6(@types/node@24.13.1)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.1)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0))': dependencies: '@vitest/spy': 3.2.6 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - msw: 2.14.6(@types/node@24.13.0)(typescript@5.9.3) - vite: 7.3.5(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0) + msw: 2.14.6(@types/node@24.13.1)(typescript@5.9.3) + vite: 7.3.5(@types/node@24.13.1)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0) - '@vitest/mocker@4.1.8(msw@2.14.6(@types/node@24.13.0)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0))': + '@vitest/mocker@4.1.8(msw@2.14.6(@types/node@24.13.1)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.1)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0))': dependencies: '@vitest/spy': 4.1.8 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - msw: 2.14.6(@types/node@24.13.0)(typescript@5.9.3) - vite: 7.3.5(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0) + msw: 2.14.6(@types/node@24.13.1)(typescript@5.9.3) + vite: 7.3.5(@types/node@24.13.1)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0) '@vitest/pretty-format@3.2.6': dependencies: @@ -14873,9 +14711,9 @@ snapshots: agent-base@7.1.4: {} - ai@6.0.196(zod@4.4.3): + ai@6.0.197(zod@4.4.3): dependencies: - '@ai-sdk/gateway': 3.0.124(zod@4.4.3) + '@ai-sdk/gateway': 3.0.125(zod@4.4.3) '@ai-sdk/provider': 3.0.10 '@ai-sdk/provider-utils': 4.0.27(zod@4.4.3) '@opentelemetry/api': 1.9.1 @@ -14966,7 +14804,7 @@ snapshots: base64-js@1.5.1: {} - baseline-browser-mapping@2.10.33: {} + baseline-browser-mapping@2.10.34: {} better-auth@1.6.14(@cloudflare/workers-types@4.20240718.0)(@opentelemetry/api@1.9.1)(next@16.2.4(@opentelemetry/api@1.9.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(pg@8.21.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(vitest@4.1.8): dependencies: @@ -14992,7 +14830,7 @@ snapshots: pg: 8.21.0 react: 19.2.5 react-dom: 19.2.5(react@19.2.5) - vitest: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.13.0)(@vitest/coverage-v8@4.1.8)(jsdom@25.0.1)(msw@2.14.6(@types/node@24.13.0)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) + vitest: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.13.1)(@vitest/coverage-v8@4.1.8)(jsdom@25.0.1)(msw@2.14.6(@types/node@24.13.1)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.1)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) transitivePeerDependencies: - '@cloudflare/workers-types' - '@opentelemetry/api' @@ -15044,9 +14882,9 @@ snapshots: browserslist@4.28.2: dependencies: - baseline-browser-mapping: 2.10.33 - caniuse-lite: 1.0.30001793 - electron-to-chromium: 1.5.367 + baseline-browser-mapping: 2.10.34 + caniuse-lite: 1.0.30001797 + electron-to-chromium: 1.5.368 node-releases: 2.0.47 update-browserslist-db: 1.2.3(browserslist@4.28.2) @@ -15096,11 +14934,11 @@ snapshots: caniuse-api@3.0.0: dependencies: browserslist: 4.28.2 - caniuse-lite: 1.0.30001793 + caniuse-lite: 1.0.30001797 lodash.memoize: 4.1.2 lodash.uniq: 4.5.0 - caniuse-lite@1.0.30001793: {} + caniuse-lite@1.0.30001797: {} capnp-ts@0.7.0: dependencies: @@ -15196,10 +15034,10 @@ snapshots: 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): 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.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-compose-refs': 1.1.3(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-dialog': 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-id': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-primitive': 2.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) react: 19.2.5 react-dom: 19.2.5(react@19.2.5) transitivePeerDependencies: @@ -15684,11 +15522,11 @@ snapshots: '@one-ini/wasm': 0.1.1 commander: 10.0.1 minimatch: 9.0.9 - semver: 7.8.1 + semver: 7.8.2 ee-first@1.1.1: {} - electron-to-chromium@1.5.367: {} + electron-to-chromium@1.5.368: {} embla-carousel-react@8.6.0(react@19.2.5): dependencies: @@ -15739,7 +15577,7 @@ snapshots: graceful-fs: 4.2.11 tapable: 2.3.3 - enhanced-resolve@5.22.2: + enhanced-resolve@5.23.0: dependencies: graceful-fs: 4.2.11 tapable: 2.3.3 @@ -16120,7 +15958,16 @@ snapshots: function-bind@1.1.2: {} - gaxios@7.1.4: + gaxios@7.1.3: + dependencies: + extend: 3.0.2 + https-proxy-agent: 7.0.6(supports-color@10.2.2) + node-fetch: 3.3.2 + rimraf: 5.0.10 + transitivePeerDependencies: + - supports-color + + gaxios@7.1.5: dependencies: extend: 3.0.2 https-proxy-agent: 7.0.6(supports-color@10.2.2) @@ -16130,7 +15977,15 @@ snapshots: gcp-metadata@8.1.2: dependencies: - gaxios: 7.1.4 + gaxios: 7.1.5 + google-logging-utils: 1.1.3 + json-bigint: 1.0.0 + transitivePeerDependencies: + - supports-color + + gcp-metadata@8.1.3: + dependencies: + gaxios: 7.1.3 google-logging-utils: 1.1.3 json-bigint: 1.0.0 transitivePeerDependencies: @@ -16209,11 +16064,23 @@ snapshots: globrex@0.1.2: {} - google-auth-library@10.6.2: + google-auth-library@10.5.0: + dependencies: + base64-js: 1.5.1 + ecdsa-sig-formatter: 1.0.11 + gaxios: 7.1.3 + gcp-metadata: 8.1.3 + google-logging-utils: 1.1.3 + gtoken: 8.0.0 + jws: 4.0.1 + transitivePeerDependencies: + - supports-color + + google-auth-library@10.7.0: dependencies: base64-js: 1.5.1 ecdsa-sig-formatter: 1.0.11 - gaxios: 7.1.4 + gaxios: 7.1.5 gcp-metadata: 8.1.2 google-logging-utils: 1.1.3 jws: 4.0.1 @@ -16222,11 +16089,12 @@ snapshots: google-logging-utils@1.1.3: {} - googleapis-common@8.0.1: + googleapis-common@8.0.2: dependencies: extend: 3.0.2 - gaxios: 7.1.4 - google-auth-library: 10.6.2 + gaxios: 7.1.3 + google-auth-library: 10.5.0 + google-logging-utils: 1.1.3 qs: 6.15.2 url-template: 2.0.8 transitivePeerDependencies: @@ -16234,8 +16102,8 @@ snapshots: googleapis@171.4.0: dependencies: - google-auth-library: 10.6.2 - googleapis-common: 8.0.1 + google-auth-library: 10.7.0 + googleapis-common: 8.0.2 transitivePeerDependencies: - supports-color @@ -16245,6 +16113,13 @@ snapshots: graphql@16.14.1: {} + gtoken@8.0.0: + dependencies: + gaxios: 7.1.3 + jws: 4.0.1 + transitivePeerDependencies: + - supports-color + has-flag@4.0.0: {} has-property-descriptors@1.0.2: @@ -16377,7 +16252,7 @@ snapshots: icu-minify@4.13.0: dependencies: - '@formatjs/icu-messageformat-parser': 3.5.10 + '@formatjs/icu-messageformat-parser': 3.5.11 ieee754@1.2.1: {} @@ -16421,10 +16296,10 @@ snapshots: intersection-observer@0.12.2: {} - intl-messageformat@11.2.7: + intl-messageformat@11.2.8: dependencies: - '@formatjs/fast-memoize': 3.1.5 - '@formatjs/icu-messageformat-parser': 3.5.10 + '@formatjs/fast-memoize': 3.1.6 + '@formatjs/icu-messageformat-parser': 3.5.11 ioredis@5.10.1: dependencies: @@ -16568,7 +16443,7 @@ snapshots: http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.6(supports-color@10.2.2) is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.23 + nwsapi: 2.2.24 parse5: 7.3.0 rrweb-cssom: 0.7.1 saxes: 6.0.0 @@ -16649,13 +16524,12 @@ snapshots: kleur@3.0.3: {} - knip@6.15.0: + knip@6.16.1: dependencies: fdir: 6.5.0(picomatch@4.0.4) formatly: 0.3.0 get-tsconfig: 4.14.0 jiti: 2.7.0 - minimist: 1.2.8 oxc-parser: 0.133.0 oxc-resolver: 11.20.0 picomatch: 4.0.4 @@ -16726,7 +16600,7 @@ snapshots: libbase64: 1.3.0 libqp: 2.1.1 - libphonenumber-js@1.13.5: {} + libphonenumber-js@1.13.6: {} libqp@2.1.1: {} @@ -16870,7 +16744,7 @@ snapshots: make-dir@4.0.0: dependencies: - semver: 7.8.1 + semver: 7.8.2 mammoth@1.12.0: dependencies: @@ -17464,9 +17338,9 @@ snapshots: optionalDependencies: msgpackr-extract: 3.0.4 - msw@2.14.6(@types/node@24.13.0)(typescript@5.9.3): + msw@2.14.6(@types/node@24.13.1)(typescript@5.9.3): dependencies: - '@inquirer/confirm': 6.1.1(@types/node@24.13.0) + '@inquirer/confirm': 6.1.1(@types/node@24.13.1) '@mswjs/interceptors': 0.41.9 '@open-draft/deferred-promise': 3.0.0 '@types/statuses': 2.0.6 @@ -17524,7 +17398,7 @@ snapshots: next-intl@4.13.0(next@16.2.4(@opentelemetry/api@1.9.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react@19.2.5)(typescript@5.9.3): dependencies: - '@formatjs/intl-localematcher': 0.8.9 + '@formatjs/intl-localematcher': 0.8.10 '@parcel/watcher': 2.5.6 '@swc/core': 1.15.40 icu-minify: 4.13.0 @@ -17554,8 +17428,8 @@ snapshots: dependencies: '@next/env': 16.2.4 '@swc/helpers': 0.5.15 - baseline-browser-mapping: 2.10.33 - caniuse-lite: 1.0.30001793 + baseline-browser-mapping: 2.10.34 + caniuse-lite: 1.0.30001797 postcss: 8.4.31 react: 19.2.5 react-dom: 19.2.5(react@19.2.5) @@ -17624,7 +17498,7 @@ snapshots: optionalDependencies: next: 16.2.4(@opentelemetry/api@1.9.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - nwsapi@2.2.23: {} + nwsapi@2.2.24: {} nypm@0.6.6: dependencies: @@ -18227,7 +18101,7 @@ snapshots: proto-list@1.2.4: {} - protobufjs@8.5.0: + protobufjs@8.6.1: dependencies: long: 5.3.2 optional: true @@ -18260,63 +18134,63 @@ snapshots: radash@12.1.1: {} - 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.5.0(@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.4 + '@radix-ui/react-accessible-icon': 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-accordion': 1.2.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-alert-dialog': 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-arrow': 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-aspect-ratio': 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-avatar': 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-checkbox': 1.3.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-collapsible': 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-collection': 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-compose-refs': 1.1.3(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-context': 1.1.4(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-context-menu': 2.3.0(@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.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-direction': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-dismissable-layer': 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-dropdown-menu': 2.1.17(@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.4(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-focus-scope': 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-form': 0.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-hover-card': 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-label': 2.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-menu': 2.1.17(@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.17(@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.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-one-time-password-field': 0.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-password-toggle-field': 0.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-popover': 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-popper': 1.3.0(@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.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-presence': 1.1.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-primitive': 2.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-progress': 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-radio-group': 1.4.0(@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.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-scroll-area': 1.2.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-select': 2.3.0(@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.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-slider': 1.4.0(@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.5(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-switch': 1.3.0(@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.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-toast': 1.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-toggle': 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-group': 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-toolbar': 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-tooltip': 1.2.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-use-callback-ref': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-controllable-state': 1.2.3(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-effect-event': 0.0.3(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-escape-keydown': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-is-hydrated': 0.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-layout-effect': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-size': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-visually-hidden': 1.2.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) react: 19.2.5 react-dom: 19.2.5(react@19.2.5) optionalDependencies: @@ -18550,6 +18424,10 @@ snapshots: reusify@1.1.0: {} + rimraf@5.0.10: + dependencies: + glob: 10.5.0 + rolldown-plugin-dts@0.23.2(oxc-resolver@11.20.0)(rolldown@1.0.0-rc.17)(typescript@5.9.3): dependencies: '@babel/generator': 8.0.0-rc.3 @@ -18690,6 +18568,8 @@ snapshots: semver@7.8.1: {} + semver@7.8.2: {} + send@1.2.1: dependencies: debug: 4.4.3(supports-color@10.2.2) @@ -18736,7 +18616,7 @@ snapshots: dependencies: '@img/colour': 1.1.0 detect-libc: 2.1.2 - semver: 7.8.1 + semver: 7.8.2 optionalDependencies: '@img/sharp-darwin-arm64': 0.34.5 '@img/sharp-darwin-x64': 0.34.5 @@ -18926,9 +18806,9 @@ snapshots: dependencies: js-tokens: 9.0.1 - stripe@22.2.0(@types/node@24.13.0): + stripe@22.2.0(@types/node@24.13.1): optionalDependencies: - '@types/node': 24.13.0 + '@types/node': 24.13.1 strnum@2.3.0: {} @@ -19102,7 +18982,7 @@ snapshots: picomatch: 4.0.4 rolldown: 1.0.0-rc.17 rolldown-plugin-dts: 0.23.2(oxc-resolver@11.20.0)(rolldown@1.0.0-rc.17)(typescript@5.9.3) - semver: 7.8.1 + semver: 7.8.2 tinyexec: 1.2.4 tinyglobby: 0.2.17 tree-kill: 1.2.2 @@ -19177,7 +19057,7 @@ snapshots: undici-types@7.18.2: {} - undici-types@7.27.1: {} + undici-types@7.27.2: {} undici@5.29.0: dependencies: @@ -19228,10 +19108,10 @@ snapshots: use-intl@4.13.0(react@19.2.5): dependencies: - '@formatjs/fast-memoize': 3.1.5 + '@formatjs/fast-memoize': 3.1.6 '@schummar/icu-type-parser': 1.21.5 icu-minify: 4.13.0 - intl-messageformat: 11.2.7 + intl-messageformat: 11.2.8 react: 19.2.5 use-sidecar@1.1.3(@types/react@19.2.14)(react@19.2.5): @@ -19270,7 +19150,7 @@ snapshots: 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): 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.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) react: 19.2.5 react-dom: 19.2.5(react@19.2.5) transitivePeerDependencies: @@ -19294,13 +19174,13 @@ snapshots: d3-time: 3.1.0 d3-timer: 3.0.1 - vite-node@3.2.4(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0): + vite-node@3.2.4(@types/node@24.13.1)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0): dependencies: cac: 6.7.14 debug: 4.4.3(supports-color@10.2.2) es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 7.3.5(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0) + vite: 7.3.5(@types/node@24.13.1)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0) transitivePeerDependencies: - '@types/node' - jiti @@ -19315,18 +19195,18 @@ snapshots: - tsx - yaml - vite-tsconfig-paths@5.1.4(typescript@5.9.3)(vite@7.3.5(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)): + vite-tsconfig-paths@5.1.4(typescript@5.9.3)(vite@7.3.5(@types/node@24.13.1)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)): dependencies: debug: 4.4.3(supports-color@10.2.2) globrex: 0.1.2 tsconfck: 3.1.6(typescript@5.9.3) optionalDependencies: - vite: 7.3.5(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0) + vite: 7.3.5(@types/node@24.13.1)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0) transitivePeerDependencies: - supports-color - typescript - vite@7.3.5(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0): + vite@7.3.5(@types/node@24.13.1)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0): dependencies: esbuild: 0.27.7 fdir: 6.5.0(picomatch@4.0.4) @@ -19335,18 +19215,18 @@ snapshots: rollup: 4.61.1 tinyglobby: 0.2.17 optionalDependencies: - '@types/node': 24.13.0 + '@types/node': 24.13.1 fsevents: 2.3.3 jiti: 2.7.0 lightningcss: 1.32.0 tsx: 4.22.4 yaml: 2.9.0 - vitest@3.2.6(@types/node@24.13.0)(jiti@2.7.0)(jsdom@25.0.1)(lightningcss@1.32.0)(msw@2.14.6(@types/node@24.13.0)(typescript@5.9.3))(tsx@4.22.4)(yaml@2.9.0): + vitest@3.2.6(@types/node@24.13.1)(jiti@2.7.0)(jsdom@25.0.1)(lightningcss@1.32.0)(msw@2.14.6(@types/node@24.13.1)(typescript@5.9.3))(tsx@4.22.4)(yaml@2.9.0): dependencies: '@types/chai': 5.2.3 '@vitest/expect': 3.2.6 - '@vitest/mocker': 3.2.6(msw@2.14.6(@types/node@24.13.0)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) + '@vitest/mocker': 3.2.6(msw@2.14.6(@types/node@24.13.1)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.1)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) '@vitest/pretty-format': 3.2.6 '@vitest/runner': 3.2.6 '@vitest/snapshot': 3.2.6 @@ -19364,11 +19244,11 @@ snapshots: tinyglobby: 0.2.17 tinypool: 1.1.1 tinyrainbow: 2.0.0 - vite: 7.3.5(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0) - vite-node: 3.2.4(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0) + vite: 7.3.5(@types/node@24.13.1)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0) + vite-node: 3.2.4(@types/node@24.13.1)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 24.13.0 + '@types/node': 24.13.1 jsdom: 25.0.1 transitivePeerDependencies: - jiti @@ -19384,10 +19264,10 @@ snapshots: - tsx - yaml - vitest@4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.13.0)(@vitest/coverage-v8@4.1.8)(jsdom@25.0.1)(msw@2.14.6(@types/node@24.13.0)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)): + vitest@4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.13.1)(@vitest/coverage-v8@4.1.8)(jsdom@25.0.1)(msw@2.14.6(@types/node@24.13.1)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.1)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)): dependencies: '@vitest/expect': 4.1.8 - '@vitest/mocker': 4.1.8(msw@2.14.6(@types/node@24.13.0)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) + '@vitest/mocker': 4.1.8(msw@2.14.6(@types/node@24.13.1)(typescript@5.9.3))(vite@7.3.5(@types/node@24.13.1)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0)) '@vitest/pretty-format': 4.1.8 '@vitest/runner': 4.1.8 '@vitest/snapshot': 4.1.8 @@ -19404,11 +19284,11 @@ snapshots: tinyexec: 1.2.4 tinyglobby: 0.2.17 tinyrainbow: 3.1.0 - vite: 7.3.5(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0) + vite: 7.3.5(@types/node@24.13.1)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)(yaml@2.9.0) why-is-node-running: 2.3.0 optionalDependencies: '@opentelemetry/api': 1.9.1 - '@types/node': 24.13.0 + '@types/node': 24.13.1 '@vitest/coverage-v8': 4.1.8(vitest@4.1.8) jsdom: 25.0.1 transitivePeerDependencies: