diff --git a/packages/bakery/package.json b/packages/bakery/package.json index 5487ea0..5e8fdb1 100644 --- a/packages/bakery/package.json +++ b/packages/bakery/package.json @@ -41,7 +41,6 @@ "applesauce-loaders": "next", "applesauce-relay": "next", "applesauce-signers": "next", - "nostr-bakery-common": "^0.1.0", "better-sqlite3": "^11.9.1", "blossom-client-sdk": "^2.1.1", "cors": "^2.8.5", @@ -63,6 +62,7 @@ "mkdirp": "^3.0.1", "nanoid": "^5.1.5", "node-graceful-shutdown": "^1.1.5", + "nostr-bakery-common": "^0.1.0", "nostr-tools": "^2.12.0", "pac-proxy-agent": "^7.2.0", "process-streams": "^1.0.3", @@ -77,7 +77,7 @@ }, "devDependencies": { "@changesets/cli": "^2.28.1", - "@modelcontextprotocol/inspector": "^0.7.0", + "@modelcontextprotocol/inspector": "^0.8.2", "@swc-node/register": "^1.10.10", "@swc/core": "^1.11.18", "@types/better-sqlite3": "^7.6.13", diff --git a/packages/bakery/src/app/index.ts b/packages/bakery/src/app/index.ts index 516ecde..2e9ed0a 100644 --- a/packages/bakery/src/app/index.ts +++ b/packages/bakery/src/app/index.ts @@ -10,23 +10,17 @@ import cors from "cors"; import { logger } from "../logger.js"; -import { NIP_11_SOFTWARE_URL, SENSITIVE_KINDS } from "../const.js"; +import { NIP_11_SOFTWARE_URL } from "../const.js"; import { OWNER_PUBKEY, BAKERY_PORT } from "../env.js"; -import ControlApi from "../modules/control/control-api.js"; import DirectMessageManager from "../modules/direct-message-manager.js"; -import DirectMessageActions from "../modules/control/dm-actions.js"; import AddressBook from "../modules/address-book.js"; import NotificationsManager from "../modules/notifications/notifications-manager.js"; -import NotificationActions from "../modules/control/notification-actions.js"; import ProfileBook from "../modules/profile-book.js"; import ContactBook from "../modules/contact-book.js"; import CautiousPool from "../modules/cautious-pool.js"; -import RemoteAuthActions from "../modules/control/remote-auth-actions.js"; import LogStore from "../modules/log-store/log-store.js"; import DecryptionCache from "../modules/decryption-cache/decryption-cache.js"; -import DecryptionCacheActions from "../modules/control/decryption-cache.js"; -import LogsActions from "../modules/control/logs-actions.js"; import ApplicationStateManager from "../modules/application-state/manager.js"; import InboundNetworkManager from "../modules/network/inbound/index.js"; import OutboundNetworkManager from "../modules/network/outbound/index.js"; @@ -71,7 +65,6 @@ export default class App extends EventEmitter { eventStore: SQLiteEventStore; logStore: LogStore; relay: NostrRelay; - control: ControlApi; pool: CautiousPool; addressBook: AddressBook; profileBook: ProfileBook; @@ -167,21 +160,6 @@ export default class App extends EventEmitter { if (config.owner) this.directMessageManager.watchInbox(config.owner); }); - // API for controlling the node - this.control = new ControlApi(this); - this.control.registerHandler(new DirectMessageActions(this)); - this.control.registerHandler(new NotificationActions(this)); - this.control.registerHandler(new RemoteAuthActions(this)); - this.control.registerHandler(new DecryptionCacheActions(this)); - - this.control.registerHandler(new LogsActions(this)); - - // connect control api to websocket server - this.control.attachToServer(this.wss); - - // if process has an RPC interface, attach control api to it - if (process.send) this.control.attachToProcess(process); - const connection = onConnection(this.wss); // queries @@ -251,13 +229,6 @@ export default class App extends EventEmitter { return true; }; - // when the owner NIP-42 authenticates with the relay pass it along to the control - this.relay.on("socket:auth", (ws, auth) => { - if (auth.pubkey === this.config.data.owner) { - this.control.authenticatedConnections.add(ws); - } - }); - // if socket is unauthenticated only allow owner's events and incoming DMs this.relay.registerEventHandler((ctx, next) => { const auth = ctx.relay.getSocketAuth(ctx.socket); @@ -287,22 +258,22 @@ export default class App extends EventEmitter { }); // block subscriptions for sensitive kinds unless NIP-42 auth or Auth Code - this.relay.registerSubscriptionFilter((ctx, next) => { - // always allow if authenticated with auth code - const isAuthenticatedWithAuthCode = this.control.authenticatedConnections.has(ctx.socket); - if (isAuthenticatedWithAuthCode) return next(); + // this.relay.registerSubscriptionFilter((ctx, next) => { + // // always allow if authenticated with auth code + // const isAuthenticatedWithAuthCode = this.control.authenticatedConnections.has(ctx.socket); + // if (isAuthenticatedWithAuthCode) return next(); - const hasSensitiveKinds = ctx.filters.some( - (filter) => filter.kinds && SENSITIVE_KINDS.some((k) => filter.kinds?.includes(k)), - ); + // const hasSensitiveKinds = ctx.filters.some( + // (filter) => filter.kinds && SENSITIVE_KINDS.some((k) => filter.kinds?.includes(k)), + // ); - if (hasSensitiveKinds) { - const auth = ctx.relay.getSocketAuth(ctx.socket); - if (!auth) throw new Error(ctx.relay.makeAuthRequiredReason("Cant view sensitive events without auth")); - } + // if (hasSensitiveKinds) { + // const auth = ctx.relay.getSocketAuth(ctx.socket); + // if (!auth) throw new Error(ctx.relay.makeAuthRequiredReason("Cant view sensitive events without auth")); + // } - return next(); - }); + // return next(); + // }); // Handle possible additional actions when the event store receives a new message this.eventStore.on("event:inserted", (event) => { diff --git a/packages/bakery/src/modules/control/control-api.ts b/packages/bakery/src/modules/control/control-api.ts deleted file mode 100644 index 2eeafd6..0000000 --- a/packages/bakery/src/modules/control/control-api.ts +++ /dev/null @@ -1,130 +0,0 @@ -import { WebSocket, WebSocketServer } from "ws"; -import { type IncomingMessage } from "http"; -import { ControlResponse } from "@satellite-earth/core/types/control-api/index.js"; - -import type App from "../../app/index.js"; -import { logger } from "../../logger.js"; - -export type ControlMessage = ["CONTROL", string, string, ...any[]]; -export interface ControlMessageHandler { - app: App; - name: string; - handleConnection?(ws: WebSocket | NodeJS.Process): void; - handleDisconnect?(socket: WebSocket): void; - handleMessage(sock: WebSocket | NodeJS.Process, message: ControlMessage): boolean | Promise; -} - -/** handles web socket connections and 'CONTROL' messages */ -export default class ControlApi { - app: App; - auth?: string; - log = logger.extend("ControlApi"); - handlers = new Map(); - - authenticatedConnections = new Set(); - - constructor(app: App, auth?: string) { - this.app = app; - this.auth = auth; - } - - registerHandler(handler: ControlMessageHandler) { - this.handlers.set(handler.name, handler); - } - unregisterHandler(handler: ControlMessageHandler) { - this.handlers.delete(handler.name); - } - - /** start listening for incoming ws connections */ - attachToServer(wss: WebSocketServer) { - wss.on("connection", this.handleConnection.bind(this)); - } - - handleConnection(ws: WebSocket, req: IncomingMessage) { - ws.on("message", (data, isBinary) => { - this.handleRawMessage(ws, data as Buffer); - }); - - for (const [id, handler] of this.handlers) { - handler.handleConnection?.(ws); - } - - ws.once("close", () => this.handleDisconnect(ws)); - } - handleDisconnect(ws: WebSocket) { - this.authenticatedConnections.delete(ws); - - for (const [id, handler] of this.handlers) { - handler.handleDisconnect?.(ws); - } - } - - attachToProcess(p: NodeJS.Process) { - p.on("message", (message) => { - if ( - Array.isArray(message) && - message[0] === "CONTROL" && - typeof message[1] === "string" && - typeof message[2] === "string" - ) { - this.handleMessage(p, message as ControlMessage); - } - }); - - for (const [id, handler] of this.handlers) { - handler.handleConnection?.(p); - } - } - - /** handle a ws message */ - async handleRawMessage(ws: WebSocket | NodeJS.Process, message: Buffer) { - try { - const data = JSON.parse(message.toString()) as string[]; - - try { - if ( - Array.isArray(data) && - data[0] === "CONTROL" && - typeof data[1] === "string" && - typeof data[2] === "string" - ) { - if (this.authenticatedConnections.has(ws) || data[1] === "AUTH") { - await this.handleMessage(ws, data as ControlMessage); - } - } - } catch (err) { - this.log("Failed to handle Control message", message.toString("utf-8")); - this.log(err); - } - } catch (error) { - // failed to parse JSON, do nothing - } - } - - /** handle a ['CONTROL', ...] message */ - async handleMessage(sock: WebSocket | NodeJS.Process, message: ControlMessage) { - // handle ['CONTROL', 'AUTH', ] messages - if (message[1] === "AUTH" && message[2] === "CODE") { - const code = message[3]; - if (code === this.auth) { - this.authenticatedConnections.add(sock); - this.send(sock, ["CONTROL", "AUTH", "SUCCESS"]); - } else { - this.send(sock, ["CONTROL", "AUTH", "INVALID", "Invalid Auth Code"]); - } - return true; - } - - const handler = this.handlers.get(message[1]); - if (handler) { - return await handler.handleMessage(sock, message); - } - - this.log("Failed to handle Control message", message); - return false; - } - - send(sock: WebSocket | NodeJS.Process, response: ControlResponse) { - sock.send?.(JSON.stringify(response)); - } -} diff --git a/packages/bakery/src/modules/control/decryption-cache.ts b/packages/bakery/src/modules/control/decryption-cache.ts deleted file mode 100644 index 874e239..0000000 --- a/packages/bakery/src/modules/control/decryption-cache.ts +++ /dev/null @@ -1,45 +0,0 @@ -import { WebSocket } from "ws"; -import { - DecryptionCacheMessage, - DecryptionCacheResponse, -} from "@satellite-earth/core/types/control-api/decryption-cache.js"; - -import type App from "../../app/index.js"; -import { type ControlMessageHandler } from "./control-api.js"; - -/** handles ['CONTROL', 'DECRYPTION-CACHE', ...] messages */ -export default class DecryptionCacheActions implements ControlMessageHandler { - app: App; - name = "DECRYPTION-CACHE"; - - constructor(app: App) { - this.app = app; - } - - handleMessage(sock: WebSocket | NodeJS.Process, message: DecryptionCacheMessage) { - const method = message[2]; - switch (method) { - case "ADD-CONTENT": - this.app.decryptionCache.addEventContent(message[3], message[4]); - return true; - - case "CLEAR": - this.app.decryptionCache.clearAll(); - return true; - - case "REQUEST": - const contents = this.app.decryptionCache.getEventsContent(message[3]); - for (const { event, content } of contents) - this.send(sock, ["CONTROL", "DECRYPTION-CACHE", "CONTENT", event, content]); - this.send(sock, ["CONTROL", "DECRYPTION-CACHE", "END"]); - return true; - - default: - return false; - } - } - - send(sock: WebSocket | NodeJS.Process, response: DecryptionCacheResponse) { - sock.send?.(JSON.stringify(response)); - } -} diff --git a/packages/bakery/src/modules/control/dm-actions.ts b/packages/bakery/src/modules/control/dm-actions.ts deleted file mode 100644 index d5c5a80..0000000 --- a/packages/bakery/src/modules/control/dm-actions.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { WebSocket } from "ws"; -import { DirectMessageMessage } from "@satellite-earth/core/types/control-api/direct-messages.js"; - -import type App from "../../app/index.js"; -import { type ControlMessageHandler } from "./control-api.js"; - -/** handles ['CONTROL', 'DM', ...] messages */ -export default class DirectMessageActions implements ControlMessageHandler { - app: App; - name = "DM"; - - constructor(app: App) { - this.app = app; - } - - handleMessage(sock: WebSocket | NodeJS.Process, message: DirectMessageMessage) { - const method = message[2]; - switch (method) { - case "OPEN": - this.app.directMessageManager.openConversation(message[3], message[4]); - return true; - - case "CLOSE": - this.app.directMessageManager.closeConversation(message[3], message[4]); - return true; - - default: - return false; - } - } -} diff --git a/packages/bakery/src/modules/control/logs-actions.ts b/packages/bakery/src/modules/control/logs-actions.ts deleted file mode 100644 index ee4bd26..0000000 --- a/packages/bakery/src/modules/control/logs-actions.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { WebSocket } from "ws"; -import { LogsMessage } from "@satellite-earth/core/types/control-api/logs.js"; - -import type App from "../../app/index.js"; -import { type ControlMessageHandler } from "./control-api.js"; - -/** handles ['CONTROL', 'DM', ...] messages */ -export default class LogsActions implements ControlMessageHandler { - app: App; - name = "LOGS"; - - constructor(app: App) { - this.app = app; - } - - handleMessage(sock: WebSocket | NodeJS.Process, message: LogsMessage) { - const method = message[2]; - switch (method) { - case "CLEAR": - this.app.logStore.clearLogs(message[3] ? { service: message[3] } : undefined); - return true; - - default: - return false; - } - } -} diff --git a/packages/bakery/src/modules/control/notification-actions.ts b/packages/bakery/src/modules/control/notification-actions.ts deleted file mode 100644 index 22b92d5..0000000 --- a/packages/bakery/src/modules/control/notification-actions.ts +++ /dev/null @@ -1,43 +0,0 @@ -import { WebSocket } from "ws"; -import { NotificationsMessage, NotificationsResponse } from "@satellite-earth/core/types/control-api/notifications.js"; - -import { ControlMessageHandler } from "./control-api.js"; -import type App from "../../app/index.js"; -import { NostrEvent } from "nostr-tools"; - -export default class NotificationActions implements ControlMessageHandler { - app: App; - name = "NOTIFICATIONS"; - - constructor(app: App) { - this.app = app; - } - - handleMessage(sock: WebSocket | NodeJS.Process, message: NotificationsMessage): boolean { - const action = message[2]; - switch (action) { - case "GET-VAPID-KEY": - this.send(sock, ["CONTROL", "NOTIFICATIONS", "VAPID-KEY", this.app.notifications.webPushKeys.publicKey]); - return true; - - case "REGISTER": - this.app.notifications.addOrUpdateChannel(message[3]); - return true; - - case "NOTIFY": - const event: NostrEvent | undefined = this.app.eventStore.getEventsForFilters([{ ids: [message[3]] }])?.[0]; - if (event) this.app.notifications.notify(event); - return true; - - case "UNREGISTER": - this.app.notifications.removeChannel(message[3]); - return true; - - default: - return false; - } - } - send(sock: WebSocket | NodeJS.Process, response: NotificationsResponse) { - sock.send?.(JSON.stringify(response)); - } -} diff --git a/packages/bakery/src/modules/control/remote-auth-actions.ts b/packages/bakery/src/modules/control/remote-auth-actions.ts deleted file mode 100644 index 0689789..0000000 --- a/packages/bakery/src/modules/control/remote-auth-actions.ts +++ /dev/null @@ -1,69 +0,0 @@ -import { WebSocket } from "ws"; -import { verifyEvent } from "nostr-tools"; -import { RemoteAuthMessage, RemoteAuthResponse } from "@satellite-earth/core/types/control-api/remote-auth.js"; - -import type App from "../../app/index.js"; -import { type ControlMessageHandler } from "./control-api.js"; - -/** handles ['CONTROL', 'REMOTE-AUTH', ...] messages */ -export default class RemoteAuthActions implements ControlMessageHandler { - app: App; - name = "REMOTE-AUTH"; - - private subscribed = new Set(); - - constructor(app: App) { - this.app = app; - - // when config changes send it to the subscribed sockets - this.app.pool.emitter.on("challenge", (relay, challenge) => { - for (const sock of this.subscribed) { - this.send(sock, [ - "CONTROL", - "REMOTE-AUTH", - "STATUS", - relay.url, - challenge, - !!this.app.pool.authenticated.get(relay.url), - ]); - } - }); - } - - sendAllStatuses(sock: WebSocket | NodeJS.Process) { - for (const [url, relay] of this.app.pool) { - const challenge = this.app.pool.challenges.get(url); - const authenticated = this.app.pool.isAuthenticated(url); - - if (challenge) { - this.send(sock, ["CONTROL", "REMOTE-AUTH", "STATUS", url, challenge, authenticated]); - } - } - } - - async handleMessage(sock: WebSocket | NodeJS.Process, message: RemoteAuthMessage) { - const method = message[2]; - switch (method) { - case "SUBSCRIBE": - this.subscribed.add(sock); - sock.once("close", () => this.subscribed.delete(sock)); - this.sendAllStatuses(sock); - return true; - case "UNSUBSCRIBE": - this.subscribed.delete(sock); - return true; - case "AUTHENTICATE": - const event = message[3]; - if (verifyEvent(event)) { - const relay = event.tags.find((t) => (t[0] = "relay"))?.[1]; - if (relay) await this.app.pool.authenticate(relay, event); - } - default: - return false; - } - } - - send(sock: WebSocket | NodeJS.Process, response: RemoteAuthResponse) { - sock.send?.(JSON.stringify(response)); - } -} diff --git a/packages/bakery/src/services/mcp/tools/events.ts b/packages/bakery/src/services/mcp/tools/events.ts index b4abc8d..8333c7c 100644 --- a/packages/bakery/src/services/mcp/tools/events.ts +++ b/packages/bakery/src/services/mcp/tools/events.ts @@ -1,14 +1,14 @@ import { CallToolResult } from "@modelcontextprotocol/sdk/types.js"; import { getProfileContent } from "applesauce-core/helpers"; -import { kinds } from "nostr-tools"; +import { Filter, kinds } from "nostr-tools"; import z from "zod"; -import mcpServer from "../server.js"; -import { ownerFactory, ownerPublish } from "../../owner-signer.js"; import bakeryConfig from "../../bakery-config.js"; import eventCache from "../../event-cache.js"; -import { normalizeToHexPubkey } from "../../../helpers/nip19.js"; import { asyncLoader } from "../../loaders.js"; +import { ownerFactory, ownerPublish } from "../../owner-signer.js"; +import { eventInput, userInput } from "../inputs.js"; +import mcpServer from "../server.js"; mcpServer.tool( "sign_draft_event", @@ -70,9 +70,17 @@ mcpServer.tool( mcpServer.tool( "search_events", "Search for events using a sqlite FTS5 search query", - { query: z.string(), kind: z.number().default(1), limit: z.number().default(50) }, - async ({ query, kind, limit }) => { - const events = await eventCache.getEventsForFilters([{ kinds: [kind], limit, search: query }]); + { + query: z.string().describe("The sqlite FTS5 search query"), + kind: z.number().default(1).describe("The kind of events to search for"), + limit: z.number().default(50).describe("The number of events to return"), + author: userInput.optional().describe("The author of the events to search for"), + }, + async ({ query, kind, limit, author }) => { + const filter: Filter = { kinds: [kind], limit, search: query }; + if (author) filter.authors = [author]; + + const events = await eventCache.getEventsForFilters([filter]); return { content: events.map((event) => ({ type: "text", text: JSON.stringify(event) })), @@ -81,9 +89,7 @@ mcpServer.tool( ); // TODO: this needs to accept naddr, and nevent -mcpServer.tool("get_event", "Get an event by id", { id: z.string().length(64) }, async ({ id }) => { - const event = await eventCache.getEventsForFilters([{ ids: [id] }]); - +mcpServer.tool("get_event_json", "Gets the full event as json", { event: eventInput }, async ({ event }) => { return { content: [{ type: "text", text: JSON.stringify(event) }], }; @@ -92,7 +98,10 @@ mcpServer.tool("get_event", "Get an event by id", { id: z.string().length(64) }, mcpServer.tool( "search_users", "Search for users using a sqlite FTS5 search query", - { query: z.string(), limit: z.number().default(20) }, + { + query: z.string().describe("The sqlite FTS5 search query"), + limit: z.number().default(20).describe("The number of users to return"), + }, async ({ query, limit }) => { const profiles = await eventCache.getEventsForFilters([{ search: query, kinds: [kinds.Metadata], limit }]); @@ -123,17 +132,14 @@ mcpServer.tool( "get_users_recent_events", "Gets a list of recent events created by a pubkey", { - pubkey: z - .string() - .transform((hex) => normalizeToHexPubkey(hex, true)) - .describe("The pubkey of the user to get events for"), + user: userInput.describe("The user to get events for"), limit: z.number().default(10).describe("The number of events to return"), kinds: z.array(z.number()).default([kinds.ShortTextNote]).describe("The kind number of events to return"), since: z.number().optional().describe("The unix timestamp to start the search from"), until: z.number().optional().describe("The unix timestamp to end the search at"), }, - async ({ pubkey, limit, kinds, since, until }) => { - const events = await eventCache.getEventsForFilters([{ authors: [pubkey], limit, kinds, since, until }]); + async ({ user, limit, kinds, since, until }) => { + const events = await eventCache.getEventsForFilters([{ authors: [user], limit, kinds, since, until }]); return { content: events.map((event) => ({ type: "text", text: JSON.stringify(event) })), @@ -142,20 +148,17 @@ mcpServer.tool( ); mcpServer.tool( - "get_events_pubkey_mentioned", - "Gets a list of recent events that the pubkey was mentioned in", + "get_events_user_mentioned", + "Gets a list of recent events that the user is mentioned in", { - pubkey: z - .string() - .transform((hex) => normalizeToHexPubkey(hex, true)) - .describe("The pubkey of the user to get events for"), + user: userInput.describe("The user who is mentioned in the events"), limit: z.number().default(10).describe("The number of events to return"), kinds: z.array(z.number()).default([kinds.ShortTextNote]).describe("The kind number of events to return"), since: z.number().optional().describe("The unix timestamp to start the search from"), until: z.number().optional().describe("The unix timestamp to end the search at"), }, - async ({ pubkey, limit, kinds, since, until }) => { - const events = await eventCache.getEventsForFilters([{ "#p": [pubkey], limit, kinds, since, until }]); + async ({ user, limit, kinds, since, until }) => { + const events = await eventCache.getEventsForFilters([{ "#p": [user], limit, kinds, since, until }]); return { content: events.map((event) => ({ type: "text", text: JSON.stringify(event) })), diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8dc76c6..78ffe53 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -170,8 +170,8 @@ importers: specifier: ^2.28.1 version: 2.28.1 '@modelcontextprotocol/inspector': - specifier: ^0.7.0 - version: 0.7.0(@swc/core@1.11.18)(@types/node@22.14.0)(typescript@5.8.3) + specifier: ^0.8.2 + version: 0.8.2(@swc/core@1.11.18)(@types/node@22.14.0)(typescript@5.8.3) '@swc-node/register': specifier: ^1.10.10 version: 1.10.10(@swc/core@1.11.18)(@swc/types@0.1.21)(typescript@5.8.3) @@ -1154,16 +1154,16 @@ packages: '@manypkg/get-packages@1.1.3': resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} - '@modelcontextprotocol/inspector-client@0.7.0': - resolution: {integrity: sha512-8wfFDUhJ7ZgP2lgwqHcwYy1GyVYxkn403Gg8LuQaBl27PkxiJHsfhL/KDRXFJ2pEoE0jeRBqq7jTWwGymkFH5w==} + '@modelcontextprotocol/inspector-client@0.8.2': + resolution: {integrity: sha512-eqsrA4eOXBadVTU8qFr2IYnxyY97+DfMDhl9LYuEHMIuEWjRObNGI/H3JFwDFpCkV4GOgWSBjfdIQ5yzUy7LKA==} hasBin: true - '@modelcontextprotocol/inspector-server@0.7.0': - resolution: {integrity: sha512-2VeqTUJhVYebxzcJdv1GL0UgxMw5kOlhU+vJD0ch3OxOyHkTUM4eVe+a2p3VOCLkNW+DZuhc2x8WXARgXuiXNg==} + '@modelcontextprotocol/inspector-server@0.8.2': + resolution: {integrity: sha512-1gSgWAO20nT8YSdNi/3b4czELYWoc+Sur5+v2tX9ru1UIXQ10y3YMGDtmxm1hd3U5SXkuzeg6toXQyGTzcvvAQ==} hasBin: true - '@modelcontextprotocol/inspector@0.7.0': - resolution: {integrity: sha512-gRrCxAf9NwJzOhCds21puUiMoM/ezfIHt9LwA3HkKAI/jnxM+yRcpZfcHnZoKkYTvmtYCgcL4kqR3UsWayMamg==} + '@modelcontextprotocol/inspector@0.8.2': + resolution: {integrity: sha512-ewowTh84QVUrVnIVJLx5Jhh2yJrgWa/LrcVlNhtm8Y2Uk2bgW0y0catXyeyR6dqqyDadMXq1hbPRq0Lo1zPFnQ==} hasBin: true '@modelcontextprotocol/sdk@1.9.0': @@ -1216,58 +1216,68 @@ packages: '@nothing-but/utils@0.17.0': resolution: {integrity: sha512-TuCHcHLOqDL0SnaAxACfuRHBNRgNJcNn9X0GiH5H3YSDBVquCr3qEIG3FOQAuMyZCbu9w8nk2CHhOsn7IvhIwQ==} - '@oxc-resolver/binding-darwin-arm64@5.1.1': - resolution: {integrity: sha512-q+3DkqeB9EZze9t29iW6fQOOitIfA3/P5tnxrRPrx5T/OS8hc5EZtXfx9NZc+BcrD2URrs9KJc6lPV1o7mXQLA==} + '@oxc-resolver/binding-darwin-arm64@5.2.0': + resolution: {integrity: sha512-3v2eS1swAUZ/OPrBpTB5Imn4Xhbz4zKPa/mugnYCAC4pVt/miBQLBNciBRZG8oyHiGmLtjw/qanZC36uB6MITQ==} cpu: [arm64] os: [darwin] - '@oxc-resolver/binding-darwin-x64@5.1.1': - resolution: {integrity: sha512-njuegc3m/6Fos+HdN0zRTRDa00sAm9zFp6a6Sp5s9LiUATvwu7mIvNW4kZedqlWCjBrLT2PaFb6tawt9XnpM5g==} + '@oxc-resolver/binding-darwin-x64@5.2.0': + resolution: {integrity: sha512-6uhnlZU+CBULQAjcwQ4nerA76xDEvPFtHpTzXhEoitr4a3Ks5H92X4uuLT0C0FW3RfhIVL8Lpp9pLYHN3oAvug==} cpu: [x64] os: [darwin] - '@oxc-resolver/binding-freebsd-x64@5.1.1': - resolution: {integrity: sha512-aA5WeaBOkLdLKnXWbUMcCG0IBSD6E+VOg35VuQXmyam7W/PsS0e3Ma7mu4tAXhMVPRjwpEuf+32t4dJCRIdZ1A==} + '@oxc-resolver/binding-freebsd-x64@5.2.0': + resolution: {integrity: sha512-6TCXw/rPnhBLlS/Rg7QHO9lBjwJSbUJMhd9POpVpQEK1S9viEAl8JPdxXuNCEDPJHSmpMrGt6+DTjQxQ5J1kpQ==} cpu: [x64] os: [freebsd] - '@oxc-resolver/binding-linux-arm-gnueabihf@5.1.1': - resolution: {integrity: sha512-H/TiZV7ADrBl3fDBxfRya4mTtqWI0kXHHN3e7o2FxUURDMcQ3x4jKkNY1mdQa9Dunelq6secB/gK/om6DUJPLw==} + '@oxc-resolver/binding-linux-arm-gnueabihf@5.2.0': + resolution: {integrity: sha512-egjFYBKixAjekmiImCYkpwSo0bnZJOieJIc6cXePuCih2R5nFjkS1F8tSlJ18GdRZ1MmYveM6THmIHJCpnDqaQ==} cpu: [arm] os: [linux] - '@oxc-resolver/binding-linux-arm64-gnu@5.1.1': - resolution: {integrity: sha512-EBAyNMiclf6kQ3ualnXbnh1VtVu9NBSbwhsYsRsX+1f2yIhLB+9CjDK0r6JQdDzI2anyTElsks5fvMj82INWtQ==} + '@oxc-resolver/binding-linux-arm64-gnu@5.2.0': + resolution: {integrity: sha512-Cizb3uHnEc2MYZeRnp+BxmDyAKo7szJxbTW4BgPvs+XicYZI0kc/qcZlHRoJImalBqvve+ZObasRqCS1zqub9A==} cpu: [arm64] os: [linux] - '@oxc-resolver/binding-linux-arm64-musl@5.1.1': - resolution: {integrity: sha512-4hfXER7bn1zHSoM+Ef/DSlqZw8QecRFDqw7Mk3n2FBz2TCrjtaxIDdvhWvENF3M1KdByeuDkWTzbBW2UjCL+JQ==} + '@oxc-resolver/binding-linux-arm64-musl@5.2.0': + resolution: {integrity: sha512-rDiRuIvQXa9MI8oiEbCVnU7dBVDuo74456dN3Bf30/Joz6FVBhYrhoOTxtxH+WgC38qCUWWuBjhFaLRLDLaMRw==} cpu: [arm64] os: [linux] - '@oxc-resolver/binding-linux-x64-gnu@5.1.1': - resolution: {integrity: sha512-4PVnKH7xHnhh2l+sW/Bz37dqyGAehTbfsL2f/Ma+o+gem/wRgTDV1kZYfj6D+L6zTEbnVjAUe7yASepI30zH0g==} + '@oxc-resolver/binding-linux-riscv64-gnu@5.2.0': + resolution: {integrity: sha512-QRdE2DOO9e4oYzYyf/iRnLiomvs3bRedRTvFHbTAcL0JJfsicLLK4T7J5BP76sVum0QUAVJm+JqgEUmk8ETGXw==} + cpu: [riscv64] + os: [linux] + + '@oxc-resolver/binding-linux-s390x-gnu@5.2.0': + resolution: {integrity: sha512-bD8HDjnEziw1+Y7uowIRI9JaJd6vldLoVXOZaSeBRjofWk8rQOOyxfNTVymIrcmPE8rZZJfkDdGyCnTJP0h9vA==} + cpu: [s390x] + os: [linux] + + '@oxc-resolver/binding-linux-x64-gnu@5.2.0': + resolution: {integrity: sha512-eWEHGjkrk4Dsul7Wyt6X9UMxZ+e2zKgpRG2kbSZOQQTXf6ZnU9+lRAyAgf2X1qdLjmH0GT54wIak7fhSsuNWLA==} cpu: [x64] os: [linux] - '@oxc-resolver/binding-linux-x64-musl@5.1.1': - resolution: {integrity: sha512-RjveVoOy14v7zhQCHQQH5gYtAlFJ4Edb9j9NdgUzDsFC+IxsfMZA5XcVn/5lSfU0zr5GggHu+kphFRK7ubAPKw==} + '@oxc-resolver/binding-linux-x64-musl@5.2.0': + resolution: {integrity: sha512-iojrjytDOdg4aWm25ak7qpTQwWj+D7O+duHBL2rQhDxIY1K4eysJwobWck0yzJ6VlONaQF6RLt+YeDpGoKV+ww==} cpu: [x64] os: [linux] - '@oxc-resolver/binding-wasm32-wasi@5.1.1': - resolution: {integrity: sha512-SAJHuyc8dOb03xLwy/Kisd3K18f0k4kJvDsrDr5XtGPxp2sA6TGK4pz8KQfYh6fZRsmRD6Ht3WJEZCXI/yGBtQ==} + '@oxc-resolver/binding-wasm32-wasi@5.2.0': + resolution: {integrity: sha512-Lgv3HjKUXRa/xMCgBAkwKQcPljAn5IRicjgoPBXGUhghzK/9yF2DTf7aXdVPvRxFKjvcyWtzpzPV2pzYCuBaBA==} engines: {node: '>=14.0.0'} cpu: [wasm32] - '@oxc-resolver/binding-win32-arm64-msvc@5.1.1': - resolution: {integrity: sha512-8jRQB5p8EH5fPyWuyQQDfM+xF+o1MUEGh/QB+ei6lW0YSowW4AaDNn+mKBFe53oVblm/2weWDJxgkzbOu2M5sA==} + '@oxc-resolver/binding-win32-arm64-msvc@5.2.0': + resolution: {integrity: sha512-VK5yEOdGbIrb89gUtVIw2IVP4r0rEhiwVLQOD37vZhvrt5iY0FHOTtMz9ZsWI0anZ0swt26U2wRcJYT0/AsBfw==} cpu: [arm64] os: [win32] - '@oxc-resolver/binding-win32-x64-msvc@5.1.1': - resolution: {integrity: sha512-6mAb2EMZCK1ajgyIUOV5QkGpMte7Cgsjl/xaYzjUGwTzjNAsPUFcCxm6SQJb6EGvsWzgxOyphlWbjvxmhLc3Cg==} + '@oxc-resolver/binding-win32-x64-msvc@5.2.0': + resolution: {integrity: sha512-BhIcyjr/gTafUrdOhd1EC5H4LeUSKK9uQIG2RSyMMH0Cq1yBacTb1yvLowhP/6e4ncCGByXEkW7sWGowCfSY8A==} cpu: [x64] os: [win32] @@ -1281,14 +1291,14 @@ packages: '@pondwader/socks5-server@1.0.10': resolution: {integrity: sha512-bQY06wzzR8D2+vVCUoBsr5QS2U6UgPUQRmErNwtsuI6vLcyRKkafjkr3KxbtGFf9aBBIV2mcvlsKD1UYaIV+sg==} - '@radix-ui/number@1.1.0': - resolution: {integrity: sha512-V3gRzhVNU1ldS5XhAPTom1fOIo4ccrjjJgmE+LI2h/WaFpHmx0MQApT+KZHnx8abG6Avtfcz4WoEciMnpFT3HQ==} + '@radix-ui/number@1.1.1': + resolution: {integrity: sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g==} - '@radix-ui/primitive@1.1.1': - resolution: {integrity: sha512-SJ31y+Q/zAyShtXJc8x83i9TYdbAfHZ++tUZnvjJJqFjzsdUnKsxPL6IEtBlxKkU7yzer//GQtZSV4GbldL3YA==} + '@radix-ui/primitive@1.1.2': + resolution: {integrity: sha512-XnbHrrprsNqZKQhStrSwgRUQzoCI1glLzdw79xiZPoofhGICeZRSQ3dIxAKH1gb3OHfNf4d6f+vAv3kil2eggA==} - '@radix-ui/react-arrow@1.1.2': - resolution: {integrity: sha512-G+KcpzXHq24iH0uGG/pF8LyzpFJYGD4RfLjCIBfGdSLXvjLHST31RUiRVrupIBMvIppMgSzQ6l66iAxl03tdlg==} + '@radix-ui/react-arrow@1.1.3': + resolution: {integrity: sha512-2dvVU4jva0qkNZH6HHWuSz5FN5GeU5tymvCgutF8WaXz9WnD1NgUhy73cqzkjkN4Zkn8lfTPv5JIfrC221W+Nw==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -1300,8 +1310,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-checkbox@1.1.4': - resolution: {integrity: sha512-wP0CPAHq+P5I4INKe3hJrIa1WoNqqrejzW+zoU0rOvo1b9gDEJJFl2rYfO1PYJUQCc2H1WZxIJmyv9BS8i5fLw==} + '@radix-ui/react-checkbox@1.1.5': + resolution: {integrity: sha512-B0gYIVxl77KYDR25AY9EGe/G//ef85RVBIxQvK+m5pxAC7XihAc/8leMHhDvjvhDu02SBSb6BuytlWr/G7F3+g==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -1313,8 +1323,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-collection@1.1.2': - resolution: {integrity: sha512-9z54IEKRxIa9VityapoEYMuByaG42iSy1ZXlY2KcuLSEtq8x4987/N6m15ppoMffgZX72gER2uHe1D9Y6Unlcw==} + '@radix-ui/react-collection@1.1.3': + resolution: {integrity: sha512-mM2pxoQw5HJ49rkzwOs7Y6J4oYH22wS8BfK2/bBxROlI4xuR0c4jEenQP63LlTlDkO6Buj2Vt+QYAYcOgqtrXA==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -1326,8 +1336,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-compose-refs@1.1.1': - resolution: {integrity: sha512-Y9VzoRDSJtgFMUCoiZBDVo084VQ5hfpXxVE+NgkdNsjiDBByiImMZKKhxMwCbdHvhlENG6a833CbFkOQvTricw==} + '@radix-ui/react-compose-refs@1.1.2': + resolution: {integrity: sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==} peerDependencies: '@types/react': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc @@ -1335,8 +1345,8 @@ packages: '@types/react': optional: true - '@radix-ui/react-context@1.1.1': - resolution: {integrity: sha512-UASk9zi+crv9WteK/NU4PLvOoL3OuE6BWVKNF6hPRBtYBDXQ2u5iu3O59zUlJiTVvkyuycnqrztsHVJwcK9K+Q==} + '@radix-ui/react-context@1.1.2': + resolution: {integrity: sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==} peerDependencies: '@types/react': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc @@ -1344,8 +1354,8 @@ packages: '@types/react': optional: true - '@radix-ui/react-dialog@1.1.6': - resolution: {integrity: sha512-/IVhJV5AceX620DUJ4uYVMymzsipdKBzo3edo+omeskCKGm9FRHM0ebIdbPnlQVJqyuHbuBltQUOG2mOTq2IYw==} + '@radix-ui/react-dialog@1.1.7': + resolution: {integrity: sha512-EIdma8C0C/I6kL6sO02avaCRqi3fmWJpxH6mqbVScorW6nNktzKJT/le7VPho3o/7wCsyRg3z0+Q+Obr0Gy/VQ==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -1357,8 +1367,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-direction@1.1.0': - resolution: {integrity: sha512-BUuBvgThEiAXh2DWu93XsT+a3aWrGqolGlqqw5VU1kG7p/ZH2cuDlM1sRLNnY3QcBS69UIz2mcKhMxDsdewhjg==} + '@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 @@ -1366,8 +1376,8 @@ packages: '@types/react': optional: true - '@radix-ui/react-dismissable-layer@1.1.5': - resolution: {integrity: sha512-E4TywXY6UsXNRhFrECa5HAvE5/4BFcGyfTyK36gP+pAW1ed7UTK4vKwdr53gAJYwqbfCWC6ATvJa3J3R/9+Qrg==} + '@radix-ui/react-dismissable-layer@1.1.6': + resolution: {integrity: sha512-7gpgMT2gyKym9Jz2ZhlRXSg2y6cNQIK8d/cqBZ0RBCaps8pFryCWXiUKI+uHGFrhMrbGUP7U6PWgiXzIxoyF3Q==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -1379,8 +1389,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-focus-guards@1.1.1': - resolution: {integrity: sha512-pSIwfrT1a6sIoDASCSpFwOasEwKTZWDw/iBdtnqKO7v6FeOzYJ7U53cPzYFVR3geGGXgVHaH+CdngrrAzqUGxg==} + '@radix-ui/react-focus-guards@1.1.2': + resolution: {integrity: sha512-fyjAACV62oPV925xFCrH8DR5xWhg9KYtJT4s3u54jxp+L/hbpTY2kIeEFFbFe+a/HCE94zGQMZLIpVTPVZDhaA==} peerDependencies: '@types/react': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc @@ -1388,8 +1398,8 @@ packages: '@types/react': optional: true - '@radix-ui/react-focus-scope@1.1.2': - resolution: {integrity: sha512-zxwE80FCU7lcXUGWkdt6XpTTCKPitG1XKOwViTxHVKIJhZl9MvIl2dVHeZENCWD9+EdWv05wlaEkRXUykU27RA==} + '@radix-ui/react-focus-scope@1.1.3': + resolution: {integrity: sha512-4XaDlq0bPt7oJwR+0k0clCiCO/7lO7NKZTAaJBYxDNQT/vj4ig0/UvctrRscZaFREpRvUTkpKR96ov1e6jptQg==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -1406,8 +1416,8 @@ packages: peerDependencies: react: ^16.x || ^17.x || ^18.x || ^19.0.0 || ^19.0.0-rc - '@radix-ui/react-id@1.1.0': - resolution: {integrity: sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==} + '@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 @@ -1415,8 +1425,8 @@ packages: '@types/react': optional: true - '@radix-ui/react-label@2.1.2': - resolution: {integrity: sha512-zo1uGMTaNlHehDyFQcDZXRJhUPDuukcnHz0/jnrup0JA6qL+AFpAnty+7VKa9esuU5xTblAZzTGYJKSKaBxBhw==} + '@radix-ui/react-label@2.1.3': + resolution: {integrity: sha512-zwSQ1NzSKG95yA0tvBMgv6XPHoqapJCcg9nsUBaQQ66iRBhZNhlpaQG2ERYYX4O4stkYFK5rxj5NsWfO9CS+Hg==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -1428,8 +1438,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-popover@1.1.6': - resolution: {integrity: sha512-NQouW0x4/GnkFJ/pRqsIS3rM/k97VzKnVb2jB7Gq7VEGPy5g7uNV1ykySFt7eWSp3i2uSGFwaJcvIRJBAHmmFg==} + '@radix-ui/react-popover@1.1.7': + resolution: {integrity: sha512-I38OYWDmJF2kbO74LX8UsFydSHWOJuQ7LxPnTefjxxvdvPLempvAnmsyX9UsBlywcbSGpRH7oMLfkUf+ij4nrw==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -1441,8 +1451,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-popper@1.2.2': - resolution: {integrity: sha512-Rvqc3nOpwseCyj/rgjlJDYAgyfw7OC1tTkKn2ivhaMGcYt8FSBlahHOZak2i3QwkRXUXgGgzeEe2RuqeEHuHgA==} + '@radix-ui/react-popper@1.2.3': + resolution: {integrity: sha512-iNb9LYUMkne9zIahukgQmHlSBp9XWGeQQ7FvUGNk45ywzOb6kQa+Ca38OphXlWDiKvyneo9S+KSJsLfLt8812A==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -1454,8 +1464,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-portal@1.1.4': - resolution: {integrity: sha512-sn2O9k1rPFYVyKd5LAJfo96JlSGVFpa1fS6UuBJfrZadudiw5tAmru+n1x7aMRQ84qDM71Zh1+SzK5QwU0tJfA==} + '@radix-ui/react-portal@1.1.5': + resolution: {integrity: sha512-ps/67ZqsFm+Mb6lSPJpfhRLrVL2i2fntgCmGMqqth4eaGUf+knAuuRtWVJrNjUhExgmdRqftSgzpf0DF0n6yXA==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -1467,8 +1477,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-presence@1.1.2': - resolution: {integrity: sha512-18TFr80t5EVgL9x1SwF/YGtfG+l0BS0PRAlCWBDoBEiDQjeKgnNZRVJp/oVBl24sr3Gbfwc/Qpj4OcWTQMsAEg==} + '@radix-ui/react-presence@1.1.3': + resolution: {integrity: sha512-IrVLIhskYhH3nLvtcBLQFZr61tBG7wx7O3kEmdzcYwRGAEBmBicGGL7ATzNgruYJ3xBTbuzEEq9OXJM3PAX3tA==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -1480,8 +1490,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-primitive@2.0.2': - resolution: {integrity: sha512-Ec/0d38EIuvDF+GZjcMU/Ze6MxntVJYO/fRlCPhCaVUyPY9WTalHJw54tp9sXeJo3tlShWpy41vQRgLRGOuz+w==} + '@radix-ui/react-primitive@2.0.3': + resolution: {integrity: sha512-Pf/t/GkndH7CQ8wE2hbkXA+WyZ83fhQQn5DDmwDiDo6AwN/fhaH8oqZ0jRjMrO2iaMhDi6P1HRx6AZwyMinY1g==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -1493,8 +1503,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-roving-focus@1.1.2': - resolution: {integrity: sha512-zgMQWkNO169GtGqRvYrzb0Zf8NhMHS2DuEB/TiEmVnpr5OqPU3i8lfbxaAmC2J/KYuIQxyoQQ6DxepyXp61/xw==} + '@radix-ui/react-roving-focus@1.1.3': + resolution: {integrity: sha512-ufbpLUjZiOg4iYgb2hQrWXEPYX6jOLBbR27bDyAff5GYMRrCzcze8lukjuXVUQvJ6HZe8+oL+hhswDcjmcgVyg==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -1506,8 +1516,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-select@2.1.6': - resolution: {integrity: sha512-T6ajELxRvTuAMWH0YmRJ1qez+x4/7Nq7QIx7zJ0VK3qaEWdnWpNbEDnmWldG1zBDwqrLy5aLMUWcoGirVj5kMg==} + '@radix-ui/react-select@2.1.7': + resolution: {integrity: sha512-exzGIRtc7S8EIM2KjFg+7lJZsH7O7tpaBaJbBNVDnOZNhtoQ2iV+iSNfi2Wth0m6h3trJkMVvzAehB3c6xj/3Q==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -1519,8 +1529,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-slot@1.1.2': - resolution: {integrity: sha512-YAKxaiGsSQJ38VzKH86/BPRC4rh+b1Jpa+JneA5LRE7skmLPNAyeG8kPJj/oo4STLvlrs8vkf/iYyc3A5stYCQ==} + '@radix-ui/react-slot@1.2.0': + resolution: {integrity: sha512-ujc+V6r0HNDviYqIK3rW4ffgYiZ8g5DEHrGJVk4x7kTlLXRDILnKX9vAUYeIsLOoDpDJ0ujpqMkjH4w2ofuo6w==} peerDependencies: '@types/react': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc @@ -1528,8 +1538,8 @@ packages: '@types/react': optional: true - '@radix-ui/react-tabs@1.1.3': - resolution: {integrity: sha512-9mFyI30cuRDImbmFF6O2KUJdgEOsGh9Vmx9x/Dh9tOhL7BngmQPQfwW4aejKm5OHpfWIdmeV6ySyuxoOGjtNng==} + '@radix-ui/react-tabs@1.1.4': + resolution: {integrity: sha512-fuHMHWSf5SRhXke+DbHXj2wVMo+ghVH30vhX3XVacdXqDl+J4XWafMIGOOER861QpBx1jxgwKXL2dQnfrsd8MQ==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -1541,71 +1551,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-use-callback-ref@1.1.0': - resolution: {integrity: sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-controllable-state@1.1.0': - resolution: {integrity: sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-escape-keydown@1.1.0': - resolution: {integrity: sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-layout-effect@1.1.0': - resolution: {integrity: sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-previous@1.1.0': - resolution: {integrity: sha512-Z/e78qg2YFnnXcW88A4JmTtm4ADckLno6F7OXotmkQfeuCVaKuYzqAATPhVzl3delXE7CxIV8shofPn3jPc5Og==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-rect@1.1.0': - resolution: {integrity: sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-size@1.1.0': - resolution: {integrity: sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-visually-hidden@1.1.2': - resolution: {integrity: sha512-1SzA4ns2M1aRlvxErqhLHsBHoS5eI5UUcI2awAMgGUp4LoaoWOKYmvqDY2s/tltuPkh3Yk77YF/r3IRj+Amx4Q==} + '@radix-ui/react-toast@1.2.7': + resolution: {integrity: sha512-0IWTbAUKvzdpOaWDMZisXZvScXzF0phaQjWspK8RUMEUxjLbli+886mB/kXTIC3F+t5vQ0n0vYn+dsX8s+WdfA==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -1617,8 +1564,97 @@ packages: '@types/react-dom': optional: true - '@radix-ui/rect@1.1.0': - resolution: {integrity: sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==} + '@radix-ui/react-tooltip@1.2.0': + resolution: {integrity: sha512-b1Sdc75s7zN9B8ONQTGBSHL3XS8+IcjcOIY51fhM4R1Hx8s0YbgqgyNZiri4qcYMVZK8hfCZVBiyCm7N9rs0rw==} + 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-use-callback-ref@1.1.1': + resolution: {integrity: sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-controllable-state@1.1.1': + resolution: {integrity: sha512-YnEXIy8/ga01Y1PN0VfaNH//MhA91JlEGVBDxDzROqwrAtG5Yr2QGEPz8A/rJA3C7ZAHryOYGaUv8fLSW2H/mg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-escape-keydown@1.1.1': + resolution: {integrity: sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-layout-effect@1.1.1': + resolution: {integrity: sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-previous@1.1.1': + resolution: {integrity: sha512-2dHfToCj/pzca2Ck724OZ5L0EVrr3eHRNsG/b3xQJLA2hZpVCS99bLAX+hm1IHXDEnzU6by5z/5MIY794/a8NQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-rect@1.1.1': + resolution: {integrity: sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-size@1.1.1': + resolution: {integrity: sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-visually-hidden@1.1.3': + resolution: {integrity: sha512-oXSF3ZQRd5fvomd9hmUCb2EHSZbPp3ZSHAHJJU/DlF9XoFkJBBW8RHU/E8WEH+RbSfJd/QFA0sl8ClJXknBwHQ==} + 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/rect@1.1.1': + resolution: {integrity: sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==} '@rollup/rollup-android-arm-eabi@4.37.0': resolution: {integrity: sha512-l7StVw6WAa8l3vA1ov80jyetOAEo1FtHvZDbzXDO/02Sq/QVvqlHkYoFwDJPIMj0GKiistsBudfx5tGFnwYWDQ==} @@ -3789,8 +3825,8 @@ packages: outdent@0.5.0: resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} - oxc-resolver@5.1.1: - resolution: {integrity: sha512-qULiQdBx8F/yruWxkvcf6FddWD3hcle3M11r6bX4L6qd6hQ6aBT7AboI21md86spJPHZWdmQT3UV/n9+T+kb8Q==} + oxc-resolver@5.2.0: + resolution: {integrity: sha512-ce0rdG5Y0s1jhcvh2Zc6sD+fTw/WA4pUKWrPmjbniZjC/m6pPob2I2Pkz8T0YzdWsbAC98E00Bc7KNB1B6Tolg==} p-filter@2.1.0: resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} @@ -4032,12 +4068,6 @@ packages: '@types/react': optional: true - react-toastify@10.0.6: - resolution: {integrity: sha512-yYjp+omCDf9lhZcrZHKbSq7YMuK0zcYkDFTzfRFgTXkTFHZ1ToxwAonzA4JI5CxA91JpjFLmwEsZEgfYfOqI1A==} - peerDependencies: - react: '>=18' - react-dom: '>=18' - react@18.3.1: resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} engines: {node: '>=0.10.0'} @@ -4543,8 +4573,8 @@ packages: uc.micro@2.1.0: resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==} - udx-native@1.17.7: - resolution: {integrity: sha512-gPHDhMfasTh+w1pqiPOqbumaKtf8TsA2PhrLhrQcL7B2vq94oDcPuiHpycUuidGk/kXZ7ks3K4KtkzkNM1OtAA==} + udx-native@1.17.8: + resolution: {integrity: sha512-nB5SxTF9WzTNrxJnVSyEOtapoPjxAU1KboN/z1JWMtAVXArwtQ9Mxn+jJvlx4skINQHH6xUqQsQdSCL1Ja2h1Q==} undefsafe@2.0.5: resolution: {integrity: sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==} @@ -5545,17 +5575,19 @@ snapshots: globby: 11.1.0 read-yaml-file: 1.1.0 - '@modelcontextprotocol/inspector-client@0.7.0': + '@modelcontextprotocol/inspector-client@0.8.2': dependencies: '@modelcontextprotocol/sdk': 1.9.0 - '@radix-ui/react-checkbox': 1.1.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-dialog': 1.1.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-checkbox': 1.1.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-dialog': 1.1.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@radix-ui/react-icons': 1.3.2(react@18.3.1) - '@radix-ui/react-label': 2.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-popover': 1.1.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-select': 2.1.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-slot': 1.1.2(react@18.3.1) - '@radix-ui/react-tabs': 1.1.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-label': 2.1.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-popover': 1.1.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-select': 2.1.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.2.0(react@18.3.1) + '@radix-ui/react-tabs': 1.1.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-toast': 1.2.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-tooltip': 1.2.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@types/prismjs': 1.26.5 class-variance-authority: 0.7.1 clsx: 2.1.1 @@ -5566,7 +5598,6 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) react-simple-code-editor: 0.14.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react-toastify: 10.0.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1) serve-handler: 6.1.6 tailwind-merge: 2.6.0 tailwindcss-animate: 1.0.7 @@ -5577,7 +5608,7 @@ snapshots: - supports-color - tailwindcss - '@modelcontextprotocol/inspector-server@0.7.0': + '@modelcontextprotocol/inspector-server@0.8.2': dependencies: '@modelcontextprotocol/sdk': 1.9.0 cors: 2.8.5 @@ -5589,10 +5620,10 @@ snapshots: - supports-color - utf-8-validate - '@modelcontextprotocol/inspector@0.7.0(@swc/core@1.11.18)(@types/node@22.14.0)(typescript@5.8.3)': + '@modelcontextprotocol/inspector@0.8.2(@swc/core@1.11.18)(@types/node@22.14.0)(typescript@5.8.3)': dependencies: - '@modelcontextprotocol/inspector-client': 0.7.0 - '@modelcontextprotocol/inspector-server': 0.7.0 + '@modelcontextprotocol/inspector-client': 0.8.2 + '@modelcontextprotocol/inspector-server': 0.8.2 concurrently: 9.1.2 shell-quote: 1.8.2 spawn-rx: 5.1.2 @@ -5667,39 +5698,45 @@ snapshots: '@nothing-but/utils@0.17.0': {} - '@oxc-resolver/binding-darwin-arm64@5.1.1': + '@oxc-resolver/binding-darwin-arm64@5.2.0': optional: true - '@oxc-resolver/binding-darwin-x64@5.1.1': + '@oxc-resolver/binding-darwin-x64@5.2.0': optional: true - '@oxc-resolver/binding-freebsd-x64@5.1.1': + '@oxc-resolver/binding-freebsd-x64@5.2.0': optional: true - '@oxc-resolver/binding-linux-arm-gnueabihf@5.1.1': + '@oxc-resolver/binding-linux-arm-gnueabihf@5.2.0': optional: true - '@oxc-resolver/binding-linux-arm64-gnu@5.1.1': + '@oxc-resolver/binding-linux-arm64-gnu@5.2.0': optional: true - '@oxc-resolver/binding-linux-arm64-musl@5.1.1': + '@oxc-resolver/binding-linux-arm64-musl@5.2.0': optional: true - '@oxc-resolver/binding-linux-x64-gnu@5.1.1': + '@oxc-resolver/binding-linux-riscv64-gnu@5.2.0': optional: true - '@oxc-resolver/binding-linux-x64-musl@5.1.1': + '@oxc-resolver/binding-linux-s390x-gnu@5.2.0': optional: true - '@oxc-resolver/binding-wasm32-wasi@5.1.1': + '@oxc-resolver/binding-linux-x64-gnu@5.2.0': + optional: true + + '@oxc-resolver/binding-linux-x64-musl@5.2.0': + optional: true + + '@oxc-resolver/binding-wasm32-wasi@5.2.0': dependencies: '@napi-rs/wasm-runtime': 0.2.8 optional: true - '@oxc-resolver/binding-win32-arm64-msvc@5.1.1': + '@oxc-resolver/binding-win32-arm64-msvc@5.2.0': optional: true - '@oxc-resolver/binding-win32-x64-msvc@5.1.1': + '@oxc-resolver/binding-win32-x64-msvc@5.2.0': optional: true '@petamoriken/float16@3.9.2': {} @@ -5709,88 +5746,88 @@ snapshots: '@pondwader/socks5-server@1.0.10': {} - '@radix-ui/number@1.1.0': {} + '@radix-ui/number@1.1.1': {} - '@radix-ui/primitive@1.1.1': {} + '@radix-ui/primitive@1.1.2': {} - '@radix-ui/react-arrow@1.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-arrow@1.1.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@radix-ui/react-primitive': 2.0.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@radix-ui/react-checkbox@1.1.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-checkbox@1.1.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@radix-ui/primitive': 1.1.1 - '@radix-ui/react-compose-refs': 1.1.1(react@18.3.1) - '@radix-ui/react-context': 1.1.1(react@18.3.1) - '@radix-ui/react-presence': 1.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 2.0.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.1.0(react@18.3.1) - '@radix-ui/react-use-previous': 1.1.0(react@18.3.1) - '@radix-ui/react-use-size': 1.1.0(react@18.3.1) + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-compose-refs': 1.1.2(react@18.3.1) + '@radix-ui/react-context': 1.1.2(react@18.3.1) + '@radix-ui/react-presence': 1.1.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.1(react@18.3.1) + '@radix-ui/react-use-previous': 1.1.1(react@18.3.1) + '@radix-ui/react-use-size': 1.1.1(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@radix-ui/react-collection@1.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-collection@1.1.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@radix-ui/react-compose-refs': 1.1.1(react@18.3.1) - '@radix-ui/react-context': 1.1.1(react@18.3.1) - '@radix-ui/react-primitive': 2.0.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-slot': 1.1.2(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.2(react@18.3.1) + '@radix-ui/react-context': 1.1.2(react@18.3.1) + '@radix-ui/react-primitive': 2.0.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.2.0(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@radix-ui/react-compose-refs@1.1.1(react@18.3.1)': + '@radix-ui/react-compose-refs@1.1.2(react@18.3.1)': dependencies: react: 18.3.1 - '@radix-ui/react-context@1.1.1(react@18.3.1)': + '@radix-ui/react-context@1.1.2(react@18.3.1)': dependencies: react: 18.3.1 - '@radix-ui/react-dialog@1.1.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-dialog@1.1.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@radix-ui/primitive': 1.1.1 - '@radix-ui/react-compose-refs': 1.1.1(react@18.3.1) - '@radix-ui/react-context': 1.1.1(react@18.3.1) - '@radix-ui/react-dismissable-layer': 1.1.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-focus-guards': 1.1.1(react@18.3.1) - '@radix-ui/react-focus-scope': 1.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-id': 1.1.0(react@18.3.1) - '@radix-ui/react-portal': 1.1.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-presence': 1.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 2.0.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-slot': 1.1.2(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.1.0(react@18.3.1) + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-compose-refs': 1.1.2(react@18.3.1) + '@radix-ui/react-context': 1.1.2(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-focus-guards': 1.1.2(react@18.3.1) + '@radix-ui/react-focus-scope': 1.1.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.1.1(react@18.3.1) + '@radix-ui/react-portal': 1.1.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-presence': 1.1.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.2.0(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.1(react@18.3.1) aria-hidden: 1.2.4 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) react-remove-scroll: 2.6.3(react@18.3.1) - '@radix-ui/react-direction@1.1.0(react@18.3.1)': + '@radix-ui/react-direction@1.1.1(react@18.3.1)': dependencies: react: 18.3.1 - '@radix-ui/react-dismissable-layer@1.1.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-dismissable-layer@1.1.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@radix-ui/primitive': 1.1.1 - '@radix-ui/react-compose-refs': 1.1.1(react@18.3.1) - '@radix-ui/react-primitive': 2.0.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.1.0(react@18.3.1) - '@radix-ui/react-use-escape-keydown': 1.1.0(react@18.3.1) + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-compose-refs': 1.1.2(react@18.3.1) + '@radix-ui/react-primitive': 2.0.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.1(react@18.3.1) + '@radix-ui/react-use-escape-keydown': 1.1.1(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@radix-ui/react-focus-guards@1.1.1(react@18.3.1)': + '@radix-ui/react-focus-guards@1.1.2(react@18.3.1)': dependencies: react: 18.3.1 - '@radix-ui/react-focus-scope@1.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-focus-scope@1.1.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@radix-ui/react-compose-refs': 1.1.1(react@18.3.1) - '@radix-ui/react-primitive': 2.0.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.1.0(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.2(react@18.3.1) + '@radix-ui/react-primitive': 2.0.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.1(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -5798,169 +5835,203 @@ snapshots: dependencies: react: 18.3.1 - '@radix-ui/react-id@1.1.0(react@18.3.1)': + '@radix-ui/react-id@1.1.1(react@18.3.1)': dependencies: - '@radix-ui/react-use-layout-effect': 1.1.0(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.1(react@18.3.1) react: 18.3.1 - '@radix-ui/react-label@2.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-label@2.1.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@radix-ui/react-primitive': 2.0.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@radix-ui/react-popover@1.1.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-popover@1.1.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@radix-ui/primitive': 1.1.1 - '@radix-ui/react-compose-refs': 1.1.1(react@18.3.1) - '@radix-ui/react-context': 1.1.1(react@18.3.1) - '@radix-ui/react-dismissable-layer': 1.1.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-focus-guards': 1.1.1(react@18.3.1) - '@radix-ui/react-focus-scope': 1.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-id': 1.1.0(react@18.3.1) - '@radix-ui/react-popper': 1.2.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-portal': 1.1.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-presence': 1.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 2.0.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-slot': 1.1.2(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.1.0(react@18.3.1) + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-compose-refs': 1.1.2(react@18.3.1) + '@radix-ui/react-context': 1.1.2(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-focus-guards': 1.1.2(react@18.3.1) + '@radix-ui/react-focus-scope': 1.1.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.1.1(react@18.3.1) + '@radix-ui/react-popper': 1.2.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-portal': 1.1.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-presence': 1.1.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.2.0(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.1(react@18.3.1) aria-hidden: 1.2.4 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) react-remove-scroll: 2.6.3(react@18.3.1) - '@radix-ui/react-popper@1.2.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-popper@1.2.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@floating-ui/react-dom': 2.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-arrow': 1.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-compose-refs': 1.1.1(react@18.3.1) - '@radix-ui/react-context': 1.1.1(react@18.3.1) - '@radix-ui/react-primitive': 2.0.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.1.0(react@18.3.1) - '@radix-ui/react-use-layout-effect': 1.1.0(react@18.3.1) - '@radix-ui/react-use-rect': 1.1.0(react@18.3.1) - '@radix-ui/react-use-size': 1.1.0(react@18.3.1) - '@radix-ui/rect': 1.1.0 + '@radix-ui/react-arrow': 1.1.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.2(react@18.3.1) + '@radix-ui/react-context': 1.1.2(react@18.3.1) + '@radix-ui/react-primitive': 2.0.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.1(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.1(react@18.3.1) + '@radix-ui/react-use-rect': 1.1.1(react@18.3.1) + '@radix-ui/react-use-size': 1.1.1(react@18.3.1) + '@radix-ui/rect': 1.1.1 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@radix-ui/react-portal@1.1.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-portal@1.1.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@radix-ui/react-primitive': 2.0.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-layout-effect': 1.1.0(react@18.3.1) + '@radix-ui/react-primitive': 2.0.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.1(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@radix-ui/react-presence@1.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-presence@1.1.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@radix-ui/react-compose-refs': 1.1.1(react@18.3.1) - '@radix-ui/react-use-layout-effect': 1.1.0(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.2(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.1(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@radix-ui/react-primitive@2.0.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-primitive@2.0.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@radix-ui/react-slot': 1.1.2(react@18.3.1) + '@radix-ui/react-slot': 1.2.0(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@radix-ui/react-roving-focus@1.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-roving-focus@1.1.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@radix-ui/primitive': 1.1.1 - '@radix-ui/react-collection': 1.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-compose-refs': 1.1.1(react@18.3.1) - '@radix-ui/react-context': 1.1.1(react@18.3.1) - '@radix-ui/react-direction': 1.1.0(react@18.3.1) - '@radix-ui/react-id': 1.1.0(react@18.3.1) - '@radix-ui/react-primitive': 2.0.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.1.0(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.1.0(react@18.3.1) + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-collection': 1.1.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.2(react@18.3.1) + '@radix-ui/react-context': 1.1.2(react@18.3.1) + '@radix-ui/react-direction': 1.1.1(react@18.3.1) + '@radix-ui/react-id': 1.1.1(react@18.3.1) + '@radix-ui/react-primitive': 2.0.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.1(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.1(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@radix-ui/react-select@2.1.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-select@2.1.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@radix-ui/number': 1.1.0 - '@radix-ui/primitive': 1.1.1 - '@radix-ui/react-collection': 1.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-compose-refs': 1.1.1(react@18.3.1) - '@radix-ui/react-context': 1.1.1(react@18.3.1) - '@radix-ui/react-direction': 1.1.0(react@18.3.1) - '@radix-ui/react-dismissable-layer': 1.1.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-focus-guards': 1.1.1(react@18.3.1) - '@radix-ui/react-focus-scope': 1.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-id': 1.1.0(react@18.3.1) - '@radix-ui/react-popper': 1.2.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-portal': 1.1.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 2.0.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-slot': 1.1.2(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.1.0(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.1.0(react@18.3.1) - '@radix-ui/react-use-layout-effect': 1.1.0(react@18.3.1) - '@radix-ui/react-use-previous': 1.1.0(react@18.3.1) - '@radix-ui/react-visually-hidden': 1.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/number': 1.1.1 + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-collection': 1.1.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.2(react@18.3.1) + '@radix-ui/react-context': 1.1.2(react@18.3.1) + '@radix-ui/react-direction': 1.1.1(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-focus-guards': 1.1.2(react@18.3.1) + '@radix-ui/react-focus-scope': 1.1.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.1.1(react@18.3.1) + '@radix-ui/react-popper': 1.2.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-portal': 1.1.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.2.0(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.1(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.1(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.1(react@18.3.1) + '@radix-ui/react-use-previous': 1.1.1(react@18.3.1) + '@radix-ui/react-visually-hidden': 1.1.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) aria-hidden: 1.2.4 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) react-remove-scroll: 2.6.3(react@18.3.1) - '@radix-ui/react-slot@1.1.2(react@18.3.1)': + '@radix-ui/react-slot@1.2.0(react@18.3.1)': dependencies: - '@radix-ui/react-compose-refs': 1.1.1(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.2(react@18.3.1) react: 18.3.1 - '@radix-ui/react-tabs@1.1.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-tabs@1.1.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@radix-ui/primitive': 1.1.1 - '@radix-ui/react-context': 1.1.1(react@18.3.1) - '@radix-ui/react-direction': 1.1.0(react@18.3.1) - '@radix-ui/react-id': 1.1.0(react@18.3.1) - '@radix-ui/react-presence': 1.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 2.0.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-roving-focus': 1.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.1.0(react@18.3.1) + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-context': 1.1.2(react@18.3.1) + '@radix-ui/react-direction': 1.1.1(react@18.3.1) + '@radix-ui/react-id': 1.1.1(react@18.3.1) + '@radix-ui/react-presence': 1.1.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-roving-focus': 1.1.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.1(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@radix-ui/react-use-callback-ref@1.1.0(react@18.3.1)': + '@radix-ui/react-toast@1.2.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - react: 18.3.1 - - '@radix-ui/react-use-controllable-state@1.1.0(react@18.3.1)': - dependencies: - '@radix-ui/react-use-callback-ref': 1.1.0(react@18.3.1) - react: 18.3.1 - - '@radix-ui/react-use-escape-keydown@1.1.0(react@18.3.1)': - dependencies: - '@radix-ui/react-use-callback-ref': 1.1.0(react@18.3.1) - react: 18.3.1 - - '@radix-ui/react-use-layout-effect@1.1.0(react@18.3.1)': - dependencies: - react: 18.3.1 - - '@radix-ui/react-use-previous@1.1.0(react@18.3.1)': - dependencies: - react: 18.3.1 - - '@radix-ui/react-use-rect@1.1.0(react@18.3.1)': - dependencies: - '@radix-ui/rect': 1.1.0 - react: 18.3.1 - - '@radix-ui/react-use-size@1.1.0(react@18.3.1)': - dependencies: - '@radix-ui/react-use-layout-effect': 1.1.0(react@18.3.1) - react: 18.3.1 - - '@radix-ui/react-visually-hidden@1.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@radix-ui/react-primitive': 2.0.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-collection': 1.1.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.2(react@18.3.1) + '@radix-ui/react-context': 1.1.2(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-portal': 1.1.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-presence': 1.1.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.1(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.1(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.1(react@18.3.1) + '@radix-ui/react-visually-hidden': 1.1.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@radix-ui/rect@1.1.0': {} + '@radix-ui/react-tooltip@1.2.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-compose-refs': 1.1.2(react@18.3.1) + '@radix-ui/react-context': 1.1.2(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.1.1(react@18.3.1) + '@radix-ui/react-popper': 1.2.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-portal': 1.1.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-presence': 1.1.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.2.0(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.1(react@18.3.1) + '@radix-ui/react-visually-hidden': 1.1.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@radix-ui/react-use-callback-ref@1.1.1(react@18.3.1)': + dependencies: + react: 18.3.1 + + '@radix-ui/react-use-controllable-state@1.1.1(react@18.3.1)': + dependencies: + '@radix-ui/react-use-callback-ref': 1.1.1(react@18.3.1) + react: 18.3.1 + + '@radix-ui/react-use-escape-keydown@1.1.1(react@18.3.1)': + dependencies: + '@radix-ui/react-use-callback-ref': 1.1.1(react@18.3.1) + react: 18.3.1 + + '@radix-ui/react-use-layout-effect@1.1.1(react@18.3.1)': + dependencies: + react: 18.3.1 + + '@radix-ui/react-use-previous@1.1.1(react@18.3.1)': + dependencies: + react: 18.3.1 + + '@radix-ui/react-use-rect@1.1.1(react@18.3.1)': + dependencies: + '@radix-ui/rect': 1.1.1 + react: 18.3.1 + + '@radix-ui/react-use-size@1.1.1(react@18.3.1)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.1(react@18.3.1) + react: 18.3.1 + + '@radix-ui/react-visually-hidden@1.1.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-primitive': 2.0.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@radix-ui/rect@1.1.1': {} '@rollup/rollup-android-arm-eabi@4.37.0': optional: true @@ -6206,7 +6277,7 @@ snapshots: '@swc/core': 1.11.18 colorette: 2.0.20 debug: 4.4.0(supports-color@5.5.0) - oxc-resolver: 5.1.1 + oxc-resolver: 5.2.0 pirates: 4.0.7 tslib: 2.8.1 typescript: 5.8.3 @@ -6814,7 +6885,7 @@ snapshots: bare-dgram@1.0.1: dependencies: bare-events: 2.5.4 - udx-native: 1.17.7 + udx-native: 1.17.8 bare-dns@1.0.5: {} @@ -7112,10 +7183,10 @@ snapshots: cmdk@1.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: - '@radix-ui/react-compose-refs': 1.1.1(react@18.3.1) - '@radix-ui/react-dialog': 1.1.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-id': 1.1.0(react@18.3.1) - '@radix-ui/react-primitive': 2.0.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.2(react@18.3.1) + '@radix-ui/react-dialog': 1.1.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.1.1(react@18.3.1) + '@radix-ui/react-primitive': 2.0.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) transitivePeerDependencies: @@ -7269,7 +7340,7 @@ snapshots: sodium-universal: 4.0.1 streamx: 2.22.0 time-ordered-set: 2.0.1 - udx-native: 1.17.7 + udx-native: 1.17.8 transitivePeerDependencies: - sodium-javascript @@ -8516,19 +8587,21 @@ snapshots: outdent@0.5.0: {} - oxc-resolver@5.1.1: + oxc-resolver@5.2.0: optionalDependencies: - '@oxc-resolver/binding-darwin-arm64': 5.1.1 - '@oxc-resolver/binding-darwin-x64': 5.1.1 - '@oxc-resolver/binding-freebsd-x64': 5.1.1 - '@oxc-resolver/binding-linux-arm-gnueabihf': 5.1.1 - '@oxc-resolver/binding-linux-arm64-gnu': 5.1.1 - '@oxc-resolver/binding-linux-arm64-musl': 5.1.1 - '@oxc-resolver/binding-linux-x64-gnu': 5.1.1 - '@oxc-resolver/binding-linux-x64-musl': 5.1.1 - '@oxc-resolver/binding-wasm32-wasi': 5.1.1 - '@oxc-resolver/binding-win32-arm64-msvc': 5.1.1 - '@oxc-resolver/binding-win32-x64-msvc': 5.1.1 + '@oxc-resolver/binding-darwin-arm64': 5.2.0 + '@oxc-resolver/binding-darwin-x64': 5.2.0 + '@oxc-resolver/binding-freebsd-x64': 5.2.0 + '@oxc-resolver/binding-linux-arm-gnueabihf': 5.2.0 + '@oxc-resolver/binding-linux-arm64-gnu': 5.2.0 + '@oxc-resolver/binding-linux-arm64-musl': 5.2.0 + '@oxc-resolver/binding-linux-riscv64-gnu': 5.2.0 + '@oxc-resolver/binding-linux-s390x-gnu': 5.2.0 + '@oxc-resolver/binding-linux-x64-gnu': 5.2.0 + '@oxc-resolver/binding-linux-x64-musl': 5.2.0 + '@oxc-resolver/binding-wasm32-wasi': 5.2.0 + '@oxc-resolver/binding-win32-arm64-msvc': 5.2.0 + '@oxc-resolver/binding-win32-x64-msvc': 5.2.0 p-filter@2.1.0: dependencies: @@ -8752,12 +8825,6 @@ snapshots: react: 18.3.1 tslib: 2.8.1 - react-toastify@10.0.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1): - dependencies: - clsx: 2.1.1 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - react@18.3.1: dependencies: loose-envify: 1.4.0 @@ -9339,7 +9406,7 @@ snapshots: uc.micro@2.1.0: {} - udx-native@1.17.7: + udx-native@1.17.8: dependencies: b4a: 1.6.7 bare-events: 2.5.4