From 081759a10b9fcd0432e983b2340d9472bf36b95d Mon Sep 17 00:00:00 2001 From: Waleed Date: Mon, 19 Oct 2026 15:28:45 -0700 Subject: [PATCH 01/12] improvement(comparisons): noindex self-hosted marketing pages, link every comparison, and add Zapier, Retool, Flowise lead answers (#9227) * improvement(comparisons): noindex self-hosted marketing pages, link every comparison, and add Zapier, Retool, Flowise lead answers * fix(comparisons): state Flowise's end of life and narrow the Retool embeddings claim to its docs * fix(proxy): noindex llms.txt, llms-full.txt and changelog.xml on self-hosted deployments --- .../(landing)/comparisons/[provider]/page.tsx | 18 ++++++++ .../app/_shell/providers/theme-provider.tsx | 12 ++---- .../lib/compare/data/competitors/flowise.ts | 40 ++++++++++++++++- .../lib/compare/data/competitors/retool.ts | 25 +++++++++++ .../lib/compare/data/competitors/zapier.ts | 25 +++++++++++ apps/sim/lib/compare/data/sim.ts | 2 +- apps/sim/lib/landing/routes.ts | 28 ++++++++++++ apps/sim/proxy.test.ts | 43 ++++++++++++++++++- apps/sim/proxy.ts | 17 ++++++-- 9 files changed, 193 insertions(+), 17 deletions(-) diff --git a/apps/sim/app/(landing)/comparisons/[provider]/page.tsx b/apps/sim/app/(landing)/comparisons/[provider]/page.tsx index 61321bbc0ea..e84a9667843 100644 --- a/apps/sim/app/(landing)/comparisons/[provider]/page.tsx +++ b/apps/sim/app/(landing)/comparisons/[provider]/page.tsx @@ -9,6 +9,7 @@ import { LIBRARY_SECTION } from '@/lib/library/seo' import { COMPARISON_SECTIONS, getFactGroup } from '@/app/(landing)/comparisons/comparison-sections' import { BrandIconTile, SimIconTile } from '@/app/(landing)/comparisons/components/brand-icon-tile' import { ComparisonCards } from '@/app/(landing)/comparisons/components/comparison-cards' +import { ComparisonLinkRow } from '@/app/(landing)/comparisons/components/comparison-link-row' import { ComparisonTable } from '@/app/(landing)/comparisons/components/comparison-table' import { ProseText } from '@/app/(landing)/comparisons/components/prose-text' import { getLibraryPostsForCompetitor } from '@/app/(landing)/comparisons/library-links' @@ -91,6 +92,7 @@ export default async function ComparisonProviderPage({ const relatedPosts = await getLibraryPostsForCompetitor(competitor) const verdict = buildBottomLine(competitor) const CompetitorIcon = competitor.brand?.icon + const otherCompetitors = ALL_COMPETITORS.filter((other) => other.id !== competitor.id) const breadcrumbJsonLd = { '@context': 'https://schema.org', @@ -378,6 +380,22 @@ export default async function ComparisonProviderPage({ ) : null} +
+

+ More comparisons +

+ +
+

= new Set(NON_LANDING_LIGHT_SEGMENTS) +const APP_SURFACE = { defaultTheme: 'system', storageKey: 'sim-theme' } as const + /** * The marketing surface: the root plus every `app/(landing)` segment. These * pages keep their own stored theme, written only by the landing footer's @@ -50,16 +52,8 @@ const LIGHT_MODE_SEGMENTS: ReadonlySet = new Set(NON_LANDING_LIGHT_SEGME * every signed-in user, which would render the marketing site in the OS theme * and overwrite any choice the footer toggle made. */ -const LANDING_SEGMENTS: ReadonlySet = new Set(LANDING_ROUTES) - -const APP_SURFACE = { defaultTheme: 'system', storageKey: 'sim-theme' } as const const LANDING_SURFACE = { defaultTheme: 'light', storageKey: 'sim-landing-theme' } as const -function isLandingPath(pathname: string): boolean { - const firstSegment = pathname.split('/')[1] - return firstSegment === '' || LANDING_SEGMENTS.has(firstSegment) -} - export function ThemeProvider({ children, ...props }: ThemeProviderProps) { const pathname = usePathname() diff --git a/apps/sim/lib/compare/data/competitors/flowise.ts b/apps/sim/lib/compare/data/competitors/flowise.ts index eda221873d5..99dd5be6dc6 100644 --- a/apps/sim/lib/compare/data/competitors/flowise.ts +++ b/apps/sim/lib/compare/data/competitors/flowise.ts @@ -1,7 +1,11 @@ import { FlowiseIcon } from '@/components/icons' import type { CompetitorProfile } from '@/lib/compare/data/types' -/** Researched and cross-verified against live vendor sources on 2026-07-02. */ +/** + * Researched and cross-verified against live vendor sources on 2026-07-02. The + * end-of-life status in `oneLiner`, `leadAnswer`, and `faqs` was verified against + * flowiseai.com/sunset and the archived GitHub repository on 2026-10-19. + */ export const flowiseProfile: CompetitorProfile = { id: 'flowise', name: 'Flowise', @@ -14,7 +18,39 @@ export const flowiseProfile: CompetitorProfile = { asOf: '2026-07-02', }, oneLiner: - 'Flowise is an open-source, low-code visual builder for LLM chains, RAG pipelines, and multi-agent AI workflows, available self-hosted or as a managed cloud service, and owned by Workday since August 2025.', + 'Flowise is an open-source, low-code visual builder for LLM chains, RAG pipelines, and multi-agent AI workflows, owned by Workday since August 2025, which reached end of life on August 31, 2026 after its team announced it was winding the project down.', + leadAnswer: [ + 'Flowise was an open-source, Apache 2.0-licensed, low-code visual builder for LLM chains, RAG pipelines, and multi-agent workflows, owned by Workday since August 2025. Its team ', + { text: 'announced the sunset of Flowise', href: 'https://flowiseai.com/sunset' }, + ' on July 29, 2026: feature development stopped that day, the GitHub repository was archived in August, and the project reached end of life on August 31, 2026, with the Apache 2.0 code left available to fork. Sim is an open-source AI workspace with an Apache 2.0-licensed core, where teams build, deploy, and manage AI agents visually, conversationally, or with code, on Sim Cloud or self-hosted. Choose a Flowise fork only if you already run Flowise and are prepared to maintain the code yourself. Choose Sim when you need an actively developed platform with production operations built in: schedule and app-event triggers, failure alerts, error-handling branches, native parallel execution, and published execution limits.', + ], + faqs: [ + { + question: 'Is Flowise still maintained?', + answer: + 'No. The Flowise team announced on July 29, 2026 that it was winding the project down: feature development and pull request review stopped that day, the GitHub repository was archived in August 2026 with its npm packages and Docker images marked deprecated, and the project reached end of life on August 31, 2026, when the core team stopped supporting it on Discord and GitHub. The Apache 2.0 source code stays on GitHub for teams to fork. Sim is an actively developed open-source alternative with an Apache 2.0-licensed core that can be self-hosted or used on Sim Cloud.', + }, + { + question: 'How does Sim compare to Flowise for building AI agents?', + answer: + "Both are visual canvas builders with agent nodes and a human approval step, but Sim adds natural-language building and live multiplayer editing. Flowise's Agentflow V2 provides Agent nodes with Condition, Iteration, and Human Input primitives, custom code runs in JavaScript only, and its canvas supports one editor per session with no natural-language flow generator. Sim builds and edits workflows from plain-language requests through Chat and Copilot, runs custom code in JavaScript or Python, lets several people edit the same canvas at once, and works as both an MCP client and an MCP server, where Flowise documents MCP client support only.", + }, + { + question: 'What is a Flowise alternative with stronger production deployment options?', + answer: + "Sim documents more production controls than Flowise: webhook, schedule, chat, REST API, and app-event triggers; async runs that return an execution ID to poll; failure alerts to Slack, email, or a webhook; error branches so a failing block does not halt the run; and published timeouts (50-minute sync runs on paid plans, 90-minute async by default). Flowise flows start from its chat widget, public URL, REST prediction API, or an MCP tool call, and it has no built-in schedule trigger, so time-based runs need an external scheduler. Flowise's prediction endpoint is synchronous, and its documentation does not describe failure alerting, automatic retries or replay, or execution limits.", + }, + { + question: 'Are Sim and Flowise both open source?', + answer: + "Yes. Both Sim and Flowise license their core under Apache 2.0 and can be self-hosted, so the license itself is not a differentiator. Each keeps some features under a separate license: Flowise's RBAC, login-activity logs, and organization workspaces ship under a Commercial License on its Cloud and Enterprise plans, with SSO on Enterprise only, while Sim's enterprise features require an Enterprise subscription for production use. Flowise's archived repository keeps its community of roughly 55,000 GitHub stars, but the project no longer accepts contributions after reaching end of life on August 31, 2026.", + }, + { + question: 'How do Sim and Flowise compare for RAG and knowledge bases?', + answer: + "Flowise gives more control over the ingestion pipeline, while Sim builds a synced, hybrid-search knowledge base into the workspace. Flowise's Document Store upserts into a choice of vector stores such as Pinecone, Weaviate, Milvus, and FAISS, offers the broadest native set of text splitters, and lets you preview and edit chunks. Sim combines vector and full-text search, supports 15 file types with configurable chunking, uses connectors to continuously sync sources such as Google Drive, Confluence, and Slack, and exposes chunk-level detail with a dedicated chunk editor.", + }, + ], standoutFeatures: [ { title: 'Choice of vector-store backend, with the broadest native text-splitter menu', diff --git a/apps/sim/lib/compare/data/competitors/retool.ts b/apps/sim/lib/compare/data/competitors/retool.ts index 5f4fb90bfb3..3fe3ef7f61a 100644 --- a/apps/sim/lib/compare/data/competitors/retool.ts +++ b/apps/sim/lib/compare/data/competitors/retool.ts @@ -23,6 +23,31 @@ export const retoolProfile: CompetitorProfile = { }, oneLiner: 'Retool is a low-code platform for building, deploying, and managing internal software (apps, workflows, and AI agents) that connect to databases, APIs, and LLMs.', + leadAnswer: [ + 'Retool is a proprietary low-code platform for building internal software: React-based apps, workflows, and a separate Agents product connected to databases, APIs, and LLMs, on Retool Cloud or self-hosted with a Retool-issued license key. Sim is an open-source AI workspace with an Apache 2.0-licensed core, where teams build, deploy, and manage AI agents visually, conversationally, or with code, on Sim Cloud or self-hosted. Choose Retool when the deliverable is an internal app with a user interface on top of production data, such as an admin panel or dashboard. Choose Sim when the deliverable is the agent or automation itself, built in one workflow builder and deployed as a REST API, chat interface, or MCP tool, with built-in evaluation and guardrail blocks.', + ], + faqs: [ + { + question: 'Sim vs Retool for building internal AI tools: which should I use?', + answer: + "Use Retool when the internal tool needs a full app interface, and Sim when the tool is an AI agent or automation. Retool builds internal business applications with a React frontend and TypeScript backend, and its AppGen generates the UI, data queries, and bindings from a plain-English prompt while inheriting the org's existing authentication and access controls. Retool Agents is a separate product that combines deterministic code, LLM decisions, and human-in-the-loop steps. Sim combines agent, function, and human approval blocks in a single workflow builder, builds and edits workflows from natural language through Chat and Copilot, and deploys them as a REST API, a public chat interface, or an MCP tool.", + }, + { + question: 'What is a Retool alternative for building AI agents rather than internal apps?', + answer: + "Sim is built for AI agents first, while Retool's agent capabilities sit beside an internal app builder. Retool Agents usage is billed by the hour, separately from the monthly AI-credit allocation, and Retool documents no dedicated evaluation or guardrail framework for agent output, nor a way to publish an individual app or workflow as its own MCP tool. Sim includes an Evaluator block that scores outputs against named metrics, a Guardrails block for JSON validation, regex, hallucination scoring, and PII masking, reusable Agent Skills, and publishing of any deployed workflow as an MCP tool.", + }, + { + question: 'Is Retool open source, and can it be self-hosted?', + answer: + "Retool is proprietary and closed-source, while Sim's core is licensed under Apache 2.0. Retool can be self-hosted on its Free, Team, and Business plans at the same pricing as cloud, but it still requires a Retool-issued license key, and its Docker Compose setup is for non-production testing only, so production self-hosting runs on Kubernetes with Helm. Sim can be self-hosted with Docker Compose or Kubernetes (Helm), and its enterprise features, such as SSO and audit logs, require a Sim Enterprise license.", + }, + { + question: 'How do Sim and Retool compare for knowledge bases and RAG?', + answer: + "Sim's knowledge base combines vector and full-text search and keeps sources in sync, while Retool Vectors is a managed vector store for uploaded content. Retool Vectors indexes text, PDFs, and web pages, and it generates embeddings with an OpenAI embedding model (text-embedding-ada-002 by default) that cannot be changed after a vector is created. Sim stores embeddings in pgvector alongside a full-text index, supports 15 file types with configurable chunking, uses connectors to continuously sync sources such as Google Drive, Confluence, and Slack, and shows chunk-level detail with a dedicated chunk editor.", + }, + ], standoutFeatures: [ { title: 'Full internal business applications, not just agent workflows', diff --git a/apps/sim/lib/compare/data/competitors/zapier.ts b/apps/sim/lib/compare/data/competitors/zapier.ts index 55632637da7..d63acf873c1 100644 --- a/apps/sim/lib/compare/data/competitors/zapier.ts +++ b/apps/sim/lib/compare/data/competitors/zapier.ts @@ -29,6 +29,31 @@ export const zapierProfile: CompetitorProfile = { }, oneLiner: 'Zapier is a cloud-based, proprietary no-code/low-code automation platform built around "Zaps": trigger-action workflows connecting thousands of web apps. It recently added AI features, including Copilot for building, Agents for autonomous multi-step tasks, and an MCP server.', + leadAnswer: [ + "Zapier is a proprietary, cloud-only automation platform built around trigger-action Zaps across 9,000+ apps, with Copilot for natural-language building, a separate Agents product, and a hosted MCP server. Sim is an open-source AI workspace with an Apache 2.0-licensed core, where teams build, deploy, and manage AI agents visually, conversationally, or with code, on Sim Cloud or self-hosted. Choose Zapier when you need the largest catalog of prebuilt app connectors for trigger-action automations that run entirely on Zapier's cloud. Choose Sim when AI agents are the core of the workflow, or when you need self-hosting, live multiplayer editing, native parallel branches, or a knowledge base with hybrid search that continuously syncs external sources.", + ], + faqs: [ + { + question: 'How does Sim compare to Zapier for building AI agents?', + answer: + 'Sim builds agents inside the same workflow builder as the rest of the automation, while Zapier runs AI agents in a separate Agents product alongside its trigger-action Zaps. Zapier Agents can reference FAQs, docs, and public links as knowledge, but Zapier does not publicly detail the retrieval implementation or document dedicated evaluation or guardrail tooling. Sim provides agent blocks across 28 LLM provider integrations, a knowledge base with hybrid vector and full-text search plus connectors that continuously sync sources such as Google Drive and Confluence, and Evaluator and Guardrails blocks that score outputs and detect or mask PII. Both products offer a dedicated human approval step that pauses a run mid-workflow.', + }, + { + question: 'Is there a Zapier alternative that can be self-hosted?', + answer: + 'Sim can be self-hosted with Docker Compose or Kubernetes (Helm) under its Apache 2.0-licensed core, while Zapier is closed-source SaaS with no self-hosted or on-prem option. Zapier runs on AWS in the United States with no selectable data residency for standard customers. A self-hosted Sim deployment keeps data on your own infrastructure, and Sim Cloud remains available as a managed alternative. Enterprise features such as SSO and audit logs require a Sim Enterprise license in either mode.', + }, + { + question: "How does Zapier's task-based billing compare to Sim's credit-based billing?", + answer: + "Zapier meters every completed action step as a task, with trigger steps free and each MCP tool call costing 2 tasks, so cost tracks execution volume. Bringing your own AI provider key to Zapier covers only AI-powered steps and chatbots, not the app-action tasks themselves. Zapier's Free plan includes 100 tasks per month limited to two-step Zaps, and its Professional plan starts at $19.99/month (annual billing) for 750 tasks. Sim uses credit-based usage billing, where bring-your-own-key calls skip Sim's model and tool usage charge and only the base per-run charge applies; its Free plan grants 1,000 one-time credits (worth $5) at signup, and Pro is $25 per user/month.", + }, + { + question: 'Can I publish my own automations as MCP tools with Zapier or Sim?', + answer: + "Sim can publish any deployed workflow as a tool on an MCP server, while Zapier's MCP server only exposes Zapier's own library of app actions. Zapier MCP lets AI clients call actions from its 9,000+ app connections, and an MCP Client by Zapier integration lets a Zap call external MCP servers, but there is no documented way to publish your own Zap as an MCP endpoint. Sim works as both an MCP client and an MCP server, with private, API-key protected, or public servers and ready-to-paste client config for Codex, Cursor, Claude Code, Claude Desktop, and VS Code.", + }, + ], standoutFeatures: [ { title: '9,000+ pre-built app integrations', diff --git a/apps/sim/lib/compare/data/sim.ts b/apps/sim/lib/compare/data/sim.ts index c4169ff26d3..6d0440244b3 100644 --- a/apps/sim/lib/compare/data/sim.ts +++ b/apps/sim/lib/compare/data/sim.ts @@ -798,7 +798,7 @@ export const simProfile: CompetitorProfile = { }, freeTier: { value: - 'Yes: Free plan with 1,000 one-time credits (worth $5, env-configurable), granted once at signup and never refreshed — no monthly reset and no weekly refresh (weekly refresh is a paid-plan feature)', + 'Yes: Free plan with 1,000 one-time credits (worth $5), granted once at signup and never refreshed — no monthly reset and no weekly refresh (weekly refresh is a paid-plan feature)', shortValue: 'Free plan, 1,000 one-time credits', confidence: 'verified', sources: [ diff --git a/apps/sim/lib/landing/routes.ts b/apps/sim/lib/landing/routes.ts index 82b0019f0b6..42be1a77554 100644 --- a/apps/sim/lib/landing/routes.ts +++ b/apps/sim/lib/landing/routes.ts @@ -15,6 +15,10 @@ * landing footer's toggle, instead of the app's account-synced `system` * default. Leave one out and a visitor on a dark OS lands on a dark * marketing page. + * - The proxy marks these paths, and the marketing documents in + * {@link isMarketingPath}, `noindex` on self-hosted deployments, so a + * third-party copy of the marketing site never competes with sim.ai in search + * or answer engines. Leave one out and that page stays indexable there. * * Imported by `next.config.ts` before the `@/` alias resolves, so this module * must stay dependency-free. @@ -45,3 +49,27 @@ export const LANDING_ROUTES = [ 'terms', 'workflows', ] as const + +const LANDING_SEGMENTS: ReadonlySet = new Set(LANDING_ROUTES) + +/** Whether a pathname is the root or sits under an `app/(landing)` segment. */ +export function isLandingPath(pathname: string): boolean { + const firstSegment = pathname.split('/')[1] + return firstSegment === '' || LANDING_SEGMENTS.has(firstSegment) +} + +/** + * Root-level documents that republish the marketing site's content for crawlers + * and answer engines. They are served outside `app/(landing)`, so + * {@link isLandingPath} does not cover them. + */ +const MARKETING_DOCUMENT_PATHS: ReadonlySet = new Set([ + '/llms.txt', + '/llms-full.txt', + '/changelog.xml', +]) + +/** Whether a pathname serves marketing content: a landing page or a marketing document. */ +export function isMarketingPath(pathname: string): boolean { + return isLandingPath(pathname) || MARKETING_DOCUMENT_PATHS.has(pathname) +} diff --git a/apps/sim/proxy.test.ts b/apps/sim/proxy.test.ts index 860420b253a..aa33a6c6a4e 100644 --- a/apps/sim/proxy.test.ts +++ b/apps/sim/proxy.test.ts @@ -1,7 +1,8 @@ +import { resetEnvFlagsMock, setEnvFlags } from '@sim/testing' import { resetEnvMock, setEnv } from '@sim/testing/mocks/env.mock' import { unstable_doesMiddlewareMatch } from 'next/experimental/testing/server' import { NextRequest } from 'next/server' -import { afterAll, describe, expect, it } from 'vitest' +import { afterAll, afterEach, describe, expect, it } from 'vitest' import { config, proxy, resolveApiCorsPolicy } from '@/proxy' setEnv({ @@ -160,6 +161,40 @@ describe('proxy on the dedicated MCP host', () => { ) }) +describe('proxy indexing policy', () => { + afterEach(resetEnvFlagsMock) + + const robotsTag = (pathname: string) => + proxy(new NextRequest(`https://self-hosted.example${pathname}`)).headers.get('X-Robots-Tag') + + it('keeps the marketing pages of a self-hosted deployment out of search results', () => { + setEnvFlags({ isHosted: false }) + expect(robotsTag('/comparisons/n8n')).toBe('noindex, nofollow') + expect(robotsTag('/pricing')).toBe('noindex, nofollow') + }) + + it('keeps the marketing documents of a self-hosted deployment out of search results', () => { + setEnvFlags({ isHosted: false }) + expect(robotsTag('/llms.txt')).toBe('noindex, nofollow') + expect(robotsTag('/llms-full.txt')).toBe('noindex, nofollow') + expect(robotsTag('/changelog.xml')).toBe('noindex, nofollow') + }) + + it('leaves the marketing pages and documents of the hosted deployment indexable', () => { + setEnvFlags({ isHosted: true }) + expect(robotsTag('/comparisons/n8n')).toBeNull() + expect(robotsTag('/pricing')).toBeNull() + expect(robotsTag('/llms.txt')).toBeNull() + expect(robotsTag('/llms-full.txt')).toBeNull() + expect(robotsTag('/changelog.xml')).toBeNull() + }) + + it('leaves a self-hosted non-landing public page indexable', () => { + setEnvFlags({ isHosted: false }) + expect(robotsTag('/login')).toBeNull() + }) +}) + describe('proxy matcher', () => { const matches = (path: string) => unstable_doesMiddlewareMatch({ config, url: `https://sim.test${path}` }) @@ -174,6 +209,12 @@ describe('proxy matcher', () => { expect(matches('/api/internal/project-file-doc/project-1/file-1/persist')).toBe(false) }) + it('runs for the marketing documents, so the indexing policy reaches them', () => { + expect(matches('/llms.txt')).toBe(true) + expect(matches('/llms-full.txt')).toBe(true) + expect(matches('/changelog.xml')).toBe(true) + }) + it('still runs for every other API route', () => { expect(matches('/api/desktop/tool/claim')).toBe(true) expect(matches('/api/desktop/tool/import/other')).toBe(true) diff --git a/apps/sim/proxy.ts b/apps/sim/proxy.ts index ad803018890..755f8307907 100644 --- a/apps/sim/proxy.ts +++ b/apps/sim/proxy.ts @@ -7,6 +7,7 @@ import { getSessionCookie } from 'better-auth/cookies' import { type NextRequest, NextResponse } from 'next/server' import { resolveSimMcpHostPath } from '@/lib/api/mcp/host-routing' import { SIM_MCP_ROUTE_PATH } from '@/lib/api/mcp/urls' +import { isMarketingPath } from '@/lib/landing/routes' import { APP_ENTRY_PATH, isAppSurfacePath, isNoindexPath } from '@/lib/navigation/paths' import { isOAuthAuthorizationCallback, resolveAuthRedirect } from '@/app/(auth)/auth-redirect' import { getEnv } from './lib/core/config/env' @@ -433,9 +434,12 @@ export function proxy(request: NextRequest) { } /** - * Keeps non-production sim.ai deployments, and app and utility surfaces on every - * deployment, out of search results. Applies to redirects too, so a signed-out - * crawler bounced from `/workspace/*` to `/login` sees the directive. + * Keeps non-production sim.ai deployments, the marketing pages of self-hosted + * deployments, and app and utility surfaces on every deployment, out of search + * results. A self-hosted copy of the marketing site carries whatever facts its + * build shipped with, so only sim.ai may be indexed for them. Applies to + * redirects too, so a signed-out crawler bounced from `/workspace/*` to `/login` + * sees the directive. * * `noindex` rather than a robots.txt `Disallow` is deliberate: a disallowed URL * can still be indexed when linked externally, and blocking the crawl stops @@ -449,7 +453,12 @@ function applyIndexingPolicy(request: NextRequest, response: NextResponse): Next request.headers.get('host') || request.nextUrl.host - if (isNonCanonicalSimHost(host) || isNoindexPath(request.nextUrl.pathname)) { + const { pathname } = request.nextUrl + if ( + isNonCanonicalSimHost(host) || + isNoindexPath(pathname) || + (!isHosted && isMarketingPath(pathname)) + ) { response.headers.set('X-Robots-Tag', 'noindex, nofollow') } From 324e400fd28d1ab8d68926b970cbb591138e1c66 Mon Sep 17 00:00:00 2001 From: Waleed Date: Mon, 19 Oct 2026 15:34:17 -0700 Subject: [PATCH 02/12] chore(deps): audit and update dependencies, raise security override floors, collapse duplicate versions (#9226) * chore(deps): audit and update dependencies, raise security override floors, collapse duplicate versions * chore(deps): revert bumps with behavior changes found in regression review * chore(deps): hold desktop electron/playwright and clack at staging versions --- AGENTS.md | 163 +- apps/desktop/package.json | 10 +- apps/docs/package.json | 25 +- apps/realtime/package.json | 14 +- apps/sim/lib/mcp/tool-validation.ts | 3 +- apps/sim/package.json | 198 +-- bun.lock | 1577 +++++++++++--------- package.json | 38 +- packages/audit/package.json | 6 +- packages/auth/package.json | 2 +- packages/browser-protocol/package.json | 2 +- packages/cli/package.json | 2 +- packages/db/package.json | 8 +- packages/desktop-bridge/package.json | 2 +- packages/emcn/package.json | 56 +- packages/logger/package.json | 4 +- packages/platform-authz/package.json | 4 +- packages/realtime-protocol/package.json | 2 +- packages/runtime-secrets/package.json | 6 +- packages/security/package.json | 4 +- packages/sim-cli/package.json | 4 +- packages/sim-setup/package.json | 4 +- packages/terminal-protocol/package.json | 4 +- packages/testing/package.json | 4 +- packages/ts-sdk/package.json | 4 +- packages/utils/package.json | 2 +- packages/workflow-persistence/package.json | 8 +- packages/workflow-renderer/package.json | 8 +- packages/workflow-types/package.json | 2 +- scripts/check-test-types.baseline.json | 4 - scripts/check-unused-exports.baseline.json | 1 - 31 files changed, 1230 insertions(+), 941 deletions(-) mode change 120000 => 100644 AGENTS.md diff --git a/AGENTS.md b/AGENTS.md deleted file mode 120000 index 681311eb9cf..00000000000 --- a/AGENTS.md +++ /dev/null @@ -1 +0,0 @@ -CLAUDE.md \ No newline at end of file diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 00000000000..acb8bc4cca7 --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,162 @@ +# Sim Development Guidelines + +This file (also `AGENTS.md`) holds the repo-wide rules. Area detail lives in `.claude/rules/*.md` (indexed in `apps/sim/AGENTS.md`): Claude loads each one by path, and any other agent reads the file a section points to before editing in that area. Skills live in `.agents/skills/`. + +## Global Standards + +- **Package manager**: `bun` and `bunx`, never `npm` and `npx`. +- **Logging**: `createLogger` from `@sim/logger`; `logger.info` / `logger.warn` / `logger.error`, never `console.log`. Inside `withRouteHandler` the logger already carries the request ID — no manual `withMetadata({ requestId })`. +- **Comments**: name things so the code explains itself. TSDoc documents exported APIs and non-obvious modules. An inline `//` is only for a terse, non-obvious *why*, or for a script-enforced `// : ` annotation (`boundary-raw-fetch`, `double-cast-allowed`, `boundary-raw-json`, `untyped-response`, `rq-lint-allow`, `client-boundary-allow`, `utils-lint-allow`, …). History belongs in the commit message. No `====` separators, commented-out code, or ESLint directives (`eslint-disable`/`eslint-enable`; nothing runs ESLint; `check:comment-hygiene` enforces all three). The `/you-might-not-need-a-comment` skill applies this to a diff. +- **ID generation**: `generateId()` (UUID v4, the default) or `generateShortId(size?)` (URL-safe, 21 chars by default) from `@sim/utils/id` — never `crypto.randomUUID()`, `nanoid`, or `uuid`. Both use `crypto.getRandomValues()`, so they also work in non-secure (HTTP) browsers. For other randomness, `@sim/utils/random` (`randomInt`, `randomFloat`, `randomItem`, `generateRandomBytes`, `generateRandomHex`) — never `Math.random()` or `crypto.randomBytes()`. +- **Common utilities**: use the shared helpers from the `@sim/utils/` subpaths instead of inline implementations (`check:utils` bans most of the inline forms below): + - `sleep(ms)` from `@sim/utils/helpers` — never `new Promise(resolve => setTimeout(resolve, ms))` + - `toError(e)` from `@sim/utils/errors` — normalize caught values to `Error`; never `e instanceof Error ? e : new Error(String(e))` + - `getErrorMessage(e, fallback?)` from `@sim/utils/errors` — never `e instanceof Error ? e.message : 'fallback'` + - `structuredClone(value)` — built-in deep clone; never `JSON.parse(JSON.stringify(...))` + - `omit(obj, keys)` / `filterUndefined(obj)` from `@sim/utils/object` — never `Object.fromEntries(Object.entries(...).filter(...))` + - `isRecordLike(value)` from `@sim/utils/object` — never redeclare `typeof value === 'object' && value !== null && !Array.isArray(value)` + - `toRecord(value)` / `toRecordOrNull(value)` / `toArray(value)` from `@sim/utils/object` — coerce an untyped payload value; never inline `isRecordLike(v) ? v : {}` or `Array.isArray(v) ? v : []`. Where the source is already typed, keep the inline `Array.isArray` check: it narrows, while `toArray` asserts + - `toStringOrNull(value)` / `toNumberOrNull(value)` / `toBooleanOrNull(value)` from `@sim/utils/coerce` — read one scalar out of an untyped payload; never declare a local one-liner byte-identical to one of these. Keep a local helper that differs: `undefined` instead of `null` changes the wire shape, and a `Number.isFinite` or string-parse variant is a stricter check these omit + - `truncate(str, maxLength, suffix?)` from `@sim/utils/string` — never inline slice + ellipsis + - `escapeRegExp(value)` from `@sim/utils/string` — never inline `replace(/[.*+?^${}()|[\]\\]/g, '\\$&')` + - `compareStrings(left, right)` from `@sim/utils/string` — code-unit ordering for hashes, fingerprints, and cross-process comparisons; never `localeCompare` there + - `backoffWithJitter(attempt, retryAfterMs, options?)` / `parseRetryAfter(header)` from `@sim/utils/retry` — never reimplement exponential backoff inline +- **Deployment flags in the browser**: client code inside a workspace, organization, or standalone settings surface reads `hosted`, `billingEnabled`, `chatEnabled`, and the enterprise feature set through `useDeploymentShape()` (components) or `getDeploymentShape()` (block conditions, stores, helpers) from `@/lib/core/config/deployment-shape`, never `isHosted`/`isBillingEnabled`/... from `env-flags`. Those constants freeze at module init from the root layout's `NEXT_PUBLIC_*` transport, which Next's bare 404 shell and `global-error` never emit, so a recovered tab would render Sim Cloud as self-hosted; the reader is seeded from the server-resolved workspace host context, organization layout, or standalone settings layout instead. Server code keeps reading `env-flags`. +- **Type-checking**: `bun run type-check` at the root checks every workspace (`bun run type-check` inside a workspace checks just that one). `apps/sim`'s tsconfig excludes `*.test.ts(x)`, so `type-check` skips its tests; CI's `test-types` job ratchets their errors per file and TS code instead (`check:test-types`, whose header says how to fix a finding): a test file may not gain one. Never remove the `@typescript/native` alias from the root `devDependencies`: nothing imports it, but without it a bare `tsc` resolves to the ~10x slower TypeScript 6 compiler. `bun run check:native-typecheck` enforces this; its header explains the bin-resolution trap. + +## Architecture + +### Repository layout + +``` +apps/ +├── sim/ # Next.js app: UI, API routes, workflow builder, executor +│ ├── app/ # App router — pages and API routes (app/api/**) +│ ├── blocks/ # Block definitions and registry +│ ├── tools/ # Tool definitions and registry +│ ├── triggers/ # Trigger definitions and registry +│ ├── connectors/ # Knowledge base connectors +│ ├── executor/ # Workflow execution engine +│ ├── providers/ # LLM provider integrations +│ ├── components/ # Shared app UI (ui/, icons, …) +│ ├── hooks/ # Shared hooks (queries/, selectors/) +│ ├── stores/ # Zustand stores +│ ├── lib/ # App-wide modules, incl. lib/api/contracts and lib//application +│ └── ee/ # Enterprise features +├── realtime/ # Bun Socket.IO server (collaborative workflow builder) +├── desktop/ # Electron shell around the hosted web app +├── docs/ # Documentation site +└── pii/ # Python PII detection service (not in the JS/turbo build) + +packages/ +├── emcn/ # @sim/emcn — design system (chip family, tokens, icons) +├── db/ # @sim/db — Drizzle schema, migrations, client +├── auth/ # @sim/auth — shared Better Auth verifier +├── platform-authz/ # @sim/platform-authz — workspace + workflow authz (subpath exports) +├── audit/ logger/ security/ utils/ runtime-secrets/ deployment-config/ +├── realtime-protocol/ browser-protocol/ terminal-protocol/ desktop-bridge/ +├── workflow-types/ workflow-persistence/ workflow-renderer/ +├── testing/ # @sim/testing — test factories and mocks +├── tsconfig/ # shared tsconfig presets +└── cli/ sim-cli/ sim-setup/ ts-sdk/ python-sdk/ # published CLIs and SDKs +``` + +### Package boundaries + +- `apps/* → packages/*` only. Packages never import from `apps/*`. +- `apps/realtime` avoids Next.js, React, the block/tool registry, provider SDKs, and the executor. Never add imports from `@/lib/webhooks/providers/*`, `@/executor/*`, `@/blocks/*`, or `@/tools/*` to any package it consumes; it calls back into `apps/sim` only over internal HTTP with `INTERNAL_API_SECRET`. CI enforces this via `scripts/check-monorepo-boundaries.ts` and `scripts/check-realtime-prune-graph.ts`. +- Auth is shared across both apps via the Better Auth "Shared Database Session" pattern (same `BETTER_AUTH_SECRET`, same DB via `@sim/db`). + +### Application Operation Boundary + +- Every protected read, write, canonical resource lookup, or authorization-sensitive reference resolution enters through an authorized application use case. +- Define one stable semantic operation with its minimum role, workspace-key policy, allowed principal kinds, and delegated services. Internal APIs, v2 APIs, Copilot, and trusted tools call the same use case when the domain behavior is the same. +- Surface adapters authenticate and construct a `Principal`, apply request-rate policy, parse contracts, map input, and present their own result. They never query protected data, decide resource authorization, implement business transactions, or record semantic audit (`check:source-conventions` ratchets value imports of `@sim/db` under `app/api/`). +- Application use cases load canonical context, compare asserted scope, authorize current access, execute managers/repositories, project semantic audit, and trigger shared domain effects. Managers accept canonical IDs and scope, never credentials or principals. Application code stays surface-neutral (`check:boundaries`): never `next/server` or `app/api/**`, and never a runtime import of a route contract object, presenter, or Copilot handler (contract types, schemas, and constants are fine); a surface fact, such as a cursor's route, comes in as input. +- Copilot is a surface adapter. Use `createCopilotApplicationAdapter` and the domain's registered operation object; never a Copilot-only authorization or business implementation. +- Protected compound mutations belong in one top-level semantic application operation, never a sequence of independently committing mutations in a route or tool adapter. +- Never substitute a billing owner, uploader, creator, or API-key owner for the acting principal. Fail fast when the identity model or operation policy cannot express the caller. +- Use the `migrate-application-operation` skill whenever creating or migrating a protected endpoint, tool command, or resource method. + +The `'use client'` server boundary, the app/worker runtime env split, and feature folder layout are in `.claude/rules/sim-architecture.md`. + +## Code Conventions + +- **Naming**: components PascalCase (`WorkflowList`); hooks `use*`; files kebab-case (`workflow-list.tsx`); constants SCREAMING_SNAKE_CASE; interfaces PascalCase with a suffix (`WorkflowListProps`); stores `stores//store.ts`. Inside `lib/`, `executor/`, `providers/`, `stores/`, `hooks/`, `serializer/`, and a package's `src/`, a file never starts with its folder's name (`logs/views.ts`, not `logs/log-views.ts`), and a file in `utils/` or `helpers/` never repeats that role (`date.ts`, not `date-utils.ts`); `feature/feature.tsx` stays the component convention. `check:file-names` ratchets this. +- **Imports**: absolute (`@/...`) only, never relative (a barrel `index.ts` re-exports its own siblings relatively). `check:source-conventions` ratchets relative imports in `apps/sim`. A folder with 3+ exports gets an `index.ts` barrel; never re-export from a non-barrel file. `import type` for type-only imports. Order and lazy-loading through barrels: `.claude/rules/sim-imports.md`. +- **TypeScript**: no `any` and no non-null `!` (use precise types or `unknown` with guards; `check:explicit-any` ratchets both); no export nothing imports (`check:unused-exports`); a props interface for every component; `as const` for constant objects/arrays; explicit ref types (`useRef(null)`). +- **Unused bindings** fail lint (biome `noUnusedVariables`, `noUnusedFunctionParameters`): delete the dead variable, import, or parameter and update callers; write `catch {}` when the error is unused. Prefix `_` only for a parameter that must hold its position because a later one is used, or a type parameter kept for API shape. `const { a, ...rest } = obj` to omit keys is allowed. The rules carry no autofix, so `bun run lint` will not rename anything for you. +- **Components**: `'use client'` only for hooks or browser APIs (`check:client-boundary` guards the server boundary). Structure order, extraction thresholds, and list-render rules: `.claude/rules/sim-components.md`. Render-performance idioms (lazy-init refs, hoisting, `Map` pre-indexing, `[...arr].sort()`, never `toSorted()`): `.claude/rules/sim-react-performance.md`. For effect/state/memo/callback anti-patterns use the `/you-might-not-need-*` skills and verify against the running UI. +- **State ownership**: React Query owns server data — never `useState` + `fetch`; shareable client view-state (tabs, filters, search, pagination, selected id) lives in the URL via `nuqs`; Zustand owns global client state; `useState` owns UI-only state. Hooks: `.claude/rules/sim-hooks.md`. Stores (`devtools`, `persist` only with an explicit `partialize` whitelist, workflow value invariants): `.claude/rules/sim-stores.md`. URL state: `.claude/rules/sim-url-state.md`. +- **Utils**: inline a helper with one consumer; create `utils.ts` when 2+ files share it — in `lib/` (app-wide) or `feature/utils/` (feature-scoped). Check `lib/` before writing a new one. +- **Lists and menus** mirror the order the user already reads elsewhere (toolbar, settings nav), encoded in one exported order constant (resource menus share `RESOURCE_MENU_ORDER`, a product order that does not mirror the sidebar); a separator marks only a change in what the action acts on (typically one, before the destructive action): `.claude/rules/sim-list-ordering.md`. +- **Caching**: `lru-cache` with a `max` ceiling, never a hand-rolled TTL `Map`; a lifecycle map is not a cache; cache the gate, never the credential: `.claude/rules/sim-caching.md`. + +## API Contracts and Routes + +- Request/response shapes for every route under `apps/sim/app/api/**` live in `apps/sim/lib/api/contracts/**`, built with `defineRouteContract`. Export the contract; export a named schema or type alias only when another module imports it (`check:unused-exports`). Routes never import `zod` or define route-local boundary schemas; clients never write ad-hoc wire types or `z.input`/`z.output`. +- Every route handler runs inside `withRouteHandler`. Ordinary internal and v2 routes use the shared builders (`defineInternalJsonRoute`, `defineV2JsonRoute`, binary/stream variants), which already apply it — never double-wrap. Raw `withRouteHandler` is only for documented protocol or lifecycle exceptions. Never export a bare `async function GET/POST/...` (`check:source-conventions`). +- Same-origin JSON calls go through `requestJson(contract, ...)` from `@/lib/api/client/request`. A raw `fetch` is only for streaming, binary downloads, multipart uploads, signed URLs, OAuth redirects, or external origins, and carries `// boundary-raw-fetch: `. +- The other script-enforced exceptions are `// double-cast-allowed:`, `// boundary-raw-json:`, and `// untyped-response:`. Never add one to silence a fixable finding. +- `bun run check:api-validation:strict` must pass. Full contract rules, route pattern, annotation placement, the end-to-end order, and the schema review checklist: `.claude/rules/sim-api-contracts.md`. React Query hooks (key factories, named `staleTime` constants, `signal`, invalidation, server prefetch): `.claude/rules/sim-queries.md`. + +## Styling and EMCN + +- Tailwind only. Inline `style` only for a genuinely dynamic value or a CSS variable; type size is a named token, never `text-[Npx]` (`check:source-conventions` ratchets both). Never update global styles; keep styling local to the component. `cn()` from `@sim/emcn` for conditional classes. `size-*` for equal height and width (icons default `size-[14px]`), never `h-N w-N`. +- Import components, `cn`, and tokens from the `@sim/emcn` barrel; icons from `@sim/emcn/icons`; CSS modules by file path. Never deep-import other component subpaths. +- The chip family is the canonical chrome: `ChipInput`, `ChipTextarea`, `ChipModal`/`ChipModalField`, `ChipSelect`/`ChipCombobox`/`ChipDropdown`, `ChipSwitch` (a segmented choice; a boolean toggle stays `Switch`), `ChipDatePicker`, `Chip`/`ChipLink`, `ChipTag`; `DropdownMenu` for context/action menus. Components own their chrome: consumers pass props (`error`, `icon`, `endAdornment`, `inputClassName`) and `className` carries only layout/sizing. Every labeled field inside a `ChipModalBody` is a `ChipModalField`. +- Consumer rules, tokens, text scale, and modal rhythm: `.claude/rules/sim-styling.md`. Authoring components in `packages/emcn`: `.claude/rules/emcn-components.md`. Product UI copy: `.claude/rules/sim-ui-copy.md`. Marketing copy and positioning: `.claude/rules/constitution.md`. + +## Testing + +Most unit tests in a codebase like this restate the code they test. They pass on the first run, break on every refactor, and catch nothing that type-check, `next build`, `bun run check:audits`, or a real end-to-end run would miss. Test for confidence, not coverage. + +- **Never write unit tests after you write code.** A test written to describe code that already exists restates the implementation and proves nothing. If the change needs proof, prove it end to end. +- **Highly prefer E2E tests.** Use them to verify complex features work, against the real boundary: real Postgres/Redis (`*.integration.ts`), the running app over real HTTP (`apps/sim/scripts/test-*-e2e.ts`), or the packaged desktop app (`apps/desktop/e2e`, Playwright). At the end of an E2E test, produce a verifiable and repeatable artifact — a JSON report of each check with status and duration, an HTTP status log, a trace, or a screenshot — written to a caller-supplied `_REPORT_PATH` and uploaded by CI on failure. `apps/sim/scripts/test-scim-e2e.ts` is the reference. +- **If you must test a system in isolation, first write down all the ways it could fail, then write the code.** Each failure mode (bad input, boundary, concurrency, partial failure, permission denial, resource cap) becomes one test that fails before the code exists. +- A regression test must fail on the pre-fix code. Revert each guard of the fix and watch its test go red before you trust it. +- Never write tests that restate declarations (block/tool/provider config, registries, constants, schemas accepting valid input), mock every collaborator and assert `toHaveBeenCalledWith` on the mocks, check rendered text or class names, or test mocks and factories themselves. +- Never hand-roll a mock or test helper that `apps/sim/vitest.setup.ts` or `@sim/testing` already provides; a module mocked in a third file gets one central mock. `bun run check:test-patterns` enforces this. + +Use the `test-audit` skill whenever you write, change, review, or sweep tests — it holds the authoring gate, the junk patterns, and the retention bar. Test layers, file naming, and Vitest mechanics (global mocks, `@sim/testing`, performance rules) are in `.claude/rules/sim-testing.md`. + +## Integrations + +Build order: **Tools** → **Block** → **Icon** → optional **Trigger**, starting from the service's API docs. Use the skills: `/add-integration` (end-to-end), `/add-tools`, `/add-block`, `/add-trigger`. Two rules the skills assume: + +- **Tool IDs are `snake_case`** (`service_action`), registered in `tools/registry.ts`; blocks register in `blocks/registry-maps.ts` (`BLOCK_REGISTRY` + `BLOCK_META_REGISTRY`, alphabetically). +- **Type coercions go in `tools.config.params`** (runs at execution, after variable resolution), never in `tools.config.tool` (runs at serialization, where `Number()` destroys dynamic `` references). + +Remaining block/tool/trigger rules: `.claude/rules/sim-integrations.md`. Canvas sentences: `apps/sim/blocks/AGENTS.md`. + +## Tables + +Table column types are registry entries in `apps/sim/lib/table/column-types/` — one file per type owning its label, icon, storage cast, coercion, validation, conversion compatibility, formatting, and editor. `Record` on `registry.ts` and `registry.server.ts` is a compile-time completeness gate: adding a type to the union errors until both entries exist. + +Never add a `case 'sometype':` outside `column-types/`, except the one documented import-path switch (`coerceValue` in `lib/table/import.ts`), which every new type extends — a missing arm fails silently (a wrong `jsonbCast` breaks every filter on the column). If a consumer needs per-type knowledge, add a registry field. Use `/add-column-type` for the full procedure. + +## How your work is checked + +Before declaring a change done, run the local gate from the repo root; CI runs these and fails on any of them: + +```bash +bun run lint # biome format + lint, autofixes (CI runs lint:check) +bun run type-check # every workspace +bun run check:audits # every check:* audit, generated-artifact checks included +bun run test # script tests, then every workspace's Vitest suite +git fetch origin staging # the block-registry check diffs against it +bun run apps/sim/scripts/check-block-registry.ts origin/staging +``` + +Author a `packages/db` schema change or migration with the `db-migrate` skill. CI also runs `bun run check:migrations` (it diffs against a base ref, `origin/staging` by default, so it is not in `check:audits`; run it when you touch `packages/db/migrations/**`), checks that `drizzle-kit generate` in `packages/db` produces no new migration, and runs a non-blocking `bun audit`. When an audit fails, its output and its script's header say what the rule protects; fix the code, never the check. Ratchet baselines (`scripts/*baseline.json`) only shrink: regenerate one with `--update` after removing violations; it refuses to admit new debt. The one exception is `check:tool-registry-boundary`, whose module-count baseline is re-recorded with `--update-baseline` when growth is deliberate (see its skill). + + + +# This is NOT the Turborepo you know + +Turborepo configuration, task behavior, and CLI commands can vary between installed versions and may differ from your training data. Resolve the `turbo` package from this file's directory or relevant workspace; in monorepos, it may not be visible from the repository root. For example, run `node -p "require.resolve('turbo/package.json')"` from a workspace that depends on `turbo`. + +Read `docs/README.md` inside that installed package first, then read the relevant pages from its `docs/` directory before changing Turborepo configuration or commands. Heed deprecation notices. These bundled docs match the installed package version and are available without network access. + +This block is written and re-added by `turbo` before repository-scoped commands when an AI agent is detected. In the Turborepo source repository, its template is defined in `crates/turborepo-cli/src/cli/agent_guidance.rs`. Removing the managed block while updates are enabled means a later qualifying invocation will add it again. Set `"agentGuidance": false` in the root `turbo.json` or `turbo.jsonc` to opt out; this does not remove an existing block. Keep the block committed with your work to avoid an uncommitted change on the next agent invocation. + diff --git a/apps/desktop/package.json b/apps/desktop/package.json index f52bcfe37de..4c10754afc6 100644 --- a/apps/desktop/package.json +++ b/apps/desktop/package.json @@ -42,7 +42,7 @@ "@xterm/headless": "6.0.0", "electron-updater": "6.8.9", "micromatch": "4.0.8", - "safe-regex2": "5.1.0", + "safe-regex2": "5.1.2", "pdf-lib": "1.17.1" }, "devDependencies": { @@ -51,19 +51,19 @@ "@sim/emcn": "workspace:*", "@sim/tsconfig": "workspace:*", "@types/micromatch": "4.0.10", - "@types/node": "24.2.1", + "@types/node": "24.19.2", "@types/react": "^19", "@types/react-dom": "^19", "electron": "43.5.0", "electron-builder": "26.15.3", - "esbuild": "0.28.1", + "esbuild": "0.28.2", "jsdom": "^26.0.0", - "postcss": "^8", + "postcss": "^8.5.30", "postcss-load-config": "6.0.1", "postgres": "^3.4.5", "react": "19.2.4", "react-dom": "19.2.4", "typescript": "^7.0.2", - "vitest": "^5.0.1" + "vitest": "^5.0.4" } } diff --git a/apps/docs/package.json b/apps/docs/package.json index 87d61d75d13..32dc1dee5fc 100644 --- a/apps/docs/package.json +++ b/apps/docs/package.json @@ -27,9 +27,9 @@ "@sim/logger": "workspace:*", "@sim/utils": "workspace:*", "@sim/workflow-renderer": "workspace:*", - "@xyflow/react": "12.11.3", + "@xyflow/react": "12.12.0", "class-variance-authority": "^0.7.1", - "drizzle-orm": "^0.45.2", + "drizzle-orm": "^0.45.4", "fumadocs-core": "16.8.5", "fumadocs-mdx": "14.3.2", "fumadocs-openapi": "10.8.1", @@ -39,21 +39,22 @@ "react": "19.2.4", "react-dom": "19.2.4", "remark-breaks": "^4.0.0", - "shiki": "4.3.1", + "remark-gfm": "4.0.1", + "shiki": "4.5.0", + "streamdown": "2.5.0", "framer-motion": "^12.5.0", "zod": "4.3.6" }, "devDependencies": { "@sim/tsconfig": "workspace:*", - "@tailwindcss/postcss": "^4.0.12", - "@types/node": "24.2.1", - "@types/react": "^19.1.2", - "@types/react-dom": "^19.0.4", - "gray-matter": "^4.0.3", - "jsdom": "^26.0.0", - "postcss": "^8.5.3", - "tailwindcss": "^4.0.12", + "@tailwindcss/postcss": "^4.3.3", + "@types/node": "24.19.2", + "@types/react": "^19", + "@types/react-dom": "^19", + "gray-matter": "4.0.3", + "postcss": "^8.5.30", + "tailwindcss": "^4.3.3", "typescript": "^7.0.2", - "vitest": "^5.0.1" + "vitest": "^5.0.4" } } diff --git a/apps/realtime/package.json b/apps/realtime/package.json index daf582a42a7..4f3914782d2 100644 --- a/apps/realtime/package.json +++ b/apps/realtime/package.json @@ -32,21 +32,21 @@ "@sim/workflow-persistence": "workspace:*", "@sim/workflow-types": "workspace:*", "@socket.io/redis-adapter": "8.3.0", - "drizzle-orm": "^0.45.2", - "lib0": "0.2.117", + "drizzle-orm": "^0.45.4", + "lib0": "0.2.119", "postgres": "^3.4.5", "redis": "5.10.0", - "socket.io": "^4.8.1", + "socket.io": "^4.8.4", "y-protocols": "1.0.7", - "yjs": "13.6.31", + "yjs": "13.6.33", "zod": "4.3.6" }, "devDependencies": { "@sim/testing": "workspace:*", "@sim/tsconfig": "workspace:*", - "@types/node": "24.2.1", - "socket.io-client": "4.8.1", + "@types/node": "24.19.2", + "socket.io-client": "4.8.4", "typescript": "^7.0.2", - "vitest": "^5.0.1" + "vitest": "^5.0.4" } } diff --git a/apps/sim/lib/mcp/tool-validation.ts b/apps/sim/lib/mcp/tool-validation.ts index 0e91dfe7338..da491a6ba59 100644 --- a/apps/sim/lib/mcp/tool-validation.ts +++ b/apps/sim/lib/mcp/tool-validation.ts @@ -1,4 +1,5 @@ -import { isEqual, omit } from 'es-toolkit' +import { omit } from '@sim/utils/object' +import { isEqual } from 'es-toolkit' import type { McpToolSchema, StoredMcpToolReference } from '@/lib/mcp/types' export type McpToolIssueType = diff --git a/apps/sim/package.json b/apps/sim/package.json index 087d7db18f5..91217f557ba 100644 --- a/apps/sim/package.json +++ b/apps/sim/package.json @@ -43,54 +43,54 @@ "build:cli-runtime": "bun build ../../packages/sim-cli/src/runtime.ts --target=node --format=esm --packages=bundle --outfile=../../packages/sim-cli/dist/runtime.js" }, "dependencies": { - "@1password/sdk": "0.3.1", - "@a2a-js/sdk": "1.0.1", + "@1password/sdk": "0.5.0", + "@a2a-js/sdk": "1.3.0", "@anthropic-ai/sdk": "0.115.0", - "@aws-sdk/client-appconfig": "3.1117.0", - "@aws-sdk/client-appconfigdata": "3.1117.0", - "@aws-sdk/client-athena": "3.1117.0", - "@aws-sdk/client-bedrock-runtime": "3.1117.0", - "@aws-sdk/client-cloudformation": "3.1117.0", - "@aws-sdk/client-cloudtrail": "3.1117.0", - "@aws-sdk/client-cloudwatch": "3.1117.0", - "@aws-sdk/client-cloudwatch-logs": "3.1117.0", - "@aws-sdk/client-codepipeline": "3.1117.0", - "@aws-sdk/client-dynamodb": "3.1117.0", - "@aws-sdk/client-iam": "3.1117.0", - "@aws-sdk/client-identitystore": "3.1117.0", - "@aws-sdk/client-lambda": "3.1117.0", - "@aws-sdk/client-organizations": "3.1117.0", - "@aws-sdk/client-rds-data": "3.1117.0", - "@aws-sdk/client-s3": "3.1117.0", - "@aws-sdk/client-secrets-manager": "3.1117.0", - "@aws-sdk/client-sesv2": "3.1117.0", - "@aws-sdk/client-sqs": "3.1117.0", - "@aws-sdk/client-ssm": "3.1117.0", - "@aws-sdk/client-sso-admin": "3.1117.0", - "@aws-sdk/client-sts": "3.1117.0", - "@aws-sdk/client-textract": "3.1117.0", - "@aws-sdk/lib-dynamodb": "3.1117.0", - "@aws-sdk/s3-request-presigner": "3.1117.0", + "@aws-sdk/client-appconfig": "3.1150.0", + "@aws-sdk/client-appconfigdata": "3.1150.0", + "@aws-sdk/client-athena": "3.1150.0", + "@aws-sdk/client-bedrock-runtime": "3.1150.0", + "@aws-sdk/client-cloudformation": "3.1150.0", + "@aws-sdk/client-cloudtrail": "3.1150.0", + "@aws-sdk/client-cloudwatch": "3.1150.0", + "@aws-sdk/client-cloudwatch-logs": "3.1150.0", + "@aws-sdk/client-codepipeline": "3.1150.0", + "@aws-sdk/client-dynamodb": "3.1150.0", + "@aws-sdk/client-iam": "3.1150.0", + "@aws-sdk/client-identitystore": "3.1150.0", + "@aws-sdk/client-lambda": "3.1150.0", + "@aws-sdk/client-organizations": "3.1150.0", + "@aws-sdk/client-rds-data": "3.1150.0", + "@aws-sdk/client-s3": "3.1150.0", + "@aws-sdk/client-secrets-manager": "3.1150.0", + "@aws-sdk/client-sesv2": "3.1150.0", + "@aws-sdk/client-sqs": "3.1150.0", + "@aws-sdk/client-ssm": "3.1150.0", + "@aws-sdk/client-sso-admin": "3.1150.0", + "@aws-sdk/client-sts": "3.1150.0", + "@aws-sdk/client-textract": "3.1150.0", + "@aws-sdk/lib-dynamodb": "3.1150.0", + "@aws-sdk/s3-request-presigner": "3.1150.0", "@azure/communication-email": "1.1.0", "@azure/storage-blob": "12.27.0", "@better-auth/oauth-provider": "1.6.27", "@better-auth/sso": "1.6.27", "@better-auth/stripe": "1.6.27", - "@browserbasehq/stagehand": "^3.2.1", - "@c15t/nextjs": "2.2.1", - "@c15t/scripts": "2.2.0", + "@browserbasehq/stagehand": "^3.7.3", + "@c15t/nextjs": "2.3.0", + "@c15t/scripts": "2.3.0", "@calcom/embed-react": "1.5.3", - "@cerebras/cerebras_cloud_sdk": "^1.23.0", + "@cerebras/cerebras_cloud_sdk": "^1.91.0", "@daytona/sdk": "0.207.0", "@e2b/code-interpreter": "2.7.1", "@earendil-works/pi-ai": "1.0.0", "@earendil-works/pi-coding-agent": "1.0.0", "@floating-ui/dom": "1.7.6", - "@google-cloud/storage": "7.21.0", - "@google/genai": "2.13.0", - "@hookform/resolvers": "5.2.2", - "@linear/sdk": "91.0.0", - "@marsidev/react-turnstile": "1.4.2", + "@google-cloud/storage": "7.22.0", + "@google/genai": "2.28.0", + "@hookform/resolvers": "5.9.1", + "@linear/sdk": "97.1.0", + "@marsidev/react-turnstile": "1.6.2", "@modelcontextprotocol/sdk": "1.31.0", "@monaco-editor/react": "4.7.0", "@napi-rs/canvas": "0.1.100", @@ -106,20 +106,20 @@ "@opentelemetry/sdk-trace-base": "2.10.0", "@opentelemetry/sdk-trace-node": "2.10.0", "@opentelemetry/semantic-conventions": "^1.32.0", - "@radix-ui/react-avatar": "1.2.6", - "@radix-ui/react-checkbox": "1.3.11", - "@radix-ui/react-collapsible": "1.1.20", - "@radix-ui/react-dialog": "1.1.23", - "@radix-ui/react-dropdown-menu": "2.1.24", - "@radix-ui/react-label": "2.1.15", - "@radix-ui/react-popover": "1.1.23", - "@radix-ui/react-progress": "1.1.16", - "@radix-ui/react-radio-group": "1.4.7", - "@radix-ui/react-select": "2.3.7", - "@radix-ui/react-slider": "1.4.7", - "@radix-ui/react-slot": "1.3.3", - "@radix-ui/react-switch": "1.3.7", - "@radix-ui/react-tabs": "1.1.21", + "@radix-ui/react-avatar": "1.3.1", + "@radix-ui/react-checkbox": "1.4.1", + "@radix-ui/react-collapsible": "1.2.1", + "@radix-ui/react-dialog": "1.3.1", + "@radix-ui/react-dropdown-menu": "2.2.1", + "@radix-ui/react-label": "2.1.17", + "@radix-ui/react-popover": "1.3.1", + "@radix-ui/react-progress": "1.2.1", + "@radix-ui/react-radio-group": "1.5.1", + "@radix-ui/react-select": "2.4.1", + "@radix-ui/react-slider": "1.6.1", + "@radix-ui/react-slot": "1.5.0", + "@radix-ui/react-switch": "1.4.1", + "@radix-ui/react-tabs": "1.2.1", "@react-email/components": "1.0.12", "@react-email/render": "2.1.0", "@sim/audit": "workspace:*", @@ -139,7 +139,7 @@ "@sim/workflow-persistence": "workspace:*", "@sim/workflow-renderer": "workspace:*", "@sim/workflow-types": "workspace:*", - "@t3-oss/env-nextjs": "0.13.4", + "@t3-oss/env-nextjs": "0.13.11", "@tanstack/react-query": "5.90.8", "@tanstack/react-virtual": "3.13.24", "@tiptap/core": "3.30.5", @@ -168,80 +168,80 @@ "@xterm/addon-web-links": "0.12.0", "@xterm/addon-webgl": "0.19.0", "@xterm/xterm": "6.0.0", - "@xyflow/react": "12.11.3", - "ajv": "8.18.0", + "@xyflow/react": "12.12.0", + "ajv": "8.20.0", "archiver": "8.0.0", "better-auth": "1.6.27", "binary-extensions": "3.1.0", "browser-image-compression": "^2.0.2", "busboy": "1.6.0", - "c15t": "2.2.1", - "cheerio": "1.1.2", + "c15t": "2.3.0", + "cheerio": "1.2.0", "class-variance-authority": "^0.7.1", "cmdk": "^1.0.0", "croner": "^9.0.0", "cronstrue": "3.3.0", - "csv-parse": "7.0.2", - "date-fns": "4.1.0", + "csv-parse": "7.0.3", + "date-fns": "4.4.0", "decimal.js": "10.6.0", - "diff": "8.0.4", + "diff": "9.0.0", "docx": "^9.6.1", "docx-preview": "^0.3.7", - "drizzle-orm": "^0.45.2", + "drizzle-orm": "^0.45.4", "echarts": "6.1.0", - "es-toolkit": "1.45.1", + "es-toolkit": "1.52.0", "framer-motion": "^12.5.0", "github-slugger": "2.0.0", - "google-auth-library": "10.5.0", + "google-auth-library": "10.9.1", "gray-matter": "^4.0.3", - "groq-sdk": "^0.15.0", + "groq-sdk": "^1.6.0", "heic-convert": "2.1.0", "heic-decode": "2.1.0", "html-to-text": "^9.0.5", "htmlparser2": "10.1.0", "http-proxy-agent": "7.0.2", "https-proxy-agent": "7.0.6", - "idb-keyval": "6.2.2", - "imapflow": "1.7.6", - "input-otp": "^1.4.2", + "idb-keyval": "6.3.0", + "imapflow": "1.7.8", + "input-otp": "^1.5.0", "ioredis": "^5.6.0", "isolated-vm": "6.2.0", - "jose": "6.0.11", + "jose": "6.2.3", "js-tiktoken": "1.0.21", "js-yaml": "4.3.2", "jsdom": "^26.0.0", - "jszip": "3.10.1", - "lib0": "0.2.117", - "lru-cache": "11.3.6", - "mammoth": "1.12.3", + "jszip": "3.10.2", + "lib0": "0.2.119", + "lru-cache": "11.5.3", + "mammoth": "1.13.0", "marked": "18.0.11", "mermaid": "11.16.1", "micromatch": "4.0.8", "monaco-editor": "0.55.1", - "mongodb": "6.19.0", - "mssql": "12.7.0", - "mysql2": "3.24.2", + "mongodb": "6.21.0", + "mssql": "12.7.4", + "mysql2": "3.24.5", "neo4j-driver": "6.0.1", "next": "16.4.0", "next-mdx-remote": "^6.0.0", "next-themes": "^0.4.6", - "nodemailer": "10.0.10", - "nuqs": "2.8.9", + "nodemailer": "10.1.0", + "nuqs": "2.10.2", "officeparser": "5.2.2", - "openai": "7.0.0", + "openai": "7.32.0", "oracledb": "7.0.1", "opentype.js": "1.3.4", "pdf-lib": "1.17.1", "pdfjs-dist": "5.4.296", "postgres": "^3.4.5", - "posthog-js": "1.418.14", + "posthog-js": "1.438.9", "posthog-node": "5.28.9", "pptxgenjs": "4.0.1", "prismjs": "^1.30.0", "re2js": "2.8.6", "react": "19.2.4", "react-dom": "19.2.4", - "react-hook-form": "^7.54.2", + "react-hook-form": "^7.90.0", "react-pdf": "10.4.1", "react-simple-code-editor": "^0.14.1", "rehype-autolink-headings": "^7.1.0", @@ -250,26 +250,26 @@ "remark-gfm": "4.0.1", "remark-parse": "11.0.0", "remark-stringify": "11.0.0", - "resend": "^4.1.2", + "resend": "^6.32.1", "rss-parser": "3.13.0", "sharp": "0.35.5", "sim": "workspace:*", - "socket.io-client": "4.8.1", + "socket.io-client": "4.8.4", "ssh2": "^1.17.0", "streamdown": "2.5.0", "stripe": "18.5.0", - "svix": "1.99.1", - "tldts": "7.0.30", - "twilio": "5.9.0", - "typebox": "1.1.38", - "undici": "7.29.1", + "svix": "2.8.0", + "tldts": "7.4.18", + "twilio": "6.2.0", + "typebox": "1.3.27", + "undici": "7.30.0", "unified": "11.0.5", "word-extractor": "1.0.4", "xlsx": "https://cdn.sheetjs.com/xlsx-0.20.3/xlsx-0.20.3.tgz", "y-protocols": "1.0.7", - "yjs": "13.6.31", + "yjs": "13.6.33", "zod": "4.3.6", - "zustand": "^5.0.13" + "zustand": "^5.0.15" }, "devDependencies": { "@next/env": "16.4.0", @@ -278,12 +278,12 @@ "@sim/testing": "workspace:*", "@sim/tsconfig": "workspace:*", "@tailwindcss/postcss": "^4.3.3", - "@tailwindcss/typography": "0.5.19", - "@testing-library/jest-dom": "^6.6.3", + "@tailwindcss/typography": "0.5.20", + "@testing-library/jest-dom": "^6.10.0", "@trigger.dev/build": "4.5.16", "@types/archiver": "8.0.0", "@types/busboy": "1.5.4", - "@types/hast": "3.0.4", + "@types/hast": "3.0.5", "@types/heic-convert": "2.1.1", "@types/html-to-text": "9.0.4", "@types/js-yaml": "4.0.9", @@ -291,24 +291,24 @@ "@types/mdast": "4.0.4", "@types/micromatch": "4.0.10", "@types/mssql": "12.3.0", - "@types/node": "24.2.1", + "@types/node": "24.19.2", "@types/opentype.js": "1.3.10", "@types/prismjs": "^1.26.5", "@types/react": "^19", "@types/react-dom": "^19", - "@types/ssh2": "^1.15.5", - "@vitejs/plugin-react": "^6.0.5", - "@vitest/coverage-v8": "^5.0.1", - "@vitest/expect": "5.0.1", - "@vitest/spy": "5.0.1", + "@types/ssh2": "^1.15.6", + "@vitejs/plugin-react": "^6.1.2", + "@vitest/coverage-v8": "^5.0.4", + "@vitest/expect": "5.0.4", + "@vitest/spy": "5.0.4", "artillery": "2.0.34", "node-gyp": "12.4.0", - "postcss": "^8", + "postcss": "^8.5.30", "postcss-load-config": "6.0.1", - "react-email": "6.9.0", + "react-email": "6.11.1", "tailwindcss": "^4.3.3", "tw-animate-css": "^1.4.0", "typescript": "^7.0.2", - "vitest": "^5.0.1" + "vitest": "^5.0.4" } } diff --git a/bun.lock b/bun.lock index 7f0e555445e..a2fc0706b53 100644 --- a/bun.lock +++ b/bun.lock @@ -5,25 +5,25 @@ "": { "name": "simstudio", "devDependencies": { - "@babel/parser": "7.29.2", + "@babel/parser": "7.29.9", "@biomejs/biome": "2.0.6", "@mdx-js/mdx": "3.1.1", - "@octokit/rest": "^21.0.0", + "@octokit/rest": "^22.0.1", "@sim/utils": "workspace:*", "@types/mdast": "4.0.4", "@types/opentype.js": "1.3.10", "@typescript/native": "npm:typescript@^7.0.2", "@typescript/typescript6": "^6.0.2", "@vercel/og": "0.6.8", - "ajv": "8.18.0", + "ajv": "8.20.0", "commander": "^11.1.0", - "concurrently": "10.0.5", - "glob": "13.0.0", + "concurrently": "10.0.6", + "glob": "13.0.6", "gray-matter": "4.0.3", "husky": "9.1.7", "json-schema-to-typescript": "15.0.4", - "knip": "6.37.0", - "lint-staged": "16.0.0", + "knip": "6.41.0", + "lint-staged": "16.4.0", "opentype.js": "1.3.4", "pdf-lib": "1.17.1", "react": "19.2.4", @@ -33,7 +33,7 @@ "turbo": "2.9.14", "unified": "11.0.5", "unist-util-visit": "5.1.0", - "vitest": "^5.0.1", + "vitest": "^5.0.4", "zod": "4.3.6", }, "optionalDependencies": { @@ -60,7 +60,7 @@ "electron-updater": "6.8.9", "micromatch": "4.0.8", "pdf-lib": "1.17.1", - "safe-regex2": "5.1.0", + "safe-regex2": "5.1.2", }, "devDependencies": { "@electron/fuses": "1.8.0", @@ -68,20 +68,20 @@ "@sim/emcn": "workspace:*", "@sim/tsconfig": "workspace:*", "@types/micromatch": "4.0.10", - "@types/node": "24.2.1", + "@types/node": "24.19.2", "@types/react": "^19", "@types/react-dom": "^19", "electron": "43.5.0", "electron-builder": "26.15.3", - "esbuild": "0.28.1", + "esbuild": "0.28.2", "jsdom": "^26.0.0", - "postcss": "^8", + "postcss": "^8.5.30", "postcss-load-config": "6.0.1", "postgres": "^3.4.5", "react": "19.2.4", "react-dom": "19.2.4", "typescript": "^7.0.2", - "vitest": "^5.0.1", + "vitest": "^5.0.4", }, }, "apps/docs": { @@ -94,9 +94,9 @@ "@sim/logger": "workspace:*", "@sim/utils": "workspace:*", "@sim/workflow-renderer": "workspace:*", - "@xyflow/react": "12.11.3", + "@xyflow/react": "12.12.0", "class-variance-authority": "^0.7.1", - "drizzle-orm": "^0.45.2", + "drizzle-orm": "^0.45.4", "framer-motion": "^12.5.0", "fumadocs-core": "16.8.5", "fumadocs-mdx": "14.3.2", @@ -107,21 +107,22 @@ "react": "19.2.4", "react-dom": "19.2.4", "remark-breaks": "^4.0.0", - "shiki": "4.3.1", + "remark-gfm": "4.0.1", + "shiki": "4.5.0", + "streamdown": "2.5.0", "zod": "4.3.6", }, "devDependencies": { "@sim/tsconfig": "workspace:*", - "@tailwindcss/postcss": "^4.0.12", - "@types/node": "24.2.1", - "@types/react": "^19.1.2", - "@types/react-dom": "^19.0.4", - "gray-matter": "^4.0.3", - "jsdom": "^26.0.0", - "postcss": "^8.5.3", - "tailwindcss": "^4.0.12", + "@tailwindcss/postcss": "^4.3.3", + "@types/node": "24.19.2", + "@types/react": "^19", + "@types/react-dom": "^19", + "gray-matter": "4.0.3", + "postcss": "^8.5.30", + "tailwindcss": "^4.3.3", "typescript": "^7.0.2", - "vitest": "^5.0.1", + "vitest": "^5.0.4", }, }, "apps/pii": { @@ -144,76 +145,76 @@ "@sim/workflow-persistence": "workspace:*", "@sim/workflow-types": "workspace:*", "@socket.io/redis-adapter": "8.3.0", - "drizzle-orm": "^0.45.2", - "lib0": "0.2.117", + "drizzle-orm": "^0.45.4", + "lib0": "0.2.119", "postgres": "^3.4.5", "redis": "5.10.0", - "socket.io": "^4.8.1", + "socket.io": "^4.8.4", "y-protocols": "1.0.7", - "yjs": "13.6.31", + "yjs": "13.6.33", "zod": "4.3.6", }, "devDependencies": { "@sim/testing": "workspace:*", "@sim/tsconfig": "workspace:*", - "@types/node": "24.2.1", - "socket.io-client": "4.8.1", + "@types/node": "24.19.2", + "socket.io-client": "4.8.4", "typescript": "^7.0.2", - "vitest": "^5.0.1", + "vitest": "^5.0.4", }, }, "apps/sim": { "name": "@sim/app", "version": "0.1.0", "dependencies": { - "@1password/sdk": "0.3.1", - "@a2a-js/sdk": "1.0.1", + "@1password/sdk": "0.5.0", + "@a2a-js/sdk": "1.3.0", "@anthropic-ai/sdk": "0.115.0", - "@aws-sdk/client-appconfig": "3.1117.0", - "@aws-sdk/client-appconfigdata": "3.1117.0", - "@aws-sdk/client-athena": "3.1117.0", - "@aws-sdk/client-bedrock-runtime": "3.1117.0", - "@aws-sdk/client-cloudformation": "3.1117.0", - "@aws-sdk/client-cloudtrail": "3.1117.0", - "@aws-sdk/client-cloudwatch": "3.1117.0", - "@aws-sdk/client-cloudwatch-logs": "3.1117.0", - "@aws-sdk/client-codepipeline": "3.1117.0", - "@aws-sdk/client-dynamodb": "3.1117.0", - "@aws-sdk/client-iam": "3.1117.0", - "@aws-sdk/client-identitystore": "3.1117.0", - "@aws-sdk/client-lambda": "3.1117.0", - "@aws-sdk/client-organizations": "3.1117.0", - "@aws-sdk/client-rds-data": "3.1117.0", - "@aws-sdk/client-s3": "3.1117.0", - "@aws-sdk/client-secrets-manager": "3.1117.0", - "@aws-sdk/client-sesv2": "3.1117.0", - "@aws-sdk/client-sqs": "3.1117.0", - "@aws-sdk/client-ssm": "3.1117.0", - "@aws-sdk/client-sso-admin": "3.1117.0", - "@aws-sdk/client-sts": "3.1117.0", - "@aws-sdk/client-textract": "3.1117.0", - "@aws-sdk/lib-dynamodb": "3.1117.0", - "@aws-sdk/s3-request-presigner": "3.1117.0", + "@aws-sdk/client-appconfig": "3.1150.0", + "@aws-sdk/client-appconfigdata": "3.1150.0", + "@aws-sdk/client-athena": "3.1150.0", + "@aws-sdk/client-bedrock-runtime": "3.1150.0", + "@aws-sdk/client-cloudformation": "3.1150.0", + "@aws-sdk/client-cloudtrail": "3.1150.0", + "@aws-sdk/client-cloudwatch": "3.1150.0", + "@aws-sdk/client-cloudwatch-logs": "3.1150.0", + "@aws-sdk/client-codepipeline": "3.1150.0", + "@aws-sdk/client-dynamodb": "3.1150.0", + "@aws-sdk/client-iam": "3.1150.0", + "@aws-sdk/client-identitystore": "3.1150.0", + "@aws-sdk/client-lambda": "3.1150.0", + "@aws-sdk/client-organizations": "3.1150.0", + "@aws-sdk/client-rds-data": "3.1150.0", + "@aws-sdk/client-s3": "3.1150.0", + "@aws-sdk/client-secrets-manager": "3.1150.0", + "@aws-sdk/client-sesv2": "3.1150.0", + "@aws-sdk/client-sqs": "3.1150.0", + "@aws-sdk/client-ssm": "3.1150.0", + "@aws-sdk/client-sso-admin": "3.1150.0", + "@aws-sdk/client-sts": "3.1150.0", + "@aws-sdk/client-textract": "3.1150.0", + "@aws-sdk/lib-dynamodb": "3.1150.0", + "@aws-sdk/s3-request-presigner": "3.1150.0", "@azure/communication-email": "1.1.0", "@azure/storage-blob": "12.27.0", "@better-auth/oauth-provider": "1.6.27", "@better-auth/sso": "1.6.27", "@better-auth/stripe": "1.6.27", - "@browserbasehq/stagehand": "^3.2.1", - "@c15t/nextjs": "2.2.1", - "@c15t/scripts": "2.2.0", + "@browserbasehq/stagehand": "^3.7.3", + "@c15t/nextjs": "2.3.0", + "@c15t/scripts": "2.3.0", "@calcom/embed-react": "1.5.3", - "@cerebras/cerebras_cloud_sdk": "^1.23.0", + "@cerebras/cerebras_cloud_sdk": "^1.91.0", "@daytona/sdk": "0.207.0", "@e2b/code-interpreter": "2.7.1", "@earendil-works/pi-ai": "1.0.0", "@earendil-works/pi-coding-agent": "1.0.0", "@floating-ui/dom": "1.7.6", - "@google-cloud/storage": "7.21.0", - "@google/genai": "2.13.0", - "@hookform/resolvers": "5.2.2", - "@linear/sdk": "91.0.0", - "@marsidev/react-turnstile": "1.4.2", + "@google-cloud/storage": "7.22.0", + "@google/genai": "2.28.0", + "@hookform/resolvers": "5.9.1", + "@linear/sdk": "97.1.0", + "@marsidev/react-turnstile": "1.6.2", "@modelcontextprotocol/sdk": "1.31.0", "@monaco-editor/react": "4.7.0", "@napi-rs/canvas": "0.1.100", @@ -229,20 +230,20 @@ "@opentelemetry/sdk-trace-base": "2.10.0", "@opentelemetry/sdk-trace-node": "2.10.0", "@opentelemetry/semantic-conventions": "^1.32.0", - "@radix-ui/react-avatar": "1.2.6", - "@radix-ui/react-checkbox": "1.3.11", - "@radix-ui/react-collapsible": "1.1.20", - "@radix-ui/react-dialog": "1.1.23", - "@radix-ui/react-dropdown-menu": "2.1.24", - "@radix-ui/react-label": "2.1.15", - "@radix-ui/react-popover": "1.1.23", - "@radix-ui/react-progress": "1.1.16", - "@radix-ui/react-radio-group": "1.4.7", - "@radix-ui/react-select": "2.3.7", - "@radix-ui/react-slider": "1.4.7", - "@radix-ui/react-slot": "1.3.3", - "@radix-ui/react-switch": "1.3.7", - "@radix-ui/react-tabs": "1.1.21", + "@radix-ui/react-avatar": "1.3.1", + "@radix-ui/react-checkbox": "1.4.1", + "@radix-ui/react-collapsible": "1.2.1", + "@radix-ui/react-dialog": "1.3.1", + "@radix-ui/react-dropdown-menu": "2.2.1", + "@radix-ui/react-label": "2.1.17", + "@radix-ui/react-popover": "1.3.1", + "@radix-ui/react-progress": "1.2.1", + "@radix-ui/react-radio-group": "1.5.1", + "@radix-ui/react-select": "2.4.1", + "@radix-ui/react-slider": "1.6.1", + "@radix-ui/react-slot": "1.5.0", + "@radix-ui/react-switch": "1.4.1", + "@radix-ui/react-tabs": "1.2.1", "@react-email/components": "1.0.12", "@react-email/render": "2.1.0", "@sim/audit": "workspace:*", @@ -262,7 +263,7 @@ "@sim/workflow-persistence": "workspace:*", "@sim/workflow-renderer": "workspace:*", "@sim/workflow-types": "workspace:*", - "@t3-oss/env-nextjs": "0.13.4", + "@t3-oss/env-nextjs": "0.13.11", "@tanstack/react-query": "5.90.8", "@tanstack/react-virtual": "3.13.24", "@tiptap/core": "3.30.5", @@ -291,80 +292,80 @@ "@xterm/addon-web-links": "0.12.0", "@xterm/addon-webgl": "0.19.0", "@xterm/xterm": "6.0.0", - "@xyflow/react": "12.11.3", - "ajv": "8.18.0", + "@xyflow/react": "12.12.0", + "ajv": "8.20.0", "archiver": "8.0.0", "better-auth": "1.6.27", "binary-extensions": "3.1.0", "browser-image-compression": "^2.0.2", "busboy": "1.6.0", - "c15t": "2.2.1", - "cheerio": "1.1.2", + "c15t": "2.3.0", + "cheerio": "1.2.0", "class-variance-authority": "^0.7.1", "cmdk": "^1.0.0", "croner": "^9.0.0", "cronstrue": "3.3.0", - "csv-parse": "7.0.2", - "date-fns": "4.1.0", + "csv-parse": "7.0.3", + "date-fns": "4.4.0", "decimal.js": "10.6.0", - "diff": "8.0.4", + "diff": "9.0.0", "docx": "^9.6.1", "docx-preview": "^0.3.7", - "drizzle-orm": "^0.45.2", + "drizzle-orm": "^0.45.4", "echarts": "6.1.0", - "es-toolkit": "1.45.1", + "es-toolkit": "1.52.0", "framer-motion": "^12.5.0", "github-slugger": "2.0.0", - "google-auth-library": "10.5.0", + "google-auth-library": "10.9.1", "gray-matter": "^4.0.3", - "groq-sdk": "^0.15.0", + "groq-sdk": "^1.6.0", "heic-convert": "2.1.0", "heic-decode": "2.1.0", "html-to-text": "^9.0.5", "htmlparser2": "10.1.0", "http-proxy-agent": "7.0.2", "https-proxy-agent": "7.0.6", - "idb-keyval": "6.2.2", - "imapflow": "1.7.6", - "input-otp": "^1.4.2", + "idb-keyval": "6.3.0", + "imapflow": "1.7.8", + "input-otp": "^1.5.0", "ioredis": "^5.6.0", "isolated-vm": "6.2.0", - "jose": "6.0.11", + "jose": "6.2.3", "js-tiktoken": "1.0.21", "js-yaml": "4.3.2", "jsdom": "^26.0.0", - "jszip": "3.10.1", - "lib0": "0.2.117", - "lru-cache": "11.3.6", - "mammoth": "1.12.3", + "jszip": "3.10.2", + "lib0": "0.2.119", + "lru-cache": "11.5.3", + "mammoth": "1.13.0", "marked": "18.0.11", "mermaid": "11.16.1", "micromatch": "4.0.8", "monaco-editor": "0.55.1", - "mongodb": "6.19.0", - "mssql": "12.7.0", - "mysql2": "3.24.2", + "mongodb": "6.21.0", + "mssql": "12.7.4", + "mysql2": "3.24.5", "neo4j-driver": "6.0.1", "next": "16.4.0", "next-mdx-remote": "^6.0.0", "next-themes": "^0.4.6", - "nodemailer": "10.0.10", - "nuqs": "2.8.9", + "nodemailer": "10.1.0", + "nuqs": "2.10.2", "officeparser": "5.2.2", - "openai": "7.0.0", + "openai": "7.32.0", "opentype.js": "1.3.4", "oracledb": "7.0.1", "pdf-lib": "1.17.1", "pdfjs-dist": "5.4.296", "postgres": "^3.4.5", - "posthog-js": "1.418.14", + "posthog-js": "1.438.9", "posthog-node": "5.28.9", "pptxgenjs": "4.0.1", "prismjs": "^1.30.0", "re2js": "2.8.6", "react": "19.2.4", "react-dom": "19.2.4", - "react-hook-form": "^7.54.2", + "react-hook-form": "^7.90.0", "react-pdf": "10.4.1", "react-simple-code-editor": "^0.14.1", "rehype-autolink-headings": "^7.1.0", @@ -373,26 +374,26 @@ "remark-gfm": "4.0.1", "remark-parse": "11.0.0", "remark-stringify": "11.0.0", - "resend": "^4.1.2", + "resend": "^6.32.1", "rss-parser": "3.13.0", "sharp": "0.35.5", "sim": "workspace:*", - "socket.io-client": "4.8.1", + "socket.io-client": "4.8.4", "ssh2": "^1.17.0", "streamdown": "2.5.0", "stripe": "18.5.0", - "svix": "1.99.1", - "tldts": "7.0.30", - "twilio": "5.9.0", - "typebox": "1.1.38", - "undici": "7.29.1", + "svix": "2.8.0", + "tldts": "7.4.18", + "twilio": "6.2.0", + "typebox": "1.3.27", + "undici": "7.30.0", "unified": "11.0.5", "word-extractor": "1.0.4", "xlsx": "https://cdn.sheetjs.com/xlsx-0.20.3/xlsx-0.20.3.tgz", "y-protocols": "1.0.7", - "yjs": "13.6.31", + "yjs": "13.6.33", "zod": "4.3.6", - "zustand": "^5.0.13", + "zustand": "^5.0.15", }, "devDependencies": { "@next/env": "16.4.0", @@ -401,12 +402,12 @@ "@sim/testing": "workspace:*", "@sim/tsconfig": "workspace:*", "@tailwindcss/postcss": "^4.3.3", - "@tailwindcss/typography": "0.5.19", - "@testing-library/jest-dom": "^6.6.3", + "@tailwindcss/typography": "0.5.20", + "@testing-library/jest-dom": "^6.10.0", "@trigger.dev/build": "4.5.16", "@types/archiver": "8.0.0", "@types/busboy": "1.5.4", - "@types/hast": "3.0.4", + "@types/hast": "3.0.5", "@types/heic-convert": "2.1.1", "@types/html-to-text": "9.0.4", "@types/js-yaml": "4.0.9", @@ -414,25 +415,25 @@ "@types/mdast": "4.0.4", "@types/micromatch": "4.0.10", "@types/mssql": "12.3.0", - "@types/node": "24.2.1", + "@types/node": "24.19.2", "@types/opentype.js": "1.3.10", "@types/prismjs": "^1.26.5", "@types/react": "^19", "@types/react-dom": "^19", - "@types/ssh2": "^1.15.5", - "@vitejs/plugin-react": "^6.0.5", - "@vitest/coverage-v8": "^5.0.1", - "@vitest/expect": "5.0.1", - "@vitest/spy": "5.0.1", + "@types/ssh2": "^1.15.6", + "@vitejs/plugin-react": "^6.1.2", + "@vitest/coverage-v8": "^5.0.4", + "@vitest/expect": "5.0.4", + "@vitest/spy": "5.0.4", "artillery": "2.0.34", "node-gyp": "12.4.0", - "postcss": "^8", + "postcss": "^8.5.30", "postcss-load-config": "6.0.1", - "react-email": "6.9.0", + "react-email": "6.11.1", "tailwindcss": "^4.3.3", "tw-animate-css": "^1.4.0", "typescript": "^7.0.2", - "vitest": "^5.0.1", + "vitest": "^5.0.4", }, }, "packages/audit": { @@ -443,14 +444,14 @@ "@sim/logger": "workspace:*", "@sim/security": "workspace:*", "@sim/utils": "workspace:*", - "drizzle-orm": "^0.45.2", + "drizzle-orm": "^0.45.4", }, "devDependencies": { "@sim/testing": "workspace:*", "@sim/tsconfig": "workspace:*", - "@types/node": "24.2.1", + "@types/node": "24.19.2", "typescript": "^7.0.2", - "vitest": "^5.0.1", + "vitest": "^5.0.4", }, }, "packages/auth": { @@ -462,7 +463,7 @@ }, "devDependencies": { "@sim/tsconfig": "workspace:*", - "@types/node": "24.2.1", + "@types/node": "24.19.2", "typescript": "^7.0.2", }, }, @@ -471,7 +472,7 @@ "version": "0.1.0", "devDependencies": { "@sim/tsconfig": "workspace:*", - "@types/node": "24.2.1", + "@types/node": "24.19.2", "typescript": "^7.0.2", }, }, @@ -487,7 +488,7 @@ }, "devDependencies": { "@sim/tsconfig": "workspace:*", - "@types/node": "24.2.1", + "@types/node": "24.19.2", "typescript": "^7.0.2", }, }, @@ -497,16 +498,16 @@ "dependencies": { "@sim/logger": "workspace:*", "@sim/utils": "workspace:*", - "drizzle-orm": "^0.45.2", + "drizzle-orm": "^0.45.4", "postgres": "^3.4.5", }, "devDependencies": { "@sim/tsconfig": "workspace:*", - "@types/bun": "1.4.1", - "@types/node": "24.2.1", + "@types/bun": "1.4.3", + "@types/node": "24.19.2", "drizzle-kit": "0.31.10", "typescript": "^7.0.2", - "vitest": "^5.0.1", + "vitest": "^5.0.4", }, }, "packages/deployment-config": { @@ -534,7 +535,7 @@ "@sim/tsconfig": "workspace:*", "@types/micromatch": "4.0.10", "typescript": "^7.0.2", - "vitest": "^5.0.1", + "vitest": "^5.0.4", }, }, "packages/emcn": { @@ -543,56 +544,56 @@ "dependencies": { "@sim/utils": "workspace:*", "clsx": "^2.1.1", - "tailwind-merge": "3.6.0", + "tailwind-merge": "3.7.0", "zod": "4.3.6", }, "devDependencies": { - "@radix-ui/react-avatar": "1.1.10", - "@radix-ui/react-checkbox": "^1.1.3", - "@radix-ui/react-collapsible": "^1.1.3", - "@radix-ui/react-dialog": "^1.1.5", - "@radix-ui/react-dismissable-layer": "1.1.19", - "@radix-ui/react-dropdown-menu": "^2.1.17", - "@radix-ui/react-label": "^2.1.2", - "@radix-ui/react-popover": "^1.1.5", - "@radix-ui/react-radio-group": "1.4.7", - "@radix-ui/react-slider": "^1.2.2", - "@radix-ui/react-slot": "1.2.2", - "@radix-ui/react-switch": "^1.1.2", - "@radix-ui/react-tabs": "^1.1.2", + "@radix-ui/react-avatar": "1.3.1", + "@radix-ui/react-checkbox": "1.4.1", + "@radix-ui/react-collapsible": "1.2.1", + "@radix-ui/react-dialog": "1.3.1", + "@radix-ui/react-dismissable-layer": "1.2.1", + "@radix-ui/react-dropdown-menu": "2.2.1", + "@radix-ui/react-label": "2.1.17", + "@radix-ui/react-popover": "1.3.1", + "@radix-ui/react-radio-group": "1.5.1", + "@radix-ui/react-slider": "1.6.1", + "@radix-ui/react-slot": "1.5.0", + "@radix-ui/react-switch": "1.4.1", + "@radix-ui/react-tabs": "1.2.1", "@sim/tsconfig": "workspace:*", "@tanstack/react-virtual": "3.13.24", "@types/prismjs": "^1.26.5", "@types/react": "^19", "@types/react-dom": "^19", - "class-variance-authority": "^0.7.1", + "class-variance-authority": "0.7.1", "framer-motion": "^12.5.0", - "input-otp": "^1.4.2", + "input-otp": "1.5.0", "next": "16.4.0", "prismjs": "^1.30.0", "react": "19.2.4", "react-dom": "19.2.4", "typescript": "^7.0.2", - "vitest": "^5.0.1", + "vitest": "^5.0.4", }, "peerDependencies": { "@radix-ui/react-avatar": "^1.1.10", - "@radix-ui/react-checkbox": "^1.1.3", - "@radix-ui/react-collapsible": "^1.1.3", - "@radix-ui/react-dialog": "^1.1.5", - "@radix-ui/react-dismissable-layer": "1.1.19", - "@radix-ui/react-dropdown-menu": "^2.1.17", - "@radix-ui/react-label": "^2.1.2", - "@radix-ui/react-popover": "^1.1.5", + "@radix-ui/react-checkbox": "^1.4.1", + "@radix-ui/react-collapsible": "^1.2.1", + "@radix-ui/react-dialog": "^1.3.1", + "@radix-ui/react-dismissable-layer": "1.2.1", + "@radix-ui/react-dropdown-menu": "^2.2.1", + "@radix-ui/react-label": "^2.1.17", + "@radix-ui/react-popover": "^1.3.1", "@radix-ui/react-radio-group": "^1.4.7", - "@radix-ui/react-slider": "^1.2.2", + "@radix-ui/react-slider": "^1.6.1", "@radix-ui/react-slot": "^1.2.2", - "@radix-ui/react-switch": "^1.1.2", - "@radix-ui/react-tabs": "^1.1.2", + "@radix-ui/react-switch": "^1.4.1", + "@radix-ui/react-tabs": "^1.2.1", "@tanstack/react-virtual": "^3.13.24", "class-variance-authority": "^0.7.1", "framer-motion": "^12.5.0", - "input-otp": "^1.4.2", + "input-otp": "^1.5.0", "next": ">=15", "prismjs": "^1.30.0", "react": "^19", @@ -609,9 +610,9 @@ }, "devDependencies": { "@sim/tsconfig": "workspace:*", - "@types/node": "24.2.1", + "@types/node": "24.19.2", "typescript": "^7.0.2", - "vitest": "^5.0.1", + "vitest": "^5.0.4", }, }, "packages/platform-authz": { @@ -620,11 +621,11 @@ "dependencies": { "@sim/db": "workspace:*", "@sim/realtime-protocol": "workspace:*", - "drizzle-orm": "^0.45.2", + "drizzle-orm": "^0.45.4", }, "devDependencies": { "@sim/tsconfig": "workspace:*", - "@types/node": "24.2.1", + "@types/node": "24.19.2", "typescript": "^7.0.2", }, }, @@ -637,22 +638,22 @@ "devDependencies": { "@sim/tsconfig": "workspace:*", "typescript": "^7.0.2", - "vitest": "^5.0.1", + "vitest": "^5.0.4", }, }, "packages/runtime-secrets": { "name": "@sim/runtime-secrets", "version": "0.1.0", "dependencies": { - "@aws-sdk/client-secrets-manager": "3.1117.0", + "@aws-sdk/client-secrets-manager": "3.1150.0", "@sim/logger": "workspace:*", "@sim/utils": "workspace:*", }, "devDependencies": { "@sim/tsconfig": "workspace:*", - "@types/node": "24.2.1", + "@types/node": "24.19.2", "typescript": "^7.0.2", - "vitest": "^5.0.1", + "vitest": "^5.0.4", }, }, "packages/security": { @@ -663,9 +664,9 @@ }, "devDependencies": { "@sim/tsconfig": "workspace:*", - "@types/node": "24.2.1", + "@types/node": "24.19.2", "typescript": "^7.0.2", - "vitest": "^5.0.1", + "vitest": "^5.0.4", }, }, "packages/sim-cli": { @@ -685,10 +686,10 @@ "@sim/tsconfig": "workspace:*", "@sim/utils": "workspace:*", "@types/js-yaml": "4.0.9", - "@types/node": "24.2.1", + "@types/node": "24.19.2", "@types/proper-lockfile": "4.1.4", "typescript": "^7.0.2", - "vitest": "^5.0.1", + "vitest": "^5.0.4", }, }, "packages/sim-setup": { @@ -704,11 +705,11 @@ "@sim/security": "workspace:*", "@sim/tsconfig": "workspace:*", "@sim/utils": "workspace:*", - "@types/node": "24.2.1", + "@types/node": "24.19.2", "chalk": "5.6.2", "postgres": "^3.4.5", "typescript": "^7.0.2", - "vitest": "^5.0.1", + "vitest": "^5.0.4", }, }, "packages/terminal-protocol": { @@ -719,9 +720,9 @@ }, "devDependencies": { "@sim/tsconfig": "workspace:*", - "@types/node": "24.2.1", + "@types/node": "24.19.2", "typescript": "^7.0.2", - "vitest": "^5.0.1", + "vitest": "^5.0.4", }, }, "packages/testing": { @@ -736,12 +737,12 @@ "next": "16.4.0", "stripe": "18.5.0", "typescript": "^7.0.2", - "vitest": "^5.0.1", + "vitest": "^5.0.4", }, "peerDependencies": { "next": ">=15 <17", "stripe": ">=18 <19", - "vitest": "^5.0.1", + "vitest": "^5.0.4", }, "optionalPeers": [ "stripe", @@ -752,9 +753,9 @@ "version": "0.2.1", "devDependencies": { "@sim/tsconfig": "workspace:*", - "@types/node": "24.2.1", + "@types/node": "24.19.2", "typescript": "^7.0.2", - "vitest": "^5.0.1", + "vitest": "^5.0.4", }, }, "packages/tsconfig": { @@ -767,7 +768,7 @@ "devDependencies": { "@sim/tsconfig": "workspace:*", "typescript": "^7.0.2", - "vitest": "^5.0.1", + "vitest": "^5.0.4", }, }, "packages/workflow-persistence": { @@ -778,14 +779,14 @@ "@sim/logger": "workspace:*", "@sim/utils": "workspace:*", "@sim/workflow-types": "workspace:*", - "@xyflow/react": "12.11.3", - "drizzle-orm": "^0.45.2", + "@xyflow/react": "12.12.0", + "drizzle-orm": "^0.45.4", }, "devDependencies": { "@sim/tsconfig": "workspace:*", - "@types/node": "24.2.1", + "@types/node": "24.19.2", "typescript": "^7.0.2", - "vitest": "^5.0.1", + "vitest": "^5.0.4", }, }, "packages/workflow-renderer": { @@ -796,11 +797,11 @@ "@sim/tsconfig": "workspace:*", "@sim/utils": "workspace:*", "@sim/workflow-types": "workspace:*", - "@testing-library/jest-dom": "^6.6.3", - "@types/hast": "^3.0.4", + "@testing-library/jest-dom": "^6.10.0", + "@types/hast": "3.0.5", "@types/react": "^19", "@types/react-dom": "^19", - "@xyflow/react": "12.11.3", + "@xyflow/react": "12.12.0", "jsdom": "^26.0.0", "react": "19.2.4", "react-dom": "19.2.4", @@ -808,7 +809,7 @@ "remark-gfm": "^4.0.1", "streamdown": "2.5.0", "typescript": "^7.0.2", - "vitest": "^5.0.1", + "vitest": "^5.0.4", }, "peerDependencies": { "@sim/emcn": "workspace:*", @@ -826,7 +827,7 @@ "version": "0.1.0", "devDependencies": { "@sim/tsconfig": "workspace:*", - "@xyflow/react": "12.11.3", + "@xyflow/react": "12.12.0", "typescript": "^7.0.2", }, "peerDependencies": { @@ -849,35 +850,35 @@ "overrides": { "@hono/node-server": "1.19.15", "@next/env": "16.4.0", - "brace-expansion": "5.0.9", + "brace-expansion": "5.0.12", "deepmerge-ts": "8.0.0", - "dompurify": "3.4.13", - "drizzle-orm": "^0.45.2", + "dompurify": "3.4.17", + "drizzle-orm": "^0.45.4", "e2b": "2.50.0", - "engine.io": "6.6.8", - "fast-uri": "3.1.5", - "hono": "4.12.34", - "ip-address": "10.5.0", + "engine.io": "6.6.11", + "fast-uri": "3.1.8", + "hono": "4.13.13", + "ip-address": "10.7.4", "marked": "18.0.11", "mermaid": "11.16.1", - "minimatch": "^10.2.5", + "minimatch": "10.2.6", "next": "16.4.0", - "postcss": "8.5.26", - "postgres": "^3.4.5", + "postcss": "8.5.30", + "postgres": "3.4.9", "protobufjs": "7.6.5", "react": "19.2.4", "react-dom": "19.2.4", - "socket.io": "4.8.3", + "socket.io": "4.8.4", "socket.io-parser": "4.2.7", "ws": "8.21.3", "zod": "4.3.6", }, "packages": { - "@1password/sdk": ["@1password/sdk@0.3.1", "", { "dependencies": { "@1password/sdk-core": "0.3.1" } }, "sha512-20zbQfqsjcECT0gvnAw4zONJDt3XQgNH946pZR0NV1Qxukyaz/DKB0cBnBNCCEWZg93Bah8poaR6gJCyuNX14w=="], + "@1password/sdk": ["@1password/sdk@0.5.0", "", { "dependencies": { "@1password/sdk-core": "0.5.0" } }, "sha512-k6kov3pcA7PRg2tev9CgTfEf/3JSyAp11BPQNCEsqAD32QbqM032OXC1rfjyC8Ba0sfH+NHYZxcifUZToyGyYA=="], - "@1password/sdk-core": ["@1password/sdk-core@0.3.1", "", {}, "sha512-zFkbRznmE47kpke10OpO/9R0AF5csNWS+naFbadgXuFX1LlxY+2C28NSKbCXhLTqmcuWifBfPdZQ728GJ1i5xg=="], + "@1password/sdk-core": ["@1password/sdk-core@0.5.0", "", {}, "sha512-9g7LWOKRKdePZ85evVgE9xEom3DAg3hRIyQdOwLPvpL/F7KpDXmUHMi72rsqJxKaDbWApXmrYjDExMSPqUg7xw=="], - "@a2a-js/sdk": ["@a2a-js/sdk@1.0.1", "", { "dependencies": { "jose": "^6.2.3", "uuid": "^11.1.0" }, "peerDependencies": { "@bufbuild/protobuf": "^2.10.2", "@grpc/grpc-js": "^1.11.0", "express": "^4.21.2 || ^5.1.0" }, "optionalPeers": ["@bufbuild/protobuf", "@grpc/grpc-js", "express"] }, "sha512-CJQdh3Wzwo8qIx5UUkSJ7+7BEI16PB+MXMHHNSmx8JQsQed2HlQgvx1ENOiKUfYA3PlcEvxIwv14dBblhDuPmw=="], + "@a2a-js/sdk": ["@a2a-js/sdk@1.3.0", "", { "dependencies": { "jose": "^6.2.3" }, "peerDependencies": { "@bufbuild/protobuf": "^2.10.2", "@grpc/grpc-js": "^1.11.0", "better-sqlite3": "^12.0.0 || ^13.0.0", "express": "^4.21.2 || ^5.1.0", "kysely": "^0.28.17 || ^0.29.0", "mysql2": "^3.0.0", "pg": "^8.0.0" }, "optionalPeers": ["@bufbuild/protobuf", "@grpc/grpc-js", "better-sqlite3", "express", "kysely", "mysql2", "pg"], "bin": { "a2a-db": "dist/cli/a2a_db.js" } }, "sha512-OpK4nygUnLKlpTFZlM2IrYu7f3c/B7c4u4Z14+vgMq24lEINTVCxH/BqZx+GL92rNf7CoBL5oTP5UhNsl75yyg=="], "@adobe/css-tools": ["@adobe/css-tools@4.5.0", "", {}, "sha512-6OzddxPio9UiWTCemp4N8cYLV2ZN1ncRnV1cVGtve7dhPOtRkleRyx32GQCYSwDYgaHU3USMm84tNsvKzRCa1Q=="], @@ -923,10 +924,6 @@ "@apidevtools/json-schema-ref-parser": ["@apidevtools/json-schema-ref-parser@11.9.3", "", { "dependencies": { "@jsdevtools/ono": "^7.1.3", "@types/json-schema": "^7.0.15", "js-yaml": "^4.1.0" } }, "sha512-60vepv88RwcJtSHrD6MjIL6Ta3SOYbgfnkHb+ppAVK+o9mXprRtulx7VlRl3lN3bbvysAfCS7WMVfhUYemB0IQ=="], - "@ark/schema": ["@ark/schema@0.56.0", "", { "dependencies": { "@ark/util": "0.56.0" } }, "sha512-ECg3hox/6Z/nLajxXqNhgPtNdHWC9zNsDyskwO28WinoFEnWow4IsERNz9AnXRhTZJnYIlAJ4uGn3nlLk65vZA=="], - - "@ark/util": ["@ark/util@0.56.0", "", {}, "sha512-BghfRC8b9pNs3vBoDJhcta0/c1J1rsoS1+HgVUreMFPdhz/CRAKReAu57YEllNaSy98rWAdY1gE+gFup7OXpgA=="], - "@artilleryio/sketches-js": ["@artilleryio/sketches-js@2.1.1", "", {}, "sha512-H3D50vDb37E3NGYXY0eUFAm5++moElaqoAu0MWYZhgzaA3IT2E67bRCL8U4LKHuVf/MgDZk14uawIjc4WVjOUQ=="], "@asamuzakjp/css-color": ["@asamuzakjp/css-color@3.2.0", "", { "dependencies": { "@csstools/css-calc": "^2.1.3", "@csstools/css-color-parser": "^3.0.9", "@csstools/css-parser-algorithms": "^3.0.4", "@csstools/css-tokenizer": "^3.0.3", "lru-cache": "^10.4.3" } }, "sha512-K1A6z8tS3XsmCMM86xoWdn7Fkdn9m6RSVtocUrJYIwZnFVkng/PvkEoWtOWmP+Scc6saYWHWZYbndEEXxl24jw=="], @@ -937,59 +934,59 @@ "@aws-crypto/util": ["@aws-crypto/util@5.2.0", "", { "dependencies": { "@aws-sdk/types": "^3.222.0", "@smithy/util-utf8": "^2.0.0", "tslib": "^2.6.2" } }, "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ=="], - "@aws-sdk/checksums": ["@aws-sdk/checksums@3.1000.29", "", { "dependencies": { "@aws-sdk/core": "^3.977.9", "@aws-sdk/types": "^3.974.5", "@smithy/core": "^3.33.3", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-Dtu0gr4dnATZAPwEYbpCsG+MpLM7OAliy2gTepEFQwl1vZ6DL3QMH2FveMa3HLvPsOdhJsPRB3KtxVhph9T75A=="], + "@aws-sdk/checksums": ["@aws-sdk/checksums@3.1001.3", "", { "dependencies": { "@aws-sdk/core": "^3.978.3", "@aws-sdk/types": "^3.974.6", "@smithy/core": "^3.35.2", "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-CcAkVyEUKGngbEqJdVdSc53Iy52+XzVL5NIcTen2BlK8UByNC1DThVtf5VKSrNzyA+SqyTvs+3S+knVBbOUizQ=="], - "@aws-sdk/client-appconfig": ["@aws-sdk/client-appconfig@3.1117.0", "", { "dependencies": { "@aws-sdk/core": "^3.977.9", "@aws-sdk/credential-provider-node": "^3.972.81", "@aws-sdk/types": "^3.974.5", "@smithy/core": "^3.33.3", "@smithy/fetch-http-handler": "^5.7.2", "@smithy/node-http-handler": "^4.11.3", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-AArGDzHJug1rtG8CJO/2W+zTLmCvXkqWP3/ZnprHOwS8A54Qnyrdm7kU9pfn71QWmG9k3/W3jCBb69ho81gC6g=="], + "@aws-sdk/client-appconfig": ["@aws-sdk/client-appconfig@3.1150.0", "", { "dependencies": { "@aws-sdk/core": "^3.978.3", "@aws-sdk/credential-provider-node": "^3.972.86", "@aws-sdk/types": "^3.974.6", "@smithy/core": "^3.35.2", "@smithy/fetch-http-handler": "^5.8.0", "@smithy/node-http-handler": "^4.12.1", "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-ERf8lwR9f+d9l70ywU9HFSsmdtwS1he2Bs7DnTN9MuAm6x45U3Pbjd9PGVx+cQYmPOIyKd8Y3IIpsWhdsTi+nQ=="], - "@aws-sdk/client-appconfigdata": ["@aws-sdk/client-appconfigdata@3.1117.0", "", { "dependencies": { "@aws-sdk/core": "^3.977.9", "@aws-sdk/credential-provider-node": "^3.972.81", "@aws-sdk/types": "^3.974.5", "@smithy/core": "^3.33.3", "@smithy/fetch-http-handler": "^5.7.2", "@smithy/node-http-handler": "^4.11.3", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-vzq6dNihKRMx88ADNhJhKnze+uUppF/32u21UyU5j16hCQHj544E8nlILXwoRtEWIiDixLavRWxLdF7P3vZquQ=="], + "@aws-sdk/client-appconfigdata": ["@aws-sdk/client-appconfigdata@3.1150.0", "", { "dependencies": { "@aws-sdk/core": "^3.978.3", "@aws-sdk/credential-provider-node": "^3.972.86", "@aws-sdk/types": "^3.974.6", "@smithy/core": "^3.35.2", "@smithy/fetch-http-handler": "^5.8.0", "@smithy/node-http-handler": "^4.12.1", "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-Dep00MiYZDLQ6qQZfF5dScspVIB+xRaFa7obnCBSMwYaKNhvvB/J1crmvAcy5RGASIwigIfHCnf+prDl4Zthnw=="], - "@aws-sdk/client-athena": ["@aws-sdk/client-athena@3.1117.0", "", { "dependencies": { "@aws-sdk/core": "^3.977.9", "@aws-sdk/credential-provider-node": "^3.972.81", "@aws-sdk/types": "^3.974.5", "@smithy/core": "^3.33.3", "@smithy/fetch-http-handler": "^5.7.2", "@smithy/node-http-handler": "^4.11.3", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-QFkEp9rUd0V3fPRspujnC1lj1Dww4FuPEwTF1rB3HYqrN8D6IeJALmBD8TJ6RaYYGoeA81/EPkBkjARZgCwCQw=="], + "@aws-sdk/client-athena": ["@aws-sdk/client-athena@3.1150.0", "", { "dependencies": { "@aws-sdk/core": "^3.978.3", "@aws-sdk/credential-provider-node": "^3.972.86", "@aws-sdk/types": "^3.974.6", "@smithy/core": "^3.35.2", "@smithy/fetch-http-handler": "^5.8.0", "@smithy/node-http-handler": "^4.12.1", "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-uFVIRXWT4C63kLdxaQDKW79Basg7Swc/HX7HJQbcOTA5VpFSS9wURDlqZzmV0eW8dJnlQEzEIHqeEl7EOT1j5A=="], - "@aws-sdk/client-bedrock-runtime": ["@aws-sdk/client-bedrock-runtime@3.1117.0", "", { "dependencies": { "@aws-sdk/core": "^3.977.9", "@aws-sdk/credential-provider-node": "^3.972.81", "@aws-sdk/eventstream-handler-node": "^3.972.34", "@aws-sdk/middleware-eventstream": "^3.972.29", "@aws-sdk/middleware-websocket": "^3.972.52", "@aws-sdk/token-providers": "3.1117.0", "@aws-sdk/types": "^3.974.5", "@smithy/core": "^3.33.3", "@smithy/fetch-http-handler": "^5.7.2", "@smithy/node-http-handler": "^4.11.3", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-rUc58ZS5GgsvzfM265XsrNno35dsRIwQb0aDfJIZbJyn1VGP+6XVL5Pwm8Rg9uABQSdKpdTayu5R3ZuDlFfIHg=="], + "@aws-sdk/client-bedrock-runtime": ["@aws-sdk/client-bedrock-runtime@3.1150.0", "", { "dependencies": { "@aws-sdk/core": "^3.978.3", "@aws-sdk/credential-provider-node": "^3.972.86", "@aws-sdk/eventstream-handler-node": "^3.972.36", "@aws-sdk/middleware-eventstream": "^3.972.31", "@aws-sdk/middleware-websocket": "^3.972.56", "@aws-sdk/token-providers": "3.1150.0", "@aws-sdk/types": "^3.974.6", "@smithy/core": "^3.35.2", "@smithy/fetch-http-handler": "^5.8.0", "@smithy/node-http-handler": "^4.12.1", "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-CEc95zjqHCqSiMyYb2GNRr6LzZ9P8ZgTIpJhaEq3aZ9riwpokGdxAf5mj5d/gkYyBUqZTxeW+uz2SqBVJdHoGw=="], - "@aws-sdk/client-cloudformation": ["@aws-sdk/client-cloudformation@3.1117.0", "", { "dependencies": { "@aws-sdk/core": "^3.977.9", "@aws-sdk/credential-provider-node": "^3.972.81", "@aws-sdk/types": "^3.974.5", "@smithy/core": "^3.33.3", "@smithy/fetch-http-handler": "^5.7.2", "@smithy/node-http-handler": "^4.11.3", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-PyaX+0wfXrFXrkMhwdVv0FnQ3g4hLOAsdKjSkRkcKSs1q89h0Hl1po8/818Y4V5FJiFs+28skjgxcfiZe4MDPg=="], + "@aws-sdk/client-cloudformation": ["@aws-sdk/client-cloudformation@3.1150.0", "", { "dependencies": { "@aws-sdk/core": "^3.978.3", "@aws-sdk/credential-provider-node": "^3.972.86", "@aws-sdk/types": "^3.974.6", "@smithy/core": "^3.35.2", "@smithy/fetch-http-handler": "^5.8.0", "@smithy/node-http-handler": "^4.12.1", "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-tIpRDIZ67jz58J6m+bt6cbIA5+sMJpmluNPcfawyAoVBKP7vFg7fXvFoJhZtJDO5dnMnHj38jJ68VF50R8/kPg=="], - "@aws-sdk/client-cloudtrail": ["@aws-sdk/client-cloudtrail@3.1117.0", "", { "dependencies": { "@aws-sdk/core": "^3.977.9", "@aws-sdk/credential-provider-node": "^3.972.81", "@aws-sdk/types": "^3.974.5", "@smithy/core": "^3.33.3", "@smithy/fetch-http-handler": "^5.7.2", "@smithy/node-http-handler": "^4.11.3", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-H+aTpAjq2dUmOaQatYZLrC9faKzPAg/OkxqS8eykSw/4dd1zbGeP37ehj+1i9RaVfEGwA4NrqBvzx50KLsdlog=="], + "@aws-sdk/client-cloudtrail": ["@aws-sdk/client-cloudtrail@3.1150.0", "", { "dependencies": { "@aws-sdk/core": "^3.978.3", "@aws-sdk/credential-provider-node": "^3.972.86", "@aws-sdk/types": "^3.974.6", "@smithy/core": "^3.35.2", "@smithy/fetch-http-handler": "^5.8.0", "@smithy/node-http-handler": "^4.12.1", "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-g0ZWzlED4awmpzzW6e1XWlguijZ8g4gk4R1lCOuOx5/QYCnCwNFKqJTxbPG69C3ozY+NT2wFhwvFkBzPrSYH8A=="], - "@aws-sdk/client-cloudwatch": ["@aws-sdk/client-cloudwatch@3.1117.0", "", { "dependencies": { "@aws-sdk/core": "^3.977.9", "@aws-sdk/credential-provider-node": "^3.972.81", "@aws-sdk/types": "^3.974.5", "@smithy/core": "^3.33.3", "@smithy/fetch-http-handler": "^5.7.2", "@smithy/middleware-compression": "^4.6.2", "@smithy/node-http-handler": "^4.11.3", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-x9QsSoQjPe5kXx3gR4wpwu3zuzIaDpUchbzHFlh0EMRTnT1k4D4ZBIyxSxLAk3sIeZ+3whMojRmZWDeYyP++tw=="], + "@aws-sdk/client-cloudwatch": ["@aws-sdk/client-cloudwatch@3.1150.0", "", { "dependencies": { "@aws-sdk/core": "^3.978.3", "@aws-sdk/credential-provider-node": "^3.972.86", "@aws-sdk/types": "^3.974.6", "@smithy/core": "^3.35.2", "@smithy/fetch-http-handler": "^5.8.0", "@smithy/middleware-compression": "^4.6.2", "@smithy/node-http-handler": "^4.12.1", "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-7A06Mw01Oj2M2/zYqobPfPV6dy/rTC7Y6JNc8vO3PxPcI383HI2GrcXN5WGppDRBZpe+gTKECv18UQoHkTX4/w=="], - "@aws-sdk/client-cloudwatch-logs": ["@aws-sdk/client-cloudwatch-logs@3.1117.0", "", { "dependencies": { "@aws-sdk/core": "^3.977.9", "@aws-sdk/credential-provider-node": "^3.972.81", "@aws-sdk/types": "^3.974.5", "@smithy/core": "^3.33.3", "@smithy/fetch-http-handler": "^5.7.2", "@smithy/node-http-handler": "^4.11.3", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-ples5jgy1aDoSQBQ+c/MEJBRRGPz9ub7Yms+kEXmkPDaenJoorpI5AYjHX0SacpSlw6cZyIlx/RruUhD8KiQWQ=="], + "@aws-sdk/client-cloudwatch-logs": ["@aws-sdk/client-cloudwatch-logs@3.1150.0", "", { "dependencies": { "@aws-sdk/core": "^3.978.3", "@aws-sdk/credential-provider-node": "^3.972.86", "@aws-sdk/types": "^3.974.6", "@smithy/core": "^3.35.2", "@smithy/fetch-http-handler": "^5.8.0", "@smithy/node-http-handler": "^4.12.1", "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-idsmpGYv2i7UrC4XQaPqO0jes8oi7d+gUrWYTqhXDayHlA5cOG0wgYskDwFyFQwHbQ0xs9q5s7a1kB/XMVAg1A=="], - "@aws-sdk/client-codepipeline": ["@aws-sdk/client-codepipeline@3.1117.0", "", { "dependencies": { "@aws-sdk/core": "^3.977.9", "@aws-sdk/credential-provider-node": "^3.972.81", "@aws-sdk/types": "^3.974.5", "@smithy/core": "^3.33.3", "@smithy/fetch-http-handler": "^5.7.2", "@smithy/node-http-handler": "^4.11.3", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-37wlhe64y24YIRZnJNRPniAdidgacCvbNx9qmzxA5wlqTifKq8ggSoTGZNoiRId7bg5QBdipGSYW86Wgat0bzw=="], + "@aws-sdk/client-codepipeline": ["@aws-sdk/client-codepipeline@3.1150.0", "", { "dependencies": { "@aws-sdk/core": "^3.978.3", "@aws-sdk/credential-provider-node": "^3.972.86", "@aws-sdk/types": "^3.974.6", "@smithy/core": "^3.35.2", "@smithy/fetch-http-handler": "^5.8.0", "@smithy/node-http-handler": "^4.12.1", "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-CzEOZj+myqw88Fqyi+VqjMsEiODuiqRrBmc0reZX29ug0v6EbGkUJppJYD0HoYwYDVD8USkMvJol1Dz4uIvVTA=="], - "@aws-sdk/client-dynamodb": ["@aws-sdk/client-dynamodb@3.1117.0", "", { "dependencies": { "@aws-sdk/core": "^3.977.9", "@aws-sdk/credential-provider-node": "^3.972.81", "@aws-sdk/dynamodb-codec": "^3.973.44", "@aws-sdk/middleware-endpoint-discovery": "^3.972.30", "@aws-sdk/types": "^3.974.5", "@smithy/core": "^3.33.3", "@smithy/fetch-http-handler": "^5.7.2", "@smithy/node-http-handler": "^4.11.3", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-J4NSx3qG+C6d5hfX3s9snTOAen0Hrf+iFK75FTlvziYg10shtbOthBUlJ6KzF3itLzhk3+c4SBujx7H9acbzzA=="], + "@aws-sdk/client-dynamodb": ["@aws-sdk/client-dynamodb@3.1150.0", "", { "dependencies": { "@aws-sdk/core": "^3.978.3", "@aws-sdk/credential-provider-node": "^3.972.86", "@aws-sdk/dynamodb-codec": "^3.973.48", "@aws-sdk/middleware-endpoint-discovery": "^3.972.32", "@aws-sdk/types": "^3.974.6", "@smithy/core": "^3.35.2", "@smithy/fetch-http-handler": "^5.8.0", "@smithy/node-http-handler": "^4.12.1", "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-04ysWG8zKrFM4e550/OEb3Pu+yE3cgppKIPwY7kS5xV4MFGW0S3hSD+1+ocWyw1Rb1UusaJCkcDHKZEdIO3dRw=="], "@aws-sdk/client-ec2": ["@aws-sdk/client-ec2@3.1117.0", "", { "dependencies": { "@aws-sdk/core": "^3.977.9", "@aws-sdk/credential-provider-node": "^3.972.81", "@aws-sdk/middleware-sdk-ec2": "^3.972.58", "@aws-sdk/types": "^3.974.5", "@smithy/core": "^3.33.3", "@smithy/fetch-http-handler": "^5.7.2", "@smithy/node-http-handler": "^4.11.3", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-K/hGMuMZ7yYgVQql1Y8GAifAlf7z7TzjIPqz4czAJbuJJ2C5rD+FVH7cZADXspOoiOO7sKsRPVvsxGxbuSgKJw=="], "@aws-sdk/client-ecs": ["@aws-sdk/client-ecs@3.1117.0", "", { "dependencies": { "@aws-sdk/core": "^3.977.9", "@aws-sdk/credential-provider-node": "^3.972.81", "@aws-sdk/types": "^3.974.5", "@smithy/core": "^3.33.3", "@smithy/fetch-http-handler": "^5.7.2", "@smithy/node-http-handler": "^4.11.3", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-V+ADLU21nYx5nzRs6R25b+AlOEj+TM9ZTxWrVYFJ1/DxQg3MqOOpcXRK5LI99O/OCWGTXHHa8728mtZyLNNtfA=="], - "@aws-sdk/client-iam": ["@aws-sdk/client-iam@3.1117.0", "", { "dependencies": { "@aws-sdk/core": "^3.977.9", "@aws-sdk/credential-provider-node": "^3.972.81", "@aws-sdk/types": "^3.974.5", "@smithy/core": "^3.33.3", "@smithy/fetch-http-handler": "^5.7.2", "@smithy/node-http-handler": "^4.11.3", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-q/qYBpZlWowu2en/MS0hLD3bKRkS3SAbfLZ6Jo+SWhCrIuxAC5vk3TtmoDGUkMIgGTFW4LGs52nCw2oVwF6LhQ=="], + "@aws-sdk/client-iam": ["@aws-sdk/client-iam@3.1150.0", "", { "dependencies": { "@aws-sdk/core": "^3.978.3", "@aws-sdk/credential-provider-node": "^3.972.86", "@aws-sdk/types": "^3.974.6", "@smithy/core": "^3.35.2", "@smithy/fetch-http-handler": "^5.8.0", "@smithy/node-http-handler": "^4.12.1", "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-c0CdE+Qpr3l1eGKOwBVK8bIixQ8ELbtulgDvkOwE9olLLSsdQ2e0h/xt3V8b6oiOZ9RVLrDNN+4cMgVsfC03ZQ=="], - "@aws-sdk/client-identitystore": ["@aws-sdk/client-identitystore@3.1117.0", "", { "dependencies": { "@aws-sdk/core": "^3.977.9", "@aws-sdk/credential-provider-node": "^3.972.81", "@aws-sdk/types": "^3.974.5", "@smithy/core": "^3.33.3", "@smithy/fetch-http-handler": "^5.7.2", "@smithy/node-http-handler": "^4.11.3", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-IetL4l78BbtTnqZracj20mIRm2ydm0FNpw+US39eXQCtxLyqA94rLMF987C0+0cNfQYrec19EEUgVrRsPJoR+w=="], + "@aws-sdk/client-identitystore": ["@aws-sdk/client-identitystore@3.1150.0", "", { "dependencies": { "@aws-sdk/core": "^3.978.3", "@aws-sdk/credential-provider-node": "^3.972.86", "@aws-sdk/types": "^3.974.6", "@smithy/core": "^3.35.2", "@smithy/fetch-http-handler": "^5.8.0", "@smithy/node-http-handler": "^4.12.1", "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-3KR3Jb8+pXPPIr9zwn52qgl3slDBi5PQROYknyRfgVGDvfmvY4nwfrtIhFIsGWQro4IsbvbtbRgQpW4ioMnZBw=="], - "@aws-sdk/client-lambda": ["@aws-sdk/client-lambda@3.1117.0", "", { "dependencies": { "@aws-sdk/core": "^3.977.9", "@aws-sdk/credential-provider-node": "^3.972.81", "@aws-sdk/types": "^3.974.5", "@smithy/core": "^3.33.3", "@smithy/fetch-http-handler": "^5.7.2", "@smithy/node-http-handler": "^4.11.3", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-cfCabCqjOXW3lnAwF2MeTxiYt/RSLfTVU0czfpJLlJveK4oW8/wMeFOiZREWwCkcuWwIlPeU19zZ/01RnrMxHA=="], + "@aws-sdk/client-lambda": ["@aws-sdk/client-lambda@3.1150.0", "", { "dependencies": { "@aws-sdk/core": "^3.978.3", "@aws-sdk/credential-provider-node": "^3.972.86", "@aws-sdk/types": "^3.974.6", "@smithy/core": "^3.35.2", "@smithy/fetch-http-handler": "^5.8.0", "@smithy/node-http-handler": "^4.12.1", "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-bld3mYojcpYmUgXJhmwJkMPnTQcqPHOiB7JJV620g5S0Iwc1gbm4WtmR2yrEqwnMM+OngdubbLmP0wtFtSFNBQ=="], - "@aws-sdk/client-organizations": ["@aws-sdk/client-organizations@3.1117.0", "", { "dependencies": { "@aws-sdk/core": "^3.977.9", "@aws-sdk/credential-provider-node": "^3.972.81", "@aws-sdk/types": "^3.974.5", "@smithy/core": "^3.33.3", "@smithy/fetch-http-handler": "^5.7.2", "@smithy/node-http-handler": "^4.11.3", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-4Cf8RpqI6xHYdQpGc16U73fOosnkhIUTeVGezmC1VjS8rkrp9KlLOVOcokKwLYuirbc/oFgFUKRnkXpQlANtgg=="], + "@aws-sdk/client-organizations": ["@aws-sdk/client-organizations@3.1150.0", "", { "dependencies": { "@aws-sdk/core": "^3.978.3", "@aws-sdk/credential-provider-node": "^3.972.86", "@aws-sdk/types": "^3.974.6", "@smithy/core": "^3.35.2", "@smithy/fetch-http-handler": "^5.8.0", "@smithy/node-http-handler": "^4.12.1", "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-lhCEv/+maZT29yALAwLTsRfqwHNkXBA862eyy1KZCwS/r/+xeQN89xRaraggLVUUwxDMLWCmgk9faXJy3RwF/g=="], - "@aws-sdk/client-rds-data": ["@aws-sdk/client-rds-data@3.1117.0", "", { "dependencies": { "@aws-sdk/core": "^3.977.9", "@aws-sdk/credential-provider-node": "^3.972.81", "@aws-sdk/types": "^3.974.5", "@smithy/core": "^3.33.3", "@smithy/fetch-http-handler": "^5.7.2", "@smithy/node-http-handler": "^4.11.3", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-j8GEbAeKaQayr9Bqpc52u1qJ5w6ahJNOAo0GNBVL9RWHms0fk14JP7sBPG6iOSBZ9yv4tx+C92b7UhyMb1O9Tw=="], + "@aws-sdk/client-rds-data": ["@aws-sdk/client-rds-data@3.1150.0", "", { "dependencies": { "@aws-sdk/core": "^3.978.3", "@aws-sdk/credential-provider-node": "^3.972.86", "@aws-sdk/types": "^3.974.6", "@smithy/core": "^3.35.2", "@smithy/fetch-http-handler": "^5.8.0", "@smithy/node-http-handler": "^4.12.1", "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-HOPcSBZVXFGZEwl0mVr2ISXU8xF8ideKLpEE95MRe17WQltmm4s6ba+/OIAc0hGS5Wqqd8Pjx8aRgIAXYnAi1g=="], - "@aws-sdk/client-s3": ["@aws-sdk/client-s3@3.1117.0", "", { "dependencies": { "@aws-sdk/checksums": "^3.1000.29", "@aws-sdk/core": "^3.977.9", "@aws-sdk/credential-provider-node": "^3.972.81", "@aws-sdk/middleware-sdk-s3": "^3.972.75", "@aws-sdk/signature-v4-multi-region": "^3.996.46", "@aws-sdk/types": "^3.974.5", "@smithy/core": "^3.33.3", "@smithy/fetch-http-handler": "^5.7.2", "@smithy/node-http-handler": "^4.11.3", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-M/zyjg0u0Sxm73sInvyDb9+/YUuAOz8/xxmcmj0quJ7NXllZqXPxzjti3oVDz/lQ5mDf7iuxBLc0Y3deJI2hRw=="], + "@aws-sdk/client-s3": ["@aws-sdk/client-s3@3.1150.0", "", { "dependencies": { "@aws-sdk/checksums": "^3.1001.3", "@aws-sdk/core": "^3.978.3", "@aws-sdk/credential-provider-node": "^3.972.86", "@aws-sdk/middleware-sdk-s3": "^3.972.79", "@aws-sdk/signature-v4-multi-region": "^3.996.48", "@aws-sdk/types": "^3.974.6", "@smithy/core": "^3.35.2", "@smithy/fetch-http-handler": "^5.8.0", "@smithy/node-http-handler": "^4.12.1", "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-tv7KzK7PY7GqBwA6nzAVAsazIY/tAagDjlqvmCwlIYpH2SMfUuD6pJklg++LGcMaNy5p0VMvz+F+/es1BpoyRw=="], - "@aws-sdk/client-secrets-manager": ["@aws-sdk/client-secrets-manager@3.1117.0", "", { "dependencies": { "@aws-sdk/core": "^3.977.9", "@aws-sdk/credential-provider-node": "^3.972.81", "@aws-sdk/types": "^3.974.5", "@smithy/core": "^3.33.3", "@smithy/fetch-http-handler": "^5.7.2", "@smithy/node-http-handler": "^4.11.3", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-nRBpwu2XHdLMoeZTA8BiemOrX4LbDiz72N7dwmI64DIZASShyboB2Qmdz8MqVjR0NcljqnQr+yGrInfcy1CZQw=="], + "@aws-sdk/client-secrets-manager": ["@aws-sdk/client-secrets-manager@3.1150.0", "", { "dependencies": { "@aws-sdk/core": "^3.978.3", "@aws-sdk/credential-provider-node": "^3.972.86", "@aws-sdk/types": "^3.974.6", "@smithy/core": "^3.35.2", "@smithy/fetch-http-handler": "^5.8.0", "@smithy/node-http-handler": "^4.12.1", "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-OirDyMA2jhBlql0AjfMa8aLT8WOeThlm9KT0ImgJ65JKHtJaTlaFIPgl9Ab0Sj4Y0fq7XeSDiqnBTY/zI12khQ=="], - "@aws-sdk/client-sesv2": ["@aws-sdk/client-sesv2@3.1117.0", "", { "dependencies": { "@aws-sdk/core": "^3.977.9", "@aws-sdk/credential-provider-node": "^3.972.81", "@aws-sdk/signature-v4-multi-region": "^3.996.46", "@aws-sdk/types": "^3.974.5", "@smithy/core": "^3.33.3", "@smithy/fetch-http-handler": "^5.7.2", "@smithy/node-http-handler": "^4.11.3", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-59X3nvG69vY98ZahJyg263T1poxcdlGCMhij/rSabbMhRjDoimLtgsBSPqBZQBwJQNrTBTjybH0RE8AcxSFIVw=="], + "@aws-sdk/client-sesv2": ["@aws-sdk/client-sesv2@3.1150.0", "", { "dependencies": { "@aws-sdk/core": "^3.978.3", "@aws-sdk/credential-provider-node": "^3.972.86", "@aws-sdk/signature-v4-multi-region": "^3.996.48", "@aws-sdk/types": "^3.974.6", "@smithy/core": "^3.35.2", "@smithy/fetch-http-handler": "^5.8.0", "@smithy/node-http-handler": "^4.12.1", "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-19N2D/A53kgqDAWNx+maZ6m7Ddq/43S7jyOYzI7QYKssGwsvq1Mw3A5dljqretzeo2djd1iCx/htfRVJil4eIQ=="], - "@aws-sdk/client-sqs": ["@aws-sdk/client-sqs@3.1117.0", "", { "dependencies": { "@aws-sdk/core": "^3.977.9", "@aws-sdk/credential-provider-node": "^3.972.81", "@aws-sdk/middleware-sdk-sqs": "^3.972.42", "@aws-sdk/types": "^3.974.5", "@smithy/core": "^3.33.3", "@smithy/fetch-http-handler": "^5.7.2", "@smithy/node-http-handler": "^4.11.3", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-/UDvls8e5CbZSE8EVzj9+2EN9H79cELtylnpKXWtQ2GJdWVMgB1PI8FGB+QksANzK2dbj6UWS5Lx1UFQ7Wvcsw=="], + "@aws-sdk/client-sqs": ["@aws-sdk/client-sqs@3.1150.0", "", { "dependencies": { "@aws-sdk/core": "^3.978.3", "@aws-sdk/credential-provider-node": "^3.972.86", "@aws-sdk/middleware-sdk-sqs": "^3.972.44", "@aws-sdk/types": "^3.974.6", "@smithy/core": "^3.35.2", "@smithy/fetch-http-handler": "^5.8.0", "@smithy/node-http-handler": "^4.12.1", "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-HPFpCiU1KIpJc1KoKYxUpDibyAvGpwINGK9PS2zuXqxbT4fxcRU970h2XH0CHZkWH+vM0dnV9dMIBNFUYNBg9A=="], - "@aws-sdk/client-ssm": ["@aws-sdk/client-ssm@3.1117.0", "", { "dependencies": { "@aws-sdk/core": "^3.977.9", "@aws-sdk/credential-provider-node": "^3.972.81", "@aws-sdk/types": "^3.974.5", "@smithy/core": "^3.33.3", "@smithy/fetch-http-handler": "^5.7.2", "@smithy/node-http-handler": "^4.11.3", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-jHIEtAyNB0IEajYgC/0RxCNyJhhC5RNG6ZXPW5lJ/xGDR1otEQRzFObfaHfwBTrB27Ecv1AQPrjvYUXhZUSBlQ=="], + "@aws-sdk/client-ssm": ["@aws-sdk/client-ssm@3.1150.0", "", { "dependencies": { "@aws-sdk/core": "^3.978.3", "@aws-sdk/credential-provider-node": "^3.972.86", "@aws-sdk/types": "^3.974.6", "@smithy/core": "^3.35.2", "@smithy/fetch-http-handler": "^5.8.0", "@smithy/node-http-handler": "^4.12.1", "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-0omOdO3UWj8WC8KEIzeou7jWAqfr9zyQ47v68wwt3o24BjcnHkwSIIiLxNURiTdgO6t5pzGcazaSTJTpTvFIIg=="], - "@aws-sdk/client-sso-admin": ["@aws-sdk/client-sso-admin@3.1117.0", "", { "dependencies": { "@aws-sdk/core": "^3.977.9", "@aws-sdk/credential-provider-node": "^3.972.81", "@aws-sdk/types": "^3.974.5", "@smithy/core": "^3.33.3", "@smithy/fetch-http-handler": "^5.7.2", "@smithy/node-http-handler": "^4.11.3", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-e1eFY+CV+NeGcamYS30qUQIzcQgCSV0DDJ/ju2j9c525Rvrbjhau7BmRFGktoUaZqSGwZmzmPpj3pSHxwNayqA=="], + "@aws-sdk/client-sso-admin": ["@aws-sdk/client-sso-admin@3.1150.0", "", { "dependencies": { "@aws-sdk/core": "^3.978.3", "@aws-sdk/credential-provider-node": "^3.972.86", "@aws-sdk/types": "^3.974.6", "@smithy/core": "^3.35.2", "@smithy/fetch-http-handler": "^5.8.0", "@smithy/node-http-handler": "^4.12.1", "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-4SSK5LPHrhc43PjlMrast7Le4qMoBF/Dk9A73SK6w/qA3pBlOvggkb5OkzqDtrT5SEFIAXdNIHtFvFQzyyXV8A=="], - "@aws-sdk/client-sts": ["@aws-sdk/client-sts@3.1117.0", "", { "dependencies": { "@aws-sdk/core": "^3.977.9", "@aws-sdk/credential-provider-node": "^3.972.81", "@aws-sdk/signature-v4-multi-region": "^3.996.46", "@aws-sdk/types": "^3.974.5", "@smithy/core": "^3.33.3", "@smithy/fetch-http-handler": "^5.7.2", "@smithy/node-http-handler": "^4.11.3", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-aZ0ypjbIdhRW85FOCkInl28sanIz8Qc/+CApJ79DVY55MFzXEkq2yDzzazTBvtnjB4UjFBGQmMlkNzUfBxrNBQ=="], + "@aws-sdk/client-sts": ["@aws-sdk/client-sts@3.1150.0", "", { "dependencies": { "@aws-sdk/core": "^3.978.3", "@aws-sdk/credential-provider-node": "^3.972.86", "@aws-sdk/signature-v4-multi-region": "^3.996.48", "@aws-sdk/types": "^3.974.6", "@smithy/core": "^3.35.2", "@smithy/fetch-http-handler": "^5.8.0", "@smithy/node-http-handler": "^4.12.1", "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-g9TLEr68lCe395XY5IZX8vhgMVL9eeviDhoM8hNQ/wxzeapDTFWdOYrXjwV13N2q0d8lJT6L67DC5KV2xURasA=="], - "@aws-sdk/client-textract": ["@aws-sdk/client-textract@3.1117.0", "", { "dependencies": { "@aws-sdk/core": "^3.977.9", "@aws-sdk/credential-provider-node": "^3.972.81", "@aws-sdk/types": "^3.974.5", "@smithy/core": "^3.33.3", "@smithy/fetch-http-handler": "^5.7.2", "@smithy/node-http-handler": "^4.11.3", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-vQJFPxkVhngf1pQO+/AsrQ+3SRG540ygL1pAEH8m5zAPgMQVLHjDokmxbB7mILWkoAjTxWU4YGU8x0EI1Emc+w=="], + "@aws-sdk/client-textract": ["@aws-sdk/client-textract@3.1150.0", "", { "dependencies": { "@aws-sdk/core": "^3.978.3", "@aws-sdk/credential-provider-node": "^3.972.86", "@aws-sdk/types": "^3.974.6", "@smithy/core": "^3.35.2", "@smithy/fetch-http-handler": "^5.8.0", "@smithy/node-http-handler": "^4.12.1", "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-PMQT9pI1XdzEynjyFdtYHRyp60e0gYJs6qf5TmJ1e5EtV5YPCewl/zHqz58UR2DR6nP4obSK5YzWip0rawsGtg=="], - "@aws-sdk/core": ["@aws-sdk/core@3.977.9", "", { "dependencies": { "@aws-sdk/types": "^3.974.5", "@aws-sdk/xml-builder": "^3.972.40", "@aws/lambda-invoke-store": "^0.3.0", "@smithy/core": "^3.33.3", "@smithy/signature-v4": "^5.6.12", "@smithy/types": "^4.17.2", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "sha512-reqPFEQrZxDZpeGj4PFMepBeR5LGYHRqq/L0motTzgFkCRBA4rFdaVXDSLYyGHhxVz7sT2PDnPN9CluGSfgyJA=="], + "@aws-sdk/core": ["@aws-sdk/core@3.978.3", "", { "dependencies": { "@aws-sdk/types": "^3.974.6", "@aws-sdk/xml-builder": "^3.972.41", "@aws/lambda-invoke-store": "^0.3.0", "@smithy/core": "^3.35.2", "@smithy/signature-v4": "^5.7.4", "@smithy/types": "^4.19.0", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "sha512-nslpzUCTI9b2IQMWSd6mSAXldBexPc8rr0d3dXUutXYFLFaTdsHa2GD7sJdsn3PhyjK0O5K8ypd6zi+RXXPVlg=="], "@aws-sdk/credential-provider-cognito-identity": ["@aws-sdk/credential-provider-cognito-identity@3.972.69", "", { "dependencies": { "@aws-sdk/nested-clients": "^3.997.44", "@aws-sdk/types": "^3.974.5", "@smithy/core": "^3.33.3", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-vpsh9VWmQVC/nsdzf72F2yUMBOFT1aq+hoLseYV03zjVXVHkjqSNJskFRKPFxc3MRFrHNbSSmOwsbYE15u9ecw=="], @@ -1001,7 +998,7 @@ "@aws-sdk/credential-provider-login": ["@aws-sdk/credential-provider-login@3.972.77", "", { "dependencies": { "@aws-sdk/core": "^3.977.9", "@aws-sdk/nested-clients": "^3.997.44", "@aws-sdk/types": "^3.974.5", "@smithy/core": "^3.33.3", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-Jb59xfEISoN5mmbnA+HYqdtrSX3CgCtJoof+V5D8/TgUI56W63GEEd5Y58WijU3Ou6+WEgaLD1feVzaRXV5IDQ=="], - "@aws-sdk/credential-provider-node": ["@aws-sdk/credential-provider-node@3.972.81", "", { "dependencies": { "@aws-sdk/credential-provider-env": "^3.972.70", "@aws-sdk/credential-provider-http": "^3.972.72", "@aws-sdk/credential-provider-ini": "^3.973.15", "@aws-sdk/credential-provider-process": "^3.972.70", "@aws-sdk/credential-provider-sso": "^3.973.14", "@aws-sdk/credential-provider-web-identity": "^3.972.76", "@aws-sdk/types": "^3.974.5", "@smithy/core": "^3.33.3", "@smithy/credential-provider-imds": "^4.4.16", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-Rml+WitoFvXmv6JZ18U/xGdGDGGvB/mOin0ya0lTnTrdC0Z1lrVxTYh7iNklZBcvcRMrs4DoEf6xy1KWyrLQQw=="], + "@aws-sdk/credential-provider-node": ["@aws-sdk/credential-provider-node@3.972.86", "", { "dependencies": { "@aws-sdk/credential-provider-env": "^3.972.74", "@aws-sdk/credential-provider-http": "^3.972.76", "@aws-sdk/credential-provider-ini": "^3.973.19", "@aws-sdk/credential-provider-process": "^3.972.74", "@aws-sdk/credential-provider-sso": "^3.973.18", "@aws-sdk/credential-provider-web-identity": "^3.972.80", "@aws-sdk/types": "^3.974.6", "@smithy/core": "^3.35.2", "@smithy/credential-provider-imds": "^4.5.2", "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-WNttSyr6e8innPtBSty//CdnqJcgZN6eAbtw3v/CR2IObz6MYZEo8eusdtuCHJ2ujwFqC2bSPHVyhXGHx8HruQ=="], "@aws-sdk/credential-provider-process": ["@aws-sdk/credential-provider-process@3.972.70", "", { "dependencies": { "@aws-sdk/core": "^3.977.9", "@aws-sdk/types": "^3.974.5", "@smithy/core": "^3.33.3", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-2ry03fGRJr4sV3jI+ocjj5JqALnFD6ymM5KiNCDZMvq8bX2GSbE0vji4aM43TVCl2nXqqLRZaUxdq/KeWRAY4Q=="], @@ -1011,41 +1008,41 @@ "@aws-sdk/credential-providers": ["@aws-sdk/credential-providers@3.1117.0", "", { "dependencies": { "@aws-sdk/core": "^3.977.9", "@aws-sdk/credential-provider-cognito-identity": "^3.972.69", "@aws-sdk/credential-provider-env": "^3.972.70", "@aws-sdk/credential-provider-http": "^3.972.72", "@aws-sdk/credential-provider-ini": "^3.973.15", "@aws-sdk/credential-provider-login": "^3.972.77", "@aws-sdk/credential-provider-node": "^3.972.81", "@aws-sdk/credential-provider-process": "^3.972.70", "@aws-sdk/credential-provider-sso": "^3.973.14", "@aws-sdk/credential-provider-web-identity": "^3.972.76", "@aws-sdk/nested-clients": "^3.997.44", "@aws-sdk/types": "^3.974.5", "@smithy/core": "^3.33.3", "@smithy/credential-provider-imds": "^4.4.16", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-ronfFql+JiuS43r05PqmI7bb/qz3S/E1/1HszvLkCOxemPSaJsrHNRAisw3Mf0+v4XEP73vIZ9cRQOyRlChOXQ=="], - "@aws-sdk/dynamodb-codec": ["@aws-sdk/dynamodb-codec@3.973.44", "", { "dependencies": { "@aws-sdk/core": "^3.977.9", "@smithy/core": "^3.33.3", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-eo27HNeBqMAfy9JBQug6ErU6DeG8OmOH6ou8+KmX3/fWdTmWUsHsfisz2tEQOG+GJ57bBC7kC6AjKAjpcxU4QA=="], + "@aws-sdk/dynamodb-codec": ["@aws-sdk/dynamodb-codec@3.973.48", "", { "dependencies": { "@aws-sdk/core": "^3.978.3", "@smithy/core": "^3.35.2", "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-LlTEc0u7gs2Qhr09vnRbdI8pY8O6/hP7wcsnlwrWQGEEheLEm3SB5Aqv9z7LiTXXEb2elBdSUyQ5OPuprELD6A=="], "@aws-sdk/endpoint-cache": ["@aws-sdk/endpoint-cache@3.972.11", "", { "dependencies": { "mnemonist": "0.38.3", "tslib": "^2.6.2" } }, "sha512-8q1ICxcDjHId3bBryuu/j+1L9y5/3uQnwzLDt5j2ElcjZSoWmFtymdJy7OjLrluSMe0Z4mq5bcH4fxBXvlEHfw=="], - "@aws-sdk/eventstream-handler-node": ["@aws-sdk/eventstream-handler-node@3.972.34", "", { "dependencies": { "@aws-sdk/types": "^3.974.5", "@smithy/core": "^3.33.3", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-cTeVzpu1xEAkryTZBYhGwnQ6gOGyp8ZYZvmn0Sg/nI/ABmy/CRHHxPDJDUi9PxwxUtGGaatvfRUB3FCgT/rSWw=="], + "@aws-sdk/eventstream-handler-node": ["@aws-sdk/eventstream-handler-node@3.972.36", "", { "dependencies": { "@aws-sdk/types": "^3.974.6", "@smithy/core": "^3.35.2", "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-HFaKXA6ugPVvpR7W/3UT3hylWIPndqGMwduwNVrmGsRT5+OESHN8/ven4eeofraQF5Kxp8A8QgGVrv7iQsTRKQ=="], - "@aws-sdk/lib-dynamodb": ["@aws-sdk/lib-dynamodb@3.1117.0", "", { "dependencies": { "@aws-sdk/core": "^3.977.9", "@aws-sdk/util-dynamodb": "^3.996.9", "@smithy/core": "^3.33.3", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" }, "peerDependencies": { "@aws-sdk/client-dynamodb": "^3.1117.0" } }, "sha512-lLjeKah/7M4DnGB2rq+mmeDtNyEVd7vAWjgSFlLo7D2YCI2jpCsBJPJRwFrjUFIVDAMmRK6PyN8hR6NZ7UMrLw=="], + "@aws-sdk/lib-dynamodb": ["@aws-sdk/lib-dynamodb@3.1150.0", "", { "dependencies": { "@aws-sdk/core": "^3.978.3", "@aws-sdk/util-dynamodb": "^3.996.9", "@smithy/core": "^3.35.2", "@smithy/types": "^4.19.0", "tslib": "^2.6.2" }, "peerDependencies": { "@aws-sdk/client-dynamodb": "^3.1150.0" } }, "sha512-L0HWyaQPr3ETjosWFznWyB0cRJ6qoVehWjgLESgauiPlB9QBWOgC4R3q4AD+FalGppcHF0YlI9Mv9BFxRHJaBg=="], "@aws-sdk/lib-storage": ["@aws-sdk/lib-storage@3.1117.0", "", { "dependencies": { "@smithy/core": "^3.33.3", "@smithy/types": "^4.17.2", "buffer": "5.6.0", "events": "3.3.0", "stream-browserify": "3.0.0", "tslib": "^2.6.2" }, "peerDependencies": { "@aws-sdk/client-s3": "^3.1117.0" } }, "sha512-ksBywRN9EjUqhuXpjCYdumJg9QB9r9Jbeaa2oUj4fWIK5A11LV8vEP0qdBgt63QUHgRglNF+nbD4xlLyooJanA=="], - "@aws-sdk/middleware-endpoint-discovery": ["@aws-sdk/middleware-endpoint-discovery@3.972.30", "", { "dependencies": { "@aws-sdk/endpoint-cache": "^3.972.11", "@aws-sdk/types": "^3.974.5", "@smithy/core": "^3.33.3", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-0hmD7/NG2NoVOVHvUb6rtY5POQYr+/9gdHvrYhIBA1zmCqKOBd5Gz3dL+iZ15FHOJbs/5kLplGoePc8PHTlzYA=="], + "@aws-sdk/middleware-endpoint-discovery": ["@aws-sdk/middleware-endpoint-discovery@3.972.32", "", { "dependencies": { "@aws-sdk/endpoint-cache": "^3.972.11", "@aws-sdk/types": "^3.974.6", "@smithy/core": "^3.35.2", "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-SshKt+B6n8Nn7EHs8aRs1Ye+GJmgeX0lq1lIIV7R5tRZdTGBMzO+nXqvWMTxfN5UmNYYfSBRJbbwbl0xevusFg=="], - "@aws-sdk/middleware-eventstream": ["@aws-sdk/middleware-eventstream@3.972.29", "", { "dependencies": { "@aws-sdk/types": "^3.974.5", "@smithy/core": "^3.33.3", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-dlRzHCgyB8W6hLuDC5pcT5q+ziPt00n4QGgGBE17ucLVU4zMa6lsbuUdQ2Pm75Z5VA8GF+R/+SgrRcaTdIzSIQ=="], + "@aws-sdk/middleware-eventstream": ["@aws-sdk/middleware-eventstream@3.972.31", "", { "dependencies": { "@aws-sdk/types": "^3.974.6", "@smithy/core": "^3.35.2", "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-4yvdTVwPGKCnrwuwlYEmwLqQXKwk0unx3f/FvBi4FA9ruK/WGoPJyqfK7hOYurheIyQL44FR0ovgOHqvkfdpAQ=="], "@aws-sdk/middleware-sdk-ec2": ["@aws-sdk/middleware-sdk-ec2@3.972.58", "", { "dependencies": { "@aws-sdk/core": "^3.977.9", "@aws-sdk/types": "^3.974.5", "@smithy/core": "^3.33.3", "@smithy/signature-v4": "^5.6.12", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-k1yW3bEUcy/e9oxIH0zT81sbPCqgERdNf0bOsBZg/tXP75tyEKp8kp8BG9xag64+u9fF8064fLDUdIItWgQxWw=="], - "@aws-sdk/middleware-sdk-s3": ["@aws-sdk/middleware-sdk-s3@3.972.75", "", { "dependencies": { "@aws-sdk/core": "^3.977.9", "@aws-sdk/signature-v4-multi-region": "^3.996.46", "@aws-sdk/types": "^3.974.5", "@smithy/core": "^3.33.3", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-wMIsNumRVKaNMKhvU/s9VrdEwE8S6gSzXp4RygFG5BEMnGkkXf8cjh8zf7cKJBpUDpqTWqwbz5isEgp9rH6Lng=="], + "@aws-sdk/middleware-sdk-s3": ["@aws-sdk/middleware-sdk-s3@3.972.79", "", { "dependencies": { "@aws-sdk/core": "^3.978.3", "@aws-sdk/signature-v4-multi-region": "^3.996.48", "@aws-sdk/types": "^3.974.6", "@smithy/core": "^3.35.2", "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-UfgAQosf4IEXldMsyntVuHsJnaQzlH6pmkOr6dQy7CaOYSlGz3mWiW4Di7XfQ/kPJP6xE7oMshz1V0E8RqGdRg=="], - "@aws-sdk/middleware-sdk-sqs": ["@aws-sdk/middleware-sdk-sqs@3.972.42", "", { "dependencies": { "@aws-sdk/types": "^3.974.5", "@smithy/core": "^3.33.3", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-D/O6iHAqlm0b430vIGewanSsr5RzaWbSDFlHYdKLWlZb4kaMKBmb44ReNHAFEKj5tNRY8pysw0qfciosB/VcJg=="], + "@aws-sdk/middleware-sdk-sqs": ["@aws-sdk/middleware-sdk-sqs@3.972.44", "", { "dependencies": { "@aws-sdk/types": "^3.974.6", "@smithy/core": "^3.35.2", "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-T+wrtyEE1z9BKlo0PH+2NXpikhOJfvq8Zg1QJuAE/GXV5YPTHruYWjsrpG4VGZNfYon9sXHCsIQBwNkd7J3Few=="], - "@aws-sdk/middleware-websocket": ["@aws-sdk/middleware-websocket@3.972.52", "", { "dependencies": { "@aws-sdk/core": "^3.977.9", "@aws-sdk/types": "^3.974.5", "@smithy/core": "^3.33.3", "@smithy/fetch-http-handler": "^5.7.2", "@smithy/signature-v4": "^5.6.12", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-vsPPM+nMbKJlUCFU+eoGZbdxdxDIAX9LbpjSXaR5Ufpmqgp8TdYQnoExhLu4T3umW/JIIPny1ydbhWidZZYokQ=="], + "@aws-sdk/middleware-websocket": ["@aws-sdk/middleware-websocket@3.972.56", "", { "dependencies": { "@aws-sdk/core": "^3.978.3", "@aws-sdk/types": "^3.974.6", "@smithy/core": "^3.35.2", "@smithy/fetch-http-handler": "^5.8.0", "@smithy/signature-v4": "^5.7.4", "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-32d9EnnNM5UMwjVp/qnL0K4XYiZv+YlSbULI3BaoBdJvebAS6cD0bKfPJ7lzovN0qrelvmSh5jo/3tk0KoTuGQ=="], "@aws-sdk/nested-clients": ["@aws-sdk/nested-clients@3.997.44", "", { "dependencies": { "@aws-sdk/core": "^3.977.9", "@aws-sdk/signature-v4-multi-region": "^3.996.46", "@aws-sdk/types": "^3.974.5", "@smithy/core": "^3.33.3", "@smithy/fetch-http-handler": "^5.7.2", "@smithy/node-http-handler": "^4.11.3", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-NhEgryjlBF9w38ZXqGymQV28IhkYa1mKhlbYnqIis57AYwWGVYfUPgg/qC2rLRqOUfblxx++irvju10kVTa8Vw=="], - "@aws-sdk/s3-request-presigner": ["@aws-sdk/s3-request-presigner@3.1117.0", "", { "dependencies": { "@aws-sdk/core": "^3.977.9", "@aws-sdk/signature-v4-multi-region": "^3.996.46", "@aws-sdk/types": "^3.974.5", "@smithy/core": "^3.33.3", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-4aivFw3OXy83wuh3utC2F6bgNg4SCdcCLOSXRvYF23qEL0OzGvkjqzLTU+T191laBKjbU/m6nJLFrZsEtOo9ow=="], + "@aws-sdk/s3-request-presigner": ["@aws-sdk/s3-request-presigner@3.1150.0", "", { "dependencies": { "@aws-sdk/core": "^3.978.3", "@aws-sdk/signature-v4-multi-region": "^3.996.48", "@aws-sdk/types": "^3.974.6", "@smithy/core": "^3.35.2", "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-aL2V49wz1FFZnWDT+7eZ7emTfQ+mMW/JeMS2n9+ZeKoCBil2Lp5Jgr0PDD12N6y5/gxZIAGvBVmbrjanI2Q/jg=="], - "@aws-sdk/signature-v4-multi-region": ["@aws-sdk/signature-v4-multi-region@3.996.46", "", { "dependencies": { "@aws-sdk/types": "^3.974.5", "@smithy/signature-v4": "^5.6.12", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-L+2xZTye/2T96f3lwCws0Zw6GG2JHZW9e8FpVgGBeeExSKyeoZ6CWRpBml/7DNiK/O26jrgPM9F+Ay8VkgzUWQ=="], + "@aws-sdk/signature-v4-multi-region": ["@aws-sdk/signature-v4-multi-region@3.996.48", "", { "dependencies": { "@aws-sdk/types": "^3.974.6", "@smithy/signature-v4": "^5.7.4", "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-cFDXfEbXaGwbnpvR/DyqfxfjxpjXVRVthQLgkwvcfDS5u3+8G9WSj1X1Ag/pTRg/QOeOno1Tq3ycEdrKsCUcOA=="], - "@aws-sdk/token-providers": ["@aws-sdk/token-providers@3.1117.0", "", { "dependencies": { "@aws-sdk/core": "^3.977.9", "@aws-sdk/nested-clients": "^3.997.44", "@aws-sdk/types": "^3.974.5", "@smithy/core": "^3.33.3", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-I7QIf9aR0+J4Q1qlLQw006d8hs3Pb/J6mOVSCQ/fnQ4AXHTQ6Y/M45O2dWDRKoYqsQJ2kN8sg6b5709/qCzp9A=="], + "@aws-sdk/token-providers": ["@aws-sdk/token-providers@3.1150.0", "", { "dependencies": { "@aws-sdk/core": "^3.978.3", "@aws-sdk/nested-clients": "^3.997.48", "@aws-sdk/types": "^3.974.6", "@smithy/core": "^3.35.2", "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-wDU36ofhabZYu+d2KSriyDbwzxNoaOp+4dG0p3qkabk7HeALR5nIWyQbjoyJZLn3iqWkv/xNdyUfbfevDVDzzg=="], - "@aws-sdk/types": ["@aws-sdk/types@3.974.5", "", { "dependencies": { "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-LkwLL2BLbC6wNNm4JaH9mbEqBMdOZCct6VAYqhdN4U1xrWM+fUJQEfbHwQgDypapOWTRtlk25akb5afM0P8CIQ=="], + "@aws-sdk/types": ["@aws-sdk/types@3.974.6", "", { "dependencies": { "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-v/clNZzZnDxGyvpHMOGpJKVXFAExJzUNAAjaWGdcx8QAcXLGwTaOkw33p5SHAi0YAioK32xB3hWwOekRVfmfKg=="], "@aws-sdk/util-dynamodb": ["@aws-sdk/util-dynamodb@3.996.9", "", { "dependencies": { "tslib": "^2.6.2" }, "peerDependencies": { "@aws-sdk/client-dynamodb": "^3.1111.0" } }, "sha512-16x2tRvl7OYpZ0W/DdFJieFriD13+RvuRBDbe5sj/tCEfK86HSGd7I2s5j0ivz8p6KWGkS+5wKRO9OliJkjUOQ=="], - "@aws-sdk/xml-builder": ["@aws-sdk/xml-builder@3.972.40", "", { "dependencies": { "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-wlFmCIGUlwF4zx/kncw+bmxTQh1HeSJq4mYV/V5cZUSJadDP3kXvGW8Rn21cimj/7y9ju+47oYWXi97vF7czaA=="], + "@aws-sdk/xml-builder": ["@aws-sdk/xml-builder@3.972.41", "", { "dependencies": { "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-ctjVSyCMegrWfXlx6VqzSBFI6UqmQ5ZlnfMhdLIiWmhoH8UAQxSCP5N3OpG7X3k4LnS7ou74C4mt20+bfTW2aQ=="], "@aws/lambda-invoke-store": ["@aws/lambda-invoke-store@0.3.0", "", {}, "sha512-sl4Bm6yiMNYrZKkqqDFWN0UfnWhlS8ivKxrYl+6t0gCLrqr8y3B2IqZZbFRkfaVVp7C/baApyh71P+LeE1A2sQ=="], @@ -1107,7 +1104,7 @@ "@babel/helper-validator-identifier": ["@babel/helper-validator-identifier@7.29.7", "", {}, "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg=="], - "@babel/parser": ["@babel/parser@7.29.2", "", { "dependencies": { "@babel/types": "^7.29.0" }, "bin": "./bin/babel-parser.js" }, "sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA=="], + "@babel/parser": ["@babel/parser@7.29.9", "", { "dependencies": { "@babel/types": "^7.29.8" }, "bin": "./bin/babel-parser.js" }, "sha512-CjXrNHTnvqBVqHgdBysY3vk2T8tpJHb5/RMeHJBTyVa9xgugCB0CJTx/3oO8RV2QRQP391RWpB7D6hLjm8V9uA=="], "@babel/runtime": ["@babel/runtime@7.29.7", "", {}, "sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw=="], @@ -1115,7 +1112,7 @@ "@babel/traverse": ["@babel/traverse@7.29.0", "", { "dependencies": { "@babel/code-frame": "^7.29.0", "@babel/generator": "^7.29.0", "@babel/helper-globals": "^7.28.0", "@babel/parser": "^7.29.0", "@babel/template": "^7.28.6", "@babel/types": "^7.29.0", "debug": "^4.3.1" } }, "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA=="], - "@babel/types": ["@babel/types@7.29.7", "", { "dependencies": { "@babel/helper-string-parser": "^7.29.7", "@babel/helper-validator-identifier": "^7.29.7" } }, "sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA=="], + "@babel/types": ["@babel/types@7.29.8", "", { "dependencies": { "@babel/helper-string-parser": "^7.29.7", "@babel/helper-validator-identifier": "^7.29.7" } }, "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg=="], "@bcoe/v8-coverage": ["@bcoe/v8-coverage@1.0.2", "", {}, "sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA=="], @@ -1165,23 +1162,23 @@ "@browserbasehq/sdk": ["@browserbasehq/sdk@2.14.0", "", { "dependencies": { "@types/node": "^18.11.18", "@types/node-fetch": "^2.6.4", "abort-controller": "^3.0.0", "agentkeepalive": "^4.2.1", "form-data-encoder": "1.7.2", "formdata-node": "^4.3.2", "node-fetch": "^2.6.7" } }, "sha512-DqVfjlgt74vPWfWiCp4VPtiMNJxg2yBZwio2uOfnpV1aJM0OWZR4AJrt/4df+xgQQ/guRpds5do41ycrDaYt3w=="], - "@browserbasehq/stagehand": ["@browserbasehq/stagehand@3.5.0", "", { "dependencies": { "@ai-sdk/provider": "^2.0.0", "@anthropic-ai/sdk": "0.39.0", "@browserbasehq/sdk": "^2.10.0", "@google/genai": "^1.22.0", "@modelcontextprotocol/sdk": "^1.29.0", "ai": "^5.0.133", "devtools-protocol": "^0.0.1464554", "fetch-cookie": "^3.1.0", "openai": "^4.104.0", "pino": "^9.6.0", "pino-pretty": "^13.0.0", "uuid": "^11.1.1", "ws": "^8.21.0", "zod-to-json-schema": "^3.25.0" }, "optionalDependencies": { "@ai-sdk/amazon-bedrock": "^3.0.73", "@ai-sdk/anthropic": "^2.0.34", "@ai-sdk/azure": "^2.0.54", "@ai-sdk/cerebras": "^1.0.25", "@ai-sdk/deepseek": "^1.0.23", "@ai-sdk/google": "^2.0.53", "@ai-sdk/google-vertex": "^3.0.70", "@ai-sdk/groq": "^2.0.24", "@ai-sdk/mistral": "^2.0.19", "@ai-sdk/openai": "^2.0.53", "@ai-sdk/perplexity": "^2.0.13", "@ai-sdk/togetherai": "^1.0.23", "@ai-sdk/xai": "^2.0.26", "bufferutil": "^4.0.9", "chrome-launcher": "^1.2.0", "ollama-ai-provider-v2": "^1.5.0" }, "peerDependencies": { "patchright-core": "^1.55.2", "playwright-core": "^1.55.1", "puppeteer-core": "^24.43.0", "zod": "^3.25.76 || ^4.2.0" }, "optionalPeers": ["patchright-core", "playwright-core", "puppeteer-core"] }, "sha512-nmKmi37keeZ8naUTJ4l6nfR8sTCDc5gUIn+fKSzMH8Xy4IW/sFNaA14Gl3OQbUWpthr977yGCBj556WSWONg0w=="], + "@browserbasehq/stagehand": ["@browserbasehq/stagehand@3.7.3", "", { "dependencies": { "@ai-sdk/provider": "^2.0.0", "@anthropic-ai/sdk": "0.39.0", "@browserbasehq/sdk": "^2.14.0", "@google/genai": "^1.22.0", "@modelcontextprotocol/sdk": "^1.30.0", "ai": "^5.0.185", "devtools-protocol": "^0.0.1642743", "fetch-cookie": "^3.1.0", "openai": "^4.104.0", "pino": "^9.6.0", "pino-pretty": "^13.0.0", "uuid": "^11.1.1", "ws": "^8.21.0", "zod-to-json-schema": "^3.25.0" }, "optionalDependencies": { "@ai-sdk/amazon-bedrock": "^3.0.73", "@ai-sdk/anthropic": "^2.0.81", "@ai-sdk/azure": "^2.0.109", "@ai-sdk/cerebras": "^1.0.25", "@ai-sdk/deepseek": "^1.0.23", "@ai-sdk/google": "^2.0.53", "@ai-sdk/google-vertex": "^3.0.70", "@ai-sdk/groq": "^2.0.24", "@ai-sdk/mistral": "^2.0.19", "@ai-sdk/openai": "^2.0.53", "@ai-sdk/perplexity": "^2.0.13", "@ai-sdk/togetherai": "^1.0.23", "@ai-sdk/xai": "^2.0.26", "bufferutil": "^4.0.9", "chrome-launcher": "^1.2.0", "ollama-ai-provider-v2": "^1.5.0" }, "peerDependencies": { "patchright-core": "^1.55.2", "playwright-core": "^1.55.1", "puppeteer-core": "^24.43.0", "zod": "^3.25.76 || ^4.2.0" }, "optionalPeers": ["patchright-core", "playwright-core", "puppeteer-core"] }, "sha512-aaQRqnGtXLLAsWITdQpLTZui1or4UIrGXu8oMUh9hhKxr0d95iLPFOpipi0BZW+i0+GfFjQrT4ZMDnKANeLh3w=="], "@bufbuild/protobuf": ["@bufbuild/protobuf@2.15.0", "", {}, "sha512-DAheWUkVr/SJTWCc+lg9dhY0eN4SaWlf4+bG1KzHeXbnqt0AfB/NX0Z+VunGlM1ki1B4zVvye27MpKh/svySUA=="], "@bugsnag/cuid": ["@bugsnag/cuid@3.2.2", "", {}, "sha512-7onuYLTMqMmHE9BBPG0YER4nFsU1rB+me1/YIeMusqcLbVbKKuG9u9+BDVDpje5e0llkkrVNOKYwmzM9DRIo7A=="], - "@c15t/nextjs": ["@c15t/nextjs@2.2.1", "", { "dependencies": { "@c15t/react": "2.2.1", "@c15t/translations": "2.2.1", "c15t": "2.2.1" }, "peerDependencies": { "next": "^16.0.0 || ^15.0.0 || ^14.0.0 || ^13.0.0", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" } }, "sha512-rQx1PbeI0Yh+dUp8h5LdhjWtDFllsSnYzQU6QDtR3MDen2D2y/oxz4px9h2HTk8RLC7WkLIRN0qy5mHoqmLx9g=="], + "@c15t/nextjs": ["@c15t/nextjs@2.3.0", "", { "dependencies": { "@c15t/react": "2.3.0", "@c15t/translations": "2.3.0", "c15t": "2.3.0" }, "peerDependencies": { "next": "^16.0.0 || ^15.0.0 || ^14.0.0 || ^13.0.0", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" } }, "sha512-v7Og87F4tQyfGpPUak5Hi6miZb1B1xdko3KZeQpH4LWm/lUlk3ier/hQcf+Z7HsardS/dcMBJKQc9F7flTQF0w=="], - "@c15t/react": ["@c15t/react@2.2.1", "", { "dependencies": { "@c15t/ui": "2.2.1", "@types/google.maps": "3.65.3", "c15t": "2.2.1" }, "peerDependencies": { "react": "^19.0.0 || ^19.0.0-rc || ^18.0.0 || ^17.0.0 || ^16.8.0", "react-dom": "^19.0.0 || ^19.0.0-rc || ^18.0.0 || ^17.0.0 || ^16.8.0" } }, "sha512-Xl/KPHGBDekRwH+k09fAyNXUI2GirDAWz/R87Yr+htsp+b66A51yMN2hzJCcH1gxm4MLjOzDqHP1nAE/fRJ09Q=="], + "@c15t/react": ["@c15t/react@2.3.0", "", { "dependencies": { "@c15t/ui": "2.2.2", "@types/google.maps": "3.65.3", "c15t": "2.3.0" }, "peerDependencies": { "react": "^19.0.0 || ^19.0.0-rc || ^18.0.0 || ^17.0.0 || ^16.8.0", "react-dom": "^19.0.0 || ^19.0.0-rc || ^18.0.0 || ^17.0.0 || ^16.8.0" } }, "sha512-noQLwyUUHG+eJ5ZuNLVz/KXEMUvy1xFSHje2mdpPWop09/DNV85Td37lAOwBiTNDYTkuVqOrunUbvbcvJ32R5Q=="], - "@c15t/schema": ["@c15t/schema@2.2.0", "", { "dependencies": { "valibot": "1.4.2" } }, "sha512-rj6H1AlbbSnioNaw9Cvoc3vCchVAV/55Jd/6wrzhzW+2z2ByUyf+pDvZXQnAm0KMfsuQ8oDgqNqmPdqD1aJNFw=="], + "@c15t/schema": ["@c15t/schema@2.3.0", "", { "dependencies": { "valibot": "1.4.2" } }, "sha512-n7K5GYp+F1y4qJeAB0SiXT2XtVDzKX3Xbc1YferNeWClrVyFRYj//28Dxou8irocR1A/z9m40lZLb9xMqwvMHA=="], - "@c15t/scripts": ["@c15t/scripts@2.2.0", "", {}, "sha512-FgmnIW0JL5nalY6QKG5+gzukzALMqq6LpXzn5+iwRA8OVukjoXBdgakdO/eytwSrv/QtxgLyFaiM0nBIZZbk0A=="], + "@c15t/scripts": ["@c15t/scripts@2.3.0", "", {}, "sha512-xVaneA3fNHvD6/Tl2P3splSR3psJksbmJAacN0mj82Wgk5M9d3MZTSdUhFRFsy+w5dOrUHPAZL+XyyrkZeX1/A=="], - "@c15t/translations": ["@c15t/translations@2.2.1", "", {}, "sha512-JgYXn+bTyys/7e7SMfu19zVBlW1cED6/CqJ5mbOmmfMr9MSkaAq0/UK/6/29FhcfCJKmHq+kQqKa0igX86mJeA=="], + "@c15t/translations": ["@c15t/translations@2.3.0", "", {}, "sha512-siriyyINJ5+mPEdvQ54tzf+DTbKr8KLmpYVlMsdQWRWeXeogZInSA6ujlXoga+MbP4MvageAXAyLeAlYR2OKcg=="], - "@c15t/ui": ["@c15t/ui@2.2.1", "", { "dependencies": { "@c15t/translations": "2.2.1", "c15t": "2.2.1" } }, "sha512-OlmEhScePX3xF+sPNWemLZaiJv80KuxsuxTf+Ip0ImREGeXdaOIG7Hp6IBU+8IOeJ723Q4LlD74gyV2NgTbXIQ=="], + "@c15t/ui": ["@c15t/ui@2.2.2", "", { "dependencies": { "@c15t/translations": "2.3.0", "c15t": "2.3.0" } }, "sha512-kcdglK8pZF9/qwL8YwX3JLkxmbb65Q06r9UX95o1ETrQs8sxqvcdy4FluPzvJh7M7pE1pjZReBo2lEQO7ZvOWg=="], "@calcom/embed-core": ["@calcom/embed-core@1.5.3", "", {}, "sha512-GeId9gaByJ5EWiPmuvelZOvFWPOTWkcWZr5vGTCbIUTX125oE5yn0n8lDF1MJk5Xj1WO+/dk9jKIE08Ad9ytiQ=="], @@ -1189,7 +1186,7 @@ "@calcom/embed-snippet": ["@calcom/embed-snippet@1.3.3", "", { "dependencies": { "@calcom/embed-core": "1.5.3" } }, "sha512-pqqKaeLB8R6BvyegcpI9gAyY6Xyx1bKYfWvIGOvIbTpguWyM1BBBVcT9DCeGe8Zw7Ujp5K56ci7isRUrT2Uadg=="], - "@cerebras/cerebras_cloud_sdk": ["@cerebras/cerebras_cloud_sdk@1.64.1", "", { "dependencies": { "@types/node": "^18.11.18", "@types/node-fetch": "^2.6.4", "abort-controller": "^3.0.0", "agentkeepalive": "^4.2.1", "form-data-encoder": "1.7.2", "formdata-node": "^4.3.2", "node-fetch": "^2.6.7" } }, "sha512-eQ0udGHS9xrWANi56yCS/FMcbwtysugD73YWipp89+zarbm2pd5hxqrmGlFqafS4Pwyo7cU7Qv31am5jdjqXFg=="], + "@cerebras/cerebras_cloud_sdk": ["@cerebras/cerebras_cloud_sdk@1.91.0", "", { "dependencies": { "@types/node": "^18.11.18", "@types/node-fetch": "^2.6.4", "abort-controller": "^3.0.0", "agentkeepalive": "^4.2.1", "form-data-encoder": "1.7.2", "formdata-node": "^4.3.2", "node-fetch": "^2.6.7" } }, "sha512-M1CzFeMX13/mat+/YMWZiY45UakJRkQwoNRCfK0xlFoSWIWxR3WfBq4sN2apqH34JeaGCCj4Sk4ORVZcG1H9Rg=="], "@chevrotain/types": ["@chevrotain/types@11.1.2", "", {}, "sha512-U+HFai5+zmJCkK86QsaJtoITlboZHBqrVketcO2ROv865xfCMSFpELQoz1GkX5GzME8pTa+3kbKrZHQtI0gdbw=="], @@ -1273,57 +1270,57 @@ "@esbuild-kit/esm-loader": ["@esbuild-kit/esm-loader@2.6.5", "", { "dependencies": { "@esbuild-kit/core-utils": "^3.3.2", "get-tsconfig": "^4.7.0" } }, "sha512-FxEMIkJKnodyA1OaCUoEvbYRkoZlLZ4d/eXFu9Fh8CbBBgP5EmZxrfTRyN0qpXZ4vOvqnE5YdRdcrmUUXuU+dA=="], - "@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.28.1", "", { "os": "aix", "cpu": "ppc64" }, "sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ=="], + "@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.28.2", "", { "os": "aix", "cpu": "ppc64" }, "sha512-XExcO+dvLKvVtNTibSTBej1NCAbaGhWn9Ww1ZPx80qsahhPFe/8jgWP0IchNe0F3HwkU7n8ejhH8bjonqht8mQ=="], - "@esbuild/android-arm": ["@esbuild/android-arm@0.28.1", "", { "os": "android", "cpu": "arm" }, "sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ=="], + "@esbuild/android-arm": ["@esbuild/android-arm@0.28.2", "", { "os": "android", "cpu": "arm" }, "sha512-kXXoiPVVGQcnIYGOeaovwOURpniDBpSq4A03qkQ+BMQqtGG6HYap3xne9C1O1yo4TR3qxlCX5IqqmX6fFo2Lqg=="], - "@esbuild/android-arm64": ["@esbuild/android-arm64@0.28.1", "", { "os": "android", "cpu": "arm64" }, "sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg=="], + "@esbuild/android-arm64": ["@esbuild/android-arm64@0.28.2", "", { "os": "android", "cpu": "arm64" }, "sha512-5YfKeeI8qWfBZIX+u2xZC3Zlb3Os/gLS2sbEKM+I4ZOcsWmHS2WLysCcQZDAFRslDUU5Oiq44gf6PYN1vGwG5A=="], - "@esbuild/android-x64": ["@esbuild/android-x64@0.28.1", "", { "os": "android", "cpu": "x64" }, "sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng=="], + "@esbuild/android-x64": ["@esbuild/android-x64@0.28.2", "", { "os": "android", "cpu": "x64" }, "sha512-O387ite7SzUyCcy3JQX4P4bLtEA7bLLkx+esve5JHnyYfNTxcVpXZo9jhdB0lTKN44gztELTdU7nS8Nr16Fs1Q=="], - "@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.28.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q=="], + "@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.28.2", "", { "os": "darwin", "cpu": "arm64" }, "sha512-n4KqkOQrraxHJcgjM1RvwbigfQKIKJVpM7xp+KsxiyUSrRdIXnt73VhrPAx0fV44hgfmIVKjxMN9J1t5jySVkw=="], - "@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.28.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ=="], + "@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.28.2", "", { "os": "darwin", "cpu": "x64" }, "sha512-uq6suIWYP37qzGddBKPw5QEQPi6HiLGsO7UmkpfyaYNQ3D+rN6w6WfwH+nuqcGXWvawGwxOEroO4YGnFh95azw=="], - "@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.28.1", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw=="], + "@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.28.2", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-n+I0BTSRIoy+d6RPKnEVwql5UwBJolytvY4mAOIEJorKlqgPII8ix6slVVrfZ5Tnj7glIZvloylbB/EJPMWEXw=="], - "@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.28.1", "", { "os": "freebsd", "cpu": "x64" }, "sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ=="], + "@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.28.2", "", { "os": "freebsd", "cpu": "x64" }, "sha512-78XJTJkvPs0kz2w61301PJjXl4g7q3JqiYMZ/M/yVI73EHBrCRTgkhu9oqG7vPqq+a/yadEW8aD+agKlk5xrmg=="], - "@esbuild/linux-arm": ["@esbuild/linux-arm@0.28.1", "", { "os": "linux", "cpu": "arm" }, "sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ=="], + "@esbuild/linux-arm": ["@esbuild/linux-arm@0.28.2", "", { "os": "linux", "cpu": "arm" }, "sha512-XlDnu2q5yoqems+xay6wSAcg9DDD7K9RLKZEBOMZm3ckNpJBvOX20tSfby8KfrrhINDyv9V2YVZKY/SpoGJI8w=="], - "@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.28.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g=="], + "@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.28.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-pW4AC0P3it8c7do9MVM4p51FzHzdM/TZrerurgRcHJ2WTa1VQ1CIq18xncfpBJw4ojkiZZrKW2yIBWBP92j6Ug=="], - "@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.28.1", "", { "os": "linux", "cpu": "ia32" }, "sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w=="], + "@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.28.2", "", { "os": "linux", "cpu": "ia32" }, "sha512-CYbnj78HsIeA+DhgUKgFCfvNsTHFhMMrinUrMZpDXJXKN8T3XViTZ/+wtHeVxEWY8ewSzTFN+nRmSwO2tZaLUQ=="], - "@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.28.1", "", { "os": "linux", "cpu": "none" }, "sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg=="], + "@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.28.2", "", { "os": "linux", "cpu": "none" }, "sha512-buwkd8nsph4R+ajRvw0qM5Hja/TXQow3ptzWO2EbG/cqcIkHloRrdlBtQlshyYGTNFvfkfJ5tpPLVkY4DtsPfQ=="], - "@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.28.1", "", { "os": "linux", "cpu": "none" }, "sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ=="], + "@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.28.2", "", { "os": "linux", "cpu": "none" }, "sha512-ZVykbDyk7519VwiNb9Lcj9m8XM6v5V9uKPvrEMkkEedVewf+0itkhahp4HDpgERXhwLRpWFypsGbG/J8s0QjJA=="], - "@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.28.1", "", { "os": "linux", "cpu": "ppc64" }, "sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ=="], + "@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.28.2", "", { "os": "linux", "cpu": "ppc64" }, "sha512-CAXl+Dtd9UUuJd8pKKdwh6MLm3MUMiqMPmhZ3tTSXPqfyQ3vDl6R5hZdZ/kYojK4ofXtdfSv1tFq8XzWx3heNQ=="], - "@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.28.1", "", { "os": "linux", "cpu": "none" }, "sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ=="], + "@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.28.2", "", { "os": "linux", "cpu": "none" }, "sha512-GeXCej4IQtU1B+QlDV8W/RRvbzI3O/Stss+/bCXv4lZls5WGRtu2a+3JkA3i4qIUlMXpcHebWpF8AkJhATowuA=="], - "@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.28.1", "", { "os": "linux", "cpu": "s390x" }, "sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag=="], + "@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.28.2", "", { "os": "linux", "cpu": "s390x" }, "sha512-3H1weTYZPxt/WOhByszQZybS9w5lKzUn1FDMsgEChbHWQwHYQQRfBxgCcZvPhjHfKyJjIievvMmEUawJrdY9Dg=="], - "@esbuild/linux-x64": ["@esbuild/linux-x64@0.28.1", "", { "os": "linux", "cpu": "x64" }, "sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA=="], + "@esbuild/linux-x64": ["@esbuild/linux-x64@0.28.2", "", { "os": "linux", "cpu": "x64" }, "sha512-4xTZr1FUmSoQW4XIWmit3tzQrUTZM+N3P0XV8xROKYF50XfI7xeO90+1bZvNwxIufQ9hDQVRJH5YhgPVF8A/HQ=="], - "@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.28.1", "", { "os": "none", "cpu": "arm64" }, "sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw=="], + "@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.28.2", "", { "os": "none", "cpu": "arm64" }, "sha512-sSATRjPeDBg3pdgHoQfoYBob11Kk1FGa9lui5RIHZCoCkJa9QKlvl3/vKz2usCmYYjs7ymJR/2Nnsqe+Hjt5nw=="], - "@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.28.1", "", { "os": "none", "cpu": "x64" }, "sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg=="], + "@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.28.2", "", { "os": "none", "cpu": "x64" }, "sha512-lqnzCV+mM0gIADaKihiCg6ifgfU2L3h5E33rNQBN1Y4MaVGnzryzmvvf7UHxprpQdE8hpqLolJ9Rl+SkIRDpyw=="], - "@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.28.1", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q=="], + "@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.28.2", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-AL2qJILH7lNjrDmCQDvdxMfAUIv8KMNZOvrwAQ8i8//ntL9FflhOyMJ8OZSMBb8/AWXe3/5v5S20y3zCoZWKoQ=="], - "@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.28.1", "", { "os": "openbsd", "cpu": "x64" }, "sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw=="], + "@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.28.2", "", { "os": "openbsd", "cpu": "x64" }, "sha512-QtiuPytchRyC4rwUKhexJdQKvDuZ6hWloi3igqPQNUJCS1/v9EiO3UTOXR6A3FoMo4fnAKbWJdqaIwhOzh8qEw=="], - "@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.28.1", "", { "os": "none", "cpu": "arm64" }, "sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg=="], + "@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.28.2", "", { "os": "none", "cpu": "arm64" }, "sha512-WkhYDmpTjLvGlScA1rwjRUmhl4k8oXR3cIbtqWmELgU/dFeHHlEllxDvdWcNJV9rbzCexB5vz8gtNewWLgCT7Q=="], - "@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.28.1", "", { "os": "sunos", "cpu": "x64" }, "sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ=="], + "@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.28.2", "", { "os": "sunos", "cpu": "x64" }, "sha512-GPMSkTOtMnv2U2F8gxe4Io6qmVs+YKyp832Etqqxr0hFngmXQ3rzwytelm3GIn7T4VviRUlf3sOgBOiTdvaf7g=="], - "@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.28.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA=="], + "@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.28.2", "", { "os": "win32", "cpu": "arm64" }, "sha512-PIhhEkE9uPBleRBrQEJpUn7MBnibZzbGzYWPmY3x+YoVg/95zbjB4CxPPOQ8l5tYYM4mMaCthF8/1DIfBQQyWQ=="], - "@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.28.1", "", { "os": "win32", "cpu": "ia32" }, "sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg=="], + "@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.28.2", "", { "os": "win32", "cpu": "ia32" }, "sha512-YmJbfTlvU7Sdn9BB+4PRES4oB6pxgS37MAONj+hBr/cpXS1aBPKXxNnDbu+QCWPj0o9dgyxeq79g6c5P8KeuYA=="], - "@esbuild/win32-x64": ["@esbuild/win32-x64@0.28.1", "", { "os": "win32", "cpu": "x64" }, "sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A=="], + "@esbuild/win32-x64": ["@esbuild/win32-x64@0.28.2", "", { "os": "win32", "cpu": "x64" }, "sha512-5ebpxr3nWMzrL/rnUI755Jkuee0bHL/Gq0WTF9lvcpv73wAp5eu8MfBUgWK9bhWvZjj7yX8etf/8tI8Ney695g=="], "@faker-js/faker": ["@faker-js/faker@10.5.0", "", {}, "sha512-bsxD8WLS5lIj7aaoCx1YJkktqYj5vlBUE6HWzu2Q51ksrGJ0H737ECCKlFU7Yf8Br45z9t99frBp/J7kzbMPAg=="], @@ -1349,9 +1346,9 @@ "@google-cloud/promisify": ["@google-cloud/promisify@4.0.0", "", {}, "sha512-Orxzlfb9c67A15cq2JQEyVc7wEsmFBmHjZWZYQMUyJ1qivXyMwdyNOs9odi79hze+2zqdTtu1E19IM/FtqZ10g=="], - "@google-cloud/storage": ["@google-cloud/storage@7.21.0", "", { "dependencies": { "@google-cloud/paginator": "^5.0.0", "@google-cloud/projectify": "^4.0.0", "@google-cloud/promisify": "<4.1.0", "abort-controller": "^3.0.0", "async-retry": "^1.3.3", "duplexify": "^4.1.3", "fast-xml-parser": "^5.3.4", "gaxios": "^6.0.2", "google-auth-library": "^9.6.3", "html-entities": "^2.5.2", "mime": "^3.0.0", "p-limit": "^3.0.1", "retry-request": "^7.0.0", "teeny-request": "^9.0.0" } }, "sha512-l+IFTkd+6Y5LoAuXyYCKNAKtw/Ci+rAMqgdTB1jv4iZiLhw0rtq+0qjIRbBizXkNzEFmXiXUW0H7sZQQvk1ffA=="], + "@google-cloud/storage": ["@google-cloud/storage@7.22.0", "", { "dependencies": { "@google-cloud/paginator": "^5.0.0", "@google-cloud/projectify": "^4.0.0", "@google-cloud/promisify": "<4.1.0", "abort-controller": "^3.0.0", "async-retry": "^1.3.3", "duplexify": "^4.1.3", "fast-xml-parser": "^5.3.4", "gaxios": "^6.0.2", "google-auth-library": "^9.6.3", "html-entities": "^2.5.2", "mime": "^3.0.0", "p-limit": "^3.0.1", "retry-request": "^7.0.0", "teeny-request": "^9.0.0" } }, "sha512-W98gTQOAntEeEQ7/pZxSQXxfUO5CiQcXJRsxBpUa6UU25n8YN/VtogPBi0H+MAmUrn/6bY/sBhFansoWEsr2/g=="], - "@google/genai": ["@google/genai@2.13.0", "", { "dependencies": { "google-auth-library": "^10.3.0", "p-retry": "^4.6.2", "protobufjs": "^7.5.4", "ws": "^8.18.0" }, "peerDependencies": { "@modelcontextprotocol/sdk": "^1.25.2" }, "optionalPeers": ["@modelcontextprotocol/sdk"] }, "sha512-GM7C8Kaomvjz05x5JEO6+l3d/pciL9LxAG9dUjJLD7nTPZ9X0Cfsf2Z7eET6UjgWyUmxXCHtYnQoQ77F9+ZIOQ=="], + "@google/genai": ["@google/genai@2.28.0", "", { "dependencies": { "google-auth-library": "^10.3.0", "p-retry": "^4.6.2", "protobufjs": "^7.5.4", "ws": "^8.18.0" }, "peerDependencies": { "@modelcontextprotocol/sdk": "^1.25.2" }, "optionalPeers": ["@modelcontextprotocol/sdk"] }, "sha512-hyNAJj+ywu3L46qlZod6KO/JvcT3QONz6VCiPevC/FWOjAD+LQb7DMLUoV8vzoLpt61Q0ruQX99iqbxEjPJWmw=="], "@graphql-typed-document-node/core": ["@graphql-typed-document-node/core@3.2.0", "", { "peerDependencies": { "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, "sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ=="], @@ -1365,7 +1362,7 @@ "@hono/node-server": ["@hono/node-server@1.19.15", "", { "peerDependencies": { "hono": "^4" } }, "sha512-Za2ai6TLdKjUvnur+eenO6nuYYipVAEhyCAdaV8IRvmU9kK8crOZUSYvIXn72E4f8fJqyAbpcJuTsYYmZp9Deg=="], - "@hookform/resolvers": ["@hookform/resolvers@5.2.2", "", { "dependencies": { "@standard-schema/utils": "^0.3.0" }, "peerDependencies": { "react-hook-form": "^7.55.0" } }, "sha512-A/IxlMLShx3KjV/HeTcTfaMxdwy690+L/ZADoeaTltLx+CVuzkeVIPuybK3jrRfw7YZnmdKsVVHAlEPIAEUNlA=="], + "@hookform/resolvers": ["@hookform/resolvers@5.9.1", "", { "dependencies": { "@standard-schema/utils": "^0.3.0" }, "peerDependencies": { "@sinclair/typebox": ">=0.25.24", "@standard-schema/spec": "^1.0.0", "@typeschema/main": ">=0.13.7", "@vinejs/vine": "^2.0.0 || ^3.0.0 || ^4.0.0", "ajv": "^8.12.0", "ajv-errors": "^3.0.0", "ajv-formats": "^2.1.1", "arktype": "^2.0.0", "ata-validator": "^1.2.0", "class-transformer": ">=0.4.0", "class-validator": ">=0.12.0", "computed-types": "^1.0.0", "effect": "^3.10.3", "fluentvalidation-ts": "^3.0.0", "fp-ts": "^2.7.0", "io-ts": "^2.0.0", "joi": "^17.0.0 || ^18.0.0", "nope-validator": ">=0.12.0", "react-hook-form": "^7.55.0", "superstruct": ">=0.12.0", "typanion": "^3.3.2", "valibot": ">=0.31.0 || ^1.0.0-beta.4 || ^1.0.0-rc", "vest": ">=6.0.0", "yup": "^1.0.0", "zod": "^3.25.0 || ^4.0.0" }, "optionalPeers": ["@sinclair/typebox", "@standard-schema/spec", "@typeschema/main", "@vinejs/vine", "ajv", "ajv-errors", "ajv-formats", "arktype", "ata-validator", "class-transformer", "class-validator", "computed-types", "effect", "fluentvalidation-ts", "fp-ts", "io-ts", "joi", "nope-validator", "superstruct", "typanion", "valibot", "vest", "yup", "zod"] }, "sha512-7b7vsbraJxKgjVSA1Nur9tLwj539WGJUBLA7QNvXnFoT2pM5Z7G+6rlukk4B2/QrTZy6huRtH6wKeESPKuIr6w=="], "@iarna/toml": ["@iarna/toml@2.2.5", "", {}, "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg=="], @@ -1461,8 +1458,6 @@ "@ioredis/commands": ["@ioredis/commands@1.10.0", "", {}, "sha512-UmeW7z4LfctwoQ5wkhVzgq8tXkreED2xZGpX+Bg+zA+WJFZCT6c062AfCK/Dfk81xZnnwdhJCUMkitihRaoC2Q=="], - "@isaacs/cliui": ["@isaacs/cliui@8.0.2", "", { "dependencies": { "string-width": "^5.1.2", "string-width-cjs": "npm:string-width@^4.2.0", "strip-ansi": "^7.0.1", "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", "wrap-ansi": "^8.1.0", "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" } }, "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA=="], - "@isaacs/fs-minipass": ["@isaacs/fs-minipass@4.0.1", "", { "dependencies": { "minipass": "^7.0.4" } }, "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w=="], "@jridgewell/gen-mapping": ["@jridgewell/gen-mapping@0.3.13", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA=="], @@ -1489,7 +1484,7 @@ "@keyv/serialize": ["@keyv/serialize@1.1.1", "", {}, "sha512-dXn3FZhPv0US+7dtJsIi2R+c7qWYiReoEh5zUntWCf4oSpMNib8FDhSoed6m3QyZdx5hK7iLFkYk3rNxwt8vTA=="], - "@linear/sdk": ["@linear/sdk@91.0.0", "", { "dependencies": { "@graphql-typed-document-node/core": "^3.2.0" } }, "sha512-H0pa8J6D4OSL89wZK7xtM7g/JcOjGWfZgeLyvl0RcUfY+arvWVimjMz+XVRxmu2yMLov0eeuRB1z0qIWIrCd9w=="], + "@linear/sdk": ["@linear/sdk@97.1.0", "", { "dependencies": { "@graphql-typed-document-node/core": "^3.2.0" } }, "sha512-HPk0zY8+SAOEoUEPxZZgqTU7xpNJ5BYcN3grngaWsesecaGMUrn2bzhmWtsQ0jOtTvLImZKHxgiL3hqEjb6oig=="], "@lydell/node-pty": ["@lydell/node-pty@1.2.0-beta.12", "", { "optionalDependencies": { "@lydell/node-pty-darwin-arm64": "1.2.0-beta.12", "@lydell/node-pty-darwin-x64": "1.2.0-beta.12", "@lydell/node-pty-linux-arm64": "1.2.0-beta.12", "@lydell/node-pty-linux-x64": "1.2.0-beta.12", "@lydell/node-pty-win32-arm64": "1.2.0-beta.12", "@lydell/node-pty-win32-x64": "1.2.0-beta.12" } }, "sha512-qIK890UwPupoj07osVvgOIa++1mxeHbcGry4PKRHhNVNs81V2SCG34eJr46GybiOmBtc8Sj5PB1/GGM5PL549g=="], @@ -1509,7 +1504,7 @@ "@malept/flatpak-bundler": ["@malept/flatpak-bundler@0.4.0", "", { "dependencies": { "debug": "^4.1.1", "fs-extra": "^9.0.0", "lodash": "^4.17.15", "tmp-promise": "^3.0.2" } }, "sha512-9QOtNffcOF/c1seMCDnjckb3R9WHcG34tky+FHpNKKCW0wc/scYLwMtO+ptyGUfMW0/b/n4qRiALlaFHc9Oj7Q=="], - "@marsidev/react-turnstile": ["@marsidev/react-turnstile@1.4.2", "", { "peerDependencies": { "react": "^17.0.2 || ^18.0.0 || ^19.0", "react-dom": "^17.0.2 || ^18.0.0 || ^19.0" } }, "sha512-xs1qOuyeMOz6t9BXXCXWiukC0/0+48vR08B7uwNdG05wCMnbcNgxiFmdFKDOFbM76qFYFRYlGeRfhfq1U/iZmA=="], + "@marsidev/react-turnstile": ["@marsidev/react-turnstile@1.6.2", "", { "peerDependencies": { "react": "^17.0.2 || ^18.0.0 || ^19.0", "react-dom": "^17.0.2 || ^18.0.0 || ^19.0" } }, "sha512-0CL9hNI/t39C8JfBCHQWj+A7llq2xdf9cjg0bYVbiywQlVS0bi1LTTTnF3S59OaBYgc+tMrxMedSDICJfaAkdg=="], "@mdx-js/mdx": ["@mdx-js/mdx@3.1.1", "", { "dependencies": { "@types/estree": "^1.0.0", "@types/estree-jsx": "^1.0.0", "@types/hast": "^3.0.0", "@types/mdx": "^2.0.0", "acorn": "^8.0.0", "collapse-white-space": "^2.0.0", "devlop": "^1.0.0", "estree-util-is-identifier-name": "^3.0.0", "estree-util-scope": "^1.0.0", "estree-walker": "^3.0.0", "hast-util-to-jsx-runtime": "^2.0.0", "markdown-extensions": "^2.0.0", "recma-build-jsx": "^1.0.0", "recma-jsx": "^1.0.0", "recma-stringify": "^1.0.0", "rehype-recma": "^1.0.0", "remark-mdx": "^3.0.0", "remark-parse": "^11.0.0", "remark-rehype": "^11.0.0", "source-map": "^0.7.0", "unified": "^11.0.0", "unist-util-position-from-estree": "^2.0.0", "unist-util-stringify-position": "^4.0.0", "unist-util-visit": "^5.0.0", "vfile": "^6.0.0" } }, "sha512-f6ZO2ifpwAQIpzGWaBQT2TXxPv6z3RBzQKpVftEWN78Vl/YweF1uwussDx8ECAXVtr3Rs89fKyG9YlzUs9DyGQ=="], @@ -1589,29 +1584,29 @@ "@oclif/plugin-not-found": ["@oclif/plugin-not-found@3.3.0", "", { "dependencies": { "@inquirer/prompts": "^7.10.1", "@oclif/core": "^4.13.3", "ansis": "^3.17.0", "fast-levenshtein": "^3.0.0" } }, "sha512-GbdWJOmmBO3xmrVjDXeWG7tXl4vzeGZ+af9ztCfAmhOPEkd/+eeAAadzQPeZoygedqCvsdux3QLq9/MAxusPKg=="], - "@octokit/auth-token": ["@octokit/auth-token@5.1.2", "", {}, "sha512-JcQDsBdg49Yky2w2ld20IHAlwr8d/d8N6NiOXbtuoPCqzbsiJgF633mVUw3x4mo0H5ypataQIX7SFu3yy44Mpw=="], + "@octokit/auth-token": ["@octokit/auth-token@6.0.0", "", {}, "sha512-P4YJBPdPSpWTQ1NU4XYdvHvXJJDxM6YwpS0FZHRgP7YFkdVxsWcpWGy/NVqlAA7PcPCnMacXlRm1y2PFZRWL/w=="], - "@octokit/core": ["@octokit/core@6.1.6", "", { "dependencies": { "@octokit/auth-token": "^5.0.0", "@octokit/graphql": "^8.2.2", "@octokit/request": "^9.2.3", "@octokit/request-error": "^6.1.8", "@octokit/types": "^14.0.0", "before-after-hook": "^3.0.2", "universal-user-agent": "^7.0.0" } }, "sha512-kIU8SLQkYWGp3pVKiYzA5OSaNF5EE03P/R8zEmmrG6XwOg5oBjXyQVVIauQ0dgau4zYhpZEhJrvIYt6oM+zZZA=="], + "@octokit/core": ["@octokit/core@7.0.8", "", { "dependencies": { "@octokit/auth-token": "^6.0.0", "@octokit/graphql": "^9.0.5", "@octokit/request": "^10.0.16", "@octokit/request-error": "^7.1.2", "@octokit/types": "^18.0.0", "before-after-hook": "^4.0.0", "universal-user-agent": "^7.0.0" } }, "sha512-L7y8eYc+AwxGr2PWI4WFt1VG4TiJ66c26BD16mXpYIlXxG0SMigM1+m4aTSlYyBr5BlQsGAlz8uDCoZN4SEMcg=="], - "@octokit/endpoint": ["@octokit/endpoint@10.1.4", "", { "dependencies": { "@octokit/types": "^14.0.0", "universal-user-agent": "^7.0.2" } }, "sha512-OlYOlZIsfEVZm5HCSR8aSg02T2lbUWOsCQoPKfTXJwDzcHQBrVBGdGXb89dv2Kw2ToZaRtudp8O3ZIYoaOjKlA=="], + "@octokit/endpoint": ["@octokit/endpoint@11.0.5", "", { "dependencies": { "@octokit/types": "^18.0.0", "universal-user-agent": "^7.0.2" } }, "sha512-iXa654H3yFafF/ieHkukfbgWo2rmXD2ceD0ZOtrPhw1bc3FDch1d9N/TNs0FQ1/cIbwb7kspUX8jzIs8nzb9DQ=="], - "@octokit/graphql": ["@octokit/graphql@8.2.2", "", { "dependencies": { "@octokit/request": "^9.2.3", "@octokit/types": "^14.0.0", "universal-user-agent": "^7.0.0" } }, "sha512-Yi8hcoqsrXGdt0yObxbebHXFOiUA+2v3n53epuOg1QUgOB6c4XzvisBNVXJSl8RYA5KrDuSL2yq9Qmqe5N0ryA=="], + "@octokit/graphql": ["@octokit/graphql@9.0.5", "", { "dependencies": { "@octokit/request": "^10.0.16", "@octokit/types": "^18.0.0", "universal-user-agent": "^7.0.0" } }, "sha512-bt/hm03LeU6Vy7FwTrkkC9p3XGT/lBwClglMqxBSe5/q0E5CdJTXeAqEI0vlw89/LF/G6tryTIH8HirZ3prMVg=="], - "@octokit/openapi-types": ["@octokit/openapi-types@25.1.0", "", {}, "sha512-idsIggNXUKkk0+BExUn1dQ92sfysJrje03Q0bv0e+KPLrvyqZF8MnBpFz8UNfYDwB3Ie7Z0TByjWfzxt7vseaA=="], + "@octokit/openapi-types": ["@octokit/openapi-types@29.0.1", "", {}, "sha512-9qWOMFNxxLokERcms42rU0PTLqQmVs7g5E41TI4mCOxmpFayD1rfC7XxOL55cG9MBZLFlC31BrR37myMKardwg=="], - "@octokit/plugin-paginate-rest": ["@octokit/plugin-paginate-rest@11.6.0", "", { "dependencies": { "@octokit/types": "^13.10.0" }, "peerDependencies": { "@octokit/core": ">=6" } }, "sha512-n5KPteiF7pWKgBIBJSk8qzoZWcUkza2O6A0za97pMGVrGfPdltxrfmfF5GucHYvHGZD8BdaZmmHGz5cX/3gdpw=="], + "@octokit/plugin-paginate-rest": ["@octokit/plugin-paginate-rest@14.0.0", "", { "dependencies": { "@octokit/types": "^16.0.0" }, "peerDependencies": { "@octokit/core": ">=6" } }, "sha512-fNVRE7ufJiAA3XUrha2omTA39M6IXIc6GIZLvlbsm8QOQCYvpq/LkMNGyFlB1d8hTDzsAXa3OKtybdMAYsV/fw=="], - "@octokit/plugin-request-log": ["@octokit/plugin-request-log@5.3.1", "", { "peerDependencies": { "@octokit/core": ">=6" } }, "sha512-n/lNeCtq+9ofhC15xzmJCNKP2BWTv8Ih2TTy+jatNCCq/gQP/V7rK3fjIfuz0pDWDALO/o/4QY4hyOF6TQQFUw=="], + "@octokit/plugin-request-log": ["@octokit/plugin-request-log@6.0.0", "", { "peerDependencies": { "@octokit/core": ">=6" } }, "sha512-UkOzeEN3W91/eBq9sPZNQ7sUBvYCqYbrrD8gTbBuGtHEuycE4/awMXcYvx6sVYo7LypPhmQwwpUe4Yyu4QZN5Q=="], - "@octokit/plugin-rest-endpoint-methods": ["@octokit/plugin-rest-endpoint-methods@13.5.0", "", { "dependencies": { "@octokit/types": "^13.10.0" }, "peerDependencies": { "@octokit/core": ">=6" } }, "sha512-9Pas60Iv9ejO3WlAX3maE1+38c5nqbJXV5GrncEfkndIpZrJ/WPMRd2xYDcPPEt5yzpxcjw9fWNoPhsSGzqKqw=="], + "@octokit/plugin-rest-endpoint-methods": ["@octokit/plugin-rest-endpoint-methods@17.0.0", "", { "dependencies": { "@octokit/types": "^16.0.0" }, "peerDependencies": { "@octokit/core": ">=6" } }, "sha512-B5yCyIlOJFPqUUeiD0cnBJwWJO8lkJs5d8+ze9QDP6SvfiXSz1BF+91+0MeI1d2yxgOhU/O+CvtiZ9jSkHhFAw=="], - "@octokit/request": ["@octokit/request@9.2.4", "", { "dependencies": { "@octokit/endpoint": "^10.1.4", "@octokit/request-error": "^6.1.8", "@octokit/types": "^14.0.0", "fast-content-type-parse": "^2.0.0", "universal-user-agent": "^7.0.2" } }, "sha512-q8ybdytBmxa6KogWlNa818r0k1wlqzNC+yNkcQDECHvQo8Vmstrg18JwqJHdJdUiHD2sjlwBgSm9kHkOKe2iyA=="], + "@octokit/request": ["@octokit/request@10.0.16", "", { "dependencies": { "@octokit/endpoint": "^11.0.5", "@octokit/request-error": "^7.1.2", "@octokit/types": "^18.0.0", "content-type": "^3.0.0", "json-with-bigint": "^3.5.12", "universal-user-agent": "^7.0.2" } }, "sha512-A0zWGjHzISIb+9ccG8s0dq7LKO5zVpJLRICjgUb+sJxEWqn8RUHB1rD3AE51+PECvXHIxqZ1VVvs4fHTSD9nUQ=="], - "@octokit/request-error": ["@octokit/request-error@6.1.8", "", { "dependencies": { "@octokit/types": "^14.0.0" } }, "sha512-WEi/R0Jmq+IJKydWlKDmryPcmdYSVjL3ekaiEL1L9eo1sUnqMJ+grqmC9cjk7CA7+b2/T397tO5d8YLOH3qYpQ=="], + "@octokit/request-error": ["@octokit/request-error@7.1.2", "", { "dependencies": { "@octokit/types": "^18.0.0" } }, "sha512-XZRuT3xZ84D3gYErI1DZvhJ33dCWVV6uzBtWkaBB4TvA/L6eOeTZodxLFVB44bBEEo3vEx7y00UfX1tBLrtLRg=="], - "@octokit/rest": ["@octokit/rest@21.1.1", "", { "dependencies": { "@octokit/core": "^6.1.4", "@octokit/plugin-paginate-rest": "^11.4.2", "@octokit/plugin-request-log": "^5.3.1", "@octokit/plugin-rest-endpoint-methods": "^13.3.0" } }, "sha512-sTQV7va0IUVZcntzy1q3QqPm/r8rWtDCqpRAmb8eXXnKkjoQEtFe3Nt5GTVsHft+R6jJoHeSiVLcgcvhtue/rg=="], + "@octokit/rest": ["@octokit/rest@22.0.1", "", { "dependencies": { "@octokit/core": "^7.0.6", "@octokit/plugin-paginate-rest": "^14.0.0", "@octokit/plugin-request-log": "^6.0.0", "@octokit/plugin-rest-endpoint-methods": "^17.0.0" } }, "sha512-Jzbhzl3CEexhnivb1iQ0KJ7s5vvjMWcmRtq5aUsKmKDrRW6z3r84ngmiFKFvpZjpiU/9/S6ITPFRpn5s/3uQJw=="], - "@octokit/types": ["@octokit/types@14.1.0", "", { "dependencies": { "@octokit/openapi-types": "^25.1.0" } }, "sha512-1y6DgTy8Jomcpu33N+p5w58l6xyt55Ar2I91RPiIA0xCJBXyUAhXCcmZaDWSANiha7R9a6qJJ2CRomGPZ6f46g=="], + "@octokit/types": ["@octokit/types@18.0.0", "", { "dependencies": { "@octokit/openapi-types": "^29.0.1" } }, "sha512-l6bAF43PNxkJp6g+W4PjoUSSkxHomXw2nOum5CTftJz1NlV3vu93NImgOYtLf6CbBUb5j+fiuzW0PPQ5JTSvZA=="], "@opentelemetry/api": ["@opentelemetry/api@1.9.1", "", {}, "sha512-gLyJlPHPZYdAk1JENA9LeHejZe1Ti77/pTeFm/nMXmQH/HFZlcS/O2XJB+L8fkbrNSqhdtlvjBVjxwUYanNH5Q=="], @@ -1679,45 +1674,45 @@ "@orama/orama": ["@orama/orama@3.1.18", "", {}, "sha512-a61ljmRVVyG5MC/698C8/FfFDw5a8LOIvyOLW5fztgUXqUpc1jOfQzOitSCbge657OgXXThmY3Tk8fpiDb4UcA=="], - "@oxc-parser/binding-android-arm-eabi": ["@oxc-parser/binding-android-arm-eabi@0.150.0", "", { "os": "android", "cpu": "arm" }, "sha512-oQef2Zu4Prz1KLKznz3HqZzU9uVoA5PMoDZuuLmqms7hKmKSAPzlaMnLllJq3t+rgKmfJJ2siPrpZfFrW06btw=="], + "@oxc-parser/binding-android-arm-eabi": ["@oxc-parser/binding-android-arm-eabi@0.153.0", "", { "os": "android", "cpu": "arm" }, "sha512-BcWu25dMwMjHpaDCEidmpAi7rGg1qZoihJeUUH9bD55pVZ0z4Wa5CQgqSTo0R41H81oozisQKW3WqvAN2m77IQ=="], - "@oxc-parser/binding-android-arm64": ["@oxc-parser/binding-android-arm64@0.150.0", "", { "os": "android", "cpu": "arm64" }, "sha512-B6ofpoFiAUwIZ0MJ2IgHPvZK8FAtL4qzSZRwOkAKIfxEobE1mQC8nDdiFZj7pUaJiVUVCsfkMsBJKedzO8rZvA=="], + "@oxc-parser/binding-android-arm64": ["@oxc-parser/binding-android-arm64@0.153.0", "", { "os": "android", "cpu": "arm64" }, "sha512-9l5rdp2DhRqVriBHsNpu5cEf+hizZ4B58rt93HzyQEBUgZiC6qe2oFpaAAnXGCxHGnQExI1s7S2G0QhFacUZ6w=="], - "@oxc-parser/binding-darwin-arm64": ["@oxc-parser/binding-darwin-arm64@0.150.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-J+9IHKzx/bSz1JetOfD4zKXSK9sOm4/a7+0qomJODcTL6JsRXGeV/ZdkAPSIDydfFmWzYCraMlQEosSZEyBYkQ=="], + "@oxc-parser/binding-darwin-arm64": ["@oxc-parser/binding-darwin-arm64@0.153.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-EcpsyRXHhENDpekpG4QNaSZj2F/BAz4Gh4o89zZwNss86R8KyRSQ6sXbAj74Xyeb4z3j/yBZZ6joQZhraIWyfw=="], - "@oxc-parser/binding-darwin-x64": ["@oxc-parser/binding-darwin-x64@0.150.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-v6IPfcAcSYrBWXV5Tce1DmxDMXLhEYpIIWiRFPJopgCVscZdLaV4MRQOUxvL3usQlw+yrwYOjBFB9IwBx+jUiQ=="], + "@oxc-parser/binding-darwin-x64": ["@oxc-parser/binding-darwin-x64@0.153.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-hlj80HUQy07/2lYp6rmxH+3u+H2ik3rjLR52CUdPApxmZCNxASDUf/+ykTzAHS/fehftmVMATKvPaWmuLHuasg=="], - "@oxc-parser/binding-freebsd-x64": ["@oxc-parser/binding-freebsd-x64@0.150.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-AoR/4jD02HET0KO0yNT4nbTE+XJUxiO9jB1X/ycEjUE3WrIJ3IjV/Vf+gskhWLcqqeXfvNnkDtBR7epllAm88A=="], + "@oxc-parser/binding-freebsd-x64": ["@oxc-parser/binding-freebsd-x64@0.153.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-fWRcv2pMSh1qtez46MOu8vuUJ5fiaQZPHSphbWulbL7SHBMKfRgZl2PzjXZYQJbq7NEXyXbgIuIuUm+/Rmkv8w=="], - "@oxc-parser/binding-linux-arm-gnueabihf": ["@oxc-parser/binding-linux-arm-gnueabihf@0.150.0", "", { "os": "linux", "cpu": "arm" }, "sha512-A/hycCFjLUrCmLoL5O/vBp40ohlaXO1Ta3v5hqYZxicYFs129wZmgZJggcW4mYGYbZebQLhup+N8JjeQl8qwyw=="], + "@oxc-parser/binding-linux-arm-gnueabihf": ["@oxc-parser/binding-linux-arm-gnueabihf@0.153.0", "", { "os": "linux", "cpu": "arm" }, "sha512-paZeUK1GXShl/bOJQET1/8AQxayFeuN4SIWAkgTRxE7ZQwv9uYSB2n0648smygP22N7jcI3zxAm0Z+ALNiIKxg=="], - "@oxc-parser/binding-linux-arm-musleabihf": ["@oxc-parser/binding-linux-arm-musleabihf@0.150.0", "", { "os": "linux", "cpu": "arm" }, "sha512-pbqahg1Pkz7J4RKmXm30s/iQu99hv64ayXCu8P4p75HcEH5azOdR4eGqiB6lFGkFR3mMpzaYsSKLkS8oJbjmeQ=="], + "@oxc-parser/binding-linux-arm-musleabihf": ["@oxc-parser/binding-linux-arm-musleabihf@0.153.0", "", { "os": "linux", "cpu": "arm" }, "sha512-qFPp5NwMf4K1C0O+DCVGmcbOaYyYAq98Rvv9p4VSfb777iUwlJCqMUxf6QG9N5f5ls4TEX6LitOZHi+6GL6rYQ=="], - "@oxc-parser/binding-linux-arm64-gnu": ["@oxc-parser/binding-linux-arm64-gnu@0.150.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-HV11aRbBQGwqv8bEo+K/6qr88uB4fEe1mhXncMhlVCrj+WpBSraxrUzHaPVmeQRU6x6x8v/3DuCbbo93rpp+fw=="], + "@oxc-parser/binding-linux-arm64-gnu": ["@oxc-parser/binding-linux-arm64-gnu@0.153.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-oufEhZCX7saeo27Logra8cvBR1jQ/yw2zUI2hHmWw3qA/XYqEW31FOvLQBv7DWN32NjVdlcaP11WBBZTJo4k9g=="], - "@oxc-parser/binding-linux-arm64-musl": ["@oxc-parser/binding-linux-arm64-musl@0.150.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-k6pVkJqALwtEuP4zukVhGRhdIy4+ofChUIUUsAHHyqDZlNsknmel3JjbggrJiWGaes6h/dIcWmEXsKW4SmK9oQ=="], + "@oxc-parser/binding-linux-arm64-musl": ["@oxc-parser/binding-linux-arm64-musl@0.153.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-zXYzuAqng85h6+LI3iRm0zeMLX1/K2z41ZAMWxVRgt0D10VvZUaV5q+TEB46KDhoKBpdexoTLC6QoB/EiP2oqQ=="], - "@oxc-parser/binding-linux-ppc64-gnu": ["@oxc-parser/binding-linux-ppc64-gnu@0.150.0", "", { "os": "linux", "cpu": "ppc64" }, "sha512-tEFg39mw/rHO5n8GK2DR4ZMFfsPQZtnQIPbsIpjoQRomJc/2tRfsCSmCT6gNit+NZGoeJG5aH9ATDH5bf0WnoQ=="], + "@oxc-parser/binding-linux-ppc64-gnu": ["@oxc-parser/binding-linux-ppc64-gnu@0.153.0", "", { "os": "linux", "cpu": "ppc64" }, "sha512-J7+NLwLEzdkKM9cKyPHH/AjXXstWOs98KYgLrPPnO4N9MO8EZRBfPNnBcS3S67uMOBkRpUmCl2FhRnWdQ5CbBA=="], - "@oxc-parser/binding-linux-riscv64-gnu": ["@oxc-parser/binding-linux-riscv64-gnu@0.150.0", "", { "os": "linux", "cpu": "none" }, "sha512-0JO7IFkoek6HqV589Menx3hJySNXi6quRhO4tq2P7kpEHKEXoDATnoPVUpn5B7gDH2KLkdo751N0uIrGJFCTCw=="], + "@oxc-parser/binding-linux-riscv64-gnu": ["@oxc-parser/binding-linux-riscv64-gnu@0.153.0", "", { "os": "linux", "cpu": "none" }, "sha512-sD0K11GQTLWylln54nPMMTtgmBbQrR5It/vMpZpy/fogiw8O2AvIE+9LuWUXddrWk9zvFIHGRcSgFn4IHOfoYg=="], - "@oxc-parser/binding-linux-riscv64-musl": ["@oxc-parser/binding-linux-riscv64-musl@0.150.0", "", { "os": "linux", "cpu": "none" }, "sha512-7XPzREnyAS5wHU9aB+49Uaqgoo1gVCklHc3DRlc3fJy2tXD/eAJFN1QFz/crj+Ulup5P1+axNREF+/RGaB/IRA=="], + "@oxc-parser/binding-linux-riscv64-musl": ["@oxc-parser/binding-linux-riscv64-musl@0.153.0", "", { "os": "linux", "cpu": "none" }, "sha512-7L66uql2BhvSz51LwfExjOdn6et/ydTiQxl23VApdKzJhTc3TczA1Qt6VR/UcvlQrL2ZbytIJb447vh7p5wmUw=="], - "@oxc-parser/binding-linux-s390x-gnu": ["@oxc-parser/binding-linux-s390x-gnu@0.150.0", "", { "os": "linux", "cpu": "s390x" }, "sha512-7n7ZxcbRWDFaTdyj8M8p0O9OfzoMKm8O6syBAIgcSutbOALq0Bb9G52Me+XH0anMLZV+NgXc726gqgG2q39vcQ=="], + "@oxc-parser/binding-linux-s390x-gnu": ["@oxc-parser/binding-linux-s390x-gnu@0.153.0", "", { "os": "linux", "cpu": "s390x" }, "sha512-hXV3T7mNyrPR19rbPYkglkQJtoM/UNo/xwbZeeqdAxEg8PXgb4LXXuxPpGgI4bzRRCWwLUxdDSS58xIyC2u1TA=="], - "@oxc-parser/binding-linux-x64-gnu": ["@oxc-parser/binding-linux-x64-gnu@0.150.0", "", { "os": "linux", "cpu": "x64" }, "sha512-Vx0GSA9ZCRTUiczoEQnIIyXkMvtEY8uc6IiwLQtMe5ci2sXPqjrry0Ek5fsPP1k2kCzkML3ow9UOOEgnEDi7Bw=="], + "@oxc-parser/binding-linux-x64-gnu": ["@oxc-parser/binding-linux-x64-gnu@0.153.0", "", { "os": "linux", "cpu": "x64" }, "sha512-Da8Vqs1xdtoDYtEjmozD7wGgJeLBQkMbR0WUBECOSxodyX5DXy8ySlvJWbukyO2Q0+TM9EK+4LT6tbq0jCg4hQ=="], - "@oxc-parser/binding-linux-x64-musl": ["@oxc-parser/binding-linux-x64-musl@0.150.0", "", { "os": "linux", "cpu": "x64" }, "sha512-ii4/9m3viDLssMnfXU7/Pni/3nYplApuGayceX4qsVGaqqQJCx3tHIH9M/HWIeSty5i8LjS21zPYT6lVIkwLxw=="], + "@oxc-parser/binding-linux-x64-musl": ["@oxc-parser/binding-linux-x64-musl@0.153.0", "", { "os": "linux", "cpu": "x64" }, "sha512-zGAPxNTIIw6X5WyTRscIFE/oDjpdNtrrl32ing6NOXdGjzRucadnxBilexLdeYQ9YxixF93GujpXyQ0jw7ddSg=="], - "@oxc-parser/binding-openharmony-arm64": ["@oxc-parser/binding-openharmony-arm64@0.150.0", "", { "os": "none", "cpu": "arm64" }, "sha512-ZtoxX5rez36ZWkwtiEhjkCPnlTPoQ2I7lIL0IYZ1yjxMYohbvoOjBmUIZzrf9W/HouONq0omIfTeCWEY+R380w=="], + "@oxc-parser/binding-openharmony-arm64": ["@oxc-parser/binding-openharmony-arm64@0.153.0", "", { "os": "none", "cpu": "arm64" }, "sha512-GoHzpqP5XyPIp9DHokoEdCp+K4UPl/h1neFj1uXnUB3pJYyOQ7NOhFVOttNUgCGcj2eywAvu5cRivTOSq4S10g=="], - "@oxc-parser/binding-win32-arm64-msvc": ["@oxc-parser/binding-win32-arm64-msvc@0.150.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-VqeRb5JX/bKYBrff7TUDvJyKY0914UzuCkuXIGxJS4FUmvMNfqkCbc7Sq90iMz9DlmAtlggwaBYQ9eg3h3ltiw=="], + "@oxc-parser/binding-win32-arm64-msvc": ["@oxc-parser/binding-win32-arm64-msvc@0.153.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-xGcy12tO9k7zFbeyQzEuilfWfQpyRq23/fLPfN3wjSWuWv58k46fQT1hsO1KFNykZuVGW9xSJE/z592TmAoSDA=="], - "@oxc-parser/binding-win32-ia32-msvc": ["@oxc-parser/binding-win32-ia32-msvc@0.150.0", "", { "os": "win32", "cpu": "ia32" }, "sha512-EPqJfeZ4Pgg2BJSsCV8GozxV0FDltRzpVtGVa1r2noJu1iu+opOw3gtBWXwIo9odCT/MdFfyHxdy0/CRqs3OqA=="], + "@oxc-parser/binding-win32-ia32-msvc": ["@oxc-parser/binding-win32-ia32-msvc@0.153.0", "", { "os": "win32", "cpu": "ia32" }, "sha512-o1ykUjWncvXX6N5a4KebgLjtD8zRui+f1llMhSGoSC9oP2KOqapRpdwmZ3NcNG0axFouwVKmhGBjd+IhA8BksA=="], - "@oxc-parser/binding-win32-x64-msvc": ["@oxc-parser/binding-win32-x64-msvc@0.150.0", "", { "os": "win32", "cpu": "x64" }, "sha512-n5YMzbqwPQqozbkrexi0lNZrUz5cnPHalYpFWe6Dau7AmKIWNo+y24IwzDuZEQtEdUHuKhXmMMih/MPjOI+CMw=="], + "@oxc-parser/binding-win32-x64-msvc": ["@oxc-parser/binding-win32-x64-msvc@0.153.0", "", { "os": "win32", "cpu": "x64" }, "sha512-gxQz7G96Up136fd+2zWrP+o6FYGs9NO4Dyv55IoeJFJUDwLFHcLYY11hhA5wQKs0HoM57Q8esQ3nEVhnCdsjAQ=="], - "@oxc-project/types": ["@oxc-project/types@0.150.0", "", {}, "sha512-rDS5/31E9HfPl/CIzGrn0DOlvBbXFseQ5URJ9sYMfstbKLD/c6Gm9vmRzRGDdAXyOIL4zmO37lc9RIwYqVruZw=="], + "@oxc-project/types": ["@oxc-project/types@0.153.0", "", {}, "sha512-jSNrRIyvPVLL5E1z/tS5zLAprosGz/FuI1PWwEOz59j3E4TTTzSpqKb/RDGqJhhW0QHYISGXxq582wGx6T11Tw=="], "@oxc-resolver/binding-android-arm-eabi": ["@oxc-resolver/binding-android-arm-eabi@11.24.2", "", { "os": "android", "cpu": "arm" }, "sha512-y09e0L0SRI2OA2tUIrjBgoV3eH5hvUKXNkJqXmNo5V2WxIjyC7I7aJfRLMEVpA8yi95f90gFDvO0VMgrDw+vwA=="], @@ -1771,17 +1766,15 @@ "@pinojs/redact": ["@pinojs/redact@0.4.0", "", {}, "sha512-k2ENnmBugE/rzQfEcdWHcCY+/FM3VLzH9cYEsbdsoqrvzAKRhUZeRNhAZvB8OitQJ1TBed3yqWtdjzS6wJKBwg=="], - "@pkgjs/parseargs": ["@pkgjs/parseargs@0.11.0", "", {}, "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg=="], - "@playwright/browser-chromium": ["@playwright/browser-chromium@1.62.1", "", { "dependencies": { "playwright-core": "1.62.1" } }, "sha512-DU/t4TSqHvAc+uFMt972forQYqBTh/ul7lZ8U81HYGyxnf6vSPPz9NzuE0OR3x/elqvvGm+n4gcny+QSKT+FDw=="], "@playwright/test": ["@playwright/test@1.61.1", "", { "dependencies": { "playwright": "1.61.1" }, "bin": { "playwright": "cli.js" } }, "sha512-8nKv6+0RJSL9FE4jYOEGXnPeM/Hg12qZpmqzZjRh3qM0Y7c3z1mrOTfFLids72RDQYVh9WpLEfR5WdpNX4fkig=="], - "@posthog/browser-common": ["@posthog/browser-common@0.5.1", "", { "dependencies": { "@posthog/core": "^1.48.10", "@posthog/types": "^1.405.2" } }, "sha512-zdxfms2pIYJOMqEukqfYWLuXn/xawewR6FEMk2yrgvGCf/Ip9JiguN1n/Wz4WAhBYxw8E8hKEe3gC27kAxZUjQ=="], + "@posthog/browser-common": ["@posthog/browser-common@0.9.4", "", { "dependencies": { "@posthog/core": "^1.57.4", "@posthog/types": "^1.415.2" } }, "sha512-QlG0WZFG9iTp9cmXTypB4cgnxBAD3GImrj9AwmA84uh8uy5vIVgVLjoTTdOAW29XL+kh/eLn/5ZtBQt2JQfR+w=="], - "@posthog/core": ["@posthog/core@1.48.10", "", { "dependencies": { "@posthog/types": "^1.405.2" } }, "sha512-Y70zhdQFNMwHHZk9MW44MJUR1DyFm0Cn3DOtd+wQYnGv+kX+qc6CA+pBtEmZe2XD0K9uuOKiz2LJwzaq/wz0FA=="], + "@posthog/core": ["@posthog/core@1.58.1", "", { "dependencies": { "@posthog/types": "^1.415.3" } }, "sha512-z0ISzMUoF1izukfLIUSjGZBdO5H2BPdqN8MX27OKYGQ1sDj/r+WW9Nq7m5WsQY56NOxVsFtHClx9iHj6MYM3Tg=="], - "@posthog/types": ["@posthog/types@1.405.3", "", {}, "sha512-HApKJSYfwo/z2KIVB98E/8XwEL3pTXawBp0AB7FKRVtStz9hizRlaO6n9RR7sjgXLnOLvqj++CGsZb8rQbOS2g=="], + "@posthog/types": ["@posthog/types@1.415.3", "", {}, "sha512-y90ARRBbyXcZDwuXXXvAnbjiuxQ+4FmUI4sasI19AHOPgdWPyd2Kpo0c0B2pKIR+fq+BcRokhF35eAdA54Mfbw=="], "@prisma/config": ["@prisma/config@6.19.3", "", { "dependencies": { "c12": "3.1.0", "deepmerge-ts": "7.1.5", "effect": "3.21.0", "empathic": "2.0.0" } }, "sha512-CBPT44BjlQxEt8kiMEauji2WHTDoVBOKl7UlewXmUgBPnr/oPRZC3psci5chJnYmH0ivEIog2OU9PGWoki3DLQ=="], @@ -1807,75 +1800,75 @@ "@radix-ui/number": ["@radix-ui/number@1.1.3", "", {}, "sha512-Road2bidD0uu/1BGDOWNdPI06g0lIRy6IF9GZcIrDK2KGItfor8IQwQa+yM2ERgHM1MmHxaxpTzk0/Jp42lNfA=="], - "@radix-ui/primitive": ["@radix-ui/primitive@1.1.7", "", {}, "sha512-rqWnm76nYT8HoNNqEjpgJ7Pw/DrBj5iBTrmEPo6HTX5+VJyBNOqTdv4g89G63HuR5g0AaENoAcH7Is5fF2kZ8Q=="], + "@radix-ui/primitive": ["@radix-ui/primitive@1.2.0", "", {}, "sha512-KABY+VMIRPJL+Vyzv/335FEhXXD/xDv8BMb1kl48/aXJZMH0LtHCTx5ga5RnxaEP3nZHtmTLf1P9vanmFX46bw=="], "@radix-ui/react-accordion": ["@radix-ui/react-accordion@1.2.14", "", { "dependencies": { "@radix-ui/primitive": "1.1.4", "@radix-ui/react-collapsible": "1.1.14", "@radix-ui/react-collection": "1.1.10", "@radix-ui/react-compose-refs": "1.1.3", "@radix-ui/react-context": "1.1.4", "@radix-ui/react-direction": "1.1.2", "@radix-ui/react-id": "1.1.2", "@radix-ui/react-primitive": "2.1.6", "@radix-ui/react-use-controllable-state": "1.2.3" }, "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" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-iE8YB9nmTBH8zd73ofBISZ8JCzgMoMkATJr7qDwa6u5F1+7mTM81V6fa71jgZ65rpjVpecDf1vSnwIFP9Ly1zw=="], - "@radix-ui/react-arrow": ["@radix-ui/react-arrow@1.1.15", "", { "dependencies": { "@radix-ui/react-primitive": "2.1.10" }, "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" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-v4zggRcjadnI+ClKDuijlQEW4tw3NoaeHc/PwpKnLoLLKNUG4InLegkstooLcRIUWCs+8L22dGURCVuFfOKfnA=="], + "@radix-ui/react-arrow": ["@radix-ui/react-arrow@1.1.17", "", { "dependencies": { "@radix-ui/react-primitive": "2.2.0" }, "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" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-67jjcVvxjXCCStnTW3Z+M7jmaFMuMR7M2JgpDzH4w7JSRrikmzhjfYgP/09ECb8n7whnsgh1ifJ+Ie96qEj+pQ=="], - "@radix-ui/react-avatar": ["@radix-ui/react-avatar@1.2.6", "", { "dependencies": { "@radix-ui/primitive": "1.1.7", "@radix-ui/react-context": "1.2.2", "@radix-ui/react-primitive": "2.1.10", "@radix-ui/react-use-callback-ref": "1.1.4", "@radix-ui/react-use-is-hydrated": "0.1.3", "@radix-ui/react-use-layout-effect": "1.1.4" }, "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" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-4ULOTJ/mqy2hT9GlWa/MFHxHSvH3nJzHnZM1waNsc5Bonv7i70aNenghXmD97S6OJ81ekXONGGt4nT1r0PfEdA=="], + "@radix-ui/react-avatar": ["@radix-ui/react-avatar@1.3.1", "", { "dependencies": { "@radix-ui/primitive": "1.2.0", "@radix-ui/react-context": "1.3.0", "@radix-ui/react-primitive": "2.2.0", "@radix-ui/react-use-callback-ref": "1.1.5", "@radix-ui/react-use-is-hydrated": "0.1.3", "@radix-ui/react-use-layout-effect": "1.1.4" }, "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" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-ssZOkfQNkFpYVmCPQlr978xSaU7moSrGXdwg4j2Xs2WlGl/1KsSZtfpK+WnLnx0Rwll1BAh6oUrAy/uR31SBvQ=="], - "@radix-ui/react-checkbox": ["@radix-ui/react-checkbox@1.3.11", "", { "dependencies": { "@radix-ui/primitive": "1.1.7", "@radix-ui/react-compose-refs": "1.1.5", "@radix-ui/react-context": "1.2.2", "@radix-ui/react-presence": "1.1.10", "@radix-ui/react-primitive": "2.1.10", "@radix-ui/react-use-controllable-state": "1.2.6", "@radix-ui/react-use-size": "1.1.4" }, "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" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-Gnptr9pDDQxD3hgq2dtPbtrp/c2qH1mBwIzw3X/ivrMb2e1t0jMTi606fVEqFPaQR1ggXIVQWKj3P2WW9v7zGQ=="], + "@radix-ui/react-checkbox": ["@radix-ui/react-checkbox@1.4.1", "", { "dependencies": { "@radix-ui/primitive": "1.2.0", "@radix-ui/react-compose-refs": "1.1.5", "@radix-ui/react-context": "1.3.0", "@radix-ui/react-presence": "1.1.11", "@radix-ui/react-primitive": "2.2.0", "@radix-ui/react-use-controllable-state": "1.3.0", "@radix-ui/react-use-size": "1.1.5" }, "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" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-KWtwhh+98ML3seZ9vO9yRY2OwaQG90dCiDAxjpSNY2AaZ3Hik3B0dsk6m0ILywo/no3A9/SozadyPMNweVT8yw=="], - "@radix-ui/react-collapsible": ["@radix-ui/react-collapsible@1.1.20", "", { "dependencies": { "@radix-ui/primitive": "1.1.7", "@radix-ui/react-compose-refs": "1.1.5", "@radix-ui/react-context": "1.2.2", "@radix-ui/react-id": "1.1.4", "@radix-ui/react-presence": "1.1.10", "@radix-ui/react-primitive": "2.1.10", "@radix-ui/react-use-controllable-state": "1.2.6", "@radix-ui/react-use-layout-effect": "1.1.4" }, "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" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-mcGesGplBnzN2sbvJETzpCNfSMyPnb29q1GRLU+Ib7bJrpIG2ywmRoh2V5VbA2uNvKikKUlVbAPks7JDjz4A8Q=="], + "@radix-ui/react-collapsible": ["@radix-ui/react-collapsible@1.2.1", "", { "dependencies": { "@radix-ui/primitive": "1.2.0", "@radix-ui/react-compose-refs": "1.1.5", "@radix-ui/react-context": "1.3.0", "@radix-ui/react-id": "1.1.4", "@radix-ui/react-presence": "1.1.11", "@radix-ui/react-primitive": "2.2.0", "@radix-ui/react-use-controllable-state": "1.3.0", "@radix-ui/react-use-layout-effect": "1.1.4" }, "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" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-fSzLb/qy1wuZSxQBcxpW0hNXYHDMWiIXDGyJGdA4+FSLknOWZsNRrTCUavxb4PI8b8lvHo/CysO6NVi5zLpo5g=="], - "@radix-ui/react-collection": ["@radix-ui/react-collection@1.1.15", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.5", "@radix-ui/react-context": "1.2.2", "@radix-ui/react-primitive": "2.1.10", "@radix-ui/react-slot": "1.3.3" }, "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" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-9W+B9NPF0NaaPh/1NJd3+KqsnlLqU9H7T2rvww+fp+T/evVXdNAyYcnfRQZFOjkR1ajQp3yORlqnI8soawLvNA=="], + "@radix-ui/react-collection": ["@radix-ui/react-collection@1.2.0", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.5", "@radix-ui/react-context": "1.3.0", "@radix-ui/react-primitive": "2.2.0", "@radix-ui/react-slot": "1.5.0", "@radix-ui/react-use-layout-effect": "1.1.4" }, "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" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-+yiQzqcc7Sy7/5s0jrMCjpPRFB3538VNrXPWdTLZhE/SCfgEws4aI6lHWN/vvcnyhHndROWBzqmqB4QBrITZ9Q=="], "@radix-ui/react-compose-refs": ["@radix-ui/react-compose-refs@1.1.5", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-+48PbAAbq3didjJxa+OaWY2ZwgAKsNiRGyeHKszblZMQ+kcpd9pAaT11cMkGEie0vsOi3QdeTE6d5Fe3Gn61kA=="], - "@radix-ui/react-context": ["@radix-ui/react-context@1.2.2", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-RHCUGwKHDr0hDGg4X7ma4JG4/+12qxw8rkh5QKdDldlCvtja6nUx1Ef/8HVrJze81lEsgLQlqjzjGNHantgnQA=="], + "@radix-ui/react-context": ["@radix-ui/react-context@1.3.0", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-v5AYEocMISkbJ+1fTXzZpiFv7NRr3D2WiYbLIKf+FkmJ8VkP6d503eV2n34MFussHXY1pcoq3yfJiQH77dc4Mg=="], - "@radix-ui/react-dialog": ["@radix-ui/react-dialog@1.1.23", "", { "dependencies": { "@radix-ui/primitive": "1.1.7", "@radix-ui/react-compose-refs": "1.1.5", "@radix-ui/react-context": "1.2.2", "@radix-ui/react-dismissable-layer": "1.1.19", "@radix-ui/react-focus-guards": "1.1.6", "@radix-ui/react-focus-scope": "1.1.16", "@radix-ui/react-id": "1.1.4", "@radix-ui/react-portal": "1.1.17", "@radix-ui/react-presence": "1.1.10", "@radix-ui/react-primitive": "2.1.10", "@radix-ui/react-slot": "1.3.3", "@radix-ui/react-use-controllable-state": "1.2.6", "@radix-ui/react-use-layout-effect": "1.1.4", "aria-hidden": "^1.2.4", "react-remove-scroll": "^2.7.2" }, "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" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-Ksw4WeROkO4rC9k/onilX/Ao2Cr1ku1unMNH+XSCcP4jSXYu7HDsg9n4ojMjVb22XpYjAQ9qfrFlVbru1vXDUA=="], + "@radix-ui/react-dialog": ["@radix-ui/react-dialog@1.3.1", "", { "dependencies": { "@radix-ui/primitive": "1.2.0", "@radix-ui/react-compose-refs": "1.1.5", "@radix-ui/react-context": "1.3.0", "@radix-ui/react-dismissable-layer": "1.2.1", "@radix-ui/react-focus-guards": "1.2.0", "@radix-ui/react-focus-scope": "1.3.1", "@radix-ui/react-id": "1.1.4", "@radix-ui/react-portal": "1.2.0", "@radix-ui/react-presence": "1.1.11", "@radix-ui/react-primitive": "2.2.0", "@radix-ui/react-slot": "1.5.0", "@radix-ui/react-use-controllable-state": "1.3.0", "@radix-ui/react-use-layout-effect": "1.1.4", "aria-hidden": "^1.2.4", "react-remove-scroll": "^2.7.2" }, "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" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-+0E4qvVTwjAWra9sEhJ+9BTsvHE00zkUuNw1VGh7S+Gc13dfYk+S1PVQdchWDj+XYHhAai7Z7IpzXVDCGsDplg=="], - "@radix-ui/react-direction": ["@radix-ui/react-direction@1.1.4", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-5pzg4FGQNpExhnhT2zlrP1wZFaYCd1K0nYWoFAdcYoYK868IEigqMX3B3f8yIoRlAhAeDWciLI6ZdCKHF9P4Vg=="], + "@radix-ui/react-direction": ["@radix-ui/react-direction@1.2.0", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-FtRA52a/r+LKStFT+neLUm+8vSe7wbzkbQGGeU8ixFiwC8NU14Evoq9ATECqL3eGbcUzJR4fyfA4KkK/q6dfqg=="], - "@radix-ui/react-dismissable-layer": ["@radix-ui/react-dismissable-layer@1.1.19", "", { "dependencies": { "@radix-ui/primitive": "1.1.7", "@radix-ui/react-compose-refs": "1.1.5", "@radix-ui/react-primitive": "2.1.10", "@radix-ui/react-use-callback-ref": "1.1.4", "@radix-ui/react-use-effect-event": "0.0.5" }, "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" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-8g4pfOL9HoKKLWGiypT+dphVqjFfmcXO5GBnhsG6zI+lxAx/8feQpr+1LSN8Re3hiZ+XkLNS4O9ztK11/LzQ6w=="], + "@radix-ui/react-dismissable-layer": ["@radix-ui/react-dismissable-layer@1.2.1", "", { "dependencies": { "@radix-ui/primitive": "1.2.0", "@radix-ui/react-compose-refs": "1.1.5", "@radix-ui/react-primitive": "2.2.0", "@radix-ui/react-use-callback-ref": "1.1.5", "@radix-ui/react-use-effect-event": "0.0.5" }, "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" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-KIfDcAsx+oVylFZ4xryVKusJUrLLhTQmfnJW4kwk4Km5myvhHCrj04hnWWUC166+xD4DHdH8tQGylwYX1h6+Pg=="], - "@radix-ui/react-dropdown-menu": ["@radix-ui/react-dropdown-menu@2.1.24", "", { "dependencies": { "@radix-ui/primitive": "1.1.7", "@radix-ui/react-compose-refs": "1.1.5", "@radix-ui/react-context": "1.2.2", "@radix-ui/react-id": "1.1.4", "@radix-ui/react-menu": "2.1.24", "@radix-ui/react-primitive": "2.1.10", "@radix-ui/react-use-controllable-state": "1.2.6" }, "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" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-geq8l2rJkxvkXsT9RMgtUE3P8pITFpTsvYpbySi1IH4fZEABD/Gp85myayFgxk0ktljGMJnCbeFkyTusvSvv7g=="], + "@radix-ui/react-dropdown-menu": ["@radix-ui/react-dropdown-menu@2.2.1", "", { "dependencies": { "@radix-ui/primitive": "1.2.0", "@radix-ui/react-compose-refs": "1.1.5", "@radix-ui/react-context": "1.3.0", "@radix-ui/react-id": "1.1.4", "@radix-ui/react-menu": "2.2.1", "@radix-ui/react-primitive": "2.2.0", "@radix-ui/react-use-controllable-state": "1.3.0" }, "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" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-XsHcmYG2AcqnvTqrOXXWcMrhquEIlqucizuDH1MV/qMRW+DndpBCMvNeTRXOxqmG1H5j89M/+I0/34Zdd+zDcQ=="], - "@radix-ui/react-focus-guards": ["@radix-ui/react-focus-guards@1.1.6", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-RNOJjfZMTyBM6xYmV3IVGXkPjIhcBAuv48POevAXwrGJhkWZ9p1rFoIS1JFooPuT193AZmRsCPhpoVJxx6OPoQ=="], + "@radix-ui/react-focus-guards": ["@radix-ui/react-focus-guards@1.2.0", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-MPm5R0iRGUDrDnPNxmLBkv+X7pN4XKzt+MbWJEuJQsH3NFH4omrbpXpucyYCCKTSt+na/ZxGhEWQrWTZ0285cA=="], - "@radix-ui/react-focus-scope": ["@radix-ui/react-focus-scope@1.1.16", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.5", "@radix-ui/react-primitive": "2.1.10", "@radix-ui/react-use-callback-ref": "1.1.4" }, "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" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-wmRZ2WWLvmt6KHy2rNPOdPUjwq5xOHY02+m+udwJTn0aNIox/rkskAvJTyTLGhPK6KgrUjlJUJpgmx/+wFiFIQ=="], + "@radix-ui/react-focus-scope": ["@radix-ui/react-focus-scope@1.3.1", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.5", "@radix-ui/react-primitive": "2.2.0", "@radix-ui/react-use-callback-ref": "1.1.5" }, "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" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-ugeMhbXt4y5S2T1GnIqbWDKEN962PDwnX1fN0eKOOgf5f63Dh2mn8F1FUySlgW0iF6GiVsRF32DzuDIWTUyQJg=="], "@radix-ui/react-id": ["@radix-ui/react-id@1.1.4", "", { "dependencies": { "@radix-ui/react-use-layout-effect": "1.1.4" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-TMQp2llA+RYn7JcjnrMnz7wN4pcVttPZnRZo52PLQsoLVKzNlVwUeHmfePgTgRluXFvlD3GD5g5MOVVTJCO0qA=="], - "@radix-ui/react-label": ["@radix-ui/react-label@2.1.15", "", { "dependencies": { "@radix-ui/react-primitive": "2.1.10" }, "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" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-o/rdYEwZTTo5tjknnPeyQFU45kUC4i/XyeDPP+HGyi6XqpOP6Zf5Ya5vh/Yfe9Id5JiuWnnAx2XqIeD3UYZt0g=="], + "@radix-ui/react-label": ["@radix-ui/react-label@2.1.17", "", { "dependencies": { "@radix-ui/react-primitive": "2.2.0" }, "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" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-xmj7MN/drx1oUAXkfiFIvyDmGNUIN/omGobvA5oAoNqu9zO2MkISYGZOkBcqSzs/UZXXwV+/3ACRE7q7mGcmkA=="], - "@radix-ui/react-menu": ["@radix-ui/react-menu@2.1.24", "", { "dependencies": { "@radix-ui/primitive": "1.1.7", "@radix-ui/react-collection": "1.1.15", "@radix-ui/react-compose-refs": "1.1.5", "@radix-ui/react-context": "1.2.2", "@radix-ui/react-direction": "1.1.4", "@radix-ui/react-dismissable-layer": "1.1.19", "@radix-ui/react-focus-guards": "1.1.6", "@radix-ui/react-focus-scope": "1.1.16", "@radix-ui/react-id": "1.1.4", "@radix-ui/react-popper": "1.3.7", "@radix-ui/react-portal": "1.1.17", "@radix-ui/react-presence": "1.1.10", "@radix-ui/react-primitive": "2.1.10", "@radix-ui/react-roving-focus": "1.1.19", "@radix-ui/react-slot": "1.3.3", "@radix-ui/react-use-callback-ref": "1.1.4", "aria-hidden": "^1.2.4", "react-remove-scroll": "^2.7.2" }, "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" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-uW7RVuU6Lp/ZtfeY4b3kL32zccgEWvPv1+cf17ubYzHa9cL8AHokmk36cG/XEiH/smbQvumnieXX9j/e9RqJWA=="], + "@radix-ui/react-menu": ["@radix-ui/react-menu@2.2.1", "", { "dependencies": { "@radix-ui/primitive": "1.2.0", "@radix-ui/react-collection": "1.2.0", "@radix-ui/react-compose-refs": "1.1.5", "@radix-ui/react-context": "1.3.0", "@radix-ui/react-direction": "1.2.0", "@radix-ui/react-dismissable-layer": "1.2.1", "@radix-ui/react-focus-guards": "1.2.0", "@radix-ui/react-focus-scope": "1.3.1", "@radix-ui/react-id": "1.1.4", "@radix-ui/react-popper": "1.4.0", "@radix-ui/react-portal": "1.2.0", "@radix-ui/react-presence": "1.1.11", "@radix-ui/react-primitive": "2.2.0", "@radix-ui/react-roving-focus": "1.2.1", "@radix-ui/react-slot": "1.5.0", "@radix-ui/react-use-callback-ref": "1.1.5", "aria-hidden": "^1.2.4", "react-remove-scroll": "^2.7.2" }, "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" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-G34BsU90SBj5foYpz8pQqq/Q0Dlfyyl6KitWEfRwXC0QvfwhWNAwS49DWP2+rRJ0iwv20Z2Qx7Sk+T03bGo5JA=="], "@radix-ui/react-navigation-menu": ["@radix-ui/react-navigation-menu@1.2.16", "", { "dependencies": { "@radix-ui/primitive": "1.1.4", "@radix-ui/react-collection": "1.1.10", "@radix-ui/react-compose-refs": "1.1.3", "@radix-ui/react-context": "1.1.4", "@radix-ui/react-direction": "1.1.2", "@radix-ui/react-dismissable-layer": "1.1.13", "@radix-ui/react-id": "1.1.2", "@radix-ui/react-presence": "1.1.6", "@radix-ui/react-primitive": "2.1.6", "@radix-ui/react-use-callback-ref": "1.1.2", "@radix-ui/react-use-controllable-state": "1.2.3", "@radix-ui/react-use-layout-effect": "1.1.2", "@radix-ui/react-use-previous": "1.1.2", "@radix-ui/react-visually-hidden": "1.2.6" }, "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" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-nJ0SkrSQgudyYhMiYeHA1ayLVuduEJCFLan1RZZN7c9kqzzCFLaU9kuy81uNtqzweM9YaQPgWzxi9MwQ9jZ04g=="], - "@radix-ui/react-popover": ["@radix-ui/react-popover@1.1.23", "", { "dependencies": { "@radix-ui/primitive": "1.1.7", "@radix-ui/react-compose-refs": "1.1.5", "@radix-ui/react-context": "1.2.2", "@radix-ui/react-dismissable-layer": "1.1.19", "@radix-ui/react-focus-guards": "1.1.6", "@radix-ui/react-focus-scope": "1.1.16", "@radix-ui/react-id": "1.1.4", "@radix-ui/react-popper": "1.3.7", "@radix-ui/react-portal": "1.1.17", "@radix-ui/react-presence": "1.1.10", "@radix-ui/react-primitive": "2.1.10", "@radix-ui/react-slot": "1.3.3", "@radix-ui/react-use-controllable-state": "1.2.6", "aria-hidden": "^1.2.4", "react-remove-scroll": "^2.7.2" }, "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" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-mw58MrBlyHWFisTOYignD0vf/3gdcgAR+9of1s9G/38CbFiUwH1nCDkc0AUM9IrXFgN5Ue8n45j9WCgyM1sbiQ=="], + "@radix-ui/react-popover": ["@radix-ui/react-popover@1.3.1", "", { "dependencies": { "@radix-ui/primitive": "1.2.0", "@radix-ui/react-compose-refs": "1.1.5", "@radix-ui/react-context": "1.3.0", "@radix-ui/react-dismissable-layer": "1.2.1", "@radix-ui/react-focus-guards": "1.2.0", "@radix-ui/react-focus-scope": "1.3.1", "@radix-ui/react-id": "1.1.4", "@radix-ui/react-popper": "1.4.0", "@radix-ui/react-portal": "1.2.0", "@radix-ui/react-presence": "1.1.11", "@radix-ui/react-primitive": "2.2.0", "@radix-ui/react-slot": "1.5.0", "@radix-ui/react-use-controllable-state": "1.3.0", "@radix-ui/react-use-layout-effect": "1.1.4", "aria-hidden": "^1.2.4", "react-remove-scroll": "^2.7.2" }, "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" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-ZNxvXRx5W2Wos4fXCXb5lpdqN0Z5chf+mStOUOTr4ik7d+62MRvoe9rzCA/eGNg36lxXqSrKEKmwuZEcUrIstw=="], - "@radix-ui/react-popper": ["@radix-ui/react-popper@1.3.7", "", { "dependencies": { "@floating-ui/react-dom": "^2.0.0", "@radix-ui/react-arrow": "1.1.15", "@radix-ui/react-compose-refs": "1.1.5", "@radix-ui/react-context": "1.2.2", "@radix-ui/react-primitive": "2.1.10", "@radix-ui/react-use-callback-ref": "1.1.4", "@radix-ui/react-use-layout-effect": "1.1.4", "@radix-ui/react-use-rect": "1.1.4", "@radix-ui/react-use-size": "1.1.4", "@radix-ui/rect": "1.1.3" }, "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" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-UsJrrd7w4wuKKTdvd/DNERVlwSlUcyXzjhyDwBk+3aPOsCjOY6ZSbxuw8E6lZTjjfP8Cpd0J8VVkrYUWyGYXyg=="], + "@radix-ui/react-popper": ["@radix-ui/react-popper@1.4.0", "", { "dependencies": { "@floating-ui/react-dom": "^2.0.0", "@radix-ui/react-arrow": "1.1.17", "@radix-ui/react-compose-refs": "1.1.5", "@radix-ui/react-context": "1.3.0", "@radix-ui/react-primitive": "2.2.0", "@radix-ui/react-use-callback-ref": "1.1.5", "@radix-ui/react-use-layout-effect": "1.1.4", "@radix-ui/react-use-rect": "1.1.4", "@radix-ui/react-use-size": "1.1.5", "@radix-ui/rect": "1.1.3" }, "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" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-yCWRvLeGv9Pz3+efwHqGPp70mZ56r3kfIgQVF56Oj2aAa4uP/Tb+IE59wNcc+758rctqbCKx4LbK8II/r7Bn0Q=="], - "@radix-ui/react-portal": ["@radix-ui/react-portal@1.1.17", "", { "dependencies": { "@radix-ui/react-primitive": "2.1.10", "@radix-ui/react-use-layout-effect": "1.1.4" }, "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" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-vKQLcWypUnwZVvfV7UkGahH2g6ySe8M8R+zYBwPrv5byZ9QAW6cQVvNKo7GgmD+p8aYb6D9JBuvy8/WhOno2wQ=="], + "@radix-ui/react-portal": ["@radix-ui/react-portal@1.2.0", "", { "dependencies": { "@radix-ui/react-primitive": "2.2.0", "@radix-ui/react-use-layout-effect": "1.1.4" }, "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" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-StX7xXnaRU41VvFtMm9zlhVGz8XF6GmWWTXftkQaY+tqVkbs/R9UmAp5mLzHHapk5hM9RMZQvO/3usyIP/g42g=="], - "@radix-ui/react-presence": ["@radix-ui/react-presence@1.1.10", "", { "dependencies": { "@radix-ui/react-use-layout-effect": "1.1.4" }, "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" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-3wyzCQ6+ubRA+D4uv9m95JYLXxmOHp05qjrkjeA7uKHHtjpPggQzc6DAb0URl7j67oR0K2foO4ip27TiX037Bw=="], + "@radix-ui/react-presence": ["@radix-ui/react-presence@1.1.11", "", { "dependencies": { "@radix-ui/react-use-layout-effect": "1.1.4" }, "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" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-Z7/atlkab36Z8hm+V8zYc79r0W+tiOB1o0tun1By94JyadkekLQmtEAnBSP9XKXBNQsStoStS4+gX10JpS5akA=="], - "@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.1.10", "", { "dependencies": { "@radix-ui/react-slot": "1.3.3" }, "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" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-MucOnzh6hR5mid6VpkbglRAMYMjKLqRnGBbjXkzjK52fuQDd1qbkx78a5P40mkcnVXJdEVxm26E9OPAiUq7nBg=="], + "@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.2.0", "", { "dependencies": { "@radix-ui/react-slot": "1.5.0" }, "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" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-HCTSPMNqv55Qk0IX4geJbpyXazmqulcimwuyjxTkKi29v+QZbG2Zho9BnbBq4YS2PF+KlNb2CXoLz66uUmblkg=="], - "@radix-ui/react-progress": ["@radix-ui/react-progress@1.1.16", "", { "dependencies": { "@radix-ui/react-context": "1.2.2", "@radix-ui/react-primitive": "2.1.10" }, "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" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-5XnomAsoZZCY+KNTxbIghpGqPruZvKFNlvcAljVAOdDRDsH4/OZQxhtwo5wdtoDM5R6MhJBb2sPnDuRFep3lzg=="], + "@radix-ui/react-progress": ["@radix-ui/react-progress@1.2.1", "", { "dependencies": { "@radix-ui/react-context": "1.3.0", "@radix-ui/react-primitive": "2.2.0" }, "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" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-yQBiM6J3YM8Ums1orkEFpbznK47geKxa0igikzcaS1xHgdba3DdAQBsGbCTt5BVfR8zhEvgxQ0poGcINaD3lvw=="], - "@radix-ui/react-radio-group": ["@radix-ui/react-radio-group@1.4.7", "", { "dependencies": { "@radix-ui/primitive": "1.1.7", "@radix-ui/react-compose-refs": "1.1.5", "@radix-ui/react-context": "1.2.2", "@radix-ui/react-direction": "1.1.4", "@radix-ui/react-presence": "1.1.10", "@radix-ui/react-primitive": "2.1.10", "@radix-ui/react-roving-focus": "1.1.19", "@radix-ui/react-use-controllable-state": "1.2.6", "@radix-ui/react-use-size": "1.1.4" }, "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" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-cgYFEkntCxppHZgtSZ+7vh0wbZQ+IC7PPMw8DSnRG27B6kDd32/Zw0OJt7dGDigCoprMuWHjg2PvUn3PYvPFoQ=="], + "@radix-ui/react-radio-group": ["@radix-ui/react-radio-group@1.5.1", "", { "dependencies": { "@radix-ui/primitive": "1.2.0", "@radix-ui/react-compose-refs": "1.1.5", "@radix-ui/react-context": "1.3.0", "@radix-ui/react-direction": "1.2.0", "@radix-ui/react-presence": "1.1.11", "@radix-ui/react-primitive": "2.2.0", "@radix-ui/react-roving-focus": "1.2.1", "@radix-ui/react-use-controllable-state": "1.3.0", "@radix-ui/react-use-size": "1.1.5" }, "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" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-QbyVT1ddnjqB9H+CUYKkNWdU9fIK3QHCYtjf7mS6ekSqiuXkWtWn5UZW9mhA8qtl3vrVyIsmR9gePstAtKrqkw=="], - "@radix-ui/react-roving-focus": ["@radix-ui/react-roving-focus@1.1.19", "", { "dependencies": { "@radix-ui/primitive": "1.1.7", "@radix-ui/react-collection": "1.1.15", "@radix-ui/react-compose-refs": "1.1.5", "@radix-ui/react-context": "1.2.2", "@radix-ui/react-direction": "1.1.4", "@radix-ui/react-id": "1.1.4", "@radix-ui/react-primitive": "2.1.10", "@radix-ui/react-use-callback-ref": "1.1.4", "@radix-ui/react-use-controllable-state": "1.2.6", "@radix-ui/react-use-is-hydrated": "0.1.3", "@radix-ui/react-use-layout-effect": "1.1.4" }, "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" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-V9jI6hDjT7l3jsCQD9bLNvDLM3tH/gdbOTp7Tefp3hbbgCGQoK7tUvrWiRlcoBHIZ809ElXwNQwVo0B98LuTXQ=="], + "@radix-ui/react-roving-focus": ["@radix-ui/react-roving-focus@1.2.1", "", { "dependencies": { "@radix-ui/primitive": "1.2.0", "@radix-ui/react-collection": "1.2.0", "@radix-ui/react-compose-refs": "1.1.5", "@radix-ui/react-context": "1.3.0", "@radix-ui/react-direction": "1.2.0", "@radix-ui/react-id": "1.1.4", "@radix-ui/react-primitive": "2.2.0", "@radix-ui/react-use-callback-ref": "1.1.5", "@radix-ui/react-use-controllable-state": "1.3.0", "@radix-ui/react-use-is-hydrated": "0.1.3", "@radix-ui/react-use-layout-effect": "1.1.4" }, "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" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-UwraORzVUeEPMclhO1p0vz0qI+TbdDLO9i+FiOqhJyHKwdpCRCck9yVEscUnAMIzCiuNoQa8D4A9bIpOPXGt6Q=="], "@radix-ui/react-scroll-area": ["@radix-ui/react-scroll-area@1.2.12", "", { "dependencies": { "@radix-ui/number": "1.1.2", "@radix-ui/primitive": "1.1.4", "@radix-ui/react-compose-refs": "1.1.3", "@radix-ui/react-context": "1.1.4", "@radix-ui/react-direction": "1.1.2", "@radix-ui/react-presence": "1.1.6", "@radix-ui/react-primitive": "2.1.6", "@radix-ui/react-use-callback-ref": "1.1.2", "@radix-ui/react-use-layout-effect": "1.1.2" }, "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" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-xuafVzQiTCLsyEjakowTdG3OgTXsmO7IdCiO77otIa+z44xoLNs9Do5eg7POFumIOCjtG6djfm6RKUKpUa/csA=="], - "@radix-ui/react-select": ["@radix-ui/react-select@2.3.7", "", { "dependencies": { "@radix-ui/number": "1.1.3", "@radix-ui/primitive": "1.1.7", "@radix-ui/react-collection": "1.1.15", "@radix-ui/react-compose-refs": "1.1.5", "@radix-ui/react-context": "1.2.2", "@radix-ui/react-direction": "1.1.4", "@radix-ui/react-dismissable-layer": "1.1.19", "@radix-ui/react-focus-guards": "1.1.6", "@radix-ui/react-focus-scope": "1.1.16", "@radix-ui/react-id": "1.1.4", "@radix-ui/react-popper": "1.3.7", "@radix-ui/react-portal": "1.1.17", "@radix-ui/react-presence": "1.1.10", "@radix-ui/react-primitive": "2.1.10", "@radix-ui/react-slot": "1.3.3", "@radix-ui/react-use-callback-ref": "1.1.4", "@radix-ui/react-use-controllable-state": "1.2.6", "@radix-ui/react-use-layout-effect": "1.1.4", "@radix-ui/react-use-previous": "1.1.4", "@radix-ui/react-visually-hidden": "1.2.11", "aria-hidden": "^1.2.4", "react-remove-scroll": "^2.7.2" }, "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" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-WFGImkmbzcfxeIwq/+4HvRN0pizBwbwQUED4I13ezQsDdfl38ZntN6TmR8XaSzPBqoCToe8rF75j6NPNDSzhbg=="], + "@radix-ui/react-select": ["@radix-ui/react-select@2.4.1", "", { "dependencies": { "@radix-ui/number": "1.1.3", "@radix-ui/primitive": "1.2.0", "@radix-ui/react-collection": "1.2.0", "@radix-ui/react-compose-refs": "1.1.5", "@radix-ui/react-context": "1.3.0", "@radix-ui/react-direction": "1.2.0", "@radix-ui/react-dismissable-layer": "1.2.1", "@radix-ui/react-focus-guards": "1.2.0", "@radix-ui/react-focus-scope": "1.3.1", "@radix-ui/react-id": "1.1.4", "@radix-ui/react-popper": "1.4.0", "@radix-ui/react-portal": "1.2.0", "@radix-ui/react-presence": "1.1.11", "@radix-ui/react-primitive": "2.2.0", "@radix-ui/react-slot": "1.5.0", "@radix-ui/react-use-callback-ref": "1.1.5", "@radix-ui/react-use-controllable-state": "1.3.0", "@radix-ui/react-use-layout-effect": "1.1.4", "@radix-ui/react-visually-hidden": "1.2.13", "aria-hidden": "^1.2.4", "react-remove-scroll": "^2.7.2" }, "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" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-888ZwW0Md6GyptuqYABRX9nLKgoYfcooCyBBvVaX5Jp3e+8Jp2i4Zo/Uy50Hm+Ysn2JfloQXstW4U36w8teVtg=="], - "@radix-ui/react-slider": ["@radix-ui/react-slider@1.4.7", "", { "dependencies": { "@radix-ui/number": "1.1.3", "@radix-ui/primitive": "1.1.7", "@radix-ui/react-collection": "1.1.15", "@radix-ui/react-compose-refs": "1.1.5", "@radix-ui/react-context": "1.2.2", "@radix-ui/react-direction": "1.1.4", "@radix-ui/react-primitive": "2.1.10", "@radix-ui/react-use-controllable-state": "1.2.6", "@radix-ui/react-use-layout-effect": "1.1.4", "@radix-ui/react-use-previous": "1.1.4", "@radix-ui/react-use-size": "1.1.4" }, "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" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-mTSLf1GC/C0moWjTbvCM6Qn/gBjvlFt1azuWF2v7MN5C3Zq2U2J2lN3ZEYkpujuOU5Ro7A28wkviSxaKnG0BYg=="], + "@radix-ui/react-slider": ["@radix-ui/react-slider@1.6.1", "", { "dependencies": { "@radix-ui/number": "1.1.3", "@radix-ui/primitive": "1.2.0", "@radix-ui/react-collection": "1.2.0", "@radix-ui/react-compose-refs": "1.1.5", "@radix-ui/react-context": "1.3.0", "@radix-ui/react-direction": "1.2.0", "@radix-ui/react-primitive": "2.2.0", "@radix-ui/react-use-controllable-state": "1.3.0", "@radix-ui/react-use-layout-effect": "1.1.4", "@radix-ui/react-use-size": "1.1.5" }, "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" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-IRNRR90moPqxfwCJ0XbMJIxo70W0/1ZExT/sNCxEHMaPx0SF9HoQrcPEC75+H28cFKa0b+KH63anfLYJmwKacw=="], - "@radix-ui/react-slot": ["@radix-ui/react-slot@1.3.3", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.5" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-qx7oqnYbxnK9kYI9m317qmFmEgo6ywqWvbTogdj7cL9p3/yx4M48p7Rnw5z3H890cL/ow/EeWJsuTykeZVXP5Q=="], + "@radix-ui/react-slot": ["@radix-ui/react-slot@1.5.0", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.5" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-tyYd9ddPXAysAbdbD9eYxgwpCSv6f3PncqVSNKQFSR5lcJVLz3cb/pANDoYrLiHBpXv7skortyUgGUWsYuPPFQ=="], - "@radix-ui/react-switch": ["@radix-ui/react-switch@1.3.7", "", { "dependencies": { "@radix-ui/primitive": "1.1.7", "@radix-ui/react-compose-refs": "1.1.5", "@radix-ui/react-context": "1.2.2", "@radix-ui/react-primitive": "2.1.10", "@radix-ui/react-use-controllable-state": "1.2.6", "@radix-ui/react-use-size": "1.1.4" }, "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" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-48tB/4dn2UVLBCYhTu9AuR63IHl73l/qLbLgxd86noTUor4/K4LFDAcYjK+isP5313qxaFpjPVogE7+Y0/V3Kw=="], + "@radix-ui/react-switch": ["@radix-ui/react-switch@1.4.1", "", { "dependencies": { "@radix-ui/primitive": "1.2.0", "@radix-ui/react-compose-refs": "1.1.5", "@radix-ui/react-context": "1.3.0", "@radix-ui/react-primitive": "2.2.0", "@radix-ui/react-use-controllable-state": "1.3.0", "@radix-ui/react-use-size": "1.1.5" }, "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" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-NpBGwc40rY02ZmSvuyeKk0Bvc8ZsNeTMi4qHvJ+ZH4EiYCv0zIXEgdCW4bVdzgIUeP9xxbLJSxKOUfqITYNmkA=="], - "@radix-ui/react-tabs": ["@radix-ui/react-tabs@1.1.21", "", { "dependencies": { "@radix-ui/primitive": "1.1.7", "@radix-ui/react-context": "1.2.2", "@radix-ui/react-direction": "1.1.4", "@radix-ui/react-id": "1.1.4", "@radix-ui/react-presence": "1.1.10", "@radix-ui/react-primitive": "2.1.10", "@radix-ui/react-roving-focus": "1.1.19", "@radix-ui/react-use-controllable-state": "1.2.6" }, "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" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-UKxJlZid7FVtsk/WTxj4i4uSEgj2Au+KBbS7SQyTlzMhhn+86Cz3tISZdTa87bfEfcuvZezf2ZsxD4xuEKtkog=="], + "@radix-ui/react-tabs": ["@radix-ui/react-tabs@1.2.1", "", { "dependencies": { "@radix-ui/primitive": "1.2.0", "@radix-ui/react-context": "1.3.0", "@radix-ui/react-direction": "1.2.0", "@radix-ui/react-id": "1.1.4", "@radix-ui/react-presence": "1.1.11", "@radix-ui/react-primitive": "2.2.0", "@radix-ui/react-roving-focus": "1.2.1", "@radix-ui/react-use-controllable-state": "1.3.0" }, "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" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-hRoJlode+hg5ZNlR+3tkfkUliIybdTpD5lkAvHQ9yaXseGf7XVO9Ib2GPEIOuaJJbo7YWYbNpDDRfo8Dhf6/xA=="], - "@radix-ui/react-use-callback-ref": ["@radix-ui/react-use-callback-ref@1.1.4", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-R6OUY2e2fA6Yn6s+VSx5KBV6Nx8LQEhu+cz7LCej18rQ1HLyg9PSC9jP/ZNx0o6FAIK9c0F1kHylzSxKsdlkrQ=="], + "@radix-ui/react-use-callback-ref": ["@radix-ui/react-use-callback-ref@1.1.5", "", { "dependencies": { "@radix-ui/react-use-layout-effect": "1.1.4" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-Y5GBf4NKeADoXI1geiMlMuMoURT3k9MizzzKhGb/m55H94aGigZ01PIpkvsO6lML13BA6XYAXSJ6gza7vTn5nw=="], - "@radix-ui/react-use-controllable-state": ["@radix-ui/react-use-controllable-state@1.2.6", "", { "dependencies": { "@radix-ui/primitive": "1.1.7", "@radix-ui/react-use-effect-event": "0.0.5", "@radix-ui/react-use-layout-effect": "1.1.4" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-uEQJGT97ZA/TgP/Hydw47lHu+/vQj6z/0jA+WeTbK1o9Rx45GImjpD0tc3W5ad3D6XTSR6e1yEO0FvGq6WQfVQ=="], + "@radix-ui/react-use-controllable-state": ["@radix-ui/react-use-controllable-state@1.3.0", "", { "dependencies": { "@radix-ui/primitive": "1.2.0", "@radix-ui/react-use-effect-event": "0.0.5", "@radix-ui/react-use-layout-effect": "1.1.4" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-TAcBI7bw2ljYCbv4+zuTSd6zICu8pRt6SDN2vJ/Z06K2MXh6I9WYFe/A9ovlFDtR5HVHGm5iDxDoABm/++dbKg=="], "@radix-ui/react-use-effect-event": ["@radix-ui/react-use-effect-event@0.0.5", "", { "dependencies": { "@radix-ui/react-use-layout-effect": "1.1.4" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-7cshFL8HGS/7HEiHH+9kL9HBwp2sa9yX18Knwek6KYWmXwM7pegMgta2AXMQKI+rq3JnfSj9x8wYqFMTdG1Jgg=="], @@ -1885,13 +1878,13 @@ "@radix-ui/react-use-layout-effect": ["@radix-ui/react-use-layout-effect@1.1.4", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-K20DkRkUwDnxEYMBPcg3Y6voLkEy5p5QQmszZgLngKKiC7dzBR/aEuK3w1qlx2JWDUNH6FluahYdgR3BP+QbYw=="], - "@radix-ui/react-use-previous": ["@radix-ui/react-use-previous@1.1.4", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-XoSLhbRbqxFtgJoi2fNHA3C6pDlY34x508vUpUGoFZfvePfHXHbE1lC4FYFMnJWgiCRroSTw6fOsXQoVS9RwZg=="], + "@radix-ui/react-use-previous": ["@radix-ui/react-use-previous@1.1.2", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-IGBQPtRFdhN6MQ8dbegVmBq1LVZluya3F1jWY+puIcQC3MHctRwTDSBWCkL/3ZcnMJLTMJ++Z+ktmvg0F89iCw=="], "@radix-ui/react-use-rect": ["@radix-ui/react-use-rect@1.1.4", "", { "dependencies": { "@radix-ui/rect": "1.1.3" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-cSOCh6JlkmfjLyNcLiu2nB4v+nm+dkZ+Q5KHWk/soo4U7ZLiEQFKHK9/YmtBHjfCEaU43IBKQOc4/uJmCaiCTQ=="], - "@radix-ui/react-use-size": ["@radix-ui/react-use-size@1.1.4", "", { "dependencies": { "@radix-ui/react-use-layout-effect": "1.1.4" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-D3anSY15EJoxrihpsXI6SMrmmonnQtR2ni7arO+Lfdg3O95b9hNXxONk8jA5C8ANdF/h5HMAxejgs8PWJ6rlhw=="], + "@radix-ui/react-use-size": ["@radix-ui/react-use-size@1.1.5", "", { "dependencies": { "@radix-ui/react-use-layout-effect": "1.1.4" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-V1McDQkMGzgivwqdu7u96APs7oi0Jvj9LTzgq3WWrDZqxWdAqU9yZnZQqk5OizGFR8badUQwZsrlao7MOlWYOA=="], - "@radix-ui/react-visually-hidden": ["@radix-ui/react-visually-hidden@1.2.11", "", { "dependencies": { "@radix-ui/react-primitive": "2.1.10" }, "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" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-NFS86RYYZb4/exihaESBGOpMJFz8MGLAfu3mOBSGByVnVPC9JPASfYubxd/8KbkQK0sYAv8lVQDEQukDX/qXvQ=="], + "@radix-ui/react-visually-hidden": ["@radix-ui/react-visually-hidden@1.2.13", "", { "dependencies": { "@radix-ui/react-primitive": "2.2.0" }, "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" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-feijiN1oPk4rck4u9Dm9tsU4mT6Wp9oeEEhaz1WUEs1VuqLf8xzsFG+Qk+uWq6TnMH9O+WRECRg0NftyP9E4Fw=="], "@radix-ui/rect": ["@radix-ui/rect@1.1.3", "", {}, "sha512-JtyZR+mqgBibTo8xea3B6ZRmzZiM/YeVBtUkas6zMuXjAlfIFIW2FgqeM9eLyvEaYX66vr6DJMK+4U6LV0KhNw=="], @@ -1989,19 +1982,19 @@ "@selderee/plugin-htmlparser2": ["@selderee/plugin-htmlparser2@0.11.0", "", { "dependencies": { "domhandler": "^5.0.3", "selderee": "^0.11.0" } }, "sha512-P33hHGdldxGabLFjPPpaTxVolMrzrcegejx+0GxjrIb9Zv48D8yAIA/QTDR2dFl7Uz7urX8aX6+5bCZslr+gWQ=="], - "@shikijs/core": ["@shikijs/core@4.3.1", "", { "dependencies": { "@shikijs/primitive": "4.3.1", "@shikijs/types": "4.3.1", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4", "hast-util-to-html": "^9.0.5" } }, "sha512-ANMDxuaPsNMdDC1m4vfvhlDmJweMwkE5XitTwrq2rWHx5jM+dlm4MmHt2PP6t0uejfR77SuhrhJ0zEijIF/uhA=="], + "@shikijs/core": ["@shikijs/core@4.5.0", "", { "dependencies": { "@shikijs/primitive": "4.5.0", "@shikijs/types": "4.5.0", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.5", "hast-util-to-html": "^9.0.5" } }, "sha512-6CIgwq+bt2JZ3OSjb/nBkkwEf/CfpHcbam+Mg5Pllco7HAGRQ2/EFhZrrJtbyNTgKwknfVS+llsXGygiDGwJWw=="], - "@shikijs/engine-javascript": ["@shikijs/engine-javascript@4.3.1", "", { "dependencies": { "@shikijs/types": "4.3.1", "@shikijs/vscode-textmate": "^10.0.2", "oniguruma-to-es": "^4.3.6" } }, "sha512-JBItcnPuYq7jVJdZo/vMj94r+szT7XEjHFX+mvFDGSEIbVAXAGyHAHzhbWzpGOwYidCZrErJLLgn2PVeiokHnQ=="], + "@shikijs/engine-javascript": ["@shikijs/engine-javascript@4.5.0", "", { "dependencies": { "@shikijs/types": "4.5.0", "@shikijs/vscode-textmate": "^10.0.2", "oniguruma-to-es": "^4.3.6" } }, "sha512-Ed6UdEj84LyYkwnxM5CvSMWAD+id9ExTYri0/+x41U9zrgNifPSS9lZm0JqBP0VfYI8yr8tY5nbNq9+p9R0kFA=="], - "@shikijs/engine-oniguruma": ["@shikijs/engine-oniguruma@4.3.1", "", { "dependencies": { "@shikijs/types": "4.3.1", "@shikijs/vscode-textmate": "^10.0.2" } }, "sha512-OXyNMzg0pews+msMj4cHeqT4xiYKKvbnn6VbdAXxfoFl3SSx4fJTc8FadECuc5/H9p3BzhNAoAUXKwAu9rWYhg=="], + "@shikijs/engine-oniguruma": ["@shikijs/engine-oniguruma@4.5.0", "", { "dependencies": { "@shikijs/types": "4.5.0", "@shikijs/vscode-textmate": "^10.0.2" } }, "sha512-dKVmbJecVdB9recl8a/CU4jdpNXyjJQrIcesIkpS70s5HS02ohpnCSpMUbotPnEUzbAcLQ+S4hwZYbkBBiTcJw=="], - "@shikijs/langs": ["@shikijs/langs@4.3.1", "", { "dependencies": { "@shikijs/types": "4.3.1" } }, "sha512-m0l9nsDqgBHvbZbk7A0/kXz/impK3uB/c6rAn6Gpg/uPtdZRQ+alsN/17MU5thb68XTj/4DxkZAotrM0GGSpDQ=="], + "@shikijs/langs": ["@shikijs/langs@4.5.0", "", { "dependencies": { "@shikijs/types": "4.5.0" } }, "sha512-wwBTqwduXSz0X4v9Qa2EWeFaYJEw1clCncWjoRNQRbVDu3SPRTRWucnouYapKj3b8Q+sk/41Vbc4B5c8nuYzLA=="], - "@shikijs/primitive": ["@shikijs/primitive@4.3.1", "", { "dependencies": { "@shikijs/types": "4.3.1", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-CXQRQOYy1leqQ8ceTeJdmXv/bsUY++6QyLpXJ94LZAAYj5X2SKRdc5ipguv4NPyGVKItB2PPwUpRNe0Sjh5S1A=="], + "@shikijs/primitive": ["@shikijs/primitive@4.5.0", "", { "dependencies": { "@shikijs/types": "4.5.0", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.5" } }, "sha512-UM7ShlA8oz0OWxLLO8BmO9Ip6fVqdkt8yF0EH7nOCqHfrx1eEAzF0ZUVK7L+I8NEgeu1PEWSRlxaiPPeCb4iDg=="], - "@shikijs/themes": ["@shikijs/themes@4.3.1", "", { "dependencies": { "@shikijs/types": "4.3.1" } }, "sha512-dgpoJ4WqNi2yTmizQHBJ5zcX6j2lE6icN/0yt4l1kkf16jrY/pwPLoTb1ETsWMz0OBLf9ZNvwmxft+cH+N9qSA=="], + "@shikijs/themes": ["@shikijs/themes@4.5.0", "", { "dependencies": { "@shikijs/types": "4.5.0" } }, "sha512-zGb87H3UBbpuI4yoh5UguB1XbU+2BDU3kflM7UfZ+Cy2hWo9lBtqjSVK20gmLY6ukYl040hAypGXMgud9vul8Q=="], - "@shikijs/types": ["@shikijs/types@4.3.1", "", { "dependencies": { "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-CHFxE0jztBIZRHH6gxXE7DXUCFXjReEGxZ/j0rfSLGKZuwp2xBYycEP14875DSa9KLL/6700oxIq6oO6ef9K2g=="], + "@shikijs/types": ["@shikijs/types@4.5.0", "", { "dependencies": { "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.5" } }, "sha512-drtPrtD8N0DENyD2cyt6Ajy+IWsiCLgMxODwLTpvH1UsN6a9jf90tNTPjqwHvA+0Lzu9e0txk8DjfqH1p9UJRw=="], "@shikijs/vscode-textmate": ["@shikijs/vscode-textmate@10.0.2", "", {}, "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg=="], @@ -2069,17 +2062,17 @@ "@smithy/eventstream-codec": ["@smithy/eventstream-codec@4.4.0", "", { "dependencies": { "@smithy/core": "^3.25.0", "tslib": "^2.6.2" } }, "sha512-fON1WZ+FGrHt/nLH290DoH47tYLK1kiAn+reMnc5P19IbxLZTZbrJi05Kv1Tjekinxrs4f5c0SA2eicLzy+rog=="], - "@smithy/fetch-http-handler": ["@smithy/fetch-http-handler@5.7.2", "", { "dependencies": { "@smithy/core": "^3.33.2", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-nZyWTmSpJEXl6VtWVMBJve/7x12DZu6sIX1z1a+ZMaHlQQRs9Zpu6NbTe/gmxYXVRpkjxyDYpZ5gx2IM6f/Wkw=="], + "@smithy/fetch-http-handler": ["@smithy/fetch-http-handler@5.8.0", "", { "dependencies": { "@smithy/core": "^3.33.3", "@smithy/types": "^4.18.0", "tslib": "^2.6.2" } }, "sha512-ycSJu3tFAQ4v04CBB0agqFMVsSQ1iG3yw+SpgxRqKfaURpQD4CZ8Wn0zPMmSnOuTpTh65Vz+EA0rMrw089wvkA=="], "@smithy/is-array-buffer": ["@smithy/is-array-buffer@2.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA=="], "@smithy/middleware-compression": ["@smithy/middleware-compression@4.6.2", "", { "dependencies": { "@smithy/core": "^3.33.2", "@smithy/types": "^4.17.2", "fflate": "0.8.3", "tslib": "^2.6.2" } }, "sha512-Q9d+luiRjyHT6kCL/9NyGpdZJgodh4vtvfHC6H8SqoVKrV2k9RoyI9/IloVfdCYks3/2DIi7BsYYLcda5KZS0A=="], - "@smithy/node-http-handler": ["@smithy/node-http-handler@4.11.3", "", { "dependencies": { "@smithy/core": "^3.33.3", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-2jY1tSpERfPfWqyBV2pH+iGFaghVsIJszJNsT7hxtQYhVJpWDyc0LqOWI+nXOxOAHaEfZ4PXXtp1wW1TGpHhkA=="], + "@smithy/node-http-handler": ["@smithy/node-http-handler@4.12.1", "", { "dependencies": { "@smithy/core": "^3.33.3", "@smithy/types": "^4.18.0", "tslib": "^2.6.2" } }, "sha512-ThMkboGeONWXAelq9FvGsuJC4rOi+qyC4/zhUF58xYpxUg5sQKx2VXZYJmtNjr4dSuBJ1HeJXETQILCz3wOHvw=="], - "@smithy/signature-v4": ["@smithy/signature-v4@5.7.3", "", { "dependencies": { "@smithy/core": "^3.33.3", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-7ImGm+FkHRLcBaRttIAMZ6bzJZWb2cJGoYjq46F2UjycujWzrL9GEN9h4w7eQyXJYnltrUhxbbieBAIRrdqpow=="], + "@smithy/signature-v4": ["@smithy/signature-v4@5.7.4", "", { "dependencies": { "@smithy/core": "^3.35.0", "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-tHy0K0VtqNd5Y7Y41h0a0Lhh0L1GzC08dTWg0F7vRJWFtTENg7IZikf3wQkanYIRdb7ngoIPMTmqgUi401fEeQ=="], - "@smithy/types": ["@smithy/types@4.17.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-FOKpVZob9MPTn2znRzGrnsMHv7BOsKVw3XiP/cOyYLDVZ9qKp4nifIiSCuUU/fIj5Vu0UOAxCFr+qRAtG0NUkA=="], + "@smithy/types": ["@smithy/types@4.19.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-r7jh49VJxGerfAcTQA6gXcKc+98zOp/tqRwzYjgOE+iSQsP6cEU1hq2QzbuipmP68QtYdY9wKEhiCQZIzHgZ4Q=="], "@smithy/util-buffer-from": ["@smithy/util-buffer-from@2.2.0", "", { "dependencies": { "@smithy/is-array-buffer": "^2.2.0", "tslib": "^2.6.2" } }, "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA=="], @@ -2099,9 +2092,9 @@ "@szmarczak/http-timer": ["@szmarczak/http-timer@4.0.6", "", { "dependencies": { "defer-to-connect": "^2.0.0" } }, "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w=="], - "@t3-oss/env-core": ["@t3-oss/env-core@0.13.4", "", { "peerDependencies": { "arktype": "^2.1.0", "typescript": ">=5.0.0", "valibot": "^1.0.0-beta.7 || ^1.0.0", "zod": "^3.24.0 || ^4.0.0-beta.0" }, "optionalPeers": ["typescript", "valibot", "zod"] }, "sha512-zVOiYO0+CF7EnBScz8s0O5JnJLPTU0lrUi8qhKXfIxIJXvI/jcppSiXXsEJwfB4A6XZawY/Wg/EQGKANi/aPmQ=="], + "@t3-oss/env-core": ["@t3-oss/env-core@0.13.11", "", { "peerDependencies": { "arktype": "^2.1.0", "typescript": ">=5.0.0", "valibot": "^1.0.0-beta.7 || ^1.0.0", "zod": "^3.24.0 || ^4.0.0" }, "optionalPeers": ["arktype", "typescript", "valibot", "zod"] }, "sha512-sM7GYY+KL7H/Hl0BE0inWfk3nRHZOLhmVn7sHGxaZt9FAR6KqREXAE+6TqKfiavfXmpRxO/OZ2QgKRd+oiBYRQ=="], - "@t3-oss/env-nextjs": ["@t3-oss/env-nextjs@0.13.4", "", { "dependencies": { "@t3-oss/env-core": "0.13.4" }, "peerDependencies": { "typescript": ">=5.0.0", "valibot": "^1.0.0-beta.7 || ^1.0.0", "zod": "^3.24.0 || ^4.0.0-beta.0" }, "optionalPeers": ["typescript", "valibot", "zod"] }, "sha512-6ecXR7SH7zJKVcBODIkB7wV9QLMU23uV8D9ec6P+ULHJ5Ea/YXEHo+Z/2hSYip5i9ptD/qZh8VuOXyldspvTTg=="], + "@t3-oss/env-nextjs": ["@t3-oss/env-nextjs@0.13.11", "", { "dependencies": { "@t3-oss/env-core": "0.13.11" }, "peerDependencies": { "arktype": "^2.1.0", "typescript": ">=5.0.0", "valibot": "^1.0.0-beta.7 || ^1.0.0", "zod": "^3.24.0 || ^4.0.0" }, "optionalPeers": ["arktype", "typescript", "valibot", "zod"] }, "sha512-NC+3j7YWgpzdFu1t5y/8wqibTK0lm5RS4bjXA1n8uwik3wIR4iZM4Fa+U2BaMa5k3Qk8RZiYhoAIX0WogmGkzg=="], "@tailwindcss/node": ["@tailwindcss/node@4.3.3", "", { "dependencies": { "@jridgewell/remapping": "^2.3.5", "enhanced-resolve": "^5.24.1", "jiti": "^2.7.0", "lightningcss": "1.32.0", "magic-string": "^0.30.21", "source-map-js": "^1.2.1", "tailwindcss": "4.3.3" } }, "sha512-/T8IKEsf9VTU6tLjgC7+sv2mOPtQxzE2jMw7u4Tt40Tx+QSZxpzh95/H6cMKoja9XuW7iMdLJYBB0o9G1CaAgg=="], @@ -2133,7 +2126,7 @@ "@tailwindcss/postcss": ["@tailwindcss/postcss@4.3.3", "", { "dependencies": { "@alloc/quick-lru": "^5.2.0", "@tailwindcss/node": "4.3.3", "@tailwindcss/oxide": "4.3.3", "postcss": "^8.5.16", "tailwindcss": "4.3.3" } }, "sha512-JTSZZGQi1AyKirbLN3azmjVzef92tcX7h+iSqPdaeStyFpGpDlKvvpxeOE8njhbUanbRwr3z8DyzhICWnMtQeg=="], - "@tailwindcss/typography": ["@tailwindcss/typography@0.5.19", "", { "dependencies": { "postcss-selector-parser": "6.0.10" }, "peerDependencies": { "tailwindcss": ">=3.0.0 || insiders || >=4.0.0-alpha.20 || >=4.0.0-beta.1" } }, "sha512-w31dd8HOx3k9vPtcQh5QHP9GwKcgbMp87j58qi6xgiBnFFtKEAgCWnDw4qUT8aHwkCp8bKvb/KGKWWHedP0AAg=="], + "@tailwindcss/typography": ["@tailwindcss/typography@0.5.20", "", { "dependencies": { "postcss-selector-parser": "6.0.10" }, "peerDependencies": { "tailwindcss": ">=3.0.0 || >=4.0.0 || insiders" } }, "sha512-hwbzQuNUfcPvbegQFatVPl/MY/tcM9KLl963hQ5laJKPh81TEZ1+dNG9PirGvcaDBkp+BCshExAyKVPW91dozw=="], "@tanstack/query-core": ["@tanstack/query-core@5.90.8", "", {}, "sha512-4E0RP/0GJCxSNiRF2kAqE/LQkTJVlL/QNU7gIJSptaseV9HP6kOuA+N11y4bZKZxa3QopK3ZuewwutHx6DqDXQ=="], @@ -2145,7 +2138,9 @@ "@tediousjs/connection-string": ["@tediousjs/connection-string@1.1.0", "", {}, "sha512-z9ZBWEG+8pIB5V1zYzlRPXx0oRJ5H7coPnMQK8EZOw03UTPI9Umn6viL36f5w+CuqkKsnCM50RVStpjZmR0Bng=="], - "@testing-library/jest-dom": ["@testing-library/jest-dom@6.9.1", "", { "dependencies": { "@adobe/css-tools": "^4.4.0", "aria-query": "^5.0.0", "css.escape": "^1.5.1", "dom-accessibility-api": "^0.6.3", "picocolors": "^1.1.1", "redent": "^3.0.0" } }, "sha512-zIcONa+hVtVSSep9UT3jZ5rizo2BsxgyDYU7WFD5eICBE7no3881HGeb/QkGfsJs6JTkY1aQhT7rIPC7e+0nnA=="], + "@testing-library/dom": ["@testing-library/dom@10.4.2", "", { "dependencies": { "@babel/code-frame": "^7.10.4", "@babel/runtime": "^7.12.5", "@types/aria-query": "^5.0.1", "aria-query": "5.3.0", "dom-accessibility-api": "^0.5.9", "lz-string": "^1.5.0", "picocolors": "1.1.1", "pretty-format": "^27.0.2" } }, "sha512-yzr2S9HyAIdhz2/6qHgbs665Q7PKVcDF05vsOlHPxG1mo36gKVesdYVeDLnXgfjJ03CrKRk08knc6+E/9m8v2Q=="], + + "@testing-library/jest-dom": ["@testing-library/jest-dom@6.10.0", "", { "dependencies": { "@adobe/css-tools": "^4.4.0", "aria-query": "^5.0.0", "css.escape": "^1.5.1", "dom-accessibility-api": "^0.6.3", "picocolors": "^1.1.1", "redent": "^3.0.0" }, "peerDependencies": { "@testing-library/dom": ">=10 <11" } }, "sha512-HQwu0KaB2zyT0iLzBL+8CLyZDL3KlZlZJ+2iyc9uCUnlJVskJU/UlPuVCyIPhtukjPQdT2QNoR5nCP5FqTmmDQ=="], "@tiptap/core": ["@tiptap/core@3.30.5", "", { "peerDependencies": { "@tiptap/pm": "3.30.5" } }, "sha512-3O7N0FyKIfuLV+xrdWyDM3V5eUY/q2CgLjhhMwOAbM1Pu7VPp9VP+TpEYOdH8aRyB+h1vj5hX5A747D8ZrPfHA=="], @@ -2245,11 +2240,13 @@ "@types/archiver": ["@types/archiver@8.0.0", "", { "dependencies": { "@types/node": "*", "@types/readdir-glob": "*" } }, "sha512-YpXPbEuv9+eUIPPQWUPahj3cvs9isWRuF+J4z+KbdYVDO3rWorWQFxUVHnwPu2AgKwvgpki5F2VMX0Xx+mX45A=="], + "@types/aria-query": ["@types/aria-query@5.0.4", "", {}, "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw=="], + "@types/braces": ["@types/braces@3.0.5", "", {}, "sha512-SQFof9H+LXeWNz8wDe7oN5zu7ket0qwMu5vZubW4GCJ8Kkeh6nBWUz87+KTz/G3Kqsrp0j/W253XJb3KMEeg3w=="], "@types/buffer-from": ["@types/buffer-from@1.1.3", "", { "dependencies": { "@types/node": "*" } }, "sha512-2lq4YC9uLUMGHkl2IDtX4tCXSo2+hwMpOJcY1qiIk1kybc31rIlPyM1HCVJhkPFIo75a/pOVxqyvwuf5TpCG/w=="], - "@types/bun": ["@types/bun@1.4.1", "", { "dependencies": { "bun-types": "1.4.1" } }, "sha512-0AVGiTXGajf1rgKom3N+c5L7CBxuoyyv1i44M0nX4UDK0G/fnRAMiri93nHuVPIb429KKtAgj7HatVmmOjeQLA=="], + "@types/bun": ["@types/bun@1.4.3", "", { "dependencies": { "bun-types": "1.4.3" } }, "sha512-N67Pqy8JXbAY/j0tNraS3V5mubGvc6rrrNDmDCtZLlFzccbUJPDb0tvgUBC5q4m8ybkP93Jcn1QB+RYQ6PvBhw=="], "@types/busboy": ["@types/busboy@1.5.4", "", { "dependencies": { "@types/node": "*" } }, "sha512-kG7WrUuAKK0NoyxfQHsVE6j1m01s6kMma64E+OZenQABMQyTJop1DumUWcLwAQ2JzpefU7PDYoRDKl8uZosFjw=="], @@ -2337,7 +2334,7 @@ "@types/google.maps": ["@types/google.maps@3.65.3", "", {}, "sha512-tqbbx7MUtoDk+RwpZMymPDj6Skez0FhqDZNhLhS5UDmCx4D1dgP+BJOHTebiO/rhjJLa1f8te2p6mJJeFKVFOQ=="], - "@types/hast": ["@types/hast@3.0.4", "", { "dependencies": { "@types/unist": "*" } }, "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ=="], + "@types/hast": ["@types/hast@3.0.5", "", { "dependencies": { "@types/unist": "*" } }, "sha512-rp/ezSWaD1m44dPKICGhiskI13nVr7qTloFwDa/IYkhhf5nzwP+zIQcIJh3WIFSBOy/H1PzB40jPjMDksN4F+g=="], "@types/heic-convert": ["@types/heic-convert@2.1.1", "", {}, "sha512-+s14762Nf62z9zziIs7ItvAkSUCS3ls4Z5XPT9BlVve3Q3S4DAnf6qekffMTvEWycSUF+kulkGaSN65fK6eKvg=="], @@ -2365,7 +2362,7 @@ "@types/mssql": ["@types/mssql@12.3.0", "", { "dependencies": { "@types/node": "*", "tarn": "^3.0.1", "tedious": "*" } }, "sha512-+jy+AJtfuTDI5+nhh0hDNcir1p8P+pf+qsHXpUpYvg7EikxUUePBe+a+Kr6j/Xs89o4EbHlVzrh0HOxbqWM31Q=="], - "@types/node": ["@types/node@24.2.1", "", { "dependencies": { "undici-types": "~7.10.0" } }, "sha512-DRh5K+ka5eJic8CjH7td8QpYEV6Zo10gfRkjHCO3weqZHWDtAaSTFtl4+VMqOJ4N5jcuhZ9/l+yy8rVgw7BQeQ=="], + "@types/node": ["@types/node@24.19.2", "", { "dependencies": { "undici-types": ">=7.24.0 <7.24.7" } }, "sha512-93d49wCWJkCyN87MxLpNN6KXPCwFw7bVUg79mGUV1OS40JGWwVCr8n61DXCSqz7CV6/VfPkb7xec7uP2M+QHWQ=="], "@types/node-fetch": ["@types/node-fetch@2.6.13", "", { "dependencies": { "@types/node": "*", "form-data": "^4.0.4" } }, "sha512-QGpRVpzSaUs30JBSGPjOg4Uveu384erbHBoT1zeONvyCfwQxIkUshLAOqN/k9EjGviPRmWTTe6aH2qySWKTVSw=="], @@ -2391,7 +2388,7 @@ "@types/retry": ["@types/retry@0.12.0", "", {}, "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA=="], - "@types/ssh2": ["@types/ssh2@1.15.5", "", { "dependencies": { "@types/node": "^18.11.18" } }, "sha512-N1ASjp/nXH3ovBHddRJpli4ozpk6UdDYIX4RJWFa9L1YKnzdhTlVmiGHm4DZnj/jLbqZpes4aeR30EFGQtvhQQ=="], + "@types/ssh2": ["@types/ssh2@1.15.6", "", { "dependencies": { "@types/node": "^18.11.18" } }, "sha512-oGdxhBqcRTwSTKFm+9EiKzkNVYRLEFkcW44lhguvBalGJbWfGnDt/ezwSUZc+SF9m9bMc3VyklNAtp7zICjS5w=="], "@types/tough-cookie": ["@types/tough-cookie@4.0.5", "", {}, "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA=="], @@ -2465,23 +2462,23 @@ "@vercel/oidc": ["@vercel/oidc@3.1.0", "", {}, "sha512-Fw28YZpRnA3cAHHDlkt7xQHiJ0fcL+NRcIqsocZQUSmbzeIKRpwttJjik5ZGanXP+vlA4SbTg+AbA3bP363l+w=="], - "@vitejs/plugin-react": ["@vitejs/plugin-react@6.0.5", "", { "dependencies": { "@rolldown/pluginutils": "^1.0.1" }, "peerDependencies": { "@rolldown/plugin-babel": "^0.1.7 || ^0.2.0", "babel-plugin-react-compiler": "^1.0.0", "vite": "^8.0.0" }, "optionalPeers": ["@rolldown/plugin-babel", "babel-plugin-react-compiler"] }, "sha512-BOVzne/NL162sMdResB25mUv+vWMF5NoAjNf09TeGlE7ZpszZWSD3winycicLJw72yeVsoCn/2kOhEuCvEShMA=="], + "@vitejs/plugin-react": ["@vitejs/plugin-react@6.1.2", "", { "dependencies": { "@rolldown/pluginutils": "^1.0.1" }, "peerDependencies": { "@rolldown/plugin-babel": "^0.1.7 || ^0.2.0", "babel-plugin-react-compiler": "^1.0.0", "oxc-transform-react": "^0.152.0", "vite": "^8.0.0" }, "optionalPeers": ["@rolldown/plugin-babel", "babel-plugin-react-compiler", "oxc-transform-react"] }, "sha512-fhJNGUdscQa4HkI0xFxwonWyhnVReCPDbXI7FH7jmzpnVCrFQI7PRrhWecO263610vOrs9tr2Y4xcf8uAdFxbw=="], - "@vitest/coverage-v8": ["@vitest/coverage-v8@5.0.1", "", { "dependencies": { "@bcoe/v8-coverage": "^1.0.2", "@vitest/istanbul-lib-coverage": "^1.0.0", "@vitest/istanbul-lib-report": "^1.0.0", "ast-v8-to-istanbul": "^1.0.5", "magicast": "^0.5.4", "obug": "^2.1.4", "std-env": "^4.2.0", "tinyrainbow": "^3.1.1" }, "peerDependencies": { "@vitest/browser": "5.0.1", "vitest": "5.0.1" }, "optionalPeers": ["@vitest/browser"] }, "sha512-FRC8ACiudC3dI6MTplzRSYWHDRnIv2IPfbzs4FdoJNsMal/35sWV8hwIfV8ZcqzSPy+uXHeMVONt9CEqtOU17w=="], + "@vitest/coverage-v8": ["@vitest/coverage-v8@5.0.4", "", { "dependencies": { "@bcoe/v8-coverage": "^1.0.2", "@vitest/istanbul-lib-coverage": "^1.0.2", "@vitest/istanbul-lib-report": "^1.0.2", "ast-v8-to-istanbul": "^1.0.7", "magicast": "^0.5.5", "obug": "^3.0.0", "std-env": "^4.3.0", "tinyrainbow": "^3.2.0" }, "peerDependencies": { "@vitest/browser": "5.0.4", "vitest": "5.0.4" }, "optionalPeers": ["@vitest/browser"] }, "sha512-P5YcQY8Y6RmoE9xRXI38rT8pssbcubEzqtYTM2XQoxOXMDn04nRaTI1SM8qCl9/NfW3ag9GlzdSXu7IwO5Ft8A=="], - "@vitest/expect": ["@vitest/expect@5.0.1", "", { "dependencies": { "@standard-schema/spec": "^1.1.0", "@types/chai": "^5.2.2", "@vitest/spy": "5.0.1", "@vitest/utils": "5.0.1", "chai": "^6.2.2", "tinyrainbow": "^3.1.1" } }, "sha512-U4YclNr7ds8kqZdtLcoVCYTaLRmaKeyjRjQHQ2We5iY0ZjegavIeBWJOr2F4pgUFuN0tO0bz/cVa4ERwKhf1Hg=="], + "@vitest/expect": ["@vitest/expect@5.0.4", "", { "dependencies": { "@standard-schema/spec": "^1.1.0", "@types/chai": "^5.2.2", "@vitest/spy": "5.0.4", "@vitest/utils": "5.0.4", "chai": "^6.3.0", "tinyrainbow": "^3.2.0" } }, "sha512-1Cko3Uav9doH3l+dmIBntzy9kcLM6c0Q7B9qMUgFqhDNgeJiYW57CUn1EIlWZlZ97Uaqj7SYSfu2ezwvDhE3og=="], - "@vitest/istanbul-lib-coverage": ["@vitest/istanbul-lib-coverage@1.0.1", "", {}, "sha512-k3DJZ8LhMBK9NS4SclF1ASD3OgXEWDorbIcPTRDK0/Zae6fRvu+fJRxtFdLfHsa9Y24beCdPnoNZ4LviTNstfA=="], + "@vitest/istanbul-lib-coverage": ["@vitest/istanbul-lib-coverage@1.0.2", "", {}, "sha512-9J/JMwOf9AoJhAywhrn7ScKTL38hsWQP/qPG60OtaAFcQ5OXPwKsxZFlbnuCKmZ61m8/lGgHYnFpdyQZUvG/iA=="], - "@vitest/istanbul-lib-report": ["@vitest/istanbul-lib-report@1.0.1", "", { "dependencies": { "@vitest/istanbul-lib-coverage": "1.0.1" } }, "sha512-1EOLRfsTMnyAr3+kEAsP4o9dhaDlGPpD7H5iLBBeq//YpNB1VIahkPhB+eRp9N2Dkfw8oySROjE3yf9XDeaIkQ=="], + "@vitest/istanbul-lib-report": ["@vitest/istanbul-lib-report@1.0.2", "", { "dependencies": { "@vitest/istanbul-lib-coverage": "1.0.2" } }, "sha512-gUsfXZJbzPamoIY5TvHFiMMoXESBrUMo+xqaj+rYrWI69+EnvRlYBlP96ZnHPY4vX8kyUpgAnFUCg5wZG/HkDQ=="], - "@vitest/mocker": ["@vitest/mocker@5.0.1", "", { "dependencies": { "@jridgewell/trace-mapping": "0.3.31", "@vitest/spy": "5.0.1", "estree-walker": "^3.0.3", "magic-string": "^1.2.3" }, "peerDependencies": { "msw": "^2.4.9", "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "optionalPeers": ["msw", "vite"] }, "sha512-6K1DoBNAPGvuOcSsGA4D6x+5zEEff/KmOOP3uetT2TrGpVfI+HRHRnJJfKi5ib/g1vx8IYHQD8s0pbJz8WQI7Q=="], + "@vitest/mocker": ["@vitest/mocker@5.0.4", "", { "dependencies": { "@jridgewell/trace-mapping": "0.3.31", "@vitest/spy": "5.0.4", "estree-walker": "^3.0.3", "magic-string": "^1.4.3" }, "peerDependencies": { "msw": "^2.4.9 || ^3.0.0", "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "optionalPeers": ["msw", "vite"] }, "sha512-tqAlrYWce4iUxhr3ncNohejtCTOcHeE8XWrSNZY3OhPoDn01yeGv+gnaBy64ATp7o6pb03eIbBAjzmibpc9vIQ=="], - "@vitest/pretty-format": ["@vitest/pretty-format@5.0.1", "", { "dependencies": { "tinyrainbow": "^3.1.1" } }, "sha512-6guWwj5d9bguuefTOvJoq387tfpkzSv554YdUEGzjJH2PnnmvzTLQ1UQSuAk5wBFVhf2CUmy/S/palOcb6dmpA=="], + "@vitest/pretty-format": ["@vitest/pretty-format@5.0.4", "", { "dependencies": { "tinyrainbow": "^3.2.0" } }, "sha512-kh/bp0oLr6w18kt4MFn5/zS+Hpc5k3bsf6S2m2Qksj7sKHrnc7Tu90UVYyiXnRvkYruN6kSCHQ3RR+SBE6FinA=="], - "@vitest/spy": ["@vitest/spy@5.0.1", "", {}, "sha512-rbto/mF/SGERxEgYOek7Xm6B9b+y+mVoo+f4b2LymYO8zM1b7uB5nHuhVMTP2hxdzgxvGiZYGxGIaMvL5y180Q=="], + "@vitest/spy": ["@vitest/spy@5.0.4", "", {}, "sha512-MZKk/gSkm2q+ICobMxCpH1mA+cCAWm8WV7UhxlqGjq/sJ3AGc1BqFOs5CRVXxH78wQtme9q/NAAgBquj4AcyMw=="], - "@vitest/utils": ["@vitest/utils@5.0.1", "", { "dependencies": { "@vitest/pretty-format": "5.0.1", "convert-source-map": "^2.0.0", "tinyrainbow": "^3.1.1" } }, "sha512-E9+yEA+jsfaoxZcUHFzEqUrQcoNh2EwrPT5efIqkUPUwD5Ua2Li9BRWaYeRwvzvdLgTSVrre8oKNeyrfg7KkdQ=="], + "@vitest/utils": ["@vitest/utils@5.0.4", "", { "dependencies": { "@vitest/pretty-format": "5.0.4", "convert-source-map": "^2.0.0", "tinyrainbow": "^3.2.0" } }, "sha512-hgpnyMuMqCz2PARmk3v62FxUr8jHIkY13ygvUeh8s+dmQxfnvkB/sgtoZFzG4lMitnEdnrg/lCvDbtVzuAsGWQ=="], "@xmldom/is-dom-node": ["@xmldom/is-dom-node@1.0.1", "", {}, "sha512-CJDxIgE5I0FH+ttq/Fxy6nRpxP70+e2O048EPe85J2use3XKdatVM7dDVvFNjQudd9B49NPoZ+8PG49zj4Er8Q=="], @@ -2499,11 +2496,11 @@ "@xterm/xterm": ["@xterm/xterm@6.0.0", "", {}, "sha512-TQwDdQGtwwDt+2cgKDLn0IRaSxYu1tSUjgKarSDkUM0ZNiSRXFpjxEsvc/Zgc5kq5omJ+V0a8/kIM2WD3sMOYg=="], - "@xyflow/react": ["@xyflow/react@12.11.3", "", { "dependencies": { "@xyflow/system": "0.0.80", "classcat": "^5.0.3", "zustand": "^4.4.0" }, "peerDependencies": { "@types/react": ">=17", "@types/react-dom": ">=17", "react": ">=17", "react-dom": ">=17" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-G3jogHz2GWUtIOkhavUGno2YzY9u6fILIJBttfsBendb0/HWB90JG+sOTAvlIMEwyvq9zgy9V9ZQSwyQjR5QzQ=="], + "@xyflow/react": ["@xyflow/react@12.12.0", "", { "dependencies": { "@xyflow/system": "0.0.83", "classcat": "^5.0.3", "zustand": "^4.4.0" }, "peerDependencies": { "@types/react": ">=17", "@types/react-dom": ">=17", "react": ">=17", "react-dom": ">=17" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-74oXI0Rgm1Eu33cHQAd74J6oVgCH9mbFyTVQbsGgp2kmWwh0HdtBr2VP04z8mbPD+M/xO69nqG5dDEt7/EN2rQ=="], - "@xyflow/system": ["@xyflow/system@0.0.80", "", { "dependencies": { "@types/d3-drag": "^3.0.7", "@types/d3-interpolate": "^3.0.4", "@types/d3-selection": "^3.0.10", "@types/d3-transition": "^3.0.8", "@types/d3-zoom": "^3.0.8", "d3-drag": "^3.0.0", "d3-interpolate": "^3.0.1", "d3-selection": "^3.0.0", "d3-zoom": "^3.0.0" } }, "sha512-ywc3ZqG91brzWrH1WlwMdIX4goOfrpBy6AbLdVSaof/Xx9l138ijIKRExM6EkMro2F+OImGmSiA/WKcXvKVcfA=="], + "@xyflow/system": ["@xyflow/system@0.0.83", "", { "dependencies": { "@types/d3-drag": "^3.0.7", "@types/d3-interpolate": "^3.0.4", "@types/d3-selection": "^3.0.10", "@types/d3-transition": "^3.0.8", "@types/d3-zoom": "^3.0.8", "d3-drag": "^3.0.0", "d3-interpolate": "^3.0.1", "d3-selection": "^3.0.0", "d3-zoom": "^3.0.0" } }, "sha512-a//eDjez3WZF47aaPTfVUDD0OINOq+WVwBZCRTqG+m0a5euX8EwlJ4jMY1Wxz0Ocj4xOeekJ70V22Pq0ll8RJw=="], - "@zone-eu/mailsplit": ["@zone-eu/mailsplit@5.4.15", "", { "dependencies": { "libbase64": "1.3.0", "libmime": "5.4.2", "libqp": "2.1.1" } }, "sha512-c7ZpxauvF4AEkDJlKDYO7iMUtMuqJMBnDWNff1cyx+d7zaBVR3iFEmXhNHOVoMmVyVF3pTZLsLIJsEFKDldOAA=="], + "@zone-eu/mailsplit": ["@zone-eu/mailsplit@5.4.16", "", { "dependencies": { "libbase64": "1.3.0", "libmime": "5.4.3", "libqp": "2.1.1" } }, "sha512-zQ9iXvlT3Wi/hazeC1MdI4rQc1UJwJ6IQ6QzSZ5KDxLZZWQSazWLOzImLFluXadKShJ9WJvI1xH+AyVS8b9azg=="], "abbrev": ["abbrev@4.0.0", "", {}, "sha512-a1wflyaL0tHtJSmLSOVybYhy22vRih4eduhhrkcjgrWGnRfrZtovJ2FRjxuTtkkj47O/baf0R86QU5OuYpz8fA=="], @@ -2523,7 +2520,7 @@ "ai": ["ai@5.0.203", "", { "dependencies": { "@ai-sdk/gateway": "2.0.102", "@ai-sdk/provider": "2.0.3", "@ai-sdk/provider-utils": "3.0.26", "@opentelemetry/api": "1.9.0" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-U50l+Np0IDzkUJ59QOBb80y3x1QH8+XJqzoIIxkO756mPlOuoRfj80CFIBKtaHmDSTJoEAMdt0iaaDOqMCGZkQ=="], - "ajv": ["ajv@8.18.0", "", { "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2" } }, "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A=="], + "ajv": ["ajv@8.20.0", "", { "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2" } }, "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA=="], "ajv-formats": ["ajv-formats@3.0.1", "", { "dependencies": { "ajv": "^8.0.0" } }, "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ=="], @@ -2549,10 +2546,6 @@ "aria-query": ["aria-query@5.3.2", "", {}, "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw=="], - "arkregex": ["arkregex@0.0.5", "", { "dependencies": { "@ark/util": "0.56.0" } }, "sha512-ncYjBdLlh5/QnVsAA8De16Tc9EqmYM7y/WU9j+236KcyYNUXogpz3sC4ATIZYzzLxwI+0sEOaQLEmLmRleaEXw=="], - - "arktype": ["arktype@2.2.0", "", { "dependencies": { "@ark/schema": "0.56.0", "@ark/util": "0.56.0", "arkregex": "0.0.5" } }, "sha512-t54MZ7ti5BhOEvzEkgKnWvqj+UbDfWig+DHr5I34xatymPusKLS0lQpNJd8M6DzmIto2QGszHfNKoFIT8tMCZQ=="], - "arrify": ["arrify@2.0.1", "", {}, "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug=="], "arrivals": ["arrivals@2.1.2", "", { "dependencies": { "debug": "^4.0.1", "nanotimer": "0.3.14" } }, "sha512-g3+rxhxUen2H4+PPBOz6U6pkQ4esBuQPna1rPskgK1jamBdDZeoppyB2vPUM/l0ccunwRrq4r2rKgCvc2FnrFA=="], @@ -2565,7 +2558,7 @@ "assertion-error": ["assertion-error@2.0.1", "", {}, "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA=="], - "ast-v8-to-istanbul": ["ast-v8-to-istanbul@1.0.6", "", { "dependencies": { "@jridgewell/trace-mapping": "^0.3.31", "estree-walker": "^3.0.3", "js-tokens": "^10.0.0" } }, "sha512-fvpl29helSO2w/z7utIbrkNXILdrLwDwAMH2I/zPKlGf5244+gf+B4cyS1sANcrPY2h+hWCGSgC8N61s/+AF9A=="], + "ast-v8-to-istanbul": ["ast-v8-to-istanbul@1.0.7", "", { "dependencies": { "@jridgewell/trace-mapping": "^0.3.31", "estree-walker": "^3.0.3", "js-tokens": "^10.0.0" } }, "sha512-kFL68AG6ajd8fg248zwM9GQrUWEp79gsmjum34OEXjs4yHuUMZfYKwOLW9GMmB4oNvVrj+EAGxsP7ye2UR9UlA=="], "astring": ["astring@1.9.0", "", { "bin": { "astring": "bin/astring" } }, "sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg=="], @@ -2609,13 +2602,11 @@ "base64-js": ["base64-js@1.5.1", "", {}, "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="], - "base64id": ["base64id@2.0.0", "", {}, "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog=="], - "baseline-browser-mapping": ["baseline-browser-mapping@2.10.37", "", { "bin": { "baseline-browser-mapping": "dist/cli.cjs" } }, "sha512-girxaJ7WZssDOFhzCGZTDKoTa1gk6A1TbflaYTpykLJ4UU9Fz9kx1aREM8JCuoVHbL8X8T/mJg7w2oYSq72Oig=="], "bcrypt-pbkdf": ["bcrypt-pbkdf@1.0.2", "", { "dependencies": { "tweetnacl": "^0.14.3" } }, "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w=="], - "before-after-hook": ["before-after-hook@3.0.2", "", {}, "sha512-Nik3Sc0ncrMK4UUdXQmAnRtzmNQTAAXmXIopizwZ1W1t8QmfJj+zL4OA2I7XPTPW5z5TDqv4hRo/JzouDJnX3A=="], + "before-after-hook": ["before-after-hook@4.0.0", "", {}, "sha512-q6tR3RPqIB1pMiTRMFcZwuG5T8vwp+vUvEG0vuI6B+Rikh5BfPp2fQ82c925FOs+b0lcFQ8CFrL+KbilfZFhOQ=="], "better-auth": ["better-auth@1.6.27", "", { "dependencies": { "@better-auth/core": "1.6.27", "@better-auth/drizzle-adapter": "1.6.27", "@better-auth/kysely-adapter": "1.6.27", "@better-auth/memory-adapter": "1.6.27", "@better-auth/mongo-adapter": "1.6.27", "@better-auth/prisma-adapter": "1.6.27", "@better-auth/telemetry": "1.6.27", "@better-auth/utils": "0.4.2", "@better-fetch/fetch": "1.3.1", "@noble/ciphers": "^2.1.1", "@noble/hashes": "^2.0.1", "better-call": "1.4.0", "defu": "^6.1.4", "jose": "^6.1.3", "kysely": "^0.28.17 || ^0.29.0", "nanostores": "^1.1.1", "zod": "^4.3.6" }, "peerDependencies": { "@lynx-js/react": "*", "@prisma/client": "^5.0.0 || ^6.0.0 || ^7.0.0", "@sveltejs/kit": "^2.0.0", "@tanstack/react-start": "^1.0.0", "@tanstack/solid-start": "^1.0.0", "better-sqlite3": "^12.0.0", "drizzle-kit": ">=0.31.4", "drizzle-orm": "^0.45.2", "mongodb": "^6.0.0 || ^7.0.0", "mysql2": "^3.0.0", "next": "^14.0.0 || ^15.0.0 || ^16.0.0", "pg": "^8.0.0", "prisma": "^5.0.0 || ^6.0.0 || ^7.0.0", "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0", "solid-js": "^1.0.0", "svelte": "^4.0.0 || ^5.0.0", "vitest": "^2.0.0 || ^3.0.0 || ^4.0.0", "vue": "^3.0.0" }, "optionalPeers": ["@lynx-js/react", "@prisma/client", "@sveltejs/kit", "@tanstack/react-start", "@tanstack/solid-start", "better-sqlite3", "drizzle-kit", "drizzle-orm", "mongodb", "mysql2", "next", "pg", "prisma", "react", "react-dom", "solid-js", "svelte", "vitest", "vue"] }, "sha512-x3jyxpAiBSsMO/DaXMFSVwM8bTqnYZlCKsZxBV43zL3ZtsGa/CzeUuNKxPT2Lsz7ahTBY90Ku1tibN6nRpVEbw=="], @@ -2631,7 +2622,7 @@ "bl": ["bl@6.1.6", "", { "dependencies": { "@types/readable-stream": "^4.0.0", "buffer": "^6.0.3", "inherits": "^2.0.4", "readable-stream": "^4.2.0" } }, "sha512-jLsPgN/YSvPUg9UX0Kd73CXpm2Psg9FxMeCSXnk3WBO3CMT10JMwijubhGfHCnFu6TPn1ei3b975dxv7K2pWVg=="], - "bluebird": ["bluebird@3.4.7", "", {}, "sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA=="], + "bluebird": ["bluebird@3.7.2", "", {}, "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg=="], "body-parser": ["body-parser@2.3.0", "", { "dependencies": { "bytes": "^3.1.2", "content-type": "^2.0.0", "debug": "^4.4.3", "http-errors": "^2.0.1", "iconv-lite": "^0.7.2", "on-finished": "^2.4.1", "qs": "^6.15.2", "raw-body": "^3.0.2", "type-is": "^2.1.0" } }, "sha512-2cGmJupaNgg+QUwVLAucDuWuoMZ6EX9iHDRswZ5lsNYEmwPaRknMPCLZz07yTzVq/83p4o/wzbDZbBrTvGGTIw=="], @@ -2641,7 +2632,7 @@ "bowser": ["bowser@2.14.1", "", {}, "sha512-tzPjzCxygAKWFOJP011oxFHs57HzIhOEracIgAePE4pqB3LikALKnSzUyU4MGs9/iCEUuHlAJTjTc5M+u7YEGg=="], - "brace-expansion": ["brace-expansion@5.0.9", "", { "dependencies": { "balanced-match": "^4.0.2" } }, "sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg=="], + "brace-expansion": ["brace-expansion@5.0.12", "", { "dependencies": { "balanced-match": "^4.0.2" } }, "sha512-YovQ3rzhaLMIrDjNDMkNS01tea93qhEhG5xy8f6+R0l+dw3Ki+5sCoIoI942iuLZTHWogWktgwVDhU09iNEimQ=="], "braces": ["braces@3.0.3", "", { "dependencies": { "fill-range": "^7.1.1" } }, "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA=="], @@ -2665,7 +2656,7 @@ "builder-util-runtime": ["builder-util-runtime@9.7.0", "", { "dependencies": { "debug": "^4.3.4", "sax": "^1.2.4" } }, "sha512-g/kR520giAFYkSXTzcmF3kqQq7wi8F6N6SzeDgZrqTBN+VHdmgWOyTdD1yD7AATDId/yXLvuP34CxW46/BwCdw=="], - "bun-types": ["bun-types@1.4.1", "", { "dependencies": { "@types/node": "*" } }, "sha512-loKuVrAFZKfEv+JvWkHRS9GW5IqLuLRjVXN9p+vZvBN86O5hf/pBZQ5hSoyipsrMmWObZBDvWnlmKvjKTM0PdA=="], + "bun-types": ["bun-types@1.4.3", "", { "dependencies": { "@types/node": "*", "undici-types": "*" } }, "sha512-tinRJNGOmUN+tEAsn2y2e942n9JHRHR42iUYzDH75NmhJqVBokGSQkkfSFdNWwsANIdrK6ACH9t01M452YyTwg=="], "bundle-name": ["bundle-name@4.1.0", "", { "dependencies": { "run-applescript": "^7.0.0" } }, "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q=="], @@ -2679,7 +2670,7 @@ "c12": ["c12@3.1.0", "", { "dependencies": { "chokidar": "^4.0.3", "confbox": "^0.2.2", "defu": "^6.1.4", "dotenv": "^16.6.1", "exsolve": "^1.0.7", "giget": "^2.0.0", "jiti": "^2.4.2", "ohash": "^2.0.11", "pathe": "^2.0.3", "perfect-debounce": "^1.0.0", "pkg-types": "^2.2.0", "rc9": "^2.1.2" }, "peerDependencies": { "magicast": "^0.3.5" }, "optionalPeers": ["magicast"] }, "sha512-uWoS8OU1MEIsOv8p/5a82c3H31LsWVR5qiyXVfBNOzfffjUWtPnhAb4BYI2uG2HfGmZmFjCtui5XNWaps+iFuw=="], - "c15t": ["c15t@2.2.1", "", { "dependencies": { "@c15t/schema": "2.2.0", "@c15t/translations": "2.2.1", "zustand": "5.0.14" } }, "sha512-6/yePflfCveo6Q1qMsX3DaKyE2OEuy41PBIl61Z7wScvJkIos3fky2RvBe8p+cScIGM0AbGoXvSEkOxbBda75g=="], + "c15t": ["c15t@2.3.0", "", { "dependencies": { "@c15t/schema": "2.3.0", "@c15t/translations": "2.3.0", "zustand": "5.0.14" } }, "sha512-+QBONCgMp2H0Yc3XVrQALasWihf0VFd9Ne+knXp8J1MyCcDM35rleHlD5ptBBnUUreMjTaEfYKxHrQ31imGiDg=="], "cacheable-lookup": ["cacheable-lookup@7.0.0", "", {}, "sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w=="], @@ -2695,7 +2686,7 @@ "ccount": ["ccount@2.0.1", "", {}, "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg=="], - "chai": ["chai@6.2.2", "", {}, "sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg=="], + "chai": ["chai@6.3.0", "", {}, "sha512-XWAtwJ6OHO+tj0EKCs0Y2UamnyOxseZWltU4x2U2wh8g4AigdjwvtUjvLP2tqkA/avxHEtzxNaqGq/YGNwckKg=="], "chalk": ["chalk@5.6.2", "", {}, "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA=="], @@ -2709,7 +2700,7 @@ "chardet": ["chardet@2.2.0", "", {}, "sha512-rddelWYNPRrXq6PtNEN2S3f6t9ILzvqaN5pVgi4kqt9jHQaXIial9PznB5iSPVlQSLNaaH22ItWz3EJtQ10+OA=="], - "cheerio": ["cheerio@1.1.2", "", { "dependencies": { "cheerio-select": "^2.1.0", "dom-serializer": "^2.0.0", "domhandler": "^5.0.3", "domutils": "^3.2.2", "encoding-sniffer": "^0.2.1", "htmlparser2": "^10.0.0", "parse5": "^7.3.0", "parse5-htmlparser2-tree-adapter": "^7.1.0", "parse5-parser-stream": "^7.1.2", "undici": "^7.12.0", "whatwg-mimetype": "^4.0.0" } }, "sha512-IkxPpb5rS/d1IiLbHMgfPuS0FgiWTtFIm/Nj+2woXDLTZ7fOT2eqzgYbdMlLweqlHbsZjxEChoVK+7iph7jyQg=="], + "cheerio": ["cheerio@1.2.0", "", { "dependencies": { "cheerio-select": "^2.1.0", "dom-serializer": "^2.0.0", "domhandler": "^5.0.3", "domutils": "^3.2.2", "encoding-sniffer": "^0.2.1", "htmlparser2": "^10.1.0", "parse5": "^7.3.0", "parse5-htmlparser2-tree-adapter": "^7.1.0", "parse5-parser-stream": "^7.1.2", "undici": "^7.19.0", "whatwg-mimetype": "^4.0.0" } }, "sha512-WDrybc/gKFpTYQutKIK6UvfcuxijIZfMfXaYm8NMsPQxSYvf+13fXUJ4rztGGbJcBQ/GF55gvrZ0Bc0bj/mqvg=="], "cheerio-select": ["cheerio-select@2.1.0", "", { "dependencies": { "boolbase": "^1.0.0", "css-select": "^5.1.0", "css-what": "^6.1.0", "domelementtype": "^2.3.0", "domhandler": "^5.0.3", "domutils": "^3.0.1" } }, "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g=="], @@ -2739,7 +2730,7 @@ "cli-table3": ["cli-table3@0.6.5", "", { "dependencies": { "string-width": "^4.2.0" }, "optionalDependencies": { "@colors/colors": "1.5.0" } }, "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ=="], - "cli-truncate": ["cli-truncate@4.0.0", "", { "dependencies": { "slice-ansi": "^5.0.0", "string-width": "^7.0.0" } }, "sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA=="], + "cli-truncate": ["cli-truncate@5.2.0", "", { "dependencies": { "slice-ansi": "^8.0.0", "string-width": "^8.2.0" } }, "sha512-xRwvIOMGrfOAnM1JYtqQImuaNtDEv9v6oIYAs4LIHwTiKee8uwvIi363igssOC0O5U04i4AlENs79LQLu9tEMw=="], "cli-width": ["cli-width@4.1.0", "", {}, "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ=="], @@ -2781,7 +2772,7 @@ "concat-stream": ["concat-stream@2.0.0", "", { "dependencies": { "buffer-from": "^1.0.0", "inherits": "^2.0.3", "readable-stream": "^3.0.2", "typedarray": "^0.0.6" } }, "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A=="], - "concurrently": ["concurrently@10.0.5", "", { "dependencies": { "chalk": "5.6.2", "rxjs": "7.8.2", "shell-quote": "1.9.0", "supports-color": "10.2.2", "tree-kill": "1.2.2", "yargs": "18.0.0" }, "bin": { "conc": "dist/bin/index.js", "concurrently": "dist/bin/index.js" } }, "sha512-JaP/CoftUrCcAFW/g//RbgEGwlelnEae6cfBLgH6ZdO6s8jPkn6p9SB9u6pdVxYXoiSnFqseOlHfrEfF82TVOg=="], + "concurrently": ["concurrently@10.0.6", "", { "dependencies": { "chalk": "5.6.2", "rxjs": "7.8.2", "shell-quote": "1.12.0", "supports-color": "10.2.2", "tree-kill": "1.2.2", "yargs": "18.0.0" }, "bin": { "conc": "dist/bin/index.js", "concurrently": "dist/bin/index.js" } }, "sha512-qgICXXFp2/3nAebRLmxcINKEXM1mLK3ij/y31P02VTs/KIkddIeC05n73DxOXsXMB9LFSqNU1/na3lDlOhcbIw=="], "conf": ["conf@15.1.0", "", { "dependencies": { "ajv": "^8.17.1", "ajv-formats": "^3.0.1", "atomically": "^2.0.3", "debounce-fn": "^6.0.0", "dot-prop": "^10.0.0", "env-paths": "^3.0.0", "json-schema-typed": "^8.0.1", "semver": "^7.7.2", "uint8array-extras": "^1.5.0" } }, "sha512-Uy5YN9KEu0WWDaZAVJ5FAmZoaJt9rdK6kH+utItPyGsCqCgaTKkrmZx3zoE0/3q6S3bcp3Ihkk+ZqPxWxFK5og=="], @@ -2851,7 +2842,7 @@ "csstype": ["csstype@3.2.3", "", {}, "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ=="], - "csv-parse": ["csv-parse@7.0.2", "", {}, "sha512-uKZghv9UmPkMVLYy//KZ9HFAIJsl7wkhoEdIL0+rhuSY9pZQlhaeGEDPIe+/w7eh81MOql8Q/9+inAGWG6ZHYA=="], + "csv-parse": ["csv-parse@7.0.3", "", {}, "sha512-YFd3QM/yo17vH91L1IOZuvl09zM0zEEtdfTcOCKWcMdM++MNaQSyp09slXyFCLaPXvHstQFx/xC8myiFHSMUvw=="], "cytoscape": ["cytoscape@3.34.0", "", {}, "sha512-62rNSrioXw93uliKFBwjukeQyeWwH2PqDrTac31r2P6464u3AUvTk0xS4LVvT251g7IgkFunrI48ZEZGjywSOg=="], @@ -2931,7 +2922,7 @@ "datadog-metrics": ["datadog-metrics@0.12.1", "", { "dependencies": { "@datadog/datadog-api-client": "^1.17.0", "debug": "^4.1.0" } }, "sha512-Gy+17ia7m9Uy+nKQHDd7fljdq0fqqfpgkpxlwW0x1oFKI7RcgDV32pMCfHtv4HKychP6fHtncj3Lf4VN/g4G6A=="], - "date-fns": ["date-fns@4.1.0", "", {}, "sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg=="], + "date-fns": ["date-fns@4.4.0", "", {}, "sha512-+1UMbeh68lH1SegH83CGWwpb6OHHbpSgr3+s5Eww5M4CAgswBpoWS0AjTOfEJ33HiYKz1hdj/KTFprzXHmq/6w=="], "dateformat": ["dateformat@4.6.3", "", {}, "sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA=="], @@ -2993,9 +2984,9 @@ "devlop": ["devlop@1.1.0", "", { "dependencies": { "dequal": "^2.0.0" } }, "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA=="], - "devtools-protocol": ["devtools-protocol@0.0.1464554", "", {}, "sha512-CAoP3lYfwAGQTaAXYvA6JZR0fjGUb7qec1qf4mToyoH2TZgUFeIqYcjh6f9jNuhHfuZiEdH+PONHYrLhRQX6aw=="], + "devtools-protocol": ["devtools-protocol@0.0.1642743", "", {}, "sha512-vTCGze95hGFayPNUXv2H/3cNt/Kqv3J7XqS519j7U8HYhmtD6+eVEPHp6nRHD64dDXJ022TU4reAYhjYyuxm8Q=="], - "diff": ["diff@8.0.4", "", {}, "sha512-DPi0FmjiSU5EvQV0++GFDOJ9ASQUVFh5kD+OzOnYdi7n3Wpm9hWWGfB/O2blfHcMVTL5WkQXSnRiK9makhrcnw=="], + "diff": ["diff@9.0.0", "", {}, "sha512-svtcdpS8CgJyqAjEQIXdb3OjhFVVYjzGAPO8WGCmRbrml64SPw/jJD4GoE98aR7r25A0XcgrK3F02yw9R/vhQw=="], "dingbat-to-unicode": ["dingbat-to-unicode@1.0.1", "", {}, "sha512-98l0sW87ZT58pU4i61wa2OHwxbiYSbuxsCBozaVnYX2iCnr3bLM3fIes1/ej7h1YdOKuKt/MLs706TVnALA65w=="], @@ -3021,7 +3012,7 @@ "domhandler": ["domhandler@5.0.3", "", { "dependencies": { "domelementtype": "^2.3.0" } }, "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w=="], - "dompurify": ["dompurify@3.4.13", "", { "optionalDependencies": { "@types/trusted-types": "^2.0.7" } }, "sha512-2vmYIoqjze2d+kakP8S/nS5shfsl587kzwEjcGlTdiksUVgFHnFCsLYDVj/JNqJVOQZGSYBTmuycv0PodwmnMQ=="], + "dompurify": ["dompurify@3.4.17", "", { "optionalDependencies": { "@types/trusted-types": "^2.0.7" } }, "sha512-B/pSlYVHQ58kqISD/yDjuJ1yfzI34m1gF4lAod2bwSRhiN4K5Cl3H8Af7hqB2PmTL911tdEudnnXn5FnhRoz0w=="], "domutils": ["domutils@3.2.2", "", { "dependencies": { "dom-serializer": "^2.0.0", "domelementtype": "^2.3.0", "domhandler": "^5.0.3" } }, "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw=="], @@ -3035,7 +3026,7 @@ "drizzle-kit": ["drizzle-kit@0.31.10", "", { "dependencies": { "@drizzle-team/brocli": "^0.10.2", "@esbuild-kit/esm-loader": "^2.5.5", "esbuild": "^0.25.4", "tsx": "^4.21.0" }, "bin": { "drizzle-kit": "bin.cjs" } }, "sha512-7OZcmQUrdGI+DUNNsKBn1aW8qSoKuTH7d0mYgSP8bAzdFzKoovxEFnoGQp2dVs82EOJeYycqRtciopszwUf8bw=="], - "drizzle-orm": ["drizzle-orm@0.45.2", "", { "peerDependencies": { "@aws-sdk/client-rds-data": ">=3", "@cloudflare/workers-types": ">=4", "@electric-sql/pglite": ">=0.2.0", "@libsql/client": ">=0.10.0", "@libsql/client-wasm": ">=0.10.0", "@neondatabase/serverless": ">=0.10.0", "@op-engineering/op-sqlite": ">=2", "@opentelemetry/api": "^1.4.1", "@planetscale/database": ">=1.13", "@prisma/client": "*", "@tidbcloud/serverless": "*", "@types/better-sqlite3": "*", "@types/pg": "*", "@types/sql.js": "*", "@upstash/redis": ">=1.34.7", "@vercel/postgres": ">=0.8.0", "@xata.io/client": "*", "better-sqlite3": ">=7", "bun-types": "*", "expo-sqlite": ">=14.0.0", "gel": ">=2", "knex": "*", "kysely": "*", "mysql2": ">=2", "pg": ">=8", "postgres": ">=3", "sql.js": ">=1", "sqlite3": ">=5" }, "optionalPeers": ["@aws-sdk/client-rds-data", "@cloudflare/workers-types", "@electric-sql/pglite", "@libsql/client", "@libsql/client-wasm", "@neondatabase/serverless", "@op-engineering/op-sqlite", "@opentelemetry/api", "@planetscale/database", "@prisma/client", "@tidbcloud/serverless", "@types/better-sqlite3", "@types/pg", "@types/sql.js", "@upstash/redis", "@vercel/postgres", "@xata.io/client", "better-sqlite3", "bun-types", "expo-sqlite", "gel", "knex", "kysely", "mysql2", "pg", "postgres", "sql.js", "sqlite3"] }, "sha512-kY0BSaTNYWnoDMVoyY8uxmyHjpJW1geOmBMdSSicKo9CIIWkSxMIj2rkeSR51b8KAPB7m+qysjuHme5nKP+E5Q=="], + "drizzle-orm": ["drizzle-orm@0.45.4", "", { "peerDependencies": { "@aws-sdk/client-rds-data": ">=3", "@cloudflare/workers-types": ">=4", "@electric-sql/pglite": ">=0.2.0", "@libsql/client": ">=0.10.0", "@libsql/client-wasm": ">=0.10.0", "@neondatabase/serverless": ">=0.10.0", "@netlify/db": ">=0.4.0", "@op-engineering/op-sqlite": ">=2", "@opentelemetry/api": "^1.4.1", "@planetscale/database": ">=1.13", "@prisma/client": "*", "@tidbcloud/serverless": "*", "@types/better-sqlite3": "*", "@types/pg": "*", "@types/sql.js": "*", "@upstash/redis": ">=1.34.7", "@vercel/postgres": ">=0.8.0", "@xata.io/client": "*", "better-sqlite3": ">=7", "bun-types": "*", "expo-sqlite": ">=14.0.0", "gel": ">=2", "knex": "*", "kysely": "*", "mysql2": ">=2", "pg": ">=8", "postgres": ">=3", "prisma": "*", "sql.js": ">=1", "sqlite3": ">=5" }, "optionalPeers": ["@aws-sdk/client-rds-data", "@cloudflare/workers-types", "@electric-sql/pglite", "@libsql/client", "@libsql/client-wasm", "@neondatabase/serverless", "@netlify/db", "@op-engineering/op-sqlite", "@opentelemetry/api", "@planetscale/database", "@prisma/client", "@tidbcloud/serverless", "@types/better-sqlite3", "@types/pg", "@types/sql.js", "@upstash/redis", "@vercel/postgres", "@xata.io/client", "better-sqlite3", "bun-types", "expo-sqlite", "gel", "knex", "kysely", "mysql2", "pg", "postgres", "prisma", "sql.js", "sqlite3"] }, "sha512-NiM1YZpJ2UxyeE67DpDDZ+Tsw4YLX3trSlkNT7Tm9eKoUNb1LvaAaQzXgYQsWs+AQ9TUmmwMmBOCXuqqxUWKKQ=="], "duck": ["duck@0.1.12", "", { "dependencies": { "underscore": "^1.13.1" } }, "sha512-wkctla1O6VfP89gQ+J/yDesM0S7B7XLXjKGzXxMDVFg7uEn706niAtyYovKbyq1oT9YwDcly721/iUWoc8MVRg=="], @@ -3047,8 +3038,6 @@ "e2b": ["e2b@2.50.0", "", { "dependencies": { "@bufbuild/protobuf": "^2.14.1", "@connectrpc/connect": "^2.2.0", "@connectrpc/connect-web": "^2.2.0", "chalk": "^5.3.0", "compare-versions": "^6.1.0", "dockerfile-ast": "^0.7.1", "glob": "^13.0.6", "openapi-fetch": "^0.14.1", "platform": "^1.3.6", "tar": "^7.5.22", "undici": "^7.29.1" }, "optionalDependencies": { "undici8": "npm:undici@8.10.2" } }, "sha512-XADlFhXGMvvWGPnyBiah6EFwNFBg1XIvdLInKhjMq/tuhlpN46Btj9BpuxwjvGenVJNZgimzn6Xj0XwttrMKjQ=="], - "eastasianwidth": ["eastasianwidth@0.2.0", "", {}, "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA=="], - "ecdsa-sig-formatter": ["ecdsa-sig-formatter@1.0.11", "", { "dependencies": { "safe-buffer": "^5.0.1" } }, "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ=="], "echarts": ["echarts@6.1.0", "", { "dependencies": { "tslib": "2.3.0", "zrender": "6.1.0" } }, "sha512-q0yaFPggC9FUdsWH4blavRWFmxdrIodbkoKNAjJudAI6CA9gNPxHtV2RcZNEepZVlk4yvBYkOkbk6HIVpIyHZA=="], @@ -3077,13 +3066,13 @@ "encodeurl": ["encodeurl@2.0.0", "", {}, "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg=="], - "encoding-japanese": ["encoding-japanese@2.2.0", "", {}, "sha512-EuJWwlHPZ1LbADuKTClvHtwbaFn4rOD+dRAbWysqEOXRc2Uui0hJInNJrsdH0c+OhJA4nrCBdSkW4DD5YxAo6A=="], + "encoding-japanese": ["encoding-japanese@2.3.0", "", {}, "sha512-eQyh1vzHz13DUkZcJO+0IOAoKXRQwKV5IBffeuYsWZyRLGiSzfzXObCqWvqFXdX0UU8qOk+lBXbkUhMCpdJe4Q=="], "encoding-sniffer": ["encoding-sniffer@0.2.1", "", { "dependencies": { "iconv-lite": "^0.6.3", "whatwg-encoding": "^3.1.1" } }, "sha512-5gvq20T6vfpekVtqrYQsSCFZ1wEg5+wW0/QaZMWkFr6BqD3NfKs0rLCx4rrVlSWJeZb5NBJgVLswK/w2MWU+Gw=="], "end-of-stream": ["end-of-stream@1.4.5", "", { "dependencies": { "once": "^1.4.0" } }, "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg=="], - "engine.io": ["engine.io@6.6.8", "", { "dependencies": { "@types/cors": "^2.8.12", "@types/node": ">=10.0.0", "@types/ws": "^8.5.12", "accepts": "~1.3.4", "base64id": "2.0.0", "cookie": "~0.7.2", "cors": "~2.8.5", "debug": "~4.4.1", "engine.io-parser": "~5.2.1", "ws": "~8.20.1" } }, "sha512-2agL3ueZhqxoVrfmntO8yuVj+uNSlIOnhykYHk3Cq0ShYPdUjjUiSJrQvXjq01I9jAuI0Zl2YO8Evv5Mqytm5g=="], + "engine.io": ["engine.io@6.6.11", "", { "dependencies": { "@types/cors": "^2.8.12", "@types/node": ">=10.0.0", "@types/ws": "^8.5.12", "accepts": "~1.3.4", "cookie": "~0.7.2", "cors": "~2.8.5", "debug": "~4.4.1", "engine.io-parser": "~5.2.1", "ws": "~8.21.0" } }, "sha512-z34mGpLoY/82ZbkX1LqGMIaf3wjVMPL6gVC681QDqnmzJ26synI8qAE32P+a7UazmpJZ8UGrFIeAavgRfXzYrg=="], "engine.io-client": ["engine.io-client@6.6.5", "", { "dependencies": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.4.1", "engine.io-parser": "~5.2.1", "ws": "~8.20.1", "xmlhttprequest-ssl": "~2.1.1" } }, "sha512-QCwxUDULPlXv8F6tqMMKx5dNkTe6OaBYRMPYeXKBlyOoKvAmE0ac6pW7fFhSscJ/5SI7666/U/B+MElbsrJlIg=="], @@ -3111,7 +3100,7 @@ "es-set-tostringtag": ["es-set-tostringtag@2.1.0", "", { "dependencies": { "es-errors": "^1.3.0", "get-intrinsic": "^1.2.6", "has-tostringtag": "^1.0.2", "hasown": "^2.0.2" } }, "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA=="], - "es-toolkit": ["es-toolkit@1.45.1", "", {}, "sha512-/jhoOj/Fx+A+IIyDNOvO3TItGmlMKhtX8ISAHKE90c4b/k1tqaqEZ+uUqfpU8DMnW5cgNJv606zS55jGvza0Xw=="], + "es-toolkit": ["es-toolkit@1.52.0", "", {}, "sha512-XTNEJQh1tY1ZJVcf6ayP/2n4ZPyaHlW2FWs7xvw5ddPuhUVjLD3olQVQS7kf58JbAB48iL0uL/jerTrjtV3lDA=="], "es6-error": ["es6-error@4.1.1", "", {}, "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg=="], @@ -3119,7 +3108,7 @@ "esast-util-from-js": ["esast-util-from-js@2.0.1", "", { "dependencies": { "@types/estree-jsx": "^1.0.0", "acorn": "^8.0.0", "esast-util-from-estree": "^2.0.0", "vfile-message": "^4.0.0" } }, "sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw=="], - "esbuild": ["esbuild@0.28.1", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.28.1", "@esbuild/android-arm": "0.28.1", "@esbuild/android-arm64": "0.28.1", "@esbuild/android-x64": "0.28.1", "@esbuild/darwin-arm64": "0.28.1", "@esbuild/darwin-x64": "0.28.1", "@esbuild/freebsd-arm64": "0.28.1", "@esbuild/freebsd-x64": "0.28.1", "@esbuild/linux-arm": "0.28.1", "@esbuild/linux-arm64": "0.28.1", "@esbuild/linux-ia32": "0.28.1", "@esbuild/linux-loong64": "0.28.1", "@esbuild/linux-mips64el": "0.28.1", "@esbuild/linux-ppc64": "0.28.1", "@esbuild/linux-riscv64": "0.28.1", "@esbuild/linux-s390x": "0.28.1", "@esbuild/linux-x64": "0.28.1", "@esbuild/netbsd-arm64": "0.28.1", "@esbuild/netbsd-x64": "0.28.1", "@esbuild/openbsd-arm64": "0.28.1", "@esbuild/openbsd-x64": "0.28.1", "@esbuild/openharmony-arm64": "0.28.1", "@esbuild/sunos-x64": "0.28.1", "@esbuild/win32-arm64": "0.28.1", "@esbuild/win32-ia32": "0.28.1", "@esbuild/win32-x64": "0.28.1" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw=="], + "esbuild": ["esbuild@0.28.2", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.28.2", "@esbuild/android-arm": "0.28.2", "@esbuild/android-arm64": "0.28.2", "@esbuild/android-x64": "0.28.2", "@esbuild/darwin-arm64": "0.28.2", "@esbuild/darwin-x64": "0.28.2", "@esbuild/freebsd-arm64": "0.28.2", "@esbuild/freebsd-x64": "0.28.2", "@esbuild/linux-arm": "0.28.2", "@esbuild/linux-arm64": "0.28.2", "@esbuild/linux-ia32": "0.28.2", "@esbuild/linux-loong64": "0.28.2", "@esbuild/linux-mips64el": "0.28.2", "@esbuild/linux-ppc64": "0.28.2", "@esbuild/linux-riscv64": "0.28.2", "@esbuild/linux-s390x": "0.28.2", "@esbuild/linux-x64": "0.28.2", "@esbuild/netbsd-arm64": "0.28.2", "@esbuild/netbsd-x64": "0.28.2", "@esbuild/openbsd-arm64": "0.28.2", "@esbuild/openbsd-x64": "0.28.2", "@esbuild/openharmony-arm64": "0.28.2", "@esbuild/sunos-x64": "0.28.2", "@esbuild/win32-arm64": "0.28.2", "@esbuild/win32-ia32": "0.28.2", "@esbuild/win32-x64": "0.28.2" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-HKVLS8dvII+xoKW9kmqxbRKrnWEXfJJr/FZhhJmiqIB0e053QNYFqOBouTMO/k5sID4MvCiUCvv8b9M4h32wIA=="], "esbuild-wasm": ["esbuild-wasm@0.28.2", "", { "bin": { "esbuild": "bin/esbuild" } }, "sha512-GccVwhv3mmOUVQHCQm2Ox/rby8n/EqUwvZxE6Pjfikrq/lWw9g9WX/u9EykWnpot3Ko6j426DgQdea2xWKIAQA=="], @@ -3185,8 +3174,6 @@ "fast-check": ["fast-check@3.23.2", "", { "dependencies": { "pure-rand": "^6.1.0" } }, "sha512-h5+1OzzfCC3Ef7VbtKdcv7zsstUQwUDlYpUTvjeUsJAssPgLn7QzbboPtL5ro04Mq0rPOsMzl7q5hIbRs2wD1A=="], - "fast-content-type-parse": ["fast-content-type-parse@2.0.1", "", {}, "sha512-nGqtvLrj5w0naR6tDPfB4cUmYCqouzyQiz6C5y/LtcDllJdrcc6WaWW6iXyIIOErTa/XRybj28aasdn4LkVk6Q=="], - "fast-copy": ["fast-copy@4.0.3", "", {}, "sha512-58apWr0GUiDFM8+3afrO6eYwJBn9ZAhDOzG3L+/9llab/haCARS2UIfffmOurYLwbgDRs8n0rfr6qAAPEAuAQw=="], "fast-deep-equal": ["fast-deep-equal@3.1.3", "", {}, "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="], @@ -3207,7 +3194,7 @@ "fast-string-width": ["fast-string-width@3.0.2", "", { "dependencies": { "fast-string-truncated-width": "^3.0.2" } }, "sha512-gX8LrtNEI5hq8DVUfRQMbr5lpaS4nMIWV+7XEbXk2b8kiQIizgnlr12B4dA3ZEx3308ze0O4Q1R+cHts8kyUJg=="], - "fast-uri": ["fast-uri@3.1.5", "", {}, "sha512-gHwA1O9LDIcKunMKhObS/HimwtehO1nPUECKAu5TpKgaO19fcWEl4bliWe1jWxVFvIXztJjjQ4L8XQ1EU9f7Jw=="], + "fast-uri": ["fast-uri@3.1.8", "", {}, "sha512-GZMtZUTNRpOVIECoXwLNZS5xUGE+mVNbTB8h/7Rwh2TFWcBQiPzTgyZi05BF9UMZKkLJv8XBRJTlU7zg8+ZfMg=="], "fast-wrap-ansi": ["fast-wrap-ansi@0.2.2", "", { "dependencies": { "fast-string-width": "^3.0.2" } }, "sha512-7F2Fl+TjRSenLqlU3UjSH0iyqopqoZIu7eZVpEirP2g1GtWa2G/ecEmBdgz31+Mxr+ELclgg6sokpSFIQiZ02Q=="], @@ -3245,13 +3232,11 @@ "follow-redirects": ["follow-redirects@1.16.0", "", {}, "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw=="], - "foreground-child": ["foreground-child@3.3.1", "", { "dependencies": { "cross-spawn": "^7.0.6", "signal-exit": "^4.0.1" } }, "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw=="], - "form-data": ["form-data@4.0.6", "", { "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", "es-set-tostringtag": "^2.1.0", "hasown": "^2.0.4", "mime-types": "^2.1.35" } }, "sha512-vKatAh4SlVfgbv+YtmhiRjhEMJsYpsG1Y2rMQtR+SVSbytsSD1YGzDIcrAJmdFec88u/+VoGmxnl+80gL1tRCQ=="], "form-data-encoder": ["form-data-encoder@1.7.2", "", {}, "sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A=="], - "formatly": ["formatly@0.7.1", "", { "dependencies": { "fd-package-json": "^2.0.0", "package-manager-detector": "^1.8.0" }, "bin": { "formatly": "bin/index.mjs" } }, "sha512-ESuCEJE0SGgabl9q+zABI8LhJDmF+8nhpuqDzuM48HfJ9QTD5o6PqFJDFZY7w6f8xsh5lixuj5nJsQNvYOWvKQ=="], + "formatly": ["formatly@0.11.4", "", { "dependencies": { "fd-package-json": "^2.0.0", "package-manager-detector": "^1.8.0" }, "bin": { "formatly": "bin/index.mjs" } }, "sha512-TeCC10lP8KCgoX+Fe5lryILIT0/Dy+nP0OSVnsuB5CwXoLuOdqxCYlPFF1inR8S/zTy1ec7TjhS2TeRKWzzImA=="], "formdata-node": ["formdata-node@4.4.1", "", { "dependencies": { "node-domexception": "1.0.0", "web-streams-polyfill": "4.0.0-beta.3" } }, "sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ=="], @@ -3283,7 +3268,7 @@ "gaxios": ["gaxios@6.7.1", "", { "dependencies": { "extend": "^3.0.2", "https-proxy-agent": "^7.0.1", "is-stream": "^2.0.0", "node-fetch": "^2.6.9", "uuid": "^9.0.1" } }, "sha512-LDODD4TMYx7XXdpwxAVRAIAuB0bzv0s+ywFonY46k126qzQHT9ygyoa9tncmOiQmmDrik65UYsEkv3lbfqQ3yQ=="], - "gcp-metadata": ["gcp-metadata@8.1.3", "", { "dependencies": { "gaxios": "7.1.3", "google-logging-utils": "1.1.3", "json-bigint": "^1.0.0" } }, "sha512-ziTrzUhhpL9Zk5k0HHzgP/KIpWDJT0VMBC/ynt/QIBvTW+UUcSivQRl6VlwTf/EilDxtSWklHoRsKy1c4k+59w=="], + "gcp-metadata": ["gcp-metadata@8.1.2", "", { "dependencies": { "gaxios": "^7.0.0", "google-logging-utils": "^1.0.0", "json-bigint": "^1.0.0" } }, "sha512-zV/5HKTfCeKWnxG0Dmrw51hEWFGfcF2xiXqcA3+J90WDuP0SvoiSO5ORvcBsifmx/FoIjgQN3oNOGaQ5PhLFkg=="], "generate-function": ["generate-function@2.3.1", "", { "dependencies": { "is-property": "^1.0.2" } }, "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ=="], @@ -3307,7 +3292,7 @@ "github-slugger": ["github-slugger@2.0.0", "", {}, "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw=="], - "glob": ["glob@13.0.0", "", { "dependencies": { "minimatch": "^10.1.1", "minipass": "^7.1.2", "path-scurry": "^2.0.0" } }, "sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA=="], + "glob": ["glob@13.0.6", "", { "dependencies": { "minimatch": "^10.2.2", "minipass": "^7.1.3", "path-scurry": "^2.0.2" } }, "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw=="], "glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="], @@ -3315,9 +3300,9 @@ "globalthis": ["globalthis@1.0.4", "", { "dependencies": { "define-properties": "^1.2.1", "gopd": "^1.0.1" } }, "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ=="], - "google-auth-library": ["google-auth-library@10.5.0", "", { "dependencies": { "base64-js": "^1.3.0", "ecdsa-sig-formatter": "^1.0.11", "gaxios": "^7.0.0", "gcp-metadata": "^8.0.0", "google-logging-utils": "^1.0.0", "gtoken": "^8.0.0", "jws": "^4.0.0" } }, "sha512-7ABviyMOlX5hIVD60YOfHw4/CxOfBhyduaYB+wbFWCWoni4N7SLcV46hrVRktuBbZjFC9ONyqamZITN7q3n32w=="], + "google-auth-library": ["google-auth-library@10.9.1", "", { "dependencies": { "base64-js": "^1.3.0", "ecdsa-sig-formatter": "^1.0.11", "gaxios": "^7.1.4", "gcp-metadata": "8.1.2", "google-logging-utils": "1.1.3", "jws": "^4.0.0" } }, "sha512-i1ydyHrqcIxXkWh/uBmVkzCvIuq5yiK2ATndIe5XxKholrG/MTYP9xGYka4sQhrbIAgGjL2B6NOE7rFaiF3fXw=="], - "google-logging-utils": ["google-logging-utils@1.1.4", "", {}, "sha512-LXxE6ND+JHhDPYtPFt3oeWrjxFPrnRZCZ4At6lpbi1ZDSAN7bmGET9s53vvARbxT93p+xpeDUbc/nCR4C+7vcw=="], + "google-logging-utils": ["google-logging-utils@1.1.3", "", {}, "sha512-eAmLkjDjAFCVXg7A1unxHsLf961m6y17QFqXqAXGj/gVkKFrEICfStRfwUlGNfeCEjNRa32JEWOUTlYXPyyKvA=="], "gopd": ["gopd@1.2.0", "", {}, "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg=="], @@ -3331,9 +3316,9 @@ "grok-mermaid": ["grok-mermaid@0.2.3", "", {}, "sha512-/4KopAbsjvuRP9MdPtlDjOHUmUVEohOX73JNcsWpzAtFxh+bq5+Dhb6gzvRieLDwIPQIR3/vy8V1NNTuz4Zsmg=="], - "groq-sdk": ["groq-sdk@0.15.0", "", { "dependencies": { "@types/node": "^18.11.18", "@types/node-fetch": "^2.6.4", "abort-controller": "^3.0.0", "agentkeepalive": "^4.2.1", "form-data-encoder": "1.7.2", "formdata-node": "^4.3.2", "node-fetch": "^2.6.7" } }, "sha512-aYDEdr4qczx3cLCRRe+Beb37I7g/9bD5kHF+EEDxcrREWw1vKoRcfP3vHEkJB7Ud/8oOuF0scRwDpwWostTWuQ=="], + "groq-sdk": ["groq-sdk@1.6.0", "", { "bin": { "groq-sdk": "bin/cli" } }, "sha512-ggMgo6n84aZdNObgkSbSxWrdAq4wABsViIRb5e4N15bMUtDLZVhqlgZOI7X4TeqdBMdaVUOuUdZxAZIp06u0vw=="], - "gtoken": ["gtoken@8.0.0", "", { "dependencies": { "gaxios": "^7.0.0", "jws": "^4.0.0" } }, "sha512-+CqsMbHPiSTdtSO14O51eMNlrp9N79gmeqmXeouJOhfucAedHw9noVe/n5uJk3tbKE6a+6ZCQg3RPhVhHByAIw=="], + "gtoken": ["gtoken@7.1.0", "", { "dependencies": { "gaxios": "^6.0.0", "jws": "^4.0.0" } }, "sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw=="], "hachure-fill": ["hachure-fill@0.5.2", "", {}, "sha512-3GKBOn+m2LX9iq+JC1064cSFprJY4jL1jCXTcpnfER5HYE2l/4EfWSGzkPa/ZDBmYI0ZOEj5VHV/eKnPGkHuOg=="], @@ -3387,7 +3372,7 @@ "homedir-polyfill": ["homedir-polyfill@1.0.3", "", { "dependencies": { "parse-passwd": "^1.0.0" } }, "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA=="], - "hono": ["hono@4.12.34", "", {}, "sha512-GqXJqY/xJkJmuloTrnV1ZEXG3fqte+VjkUqoRNZXcrUidiUOP4fMSIHHY4tsqZBK++kVyWmt/AAfSUuy57/eSA=="], + "hono": ["hono@4.13.13", "", {}, "sha512-CQ46U0ZkAGmbT/4UxdzzGJpacP2IeKgY4a5/tOI9AABbpOMfK739wfDXmv1usCk+3RkKj1hQy4/fjhiwa2xlrA=="], "hosted-git-info": ["hosted-git-info@9.0.3", "", { "dependencies": { "lru-cache": "^11.1.0" } }, "sha512-Hc+ghLoSt6QaYZUv0WBiIvmMDZuZZ7oaDvdH8MbfOO4lOsxdXLEvuC6ePoGs9H1X9oCLyq6+NVN0MKqD+ydxyg=="], @@ -3429,7 +3414,7 @@ "iconv-lite": ["iconv-lite@0.7.3", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" } }, "sha512-IKXpvIzjnC9XTAUbVBcMfGS0EPaIXtW6v+zr+RRp+hqULEpo0owZax6wyRwPOJbWbzjYspQwusTsfVr0ifh4uQ=="], - "idb-keyval": ["idb-keyval@6.2.2", "", {}, "sha512-yjD9nARJ/jb1g+CvD0tlhUHOrJ9Sy0P8T9MF3YaLlHnSRpwPfpTX0XIvpmw3gAJUmEu3FiICLBDPXVwyEvrleg=="], + "idb-keyval": ["idb-keyval@6.3.0", "", {}, "sha512-um+2dgAWmYsu615EXpWVwSmapJhON0G43t3Ka/EVaohzPQXSMqKEqeDK/oIW3Ow+BXaF2PvSc+oBTFp793A5Ow=="], "ieee754": ["ieee754@1.2.1", "", {}, "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="], @@ -3437,7 +3422,7 @@ "image-size": ["image-size@1.2.1", "", { "dependencies": { "queue": "6.0.2" }, "bin": { "image-size": "bin/image-size.js" } }, "sha512-rH+46sQJ2dlwfjfhCyNx5thzrv+dtmBIhPHk0zgRUukHzZ/kRueTJXoYYsclBaKcSMBWuGbOFXtioLpzTb5euw=="], - "imapflow": ["imapflow@1.7.6", "", { "dependencies": { "@zone-eu/mailsplit": "5.4.15", "encoding-japanese": "2.2.0", "iconv-lite": "0.7.3", "libbase64": "1.3.0", "libmime": "5.4.2", "libqp": "2.1.1", "pino": "10.3.1", "socks": "2.8.9" } }, "sha512-xah3HpJKHzNbO780jy+v/Gjmly9WBgPH2dl5/nNs+Q5ofjpn4bUTz0PR2kcrHGlBRsjGFOC7NTYkStakGN8Fyg=="], + "imapflow": ["imapflow@1.7.8", "", { "dependencies": { "@zone-eu/mailsplit": "5.4.16", "encoding-japanese": "2.3.0", "iconv-lite": "0.7.3", "libbase64": "1.3.0", "libmime": "5.4.3", "libqp": "2.1.1", "pino": "10.3.1", "socks": "2.8.9" } }, "sha512-dJoCIdZOJh26Rn2PdwEzwj0bRDgGBxxX38pio534FagIHVuR2l0SAfLr6sJo32YfuJHiSs/U2ntNDHnMg3/Hlg=="], "immediate": ["immediate@3.0.6", "", {}, "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ=="], @@ -3455,13 +3440,13 @@ "inline-style-parser": ["inline-style-parser@0.2.7", "", {}, "sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA=="], - "input-otp": ["input-otp@1.4.2", "", { "peerDependencies": { "react": "^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc" } }, "sha512-l3jWwYNvrEa6NTCt7BECfCm48GvwuZzkoeG3gBL2w4CHeOXW3eKFmf9UNYkNfYc3mxMrthMnxjIE07MT0zLBQA=="], + "input-otp": ["input-otp@1.5.0", "", { "peerDependencies": { "react": "^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc" } }, "sha512-3AcfdW1sNG0FmSA5hHMBXG7jNW5CdcdKs8ln8JOmn6S2SRkoXoJx+2UwC+ZvjflfnOdHJx0SfQ9/YjlxVYLtGQ=="], "internmap": ["internmap@2.0.3", "", {}, "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg=="], "ioredis": ["ioredis@5.11.1", "", { "dependencies": { "@ioredis/commands": "1.10.0", "cluster-key-slot": "1.1.1", "debug": "4.4.3", "denque": "2.1.0", "redis-errors": "1.2.0", "redis-parser": "3.0.0", "standard-as-callback": "2.1.0" } }, "sha512-ehuGcf94bQXhfagULNXrJdfnWO38v070jxSx/qE87Kjzmu2fU7ro5EFAb+OPituLqgfyuQaym5DlrNydW2sJ9A=="], - "ip-address": ["ip-address@10.5.0", "", {}, "sha512-R5SnVLJmgYYvf2F2ZgwSBnelz5G4q5AxIC277GDfUaNbrZKNANcBC7RHqYYePlszf4kBolVkJauG0ZjHHFh55g=="], + "ip-address": ["ip-address@10.7.4", "", {}, "sha512-DWBMKyeM25D70nrIiTkgQth59/G+naKOTep6huF9j+GmeK3DMD60Zvxg5d5qQnz+38AHgou6ean2LECX+lrKDg=="], "ipaddr.js": ["ipaddr.js@2.3.0", "", {}, "sha512-Zv/pA+ciVFbCSBBjGfaKUya/CcGmUHzTydLMaTwrUUEM2DIEO3iZvueGxmacvmN50fGpGVKeTXpb2LcYQxeVdg=="], @@ -3519,8 +3504,6 @@ "isomorphic.js": ["isomorphic.js@0.2.5", "", {}, "sha512-PIeMbHqMt4DnUP3MA/Flc0HElYjMXArsw1qwJZcm9sqR8mq3l8NYizFMty0pWwE/tzIGH3EKK5+jes5mAr85yw=="], - "jackspeak": ["jackspeak@3.4.3", "", { "dependencies": { "@isaacs/cliui": "^8.0.2" }, "optionalDependencies": { "@pkgjs/parseargs": "^0.11.0" } }, "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw=="], - "jake": ["jake@10.9.4", "", { "dependencies": { "async": "^3.2.6", "filelist": "^1.0.4", "picocolors": "^1.1.1" }, "bin": { "jake": "bin/cli.js" } }, "sha512-wpHYzhxiVQL+IV05BLE2Xn34zW1S223hvjtqk0+gsPrwd/8JNLXJgZZM/iPFsYc1xyphF+6M6EvdE5E9MBGkDA=="], "jiti": ["jiti@2.7.0", "", { "bin": { "jiti": "lib/jiti-cli.mjs" } }, "sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ=="], @@ -3529,7 +3512,7 @@ "joi": ["joi@17.13.6", "", { "dependencies": { "@hapi/hoek": "^9.3.0", "@hapi/topo": "^5.1.0", "@sideway/address": "^4.1.5", "@sideway/formula": "^3.0.1", "@sideway/pinpoint": "^2.0.0" } }, "sha512-ImNZaq/LSysofih+xIGYfR0WUXMA9GLUNB//YTCSrZptoRmVgaNAdJyi6K1kXi9pkLEoSkoI8I4UwtNiu/D7nw=="], - "jose": ["jose@6.0.11", "", {}, "sha512-QxG7EaliDARm1O1S8BGakqncGT9s25bKL1WSf6/oa17Tkqwi8D2ZNglqCF+DsYF88/rV66Q/Q2mFAy697E1DUg=="], + "jose": ["jose@6.2.3", "", {}, "sha512-YYVDInQKFJfR/xa3ojUTl8c2KoTwiL1R5Wg9YCydwH0x0B9grbzlg5HC7mMjCtUJjbQ/YnGEZIhI5tCgfTb4Hw=="], "joycon": ["joycon@3.1.1", "", {}, "sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw=="], @@ -3565,6 +3548,8 @@ "json-stringify-safe": ["json-stringify-safe@5.0.1", "", {}, "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA=="], + "json-with-bigint": ["json-with-bigint@3.5.12", "", {}, "sha512-uwbF/wSSuOgC7qqlq27Xp5B6a2MHVug3t0idZdTqu0JnlFvgJuH7ju+KAk/J06C7GfhoYy2gnb9wz2INqcne7w=="], + "json5": ["json5@2.2.3", "", { "bin": { "json5": "lib/cli.js" } }, "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg=="], "jsonfile": ["jsonfile@6.2.1", "", { "dependencies": { "universalify": "^2.0.0" }, "optionalDependencies": { "graceful-fs": "^4.1.6" } }, "sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q=="], @@ -3573,7 +3558,7 @@ "jsonwebtoken": ["jsonwebtoken@9.0.3", "", { "dependencies": { "jws": "^4.0.1", "lodash.includes": "^4.3.0", "lodash.isboolean": "^3.0.3", "lodash.isinteger": "^4.0.4", "lodash.isnumber": "^3.0.3", "lodash.isplainobject": "^4.0.6", "lodash.isstring": "^4.0.1", "lodash.once": "^4.0.0", "ms": "^2.1.1", "semver": "^7.5.4" } }, "sha512-MT/xP0CrubFRNLNKvxJ2BYfy53Zkm++5bX9dtuPbqAeQpTVe0MQTFhao8+Cp//EmJp244xt6Drw/GVEGCUj40g=="], - "jszip": ["jszip@3.10.1", "", { "dependencies": { "lie": "~3.3.0", "pako": "~1.0.2", "readable-stream": "~2.3.6", "setimmediate": "^1.0.5" } }, "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g=="], + "jszip": ["jszip@3.10.2", "", { "dependencies": { "lie": "~3.3.0", "pako": "~1.0.2", "readable-stream": "~2.3.6", "setimmediate": "^1.0.5" } }, "sha512-3l+rb15IOWtUhU0H5MFqES/T6Kh7abYwjosBey/vD6hDt8zoEffkSC5Ws5SGtgVw3gBx2NEbhTeSW1+kWkpyTQ=="], "jwa": ["jwa@2.0.1", "", { "dependencies": { "buffer-equal-constant-time": "^1.0.1", "ecdsa-sig-formatter": "1.0.11", "safe-buffer": "^5.0.1" } }, "sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg=="], @@ -3591,7 +3576,7 @@ "kleur": ["kleur@3.0.3", "", {}, "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w=="], - "knip": ["knip@6.37.0", "", { "dependencies": { "fdir": "^6.5.0", "formatly": "^0.7.0", "get-tsconfig": "4.14.3", "jiti": "^2.7.0", "oxc-parser": "^0.150.0", "oxc-resolver": "11.24.2", "picomatch": "^4.0.7", "smol-toml": "^1.8.0", "strip-json-comments": "5.0.3", "tinyglobby": "^0.2.17", "unbash": "^4.0.11", "yaml": "^2.9.1", "zod": "^4.4.3" }, "bin": { "knip": "bin/knip.js", "knip-bun": "bin/knip-bun.js" } }, "sha512-NKCYuoGKJ+o2AuoCuV1mDvfMYnSSWfDXqxwmzxeHyd8fftjNRl8TBUg3fbSrtJjhm7Vj6sc1PX3WZnZhECs9EQ=="], + "knip": ["knip@6.41.0", "", { "dependencies": { "formatly": "^0.11.4", "get-tsconfig": "4.14.3", "jiti": "^2.7.0", "oxc-parser": "^0.153.0", "oxc-resolver": "11.24.2", "picomatch": "^4.0.7", "smol-toml": "^1.9.0", "strip-json-comments": "5.0.3", "tinyglobby": "^0.2.17", "unbash": "^5.0.0", "yaml": "^2.9.1", "zod": "^4.6.5" }, "bin": { "knip": "bin/knip.js", "knip-bun": "bin/knip-bun.js" } }, "sha512-DrhQlIuV6xScd5Q+WTF1znd1w41QzxFGCtAHXCajsH/ndGMotHoNYbdXbuFtzW3mIOmniHtZ7zCtvnQkUmJtQQ=="], "kysely": ["kysely@0.28.17", "", {}, "sha512-nbD8lB9EB3wNdMhOCdx5Li8DxnLbvKByylRLcJ1h+4SkrowVeECAyZlyiKMThF7xFdRz0jSQ2MoJr+wXux2y0Q=="], @@ -3603,13 +3588,13 @@ "leac": ["leac@0.6.0", "", {}, "sha512-y+SqErxb8h7nE/fiEX07jsbuhrpO9lL8eca7/Y1nuWV2moNlXhyd59iDGcRf6moVyDMbmTNzL40SUyrFU/yDpg=="], - "lib0": ["lib0@0.2.117", "", { "dependencies": { "isomorphic.js": "^0.2.4" }, "bin": { "0serve": "bin/0serve.js", "0gentesthtml": "bin/gentesthtml.js", "0ecdsa-generate-keypair": "bin/0ecdsa-generate-keypair.js" } }, "sha512-DeXj9X5xDCjgKLU/7RR+/HQEVzuuEUiwldwOGsHK/sfAfELGWEyTcf0x+uOvCvK3O2zPmZePXWL85vtia6GyZw=="], + "lib0": ["lib0@0.2.119", "", { "dependencies": { "isomorphic.js": "^0.2.4" }, "bin": { "0serve": "bin/0serve.js", "0gentesthtml": "bin/gentesthtml.js", "0ecdsa-generate-keypair": "bin/0ecdsa-generate-keypair.js" } }, "sha512-vh+TiejVy8Xm+hCdnRfn9BthGNvNUZdEXltNjVZL3TzRIKP3s1lnQh8pWd/Q0wCgY0FPAGVVjFF4ZiHUV3LFgA=="], "libbase64": ["libbase64@1.3.0", "", {}, "sha512-GgOXd0Eo6phYgh0DJtjQ2tO8dc0IVINtZJeARPeiIJqge+HdsWSuaDTe8ztQ7j/cONByDZ3zeB325AHiv5O0dg=="], "libheif-js": ["libheif-js@1.19.8", "", {}, "sha512-vQJWusIxO7wavpON1dusciL8Go9jsIQ+EUrckauFYAiSTjcmLAsuJh3SszLpvkwPci3JcL41ek2n+LUZGFpPIQ=="], - "libmime": ["libmime@5.4.2", "", { "dependencies": { "encoding-japanese": "2.2.0", "iconv-lite": "0.7.3", "libbase64": "1.3.0", "libqp": "2.1.1" } }, "sha512-+IQnCOdPiufGBkOii+Ze8F7iniyBzOwvWDbn1DyExBpc9pT2B3IEMQi7GUc/PpqhNUh/sr1SG9UXDITQoR0VIA=="], + "libmime": ["libmime@5.4.3", "", { "dependencies": { "encoding-japanese": "2.3.0", "iconv-lite": "0.7.3", "libbase64": "1.3.0", "libqp": "2.1.1" } }, "sha512-di9BoDabBUMqjeD/wGj+hHpSgdqAph5ui7w6OdY6NpzU6O6VFLQsMOg9tqCjm/zf9OHzAM9EZxSOF7uIb8O8Hw=="], "libqp": ["libqp@2.1.1", "", {}, "sha512-0Wd+GPz1O134cP62YU2GTOPNA7Qgl09XwCqM5zpBv87ERCXdfDtyKXvV7c9U22yWJh44QZqBocFnXN11K96qow=="], @@ -3647,9 +3632,9 @@ "linkifyjs": ["linkifyjs@4.3.3", "", {}, "sha512-P8aEP5U/D1/IlTY2OeYsErdwh9bGuLE30NcXtKEjgdHcahveQoQwM2yZNsioQHsWFz0P7KKudisbrzCgR0sDHg=="], - "lint-staged": ["lint-staged@16.0.0", "", { "dependencies": { "chalk": "^5.4.1", "commander": "^13.1.0", "debug": "^4.4.0", "lilconfig": "^3.1.3", "listr2": "^8.3.3", "micromatch": "^4.0.8", "nano-spawn": "^1.0.0", "pidtree": "^0.6.0", "string-argv": "^0.3.2", "yaml": "^2.7.1" }, "bin": { "lint-staged": "bin/lint-staged.js" } }, "sha512-sUCprePs6/rbx4vKC60Hez6X10HPkpDJaGcy3D1NdwR7g1RcNkWL8q9mJMreOqmHBTs+1sNFp+wOiX9fr+hoOQ=="], + "lint-staged": ["lint-staged@16.4.0", "", { "dependencies": { "commander": "^14.0.3", "listr2": "^9.0.5", "picomatch": "^4.0.3", "string-argv": "^0.3.2", "tinyexec": "^1.0.4", "yaml": "^2.8.2" }, "bin": { "lint-staged": "bin/lint-staged.js" } }, "sha512-lBWt8hujh/Cjysw5GYVmZpFHXDCgZzhrOm8vbcUdobADZNOK/bRshr2kM3DfgrrtR1DQhfupW9gnIXOfiFi+bw=="], - "listr2": ["listr2@8.3.3", "", { "dependencies": { "cli-truncate": "^4.0.0", "colorette": "^2.0.20", "eventemitter3": "^5.0.1", "log-update": "^6.1.0", "rfdc": "^1.4.1", "wrap-ansi": "^9.0.0" } }, "sha512-LWzX2KsqcB1wqQ4AHgYb4RsDXauQiqhjLk+6hjbaeHG4zpjjVAB6wC/gz6X0l+Du1cN3pUB5ZlrvTbhGSNnUQQ=="], + "listr2": ["listr2@9.0.5", "", { "dependencies": { "cli-truncate": "^5.0.0", "colorette": "^2.0.20", "eventemitter3": "^5.0.1", "log-update": "^6.1.0", "rfdc": "^1.4.1", "wrap-ansi": "^9.0.0" } }, "sha512-ME4Fb83LgEgwNw96RKNvKV4VTLuXfoKudAmm2lP8Kk87KaMK0/Xrx/aAkMWmT8mDb+3MlFDspfbCs7adjRxA2g=="], "lodash": ["lodash@4.18.1", "", {}, "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q=="], @@ -3691,13 +3676,15 @@ "lowercase-keys": ["lowercase-keys@3.0.0", "", {}, "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ=="], - "lru-cache": ["lru-cache@11.3.6", "", {}, "sha512-Gf/KoL3C/MlI7Bt0PGI9I+TeTC/I6r/csU58N4BSNc4lppLBeKsOdFYkK+dX0ABDUMJNfCHTyPpzwwO21Awd3A=="], + "lru-cache": ["lru-cache@11.5.3", "", {}, "sha512-U4N8FgzmWxc8k1VH8Kr6lQg18U7Fjvby6wXHVRX/ZZ7IwWbRMgrRbP0Wrb5q5NVinryp4SQampHKdvtecItxUg=="], "lru.min": ["lru.min@1.1.4", "", {}, "sha512-DqC6n3QQ77zdFpCMASA1a3Jlb64Hv2N2DciFGkO/4L9+q/IpIAuRlKOvCXabtRW6cQf8usbmM6BE/TOPysCdIA=="], "lucide-react": ["lucide-react@1.23.0", "", { "peerDependencies": { "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-38BpJcD0JhFosxHApP/BYsBetLpQFRoTRzEzstM/XCc3jsAG7wqaY1lgVwxiUe3xqYE+lNxo2PkCmYwXWrwwIw=="], - "magic-string": ["magic-string@1.4.1", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.6.0" } }, "sha512-8lyCu36ErXR0J9uaGKlKQoiLZKmtI63YGLE8G2o9jyRPdr4X47LusSOwgOJOzcVtp81fTAAjxR7BwKz682Jhow=="], + "lz-string": ["lz-string@1.5.0", "", { "bin": { "lz-string": "bin/bin.js" } }, "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ=="], + + "magic-string": ["magic-string@1.4.3", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.6.0" } }, "sha512-z12OxmaPGE0F4xlpGdjuAUckipLpQlTAuAmyGhNoD7ODpYUzvDfvtxUbjM/jwznyP178oju/KDdyi220wNJ0RQ=="], "magicast": ["magicast@0.5.5", "", { "dependencies": { "@babel/parser": "^7.29.7", "@babel/types": "^7.29.7", "source-map-js": "^1.2.1" } }, "sha512-UicdXN8zQ3JHlxVq+28afMXPr1z7WNY6+7EJnzTdQWkTAlMLF5fNCCKxJHBQwGaNGR11581EiQmQzx73+MvszA=="], @@ -3705,7 +3692,7 @@ "make-event-props": ["make-event-props@2.0.0", "", {}, "sha512-G/hncXrl4Qt7mauJEXSg3AcdYzmpkIITTNl5I+rH9sog5Yw0kK6vseJjCaPfOXqOqQuPUP89Rkhfz5kPS8ijtw=="], - "mammoth": ["mammoth@1.12.3", "", { "dependencies": { "@xmldom/xmldom": "^0.8.6", "argparse": "~1.0.3", "base64-js": "^1.5.1", "bluebird": "~3.4.0", "dingbat-to-unicode": "^1.0.1", "jszip": "^3.7.1", "lop": "^0.4.2", "path-is-absolute": "^1.0.0", "underscore": "^1.13.1", "xmlbuilder": "^10.0.0" }, "bin": { "mammoth": "bin/mammoth" } }, "sha512-kkv2MrSFk3f/w3uLsz4FG/91LdWp2j+qmp7AjG2v7w2xgX5YDxiaFlaWourXrXtyUR6335+9guyIlPBnhHLvKw=="], + "mammoth": ["mammoth@1.13.0", "", { "dependencies": { "@xmldom/xmldom": "^0.8.6", "argparse": "~1.0.3", "base64-js": "^1.5.1", "dingbat-to-unicode": "^1.0.1", "jszip": "^3.7.1", "lop": "^0.4.2", "underscore": "^1.13.1", "xmlbuilder": "^10.0.0" }, "bin": { "mammoth": "bin/mammoth" } }, "sha512-2cawcYFcP7ISfXbBcL9lmVgTNWo88v/52ND1gnywHtVT/pX0//puPnf0iMPV9ZgmuvNOE+zkIhDgZ9M2c2dDDg=="], "markdown-extensions": ["markdown-extensions@2.0.0", "", {}, "sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q=="], @@ -3857,7 +3844,7 @@ "minimalistic-assert": ["minimalistic-assert@1.0.1", "", {}, "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A=="], - "minimatch": ["minimatch@10.2.5", "", { "dependencies": { "brace-expansion": "^5.0.5" } }, "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg=="], + "minimatch": ["minimatch@10.2.6", "", { "dependencies": { "brace-expansion": "^5.0.8" } }, "sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A=="], "minimist": ["minimist@1.2.8", "", {}, "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA=="], @@ -3881,7 +3868,7 @@ "monaco-editor": ["monaco-editor@0.55.1", "", { "dependencies": { "dompurify": "3.2.7", "marked": "14.0.0" } }, "sha512-jz4x+TJNFHwHtwuV9vA9rMujcZRb0CEilTEwG2rRSpe/A7Jdkuj8xPKttCgOh+v/lkHy7HsZ64oj+q3xoAFl9A=="], - "mongodb": ["mongodb@6.19.0", "", { "dependencies": { "@mongodb-js/saslprep": "^1.1.9", "bson": "^6.10.4", "mongodb-connection-string-url": "^3.0.0" }, "peerDependencies": { "@aws-sdk/credential-providers": "^3.188.0", "@mongodb-js/zstd": "^1.1.0 || ^2.0.0", "gcp-metadata": "^5.2.0", "kerberos": "^2.0.1", "mongodb-client-encryption": ">=6.0.0 <7", "snappy": "^7.3.2", "socks": "^2.7.1" }, "optionalPeers": ["@aws-sdk/credential-providers", "@mongodb-js/zstd", "gcp-metadata", "kerberos", "mongodb-client-encryption", "snappy", "socks"] }, "sha512-H3GtYujOJdeKIMLKBT9PwlDhGrQfplABNF1G904w6r5ZXKWyv77aB0X9B+rhmaAwjtllHzaEkvi9mkGVZxs2Bw=="], + "mongodb": ["mongodb@6.21.0", "", { "dependencies": { "@mongodb-js/saslprep": "^1.3.0", "bson": "^6.10.4", "mongodb-connection-string-url": "^3.0.2" }, "peerDependencies": { "@aws-sdk/credential-providers": "^3.188.0", "@mongodb-js/zstd": "^1.1.0 || ^2.0.0", "gcp-metadata": "^5.2.0", "kerberos": "^2.0.1", "mongodb-client-encryption": ">=6.0.0 <7", "snappy": "^7.3.2", "socks": "^2.7.1" }, "optionalPeers": ["@aws-sdk/credential-providers", "@mongodb-js/zstd", "gcp-metadata", "kerberos", "mongodb-client-encryption", "snappy", "socks"] }, "sha512-URyb/VXMjJ4da46OeSXg+puO39XH9DeQpWCslifrRn9JWugy0D+DvvBvkm2WxmHe61O/H19JM66p1z7RHVkZ6A=="], "mongodb-connection-string-url": ["mongodb-connection-string-url@3.0.2", "", { "dependencies": { "@types/whatwg-url": "^11.0.2", "whatwg-url": "^14.1.0 || ^13.0.0" } }, "sha512-rMO7CGo/9BFwyZABcKAWL8UJwH/Kc2x0g72uhDWzG48URRax5TCIcJ7Rc3RZqffZzO/Gwff/jyKwCU9TN8gehA=="], @@ -3893,18 +3880,16 @@ "ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="], - "mssql": ["mssql@12.7.0", "", { "dependencies": { "@tediousjs/connection-string": "^1.0.0", "commander": "^11.0.0", "debug": "^4.3.3", "tarn": "^3.0.2", "tedious": "^19.2.2 || ^20.0.0" }, "bin": { "mssql": "bin/mssql" } }, "sha512-J6SJKXi1jYbhHjjooLNtPnX7+s3cq5IJ701Wgy/UW1SXRpgFlJJsYi3IPve9RVgCUkq0Cqv2aaaSJ4IXtIF3mg=="], + "mssql": ["mssql@12.7.4", "", { "dependencies": { "@tediousjs/connection-string": "^1.0.0", "commander": "^11.0.0", "debug": "^4.3.3", "tarn": "^3.0.2", "tedious": "^19.2.2 || ^20.0.0" }, "bin": { "mssql": "bin/mssql" } }, "sha512-rhN4TefcWOle1JsTep32bHGhHpcQPL9B08Q3P5HcTBRmZ+Irt/zI4y7TI2CXc2t3lP702fYoCASLPJiWh77KBA=="], "mute-stream": ["mute-stream@0.0.8", "", {}, "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA=="], - "mysql2": ["mysql2@3.24.2", "", { "dependencies": { "aws-ssl-profiles": "^1.1.2", "generate-function": "^2.3.1", "iconv-lite": "^0.7.3", "long": "^5.3.2", "lru.min": "^1.1.4", "named-placeholders": "^1.1.6", "sql-escaper": "^1.5.1" }, "peerDependencies": { "@types/node": ">= 8" } }, "sha512-l9kXeKGwd6VCbSjmpO/bLWb+YCYpbvE4whte8ec6InXebvCNyEEydyRCnRU+TSHNqRLJ8B+Tk1uWb+vMCJgJzA=="], + "mysql2": ["mysql2@3.24.5", "", { "dependencies": { "aws-ssl-profiles": "^1.1.2", "generate-function": "^2.3.1", "iconv-lite": "^0.7.3", "long": "^5.3.2", "lru.min": "^1.1.4", "named-placeholders": "^1.1.6", "sql-escaper": "^1.5.1" }, "peerDependencies": { "@types/node": ">= 8" } }, "sha512-X6Ujsr2QSkkLpkQGjxzpKRAPn9nu4axpR63ntBzquFVEvPOArgbUQ1sJjFKI7hnaYtiVZxa17Z7q18KSubW0IQ=="], "named-placeholders": ["named-placeholders@1.1.6", "", { "dependencies": { "lru.min": "^1.1.0" } }, "sha512-Tz09sEL2EEuv5fFowm419c1+a/jSMiBjI9gHxVLrVdbUkkNUUfjsVYs9pVZu5oCon/kmRh9TfLEObFtkVxmY0w=="], "nan": ["nan@2.27.0", "", {}, "sha512-hC+0LidcL3XE4rp1C4H54KujgXKzbfyTngZTwBByQxsOxCEKZT0MPQ4hOKUH2jU1OYstqdDH4onyHPDzcV0XdQ=="], - "nano-spawn": ["nano-spawn@1.0.3", "", {}, "sha512-jtpsQDetTnvS2Ts1fiRdci5rx0VYws5jGyC+4IYOTnIQ/wwdf6JdomlHBwqC3bJYOvaKu0C2GSZ1A60anrYpaA=="], - "nanoid": ["nanoid@3.3.18", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-DTg4MJbGMWkfi6VZFdNt2/caMbQy4Ou+Op/hJQvGEWcnVfoA1QA+xzRKAzw9jD6+GVOOeYr/mIcuDSdug6F6+w=="], "nanostores": ["nanostores@1.3.0", "", {}, "sha512-XPUa/jz+P1oJvN9VBxw4L9MtdFfaH3DAryqPssqhb2kXjmb9npz0dly6rCsgFWOPr4Yg9mTfM3MDZgZZ+7A3lA=="], @@ -3947,7 +3932,7 @@ "node-rsa": ["node-rsa@1.1.1", "", { "dependencies": { "asn1": "^0.2.4" } }, "sha512-Jd4cvbJMryN21r5HgxQOpMEqv+ooke/korixNNK3mGqfGJmy0M77WDDzo/05969+OkMy3XW1UuZsSmW9KQm7Fw=="], - "nodemailer": ["nodemailer@10.0.10", "", {}, "sha512-He9XskOFms62SyAKkLu8CcGcYHAo+BSHSsORI8s4PJH8qZgZY4L4lDfvyN0twvmbpyG+eGrxpyBlskj9d9rJ8A=="], + "nodemailer": ["nodemailer@10.1.0", "", {}, "sha512-fXW8AulB25aOTuwfRYV6lqHyfz2VM4rr4SGXH03mE7x5znEUpzL5mu6anARUpZN7744Ziwkmr4AxSLPJsBQspg=="], "nopt": ["nopt@9.0.0", "", { "dependencies": { "abbrev": "^4.0.0" }, "bin": { "nopt": "bin/nopt.js" } }, "sha512-Zhq3a+yFKrYwSBluL4H9XP3m3y5uvQkB/09CwDruCiRmR/UJYnn9W4R48ry0uGC70aeTPKLynBtscP9efFFcPw=="], @@ -3959,7 +3944,7 @@ "nth-check": ["nth-check@2.1.1", "", { "dependencies": { "boolbase": "^1.0.0" } }, "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w=="], - "nuqs": ["nuqs@2.8.9", "", { "dependencies": { "@standard-schema/spec": "1.0.0" }, "peerDependencies": { "@remix-run/react": ">=2", "@tanstack/react-router": "^1", "next": ">=14.2.0", "react": ">=18.2.0 || ^19.0.0-0", "react-router": "^5 || ^6 || ^7", "react-router-dom": "^5 || ^6 || ^7" }, "optionalPeers": ["@remix-run/react", "@tanstack/react-router", "next", "react-router", "react-router-dom"] }, "sha512-8ou6AEwsxMWSYo2qkfZtYFVzngwbKmg4c00HVxC1fF6CEJv3Fwm6eoZmfVPALB+vw8Udo7KL5uy96PFcYe1BIQ=="], + "nuqs": ["nuqs@2.10.2", "", { "dependencies": { "@standard-schema/spec": "1.1.0" }, "peerDependencies": { "@remix-run/react": ">=2", "@tanstack/react-router": "^1", "next": ">=14.2.0", "react": ">=18.2.0 || ^19.0.0-0", "react-router": "^5 || ^6 || ^7 || ^8", "react-router-dom": "^5 || ^6 || ^7" }, "optionalPeers": ["@remix-run/react", "@tanstack/react-router", "next", "react-router", "react-router-dom"] }, "sha512-HaLMCr9H2wywEnTu3j+QW98EteDT3Kfmx3SJJ6JfcvCvkFi/g/fKd/oCXa5DF0x1s1l4zcFtzsq9bflj6RcM6A=="], "nwsapi": ["nwsapi@2.2.24", "", {}, "sha512-7YRhZ3jS45LwmSCT4b2sVFHt/WuovaktDU07QrtOBY2PXskss5a9jfmR9jptyumwXST+rFjrmppMY1KT/yn35A=="], @@ -3973,7 +3958,7 @@ "obliterator": ["obliterator@1.6.1", "", {}, "sha512-9WXswnqINnnhOG/5SLimUlzuU1hFJUc8zkwyD59Sd+dPOMf05PmnYG/d6Q7HZ+KmgkZJa1PxRso6QdM3sTNHig=="], - "obug": ["obug@2.2.1", "", {}, "sha512-XrsrhT5sybtKI6wakr2SPOlGZWWYbUXZ7a0jT8/QOeAPau+1X/bSegNe5YR75oJmEZQbKningirmGOEJCIk61Q=="], + "obug": ["obug@3.0.0", "", {}, "sha512-5vvB5+W7ePv+p3uqxi+RcW1XAzLW0/hxt3/4X4Lc4qHudzOhmBiBwOY6DRob4WnanAEGvNcLjF+KNOufrUoEQw=="], "officeparser": ["officeparser@5.2.2", "", { "dependencies": { "@xmldom/xmldom": "^0.8.10", "concat-stream": "^2.0.0", "file-type": "^16.5.4", "node-ensure": "^0.0.0", "pdfjs-dist": "^5.3.31", "yauzl": "^3.1.3" }, "bin": { "officeparser": "officeParser.js" } }, "sha512-5JrV1CZFqTv/27fXy2bcf+3g6BpDZiJ3XoSRW3fb2i2EFex0DduqjTxiU2RsJ08WBsk4Hp0nZoGi9ZtHMZFaPA=="], @@ -3995,7 +3980,7 @@ "open": ["open@10.2.0", "", { "dependencies": { "default-browser": "^5.2.1", "define-lazy-prop": "^3.0.0", "is-inside-container": "^1.0.0", "wsl-utils": "^0.1.0" } }, "sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA=="], - "openai": ["openai@7.0.0", "", { "peerDependencies": { "@aws-sdk/credential-provider-node": ">=3.972.0 <4", "@smithy/hash-node": ">=4.3.0 <5", "@smithy/signature-v4": ">=5.4.0 <6", "ws": "^8.18.0", "zod": "^3.25 || ^4.0" }, "optionalPeers": ["@aws-sdk/credential-provider-node", "@smithy/hash-node", "@smithy/signature-v4", "ws", "zod"] }, "sha512-NaAHnDTmut8tl1Is/T2bmRGQm67fEb9VrxdlVradQoh6WnHNPToQeOZiVjLa7LV9uq0Ha4C5twgOsp4+0UWwYg=="], + "openai": ["openai@7.32.0", "", { "peerDependencies": { "@aws-sdk/credential-provider-node": ">=3.972.0 <4", "@smithy/hash-node": ">=4.3.0 <5", "@smithy/signature-v4": ">=5.4.0 <6", "undici": ">=5 <9", "ws": "^8.21.0", "zod": "^3.25 || ^4.0" }, "optionalPeers": ["@aws-sdk/credential-provider-node", "@smithy/hash-node", "@smithy/signature-v4", "undici", "ws", "zod"] }, "sha512-avqxu/jl1gsVBCBgFNPr9sTh+wZppQphuhhFy1zEvAJxEaJ4t0ery6hZdOT9kws/EcNTARoQcZs2IT3bliE1SA=="], "openapi-fetch": ["openapi-fetch@0.14.1", "", { "dependencies": { "openapi-typescript-helpers": "^0.0.15" } }, "sha512-l7RarRHxlEZYjMLd/PR0slfMVse2/vvIAGm75/F7J6MlQ8/b9uUQmUF2kCPrQhJqMXSxmYWObVgeYXbFYzZR+A=="], @@ -4013,7 +3998,7 @@ "orderedmap": ["orderedmap@2.1.1", "", {}, "sha512-TvAWxi0nDe1j/rtMcWcIj94+Ffe6n7zhow33h40SKxmsmozs6dz/e+EajymfoFcHd7sxNn8yHM8839uixMOV6g=="], - "oxc-parser": ["oxc-parser@0.150.0", "", { "dependencies": { "@oxc-project/types": "^0.150.0" }, "optionalDependencies": { "@oxc-parser/binding-android-arm-eabi": "0.150.0", "@oxc-parser/binding-android-arm64": "0.150.0", "@oxc-parser/binding-darwin-arm64": "0.150.0", "@oxc-parser/binding-darwin-x64": "0.150.0", "@oxc-parser/binding-freebsd-x64": "0.150.0", "@oxc-parser/binding-linux-arm-gnueabihf": "0.150.0", "@oxc-parser/binding-linux-arm-musleabihf": "0.150.0", "@oxc-parser/binding-linux-arm64-gnu": "0.150.0", "@oxc-parser/binding-linux-arm64-musl": "0.150.0", "@oxc-parser/binding-linux-ppc64-gnu": "0.150.0", "@oxc-parser/binding-linux-riscv64-gnu": "0.150.0", "@oxc-parser/binding-linux-riscv64-musl": "0.150.0", "@oxc-parser/binding-linux-s390x-gnu": "0.150.0", "@oxc-parser/binding-linux-x64-gnu": "0.150.0", "@oxc-parser/binding-linux-x64-musl": "0.150.0", "@oxc-parser/binding-openharmony-arm64": "0.150.0", "@oxc-parser/binding-win32-arm64-msvc": "0.150.0", "@oxc-parser/binding-win32-ia32-msvc": "0.150.0", "@oxc-parser/binding-win32-x64-msvc": "0.150.0" } }, "sha512-zwajKw1GUa57IOdafIS7/yOObGF2NihwIfZfs5yJTRprMSkiwhWOc/k+n8bwnUPbHr2/XsjfBO8KyTPaW3VpWg=="], + "oxc-parser": ["oxc-parser@0.153.0", "", { "dependencies": { "@oxc-project/types": "^0.153.0" }, "optionalDependencies": { "@oxc-parser/binding-android-arm-eabi": "0.153.0", "@oxc-parser/binding-android-arm64": "0.153.0", "@oxc-parser/binding-darwin-arm64": "0.153.0", "@oxc-parser/binding-darwin-x64": "0.153.0", "@oxc-parser/binding-freebsd-x64": "0.153.0", "@oxc-parser/binding-linux-arm-gnueabihf": "0.153.0", "@oxc-parser/binding-linux-arm-musleabihf": "0.153.0", "@oxc-parser/binding-linux-arm64-gnu": "0.153.0", "@oxc-parser/binding-linux-arm64-musl": "0.153.0", "@oxc-parser/binding-linux-ppc64-gnu": "0.153.0", "@oxc-parser/binding-linux-riscv64-gnu": "0.153.0", "@oxc-parser/binding-linux-riscv64-musl": "0.153.0", "@oxc-parser/binding-linux-s390x-gnu": "0.153.0", "@oxc-parser/binding-linux-x64-gnu": "0.153.0", "@oxc-parser/binding-linux-x64-musl": "0.153.0", "@oxc-parser/binding-openharmony-arm64": "0.153.0", "@oxc-parser/binding-win32-arm64-msvc": "0.153.0", "@oxc-parser/binding-win32-ia32-msvc": "0.153.0", "@oxc-parser/binding-win32-x64-msvc": "0.153.0" } }, "sha512-cEnpyyV1OJRXv++SFNw0z8i+2o/cr88rVLaOYJafELDoHM5yHvCAbwGRLvxuany6SNLcbblSMUyZaGzH+quSYg=="], "oxc-resolver": ["oxc-resolver@11.24.2", "", { "optionalDependencies": { "@oxc-resolver/binding-android-arm-eabi": "11.24.2", "@oxc-resolver/binding-android-arm64": "11.24.2", "@oxc-resolver/binding-darwin-arm64": "11.24.2", "@oxc-resolver/binding-darwin-x64": "11.24.2", "@oxc-resolver/binding-freebsd-x64": "11.24.2", "@oxc-resolver/binding-linux-arm-gnueabihf": "11.24.2", "@oxc-resolver/binding-linux-arm-musleabihf": "11.24.2", "@oxc-resolver/binding-linux-arm64-gnu": "11.24.2", "@oxc-resolver/binding-linux-arm64-musl": "11.24.2", "@oxc-resolver/binding-linux-ppc64-gnu": "11.24.2", "@oxc-resolver/binding-linux-riscv64-gnu": "11.24.2", "@oxc-resolver/binding-linux-riscv64-musl": "11.24.2", "@oxc-resolver/binding-linux-s390x-gnu": "11.24.2", "@oxc-resolver/binding-linux-x64-gnu": "11.24.2", "@oxc-resolver/binding-linux-x64-musl": "11.24.2", "@oxc-resolver/binding-openharmony-arm64": "11.24.2", "@oxc-resolver/binding-wasm32-wasi": "11.24.2", "@oxc-resolver/binding-win32-arm64-msvc": "11.24.2", "@oxc-resolver/binding-win32-x64-msvc": "11.24.2" } }, "sha512-FY91FiDBj7ls5MsFS9jN3tjz2o0/zsdSsymlakySaBwVJZorHhkWyICLZMKxlu1R9vYo+sd3z1jwb4J8x7bNDw=="], @@ -4023,8 +4008,6 @@ "p-retry": ["p-retry@4.6.2", "", { "dependencies": { "@types/retry": "0.12.0", "retry": "^0.13.1" } }, "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ=="], - "package-json-from-dist": ["package-json-from-dist@1.0.1", "", {}, "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw=="], - "package-manager-detector": ["package-manager-detector@1.8.0", "", {}, "sha512-yQA4H19AmPEoMUeavPMDIe1higySl/gH/yaQrkT/s07Qp+7pp2hYz30N3z2l5BkjVkF9Ow6o0wjJamm2y7Sn0A=="], "pako": ["pako@1.0.11", "", {}, "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw=="], @@ -4081,8 +4064,6 @@ "picospinner": ["picospinner@3.0.0", "", {}, "sha512-lGA1TNsmy2bxvRsTI2cV01kfTwKzZjnZSDmF9llYNyMHMrU4sP87lQ5taiIKm88L3cbswjl008nwyGc3WpNvzg=="], - "pidtree": ["pidtree@0.6.1", "", { "bin": { "pidtree": "bin/pidtree.js" } }, "sha512-e0F9AOF1JMrCfBsyJOwU9lNvQ0WtXTq0j/4jk0BQ5JSI9VAybPXmDpPRw/2FQ3e5d3ZFN1mLh7jW99m/jjaptw=="], - "pino": ["pino@9.14.0", "", { "dependencies": { "@pinojs/redact": "^0.4.0", "atomic-sleep": "^1.0.0", "on-exit-leak-free": "^2.1.0", "pino-abstract-transport": "^2.0.0", "pino-std-serializers": "^7.0.0", "process-warning": "^5.0.0", "quick-format-unescaped": "^4.0.3", "real-require": "^0.2.0", "safe-stable-stringify": "^2.3.1", "sonic-boom": "^4.0.1", "thread-stream": "^3.0.0" }, "bin": { "pino": "bin.js" } }, "sha512-8OEwKp5juEvb/MjpIc4hjqfgCNysrS94RIOMXYvpYCdm/jglrKEiAYmiumbmGhCvs+IcInsphYDFwqrjr7398w=="], "pino-abstract-transport": ["pino-abstract-transport@2.0.0", "", { "dependencies": { "split2": "^4.0.0" } }, "sha512-F63x5tizV6WCh4R6RHyi2Ml+M70DNRXt/+HANowMflpgGFMAym/VKm6G7ZOQRjqN7XbGxK1Lg9t6ZrtzOaivMw=="], @@ -4111,7 +4092,9 @@ "points-on-path": ["points-on-path@0.2.1", "", { "dependencies": { "path-data-parser": "0.1.0", "points-on-curve": "0.2.0" } }, "sha512-25ClnWWuw7JbWZcgqY/gJ4FQWadKxGWk+3kR/7kD0tCaDtPPMj7oHu2ToLaVhfpnHrZzYby2w6tUA0eOIuUg8g=="], - "postcss": ["postcss@8.5.26", "", { "dependencies": { "nanoid": "^3.3.17", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-u82N74LFzG8ca+dD8puPnplTXoGH4fTPpVGuIbt36G3qvNlkvfD0lEAZSxaly3KX8TS/L1A1gsCEmvKmBcVbkQ=="], + "postal-mime": ["postal-mime@2.7.6", "", {}, "sha512-UUlyE2KlxmvwMGq060onF/VWU3zD6dVW31FwokQ5v26jWd35fbs2MoTFzh+jXnPwAyV2MULMKXcBInGOl5TO6Q=="], + + "postcss": ["postcss@8.5.30", "", { "dependencies": { "nanoid": "^3.3.20", "picocolors": "^1.1.1", "source-map-js": "^1.2.2" } }, "sha512-zkd+e9S1AQHhmaBKye9zlFHWjOwVgqXl1q3ECYy8561K7qxR2cREf/STLskulBFd78k6AOFeA+ff1TtEzk9bAA=="], "postcss-load-config": ["postcss-load-config@6.0.1", "", { "dependencies": { "lilconfig": "^3.1.1" }, "peerDependencies": { "jiti": ">=1.21.0", "postcss": ">=8.0.9", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["jiti", "postcss", "tsx", "yaml"] }, "sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g=="], @@ -4121,7 +4104,7 @@ "postgres": ["postgres@3.4.9", "", {}, "sha512-GD3qdB0x1z9xgFI6cdRD6xu2Sp2WCOEoe3mtnyB5Ee0XrrL5Pe+e4CCnJrRMnL1zYtRDZmQQVbvOttLnKDLnaw=="], - "posthog-js": ["posthog-js@1.418.14", "", { "dependencies": { "@posthog/browser-common": "^0.5.0", "@posthog/core": "^1.48.10", "@posthog/types": "^1.405.2", "core-js": "^3.49.0", "dompurify": "^3.4.13", "fflate": "^0.4.8", "preact": "^10.29.3", "query-selector-shadow-dom": "^1.0.1", "web-vitals": "^5.3.0", "web-vitals-soft-navs": "npm:web-vitals@6.0.0" } }, "sha512-XrSKP1HALRVJjJd26qXq8kKi0aO5rp7uIX4nbJ1rhH7KLh/rDUlVysnm+EuTUxLXcV/gQpl9nzENF2R+IvWmNg=="], + "posthog-js": ["posthog-js@1.438.9", "", { "dependencies": { "@posthog/browser-common": "^0.9.4", "@posthog/core": "^1.58.1", "@posthog/types": "^1.415.3", "core-js": "^3.49.0", "dompurify": "^3.4.13", "fflate": "^0.4.8", "preact": "^10.29.3", "query-selector-shadow-dom": "^1.0.1", "web-vitals": "^6.2.1", "web-vitals-soft-navs": "npm:web-vitals@6.2.1" }, "peerDependencies": { "@types/react": ">=16.8.0", "react": ">=16.8.0" }, "optionalPeers": ["@types/react", "react"] }, "sha512-/KTZQF3sPlQbgLAlSncxv3z8dz4yex+JmIbCmGKIYkIVupdqESiqXx3SadPkWKgqgHtnQGbPSqRVe4vgpXnrGw=="], "posthog-node": ["posthog-node@5.28.9", "", { "dependencies": { "@posthog/core": "1.24.4" }, "peerDependencies": { "rxjs": "^7.0.0" }, "optionalPeers": ["rxjs"] }, "sha512-iZWyAYkIAq5QqcYz4q2nXOX+Ivn04Yh8AuKqfFVw0SvBpfli49bNAjyE97qbRTLr+irrzRUELgGIkDC14NgugA=="], @@ -4137,6 +4120,8 @@ "prettier": ["prettier@3.8.4", "", { "bin": { "prettier": "bin/prettier.cjs" } }, "sha512-N2MylSdi48+5N/6S5j+maeHbUSIzzZ5uOcX5Hm4QpV8Dkb1HFjfAKTKX6yNPJQD9AhcT3ifHNB66tWTTJDi11Q=="], + "pretty-format": ["pretty-format@27.5.1", "", { "dependencies": { "ansi-regex": "^5.0.1", "ansi-styles": "^5.0.0", "react-is": "^17.0.1" } }, "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ=="], + "prismjs": ["prismjs@1.30.0", "", {}, "sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw=="], "proc-log": ["proc-log@6.1.0", "", {}, "sha512-iG+GYldRf2BQ0UDUAd6JQ/RwzaQy6mXmsk/IzlYyal4A4SNFw54MeH4/tLkF4I5WoWG9SQwuqWzS99jaFQHBuQ=="], @@ -4231,13 +4216,13 @@ "react-dom": ["react-dom@19.2.4", "", { "dependencies": { "scheduler": "^0.27.0" }, "peerDependencies": { "react": "^19.2.4" } }, "sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ=="], - "react-email": ["react-email@6.9.0", "", { "dependencies": { "@babel/parser": "7.29.2", "@babel/traverse": "7.29.0", "@react-email/render": ">=2.1.0", "chokidar": "^4.0.3", "commander": "^13.0.0", "conf": "^15.0.2", "css-tree": "3.2.1", "debounce": "^2.0.0", "esbuild": "^0.28.0", "glob": "^13.0.6", "jiti": "2.6.1", "log-symbols": "^7.0.0", "marked": "^15.0.12", "mime-types": "^3.0.0", "normalize-path": "^3.0.0", "nypm": "0.6.6", "picospinner": "^3.0.0", "prismjs": "^1.30.0", "prompts": "2.4.2", "socket.io": "^4.8.1", "tailwindcss": "^4.1.18", "tsconfig-paths": "4.2.0" }, "peerDependencies": { "react": "^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^18.0 || ^19.0 || ^19.0.0-rc" }, "bin": { "email": "./dist/cli/index.mjs" } }, "sha512-72jV+VkeeXgNWDycNDn2tIlHFLg4Hevi3pC77g63FAY1+bDgTs4b56jbZfHF1t5d+GVGb02sGS8bOwoptgvI1w=="], + "react-email": ["react-email@6.11.1", "", { "dependencies": { "@babel/parser": "7.29.2", "@babel/traverse": "7.29.0", "@react-email/render": ">=2.1.0", "chokidar": "^5.0.0", "commander": "^13.0.0", "conf": "^15.0.2", "css-tree": "3.2.1", "debounce": "^2.0.0", "esbuild": "^0.28.0", "glob": "^13.0.6", "jiti": "2.6.1", "log-symbols": "^7.0.0", "marked": "^15.0.12", "mime-types": "^3.0.0", "normalize-path": "^3.0.0", "nypm": "0.6.6", "picospinner": "^3.0.0", "prismjs": "^1.30.0", "prompts": "2.4.2", "socket.io": "^4.8.1", "tailwindcss": "^4.1.18", "tsconfig-paths": "4.2.0" }, "peerDependencies": { "react": "^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^18.0 || ^19.0 || ^19.0.0-rc" }, "bin": { "email": "./dist/cli/index.mjs" } }, "sha512-9ckYTQFQD059UdA1nOm0O9sA7UbqFfJ9TngbEKEbwkEoaMWwWyHx8stCvAdhBVysmRLKkpafQ5mjHz09afayiQ=="], - "react-hook-form": ["react-hook-form@7.79.0", "", { "peerDependencies": { "react": "^16.8.0 || ^17 || ^18 || ^19" } }, "sha512-mhYp/MTmXvzYX6AJcJVko0rktoIhhmRnEouObj4wF5i/tCttgJvnp1+9wRkpITZjDTqpo4IOSJqu0dBlPlV/Lw=="], + "react-hook-form": ["react-hook-form@7.90.0", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17 || ^18 || ^19" }, "optionalPeers": ["@types/react"] }, "sha512-+NdG0FLzCPhFOp2NNxaUYLF9fyZhNjx9FTBBSYWF71/l6BBlmIc/j6xlp3DbaHWLJbIG7Zd8oznA19xJClU97w=="], - "react-pdf": ["react-pdf@10.4.1", "", { "dependencies": { "clsx": "^2.0.0", "dequal": "^2.0.3", "make-cancellable-promise": "^2.0.0", "make-event-props": "^2.0.0", "merge-refs": "^2.0.0", "pdfjs-dist": "5.4.296", "tiny-invariant": "^1.0.0", "warning": "^4.0.0" }, "peerDependencies": { "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" }, "optionalPeers": ["@types/react"] }, "sha512-kS/35staVCBqS29verTQJQZXw7RfsRCPO3fdJoW1KXylcv7A9dw6DZ3vJXC2w+bIBgLw5FN4pOFvKSQtkQhPfA=="], + "react-is": ["react-is@17.0.2", "", {}, "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w=="], - "react-promise-suspense": ["react-promise-suspense@0.3.4", "", { "dependencies": { "fast-deep-equal": "^2.0.1" } }, "sha512-I42jl7L3Ze6kZaq+7zXWSunBa3b1on5yfvUW6Eo/3fFOj6dZ5Bqmcd264nJbTK/gn1HjjILAjSwnZbV4RpSaNQ=="], + "react-pdf": ["react-pdf@10.4.1", "", { "dependencies": { "clsx": "^2.0.0", "dequal": "^2.0.3", "make-cancellable-promise": "^2.0.0", "make-event-props": "^2.0.0", "merge-refs": "^2.0.0", "pdfjs-dist": "5.4.296", "tiny-invariant": "^1.0.0", "warning": "^4.0.0" }, "peerDependencies": { "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" }, "optionalPeers": ["@types/react"] }, "sha512-kS/35staVCBqS29verTQJQZXw7RfsRCPO3fdJoW1KXylcv7A9dw6DZ3vJXC2w+bIBgLw5FN4pOFvKSQtkQhPfA=="], "react-remove-scroll": ["react-remove-scroll@2.7.2", "", { "dependencies": { "react-remove-scroll-bar": "^2.3.7", "react-style-singleton": "^2.2.3", "tslib": "^2.1.0", "use-callback-ref": "^1.3.3", "use-sidecar": "^1.1.3" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-Iqb9NjCCTt6Hf+vOdNIZGdTiH1QSqr27H/Ek9sv/a97gfueI/5h1s3yRi1nngzMUaOOToin5dI1dXKdXiF+u0Q=="], @@ -4317,7 +4302,7 @@ "resedit": ["resedit@1.7.2", "", { "dependencies": { "pe-library": "^0.4.1" } }, "sha512-vHjcY2MlAITJhC0eRD/Vv8Vlgmu9Sd3LX9zZvtGzU5ZImdTN3+d6e/4mnTyV8vEbyf1sgNIrWxhWlrys52OkEA=="], - "resend": ["resend@4.8.0", "", { "dependencies": { "@react-email/render": "1.1.2" } }, "sha512-R8eBOFQDO6dzRTDmaMEdpqrkmgSjPpVXt4nGfWsZdYOet0kqra0xgbvTES6HmCriZEXbmGk3e0DiGIaLFTFSHA=="], + "resend": ["resend@6.32.1", "", { "dependencies": { "postal-mime": "2.7.6", "standardwebhooks": "1.1.1" }, "peerDependencies": { "@react-email/render": "*" }, "optionalPeers": ["@react-email/render"] }, "sha512-Z9DxkIZt5uvVNkjxjc+r4rCPI0MdDIJ7H+GvU50o9GkhrD0tVTwP6caE8KYEco90sos312l6R72jAEMCBFBiFQ=="], "resolve-alpn": ["resolve-alpn@1.2.1", "", {}, "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g=="], @@ -4337,7 +4322,7 @@ "rfdc": ["rfdc@1.4.1", "", {}, "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA=="], - "rimraf": ["rimraf@5.0.10", "", { "dependencies": { "glob": "^10.3.7" }, "bin": { "rimraf": "dist/esm/bin.mjs" } }, "sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ=="], + "rimraf": ["rimraf@2.6.3", "", { "dependencies": { "glob": "^7.1.3" }, "bin": { "rimraf": "./bin.js" } }, "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA=="], "roarr": ["roarr@2.15.4", "", { "dependencies": { "boolean": "^3.0.1", "detect-node": "^2.0.4", "globalthis": "^1.0.1", "json-stringify-safe": "^5.0.1", "semver-compare": "^1.0.0", "sprintf-js": "^1.1.2" } }, "sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A=="], @@ -4367,7 +4352,7 @@ "safe-buffer": ["safe-buffer@5.2.1", "", {}, "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="], - "safe-regex2": ["safe-regex2@5.1.0", "", { "dependencies": { "ret": "~0.5.0" }, "bin": { "safe-regex2": "bin/safe-regex2.js" } }, "sha512-pNHAuBW7TrcleFHsxBr5QMi/Iyp0ENjUKz7GCcX1UO7cMh+NmVK6HxQckNL1tJp1XAJVjG6B8OKIPqodqj9rtw=="], + "safe-regex2": ["safe-regex2@5.1.2", "", { "dependencies": { "ret": "~0.5.0" }, "bin": { "safe-regex2": "bin/safe-regex2.js" } }, "sha512-tAtCGFPPP02VroDVzp4daGi6bC7jWG+41D47GKf18FeH/ubvKQHT9VmhAkvtjNOmJwqtApzWeUpEhkyEYULvmw=="], "safe-stable-stringify": ["safe-stable-stringify@2.5.0", "", {}, "sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA=="], @@ -4385,8 +4370,6 @@ "scheduler": ["scheduler@0.27.0", "", {}, "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q=="], - "scmp": ["scmp@2.1.0", "", {}, "sha512-o/mRQGk9Rcer/jEEw/yw4mwo3EU/NvYvp577/Btqrym9Qy5/MdWGBqipbALgd2lrdWTJ5/gqDusxfnQBxOxT2Q=="], - "scroll-into-view-if-needed": ["scroll-into-view-if-needed@3.1.0", "", { "dependencies": { "compute-scroll-into-view": "^3.0.2" } }, "sha512-49oNpRjWRvnU8NyGVmUaYG4jtTkNonFZI86MmGRDqBphEK2EXT9gdEUoQPZhuBM8yWHxCWbobltqYO5M4XrUvQ=="], "section-matter": ["section-matter@1.0.0", "", { "dependencies": { "extend-shallow": "^2.0.1", "kind-of": "^6.0.0" } }, "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA=="], @@ -4417,9 +4400,9 @@ "shebang-regex": ["shebang-regex@3.0.0", "", {}, "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="], - "shell-quote": ["shell-quote@1.9.0", "", {}, "sha512-Iov+JwFv/2HcTpcwNMKd8+IWNb8tboQJNQTkAY/LLVK7gGH9jy+LGkVqPxfekHl+yMmiqXszdGWXgkfml7hjqA=="], + "shell-quote": ["shell-quote@1.12.0", "", {}, "sha512-PcByqNyT/38F2kDNi006HAMRJaULuBzq/FOsw3qdZvX/GA9W/jamDaRskgHjubHiftXK5sIFxLNkvrXUwcof6Q=="], - "shiki": ["shiki@4.3.1", "", { "dependencies": { "@shikijs/core": "4.3.1", "@shikijs/engine-javascript": "4.3.1", "@shikijs/engine-oniguruma": "4.3.1", "@shikijs/langs": "4.3.1", "@shikijs/themes": "4.3.1", "@shikijs/types": "4.3.1", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-oR+qDVi2OjX1tmDpyv+3KviX01KzO6Af+0NNnKnsp9491UEGz2YpxTuJboS/6VhYpTdqzmuJBuiTlrAWWJAssw=="], + "shiki": ["shiki@4.5.0", "", { "dependencies": { "@shikijs/core": "4.5.0", "@shikijs/engine-javascript": "4.5.0", "@shikijs/engine-oniguruma": "4.5.0", "@shikijs/langs": "4.5.0", "@shikijs/themes": "4.5.0", "@shikijs/types": "4.5.0", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.5" } }, "sha512-OcRW72ngQvc+MSVWBRIovC/BTW589iUE/Vxav7VeM4RcY9MUjqB+IR6ILG1k9nuW6LiG/nct9uma4/MBtnZbmQ=="], "side-channel": ["side-channel@1.1.1", "", { "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.4", "side-channel-list": "^1.0.1", "side-channel-map": "^1.0.1", "side-channel-weakmap": "^1.0.2" } }, "sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ=="], @@ -4429,8 +4412,6 @@ "side-channel-weakmap": ["side-channel-weakmap@1.0.2", "", { "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.5", "object-inspect": "^1.13.3", "side-channel-map": "^1.0.1" } }, "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A=="], - "siginfo": ["siginfo@2.0.0", "", {}, "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g=="], - "signal-exit": ["signal-exit@3.0.7", "", {}, "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="], "sim": ["sim@workspace:packages/sim-cli"], @@ -4445,17 +4426,17 @@ "sisteransi": ["sisteransi@1.0.5", "", {}, "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg=="], - "slice-ansi": ["slice-ansi@5.0.0", "", { "dependencies": { "ansi-styles": "^6.0.0", "is-fullwidth-code-point": "^4.0.0" } }, "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ=="], + "slice-ansi": ["slice-ansi@8.0.0", "", { "dependencies": { "ansi-styles": "^6.2.3", "is-fullwidth-code-point": "^5.1.0" } }, "sha512-stxByr12oeeOyY2BlviTNQlYV5xOj47GirPr4yA1hE9JCtxfQN0+tVbkxwCtYDQWhEKWFHsEK48ORg5jrouCAg=="], "smart-buffer": ["smart-buffer@4.2.0", "", {}, "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg=="], - "smol-toml": ["smol-toml@1.8.0", "", {}, "sha512-kCZr2V3ch9i00x8zXRhjUNVcjG9ijES5dDudkXvUVCT5QlJNQWElSJdZqyPemffHoLNUYwOcou0Fy+ojN0uHSQ=="], + "smol-toml": ["smol-toml@1.9.1", "", {}, "sha512-j7WyPdf0CJoutMzMoPLF/bVXHtKZIT9Rb4eGeEbWw8X2t5oirjPgpL+OpaENZrILYaXqYwnVH+qgUwVbl+pUJQ=="], - "socket.io": ["socket.io@4.8.3", "", { "dependencies": { "accepts": "~1.3.4", "base64id": "~2.0.0", "cors": "~2.8.5", "debug": "~4.4.1", "engine.io": "~6.6.0", "socket.io-adapter": "~2.5.2", "socket.io-parser": "~4.2.4" } }, "sha512-2Dd78bqzzjE6KPkD5fHZmDAKRNe3J15q+YHDrIsy9WEkqttc7GY+kT9OBLSMaPbQaEd0x1BjcmtMtXkfpc+T5A=="], + "socket.io": ["socket.io@4.8.4", "", { "dependencies": { "accepts": "~1.3.4", "cors": "~2.8.5", "debug": "~4.4.1", "engine.io": "~6.6.0", "socket.io-adapter": "~2.5.2", "socket.io-parser": "~4.2.4" } }, "sha512-9ZV9zg8vN8hO3Y25DhR7nUkJ1VDnBhq5O/JrXhFT9s6+F0gqytSASTHVfCFc2mJXaTfARroErplXlzFWwETZqQ=="], "socket.io-adapter": ["socket.io-adapter@2.5.7", "", { "dependencies": { "debug": "~4.4.1", "ws": "~8.20.1" } }, "sha512-e0LyK91f3cUxTmv95/KzoLg47+zF+s/sbxRGDNsyG4dmIP8ZSX8ax6byOxfJXeNNtS/8AZlfD+uP7gBeR7DLlg=="], - "socket.io-client": ["socket.io-client@4.8.1", "", { "dependencies": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.2", "engine.io-client": "~6.6.1", "socket.io-parser": "~4.2.4" } }, "sha512-hJVXfu3E28NmzGk8o1sHhN3om52tRvwYeidbj7xKy2eIIse5IoKX3USlS6Tqt3BHAtflLIkCQBkzVrEEfWUyYQ=="], + "socket.io-client": ["socket.io-client@4.8.4", "", { "dependencies": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.4.1", "engine.io-client": "~6.6.1", "socket.io-parser": "~4.2.4" } }, "sha512-7wjKAvVXYOJsbmUgkWbnhPD4bFpkqrUR0++XOjpGFmqDqsqV1CI93VTraeExLxpjxEqrWgFoSRZu1ihjLWfkAA=="], "socket.io-parser": ["socket.io-parser@4.2.7", "", { "dependencies": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.4.1" } }, "sha512-IH/iSeO9T6gz1KkFleGDWkG9N3dl4jXVYUtMhIqH10Md0ttMer8nUNWiP1DKuNrybD2xBrixLJdCC9J6ECoYkg=="], @@ -4467,7 +4448,7 @@ "source-map": ["source-map@0.7.6", "", {}, "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ=="], - "source-map-js": ["source-map-js@1.2.1", "", {}, "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA=="], + "source-map-js": ["source-map-js@1.2.2", "", {}, "sha512-KGj/8Y43x35aZVDtt+J4mK1hoLGHULMYfSkODJNQjNDC3oW1PqPoxMwo0pLUsWM/UEGzON/NxeHywEfNXNP3Vw=="], "source-map-support": ["source-map-support@0.5.21", "", { "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" } }, "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w=="], @@ -4485,8 +4466,6 @@ "ssh2": ["ssh2@1.17.0", "", { "dependencies": { "asn1": "^0.2.6", "bcrypt-pbkdf": "^1.0.2" }, "optionalDependencies": { "cpu-features": "~0.0.10", "nan": "^2.23.0" } }, "sha512-wPldCk3asibAjQ/kziWQQt1Wh3PgDFpC0XpwclzKcdT1vql6KeYxf5LIt4nlFkUeR8WuphYMKqUA56X4rjbfgQ=="], - "stackback": ["stackback@0.0.2", "", {}, "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw=="], - "standard-as-callback": ["standard-as-callback@2.1.0", "", {}, "sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A=="], "standardwebhooks": ["standardwebhooks@1.0.0", "", { "dependencies": { "@stablelib/base64": "^1.0.0", "fast-sha256": "^1.3.0" } }, "sha512-BbHGOQK9olHPMvQNHWul6MYlrRTAOKn03rOe4A8O3CLWhNf4YHBqq2HJKKC+sfqpxiBY52pNeesD6jIiLDz8jg=="], @@ -4497,7 +4476,7 @@ "statuses": ["statuses@2.0.2", "", {}, "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw=="], - "std-env": ["std-env@4.2.0", "", {}, "sha512-oCUKSupKTHX53EyjDtuZQ64pjLJ6yYCtpmEw0goYxtjG9KpbRe8KAsl2tBUGU9DyMcJ0RwJ8GqJAFzMXcXW1Rw=="], + "std-env": ["std-env@4.3.0", "", {}, "sha512-OtU/EgQ1kIm5KwqQpBC6ZEMXrZRui11w8zgfTWp8cdO9B8OaPsbA8bTHO2P+HNo1VlUTGMVBwPhydu6poeXiag=="], "stream-browserify": ["stream-browserify@3.0.0", "", { "dependencies": { "inherits": "~2.0.4", "readable-stream": "^3.5.0" } }, "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA=="], @@ -4515,8 +4494,6 @@ "string-width": ["string-width@7.2.0", "", { "dependencies": { "emoji-regex": "^10.3.0", "get-east-asian-width": "^1.0.0", "strip-ansi": "^7.1.0" } }, "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ=="], - "string-width-cjs": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], - "string.prototype.codepointat": ["string.prototype.codepointat@0.2.1", "", {}, "sha512-2cBVCj6I4IOvEnjgO/hWqXjqBGsY+zwPmHl12Srk9IXSZ56Jwwmy+66XO5Iut/oQVR7t5ihYdLB0GMa4alEUcg=="], "string_decoder": ["string_decoder@1.3.0", "", { "dependencies": { "safe-buffer": "~5.2.0" } }, "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA=="], @@ -4525,8 +4502,6 @@ "strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], - "strip-ansi-cjs": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], - "strip-bom": ["strip-bom@3.0.0", "", {}, "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA=="], "strip-bom-string": ["strip-bom-string@1.0.0", "", {}, "sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g=="], @@ -4559,7 +4534,7 @@ "supports-color": ["supports-color@10.2.2", "", {}, "sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g=="], - "svix": ["svix@1.99.1", "", { "dependencies": { "standardwebhooks": "1.0.0" } }, "sha512-JfpvbAg5iT5NagDAfOq3e6Ci6NbOMbMm6C3DnfDBB60m2JDK+Z2hXPE9XNAmutb53DCdPoih1V70IbklZnX09A=="], + "svix": ["svix@2.8.0", "", { "dependencies": { "standardwebhooks": "^1.1.1" } }, "sha512-3bvu4FoVP9szUn5WBXUXUs97lLVC+Jyr0+jm+Q+DVcPMLXmeoZepbmbCzJVqGDNf9i00P7WLAH6m0q9HrzH1+g=="], "symbol-tree": ["symbol-tree@3.2.4", "", {}, "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw=="], @@ -4567,7 +4542,7 @@ "tagged-tag": ["tagged-tag@1.0.0", "", {}, "sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng=="], - "tailwind-merge": ["tailwind-merge@3.6.0", "", {}, "sha512-uxL7qAVQriqRQPAyK3pj66VqskWqoZ37PW94jwOTwNfq/z9oyu1V+eqrZqtR2+fCiXdYOZe/Modt8GtvqNzu+w=="], + "tailwind-merge": ["tailwind-merge@3.7.0", "", {}, "sha512-XPPUyAc+cvspz3lHTcR/QgPfW2A0lv/xQNIjX3HGhLR+Nq2lHaLq5MtTesHn8GUr3W3DguT2KT5x3NVgRtYwmA=="], "tailwindcss": ["tailwindcss@4.3.3", "", {}, "sha512-gOhV3P7ufE62QDGg1zVaTgCR+EtPv92k2nIhVcVKcLmxT1sUBsQGhnZj175j+MqRt4zLF7ic+sCYjfhxMxj7YQ=="], @@ -4607,17 +4582,17 @@ "tiny-typed-emitter": ["tiny-typed-emitter@2.1.0", "", {}, "sha512-qVtvMxeXbVej0cQWKqVSSAHmKZEHAvxdF8HEUBFWts8h+xEo5m/lEiPakuyZ3BnCBjOD8i24kzNOiOLLgsSxhA=="], - "tinybench": ["tinybench@6.1.4", "", {}, "sha512-9APumHG7r4yOk4X4WlkmE71aZcv1gvin1czO3OQ1U9iJcFA5Ja/ygyb0vPOVHTthFozUYs8CLoLUlM8grb2lTQ=="], + "tinybench": ["tinybench@6.2.2", "", {}, "sha512-nIZ2N2dFpjBsg2hgitKu7mA+FvsIJuGJOwysRngmVRRmWgR/UyPjwJj8c/fT/dhm8EkHnF5EOogRf+0Z2qrimA=="], "tinyexec": ["tinyexec@1.3.0", "", {}, "sha512-QKAl9m8gWWGHV8jZcPeym6j+XULi6tOf1mT83WYJ4Lk2ytW/uwAWkrP0uFsdoYMdueVJ0qs26wZ+23xeB4ibNQ=="], "tinyglobby": ["tinyglobby@0.2.17", "", { "dependencies": { "fdir": "^6.5.0", "picomatch": "^4.0.4" } }, "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g=="], - "tinyrainbow": ["tinyrainbow@3.1.1", "", {}, "sha512-yau8yJdTt989Mm0Bd/236QnzEiPf2xLLTqUZRUJOo/3CB078LSwzei343DgtJVmfJKJE3TMINY1u42SQsP6mXw=="], + "tinyrainbow": ["tinyrainbow@3.2.0", "", {}, "sha512-LgO3D9yZJjApUiuUfl9iFAwrtaX4+lok3wJIqttGoKCHlWUqHqbQpnxCf82L8FjgKsh4iGo78hqJwgL8F6To2A=="], - "tldts": ["tldts@7.0.30", "", { "dependencies": { "tldts-core": "^7.0.30" }, "bin": { "tldts": "bin/cli.js" } }, "sha512-ELrFxuqsDdHUwoh0XxDbxuLD3Wnz49Z57IFvTtvWy1hJdcMZjXLIuonjilCiWHlT2GbE4Wlv1wKVTzDFnXH1aw=="], + "tldts": ["tldts@7.4.18", "", { "dependencies": { "tldts-core": "^7.4.18" }, "bin": { "tldts": "bin/cli.js" } }, "sha512-somxA8xKAUzlAxl0TX/jMSYIbRNFIVGnI96pVGJPeMc5BsHmfVXn6mOJT6U++ELnl04eGfzpfcEuZe8WiASkXg=="], - "tldts-core": ["tldts-core@7.4.3", "", {}, "sha512-27ep5H9PzdBrNd5OFM/j3WCU8F3kPwM9D0BOaOf7uYfxMJfyr0K5Tjj69Gri+sZlh2WXd5buIm47NuPF29CDiw=="], + "tldts-core": ["tldts-core@7.4.18", "", {}, "sha512-KI2PKvCmvQI/xD6ypPqkU0i7oxNXR/O58RLRaHR4svsgVUQ2JE/XC8BtMbG6PSehD27I8sZJRcC1ASnCy6lp3g=="], "tmp": ["tmp@0.2.7", "", {}, "sha512-e0votIpp4Uo2AJYSzVHV6xCcawuiez3DzqDAbrTc3YxBkplN6e+dM13ZeIcZnDg/QpSuU2zfZ3rzwY8ukEnaXw=="], @@ -4659,13 +4634,13 @@ "tweetnacl": ["tweetnacl@0.14.5", "", {}, "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA=="], - "twilio": ["twilio@5.9.0", "", { "dependencies": { "axios": "^1.11.0", "dayjs": "^1.11.9", "https-proxy-agent": "^5.0.0", "jsonwebtoken": "^9.0.2", "qs": "^6.9.4", "scmp": "^2.1.0", "xmlbuilder": "^13.0.2" } }, "sha512-Ij+xT9MZZSjP64lsy+x6vYsCCb5m2Db9KffkMXBrN3zWbG3rbkXxl+MZVVzrvpwEdSbQD0vMuin+TTlQ6kR6Xg=="], + "twilio": ["twilio@6.2.0", "", { "dependencies": { "axios": "^1.13.5", "dayjs": "^1.11.9", "https-proxy-agent": "^5.0.0", "jsonwebtoken": "^9.0.3", "qs": "^6.14.1", "xmlbuilder": "^13.0.2" } }, "sha512-zuwVhRa8gGIvaTjXIkRNcf7cPPQCeghMukMcG9WnhWmm7SLnregVpdIoYOSrOvlqMUYf6xP9A2ivsJNf6URoSg=="], "type-fest": ["type-fest@4.41.0", "", {}, "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA=="], "type-is": ["type-is@2.1.0", "", { "dependencies": { "content-type": "^2.0.0", "media-typer": "^1.1.0", "mime-types": "^3.0.0" } }, "sha512-faYHw0anBbc/kWF3zFTEnxSFOAGUX9GFbOBthvDdLsIlEoWOFOtS0zgCiQYwIskL9iGXZL3kAXD8OoZ4GmMATA=="], - "typebox": ["typebox@1.1.38", "", {}, "sha512-pZ0aQPmMmXoUvSbeuWf/Hzsc+avNw/Zd6VeE8CFgkVGWyuHPJvqeJJDeJqLve+K70LvjYIoleGcoJHPT17cWoA=="], + "typebox": ["typebox@1.3.27", "", {}, "sha512-zu+jc1pcy4UiNThxikUr36f0Rybk9PEeCg/NE6adeWr/SKsdNO4EzZHYRDlv2YCVAfj3Odq3dESSo/jNyoBXzA=="], "typedarray": ["typedarray@0.0.6", "", {}, "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA=="], @@ -4677,15 +4652,15 @@ "uint8array-extras": ["uint8array-extras@1.5.0", "", {}, "sha512-rvKSBiC5zqCCiDZ9kAOszZcDvdAHwwIKJG33Ykj43OKcWsnmcBRL09YTU4nOeHZ8Y2a7l1MgTd08SBe9A8Qj6A=="], - "unbash": ["unbash@4.0.11", "", {}, "sha512-FoSOKV7NEofQSkAefMVHam4ZPKYMxjAydxiV72UFEDNV/YofxjGfiZ2A9pZjdL/lRJzTjcu4PABo1JYJX8N5iQ=="], + "unbash": ["unbash@5.1.0", "", {}, "sha512-YVGyy4XqoZ2AVgHjVdL9cchMSurlXFHWviORa8RiU/Bnol4ooW5Lpyur/5XmbgDdyCKxymmgsEQsLGBMIJ/Agg=="], "uncrypto": ["uncrypto@0.1.3", "", {}, "sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q=="], "underscore": ["underscore@1.13.8", "", {}, "sha512-DXtD3ZtEQzc7M8m4cXotyHR+FAS18C64asBYY5vqZexfYryNNnDc02W4hKg3rdQuqOYas1jkseX0+nZXjTXnvQ=="], - "undici": ["undici@7.29.1", "", {}, "sha512-RYONW2MeafgYlkVOKYKkA/Ag7BmXqgIWCa8t1m0JcxrQg9pI9lEqRhAOruOBCbAohOa/gkCF+iPi9hrgvTzu6Q=="], + "undici": ["undici@7.30.0", "", {}, "sha512-dkrQXeHSaoamnItlYbmzG0wFYrM0ZwDxCIg0A7aKjTyyhh9svRzCNFEzV+Vm05/yehjCzjDZ31KXfGEjYSztDQ=="], - "undici-types": ["undici-types@7.10.0", "", {}, "sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag=="], + "undici-types": ["undici-types@7.24.6", "", {}, "sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg=="], "undici8": ["undici@8.10.2", "", {}, "sha512-/y4/bH9YNU5hi9NIrpOuvGXFcxrj3CMrV+/AYpowAYTpHn8gX/XPFjNy766FPoYY0miQhdW977JFWKGNhBdwyQ=="], @@ -4749,7 +4724,7 @@ "vite": ["vite@8.0.16", "", { "dependencies": { "lightningcss": "^1.32.0", "picomatch": "^4.0.4", "postcss": "^8.5.15", "rolldown": "1.0.3", "tinyglobby": "^0.2.17" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "@vitejs/devtools": "^0.1.18", "esbuild": "^0.27.0 || ^0.28.0", "jiti": ">=1.21.0", "less": "^4.0.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "@vitejs/devtools", "esbuild", "jiti", "less", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-h9bXPmJichP5fLmVQo3PyaGSDE2n3aPuomeAlVRm0JLmt4rY6zmPKd59HYI4LNW8oTK7tlTsuC7l/m7awx9Jcw=="], - "vitest": ["vitest@5.0.1", "", { "dependencies": { "@types/chai": "^5.2.2", "@vitest/mocker": "5.0.1", "chai": "^6.2.2", "es-module-lexer": "^2.3.2", "expect-type": "^1.4.0", "magic-string": "^1.2.3", "obug": "^2.1.4", "picomatch": "^4.0.7", "std-env": "^4.2.0", "tinybench": "6.1.4", "tinyexec": "1.3.0", "tinyglobby": "^0.2.17", "why-is-node-running": "^2.3.0" }, "peerDependencies": { "@edge-runtime/vm": "*", "@opentelemetry/api": "^1.9.0", "@types/node": "^22.0.0 || >=24.0.0", "@vitest/browser-playwright": "5.0.1", "@vitest/browser-preview": "5.0.1", "@vitest/browser-webdriverio": "^5.0.0-beta.5 || >=5.0.0", "@vitest/coverage-istanbul": "5.0.1", "@vitest/coverage-v8": "5.0.1", "@vitest/ui": "5.0.1", "happy-dom": "*", "jsdom": "*", "vite": "^6.4.0 || ^7.0.0 || ^8.0.0" }, "optionalPeers": ["@edge-runtime/vm", "@opentelemetry/api", "@types/node", "@vitest/browser-playwright", "@vitest/browser-preview", "@vitest/browser-webdriverio", "@vitest/coverage-istanbul", "@vitest/coverage-v8", "@vitest/ui", "happy-dom", "jsdom"], "bin": { "vitest": "./vitest.mjs" } }, "sha512-iA95lQbKEkvrtTkdAgnWbXfbipWiiWe/hDl2P5tMi6WFwD76G0NxXAGp/M9EOcYupeGJRr6wppMc7CoA41TQjg=="], + "vitest": ["vitest@5.0.4", "", { "dependencies": { "@types/chai": "^5.2.2", "@vitest/mocker": "5.0.4", "chai": "^6.3.0", "es-module-lexer": "^2.3.2", "expect-type": "^1.4.0", "magic-string": "^1.4.3", "obug": "^3.0.0", "picomatch": "^4.0.7", "std-env": "^4.3.0", "tinybench": "^6.2.2", "tinyexec": "^1.3.1", "tinyglobby": "^0.2.17", "why-is-node-running": "3.2.1" }, "peerDependencies": { "@edge-runtime/vm": "*", "@opentelemetry/api": "^1.9.0", "@types/node": "^22.0.0 || >=24.0.0", "@vitest/browser-playwright": "5.0.4", "@vitest/browser-preview": "5.0.4", "@vitest/browser-webdriverio": "^5.0.0-beta.5 || >=5.0.0", "@vitest/coverage-istanbul": "5.0.4", "@vitest/coverage-v8": "5.0.4", "@vitest/ui": "5.0.4", "happy-dom": "*", "jsdom": "*", "vite": "^6.4.0 || ^7.0.0 || ^8.0.0" }, "optionalPeers": ["@edge-runtime/vm", "@opentelemetry/api", "@types/node", "@vitest/browser-playwright", "@vitest/browser-preview", "@vitest/browser-webdriverio", "@vitest/coverage-istanbul", "@vitest/coverage-v8", "@vitest/ui", "happy-dom", "jsdom"], "bin": { "vitest": "./vitest.mjs" } }, "sha512-z0WxZRV2Sg48wF0FSgMq3TFG8JS38/Qr96vZVZdX6+Em9raQTvnXQvdTFJe2m3rfyJnEHeHQ/snceIdi8D1pVg=="], "vscode-languageserver-textdocument": ["vscode-languageserver-textdocument@1.0.12", "", {}, "sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA=="], @@ -4771,9 +4746,9 @@ "web-streams-polyfill": ["web-streams-polyfill@4.0.0-beta.3", "", {}, "sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug=="], - "web-vitals": ["web-vitals@5.3.0", "", {}, "sha512-q6LWsLatGYZp5VGBIOvbTj6JBV2nOmC8KvWztXBmwJcfFAzhwKwbOxhUH306XY3CcaZDUlSmSuNPBsCn0bFu+g=="], + "web-vitals": ["web-vitals@6.2.3", "", {}, "sha512-Dmy+vdO1UPMqXiAtZSNayhl4f794Bxfd94W4HIj2HlYtczEQfEOon969memlcpcHrTuOKLa5baFjX7WbgmOq+A=="], - "web-vitals-soft-navs": ["web-vitals@6.0.0", "", {}, "sha512-Guaibvy/+uNtL6Bsu4jmMJGzuSl91oeRH5iO9pPRbYftnFUr3yqT1TUNX/OE4o9HexuEMU3Kb/Wg7iKhlffZUA=="], + "web-vitals-soft-navs": ["web-vitals@6.2.1", "", {}, "sha512-rLcLXA2sx6+9dE88NHFubwTtGxpK4yYBLj6qHPdFoCaLr0cXGb4efOqtKLlm4loGA4OEKHIQKMKzZkKyOh5ctw=="], "webcrypto-core": ["webcrypto-core@1.9.2", "", { "dependencies": { "@peculiar/asn1-schema": "^2.7.0", "@peculiar/json-schema": "^1.1.12", "@peculiar/utils": "^2.0.2", "asn1js": "^3.0.10", "tslib": "^2.8.1" } }, "sha512-gsXecm82UQNlTBURJGuqOWy1Ww08S3kZUcr3aOJS02Pk0xLtkfeUAVC0u0xhgdonFme80edSJUIJyuvL/7250Q=="], @@ -4789,7 +4764,7 @@ "which": ["which@6.0.1", "", { "dependencies": { "isexe": "^4.0.0" }, "bin": { "node-which": "bin/which.js" } }, "sha512-oGLe46MIrCRqX7ytPUf66EAYvdeMIZYn3WaocqqKZAxrBpkqHfL/qvTyJ/bTk5+AqHCjXmrv3CEWgy368zhRUg=="], - "why-is-node-running": ["why-is-node-running@2.3.0", "", { "dependencies": { "siginfo": "^2.0.0", "stackback": "0.0.2" }, "bin": { "why-is-node-running": "cli.js" } }, "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w=="], + "why-is-node-running": ["why-is-node-running@3.2.1", "", { "bin": { "why-is-node-running": "cli.js" } }, "sha512-Tb2FUhB4vUsGQlfSquQLYkApkuPAFQXGFzxWKHHumVz2dK+X1RUm/HnID4+TfIGYJ1kTcwOaCk/buYCEJr6YjQ=="], "widest-line": ["widest-line@3.1.0", "", { "dependencies": { "string-width": "^4.0.0" } }, "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg=="], @@ -4799,8 +4774,6 @@ "wrap-ansi": ["wrap-ansi@9.0.2", "", { "dependencies": { "ansi-styles": "^6.2.1", "string-width": "^7.0.0", "strip-ansi": "^7.1.0" } }, "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww=="], - "wrap-ansi-cjs": ["wrap-ansi@7.0.0", "", { "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q=="], - "wrappy": ["wrappy@1.0.2", "", {}, "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="], "ws": ["ws@8.21.3", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-201TZ/kPWxoPr/OKWjquZR1SWKXcvxdH+e1xrx89b3YbmzLMFCLfnaG1HFIgWzJOEWZ7MvpK++odZufgYR50Rw=="], @@ -4847,7 +4820,7 @@ "yauzl": ["yauzl@3.4.0", "", { "dependencies": { "pend": "~1.2.0" } }, "sha512-jIH9yLR9wqr0wOS0TpBvo/g/2UgZH5qePVbjgRliiF0BYvOZyaBknKsF+x9Iht0O6sqgnB93rCICdOZFecJuDw=="], - "yjs": ["yjs@13.6.31", "", { "dependencies": { "lib0": "^0.2.99" } }, "sha512-Eq+5BRfbeGyqGVrTJL3bEcr8gKkxPuyuoHmAwpk52fDb8kOVMrfVSTRPd6yiGgX5Fskb96qCRjzjbRjrL4YEnw=="], + "yjs": ["yjs@13.6.33", "", { "dependencies": { "lib0": "^0.2.99" } }, "sha512-q/UYvr1gOk4XII+Cu1CW2dINjYqJJFifTzogEaIARznrvX7uOlHsdTEXcnOBMuIsrCGEEKdNxi74kyMLZlKVfw=="], "yocto-queue": ["yocto-queue@0.1.0", "", {}, "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q=="], @@ -4867,12 +4840,10 @@ "zrender": ["zrender@6.1.0", "", { "dependencies": { "tslib": "2.3.0" } }, "sha512-oEGMDB6pOP2S6OwRR4PdVv610zrjnA3Bh+JnSG12fYJlBKjtNAoEb5fSUoCOOINlH96I2fU38/A2UpRKs67xYQ=="], - "zustand": ["zustand@5.0.14", "", { "peerDependencies": { "@types/react": ">=18.0.0", "immer": ">=9.0.6", "react": ">=18.0.0", "use-sync-external-store": ">=1.2.0" }, "optionalPeers": ["@types/react", "immer", "react", "use-sync-external-store"] }, "sha512-/8tAspM5LMPr28b3fwLYrtdj77ECpfZviaP75CMTnwO8ISyaE4GDIG/9rDDYq/cH9D2Xw2A2RXglLInmVBQB/g=="], + "zustand": ["zustand@5.0.15", "", { "peerDependencies": { "@types/react": ">=18.0.0", "immer": ">=9.0.6", "react": ">=18.0.0", "use-sync-external-store": ">=1.2.0" }, "optionalPeers": ["@types/react", "immer", "react", "use-sync-external-store"] }, "sha512-MpSEjRiBkA9crSYeOUH32rJC7SVqAbm0Fqcqge/bUi2PPoLcBWKOsG+C8mevmpr8TwXHBVkChbbJiyvkE+i/3A=="], "zwitch": ["zwitch@2.0.4", "", {}, "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A=="], - "@a2a-js/sdk/jose": ["jose@6.2.3", "", {}, "sha512-YYVDInQKFJfR/xa3ojUTl8c2KoTwiL1R5Wg9YCydwH0x0B9grbzlg5HC7mMjCtUJjbQ/YnGEZIhI5tCgfTb4Hw=="], - "@antfu/install-pkg/package-manager-detector": ["package-manager-detector@1.6.0", "", {}, "sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA=="], "@antfu/install-pkg/tinyexec": ["tinyexec@1.2.4", "", {}, "sha512-SHf/r48b7vOrjve9PxJo3MN5v5yuyjHvdUcrQffT3WXMUfnGmHDVbC4k3sHJaJTgZCwpUplIaAo5ANtMyp3YHg=="], @@ -4891,110 +4862,300 @@ "@aws-crypto/util/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "@aws-sdk/checksums/@smithy/core": ["@smithy/core@3.35.2", "", { "dependencies": { "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-ejTukBuP/Pg3t9N8Ux+0zKsXeHWm7p6W3HbXFOyltKasSxZwCFmvTut7kBdZSCF3m9y1bXXyVu6p2xuMFcsTyQ=="], + "@aws-sdk/checksums/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "@aws-sdk/client-appconfig/@smithy/core": ["@smithy/core@3.35.2", "", { "dependencies": { "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-ejTukBuP/Pg3t9N8Ux+0zKsXeHWm7p6W3HbXFOyltKasSxZwCFmvTut7kBdZSCF3m9y1bXXyVu6p2xuMFcsTyQ=="], + "@aws-sdk/client-appconfig/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "@aws-sdk/client-appconfigdata/@smithy/core": ["@smithy/core@3.35.2", "", { "dependencies": { "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-ejTukBuP/Pg3t9N8Ux+0zKsXeHWm7p6W3HbXFOyltKasSxZwCFmvTut7kBdZSCF3m9y1bXXyVu6p2xuMFcsTyQ=="], + "@aws-sdk/client-appconfigdata/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "@aws-sdk/client-athena/@smithy/core": ["@smithy/core@3.35.2", "", { "dependencies": { "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-ejTukBuP/Pg3t9N8Ux+0zKsXeHWm7p6W3HbXFOyltKasSxZwCFmvTut7kBdZSCF3m9y1bXXyVu6p2xuMFcsTyQ=="], + "@aws-sdk/client-athena/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "@aws-sdk/client-bedrock-runtime/@smithy/core": ["@smithy/core@3.35.2", "", { "dependencies": { "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-ejTukBuP/Pg3t9N8Ux+0zKsXeHWm7p6W3HbXFOyltKasSxZwCFmvTut7kBdZSCF3m9y1bXXyVu6p2xuMFcsTyQ=="], + "@aws-sdk/client-bedrock-runtime/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "@aws-sdk/client-cloudformation/@smithy/core": ["@smithy/core@3.35.2", "", { "dependencies": { "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-ejTukBuP/Pg3t9N8Ux+0zKsXeHWm7p6W3HbXFOyltKasSxZwCFmvTut7kBdZSCF3m9y1bXXyVu6p2xuMFcsTyQ=="], + "@aws-sdk/client-cloudformation/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "@aws-sdk/client-cloudtrail/@smithy/core": ["@smithy/core@3.35.2", "", { "dependencies": { "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-ejTukBuP/Pg3t9N8Ux+0zKsXeHWm7p6W3HbXFOyltKasSxZwCFmvTut7kBdZSCF3m9y1bXXyVu6p2xuMFcsTyQ=="], + "@aws-sdk/client-cloudtrail/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "@aws-sdk/client-cloudwatch/@smithy/core": ["@smithy/core@3.35.2", "", { "dependencies": { "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-ejTukBuP/Pg3t9N8Ux+0zKsXeHWm7p6W3HbXFOyltKasSxZwCFmvTut7kBdZSCF3m9y1bXXyVu6p2xuMFcsTyQ=="], + "@aws-sdk/client-cloudwatch/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "@aws-sdk/client-cloudwatch-logs/@smithy/core": ["@smithy/core@3.35.2", "", { "dependencies": { "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-ejTukBuP/Pg3t9N8Ux+0zKsXeHWm7p6W3HbXFOyltKasSxZwCFmvTut7kBdZSCF3m9y1bXXyVu6p2xuMFcsTyQ=="], + "@aws-sdk/client-cloudwatch-logs/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "@aws-sdk/client-codepipeline/@smithy/core": ["@smithy/core@3.35.2", "", { "dependencies": { "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-ejTukBuP/Pg3t9N8Ux+0zKsXeHWm7p6W3HbXFOyltKasSxZwCFmvTut7kBdZSCF3m9y1bXXyVu6p2xuMFcsTyQ=="], + "@aws-sdk/client-codepipeline/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "@aws-sdk/client-dynamodb/@smithy/core": ["@smithy/core@3.35.2", "", { "dependencies": { "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-ejTukBuP/Pg3t9N8Ux+0zKsXeHWm7p6W3HbXFOyltKasSxZwCFmvTut7kBdZSCF3m9y1bXXyVu6p2xuMFcsTyQ=="], + "@aws-sdk/client-dynamodb/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "@aws-sdk/client-ec2/@aws-sdk/core": ["@aws-sdk/core@3.977.9", "", { "dependencies": { "@aws-sdk/types": "^3.974.5", "@aws-sdk/xml-builder": "^3.972.40", "@aws/lambda-invoke-store": "^0.3.0", "@smithy/core": "^3.33.3", "@smithy/signature-v4": "^5.6.12", "@smithy/types": "^4.17.2", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "sha512-reqPFEQrZxDZpeGj4PFMepBeR5LGYHRqq/L0motTzgFkCRBA4rFdaVXDSLYyGHhxVz7sT2PDnPN9CluGSfgyJA=="], + + "@aws-sdk/client-ec2/@aws-sdk/credential-provider-node": ["@aws-sdk/credential-provider-node@3.972.81", "", { "dependencies": { "@aws-sdk/credential-provider-env": "^3.972.70", "@aws-sdk/credential-provider-http": "^3.972.72", "@aws-sdk/credential-provider-ini": "^3.973.15", "@aws-sdk/credential-provider-process": "^3.972.70", "@aws-sdk/credential-provider-sso": "^3.973.14", "@aws-sdk/credential-provider-web-identity": "^3.972.76", "@aws-sdk/types": "^3.974.5", "@smithy/core": "^3.33.3", "@smithy/credential-provider-imds": "^4.4.16", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-Rml+WitoFvXmv6JZ18U/xGdGDGGvB/mOin0ya0lTnTrdC0Z1lrVxTYh7iNklZBcvcRMrs4DoEf6xy1KWyrLQQw=="], + + "@aws-sdk/client-ec2/@aws-sdk/types": ["@aws-sdk/types@3.974.5", "", { "dependencies": { "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-LkwLL2BLbC6wNNm4JaH9mbEqBMdOZCct6VAYqhdN4U1xrWM+fUJQEfbHwQgDypapOWTRtlk25akb5afM0P8CIQ=="], + + "@aws-sdk/client-ec2/@smithy/fetch-http-handler": ["@smithy/fetch-http-handler@5.7.2", "", { "dependencies": { "@smithy/core": "^3.33.2", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-nZyWTmSpJEXl6VtWVMBJve/7x12DZu6sIX1z1a+ZMaHlQQRs9Zpu6NbTe/gmxYXVRpkjxyDYpZ5gx2IM6f/Wkw=="], + + "@aws-sdk/client-ec2/@smithy/node-http-handler": ["@smithy/node-http-handler@4.11.3", "", { "dependencies": { "@smithy/core": "^3.33.3", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-2jY1tSpERfPfWqyBV2pH+iGFaghVsIJszJNsT7hxtQYhVJpWDyc0LqOWI+nXOxOAHaEfZ4PXXtp1wW1TGpHhkA=="], + + "@aws-sdk/client-ec2/@smithy/types": ["@smithy/types@4.17.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-FOKpVZob9MPTn2znRzGrnsMHv7BOsKVw3XiP/cOyYLDVZ9qKp4nifIiSCuUU/fIj5Vu0UOAxCFr+qRAtG0NUkA=="], + "@aws-sdk/client-ec2/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "@aws-sdk/client-ecs/@aws-sdk/core": ["@aws-sdk/core@3.977.9", "", { "dependencies": { "@aws-sdk/types": "^3.974.5", "@aws-sdk/xml-builder": "^3.972.40", "@aws/lambda-invoke-store": "^0.3.0", "@smithy/core": "^3.33.3", "@smithy/signature-v4": "^5.6.12", "@smithy/types": "^4.17.2", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "sha512-reqPFEQrZxDZpeGj4PFMepBeR5LGYHRqq/L0motTzgFkCRBA4rFdaVXDSLYyGHhxVz7sT2PDnPN9CluGSfgyJA=="], + + "@aws-sdk/client-ecs/@aws-sdk/credential-provider-node": ["@aws-sdk/credential-provider-node@3.972.81", "", { "dependencies": { "@aws-sdk/credential-provider-env": "^3.972.70", "@aws-sdk/credential-provider-http": "^3.972.72", "@aws-sdk/credential-provider-ini": "^3.973.15", "@aws-sdk/credential-provider-process": "^3.972.70", "@aws-sdk/credential-provider-sso": "^3.973.14", "@aws-sdk/credential-provider-web-identity": "^3.972.76", "@aws-sdk/types": "^3.974.5", "@smithy/core": "^3.33.3", "@smithy/credential-provider-imds": "^4.4.16", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-Rml+WitoFvXmv6JZ18U/xGdGDGGvB/mOin0ya0lTnTrdC0Z1lrVxTYh7iNklZBcvcRMrs4DoEf6xy1KWyrLQQw=="], + + "@aws-sdk/client-ecs/@aws-sdk/types": ["@aws-sdk/types@3.974.5", "", { "dependencies": { "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-LkwLL2BLbC6wNNm4JaH9mbEqBMdOZCct6VAYqhdN4U1xrWM+fUJQEfbHwQgDypapOWTRtlk25akb5afM0P8CIQ=="], + + "@aws-sdk/client-ecs/@smithy/fetch-http-handler": ["@smithy/fetch-http-handler@5.7.2", "", { "dependencies": { "@smithy/core": "^3.33.2", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-nZyWTmSpJEXl6VtWVMBJve/7x12DZu6sIX1z1a+ZMaHlQQRs9Zpu6NbTe/gmxYXVRpkjxyDYpZ5gx2IM6f/Wkw=="], + + "@aws-sdk/client-ecs/@smithy/node-http-handler": ["@smithy/node-http-handler@4.11.3", "", { "dependencies": { "@smithy/core": "^3.33.3", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-2jY1tSpERfPfWqyBV2pH+iGFaghVsIJszJNsT7hxtQYhVJpWDyc0LqOWI+nXOxOAHaEfZ4PXXtp1wW1TGpHhkA=="], + + "@aws-sdk/client-ecs/@smithy/types": ["@smithy/types@4.17.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-FOKpVZob9MPTn2znRzGrnsMHv7BOsKVw3XiP/cOyYLDVZ9qKp4nifIiSCuUU/fIj5Vu0UOAxCFr+qRAtG0NUkA=="], + "@aws-sdk/client-ecs/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "@aws-sdk/client-iam/@smithy/core": ["@smithy/core@3.35.2", "", { "dependencies": { "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-ejTukBuP/Pg3t9N8Ux+0zKsXeHWm7p6W3HbXFOyltKasSxZwCFmvTut7kBdZSCF3m9y1bXXyVu6p2xuMFcsTyQ=="], + "@aws-sdk/client-iam/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "@aws-sdk/client-identitystore/@smithy/core": ["@smithy/core@3.35.2", "", { "dependencies": { "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-ejTukBuP/Pg3t9N8Ux+0zKsXeHWm7p6W3HbXFOyltKasSxZwCFmvTut7kBdZSCF3m9y1bXXyVu6p2xuMFcsTyQ=="], + "@aws-sdk/client-identitystore/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "@aws-sdk/client-lambda/@smithy/core": ["@smithy/core@3.35.2", "", { "dependencies": { "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-ejTukBuP/Pg3t9N8Ux+0zKsXeHWm7p6W3HbXFOyltKasSxZwCFmvTut7kBdZSCF3m9y1bXXyVu6p2xuMFcsTyQ=="], + "@aws-sdk/client-lambda/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "@aws-sdk/client-organizations/@smithy/core": ["@smithy/core@3.35.2", "", { "dependencies": { "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-ejTukBuP/Pg3t9N8Ux+0zKsXeHWm7p6W3HbXFOyltKasSxZwCFmvTut7kBdZSCF3m9y1bXXyVu6p2xuMFcsTyQ=="], + "@aws-sdk/client-organizations/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "@aws-sdk/client-rds-data/@smithy/core": ["@smithy/core@3.35.2", "", { "dependencies": { "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-ejTukBuP/Pg3t9N8Ux+0zKsXeHWm7p6W3HbXFOyltKasSxZwCFmvTut7kBdZSCF3m9y1bXXyVu6p2xuMFcsTyQ=="], + "@aws-sdk/client-rds-data/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "@aws-sdk/client-s3/@smithy/core": ["@smithy/core@3.35.2", "", { "dependencies": { "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-ejTukBuP/Pg3t9N8Ux+0zKsXeHWm7p6W3HbXFOyltKasSxZwCFmvTut7kBdZSCF3m9y1bXXyVu6p2xuMFcsTyQ=="], + "@aws-sdk/client-s3/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "@aws-sdk/client-secrets-manager/@smithy/core": ["@smithy/core@3.35.2", "", { "dependencies": { "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-ejTukBuP/Pg3t9N8Ux+0zKsXeHWm7p6W3HbXFOyltKasSxZwCFmvTut7kBdZSCF3m9y1bXXyVu6p2xuMFcsTyQ=="], + "@aws-sdk/client-secrets-manager/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "@aws-sdk/client-sesv2/@smithy/core": ["@smithy/core@3.35.2", "", { "dependencies": { "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-ejTukBuP/Pg3t9N8Ux+0zKsXeHWm7p6W3HbXFOyltKasSxZwCFmvTut7kBdZSCF3m9y1bXXyVu6p2xuMFcsTyQ=="], + "@aws-sdk/client-sesv2/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "@aws-sdk/client-sqs/@smithy/core": ["@smithy/core@3.35.2", "", { "dependencies": { "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-ejTukBuP/Pg3t9N8Ux+0zKsXeHWm7p6W3HbXFOyltKasSxZwCFmvTut7kBdZSCF3m9y1bXXyVu6p2xuMFcsTyQ=="], + "@aws-sdk/client-sqs/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "@aws-sdk/client-ssm/@smithy/core": ["@smithy/core@3.35.2", "", { "dependencies": { "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-ejTukBuP/Pg3t9N8Ux+0zKsXeHWm7p6W3HbXFOyltKasSxZwCFmvTut7kBdZSCF3m9y1bXXyVu6p2xuMFcsTyQ=="], + "@aws-sdk/client-ssm/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "@aws-sdk/client-sso-admin/@smithy/core": ["@smithy/core@3.35.2", "", { "dependencies": { "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-ejTukBuP/Pg3t9N8Ux+0zKsXeHWm7p6W3HbXFOyltKasSxZwCFmvTut7kBdZSCF3m9y1bXXyVu6p2xuMFcsTyQ=="], + "@aws-sdk/client-sso-admin/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "@aws-sdk/client-sts/@smithy/core": ["@smithy/core@3.35.2", "", { "dependencies": { "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-ejTukBuP/Pg3t9N8Ux+0zKsXeHWm7p6W3HbXFOyltKasSxZwCFmvTut7kBdZSCF3m9y1bXXyVu6p2xuMFcsTyQ=="], + "@aws-sdk/client-sts/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "@aws-sdk/client-textract/@smithy/core": ["@smithy/core@3.35.2", "", { "dependencies": { "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-ejTukBuP/Pg3t9N8Ux+0zKsXeHWm7p6W3HbXFOyltKasSxZwCFmvTut7kBdZSCF3m9y1bXXyVu6p2xuMFcsTyQ=="], + "@aws-sdk/client-textract/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "@aws-sdk/core/@smithy/core": ["@smithy/core@3.35.2", "", { "dependencies": { "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-ejTukBuP/Pg3t9N8Ux+0zKsXeHWm7p6W3HbXFOyltKasSxZwCFmvTut7kBdZSCF3m9y1bXXyVu6p2xuMFcsTyQ=="], + "@aws-sdk/core/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "@aws-sdk/credential-provider-cognito-identity/@aws-sdk/types": ["@aws-sdk/types@3.974.5", "", { "dependencies": { "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-LkwLL2BLbC6wNNm4JaH9mbEqBMdOZCct6VAYqhdN4U1xrWM+fUJQEfbHwQgDypapOWTRtlk25akb5afM0P8CIQ=="], + + "@aws-sdk/credential-provider-cognito-identity/@smithy/types": ["@smithy/types@4.17.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-FOKpVZob9MPTn2znRzGrnsMHv7BOsKVw3XiP/cOyYLDVZ9qKp4nifIiSCuUU/fIj5Vu0UOAxCFr+qRAtG0NUkA=="], + "@aws-sdk/credential-provider-cognito-identity/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "@aws-sdk/credential-provider-env/@aws-sdk/core": ["@aws-sdk/core@3.977.9", "", { "dependencies": { "@aws-sdk/types": "^3.974.5", "@aws-sdk/xml-builder": "^3.972.40", "@aws/lambda-invoke-store": "^0.3.0", "@smithy/core": "^3.33.3", "@smithy/signature-v4": "^5.6.12", "@smithy/types": "^4.17.2", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "sha512-reqPFEQrZxDZpeGj4PFMepBeR5LGYHRqq/L0motTzgFkCRBA4rFdaVXDSLYyGHhxVz7sT2PDnPN9CluGSfgyJA=="], + + "@aws-sdk/credential-provider-env/@aws-sdk/types": ["@aws-sdk/types@3.974.5", "", { "dependencies": { "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-LkwLL2BLbC6wNNm4JaH9mbEqBMdOZCct6VAYqhdN4U1xrWM+fUJQEfbHwQgDypapOWTRtlk25akb5afM0P8CIQ=="], + + "@aws-sdk/credential-provider-env/@smithy/types": ["@smithy/types@4.17.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-FOKpVZob9MPTn2znRzGrnsMHv7BOsKVw3XiP/cOyYLDVZ9qKp4nifIiSCuUU/fIj5Vu0UOAxCFr+qRAtG0NUkA=="], + "@aws-sdk/credential-provider-env/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "@aws-sdk/credential-provider-http/@aws-sdk/core": ["@aws-sdk/core@3.977.9", "", { "dependencies": { "@aws-sdk/types": "^3.974.5", "@aws-sdk/xml-builder": "^3.972.40", "@aws/lambda-invoke-store": "^0.3.0", "@smithy/core": "^3.33.3", "@smithy/signature-v4": "^5.6.12", "@smithy/types": "^4.17.2", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "sha512-reqPFEQrZxDZpeGj4PFMepBeR5LGYHRqq/L0motTzgFkCRBA4rFdaVXDSLYyGHhxVz7sT2PDnPN9CluGSfgyJA=="], + + "@aws-sdk/credential-provider-http/@aws-sdk/types": ["@aws-sdk/types@3.974.5", "", { "dependencies": { "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-LkwLL2BLbC6wNNm4JaH9mbEqBMdOZCct6VAYqhdN4U1xrWM+fUJQEfbHwQgDypapOWTRtlk25akb5afM0P8CIQ=="], + + "@aws-sdk/credential-provider-http/@smithy/fetch-http-handler": ["@smithy/fetch-http-handler@5.7.2", "", { "dependencies": { "@smithy/core": "^3.33.2", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-nZyWTmSpJEXl6VtWVMBJve/7x12DZu6sIX1z1a+ZMaHlQQRs9Zpu6NbTe/gmxYXVRpkjxyDYpZ5gx2IM6f/Wkw=="], + + "@aws-sdk/credential-provider-http/@smithy/node-http-handler": ["@smithy/node-http-handler@4.11.3", "", { "dependencies": { "@smithy/core": "^3.33.3", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-2jY1tSpERfPfWqyBV2pH+iGFaghVsIJszJNsT7hxtQYhVJpWDyc0LqOWI+nXOxOAHaEfZ4PXXtp1wW1TGpHhkA=="], + + "@aws-sdk/credential-provider-http/@smithy/types": ["@smithy/types@4.17.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-FOKpVZob9MPTn2znRzGrnsMHv7BOsKVw3XiP/cOyYLDVZ9qKp4nifIiSCuUU/fIj5Vu0UOAxCFr+qRAtG0NUkA=="], + "@aws-sdk/credential-provider-http/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "@aws-sdk/credential-provider-ini/@aws-sdk/core": ["@aws-sdk/core@3.977.9", "", { "dependencies": { "@aws-sdk/types": "^3.974.5", "@aws-sdk/xml-builder": "^3.972.40", "@aws/lambda-invoke-store": "^0.3.0", "@smithy/core": "^3.33.3", "@smithy/signature-v4": "^5.6.12", "@smithy/types": "^4.17.2", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "sha512-reqPFEQrZxDZpeGj4PFMepBeR5LGYHRqq/L0motTzgFkCRBA4rFdaVXDSLYyGHhxVz7sT2PDnPN9CluGSfgyJA=="], + + "@aws-sdk/credential-provider-ini/@aws-sdk/types": ["@aws-sdk/types@3.974.5", "", { "dependencies": { "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-LkwLL2BLbC6wNNm4JaH9mbEqBMdOZCct6VAYqhdN4U1xrWM+fUJQEfbHwQgDypapOWTRtlk25akb5afM0P8CIQ=="], + + "@aws-sdk/credential-provider-ini/@smithy/types": ["@smithy/types@4.17.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-FOKpVZob9MPTn2znRzGrnsMHv7BOsKVw3XiP/cOyYLDVZ9qKp4nifIiSCuUU/fIj5Vu0UOAxCFr+qRAtG0NUkA=="], + "@aws-sdk/credential-provider-ini/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "@aws-sdk/credential-provider-login/@aws-sdk/core": ["@aws-sdk/core@3.977.9", "", { "dependencies": { "@aws-sdk/types": "^3.974.5", "@aws-sdk/xml-builder": "^3.972.40", "@aws/lambda-invoke-store": "^0.3.0", "@smithy/core": "^3.33.3", "@smithy/signature-v4": "^5.6.12", "@smithy/types": "^4.17.2", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "sha512-reqPFEQrZxDZpeGj4PFMepBeR5LGYHRqq/L0motTzgFkCRBA4rFdaVXDSLYyGHhxVz7sT2PDnPN9CluGSfgyJA=="], + + "@aws-sdk/credential-provider-login/@aws-sdk/types": ["@aws-sdk/types@3.974.5", "", { "dependencies": { "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-LkwLL2BLbC6wNNm4JaH9mbEqBMdOZCct6VAYqhdN4U1xrWM+fUJQEfbHwQgDypapOWTRtlk25akb5afM0P8CIQ=="], + + "@aws-sdk/credential-provider-login/@smithy/types": ["@smithy/types@4.17.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-FOKpVZob9MPTn2znRzGrnsMHv7BOsKVw3XiP/cOyYLDVZ9qKp4nifIiSCuUU/fIj5Vu0UOAxCFr+qRAtG0NUkA=="], + "@aws-sdk/credential-provider-login/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-env": ["@aws-sdk/credential-provider-env@3.972.74", "", { "dependencies": { "@aws-sdk/core": "^3.978.3", "@aws-sdk/types": "^3.974.6", "@smithy/core": "^3.35.2", "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-rsRJcW2iFUhCgclyD6OSbMEaPl8Eu0qSeRZb2uuCK1ViZ66hl5wOe/p6Vr6MO3b+ydyKgFeqza2p6tZThvILlw=="], + + "@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-http": ["@aws-sdk/credential-provider-http@3.972.76", "", { "dependencies": { "@aws-sdk/core": "^3.978.3", "@aws-sdk/types": "^3.974.6", "@smithy/core": "^3.35.2", "@smithy/fetch-http-handler": "^5.8.0", "@smithy/node-http-handler": "^4.12.1", "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-pnKdh0Br7OJPj+7qKjzgTfDTFW0RhEMKXNDR2jv9CAM4oHuG/4z3hRh8KtutLfpmItuRtDbKBmwWkDqHwwAWXw=="], + + "@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-ini": ["@aws-sdk/credential-provider-ini@3.973.19", "", { "dependencies": { "@aws-sdk/core": "^3.978.3", "@aws-sdk/credential-provider-env": "^3.972.74", "@aws-sdk/credential-provider-http": "^3.972.76", "@aws-sdk/credential-provider-login": "^3.972.81", "@aws-sdk/credential-provider-process": "^3.972.74", "@aws-sdk/credential-provider-sso": "^3.973.18", "@aws-sdk/credential-provider-web-identity": "^3.972.80", "@aws-sdk/nested-clients": "^3.997.48", "@aws-sdk/types": "^3.974.6", "@smithy/core": "^3.35.2", "@smithy/credential-provider-imds": "^4.5.2", "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-kcjvAxqQEV8yuwkX58RelNn3ne65o7JgRWf3Z/gVvbi7Xuw1qSDLJlatrLD76+40cmRxmNkLxBoyp/vAQChQ5g=="], + + "@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-process": ["@aws-sdk/credential-provider-process@3.972.74", "", { "dependencies": { "@aws-sdk/core": "^3.978.3", "@aws-sdk/types": "^3.974.6", "@smithy/core": "^3.35.2", "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-Yj6kZFJQdbR+PygTkqdVLPHHpdDpOS9GCYVcDCuweCRRig9LF24ELQBMfyUw1vspvrZJUfnOGVyMjhaL094ahw=="], + + "@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-sso": ["@aws-sdk/credential-provider-sso@3.973.18", "", { "dependencies": { "@aws-sdk/core": "^3.978.3", "@aws-sdk/nested-clients": "^3.997.48", "@aws-sdk/token-providers": "3.1150.0", "@aws-sdk/types": "^3.974.6", "@smithy/core": "^3.35.2", "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-FnpPhdY4qUGtX/8X6eKxh+uD+9Y19i9FYibgk4SBe0M935s9vocHkHzaxaMNk+YkHmvzgdu8cHA5SCoeU+kkew=="], + + "@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-web-identity": ["@aws-sdk/credential-provider-web-identity@3.972.80", "", { "dependencies": { "@aws-sdk/core": "^3.978.3", "@aws-sdk/nested-clients": "^3.997.48", "@aws-sdk/types": "^3.974.6", "@smithy/core": "^3.35.2", "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-TJF25Ndwy2HxcVj6oxMgp8qVlJAawlExHYBXqhuC6Zt2m+A7WpdkjBD6QglNbiArlteYljZHEY3R7KKmno6ISA=="], + + "@aws-sdk/credential-provider-node/@smithy/core": ["@smithy/core@3.35.2", "", { "dependencies": { "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-ejTukBuP/Pg3t9N8Ux+0zKsXeHWm7p6W3HbXFOyltKasSxZwCFmvTut7kBdZSCF3m9y1bXXyVu6p2xuMFcsTyQ=="], + "@aws-sdk/credential-provider-node/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "@aws-sdk/credential-provider-process/@aws-sdk/core": ["@aws-sdk/core@3.977.9", "", { "dependencies": { "@aws-sdk/types": "^3.974.5", "@aws-sdk/xml-builder": "^3.972.40", "@aws/lambda-invoke-store": "^0.3.0", "@smithy/core": "^3.33.3", "@smithy/signature-v4": "^5.6.12", "@smithy/types": "^4.17.2", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "sha512-reqPFEQrZxDZpeGj4PFMepBeR5LGYHRqq/L0motTzgFkCRBA4rFdaVXDSLYyGHhxVz7sT2PDnPN9CluGSfgyJA=="], + + "@aws-sdk/credential-provider-process/@aws-sdk/types": ["@aws-sdk/types@3.974.5", "", { "dependencies": { "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-LkwLL2BLbC6wNNm4JaH9mbEqBMdOZCct6VAYqhdN4U1xrWM+fUJQEfbHwQgDypapOWTRtlk25akb5afM0P8CIQ=="], + + "@aws-sdk/credential-provider-process/@smithy/types": ["@smithy/types@4.17.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-FOKpVZob9MPTn2znRzGrnsMHv7BOsKVw3XiP/cOyYLDVZ9qKp4nifIiSCuUU/fIj5Vu0UOAxCFr+qRAtG0NUkA=="], + "@aws-sdk/credential-provider-process/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "@aws-sdk/credential-provider-sso/@aws-sdk/core": ["@aws-sdk/core@3.977.9", "", { "dependencies": { "@aws-sdk/types": "^3.974.5", "@aws-sdk/xml-builder": "^3.972.40", "@aws/lambda-invoke-store": "^0.3.0", "@smithy/core": "^3.33.3", "@smithy/signature-v4": "^5.6.12", "@smithy/types": "^4.17.2", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "sha512-reqPFEQrZxDZpeGj4PFMepBeR5LGYHRqq/L0motTzgFkCRBA4rFdaVXDSLYyGHhxVz7sT2PDnPN9CluGSfgyJA=="], + "@aws-sdk/credential-provider-sso/@aws-sdk/token-providers": ["@aws-sdk/token-providers@3.1116.0", "", { "dependencies": { "@aws-sdk/core": "^3.977.9", "@aws-sdk/nested-clients": "^3.997.44", "@aws-sdk/types": "^3.974.5", "@smithy/core": "^3.33.3", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-ygIivKqh8aHzNkucOCXHyIBgBpLPfrSI0mCqXF+vLBsPTUKqj0VSqAY0GFPe7lQl4HntjOcQ+KSyS7oUV2C54Q=="], + "@aws-sdk/credential-provider-sso/@aws-sdk/types": ["@aws-sdk/types@3.974.5", "", { "dependencies": { "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-LkwLL2BLbC6wNNm4JaH9mbEqBMdOZCct6VAYqhdN4U1xrWM+fUJQEfbHwQgDypapOWTRtlk25akb5afM0P8CIQ=="], + + "@aws-sdk/credential-provider-sso/@smithy/types": ["@smithy/types@4.17.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-FOKpVZob9MPTn2znRzGrnsMHv7BOsKVw3XiP/cOyYLDVZ9qKp4nifIiSCuUU/fIj5Vu0UOAxCFr+qRAtG0NUkA=="], + "@aws-sdk/credential-provider-sso/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "@aws-sdk/credential-provider-web-identity/@aws-sdk/core": ["@aws-sdk/core@3.977.9", "", { "dependencies": { "@aws-sdk/types": "^3.974.5", "@aws-sdk/xml-builder": "^3.972.40", "@aws/lambda-invoke-store": "^0.3.0", "@smithy/core": "^3.33.3", "@smithy/signature-v4": "^5.6.12", "@smithy/types": "^4.17.2", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "sha512-reqPFEQrZxDZpeGj4PFMepBeR5LGYHRqq/L0motTzgFkCRBA4rFdaVXDSLYyGHhxVz7sT2PDnPN9CluGSfgyJA=="], + + "@aws-sdk/credential-provider-web-identity/@aws-sdk/types": ["@aws-sdk/types@3.974.5", "", { "dependencies": { "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-LkwLL2BLbC6wNNm4JaH9mbEqBMdOZCct6VAYqhdN4U1xrWM+fUJQEfbHwQgDypapOWTRtlk25akb5afM0P8CIQ=="], + + "@aws-sdk/credential-provider-web-identity/@smithy/types": ["@smithy/types@4.17.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-FOKpVZob9MPTn2znRzGrnsMHv7BOsKVw3XiP/cOyYLDVZ9qKp4nifIiSCuUU/fIj5Vu0UOAxCFr+qRAtG0NUkA=="], + "@aws-sdk/credential-provider-web-identity/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "@aws-sdk/credential-providers/@aws-sdk/core": ["@aws-sdk/core@3.977.9", "", { "dependencies": { "@aws-sdk/types": "^3.974.5", "@aws-sdk/xml-builder": "^3.972.40", "@aws/lambda-invoke-store": "^0.3.0", "@smithy/core": "^3.33.3", "@smithy/signature-v4": "^5.6.12", "@smithy/types": "^4.17.2", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "sha512-reqPFEQrZxDZpeGj4PFMepBeR5LGYHRqq/L0motTzgFkCRBA4rFdaVXDSLYyGHhxVz7sT2PDnPN9CluGSfgyJA=="], + + "@aws-sdk/credential-providers/@aws-sdk/credential-provider-node": ["@aws-sdk/credential-provider-node@3.972.81", "", { "dependencies": { "@aws-sdk/credential-provider-env": "^3.972.70", "@aws-sdk/credential-provider-http": "^3.972.72", "@aws-sdk/credential-provider-ini": "^3.973.15", "@aws-sdk/credential-provider-process": "^3.972.70", "@aws-sdk/credential-provider-sso": "^3.973.14", "@aws-sdk/credential-provider-web-identity": "^3.972.76", "@aws-sdk/types": "^3.974.5", "@smithy/core": "^3.33.3", "@smithy/credential-provider-imds": "^4.4.16", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-Rml+WitoFvXmv6JZ18U/xGdGDGGvB/mOin0ya0lTnTrdC0Z1lrVxTYh7iNklZBcvcRMrs4DoEf6xy1KWyrLQQw=="], + + "@aws-sdk/credential-providers/@aws-sdk/types": ["@aws-sdk/types@3.974.5", "", { "dependencies": { "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-LkwLL2BLbC6wNNm4JaH9mbEqBMdOZCct6VAYqhdN4U1xrWM+fUJQEfbHwQgDypapOWTRtlk25akb5afM0P8CIQ=="], + + "@aws-sdk/credential-providers/@smithy/types": ["@smithy/types@4.17.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-FOKpVZob9MPTn2znRzGrnsMHv7BOsKVw3XiP/cOyYLDVZ9qKp4nifIiSCuUU/fIj5Vu0UOAxCFr+qRAtG0NUkA=="], + "@aws-sdk/credential-providers/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "@aws-sdk/dynamodb-codec/@smithy/core": ["@smithy/core@3.35.2", "", { "dependencies": { "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-ejTukBuP/Pg3t9N8Ux+0zKsXeHWm7p6W3HbXFOyltKasSxZwCFmvTut7kBdZSCF3m9y1bXXyVu6p2xuMFcsTyQ=="], + "@aws-sdk/dynamodb-codec/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], "@aws-sdk/endpoint-cache/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "@aws-sdk/eventstream-handler-node/@smithy/core": ["@smithy/core@3.35.2", "", { "dependencies": { "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-ejTukBuP/Pg3t9N8Ux+0zKsXeHWm7p6W3HbXFOyltKasSxZwCFmvTut7kBdZSCF3m9y1bXXyVu6p2xuMFcsTyQ=="], + "@aws-sdk/eventstream-handler-node/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "@aws-sdk/lib-dynamodb/@smithy/core": ["@smithy/core@3.35.2", "", { "dependencies": { "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-ejTukBuP/Pg3t9N8Ux+0zKsXeHWm7p6W3HbXFOyltKasSxZwCFmvTut7kBdZSCF3m9y1bXXyVu6p2xuMFcsTyQ=="], + "@aws-sdk/lib-dynamodb/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "@aws-sdk/lib-storage/@smithy/types": ["@smithy/types@4.17.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-FOKpVZob9MPTn2znRzGrnsMHv7BOsKVw3XiP/cOyYLDVZ9qKp4nifIiSCuUU/fIj5Vu0UOAxCFr+qRAtG0NUkA=="], + "@aws-sdk/lib-storage/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "@aws-sdk/middleware-endpoint-discovery/@smithy/core": ["@smithy/core@3.35.2", "", { "dependencies": { "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-ejTukBuP/Pg3t9N8Ux+0zKsXeHWm7p6W3HbXFOyltKasSxZwCFmvTut7kBdZSCF3m9y1bXXyVu6p2xuMFcsTyQ=="], + "@aws-sdk/middleware-endpoint-discovery/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "@aws-sdk/middleware-eventstream/@smithy/core": ["@smithy/core@3.35.2", "", { "dependencies": { "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-ejTukBuP/Pg3t9N8Ux+0zKsXeHWm7p6W3HbXFOyltKasSxZwCFmvTut7kBdZSCF3m9y1bXXyVu6p2xuMFcsTyQ=="], + "@aws-sdk/middleware-eventstream/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "@aws-sdk/middleware-sdk-ec2/@aws-sdk/core": ["@aws-sdk/core@3.977.9", "", { "dependencies": { "@aws-sdk/types": "^3.974.5", "@aws-sdk/xml-builder": "^3.972.40", "@aws/lambda-invoke-store": "^0.3.0", "@smithy/core": "^3.33.3", "@smithy/signature-v4": "^5.6.12", "@smithy/types": "^4.17.2", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "sha512-reqPFEQrZxDZpeGj4PFMepBeR5LGYHRqq/L0motTzgFkCRBA4rFdaVXDSLYyGHhxVz7sT2PDnPN9CluGSfgyJA=="], + + "@aws-sdk/middleware-sdk-ec2/@aws-sdk/types": ["@aws-sdk/types@3.974.5", "", { "dependencies": { "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-LkwLL2BLbC6wNNm4JaH9mbEqBMdOZCct6VAYqhdN4U1xrWM+fUJQEfbHwQgDypapOWTRtlk25akb5afM0P8CIQ=="], + + "@aws-sdk/middleware-sdk-ec2/@smithy/signature-v4": ["@smithy/signature-v4@5.7.3", "", { "dependencies": { "@smithy/core": "^3.33.3", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-7ImGm+FkHRLcBaRttIAMZ6bzJZWb2cJGoYjq46F2UjycujWzrL9GEN9h4w7eQyXJYnltrUhxbbieBAIRrdqpow=="], + + "@aws-sdk/middleware-sdk-ec2/@smithy/types": ["@smithy/types@4.17.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-FOKpVZob9MPTn2znRzGrnsMHv7BOsKVw3XiP/cOyYLDVZ9qKp4nifIiSCuUU/fIj5Vu0UOAxCFr+qRAtG0NUkA=="], + "@aws-sdk/middleware-sdk-ec2/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "@aws-sdk/middleware-sdk-s3/@smithy/core": ["@smithy/core@3.35.2", "", { "dependencies": { "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-ejTukBuP/Pg3t9N8Ux+0zKsXeHWm7p6W3HbXFOyltKasSxZwCFmvTut7kBdZSCF3m9y1bXXyVu6p2xuMFcsTyQ=="], + "@aws-sdk/middleware-sdk-s3/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "@aws-sdk/middleware-sdk-sqs/@smithy/core": ["@smithy/core@3.35.2", "", { "dependencies": { "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-ejTukBuP/Pg3t9N8Ux+0zKsXeHWm7p6W3HbXFOyltKasSxZwCFmvTut7kBdZSCF3m9y1bXXyVu6p2xuMFcsTyQ=="], + "@aws-sdk/middleware-sdk-sqs/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "@aws-sdk/middleware-websocket/@smithy/core": ["@smithy/core@3.35.2", "", { "dependencies": { "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-ejTukBuP/Pg3t9N8Ux+0zKsXeHWm7p6W3HbXFOyltKasSxZwCFmvTut7kBdZSCF3m9y1bXXyVu6p2xuMFcsTyQ=="], + "@aws-sdk/middleware-websocket/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "@aws-sdk/nested-clients/@aws-sdk/core": ["@aws-sdk/core@3.977.9", "", { "dependencies": { "@aws-sdk/types": "^3.974.5", "@aws-sdk/xml-builder": "^3.972.40", "@aws/lambda-invoke-store": "^0.3.0", "@smithy/core": "^3.33.3", "@smithy/signature-v4": "^5.6.12", "@smithy/types": "^4.17.2", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "sha512-reqPFEQrZxDZpeGj4PFMepBeR5LGYHRqq/L0motTzgFkCRBA4rFdaVXDSLYyGHhxVz7sT2PDnPN9CluGSfgyJA=="], + + "@aws-sdk/nested-clients/@aws-sdk/signature-v4-multi-region": ["@aws-sdk/signature-v4-multi-region@3.996.46", "", { "dependencies": { "@aws-sdk/types": "^3.974.5", "@smithy/signature-v4": "^5.6.12", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-L+2xZTye/2T96f3lwCws0Zw6GG2JHZW9e8FpVgGBeeExSKyeoZ6CWRpBml/7DNiK/O26jrgPM9F+Ay8VkgzUWQ=="], + + "@aws-sdk/nested-clients/@aws-sdk/types": ["@aws-sdk/types@3.974.5", "", { "dependencies": { "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-LkwLL2BLbC6wNNm4JaH9mbEqBMdOZCct6VAYqhdN4U1xrWM+fUJQEfbHwQgDypapOWTRtlk25akb5afM0P8CIQ=="], + + "@aws-sdk/nested-clients/@smithy/fetch-http-handler": ["@smithy/fetch-http-handler@5.7.2", "", { "dependencies": { "@smithy/core": "^3.33.2", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-nZyWTmSpJEXl6VtWVMBJve/7x12DZu6sIX1z1a+ZMaHlQQRs9Zpu6NbTe/gmxYXVRpkjxyDYpZ5gx2IM6f/Wkw=="], + + "@aws-sdk/nested-clients/@smithy/node-http-handler": ["@smithy/node-http-handler@4.11.3", "", { "dependencies": { "@smithy/core": "^3.33.3", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-2jY1tSpERfPfWqyBV2pH+iGFaghVsIJszJNsT7hxtQYhVJpWDyc0LqOWI+nXOxOAHaEfZ4PXXtp1wW1TGpHhkA=="], + + "@aws-sdk/nested-clients/@smithy/types": ["@smithy/types@4.17.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-FOKpVZob9MPTn2znRzGrnsMHv7BOsKVw3XiP/cOyYLDVZ9qKp4nifIiSCuUU/fIj5Vu0UOAxCFr+qRAtG0NUkA=="], + "@aws-sdk/nested-clients/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "@aws-sdk/s3-request-presigner/@smithy/core": ["@smithy/core@3.35.2", "", { "dependencies": { "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-ejTukBuP/Pg3t9N8Ux+0zKsXeHWm7p6W3HbXFOyltKasSxZwCFmvTut7kBdZSCF3m9y1bXXyVu6p2xuMFcsTyQ=="], + "@aws-sdk/s3-request-presigner/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], "@aws-sdk/signature-v4-multi-region/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "@aws-sdk/token-providers/@aws-sdk/nested-clients": ["@aws-sdk/nested-clients@3.997.48", "", { "dependencies": { "@aws-sdk/core": "^3.978.3", "@aws-sdk/signature-v4-multi-region": "^3.996.48", "@aws-sdk/types": "^3.974.6", "@smithy/core": "^3.35.2", "@smithy/fetch-http-handler": "^5.8.0", "@smithy/node-http-handler": "^4.12.1", "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-B01jdXJtAW/XOiUzGdI2mz67WyEHbGEc9X6Euzw3bjLAa+txTqdZDER4X2FsIEcXzV2ABqudVZ5thali8tCCzQ=="], + + "@aws-sdk/token-providers/@smithy/core": ["@smithy/core@3.35.2", "", { "dependencies": { "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-ejTukBuP/Pg3t9N8Ux+0zKsXeHWm7p6W3HbXFOyltKasSxZwCFmvTut7kBdZSCF3m9y1bXXyVu6p2xuMFcsTyQ=="], + "@aws-sdk/token-providers/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], "@aws-sdk/types/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], @@ -5049,17 +5210,17 @@ "@babel/generator/@babel/parser": ["@babel/parser@7.29.7", "", { "dependencies": { "@babel/types": "^7.29.7" }, "bin": "./bin/babel-parser.js" }, "sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg=="], - "@babel/template/@babel/parser": ["@babel/parser@7.29.7", "", { "dependencies": { "@babel/types": "^7.29.7" }, "bin": "./bin/babel-parser.js" }, "sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg=="], + "@babel/generator/@babel/types": ["@babel/types@7.29.7", "", { "dependencies": { "@babel/helper-string-parser": "^7.29.7", "@babel/helper-validator-identifier": "^7.29.7" } }, "sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA=="], - "@babel/traverse/@babel/parser": ["@babel/parser@7.29.7", "", { "dependencies": { "@babel/types": "^7.29.7" }, "bin": "./bin/babel-parser.js" }, "sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg=="], + "@babel/template/@babel/parser": ["@babel/parser@7.29.7", "", { "dependencies": { "@babel/types": "^7.29.7" }, "bin": "./bin/babel-parser.js" }, "sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg=="], - "@better-auth/core/@opentelemetry/semantic-conventions": ["@opentelemetry/semantic-conventions@1.41.1", "", {}, "sha512-/UhIkaZgPutTFmQ7RnIJGgDXZmtEJ7Dvi86xNTFWcnRxVRNk/aotsqDJYeEvDP+FSMB2SdW+pQzNMcWP0rwuNA=="], + "@babel/template/@babel/types": ["@babel/types@7.29.7", "", { "dependencies": { "@babel/helper-string-parser": "^7.29.7", "@babel/helper-validator-identifier": "^7.29.7" } }, "sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA=="], - "@better-auth/core/jose": ["jose@6.2.3", "", {}, "sha512-YYVDInQKFJfR/xa3ojUTl8c2KoTwiL1R5Wg9YCydwH0x0B9grbzlg5HC7mMjCtUJjbQ/YnGEZIhI5tCgfTb4Hw=="], + "@babel/traverse/@babel/parser": ["@babel/parser@7.29.7", "", { "dependencies": { "@babel/types": "^7.29.7" }, "bin": "./bin/babel-parser.js" }, "sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg=="], - "@better-auth/oauth-provider/jose": ["jose@6.2.3", "", {}, "sha512-YYVDInQKFJfR/xa3ojUTl8c2KoTwiL1R5Wg9YCydwH0x0B9grbzlg5HC7mMjCtUJjbQ/YnGEZIhI5tCgfTb4Hw=="], + "@babel/traverse/@babel/types": ["@babel/types@7.29.7", "", { "dependencies": { "@babel/helper-string-parser": "^7.29.7", "@babel/helper-validator-identifier": "^7.29.7" } }, "sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA=="], - "@better-auth/sso/jose": ["jose@6.2.3", "", {}, "sha512-YYVDInQKFJfR/xa3ojUTl8c2KoTwiL1R5Wg9YCydwH0x0B9grbzlg5HC7mMjCtUJjbQ/YnGEZIhI5tCgfTb4Hw=="], + "@better-auth/core/@opentelemetry/semantic-conventions": ["@opentelemetry/semantic-conventions@1.41.1", "", {}, "sha512-/UhIkaZgPutTFmQ7RnIJGgDXZmtEJ7Dvi86xNTFWcnRxVRNk/aotsqDJYeEvDP+FSMB2SdW+pQzNMcWP0rwuNA=="], "@better-auth/sso/tldts": ["tldts@6.1.86", "", { "dependencies": { "tldts-core": "^6.1.86" }, "bin": { "tldts": "bin/cli.js" } }, "sha512-WMi/OQ2axVTf/ykqCQgXiIct+mSQDFdH2fkwhPwgEwvJ1kSzZRiinb0zF2Xb8u4+OqPChmyI6MEu4EezNJz+FQ=="], @@ -5085,29 +5246,21 @@ "@daytona/sdk/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], - "@earendil-works/chord/esbuild": ["esbuild@0.28.2", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.28.2", "@esbuild/android-arm": "0.28.2", "@esbuild/android-arm64": "0.28.2", "@esbuild/android-x64": "0.28.2", "@esbuild/darwin-arm64": "0.28.2", "@esbuild/darwin-x64": "0.28.2", "@esbuild/freebsd-arm64": "0.28.2", "@esbuild/freebsd-x64": "0.28.2", "@esbuild/linux-arm": "0.28.2", "@esbuild/linux-arm64": "0.28.2", "@esbuild/linux-ia32": "0.28.2", "@esbuild/linux-loong64": "0.28.2", "@esbuild/linux-mips64el": "0.28.2", "@esbuild/linux-ppc64": "0.28.2", "@esbuild/linux-riscv64": "0.28.2", "@esbuild/linux-s390x": "0.28.2", "@esbuild/linux-x64": "0.28.2", "@esbuild/netbsd-arm64": "0.28.2", "@esbuild/netbsd-x64": "0.28.2", "@esbuild/openbsd-arm64": "0.28.2", "@esbuild/openbsd-x64": "0.28.2", "@esbuild/openharmony-arm64": "0.28.2", "@esbuild/sunos-x64": "0.28.2", "@esbuild/win32-arm64": "0.28.2", "@esbuild/win32-ia32": "0.28.2", "@esbuild/win32-x64": "0.28.2" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-HKVLS8dvII+xoKW9kmqxbRKrnWEXfJJr/FZhhJmiqIB0e053QNYFqOBouTMO/k5sID4MvCiUCvv8b9M4h32wIA=="], - - "@earendil-works/pi-agent-core/typebox": ["typebox@1.3.27", "", {}, "sha512-zu+jc1pcy4UiNThxikUr36f0Rybk9PEeCg/NE6adeWr/SKsdNO4EzZHYRDlv2YCVAfj3Odq3dESSo/jNyoBXzA=="], - "@earendil-works/pi-ai/@anthropic-ai/sdk": ["@anthropic-ai/sdk@0.124.0", "", { "dependencies": { "json-schema-to-ts": "^3.1.1", "standardwebhooks": "^1.0.0" }, "peerDependencies": { "zod": "^3.25.0 || ^4.0.0" }, "optionalPeers": ["zod"], "bin": { "anthropic-ai-sdk": "bin/cli" } }, "sha512-cN5O8i9UVxHeOQAzj/XjshWXG8KiibJDw9OGpH2Z/eR3n/RBxdoLxDJOcfqAJWvjaMDFfHTBADU04hWRJVkDyA=="], "@earendil-works/pi-ai/@aws-sdk/client-bedrock-runtime": ["@aws-sdk/client-bedrock-runtime@3.1127.0", "", { "dependencies": { "@aws-sdk/core": "^3.977.9", "@aws-sdk/credential-provider-node": "^3.972.82", "@aws-sdk/eventstream-handler-node": "^3.972.34", "@aws-sdk/middleware-eventstream": "^3.972.29", "@aws-sdk/middleware-websocket": "^3.972.52", "@aws-sdk/token-providers": "3.1127.0", "@aws-sdk/types": "^3.974.5", "@smithy/core": "^3.33.3", "@smithy/fetch-http-handler": "^5.7.2", "@smithy/node-http-handler": "^4.11.3", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-IDl/lrPb90aH+pZFHGNDmgH9nAUQj5PlZH1sJ3w7RikctyjHSnY3oNjZhrLoaBoQn/rNK0zsP6OHEqEhj2tdLA=="], "@earendil-works/pi-ai/@google/genai": ["@google/genai@2.21.0", "", { "dependencies": { "google-auth-library": "^10.3.0", "p-retry": "^4.6.2", "protobufjs": "^7.5.4", "ws": "^8.18.0" }, "peerDependencies": { "@modelcontextprotocol/sdk": "^1.25.2" }, "optionalPeers": ["@modelcontextprotocol/sdk"] }, "sha512-+PDtco2/Z0ONdzCGekCoCT+O1VJS9xJQNN4XzQpXG/t3El/SWWMkCWlFRO1KmivOHPa4Q0VjUYu1HBKCZ/v33Q=="], - "@earendil-works/pi-ai/@smithy/node-http-handler": ["@smithy/node-http-handler@4.12.1", "", { "dependencies": { "@smithy/core": "^3.33.3", "@smithy/types": "^4.18.0", "tslib": "^2.6.2" } }, "sha512-ThMkboGeONWXAelq9FvGsuJC4rOi+qyC4/zhUF58xYpxUg5sQKx2VXZYJmtNjr4dSuBJ1HeJXETQILCz3wOHvw=="], - "@earendil-works/pi-ai/http-proxy-agent": ["http-proxy-agent@9.1.0", "", { "dependencies": { "agent-base": "9.0.0", "debug": "^4.3.4", "proxy-agent-negotiate": "1.1.0" } }, "sha512-2NxoveTT58mjYT4n3RPTEfCZGLMbidoO8XEieXfpSYxu+PQJ1qpx4ypwH6N+uF9twBPIvRRgvkvW5HUTYWENig=="], "@earendil-works/pi-ai/https-proxy-agent": ["https-proxy-agent@9.1.0", "", { "dependencies": { "agent-base": "9.0.0", "debug": "^4.3.4", "proxy-agent-negotiate": "1.1.0" } }, "sha512-ag87y7cJJ9/3+GxFr8Oy4O5faDsGRGnBGsJj/YjOSsSx/5eadKLYTMPlzuR6obgoCDDm0abAAZitXXQkMOPSpA=="], "@earendil-works/pi-ai/openai": ["openai@7.19.0", "", { "peerDependencies": { "@aws-sdk/credential-provider-node": ">=3.972.0 <4", "@smithy/hash-node": ">=4.3.0 <5", "@smithy/signature-v4": ">=5.4.0 <6", "undici": ">=5 <9", "ws": "^8.21.0", "zod": "^3.25 || ^4.0" }, "optionalPeers": ["@aws-sdk/credential-provider-node", "@smithy/hash-node", "@smithy/signature-v4", "undici", "ws", "zod"] }, "sha512-MX2s3u2L5racTO0CC/SWpCOasJQBCJrqLKXK+l82cAhdeF8mPMBEe/gxMm0ZFa2xpKpOFLRjxv5afYEZbBXmbQ=="], - "@earendil-works/pi-ai/typebox": ["typebox@1.3.27", "", {}, "sha512-zu+jc1pcy4UiNThxikUr36f0Rybk9PEeCg/NE6adeWr/SKsdNO4EzZHYRDlv2YCVAfj3Odq3dESSo/jNyoBXzA=="], - "@earendil-works/pi-coding-agent/chalk": ["chalk@6.0.0", "", {}, "sha512-2uNTXIuTTxk7ciZgAU1BQcgnchcG0xXnrs6jzkQfj9SsRa9M2s5zE8WT96hS6KmG4MzWHSrvH43DF1m4XRkrFg=="], - "@earendil-works/pi-coding-agent/typebox": ["typebox@1.3.27", "", {}, "sha512-zu+jc1pcy4UiNThxikUr36f0Rybk9PEeCg/NE6adeWr/SKsdNO4EzZHYRDlv2YCVAfj3Odq3dESSo/jNyoBXzA=="], + "@earendil-works/pi-coding-agent/diff": ["diff@8.0.4", "", {}, "sha512-DPi0FmjiSU5EvQV0++GFDOJ9ASQUVFh5kD+OzOnYdi7n3Wpm9hWWGfB/O2blfHcMVTL5WkQXSnRiK9makhrcnw=="], "@earendil-works/pi-coding-agent/undici": ["undici@8.10.2", "", {}, "sha512-/y4/bH9YNU5hi9NIrpOuvGXFcxrj3CMrV+/AYpowAYTpHn8gX/XPFjNy766FPoYY0miQhdW977JFWKGNhBdwyQ=="], @@ -5151,31 +5304,23 @@ "@inquirer/core/wrap-ansi": ["wrap-ansi@6.2.0", "", { "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA=="], - "@isaacs/cliui/string-width": ["string-width@5.1.2", "", { "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", "strip-ansi": "^7.0.1" } }, "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA=="], - - "@isaacs/cliui/strip-ansi": ["strip-ansi@7.2.0", "", { "dependencies": { "ansi-regex": "^6.2.2" } }, "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w=="], - - "@isaacs/cliui/wrap-ansi": ["wrap-ansi@8.1.0", "", { "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", "strip-ansi": "^7.0.1" } }, "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ=="], - "@jridgewell/gen-mapping/@jridgewell/sourcemap-codec": ["@jridgewell/sourcemap-codec@1.5.5", "", {}, "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og=="], "@jridgewell/trace-mapping/@jridgewell/sourcemap-codec": ["@jridgewell/sourcemap-codec@1.5.5", "", {}, "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og=="], "@malept/flatpak-bundler/fs-extra": ["fs-extra@9.1.0", "", { "dependencies": { "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" } }, "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ=="], - "@modelcontextprotocol/sdk/ajv": ["ajv@8.20.0", "", { "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2" } }, "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA=="], - - "@modelcontextprotocol/sdk/jose": ["jose@6.2.3", "", {}, "sha512-YYVDInQKFJfR/xa3ojUTl8c2KoTwiL1R5Wg9YCydwH0x0B9grbzlg5HC7mMjCtUJjbQ/YnGEZIhI5tCgfTb4Hw=="], - "@oclif/core/string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], "@oclif/core/supports-color": ["supports-color@8.1.1", "", { "dependencies": { "has-flag": "^4.0.0" } }, "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q=="], "@oclif/core/wrap-ansi": ["wrap-ansi@7.0.0", "", { "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q=="], - "@octokit/plugin-paginate-rest/@octokit/types": ["@octokit/types@13.10.0", "", { "dependencies": { "@octokit/openapi-types": "^24.2.0" } }, "sha512-ifLaO34EbbPj0Xgro4G5lP5asESjwHracYJvVaPIyXMuiuXLlhic3S47cBdTb+jfODkTE5YtGCLt3Ay3+J97sA=="], + "@octokit/plugin-paginate-rest/@octokit/types": ["@octokit/types@16.0.0", "", { "dependencies": { "@octokit/openapi-types": "^27.0.0" } }, "sha512-sKq+9r1Mm4efXW1FCk7hFSeJo4QKreL/tTbR0rz/qx/r1Oa2VV83LTA/H/MuCOX7uCIJmQVRKBcbmWoySjAnSg=="], + + "@octokit/plugin-rest-endpoint-methods/@octokit/types": ["@octokit/types@16.0.0", "", { "dependencies": { "@octokit/openapi-types": "^27.0.0" } }, "sha512-sKq+9r1Mm4efXW1FCk7hFSeJo4QKreL/tTbR0rz/qx/r1Oa2VV83LTA/H/MuCOX7uCIJmQVRKBcbmWoySjAnSg=="], - "@octokit/plugin-rest-endpoint-methods/@octokit/types": ["@octokit/types@13.10.0", "", { "dependencies": { "@octokit/openapi-types": "^24.2.0" } }, "sha512-ifLaO34EbbPj0Xgro4G5lP5asESjwHracYJvVaPIyXMuiuXLlhic3S47cBdTb+jfODkTE5YtGCLt3Ay3+J97sA=="], + "@octokit/request/content-type": ["content-type@3.1.1", "", {}, "sha512-GW4qUsfFo59d0HbUibDlWv5wPz+vAAcaTWbKIuKCf0JkC7wWkSyf8f13IpXn5JkeMlB2P8iTSSIjwXljorg2vA=="], "@opentelemetry/configuration/yaml": ["yaml@2.9.0", "", { "bin": { "yaml": "bin.mjs" } }, "sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA=="], @@ -5231,8 +5376,6 @@ "@radix-ui/react-navigation-menu/@radix-ui/react-use-layout-effect": ["@radix-ui/react-use-layout-effect@1.1.2", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-jrBWOxZITuGcnjRCM2t2U5ZPkCLxD+Ym6DjfssS5haTj2iiak/DOb64JeN6OdLfLgptb6/e2kKR+ZuTrGoZTPA=="], - "@radix-ui/react-navigation-menu/@radix-ui/react-use-previous": ["@radix-ui/react-use-previous@1.1.2", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-IGBQPtRFdhN6MQ8dbegVmBq1LVZluya3F1jWY+puIcQC3MHctRwTDSBWCkL/3ZcnMJLTMJ++Z+ktmvg0F89iCw=="], - "@radix-ui/react-navigation-menu/@radix-ui/react-visually-hidden": ["@radix-ui/react-visually-hidden@1.2.6", "", { "dependencies": { "@radix-ui/react-primitive": "2.1.6" }, "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" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-jCE0WljWifTI4niIMCll06kGpsJTAPiZVU9H4WR1N6qW7At9ystHbN7dDB+we2xH535roFHj7qKS+RGj0FMDWQ=="], "@radix-ui/react-scroll-area/@radix-ui/number": ["@radix-ui/number@1.1.2", "", {}, "sha512-ceTwaxc4I5IOi97DgCotl3pqiyRGvffcc0oOsE2dQYaJOFIDsDt4VWG6xEbg1QePv9QWausCEIppud/tJ1wNig=="], @@ -5269,28 +5412,34 @@ "@shuding/opentype.js/fflate": ["fflate@0.7.4", "", {}, "sha512-5u2V/CDW15QM1XbbgS+0DfPxVB+jUKhWEKuuFuHncbk3tEEqzmoXL+2KyOFuKGqOnmdIy0/davWF1CkuwtibCw=="], - "@sim/emcn/@radix-ui/react-avatar": ["@radix-ui/react-avatar@1.1.10", "", { "dependencies": { "@radix-ui/react-context": "1.1.2", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-callback-ref": "1.1.1", "@radix-ui/react-use-is-hydrated": "0.1.0", "@radix-ui/react-use-layout-effect": "1.1.1" }, "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" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-V8piFfWapM5OmNCXTzVQY+E1rDa53zY+MQ4Y7356v4fFz6vqCyUtIz2rUD44ZEdwg78/jKmMJHj07+C/Z/rcog=="], - - "@sim/emcn/@radix-ui/react-slot": ["@radix-ui/react-slot@1.2.2", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-y7TBO4xN4Y94FvcWIOIh18fM4R1A8S4q1jhoz4PNzOoHsFcN8pogcFmZrTYAm4F9VRUrWP/Mw7xSKybIeRI+CQ=="], + "@smithy/core/@smithy/types": ["@smithy/types@4.17.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-FOKpVZob9MPTn2znRzGrnsMHv7BOsKVw3XiP/cOyYLDVZ9qKp4nifIiSCuUU/fIj5Vu0UOAxCFr+qRAtG0NUkA=="], "@smithy/core/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "@smithy/credential-provider-imds/@smithy/types": ["@smithy/types@4.17.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-FOKpVZob9MPTn2znRzGrnsMHv7BOsKVw3XiP/cOyYLDVZ9qKp4nifIiSCuUU/fIj5Vu0UOAxCFr+qRAtG0NUkA=="], + "@smithy/credential-provider-imds/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], "@smithy/eventstream-codec/@smithy/core": ["@smithy/core@3.25.0", "", { "dependencies": { "@aws-crypto/crc32": "5.2.0", "@smithy/types": "^4.15.0", "tslib": "^2.6.2" } }, "sha512-TTD6el7tvKyafkXBf7XO3jLOE+qVxOTrLjp/fEGiV3BMfUHK/LfdYlQO9YgZvzxC7kqA3H/IhJXNqQgnbgjb7A=="], "@smithy/eventstream-codec/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "@smithy/fetch-http-handler/@smithy/core": ["@smithy/core@3.35.0", "", { "dependencies": { "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-zRMhfkByhT2snNdr1si24vJitU6Cr9ix2MikUfWmkAgp4jrNP0GcKSP5YvwQ+TlI8AZXER5QOGJn3JsVtSD9/A=="], + "@smithy/fetch-http-handler/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], "@smithy/is-array-buffer/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "@smithy/middleware-compression/@smithy/types": ["@smithy/types@4.17.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-FOKpVZob9MPTn2znRzGrnsMHv7BOsKVw3XiP/cOyYLDVZ9qKp4nifIiSCuUU/fIj5Vu0UOAxCFr+qRAtG0NUkA=="], + "@smithy/middleware-compression/fflate": ["fflate@0.8.3", "", {}, "sha512-tbZNuJrLwGUp3zshBtdy4W+ORxZuIh8a5ilyIEQDC5rY1f3U20JMry0Ll3WBzU58EZKsEuJFXhb5gwv8CsPvgA=="], "@smithy/middleware-compression/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], "@smithy/node-http-handler/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "@smithy/signature-v4/@smithy/core": ["@smithy/core@3.35.2", "", { "dependencies": { "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-ejTukBuP/Pg3t9N8Ux+0zKsXeHWm7p6W3HbXFOyltKasSxZwCFmvTut7kBdZSCF3m9y1bXXyVu6p2xuMFcsTyQ=="], + "@smithy/signature-v4/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], "@smithy/types/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], @@ -5307,6 +5456,8 @@ "@tailwindcss/node/magic-string": ["magic-string@0.30.21", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" } }, "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ=="], + "@tailwindcss/node/source-map-js": ["source-map-js@1.2.1", "", {}, "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA=="], + "@tailwindcss/oxide-wasm32-wasi/@emnapi/core": ["@emnapi/core@1.11.3", "", { "dependencies": { "@emnapi/wasi-threads": "1.2.3", "tslib": "^2.4.0" }, "bundled": true }, "sha512-zLpS5asjEb7lq8jYLq37N6XKaE41DIexlY1rF/z4/tIl3wo13Sqm28fRyfIsKZD+NZ8mM5RoKkpW/rBcuoSZSg=="], "@tailwindcss/oxide-wasm32-wasi/@emnapi/runtime": ["@emnapi/runtime@1.11.1", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw=="], @@ -5319,6 +5470,10 @@ "@tailwindcss/oxide-wasm32-wasi/tslib": ["tslib@2.8.1", "", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "@testing-library/dom/aria-query": ["aria-query@5.3.0", "", { "dependencies": { "dequal": "^2.0.3" } }, "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A=="], + + "@testing-library/dom/dom-accessibility-api": ["dom-accessibility-api@0.5.16", "", {}, "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg=="], + "@trigger.dev/core/@opentelemetry/api-logs": ["@opentelemetry/api-logs@0.218.0", "", { "dependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-fmEWp5kXlGEc3i/lR698Hz41DfGyN4Tbe4g7L1AxSc7fF8Xeh/FQ9Quqpa9dVA413Q1Ad43QOLzU4JoXgbFPWw=="], "@trigger.dev/core/@opentelemetry/core": ["@opentelemetry/core@2.7.1", "", { "dependencies": { "@opentelemetry/semantic-conventions": "^1.29.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, "sha512-QAqIj32AtK6+pEVNG7EOVxHdE06RP+FM5qpiEJ4RtDcFIqKUZHYhl7/7UY5efhwmwNAg7j8QbJVBLxMerc0+gw=="], @@ -5393,16 +5548,12 @@ "ai/@opentelemetry/api": ["@opentelemetry/api@1.9.0", "", {}, "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg=="], - "ajv-formats/ajv": ["ajv@8.20.0", "", { "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2" } }, "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA=="], - "ansi-escapes/type-fest": ["type-fest@0.21.3", "", {}, "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w=="], "anymatch/picomatch": ["picomatch@2.3.2", "", {}, "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA=="], "app-builder-lib/@electron/get": ["@electron/get@3.1.0", "", { "dependencies": { "debug": "^4.1.1", "env-paths": "^2.2.0", "fs-extra": "^8.1.0", "got": "^11.8.5", "progress": "^2.0.3", "semver": "^6.2.0", "sumchecker": "^3.0.1" }, "optionalDependencies": { "global-agent": "^3.0.0" } }, "sha512-F+nKc0xW+kVbBRhFzaMgPy3KwmuNTYX1fx6+FxxoSnNgwYX6LD7AKBTWkU0MQ6IBoe7dz069CNkR673sPAgkCQ=="], - "app-builder-lib/ajv": ["ajv@8.20.0", "", { "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2" } }, "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA=="], - "app-builder-lib/ci-info": ["ci-info@4.3.1", "", {}, "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA=="], "app-builder-lib/ejs": ["ejs@3.1.10", "", { "dependencies": { "jake": "^10.8.5" }, "bin": { "ejs": "bin/cli.js" } }, "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA=="], @@ -5425,8 +5576,6 @@ "artillery/chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], - "artillery/cheerio": ["cheerio@1.2.0", "", { "dependencies": { "cheerio-select": "^2.1.0", "dom-serializer": "^2.0.0", "domhandler": "^5.0.3", "domutils": "^3.2.2", "encoding-sniffer": "^0.2.1", "htmlparser2": "^10.1.0", "parse5": "^7.3.0", "parse5-htmlparser2-tree-adapter": "^7.1.0", "parse5-parser-stream": "^7.1.2", "undici": "^7.19.0", "whatwg-mimetype": "^4.0.0" } }, "sha512-WDrybc/gKFpTYQutKIK6UvfcuxijIZfMfXaYm8NMsPQxSYvf+13fXUJ4rztGGbJcBQ/GF55gvrZ0Bc0bj/mqvg=="], - "artillery/csv-parse": ["csv-parse@4.16.3", "", {}, "sha512-cO1I/zmz4w2dcKHVvpCr7JVRu8/FymG5OEpmvsZYlccYolPBLoVGKUHgNoc4ZGkFeFlWGEDmMyBM+TTqRdW/wg=="], "artillery/https-proxy-agent": ["https-proxy-agent@5.0.1", "", { "dependencies": { "agent-base": "6", "debug": "4" } }, "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA=="], @@ -5443,8 +5592,6 @@ "axios/https-proxy-agent": ["https-proxy-agent@5.0.1", "", { "dependencies": { "agent-base": "6", "debug": "4" } }, "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA=="], - "better-auth/jose": ["jose@6.2.3", "", {}, "sha512-YYVDInQKFJfR/xa3ojUTl8c2KoTwiL1R5Wg9YCydwH0x0B9grbzlg5HC7mMjCtUJjbQ/YnGEZIhI5tCgfTb4Hw=="], - "better-call/@better-auth/utils": ["@better-auth/utils@0.5.0", "", { "dependencies": { "@noble/hashes": "^2.0.1" } }, "sha512-BL8W4EfIZFwlu0r54m3v1ztjDhu6dDe/amLTm0xybmbZaNgYUqhD3SjpAsnq0q8YD6/ki4iwIgxJNLP/N3TxiA=="], "bl/buffer": ["buffer@6.0.3", "", { "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.2.1" } }, "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA=="], @@ -5467,12 +5614,16 @@ "c12/pkg-types": ["pkg-types@2.3.1", "", { "dependencies": { "confbox": "^0.2.4", "exsolve": "^1.0.8", "pathe": "^2.0.3" } }, "sha512-y+ichcgc2LrADuhLNAx8DFjVfgz91pRxfZdI3UDhxHvcVEZsenLO+7XaU5vOp0u/7V/wZ+plyuQxtrDlZJ+yeg=="], + "c15t/zustand": ["zustand@5.0.14", "", { "peerDependencies": { "@types/react": ">=18.0.0", "immer": ">=9.0.6", "react": ">=18.0.0", "use-sync-external-store": ">=1.2.0" }, "optionalPeers": ["@types/react", "immer", "react", "use-sync-external-store"] }, "sha512-/8tAspM5LMPr28b3fwLYrtdj77ECpfZviaP75CMTnwO8ISyaE4GDIG/9rDDYq/cH9D2Xw2A2RXglLInmVBQB/g=="], + "cacheable-request/mimic-response": ["mimic-response@4.0.0", "", {}, "sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg=="], "chrome-launcher/@types/node": ["@types/node@25.9.3", "", { "dependencies": { "undici-types": ">=7.24.0 <7.24.7" } }, "sha512-603BddQMv3pUcr4U2dhujk83N2tTDVr/34wII2B6bJy6g+8WD6yUb11jszNs0gdi4PesVWl7ABt8nYMVpnLUcg=="], "cli-table3/string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], + "cli-truncate/string-width": ["string-width@8.3.0", "", { "dependencies": { "get-east-asian-width": "^1.5.0", "strip-ansi": "^7.1.2" } }, "sha512-ZbmZM0JCihQN91dWnxoipT2KOEyHqEyfRXUyjuRhW8b/xnqPDoq4gWEVApTVa9db2wN8mmoikgFBbjh71+cGeQ=="], + "cliui/strip-ansi": ["strip-ansi@7.2.0", "", { "dependencies": { "ansi-regex": "^6.2.2" } }, "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w=="], "clone-response/mimic-response": ["mimic-response@1.0.1", "", {}, "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ=="], @@ -5487,14 +5638,14 @@ "concat-stream/readable-stream": ["readable-stream@3.6.2", "", { "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", "util-deprecate": "^1.0.1" } }, "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA=="], - "conf/ajv": ["ajv@8.20.0", "", { "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2" } }, "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA=="], - "conf/env-paths": ["env-paths@3.0.0", "", {}, "sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A=="], "cross-spawn/which": ["which@2.0.2", "", { "dependencies": { "isexe": "^2.0.0" }, "bin": { "node-which": "./bin/node-which" } }, "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="], "crypto-random-string/type-fest": ["type-fest@1.4.0", "", {}, "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA=="], + "css-tree/source-map-js": ["source-map-js@1.2.1", "", {}, "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA=="], + "cytoscape-fcose/cose-base": ["cose-base@2.2.0", "", { "dependencies": { "layout-base": "^2.0.0" } }, "sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g=="], "d3-dsv/commander": ["commander@7.2.0", "", {}, "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw=="], @@ -5519,8 +5670,6 @@ "duplexify/readable-stream": ["readable-stream@3.6.2", "", { "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", "util-deprecate": "^1.0.1" } }, "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA=="], - "e2b/glob": ["glob@13.0.6", "", { "dependencies": { "minimatch": "^10.2.2", "minipass": "^7.1.3", "path-scurry": "^2.0.2" } }, "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw=="], - "echarts/tslib": ["tslib@2.3.0", "", {}, "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg=="], "electron/@types/node": ["@types/node@24.13.3", "", { "dependencies": { "undici-types": "~7.18.0" } }, "sha512-Dh8vAsV36ig5wa9OX4pXvMc9D3Veibfw2wix0CUwYODLD8nkj9UsLjASr49nPg+2eKzxhBV+v7L8pXvT4e639Q=="], @@ -5559,8 +5708,6 @@ "fetch-cookie/tough-cookie": ["tough-cookie@6.0.1", "", { "dependencies": { "tldts": "^7.0.5" } }, "sha512-LktZQb3IeoUWB9lqR5EWTHgW/VTITCXg4D21M+lvybRVdylLrRMnqaIONLVb5mav8vM19m44HIcGq4qASeu2Qw=="], - "foreground-child/signal-exit": ["signal-exit@4.1.0", "", {}, "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw=="], - "form-data/mime-types": ["mime-types@2.1.35", "", { "dependencies": { "mime-db": "1.52.0" } }, "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw=="], "framer-motion/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], @@ -5577,8 +5724,6 @@ "fumadocs-openapi/@radix-ui/react-slot": ["@radix-ui/react-slot@1.3.0", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.3" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-MojKku4U/miO8Av4Dkb+ctMAQx7JmY96LmtDQlAarCRtd7rN52QCSzBF+XAvr5S6coSVj9HEPBgHAHKEJVk/WA=="], - "fumadocs-openapi/ajv": ["ajv@8.20.0", "", { "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2" } }, "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA=="], - "fumadocs-openapi/chokidar": ["chokidar@5.0.0", "", { "dependencies": { "readdirp": "^5.0.0" } }, "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw=="], "fumadocs-ui/@radix-ui/react-collapsible": ["@radix-ui/react-collapsible@1.1.14", "", { "dependencies": { "@radix-ui/primitive": "1.1.4", "@radix-ui/react-compose-refs": "1.1.3", "@radix-ui/react-context": "1.1.4", "@radix-ui/react-id": "1.1.2", "@radix-ui/react-presence": "1.1.6", "@radix-ui/react-primitive": "2.1.6", "@radix-ui/react-use-controllable-state": "1.2.3", "@radix-ui/react-use-layout-effect": "1.1.2" }, "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" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-9bT+FvifX1FK2Mj6UEsTdyu0cN3JaA3KdfhaBao+ONrYFy/pyOy3TU1TNw7iOk1o+0hOEq67RojlUUmoFGwxyA=="], @@ -5599,9 +5744,9 @@ "gaxios/uuid": ["uuid@9.0.1", "", { "bin": { "uuid": "dist/bin/uuid" } }, "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA=="], - "gcp-metadata/gaxios": ["gaxios@7.1.3", "", { "dependencies": { "extend": "^3.0.2", "https-proxy-agent": "^7.0.1", "node-fetch": "^3.3.2", "rimraf": "^5.0.1" } }, "sha512-YGGyuEdVIjqxkxVH1pUTMY/XtmmsApXrCVv5EU25iX6inEPbV+VakJfLealkBtJN69AQmh1eGOdCl9Sm1UP6XQ=="], + "gcp-metadata/gaxios": ["gaxios@7.1.5", "", { "dependencies": { "extend": "^3.0.2", "https-proxy-agent": "^7.0.1", "node-fetch": "^3.3.2" } }, "sha512-5FZy72Rh8LhtjmvDrKkI+lVhrsQrVKVsItxMoDm5mNQE+xR0WVIIs+jzPSJgBvKVsLi24fZhXJIsNI0bihDzFg=="], - "gcp-metadata/google-logging-utils": ["google-logging-utils@1.1.3", "", {}, "sha512-eAmLkjDjAFCVXg7A1unxHsLf961m6y17QFqXqAXGj/gVkKFrEICfStRfwUlGNfeCEjNRa32JEWOUTlYXPyyKvA=="], + "gcp-metadata/google-logging-utils": ["google-logging-utils@1.1.4", "", {}, "sha512-LXxE6ND+JHhDPYtPFt3oeWrjxFPrnRZCZ4At6lpbi1ZDSAN7bmGET9s53vvARbxT93p+xpeDUbc/nCR4C+7vcw=="], "giget/citty": ["citty@0.1.6", "", { "dependencies": { "consola": "^3.2.3" } }, "sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ=="], @@ -5615,10 +5760,6 @@ "gray-matter/js-yaml": ["js-yaml@3.15.1", "", { "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-S99WuO3HlhO3XN41EtYUNl9zzXjoJx7QvmipxsJVxtCBT0YHEFy+iOJhjSvrmV12nYhWpZaM8lPHkJm0yUMbag=="], - "groq-sdk/@types/node": ["@types/node@18.19.130", "", { "dependencies": { "undici-types": "~5.26.4" } }, "sha512-GRaXQx6jGfL8sKfaIDD6OupbIHBr9jv7Jnaml9tB7l4v068PAOXqfcujMMo5PhbIs6ggR1XODELqahT2R8v0fg=="], - - "gtoken/gaxios": ["gaxios@7.1.5", "", { "dependencies": { "extend": "^3.0.2", "https-proxy-agent": "^7.0.1", "node-fetch": "^3.3.2" } }, "sha512-5FZy72Rh8LhtjmvDrKkI+lVhrsQrVKVsItxMoDm5mNQE+xR0WVIIs+jzPSJgBvKVsLi24fZhXJIsNI0bihDzFg=="], - "html-to-text/htmlparser2": ["htmlparser2@8.0.2", "", { "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.3", "domutils": "^3.0.1", "entities": "^4.4.0" } }, "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA=="], "htmlparser2/entities": ["entities@7.0.1", "", {}, "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA=="], @@ -5641,9 +5782,7 @@ "linebreak/base64-js": ["base64-js@0.0.8", "", {}, "sha512-3XSA2cR/h/73EzlXXdU6YNycmYI7+kicTxks4eJg2g39biHR84slg2+des+p7iHYhbRg/udIS4TD53WabcOUkw=="], - "lint-staged/commander": ["commander@13.1.0", "", {}, "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw=="], - - "lint-staged/yaml": ["yaml@2.9.0", "", { "bin": { "yaml": "bin.mjs" } }, "sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA=="], + "lint-staged/commander": ["commander@14.0.3", "", {}, "sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw=="], "log-update/ansi-escapes": ["ansi-escapes@7.3.0", "", { "dependencies": { "environment": "^1.0.0" } }, "sha512-BvU8nYgGQBxcmMuEeUEmNTvrMVjJNSH7RgW24vXexN4Ven6qCvy4TntnvlnwnMLTVlcRQQdbRY8NKnaIoeWDNg=="], @@ -5657,6 +5796,10 @@ "magicast/@babel/parser": ["@babel/parser@7.29.7", "", { "dependencies": { "@babel/types": "^7.29.7" }, "bin": "./bin/babel-parser.js" }, "sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg=="], + "magicast/@babel/types": ["@babel/types@7.29.7", "", { "dependencies": { "@babel/helper-string-parser": "^7.29.7", "@babel/helper-validator-identifier": "^7.29.7" } }, "sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA=="], + + "magicast/source-map-js": ["source-map-js@1.2.1", "", {}, "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA=="], + "mammoth/argparse": ["argparse@1.0.10", "", { "dependencies": { "sprintf-js": "~1.0.2" } }, "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg=="], "mdast-util-find-and-replace/escape-string-regexp": ["escape-string-regexp@5.0.0", "", {}, "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw=="], @@ -5673,8 +5816,6 @@ "node-gyp/undici": ["undici@6.28.1", "", {}, "sha512-zWpdTVD54H48CIybL0rWQ3ukpb9d23wM7eH5RtfdmeP70cWHNjtfo7P4vZX+5CoDcO53J4Pu5uXp7lNfjc6DRA=="], - "nuqs/@standard-schema/spec": ["@standard-schema/spec@1.0.0", "", {}, "sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA=="], - "nypm/tinyexec": ["tinyexec@1.2.4", "", {}, "sha512-SHf/r48b7vOrjve9PxJo3MN5v5yuyjHvdUcrQffT3WXMUfnGmHDVbC4k3sHJaJTgZCwpUplIaAo5ANtMyp3YHg=="], "open/wsl-utils": ["wsl-utils@0.1.0", "", { "dependencies": { "is-wsl": "^3.1.0" } }, "sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw=="], @@ -5699,12 +5840,16 @@ "plist/xmlbuilder": ["xmlbuilder@15.1.1", "", {}, "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg=="], + "postcss/nanoid": ["nanoid@3.3.20", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-uKdg2G3GNCKQn9byYOpxbGqrT2fGO5KRt5J/8b3pok8rT6qxGWF6hxMyJiEYtAf+FVyYuD9hRaDqX5uPFYJ4ZQ=="], + "posthog-node/@posthog/core": ["@posthog/core@1.24.4", "", { "dependencies": { "cross-spawn": "^7.0.6" } }, "sha512-S+TolwBHSSJz7WWtgaELQWQqXviSm3uf1e+qorWUts0bZcgPwWzhnmhCUZAhvn0NVpTQHDJ3epv+hHbPLl5dHg=="], "postject/commander": ["commander@9.5.0", "", {}, "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ=="], "pptxgenjs/@types/node": ["@types/node@22.19.21", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-VMeFBSCKQKmm2swI2kW51SFusDqekC6q9trBCvJ/JliDchFSuoYYKN7yVNjPthP1HKZcx3U1gI/wTcEBjEFKTA=="], + "pretty-format/ansi-styles": ["ansi-styles@5.2.0", "", {}, "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA=="], + "protobufjs/@types/node": ["@types/node@25.9.3", "", { "dependencies": { "undici-types": ">=7.24.0 <7.24.7" } }, "sha512-603BddQMv3pUcr4U2dhujk83N2tTDVr/34wII2B6bJy6g+8WD6yUb11jszNs0gdi4PesVWl7ABt8nYMVpnLUcg=="], "proxy-addr/ipaddr.js": ["ipaddr.js@1.9.1", "", {}, "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="], @@ -5715,18 +5860,14 @@ "rc/strip-json-comments": ["strip-json-comments@2.0.1", "", {}, "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ=="], - "react-email/chokidar": ["chokidar@4.0.3", "", { "dependencies": { "readdirp": "^4.0.1" } }, "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA=="], + "react-email/@babel/parser": ["@babel/parser@7.29.2", "", { "dependencies": { "@babel/types": "^7.29.0" }, "bin": "./bin/babel-parser.js" }, "sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA=="], - "react-email/commander": ["commander@13.1.0", "", {}, "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw=="], + "react-email/chokidar": ["chokidar@5.0.0", "", { "dependencies": { "readdirp": "^5.0.0" } }, "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw=="], - "react-email/glob": ["glob@13.0.6", "", { "dependencies": { "minimatch": "^10.2.2", "minipass": "^7.1.3", "path-scurry": "^2.0.2" } }, "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw=="], + "react-email/commander": ["commander@13.1.0", "", {}, "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw=="], "react-email/jiti": ["jiti@2.6.1", "", { "bin": { "jiti": "lib/jiti-cli.mjs" } }, "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ=="], - "react-email/tailwindcss": ["tailwindcss@4.3.1", "", {}, "sha512-hk+TB1m+K8CYNrP6rjQaq/Y+4Zylwpa87mLYBKCunwnnQ9p+fHb7kmSfGqyEJoxF/O6CDyABWVFEafNSYKll+Q=="], - - "react-promise-suspense/fast-deep-equal": ["fast-deep-equal@2.0.1", "", {}, "sha512-bCK/2Z4zLidyB4ReuIsvALH6w31YfAQDmXMqMx6FyfHqvBxtjC0eRumeSu4Bs3XtXwpyIywtSTrVT99BxY1f9w=="], - "react-remove-scroll/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], "react-remove-scroll-bar/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], @@ -5737,9 +5878,9 @@ "readdirp/picomatch": ["picomatch@2.3.2", "", {}, "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA=="], - "resend/@react-email/render": ["@react-email/render@1.1.2", "", { "dependencies": { "html-to-text": "^9.0.5", "prettier": "^3.5.3", "react-promise-suspense": "^0.3.4" }, "peerDependencies": { "react": "^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^18.0 || ^19.0 || ^19.0.0-rc" } }, "sha512-RnRehYN3v9gVlNMehHPHhyp2RQo7+pSkHDtXPvg3s0GbzM9SQMW4Qrf8GRNvtpLC4gsI+Wt0VatNRUFqjvevbw=="], + "resend/standardwebhooks": ["standardwebhooks@1.1.1", "", { "dependencies": { "@stablelib/base64": "^1.0.0", "fast-sha256": "^1.3.0" } }, "sha512-bCbX9ZEyFkWPsRz7Bl3NuQUJohmwGSev/yhr7vhaGPlc4AfIrspIRa6cPTBuI1ItmrTDJ4d/S2hCsfe4+vQGnQ=="], - "rimraf/glob": ["glob@10.5.0", "", { "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", "minimatch": "^9.0.4", "minipass": "^7.1.2", "package-json-from-dist": "^1.0.0", "path-scurry": "^1.11.1" }, "bin": { "glob": "dist/esm/bin.mjs" } }, "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg=="], + "rimraf/glob": ["glob@7.2.3", "", { "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" } }, "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q=="], "rolldown/@oxc-project/types": ["@oxc-project/types@0.133.0", "", {}, "sha512-KzkdCd6Uxqnf6l3HOw1xfatAlUURA0g14cvBYFyJ5SaNOQbOUvBr9PKArcPcrNIeRsBdgcUzOGrhKveVpvOIGA=="], @@ -5751,9 +5892,7 @@ "slice-ansi/ansi-styles": ["ansi-styles@6.2.3", "", {}, "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg=="], - "slice-ansi/is-fullwidth-code-point": ["is-fullwidth-code-point@4.0.0", "", {}, "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ=="], - - "socket.io-client/debug": ["debug@4.3.7", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ=="], + "slice-ansi/is-fullwidth-code-point": ["is-fullwidth-code-point@5.1.0", "", { "dependencies": { "get-east-asian-width": "^1.3.1" } }, "sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ=="], "source-map-support/source-map": ["source-map@0.6.1", "", {}, "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="], @@ -5761,7 +5900,7 @@ "string-width/strip-ansi": ["strip-ansi@7.2.0", "", { "dependencies": { "ansi-regex": "^6.2.2" } }, "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w=="], - "string-width-cjs/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], + "svix/standardwebhooks": ["standardwebhooks@1.1.1", "", { "dependencies": { "@stablelib/base64": "^1.0.0", "fast-sha256": "^1.3.0" } }, "sha512-bCbX9ZEyFkWPsRz7Bl3NuQUJohmwGSev/yhr7vhaGPlc4AfIrspIRa6cPTBuI1ItmrTDJ4d/S2hCsfe4+vQGnQ=="], "tedious/@types/node": ["@types/node@25.9.3", "", { "dependencies": { "undici-types": ">=7.24.0 <7.24.7" } }, "sha512-603BddQMv3pUcr4U2dhujk83N2tTDVr/34wII2B6bJy6g+8WD6yUb11jszNs0gdi4PesVWl7ABt8nYMVpnLUcg=="], @@ -5773,8 +5912,6 @@ "teeny-request/uuid": ["uuid@9.0.1", "", { "bin": { "uuid": "dist/bin/uuid" } }, "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA=="], - "temp/rimraf": ["rimraf@2.6.3", "", { "dependencies": { "glob": "^7.1.3" }, "bin": { "rimraf": "./bin.js" } }, "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA=="], - "temp-file/fs-extra": ["fs-extra@10.1.0", "", { "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" } }, "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ=="], "tempy/is-stream": ["is-stream@3.0.0", "", {}, "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA=="], @@ -5787,8 +5924,6 @@ "tough-cookie/tldts": ["tldts@6.1.86", "", { "dependencies": { "tldts-core": "^6.1.86" }, "bin": { "tldts": "bin/cli.js" } }, "sha512-WMi/OQ2axVTf/ykqCQgXiIct+mSQDFdH2fkwhPwgEwvJ1kSzZRiinb0zF2Xb8u4+OqPChmyI6MEu4EezNJz+FQ=="], - "twilio/axios": ["axios@1.18.0", "", { "dependencies": { "follow-redirects": "^1.16.0", "form-data": "^4.0.5", "https-proxy-agent": "^5.0.1", "proxy-from-env": "^2.1.0" } }, "sha512-E32NzpYKp++W7XRe52rHiXV2ehxmh3wbdgO7MHeFM+vqxLBYHzt0ElkiImtOBxtOmyp0yoC8C6uESVV84Y2/hw=="], - "twilio/https-proxy-agent": ["https-proxy-agent@5.0.1", "", { "dependencies": { "agent-base": "6", "debug": "4" } }, "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA=="], "twilio/xmlbuilder": ["xmlbuilder@13.0.2", "", {}, "sha512-Eux0i2QdDYKbdbA6AM6xE4m6ZTZr4G4xF9kahI2ukSEMCzwce2eX9WlTI5J3s+NU7hpasFsr8hWIONae7LluAQ=="], @@ -5797,8 +5932,6 @@ "unicode-trie/pako": ["pako@0.2.9", "", {}, "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA=="], - "unzipper/bluebird": ["bluebird@3.7.2", "", {}, "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg=="], - "unzipper/fs-extra": ["fs-extra@11.3.1", "", { "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" } }, "sha512-eXvGGwZ5CL17ZSwHWd3bbgk7UUpF6IFHtP57NYYakPvHOs8GDgDe5KJI36jIJzDkJ6eJjuzRA8eBQb6SkKue0g=="], "use-callback-ref/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], @@ -5809,6 +5942,8 @@ "vite/picomatch": ["picomatch@4.0.4", "", {}, "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A=="], + "vitest/tinyexec": ["tinyexec@1.3.1", "", {}, "sha512-GCvB3aoys96IuDFBMcTB46JOR6mdMtAToqwiW8JlWhsoh1mhHi/xn9ss/Dg7N555GiJyEt2qzoG/NHCwM6h1EA=="], + "webcrypto-core/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], "whatwg-encoding/iconv-lite": ["iconv-lite@0.6.3", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" } }, "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw=="], @@ -5823,8 +5958,6 @@ "wrap-ansi/strip-ansi": ["strip-ansi@7.2.0", "", { "dependencies": { "ansi-regex": "^6.2.2" } }, "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w=="], - "wrap-ansi-cjs/string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], - "wsl-utils/is-wsl": ["is-wsl@3.1.1", "", { "dependencies": { "is-inside-container": "^1.0.0" } }, "sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw=="], "xml-crypto/xpath": ["xpath@0.0.33", "", {}, "sha512-NNXnzrkDrAzalLhIUc01jO2mOzXGXh1JwPgkihcLLzw98c0WgYDmmjSh1Kl3wzaxSVWMuA+fe0WTWOBDWCBmNA=="], @@ -5837,81 +5970,89 @@ "@aws-crypto/util/@aws-sdk/types/@smithy/types": ["@smithy/types@4.15.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-Z5TAOxygoFvybJV3igo5SloFflSokHx2hu1eFA+DxDTcn+FtKxUSui+rbTRG1pAafMA888Z3MVvCWUuvCrTXjg=="], - "@better-auth/sso/tldts/tldts-core": ["tldts-core@6.1.86", "", {}, "sha512-Je6p7pkk+KMzMv2XXKmAE3McmolOQFdxkKw0R8EYNr7sELW46JqnNeTX8ybPiQgvg1ymCoF8LXs5fzFaZvJPTA=="], + "@aws-sdk/client-ec2/@aws-sdk/core/@aws-sdk/xml-builder": ["@aws-sdk/xml-builder@3.972.40", "", { "dependencies": { "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-wlFmCIGUlwF4zx/kncw+bmxTQh1HeSJq4mYV/V5cZUSJadDP3kXvGW8Rn21cimj/7y9ju+47oYWXi97vF7czaA=="], - "@browserbasehq/sdk/@types/node/undici-types": ["undici-types@5.26.5", "", {}, "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA=="], + "@aws-sdk/client-ec2/@aws-sdk/core/@smithy/signature-v4": ["@smithy/signature-v4@5.7.3", "", { "dependencies": { "@smithy/core": "^3.33.3", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-7ImGm+FkHRLcBaRttIAMZ6bzJZWb2cJGoYjq46F2UjycujWzrL9GEN9h4w7eQyXJYnltrUhxbbieBAIRrdqpow=="], - "@browserbasehq/stagehand/@anthropic-ai/sdk/@types/node": ["@types/node@18.19.130", "", { "dependencies": { "undici-types": "~5.26.4" } }, "sha512-GRaXQx6jGfL8sKfaIDD6OupbIHBr9jv7Jnaml9tB7l4v068PAOXqfcujMMo5PhbIs6ggR1XODELqahT2R8v0fg=="], + "@aws-sdk/client-ecs/@aws-sdk/core/@aws-sdk/xml-builder": ["@aws-sdk/xml-builder@3.972.40", "", { "dependencies": { "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-wlFmCIGUlwF4zx/kncw+bmxTQh1HeSJq4mYV/V5cZUSJadDP3kXvGW8Rn21cimj/7y9ju+47oYWXi97vF7czaA=="], - "@browserbasehq/stagehand/openai/@types/node": ["@types/node@18.19.130", "", { "dependencies": { "undici-types": "~5.26.4" } }, "sha512-GRaXQx6jGfL8sKfaIDD6OupbIHBr9jv7Jnaml9tB7l4v068PAOXqfcujMMo5PhbIs6ggR1XODELqahT2R8v0fg=="], + "@aws-sdk/client-ecs/@aws-sdk/core/@smithy/signature-v4": ["@smithy/signature-v4@5.7.3", "", { "dependencies": { "@smithy/core": "^3.33.3", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-7ImGm+FkHRLcBaRttIAMZ6bzJZWb2cJGoYjq46F2UjycujWzrL9GEN9h4w7eQyXJYnltrUhxbbieBAIRrdqpow=="], - "@cerebras/cerebras_cloud_sdk/@types/node/undici-types": ["undici-types@5.26.5", "", {}, "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA=="], + "@aws-sdk/credential-provider-env/@aws-sdk/core/@aws-sdk/xml-builder": ["@aws-sdk/xml-builder@3.972.40", "", { "dependencies": { "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-wlFmCIGUlwF4zx/kncw+bmxTQh1HeSJq4mYV/V5cZUSJadDP3kXvGW8Rn21cimj/7y9ju+47oYWXi97vF7czaA=="], - "@datadog/datadog-api-client/@types/node/undici-types": ["undici-types@7.24.6", "", {}, "sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg=="], + "@aws-sdk/credential-provider-env/@aws-sdk/core/@smithy/signature-v4": ["@smithy/signature-v4@5.7.3", "", { "dependencies": { "@smithy/core": "^3.33.3", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-7ImGm+FkHRLcBaRttIAMZ6bzJZWb2cJGoYjq46F2UjycujWzrL9GEN9h4w7eQyXJYnltrUhxbbieBAIRrdqpow=="], - "@earendil-works/chord/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.28.2", "", { "os": "aix", "cpu": "ppc64" }, "sha512-XExcO+dvLKvVtNTibSTBej1NCAbaGhWn9Ww1ZPx80qsahhPFe/8jgWP0IchNe0F3HwkU7n8ejhH8bjonqht8mQ=="], + "@aws-sdk/credential-provider-http/@aws-sdk/core/@aws-sdk/xml-builder": ["@aws-sdk/xml-builder@3.972.40", "", { "dependencies": { "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-wlFmCIGUlwF4zx/kncw+bmxTQh1HeSJq4mYV/V5cZUSJadDP3kXvGW8Rn21cimj/7y9ju+47oYWXi97vF7czaA=="], - "@earendil-works/chord/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.28.2", "", { "os": "android", "cpu": "arm" }, "sha512-kXXoiPVVGQcnIYGOeaovwOURpniDBpSq4A03qkQ+BMQqtGG6HYap3xne9C1O1yo4TR3qxlCX5IqqmX6fFo2Lqg=="], + "@aws-sdk/credential-provider-http/@aws-sdk/core/@smithy/signature-v4": ["@smithy/signature-v4@5.7.3", "", { "dependencies": { "@smithy/core": "^3.33.3", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-7ImGm+FkHRLcBaRttIAMZ6bzJZWb2cJGoYjq46F2UjycujWzrL9GEN9h4w7eQyXJYnltrUhxbbieBAIRrdqpow=="], - "@earendil-works/chord/esbuild/@esbuild/android-arm64": ["@esbuild/android-arm64@0.28.2", "", { "os": "android", "cpu": "arm64" }, "sha512-5YfKeeI8qWfBZIX+u2xZC3Zlb3Os/gLS2sbEKM+I4ZOcsWmHS2WLysCcQZDAFRslDUU5Oiq44gf6PYN1vGwG5A=="], + "@aws-sdk/credential-provider-ini/@aws-sdk/core/@aws-sdk/xml-builder": ["@aws-sdk/xml-builder@3.972.40", "", { "dependencies": { "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-wlFmCIGUlwF4zx/kncw+bmxTQh1HeSJq4mYV/V5cZUSJadDP3kXvGW8Rn21cimj/7y9ju+47oYWXi97vF7czaA=="], - "@earendil-works/chord/esbuild/@esbuild/android-x64": ["@esbuild/android-x64@0.28.2", "", { "os": "android", "cpu": "x64" }, "sha512-O387ite7SzUyCcy3JQX4P4bLtEA7bLLkx+esve5JHnyYfNTxcVpXZo9jhdB0lTKN44gztELTdU7nS8Nr16Fs1Q=="], + "@aws-sdk/credential-provider-ini/@aws-sdk/core/@smithy/signature-v4": ["@smithy/signature-v4@5.7.3", "", { "dependencies": { "@smithy/core": "^3.33.3", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-7ImGm+FkHRLcBaRttIAMZ6bzJZWb2cJGoYjq46F2UjycujWzrL9GEN9h4w7eQyXJYnltrUhxbbieBAIRrdqpow=="], - "@earendil-works/chord/esbuild/@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.28.2", "", { "os": "darwin", "cpu": "arm64" }, "sha512-n4KqkOQrraxHJcgjM1RvwbigfQKIKJVpM7xp+KsxiyUSrRdIXnt73VhrPAx0fV44hgfmIVKjxMN9J1t5jySVkw=="], + "@aws-sdk/credential-provider-login/@aws-sdk/core/@aws-sdk/xml-builder": ["@aws-sdk/xml-builder@3.972.40", "", { "dependencies": { "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-wlFmCIGUlwF4zx/kncw+bmxTQh1HeSJq4mYV/V5cZUSJadDP3kXvGW8Rn21cimj/7y9ju+47oYWXi97vF7czaA=="], - "@earendil-works/chord/esbuild/@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.28.2", "", { "os": "darwin", "cpu": "x64" }, "sha512-uq6suIWYP37qzGddBKPw5QEQPi6HiLGsO7UmkpfyaYNQ3D+rN6w6WfwH+nuqcGXWvawGwxOEroO4YGnFh95azw=="], + "@aws-sdk/credential-provider-login/@aws-sdk/core/@smithy/signature-v4": ["@smithy/signature-v4@5.7.3", "", { "dependencies": { "@smithy/core": "^3.33.3", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-7ImGm+FkHRLcBaRttIAMZ6bzJZWb2cJGoYjq46F2UjycujWzrL9GEN9h4w7eQyXJYnltrUhxbbieBAIRrdqpow=="], - "@earendil-works/chord/esbuild/@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.28.2", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-n+I0BTSRIoy+d6RPKnEVwql5UwBJolytvY4mAOIEJorKlqgPII8ix6slVVrfZ5Tnj7glIZvloylbB/EJPMWEXw=="], + "@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-ini/@aws-sdk/credential-provider-login": ["@aws-sdk/credential-provider-login@3.972.81", "", { "dependencies": { "@aws-sdk/core": "^3.978.3", "@aws-sdk/nested-clients": "^3.997.48", "@aws-sdk/types": "^3.974.6", "@smithy/core": "^3.35.2", "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-CeQHSbE2CnVdaHIJ/NayRaCecIER+Pm9faUPkmRATO54rCoMTEPSbVieGHzEwvm1dZM2HIs6qQZCznhayNTWJQ=="], - "@earendil-works/chord/esbuild/@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.28.2", "", { "os": "freebsd", "cpu": "x64" }, "sha512-78XJTJkvPs0kz2w61301PJjXl4g7q3JqiYMZ/M/yVI73EHBrCRTgkhu9oqG7vPqq+a/yadEW8aD+agKlk5xrmg=="], + "@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-ini/@aws-sdk/nested-clients": ["@aws-sdk/nested-clients@3.997.48", "", { "dependencies": { "@aws-sdk/core": "^3.978.3", "@aws-sdk/signature-v4-multi-region": "^3.996.48", "@aws-sdk/types": "^3.974.6", "@smithy/core": "^3.35.2", "@smithy/fetch-http-handler": "^5.8.0", "@smithy/node-http-handler": "^4.12.1", "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-B01jdXJtAW/XOiUzGdI2mz67WyEHbGEc9X6Euzw3bjLAa+txTqdZDER4X2FsIEcXzV2ABqudVZ5thali8tCCzQ=="], - "@earendil-works/chord/esbuild/@esbuild/linux-arm": ["@esbuild/linux-arm@0.28.2", "", { "os": "linux", "cpu": "arm" }, "sha512-XlDnu2q5yoqems+xay6wSAcg9DDD7K9RLKZEBOMZm3ckNpJBvOX20tSfby8KfrrhINDyv9V2YVZKY/SpoGJI8w=="], + "@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-sso/@aws-sdk/nested-clients": ["@aws-sdk/nested-clients@3.997.48", "", { "dependencies": { "@aws-sdk/core": "^3.978.3", "@aws-sdk/signature-v4-multi-region": "^3.996.48", "@aws-sdk/types": "^3.974.6", "@smithy/core": "^3.35.2", "@smithy/fetch-http-handler": "^5.8.0", "@smithy/node-http-handler": "^4.12.1", "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-B01jdXJtAW/XOiUzGdI2mz67WyEHbGEc9X6Euzw3bjLAa+txTqdZDER4X2FsIEcXzV2ABqudVZ5thali8tCCzQ=="], - "@earendil-works/chord/esbuild/@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.28.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-pW4AC0P3it8c7do9MVM4p51FzHzdM/TZrerurgRcHJ2WTa1VQ1CIq18xncfpBJw4ojkiZZrKW2yIBWBP92j6Ug=="], + "@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-web-identity/@aws-sdk/nested-clients": ["@aws-sdk/nested-clients@3.997.48", "", { "dependencies": { "@aws-sdk/core": "^3.978.3", "@aws-sdk/signature-v4-multi-region": "^3.996.48", "@aws-sdk/types": "^3.974.6", "@smithy/core": "^3.35.2", "@smithy/fetch-http-handler": "^5.8.0", "@smithy/node-http-handler": "^4.12.1", "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-B01jdXJtAW/XOiUzGdI2mz67WyEHbGEc9X6Euzw3bjLAa+txTqdZDER4X2FsIEcXzV2ABqudVZ5thali8tCCzQ=="], - "@earendil-works/chord/esbuild/@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.28.2", "", { "os": "linux", "cpu": "ia32" }, "sha512-CYbnj78HsIeA+DhgUKgFCfvNsTHFhMMrinUrMZpDXJXKN8T3XViTZ/+wtHeVxEWY8ewSzTFN+nRmSwO2tZaLUQ=="], + "@aws-sdk/credential-provider-process/@aws-sdk/core/@aws-sdk/xml-builder": ["@aws-sdk/xml-builder@3.972.40", "", { "dependencies": { "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-wlFmCIGUlwF4zx/kncw+bmxTQh1HeSJq4mYV/V5cZUSJadDP3kXvGW8Rn21cimj/7y9ju+47oYWXi97vF7czaA=="], - "@earendil-works/chord/esbuild/@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.28.2", "", { "os": "linux", "cpu": "none" }, "sha512-buwkd8nsph4R+ajRvw0qM5Hja/TXQow3ptzWO2EbG/cqcIkHloRrdlBtQlshyYGTNFvfkfJ5tpPLVkY4DtsPfQ=="], + "@aws-sdk/credential-provider-process/@aws-sdk/core/@smithy/signature-v4": ["@smithy/signature-v4@5.7.3", "", { "dependencies": { "@smithy/core": "^3.33.3", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-7ImGm+FkHRLcBaRttIAMZ6bzJZWb2cJGoYjq46F2UjycujWzrL9GEN9h4w7eQyXJYnltrUhxbbieBAIRrdqpow=="], - "@earendil-works/chord/esbuild/@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.28.2", "", { "os": "linux", "cpu": "none" }, "sha512-ZVykbDyk7519VwiNb9Lcj9m8XM6v5V9uKPvrEMkkEedVewf+0itkhahp4HDpgERXhwLRpWFypsGbG/J8s0QjJA=="], + "@aws-sdk/credential-provider-sso/@aws-sdk/core/@aws-sdk/xml-builder": ["@aws-sdk/xml-builder@3.972.40", "", { "dependencies": { "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-wlFmCIGUlwF4zx/kncw+bmxTQh1HeSJq4mYV/V5cZUSJadDP3kXvGW8Rn21cimj/7y9ju+47oYWXi97vF7czaA=="], - "@earendil-works/chord/esbuild/@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.28.2", "", { "os": "linux", "cpu": "ppc64" }, "sha512-CAXl+Dtd9UUuJd8pKKdwh6MLm3MUMiqMPmhZ3tTSXPqfyQ3vDl6R5hZdZ/kYojK4ofXtdfSv1tFq8XzWx3heNQ=="], + "@aws-sdk/credential-provider-sso/@aws-sdk/core/@smithy/signature-v4": ["@smithy/signature-v4@5.7.3", "", { "dependencies": { "@smithy/core": "^3.33.3", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-7ImGm+FkHRLcBaRttIAMZ6bzJZWb2cJGoYjq46F2UjycujWzrL9GEN9h4w7eQyXJYnltrUhxbbieBAIRrdqpow=="], - "@earendil-works/chord/esbuild/@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.28.2", "", { "os": "linux", "cpu": "none" }, "sha512-GeXCej4IQtU1B+QlDV8W/RRvbzI3O/Stss+/bCXv4lZls5WGRtu2a+3JkA3i4qIUlMXpcHebWpF8AkJhATowuA=="], + "@aws-sdk/credential-provider-web-identity/@aws-sdk/core/@aws-sdk/xml-builder": ["@aws-sdk/xml-builder@3.972.40", "", { "dependencies": { "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-wlFmCIGUlwF4zx/kncw+bmxTQh1HeSJq4mYV/V5cZUSJadDP3kXvGW8Rn21cimj/7y9ju+47oYWXi97vF7czaA=="], - "@earendil-works/chord/esbuild/@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.28.2", "", { "os": "linux", "cpu": "s390x" }, "sha512-3H1weTYZPxt/WOhByszQZybS9w5lKzUn1FDMsgEChbHWQwHYQQRfBxgCcZvPhjHfKyJjIievvMmEUawJrdY9Dg=="], + "@aws-sdk/credential-provider-web-identity/@aws-sdk/core/@smithy/signature-v4": ["@smithy/signature-v4@5.7.3", "", { "dependencies": { "@smithy/core": "^3.33.3", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-7ImGm+FkHRLcBaRttIAMZ6bzJZWb2cJGoYjq46F2UjycujWzrL9GEN9h4w7eQyXJYnltrUhxbbieBAIRrdqpow=="], - "@earendil-works/chord/esbuild/@esbuild/linux-x64": ["@esbuild/linux-x64@0.28.2", "", { "os": "linux", "cpu": "x64" }, "sha512-4xTZr1FUmSoQW4XIWmit3tzQrUTZM+N3P0XV8xROKYF50XfI7xeO90+1bZvNwxIufQ9hDQVRJH5YhgPVF8A/HQ=="], + "@aws-sdk/credential-providers/@aws-sdk/core/@aws-sdk/xml-builder": ["@aws-sdk/xml-builder@3.972.40", "", { "dependencies": { "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-wlFmCIGUlwF4zx/kncw+bmxTQh1HeSJq4mYV/V5cZUSJadDP3kXvGW8Rn21cimj/7y9ju+47oYWXi97vF7czaA=="], - "@earendil-works/chord/esbuild/@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.28.2", "", { "os": "none", "cpu": "arm64" }, "sha512-sSATRjPeDBg3pdgHoQfoYBob11Kk1FGa9lui5RIHZCoCkJa9QKlvl3/vKz2usCmYYjs7ymJR/2Nnsqe+Hjt5nw=="], + "@aws-sdk/credential-providers/@aws-sdk/core/@smithy/signature-v4": ["@smithy/signature-v4@5.7.3", "", { "dependencies": { "@smithy/core": "^3.33.3", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-7ImGm+FkHRLcBaRttIAMZ6bzJZWb2cJGoYjq46F2UjycujWzrL9GEN9h4w7eQyXJYnltrUhxbbieBAIRrdqpow=="], - "@earendil-works/chord/esbuild/@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.28.2", "", { "os": "none", "cpu": "x64" }, "sha512-lqnzCV+mM0gIADaKihiCg6ifgfU2L3h5E33rNQBN1Y4MaVGnzryzmvvf7UHxprpQdE8hpqLolJ9Rl+SkIRDpyw=="], + "@aws-sdk/middleware-sdk-ec2/@aws-sdk/core/@aws-sdk/xml-builder": ["@aws-sdk/xml-builder@3.972.40", "", { "dependencies": { "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-wlFmCIGUlwF4zx/kncw+bmxTQh1HeSJq4mYV/V5cZUSJadDP3kXvGW8Rn21cimj/7y9ju+47oYWXi97vF7czaA=="], - "@earendil-works/chord/esbuild/@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.28.2", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-AL2qJILH7lNjrDmCQDvdxMfAUIv8KMNZOvrwAQ8i8//ntL9FflhOyMJ8OZSMBb8/AWXe3/5v5S20y3zCoZWKoQ=="], + "@aws-sdk/nested-clients/@aws-sdk/core/@aws-sdk/xml-builder": ["@aws-sdk/xml-builder@3.972.40", "", { "dependencies": { "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-wlFmCIGUlwF4zx/kncw+bmxTQh1HeSJq4mYV/V5cZUSJadDP3kXvGW8Rn21cimj/7y9ju+47oYWXi97vF7czaA=="], - "@earendil-works/chord/esbuild/@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.28.2", "", { "os": "openbsd", "cpu": "x64" }, "sha512-QtiuPytchRyC4rwUKhexJdQKvDuZ6hWloi3igqPQNUJCS1/v9EiO3UTOXR6A3FoMo4fnAKbWJdqaIwhOzh8qEw=="], + "@aws-sdk/nested-clients/@aws-sdk/core/@smithy/signature-v4": ["@smithy/signature-v4@5.7.3", "", { "dependencies": { "@smithy/core": "^3.33.3", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-7ImGm+FkHRLcBaRttIAMZ6bzJZWb2cJGoYjq46F2UjycujWzrL9GEN9h4w7eQyXJYnltrUhxbbieBAIRrdqpow=="], - "@earendil-works/chord/esbuild/@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.28.2", "", { "os": "none", "cpu": "arm64" }, "sha512-WkhYDmpTjLvGlScA1rwjRUmhl4k8oXR3cIbtqWmELgU/dFeHHlEllxDvdWcNJV9rbzCexB5vz8gtNewWLgCT7Q=="], + "@aws-sdk/nested-clients/@aws-sdk/signature-v4-multi-region/@smithy/signature-v4": ["@smithy/signature-v4@5.7.3", "", { "dependencies": { "@smithy/core": "^3.33.3", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-7ImGm+FkHRLcBaRttIAMZ6bzJZWb2cJGoYjq46F2UjycujWzrL9GEN9h4w7eQyXJYnltrUhxbbieBAIRrdqpow=="], - "@earendil-works/chord/esbuild/@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.28.2", "", { "os": "sunos", "cpu": "x64" }, "sha512-GPMSkTOtMnv2U2F8gxe4Io6qmVs+YKyp832Etqqxr0hFngmXQ3rzwytelm3GIn7T4VviRUlf3sOgBOiTdvaf7g=="], + "@better-auth/sso/tldts/tldts-core": ["tldts-core@6.1.86", "", {}, "sha512-Je6p7pkk+KMzMv2XXKmAE3McmolOQFdxkKw0R8EYNr7sELW46JqnNeTX8ybPiQgvg1ymCoF8LXs5fzFaZvJPTA=="], - "@earendil-works/chord/esbuild/@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.28.2", "", { "os": "win32", "cpu": "arm64" }, "sha512-PIhhEkE9uPBleRBrQEJpUn7MBnibZzbGzYWPmY3x+YoVg/95zbjB4CxPPOQ8l5tYYM4mMaCthF8/1DIfBQQyWQ=="], + "@browserbasehq/sdk/@types/node/undici-types": ["undici-types@5.26.5", "", {}, "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA=="], - "@earendil-works/chord/esbuild/@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.28.2", "", { "os": "win32", "cpu": "ia32" }, "sha512-YmJbfTlvU7Sdn9BB+4PRES4oB6pxgS37MAONj+hBr/cpXS1aBPKXxNnDbu+QCWPj0o9dgyxeq79g6c5P8KeuYA=="], + "@browserbasehq/stagehand/@anthropic-ai/sdk/@types/node": ["@types/node@18.19.130", "", { "dependencies": { "undici-types": "~5.26.4" } }, "sha512-GRaXQx6jGfL8sKfaIDD6OupbIHBr9jv7Jnaml9tB7l4v068PAOXqfcujMMo5PhbIs6ggR1XODELqahT2R8v0fg=="], + + "@browserbasehq/stagehand/openai/@types/node": ["@types/node@18.19.130", "", { "dependencies": { "undici-types": "~5.26.4" } }, "sha512-GRaXQx6jGfL8sKfaIDD6OupbIHBr9jv7Jnaml9tB7l4v068PAOXqfcujMMo5PhbIs6ggR1XODELqahT2R8v0fg=="], - "@earendil-works/chord/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.28.2", "", { "os": "win32", "cpu": "x64" }, "sha512-5ebpxr3nWMzrL/rnUI755Jkuee0bHL/Gq0WTF9lvcpv73wAp5eu8MfBUgWK9bhWvZjj7yX8etf/8tI8Ney695g=="], + "@cerebras/cerebras_cloud_sdk/@types/node/undici-types": ["undici-types@5.26.5", "", {}, "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA=="], + + "@earendil-works/pi-ai/@aws-sdk/client-bedrock-runtime/@aws-sdk/core": ["@aws-sdk/core@3.977.9", "", { "dependencies": { "@aws-sdk/types": "^3.974.5", "@aws-sdk/xml-builder": "^3.972.40", "@aws/lambda-invoke-store": "^0.3.0", "@smithy/core": "^3.33.3", "@smithy/signature-v4": "^5.6.12", "@smithy/types": "^4.17.2", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "sha512-reqPFEQrZxDZpeGj4PFMepBeR5LGYHRqq/L0motTzgFkCRBA4rFdaVXDSLYyGHhxVz7sT2PDnPN9CluGSfgyJA=="], "@earendil-works/pi-ai/@aws-sdk/client-bedrock-runtime/@aws-sdk/credential-provider-node": ["@aws-sdk/credential-provider-node@3.972.84", "", { "dependencies": { "@aws-sdk/credential-provider-env": "^3.972.72", "@aws-sdk/credential-provider-http": "^3.972.74", "@aws-sdk/credential-provider-ini": "^3.973.17", "@aws-sdk/credential-provider-process": "^3.972.72", "@aws-sdk/credential-provider-sso": "^3.973.16", "@aws-sdk/credential-provider-web-identity": "^3.972.78", "@aws-sdk/types": "^3.974.6", "@smithy/core": "^3.35.0", "@smithy/credential-provider-imds": "^4.5.2", "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-oHt854odINVwzwsh+c5x69j0ajm4DbqqqVJ+O1ECsCIZeMDAbzFpXItaqP7UZstJj/ATdTk/KFSH0LaNAgV+kA=="], - "@earendil-works/pi-ai/@aws-sdk/client-bedrock-runtime/@aws-sdk/token-providers": ["@aws-sdk/token-providers@3.1127.0", "", { "dependencies": { "@aws-sdk/core": "^3.977.9", "@aws-sdk/nested-clients": "^3.997.44", "@aws-sdk/types": "^3.974.5", "@smithy/core": "^3.33.3", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-Dv2TMWBshJ+tF6ahs2Sy5bh4Iabsd4GAQqVvE9XZmYmnoaVbpS2QKIKE/HRacc7bTtbjEEvP+laGzHvHlf1CiQ=="], + "@earendil-works/pi-ai/@aws-sdk/client-bedrock-runtime/@aws-sdk/eventstream-handler-node": ["@aws-sdk/eventstream-handler-node@3.972.34", "", { "dependencies": { "@aws-sdk/types": "^3.974.5", "@smithy/core": "^3.33.3", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-cTeVzpu1xEAkryTZBYhGwnQ6gOGyp8ZYZvmn0Sg/nI/ABmy/CRHHxPDJDUi9PxwxUtGGaatvfRUB3FCgT/rSWw=="], - "@earendil-works/pi-ai/@aws-sdk/client-bedrock-runtime/@smithy/types": ["@smithy/types@4.19.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-r7jh49VJxGerfAcTQA6gXcKc+98zOp/tqRwzYjgOE+iSQsP6cEU1hq2QzbuipmP68QtYdY9wKEhiCQZIzHgZ4Q=="], + "@earendil-works/pi-ai/@aws-sdk/client-bedrock-runtime/@aws-sdk/middleware-eventstream": ["@aws-sdk/middleware-eventstream@3.972.29", "", { "dependencies": { "@aws-sdk/types": "^3.974.5", "@smithy/core": "^3.33.3", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-dlRzHCgyB8W6hLuDC5pcT5q+ziPt00n4QGgGBE17ucLVU4zMa6lsbuUdQ2Pm75Z5VA8GF+R/+SgrRcaTdIzSIQ=="], - "@earendil-works/pi-ai/@aws-sdk/client-bedrock-runtime/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "@earendil-works/pi-ai/@aws-sdk/client-bedrock-runtime/@aws-sdk/middleware-websocket": ["@aws-sdk/middleware-websocket@3.972.52", "", { "dependencies": { "@aws-sdk/core": "^3.977.9", "@aws-sdk/types": "^3.974.5", "@smithy/core": "^3.33.3", "@smithy/fetch-http-handler": "^5.7.2", "@smithy/signature-v4": "^5.6.12", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-vsPPM+nMbKJlUCFU+eoGZbdxdxDIAX9LbpjSXaR5Ufpmqgp8TdYQnoExhLu4T3umW/JIIPny1ydbhWidZZYokQ=="], + + "@earendil-works/pi-ai/@aws-sdk/client-bedrock-runtime/@aws-sdk/token-providers": ["@aws-sdk/token-providers@3.1127.0", "", { "dependencies": { "@aws-sdk/core": "^3.977.9", "@aws-sdk/nested-clients": "^3.997.44", "@aws-sdk/types": "^3.974.5", "@smithy/core": "^3.33.3", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-Dv2TMWBshJ+tF6ahs2Sy5bh4Iabsd4GAQqVvE9XZmYmnoaVbpS2QKIKE/HRacc7bTtbjEEvP+laGzHvHlf1CiQ=="], + + "@earendil-works/pi-ai/@aws-sdk/client-bedrock-runtime/@aws-sdk/types": ["@aws-sdk/types@3.974.5", "", { "dependencies": { "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-LkwLL2BLbC6wNNm4JaH9mbEqBMdOZCct6VAYqhdN4U1xrWM+fUJQEfbHwQgDypapOWTRtlk25akb5afM0P8CIQ=="], - "@earendil-works/pi-ai/@smithy/node-http-handler/@smithy/types": ["@smithy/types@4.19.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-r7jh49VJxGerfAcTQA6gXcKc+98zOp/tqRwzYjgOE+iSQsP6cEU1hq2QzbuipmP68QtYdY9wKEhiCQZIzHgZ4Q=="], + "@earendil-works/pi-ai/@aws-sdk/client-bedrock-runtime/@smithy/fetch-http-handler": ["@smithy/fetch-http-handler@5.7.2", "", { "dependencies": { "@smithy/core": "^3.33.2", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-nZyWTmSpJEXl6VtWVMBJve/7x12DZu6sIX1z1a+ZMaHlQQRs9Zpu6NbTe/gmxYXVRpkjxyDYpZ5gx2IM6f/Wkw=="], - "@earendil-works/pi-ai/@smithy/node-http-handler/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "@earendil-works/pi-ai/@aws-sdk/client-bedrock-runtime/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], "@earendil-works/pi-ai/http-proxy-agent/agent-base": ["agent-base@9.0.0", "", {}, "sha512-TQf59BsZnytt8GdJKLPfUZ54g/iaUL2OWDSFCCvMOhsHduDQxO8xC4PNeyIkVcA5KwL2phPSv0douC0fgWzmnA=="], @@ -5965,8 +6106,6 @@ "@google-cloud/storage/google-auth-library/gcp-metadata": ["gcp-metadata@6.1.1", "", { "dependencies": { "gaxios": "^6.1.1", "google-logging-utils": "^0.0.2", "json-bigint": "^1.0.0" } }, "sha512-a4tiq7E0/5fTjxPAaH4jpjkSv/uCaU2p5KC6HVGrvl0cDjA8iBZv4vv1gyzlmK0ZUKqwpOyQMKzZQe3lTit77A=="], - "@google-cloud/storage/google-auth-library/gtoken": ["gtoken@7.1.0", "", { "dependencies": { "gaxios": "^6.0.0", "jws": "^4.0.0" } }, "sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw=="], - "@grpc/proto-loader/yargs/cliui": ["cliui@8.0.1", "", { "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", "wrap-ansi": "^7.0.0" } }, "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ=="], "@grpc/proto-loader/yargs/string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], @@ -5977,17 +6116,11 @@ "@inquirer/core/wrap-ansi/string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], - "@isaacs/cliui/string-width/emoji-regex": ["emoji-regex@9.2.2", "", {}, "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg=="], - - "@isaacs/cliui/strip-ansi/ansi-regex": ["ansi-regex@6.2.2", "", {}, "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg=="], - - "@isaacs/cliui/wrap-ansi/ansi-styles": ["ansi-styles@6.2.3", "", {}, "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg=="], - "@oclif/core/string-width/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], - "@octokit/plugin-paginate-rest/@octokit/types/@octokit/openapi-types": ["@octokit/openapi-types@24.2.0", "", {}, "sha512-9sIH3nSUttelJSXUrmGzl7QUBFul0/mB8HRYl3fOlgHbIWG+WnYDXU3v/2zMtAvuzZ/ed00Ei6on975FhBfzrg=="], + "@octokit/plugin-paginate-rest/@octokit/types/@octokit/openapi-types": ["@octokit/openapi-types@27.0.0", "", {}, "sha512-whrdktVs1h6gtR+09+QsNk2+FO+49j6ga1c55YZudfEG+oKJVvJLQi3zkOm5JjiUXAagWK2tI2kTGKJ2Ys7MGA=="], - "@octokit/plugin-rest-endpoint-methods/@octokit/types/@octokit/openapi-types": ["@octokit/openapi-types@24.2.0", "", {}, "sha512-9sIH3nSUttelJSXUrmGzl7QUBFul0/mB8HRYl3fOlgHbIWG+WnYDXU3v/2zMtAvuzZ/ed00Ei6on975FhBfzrg=="], + "@octokit/plugin-rest-endpoint-methods/@octokit/types/@octokit/openapi-types": ["@octokit/openapi-types@27.0.0", "", {}, "sha512-whrdktVs1h6gtR+09+QsNk2+FO+49j6ga1c55YZudfEG+oKJVvJLQi3zkOm5JjiUXAagWK2tI2kTGKJ2Ys7MGA=="], "@radix-ui/react-accordion/@radix-ui/react-collapsible/@radix-ui/react-presence": ["@radix-ui/react-presence@1.1.6", "", { "dependencies": { "@radix-ui/react-use-layout-effect": "1.1.2" }, "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" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-zdTk4PlUO0E18HnZ3wYbW0KkJJxWCdiNYp6g6X1PtONFhxVkg01vliTJAmwIszU6mHiyBOoW9P0rAugl5/hULQ=="], @@ -6019,18 +6152,6 @@ "@rolldown/binding-wasm32-wasi/@napi-rs/wasm-runtime/@tybys/wasm-util": ["@tybys/wasm-util@0.10.2", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg=="], - "@sim/emcn/@radix-ui/react-avatar/@radix-ui/react-context": ["@radix-ui/react-context@1.1.2", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA=="], - - "@sim/emcn/@radix-ui/react-avatar/@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.1.3", "", { "dependencies": { "@radix-ui/react-slot": "1.2.3" }, "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" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ=="], - - "@sim/emcn/@radix-ui/react-avatar/@radix-ui/react-use-callback-ref": ["@radix-ui/react-use-callback-ref@1.1.1", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg=="], - - "@sim/emcn/@radix-ui/react-avatar/@radix-ui/react-use-is-hydrated": ["@radix-ui/react-use-is-hydrated@0.1.0", "", { "dependencies": { "use-sync-external-store": "^1.5.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-U+UORVEq+cTnRIaostJv9AGdV3G6Y+zbVd+12e18jQ5A3c0xL03IhnHuiU4UV69wolOQp5GfR58NW/EgdQhwOA=="], - - "@sim/emcn/@radix-ui/react-avatar/@radix-ui/react-use-layout-effect": ["@radix-ui/react-use-layout-effect@1.1.1", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ=="], - - "@sim/emcn/@radix-ui/react-slot/@radix-ui/react-compose-refs": ["@radix-ui/react-compose-refs@1.1.2", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg=="], - "@smithy/eventstream-codec/@smithy/core/@smithy/types": ["@smithy/types@4.15.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-Z5TAOxygoFvybJV3igo5SloFflSokHx2hu1eFA+DxDTcn+FtKxUSui+rbTRG1pAafMA888Z3MVvCWUuvCrTXjg=="], "@smithy/util-utf8/@smithy/core/@smithy/types": ["@smithy/types@4.15.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-Z5TAOxygoFvybJV3igo5SloFflSokHx2hu1eFA+DxDTcn+FtKxUSui+rbTRG1pAafMA888Z3MVvCWUuvCrTXjg=="], @@ -6063,36 +6184,10 @@ "@trigger.dev/core/socket.io-client/engine.io-client": ["engine.io-client@6.5.4", "", { "dependencies": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.1", "engine.io-parser": "~5.2.1", "ws": "~8.17.1", "xmlhttprequest-ssl": "~2.0.0" } }, "sha512-GeZeeRjpD2qf49cZQ0Wvh/8NJNfeXkXXcoGh+F77oEAgo9gUHwT1fCRxSNU+YEEaysOJTnsFHmM5oAcPy4ntvQ=="], - "@types/archiver/@types/node/undici-types": ["undici-types@7.24.6", "", {}, "sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg=="], - - "@types/buffer-from/@types/node/undici-types": ["undici-types@7.24.6", "", {}, "sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg=="], - - "@types/cacheable-request/@types/node/undici-types": ["undici-types@7.24.6", "", {}, "sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg=="], - - "@types/cors/@types/node/undici-types": ["undici-types@7.24.6", "", {}, "sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg=="], - - "@types/fs-extra/@types/node/undici-types": ["undici-types@7.24.6", "", {}, "sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg=="], - - "@types/keyv/@types/node/undici-types": ["undici-types@7.24.6", "", {}, "sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg=="], - - "@types/mssql/@types/node/undici-types": ["undici-types@7.24.6", "", {}, "sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg=="], - - "@types/node-fetch/@types/node/undici-types": ["undici-types@7.24.6", "", {}, "sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg=="], - - "@types/readable-stream/@types/node/undici-types": ["undici-types@7.24.6", "", {}, "sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg=="], - - "@types/readdir-glob/@types/node/undici-types": ["undici-types@7.24.6", "", {}, "sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg=="], - - "@types/request/@types/node/undici-types": ["undici-types@7.24.6", "", {}, "sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg=="], - "@types/request/form-data/mime-types": ["mime-types@2.1.35", "", { "dependencies": { "mime-db": "1.52.0" } }, "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw=="], - "@types/responselike/@types/node/undici-types": ["undici-types@7.24.6", "", {}, "sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg=="], - "@types/ssh2/@types/node/undici-types": ["undici-types@5.26.5", "", {}, "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA=="], - "@types/ws/@types/node/undici-types": ["undici-types@7.24.6", "", {}, "sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg=="], - "accepts/mime-types/mime-db": ["mime-db@1.52.0", "", {}, "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="], "app-builder-lib/@electron/get/fs-extra": ["fs-extra@8.1.0", "", { "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^4.0.0", "universalify": "^0.1.0" } }, "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g=="], @@ -6121,14 +6216,12 @@ "builder-util/chalk/supports-color": ["supports-color@7.2.0", "", { "dependencies": { "has-flag": "^4.0.0" } }, "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="], - "bun-types/@types/node/undici-types": ["undici-types@7.24.6", "", {}, "sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg=="], - "c12/chokidar/readdirp": ["readdirp@4.1.2", "", {}, "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg=="], - "chrome-launcher/@types/node/undici-types": ["undici-types@7.24.6", "", {}, "sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg=="], - "cli-table3/string-width/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], + "cli-truncate/string-width/strip-ansi": ["strip-ansi@7.2.0", "", { "dependencies": { "ansi-regex": "^6.2.2" } }, "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w=="], + "cliui/strip-ansi/ansi-regex": ["ansi-regex@6.2.2", "", {}, "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg=="], "cmdk/@radix-ui/react-dialog/@radix-ui/primitive": ["@radix-ui/primitive@1.1.4", "", {}, "sha512-7AdCK9PQyiljKoBDbN8OuctCbd/esdwZPQ8RtOE3SsyQtUpiPb+ND75q0jEhC1m1ecBI0MFNeLJvwIh9iKHRcQ=="], @@ -6165,8 +6258,6 @@ "d3-sankey/d3-shape/d3-path": ["d3-path@1.0.9", "", {}, "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg=="], - "docx/@types/node/undici-types": ["undici-types@7.24.6", "", {}, "sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg=="], - "drizzle-kit/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.25.12", "", { "os": "aix", "cpu": "ppc64" }, "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA=="], "drizzle-kit/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.25.12", "", { "os": "android", "cpu": "arm" }, "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg=="], @@ -6239,8 +6330,6 @@ "electron/@types/node/undici-types": ["undici-types@7.18.2", "", {}, "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w=="], - "engine.io/@types/node/undici-types": ["undici-types@7.24.6", "", {}, "sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg=="], - "express/accepts/negotiator": ["negotiator@1.0.0", "", {}, "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg=="], "form-data/mime-types/mime-db": ["mime-db@1.52.0", "", {}, "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="], @@ -6303,8 +6392,6 @@ "fumadocs-openapi/@radix-ui/react-select/@radix-ui/react-use-layout-effect": ["@radix-ui/react-use-layout-effect@1.1.2", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-jrBWOxZITuGcnjRCM2t2U5ZPkCLxD+Ym6DjfssS5haTj2iiak/DOb64JeN6OdLfLgptb6/e2kKR+ZuTrGoZTPA=="], - "fumadocs-openapi/@radix-ui/react-select/@radix-ui/react-use-previous": ["@radix-ui/react-use-previous@1.1.2", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-IGBQPtRFdhN6MQ8dbegVmBq1LVZluya3F1jWY+puIcQC3MHctRwTDSBWCkL/3ZcnMJLTMJ++Z+ktmvg0F89iCw=="], - "fumadocs-openapi/@radix-ui/react-select/@radix-ui/react-visually-hidden": ["@radix-ui/react-visually-hidden@1.2.6", "", { "dependencies": { "@radix-ui/react-primitive": "2.1.6" }, "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" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-jCE0WljWifTI4niIMCll06kGpsJTAPiZVU9H4WR1N6qW7At9ystHbN7dDB+we2xH535roFHj7qKS+RGj0FMDWQ=="], "fumadocs-openapi/@radix-ui/react-slot/@radix-ui/react-compose-refs": ["@radix-ui/react-compose-refs@1.1.3", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-rYOP8OMnuuPMQF1uhPVlGNcCDlkokKqGFE3JcxFViIkAXP7EvFWUliJAstrapypaBLJNHbZL6jGhbVDGTwmVhA=="], @@ -6395,10 +6482,6 @@ "gray-matter/js-yaml/argparse": ["argparse@1.0.10", "", { "dependencies": { "sprintf-js": "~1.0.2" } }, "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg=="], - "groq-sdk/@types/node/undici-types": ["undici-types@5.26.5", "", {}, "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA=="], - - "gtoken/gaxios/node-fetch": ["node-fetch@3.3.2", "", { "dependencies": { "data-uri-to-buffer": "^4.0.0", "fetch-blob": "^3.1.4", "formdata-polyfill": "^4.0.10" } }, "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA=="], - "imapflow/pino/pino-abstract-transport": ["pino-abstract-transport@3.0.0", "", { "dependencies": { "split2": "^4.0.0" } }, "sha512-wlfUczU+n7Hy/Ha5j9a/gZNy7We5+cXp8YL+X+PG8S0KXxw7n/JXA3c46Y0zQznIJ83URJiwy7Lh56WLokNuxg=="], "imapflow/pino/thread-stream": ["thread-stream@4.2.0", "", { "dependencies": { "real-require": "^1.0.0" } }, "sha512-e2zZ96wSChazBsbENf/Pcm/4swHt2cEKQ92rhUjkL9GCKiTDJIaTBenjE/m9DXi0QBmTMDkFDdOomUy20A1tDQ=="], @@ -6435,22 +6518,16 @@ "pptxgenjs/@types/node/undici-types": ["undici-types@6.21.0", "", {}, "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ=="], - "protobufjs/@types/node/undici-types": ["undici-types@7.24.6", "", {}, "sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg=="], + "react-email/@babel/parser/@babel/types": ["@babel/types@7.29.7", "", { "dependencies": { "@babel/helper-string-parser": "^7.29.7", "@babel/helper-validator-identifier": "^7.29.7" } }, "sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA=="], - "react-email/chokidar/readdirp": ["readdirp@4.1.2", "", {}, "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg=="], - - "rimraf/glob/path-scurry": ["path-scurry@1.11.1", "", { "dependencies": { "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" } }, "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA=="], + "react-email/chokidar/readdirp": ["readdirp@5.0.0", "", {}, "sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ=="], "string-width/strip-ansi/ansi-regex": ["ansi-regex@6.2.2", "", {}, "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg=="], - "tedious/@types/node/undici-types": ["undici-types@7.24.6", "", {}, "sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg=="], - "teeny-request/http-proxy-agent/agent-base": ["agent-base@6.0.2", "", { "dependencies": { "debug": "4" } }, "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ=="], "teeny-request/https-proxy-agent/agent-base": ["agent-base@6.0.2", "", { "dependencies": { "debug": "4" } }, "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ=="], - "temp/rimraf/glob": ["glob@7.2.3", "", { "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" } }, "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q=="], - "tough-cookie/tldts/tldts-core": ["tldts-core@6.1.86", "", {}, "sha512-Je6p7pkk+KMzMv2XXKmAE3McmolOQFdxkKw0R8EYNr7sELW46JqnNeTX8ybPiQgvg1ymCoF8LXs5fzFaZvJPTA=="], "twilio/https-proxy-agent/agent-base": ["agent-base@6.0.2", "", { "dependencies": { "debug": "4" } }, "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ=="], @@ -6459,14 +6536,18 @@ "word-extractor/yauzl/buffer-crc32": ["buffer-crc32@0.2.13", "", {}, "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ=="], - "wrap-ansi-cjs/string-width/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], - "wrap-ansi/strip-ansi/ansi-regex": ["ansi-regex@6.2.2", "", {}, "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg=="], "@browserbasehq/stagehand/@anthropic-ai/sdk/@types/node/undici-types": ["undici-types@5.26.5", "", {}, "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA=="], "@browserbasehq/stagehand/openai/@types/node/undici-types": ["undici-types@5.26.5", "", {}, "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA=="], + "@earendil-works/pi-ai/@aws-sdk/client-bedrock-runtime/@aws-sdk/core/@aws-sdk/xml-builder": ["@aws-sdk/xml-builder@3.972.40", "", { "dependencies": { "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-wlFmCIGUlwF4zx/kncw+bmxTQh1HeSJq4mYV/V5cZUSJadDP3kXvGW8Rn21cimj/7y9ju+47oYWXi97vF7czaA=="], + + "@earendil-works/pi-ai/@aws-sdk/client-bedrock-runtime/@aws-sdk/core/@smithy/signature-v4": ["@smithy/signature-v4@5.7.3", "", { "dependencies": { "@smithy/core": "^3.33.3", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-7ImGm+FkHRLcBaRttIAMZ6bzJZWb2cJGoYjq46F2UjycujWzrL9GEN9h4w7eQyXJYnltrUhxbbieBAIRrdqpow=="], + + "@earendil-works/pi-ai/@aws-sdk/client-bedrock-runtime/@aws-sdk/core/@smithy/types": ["@smithy/types@4.17.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-FOKpVZob9MPTn2znRzGrnsMHv7BOsKVw3XiP/cOyYLDVZ9qKp4nifIiSCuUU/fIj5Vu0UOAxCFr+qRAtG0NUkA=="], + "@earendil-works/pi-ai/@aws-sdk/client-bedrock-runtime/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-env": ["@aws-sdk/credential-provider-env@3.972.72", "", { "dependencies": { "@aws-sdk/core": "^3.978.1", "@aws-sdk/types": "^3.974.6", "@smithy/core": "^3.35.0", "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-xTKO/FWJPozTIXbozVnVGoNBhaGba8TBcx+KyUjRVeOlXE+dUc7GTR1cLvu0uTdIdmemzaFbqqCshXeZA1fZew=="], "@earendil-works/pi-ai/@aws-sdk/client-bedrock-runtime/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-http": ["@aws-sdk/credential-provider-http@3.972.74", "", { "dependencies": { "@aws-sdk/core": "^3.978.1", "@aws-sdk/types": "^3.974.6", "@smithy/core": "^3.35.0", "@smithy/fetch-http-handler": "^5.8.0", "@smithy/node-http-handler": "^4.12.1", "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-u91E/hT8f4d1xy0Jl7VG4nVKJ3lxbrZkoBTeSVoJdWBiSEUMwMS/9+e0H/aJVQV//Lt5wuzP+E69v4aRSsNTmw=="], @@ -6483,6 +6564,18 @@ "@earendil-works/pi-ai/@aws-sdk/client-bedrock-runtime/@aws-sdk/credential-provider-node/@smithy/core": ["@smithy/core@3.35.0", "", { "dependencies": { "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-zRMhfkByhT2snNdr1si24vJitU6Cr9ix2MikUfWmkAgp4jrNP0GcKSP5YvwQ+TlI8AZXER5QOGJn3JsVtSD9/A=="], + "@earendil-works/pi-ai/@aws-sdk/client-bedrock-runtime/@aws-sdk/eventstream-handler-node/@smithy/types": ["@smithy/types@4.17.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-FOKpVZob9MPTn2znRzGrnsMHv7BOsKVw3XiP/cOyYLDVZ9qKp4nifIiSCuUU/fIj5Vu0UOAxCFr+qRAtG0NUkA=="], + + "@earendil-works/pi-ai/@aws-sdk/client-bedrock-runtime/@aws-sdk/middleware-eventstream/@smithy/types": ["@smithy/types@4.17.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-FOKpVZob9MPTn2znRzGrnsMHv7BOsKVw3XiP/cOyYLDVZ9qKp4nifIiSCuUU/fIj5Vu0UOAxCFr+qRAtG0NUkA=="], + + "@earendil-works/pi-ai/@aws-sdk/client-bedrock-runtime/@aws-sdk/middleware-websocket/@smithy/signature-v4": ["@smithy/signature-v4@5.7.3", "", { "dependencies": { "@smithy/core": "^3.33.3", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-7ImGm+FkHRLcBaRttIAMZ6bzJZWb2cJGoYjq46F2UjycujWzrL9GEN9h4w7eQyXJYnltrUhxbbieBAIRrdqpow=="], + + "@earendil-works/pi-ai/@aws-sdk/client-bedrock-runtime/@aws-sdk/middleware-websocket/@smithy/types": ["@smithy/types@4.17.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-FOKpVZob9MPTn2znRzGrnsMHv7BOsKVw3XiP/cOyYLDVZ9qKp4nifIiSCuUU/fIj5Vu0UOAxCFr+qRAtG0NUkA=="], + + "@earendil-works/pi-ai/@aws-sdk/client-bedrock-runtime/@aws-sdk/types/@smithy/types": ["@smithy/types@4.17.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-FOKpVZob9MPTn2znRzGrnsMHv7BOsKVw3XiP/cOyYLDVZ9qKp4nifIiSCuUU/fIj5Vu0UOAxCFr+qRAtG0NUkA=="], + + "@earendil-works/pi-ai/@aws-sdk/client-bedrock-runtime/@smithy/fetch-http-handler/@smithy/types": ["@smithy/types@4.17.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-FOKpVZob9MPTn2znRzGrnsMHv7BOsKVw3XiP/cOyYLDVZ9qKp4nifIiSCuUU/fIj5Vu0UOAxCFr+qRAtG0NUkA=="], + "@google-cloud/storage/google-auth-library/gcp-metadata/google-logging-utils": ["google-logging-utils@0.0.2", "", {}, "sha512-NEgUnEcBiP5HrPzufUkBzJOD/Sxsco3rLNo1F1TNf7ieU8ryUzBhqba8r756CjLX7rn3fHl6iLEwPYuqpoKgQQ=="], "@grpc/proto-loader/yargs/cliui/wrap-ansi": ["wrap-ansi@7.0.0", "", { "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q=="], @@ -6493,8 +6586,6 @@ "@rolldown/binding-wasm32-wasi/@napi-rs/wasm-runtime/@tybys/wasm-util/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], - "@sim/emcn/@radix-ui/react-avatar/@radix-ui/react-primitive/@radix-ui/react-slot": ["@radix-ui/react-slot@1.2.3", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A=="], - "@trigger.dev/core/socket.io-client/engine.io-client/xmlhttprequest-ssl": ["xmlhttprequest-ssl@2.0.0", "", {}, "sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A=="], "@types/request/form-data/mime-types/mime-db": ["mime-db@1.52.0", "", {}, "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="], @@ -6521,6 +6612,8 @@ "artillery/js-yaml/argparse/sprintf-js": ["sprintf-js@1.0.3", "", {}, "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g=="], + "cli-truncate/string-width/strip-ansi/ansi-regex": ["ansi-regex@6.2.2", "", {}, "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg=="], + "cmdk/@radix-ui/react-dialog/@radix-ui/react-dismissable-layer/@radix-ui/react-use-callback-ref": ["@radix-ui/react-use-callback-ref@1.1.2", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-xCso9j1/u8sEgP1RNHjFrXJLApL8LiqOkI1R4ywuN00rxWdYg4oQXuwKLS3i0j5NWLromUD27/4nlxj2UFVvIw=="], "cmdk/@radix-ui/react-dialog/@radix-ui/react-focus-scope/@radix-ui/react-use-callback-ref": ["@radix-ui/react-use-callback-ref@1.1.2", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-xCso9j1/u8sEgP1RNHjFrXJLApL8LiqOkI1R4ywuN00rxWdYg4oQXuwKLS3i0j5NWLromUD27/4nlxj2UFVvIw=="], @@ -6627,8 +6720,6 @@ "ora/log-symbols/chalk/supports-color": ["supports-color@5.5.0", "", { "dependencies": { "has-flag": "^3.0.0" } }, "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow=="], - "rimraf/glob/path-scurry/lru-cache": ["lru-cache@10.4.3", "", {}, "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="], - "@earendil-works/pi-ai/@aws-sdk/client-bedrock-runtime/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-env/@aws-sdk/core": ["@aws-sdk/core@3.978.1", "", { "dependencies": { "@aws-sdk/types": "^3.974.6", "@aws-sdk/xml-builder": "^3.972.41", "@aws/lambda-invoke-store": "^0.3.0", "@smithy/core": "^3.35.0", "@smithy/signature-v4": "^5.7.3", "@smithy/types": "^4.19.0", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "sha512-LbY9aGsEiznDWmUc30Nwv3aIX/+dbwTx8KfS0yOC3NPYMO+O91e6jkT1azf34FwjOndq8/Q+RcVVZz5xnerwdg=="], "@earendil-works/pi-ai/@aws-sdk/client-bedrock-runtime/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-http/@aws-sdk/core": ["@aws-sdk/core@3.978.1", "", { "dependencies": { "@aws-sdk/types": "^3.974.6", "@aws-sdk/xml-builder": "^3.972.41", "@aws/lambda-invoke-store": "^0.3.0", "@smithy/core": "^3.35.0", "@smithy/signature-v4": "^5.7.3", "@smithy/types": "^4.19.0", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "sha512-LbY9aGsEiznDWmUc30Nwv3aIX/+dbwTx8KfS0yOC3NPYMO+O91e6jkT1azf34FwjOndq8/Q+RcVVZz5xnerwdg=="], @@ -6653,8 +6744,6 @@ "@earendil-works/pi-ai/@aws-sdk/client-bedrock-runtime/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-web-identity/@aws-sdk/nested-clients": ["@aws-sdk/nested-clients@3.997.46", "", { "dependencies": { "@aws-sdk/core": "^3.978.1", "@aws-sdk/signature-v4-multi-region": "^3.996.47", "@aws-sdk/types": "^3.974.6", "@smithy/core": "^3.35.0", "@smithy/fetch-http-handler": "^5.8.0", "@smithy/node-http-handler": "^4.12.1", "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-oRxtBcka/JGHGs9l9p9IVajGoTP8vTPmoAzdHGy4Qcy9P5vPnDf6nhIeM/COQNY9k/OahImTRaLkHftoXvfcmQ=="], - "@sim/emcn/@radix-ui/react-avatar/@radix-ui/react-primitive/@radix-ui/react-slot/@radix-ui/react-compose-refs": ["@radix-ui/react-compose-refs@1.1.2", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg=="], - "app-builder-lib/@electron/get/got/cacheable-request/get-stream": ["get-stream@5.2.0", "", { "dependencies": { "pump": "^3.0.0" } }, "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA=="], "app-builder-lib/@electron/get/got/cacheable-request/keyv": ["keyv@4.5.4", "", { "dependencies": { "json-buffer": "3.0.1" } }, "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw=="], @@ -6665,30 +6754,72 @@ "ora/log-symbols/chalk/supports-color/has-flag": ["has-flag@3.0.0", "", {}, "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw=="], - "@earendil-works/pi-ai/@aws-sdk/client-bedrock-runtime/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-env/@aws-sdk/core/@aws-sdk/xml-builder": ["@aws-sdk/xml-builder@3.972.41", "", { "dependencies": { "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-ctjVSyCMegrWfXlx6VqzSBFI6UqmQ5ZlnfMhdLIiWmhoH8UAQxSCP5N3OpG7X3k4LnS7ou74C4mt20+bfTW2aQ=="], + "@earendil-works/pi-ai/@aws-sdk/client-bedrock-runtime/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-env/@aws-sdk/core/@smithy/signature-v4": ["@smithy/signature-v4@5.7.3", "", { "dependencies": { "@smithy/core": "^3.33.3", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-7ImGm+FkHRLcBaRttIAMZ6bzJZWb2cJGoYjq46F2UjycujWzrL9GEN9h4w7eQyXJYnltrUhxbbieBAIRrdqpow=="], - "@earendil-works/pi-ai/@aws-sdk/client-bedrock-runtime/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-http/@aws-sdk/core/@aws-sdk/xml-builder": ["@aws-sdk/xml-builder@3.972.41", "", { "dependencies": { "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-ctjVSyCMegrWfXlx6VqzSBFI6UqmQ5ZlnfMhdLIiWmhoH8UAQxSCP5N3OpG7X3k4LnS7ou74C4mt20+bfTW2aQ=="], + "@earendil-works/pi-ai/@aws-sdk/client-bedrock-runtime/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-http/@aws-sdk/core/@smithy/signature-v4": ["@smithy/signature-v4@5.7.3", "", { "dependencies": { "@smithy/core": "^3.33.3", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-7ImGm+FkHRLcBaRttIAMZ6bzJZWb2cJGoYjq46F2UjycujWzrL9GEN9h4w7eQyXJYnltrUhxbbieBAIRrdqpow=="], - "@earendil-works/pi-ai/@aws-sdk/client-bedrock-runtime/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-ini/@aws-sdk/core/@aws-sdk/xml-builder": ["@aws-sdk/xml-builder@3.972.41", "", { "dependencies": { "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-ctjVSyCMegrWfXlx6VqzSBFI6UqmQ5ZlnfMhdLIiWmhoH8UAQxSCP5N3OpG7X3k4LnS7ou74C4mt20+bfTW2aQ=="], + "@earendil-works/pi-ai/@aws-sdk/client-bedrock-runtime/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-ini/@aws-sdk/core/@smithy/signature-v4": ["@smithy/signature-v4@5.7.3", "", { "dependencies": { "@smithy/core": "^3.33.3", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-7ImGm+FkHRLcBaRttIAMZ6bzJZWb2cJGoYjq46F2UjycujWzrL9GEN9h4w7eQyXJYnltrUhxbbieBAIRrdqpow=="], "@earendil-works/pi-ai/@aws-sdk/client-bedrock-runtime/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-ini/@aws-sdk/nested-clients/@aws-sdk/signature-v4-multi-region": ["@aws-sdk/signature-v4-multi-region@3.996.47", "", { "dependencies": { "@aws-sdk/types": "^3.974.6", "@smithy/signature-v4": "^5.7.3", "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-Zk08macMvQTHzQJCLJVkOlviVoqwYMrpXv4lmLN7b7sAbiMoOK7Go0NYdR5UeF+MW8LIbRmwrNy9u/5VvX1U5g=="], "@earendil-works/pi-ai/@aws-sdk/client-bedrock-runtime/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-ini/@aws-sdk/nested-clients/@smithy/fetch-http-handler": ["@smithy/fetch-http-handler@5.8.0", "", { "dependencies": { "@smithy/core": "^3.33.3", "@smithy/types": "^4.18.0", "tslib": "^2.6.2" } }, "sha512-ycSJu3tFAQ4v04CBB0agqFMVsSQ1iG3yw+SpgxRqKfaURpQD4CZ8Wn0zPMmSnOuTpTh65Vz+EA0rMrw089wvkA=="], - "@earendil-works/pi-ai/@aws-sdk/client-bedrock-runtime/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-process/@aws-sdk/core/@aws-sdk/xml-builder": ["@aws-sdk/xml-builder@3.972.41", "", { "dependencies": { "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-ctjVSyCMegrWfXlx6VqzSBFI6UqmQ5ZlnfMhdLIiWmhoH8UAQxSCP5N3OpG7X3k4LnS7ou74C4mt20+bfTW2aQ=="], + "@earendil-works/pi-ai/@aws-sdk/client-bedrock-runtime/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-process/@aws-sdk/core/@smithy/signature-v4": ["@smithy/signature-v4@5.7.3", "", { "dependencies": { "@smithy/core": "^3.33.3", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-7ImGm+FkHRLcBaRttIAMZ6bzJZWb2cJGoYjq46F2UjycujWzrL9GEN9h4w7eQyXJYnltrUhxbbieBAIRrdqpow=="], - "@earendil-works/pi-ai/@aws-sdk/client-bedrock-runtime/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-sso/@aws-sdk/core/@aws-sdk/xml-builder": ["@aws-sdk/xml-builder@3.972.41", "", { "dependencies": { "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-ctjVSyCMegrWfXlx6VqzSBFI6UqmQ5ZlnfMhdLIiWmhoH8UAQxSCP5N3OpG7X3k4LnS7ou74C4mt20+bfTW2aQ=="], + "@earendil-works/pi-ai/@aws-sdk/client-bedrock-runtime/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-sso/@aws-sdk/core/@smithy/signature-v4": ["@smithy/signature-v4@5.7.3", "", { "dependencies": { "@smithy/core": "^3.33.3", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-7ImGm+FkHRLcBaRttIAMZ6bzJZWb2cJGoYjq46F2UjycujWzrL9GEN9h4w7eQyXJYnltrUhxbbieBAIRrdqpow=="], "@earendil-works/pi-ai/@aws-sdk/client-bedrock-runtime/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-sso/@aws-sdk/nested-clients/@aws-sdk/signature-v4-multi-region": ["@aws-sdk/signature-v4-multi-region@3.996.47", "", { "dependencies": { "@aws-sdk/types": "^3.974.6", "@smithy/signature-v4": "^5.7.3", "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-Zk08macMvQTHzQJCLJVkOlviVoqwYMrpXv4lmLN7b7sAbiMoOK7Go0NYdR5UeF+MW8LIbRmwrNy9u/5VvX1U5g=="], "@earendil-works/pi-ai/@aws-sdk/client-bedrock-runtime/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-sso/@aws-sdk/nested-clients/@smithy/fetch-http-handler": ["@smithy/fetch-http-handler@5.8.0", "", { "dependencies": { "@smithy/core": "^3.33.3", "@smithy/types": "^4.18.0", "tslib": "^2.6.2" } }, "sha512-ycSJu3tFAQ4v04CBB0agqFMVsSQ1iG3yw+SpgxRqKfaURpQD4CZ8Wn0zPMmSnOuTpTh65Vz+EA0rMrw089wvkA=="], - "@earendil-works/pi-ai/@aws-sdk/client-bedrock-runtime/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-web-identity/@aws-sdk/core/@aws-sdk/xml-builder": ["@aws-sdk/xml-builder@3.972.41", "", { "dependencies": { "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-ctjVSyCMegrWfXlx6VqzSBFI6UqmQ5ZlnfMhdLIiWmhoH8UAQxSCP5N3OpG7X3k4LnS7ou74C4mt20+bfTW2aQ=="], + "@earendil-works/pi-ai/@aws-sdk/client-bedrock-runtime/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-web-identity/@aws-sdk/core/@smithy/signature-v4": ["@smithy/signature-v4@5.7.3", "", { "dependencies": { "@smithy/core": "^3.33.3", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-7ImGm+FkHRLcBaRttIAMZ6bzJZWb2cJGoYjq46F2UjycujWzrL9GEN9h4w7eQyXJYnltrUhxbbieBAIRrdqpow=="], "@earendil-works/pi-ai/@aws-sdk/client-bedrock-runtime/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-web-identity/@aws-sdk/nested-clients/@aws-sdk/signature-v4-multi-region": ["@aws-sdk/signature-v4-multi-region@3.996.47", "", { "dependencies": { "@aws-sdk/types": "^3.974.6", "@smithy/signature-v4": "^5.7.3", "@smithy/types": "^4.19.0", "tslib": "^2.6.2" } }, "sha512-Zk08macMvQTHzQJCLJVkOlviVoqwYMrpXv4lmLN7b7sAbiMoOK7Go0NYdR5UeF+MW8LIbRmwrNy9u/5VvX1U5g=="], "@earendil-works/pi-ai/@aws-sdk/client-bedrock-runtime/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-web-identity/@aws-sdk/nested-clients/@smithy/fetch-http-handler": ["@smithy/fetch-http-handler@5.8.0", "", { "dependencies": { "@smithy/core": "^3.33.3", "@smithy/types": "^4.18.0", "tslib": "^2.6.2" } }, "sha512-ycSJu3tFAQ4v04CBB0agqFMVsSQ1iG3yw+SpgxRqKfaURpQD4CZ8Wn0zPMmSnOuTpTh65Vz+EA0rMrw089wvkA=="], "ora/log-symbols/chalk/ansi-styles/color-convert/color-name": ["color-name@1.1.3", "", {}, "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="], + + "@earendil-works/pi-ai/@aws-sdk/client-bedrock-runtime/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-env/@aws-sdk/core/@smithy/signature-v4/@smithy/core": ["@smithy/core@3.33.3", "", { "dependencies": { "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-CsOeKq/9kA3y6VJHt+/+VTCtBaxJ4OTFpgrjIUhPpDIKxBci1k2bJaQASF2h/ELWrulGp+t97DZ0mevfAD8idg=="], + + "@earendil-works/pi-ai/@aws-sdk/client-bedrock-runtime/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-env/@aws-sdk/core/@smithy/signature-v4/@smithy/types": ["@smithy/types@4.17.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-FOKpVZob9MPTn2znRzGrnsMHv7BOsKVw3XiP/cOyYLDVZ9qKp4nifIiSCuUU/fIj5Vu0UOAxCFr+qRAtG0NUkA=="], + + "@earendil-works/pi-ai/@aws-sdk/client-bedrock-runtime/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-http/@aws-sdk/core/@smithy/signature-v4/@smithy/core": ["@smithy/core@3.33.3", "", { "dependencies": { "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-CsOeKq/9kA3y6VJHt+/+VTCtBaxJ4OTFpgrjIUhPpDIKxBci1k2bJaQASF2h/ELWrulGp+t97DZ0mevfAD8idg=="], + + "@earendil-works/pi-ai/@aws-sdk/client-bedrock-runtime/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-http/@aws-sdk/core/@smithy/signature-v4/@smithy/types": ["@smithy/types@4.17.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-FOKpVZob9MPTn2znRzGrnsMHv7BOsKVw3XiP/cOyYLDVZ9qKp4nifIiSCuUU/fIj5Vu0UOAxCFr+qRAtG0NUkA=="], + + "@earendil-works/pi-ai/@aws-sdk/client-bedrock-runtime/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-ini/@aws-sdk/core/@smithy/signature-v4/@smithy/core": ["@smithy/core@3.33.3", "", { "dependencies": { "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-CsOeKq/9kA3y6VJHt+/+VTCtBaxJ4OTFpgrjIUhPpDIKxBci1k2bJaQASF2h/ELWrulGp+t97DZ0mevfAD8idg=="], + + "@earendil-works/pi-ai/@aws-sdk/client-bedrock-runtime/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-ini/@aws-sdk/core/@smithy/signature-v4/@smithy/types": ["@smithy/types@4.17.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-FOKpVZob9MPTn2znRzGrnsMHv7BOsKVw3XiP/cOyYLDVZ9qKp4nifIiSCuUU/fIj5Vu0UOAxCFr+qRAtG0NUkA=="], + + "@earendil-works/pi-ai/@aws-sdk/client-bedrock-runtime/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-ini/@aws-sdk/nested-clients/@aws-sdk/signature-v4-multi-region/@smithy/signature-v4": ["@smithy/signature-v4@5.7.3", "", { "dependencies": { "@smithy/core": "^3.33.3", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-7ImGm+FkHRLcBaRttIAMZ6bzJZWb2cJGoYjq46F2UjycujWzrL9GEN9h4w7eQyXJYnltrUhxbbieBAIRrdqpow=="], + + "@earendil-works/pi-ai/@aws-sdk/client-bedrock-runtime/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-process/@aws-sdk/core/@smithy/signature-v4/@smithy/core": ["@smithy/core@3.33.3", "", { "dependencies": { "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-CsOeKq/9kA3y6VJHt+/+VTCtBaxJ4OTFpgrjIUhPpDIKxBci1k2bJaQASF2h/ELWrulGp+t97DZ0mevfAD8idg=="], + + "@earendil-works/pi-ai/@aws-sdk/client-bedrock-runtime/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-process/@aws-sdk/core/@smithy/signature-v4/@smithy/types": ["@smithy/types@4.17.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-FOKpVZob9MPTn2znRzGrnsMHv7BOsKVw3XiP/cOyYLDVZ9qKp4nifIiSCuUU/fIj5Vu0UOAxCFr+qRAtG0NUkA=="], + + "@earendil-works/pi-ai/@aws-sdk/client-bedrock-runtime/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-sso/@aws-sdk/core/@smithy/signature-v4/@smithy/core": ["@smithy/core@3.33.3", "", { "dependencies": { "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-CsOeKq/9kA3y6VJHt+/+VTCtBaxJ4OTFpgrjIUhPpDIKxBci1k2bJaQASF2h/ELWrulGp+t97DZ0mevfAD8idg=="], + + "@earendil-works/pi-ai/@aws-sdk/client-bedrock-runtime/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-sso/@aws-sdk/core/@smithy/signature-v4/@smithy/types": ["@smithy/types@4.17.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-FOKpVZob9MPTn2znRzGrnsMHv7BOsKVw3XiP/cOyYLDVZ9qKp4nifIiSCuUU/fIj5Vu0UOAxCFr+qRAtG0NUkA=="], + + "@earendil-works/pi-ai/@aws-sdk/client-bedrock-runtime/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-sso/@aws-sdk/nested-clients/@aws-sdk/signature-v4-multi-region/@smithy/signature-v4": ["@smithy/signature-v4@5.7.3", "", { "dependencies": { "@smithy/core": "^3.33.3", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-7ImGm+FkHRLcBaRttIAMZ6bzJZWb2cJGoYjq46F2UjycujWzrL9GEN9h4w7eQyXJYnltrUhxbbieBAIRrdqpow=="], + + "@earendil-works/pi-ai/@aws-sdk/client-bedrock-runtime/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-web-identity/@aws-sdk/core/@smithy/signature-v4/@smithy/core": ["@smithy/core@3.33.3", "", { "dependencies": { "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-CsOeKq/9kA3y6VJHt+/+VTCtBaxJ4OTFpgrjIUhPpDIKxBci1k2bJaQASF2h/ELWrulGp+t97DZ0mevfAD8idg=="], + + "@earendil-works/pi-ai/@aws-sdk/client-bedrock-runtime/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-web-identity/@aws-sdk/core/@smithy/signature-v4/@smithy/types": ["@smithy/types@4.17.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-FOKpVZob9MPTn2znRzGrnsMHv7BOsKVw3XiP/cOyYLDVZ9qKp4nifIiSCuUU/fIj5Vu0UOAxCFr+qRAtG0NUkA=="], + + "@earendil-works/pi-ai/@aws-sdk/client-bedrock-runtime/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-web-identity/@aws-sdk/nested-clients/@aws-sdk/signature-v4-multi-region/@smithy/signature-v4": ["@smithy/signature-v4@5.7.3", "", { "dependencies": { "@smithy/core": "^3.33.3", "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-7ImGm+FkHRLcBaRttIAMZ6bzJZWb2cJGoYjq46F2UjycujWzrL9GEN9h4w7eQyXJYnltrUhxbbieBAIRrdqpow=="], + + "@earendil-works/pi-ai/@aws-sdk/client-bedrock-runtime/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-ini/@aws-sdk/nested-clients/@aws-sdk/signature-v4-multi-region/@smithy/signature-v4/@smithy/core": ["@smithy/core@3.33.3", "", { "dependencies": { "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-CsOeKq/9kA3y6VJHt+/+VTCtBaxJ4OTFpgrjIUhPpDIKxBci1k2bJaQASF2h/ELWrulGp+t97DZ0mevfAD8idg=="], + + "@earendil-works/pi-ai/@aws-sdk/client-bedrock-runtime/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-ini/@aws-sdk/nested-clients/@aws-sdk/signature-v4-multi-region/@smithy/signature-v4/@smithy/types": ["@smithy/types@4.17.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-FOKpVZob9MPTn2znRzGrnsMHv7BOsKVw3XiP/cOyYLDVZ9qKp4nifIiSCuUU/fIj5Vu0UOAxCFr+qRAtG0NUkA=="], + + "@earendil-works/pi-ai/@aws-sdk/client-bedrock-runtime/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-sso/@aws-sdk/nested-clients/@aws-sdk/signature-v4-multi-region/@smithy/signature-v4/@smithy/core": ["@smithy/core@3.33.3", "", { "dependencies": { "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-CsOeKq/9kA3y6VJHt+/+VTCtBaxJ4OTFpgrjIUhPpDIKxBci1k2bJaQASF2h/ELWrulGp+t97DZ0mevfAD8idg=="], + + "@earendil-works/pi-ai/@aws-sdk/client-bedrock-runtime/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-sso/@aws-sdk/nested-clients/@aws-sdk/signature-v4-multi-region/@smithy/signature-v4/@smithy/types": ["@smithy/types@4.17.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-FOKpVZob9MPTn2znRzGrnsMHv7BOsKVw3XiP/cOyYLDVZ9qKp4nifIiSCuUU/fIj5Vu0UOAxCFr+qRAtG0NUkA=="], + + "@earendil-works/pi-ai/@aws-sdk/client-bedrock-runtime/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-web-identity/@aws-sdk/nested-clients/@aws-sdk/signature-v4-multi-region/@smithy/signature-v4/@smithy/core": ["@smithy/core@3.33.3", "", { "dependencies": { "@smithy/types": "^4.17.2", "tslib": "^2.6.2" } }, "sha512-CsOeKq/9kA3y6VJHt+/+VTCtBaxJ4OTFpgrjIUhPpDIKxBci1k2bJaQASF2h/ELWrulGp+t97DZ0mevfAD8idg=="], + + "@earendil-works/pi-ai/@aws-sdk/client-bedrock-runtime/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-web-identity/@aws-sdk/nested-clients/@aws-sdk/signature-v4-multi-region/@smithy/signature-v4/@smithy/types": ["@smithy/types@4.17.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-FOKpVZob9MPTn2znRzGrnsMHv7BOsKVw3XiP/cOyYLDVZ9qKp4nifIiSCuUU/fIj5Vu0UOAxCFr+qRAtG0NUkA=="], } } diff --git a/package.json b/package.json index 720bcf8ceea..5bf6c221077 100644 --- a/package.json +++ b/package.json @@ -139,24 +139,24 @@ "react-dom": "19.2.4", "next": "16.4.0", "@next/env": "16.4.0", - "drizzle-orm": "^0.45.2", - "postgres": "^3.4.5", - "minimatch": "^10.2.5", + "drizzle-orm": "^0.45.4", + "postgres": "3.4.9", + "minimatch": "10.2.6", "marked": "18.0.11", "mermaid": "11.16.1", "zod": "4.3.6", "e2b": "2.50.0", "@hono/node-server": "1.19.15", - "brace-expansion": "5.0.9", + "brace-expansion": "5.0.12", "deepmerge-ts": "8.0.0", - "dompurify": "3.4.13", - "engine.io": "6.6.8", - "fast-uri": "3.1.5", - "hono": "4.12.34", - "ip-address": "10.5.0", - "postcss": "8.5.26", + "dompurify": "3.4.17", + "engine.io": "6.6.11", + "fast-uri": "3.1.8", + "hono": "4.13.13", + "ip-address": "10.7.4", + "postcss": "8.5.30", "protobufjs": "7.6.5", - "socket.io": "4.8.3", + "socket.io": "4.8.4", "socket.io-parser": "4.2.7", "ws": "8.21.3" }, @@ -167,25 +167,25 @@ "@next/swc-linux-x64-gnu": "16.4.0" }, "devDependencies": { - "@babel/parser": "7.29.2", + "@babel/parser": "7.29.9", "@biomejs/biome": "2.0.6", "@mdx-js/mdx": "3.1.1", - "@octokit/rest": "^21.0.0", + "@octokit/rest": "^22.0.1", "@sim/utils": "workspace:*", "@types/mdast": "4.0.4", "@types/opentype.js": "1.3.10", "@typescript/native": "npm:typescript@^7.0.2", "@typescript/typescript6": "^6.0.2", "@vercel/og": "0.6.8", - "ajv": "8.18.0", + "ajv": "8.20.0", "commander": "^11.1.0", - "concurrently": "10.0.5", - "glob": "13.0.0", + "concurrently": "10.0.6", + "glob": "13.0.6", "gray-matter": "4.0.3", "husky": "9.1.7", "json-schema-to-typescript": "15.0.4", - "knip": "6.37.0", - "lint-staged": "16.0.0", + "knip": "6.41.0", + "lint-staged": "16.4.0", "opentype.js": "1.3.4", "pdf-lib": "1.17.1", "react": "19.2.4", @@ -195,7 +195,7 @@ "turbo": "2.9.14", "unified": "11.0.5", "unist-util-visit": "5.1.0", - "vitest": "^5.0.1", + "vitest": "^5.0.4", "zod": "4.3.6" }, "lint-staged": { diff --git a/packages/audit/package.json b/packages/audit/package.json index a69702b3e92..c29b4100af0 100644 --- a/packages/audit/package.json +++ b/packages/audit/package.json @@ -29,13 +29,13 @@ "@sim/logger": "workspace:*", "@sim/security": "workspace:*", "@sim/utils": "workspace:*", - "drizzle-orm": "^0.45.2" + "drizzle-orm": "^0.45.4" }, "devDependencies": { "@sim/testing": "workspace:*", "@sim/tsconfig": "workspace:*", - "@types/node": "24.2.1", + "@types/node": "24.19.2", "typescript": "^7.0.2", - "vitest": "^5.0.1" + "vitest": "^5.0.4" } } diff --git a/packages/auth/package.json b/packages/auth/package.json index 567462999c8..1726147cdbe 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -32,7 +32,7 @@ }, "devDependencies": { "@sim/tsconfig": "workspace:*", - "@types/node": "24.2.1", + "@types/node": "24.19.2", "typescript": "^7.0.2" } } diff --git a/packages/browser-protocol/package.json b/packages/browser-protocol/package.json index 190fade429f..a3bf4cb6dfc 100644 --- a/packages/browser-protocol/package.json +++ b/packages/browser-protocol/package.json @@ -25,7 +25,7 @@ "dependencies": {}, "devDependencies": { "@sim/tsconfig": "workspace:*", - "@types/node": "24.2.1", + "@types/node": "24.19.2", "typescript": "^7.0.2" } } diff --git a/packages/cli/package.json b/packages/cli/package.json index ab1760fa265..34e245b7b1d 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -44,7 +44,7 @@ }, "devDependencies": { "@sim/tsconfig": "workspace:*", - "@types/node": "24.2.1", + "@types/node": "24.19.2", "typescript": "^7.0.2" } } diff --git a/packages/db/package.json b/packages/db/package.json index 3e03ca45314..34c3198fb88 100644 --- a/packages/db/package.json +++ b/packages/db/package.json @@ -56,15 +56,15 @@ "dependencies": { "@sim/logger": "workspace:*", "@sim/utils": "workspace:*", - "drizzle-orm": "^0.45.2", + "drizzle-orm": "^0.45.4", "postgres": "^3.4.5" }, "devDependencies": { "@sim/tsconfig": "workspace:*", - "@types/bun": "1.4.1", - "@types/node": "24.2.1", + "@types/bun": "1.4.3", + "@types/node": "24.19.2", "drizzle-kit": "0.31.10", "typescript": "^7.0.2", - "vitest": "^5.0.1" + "vitest": "^5.0.4" } } diff --git a/packages/desktop-bridge/package.json b/packages/desktop-bridge/package.json index 23582cd0af5..bc5199d5163 100644 --- a/packages/desktop-bridge/package.json +++ b/packages/desktop-bridge/package.json @@ -50,6 +50,6 @@ "@sim/tsconfig": "workspace:*", "@types/micromatch": "4.0.10", "typescript": "^7.0.2", - "vitest": "^5.0.1" + "vitest": "^5.0.4" } } diff --git a/packages/emcn/package.json b/packages/emcn/package.json index 53b4f137aba..b2bd619bcd0 100644 --- a/packages/emcn/package.json +++ b/packages/emcn/package.json @@ -42,59 +42,59 @@ "dependencies": { "@sim/utils": "workspace:*", "clsx": "^2.1.1", - "tailwind-merge": "3.6.0", + "tailwind-merge": "3.7.0", "zod": "4.3.6" }, "peerDependencies": { "@radix-ui/react-avatar": "^1.1.10", - "@radix-ui/react-checkbox": "^1.1.3", - "@radix-ui/react-collapsible": "^1.1.3", - "@radix-ui/react-dialog": "^1.1.5", - "@radix-ui/react-dismissable-layer": "1.1.19", - "@radix-ui/react-dropdown-menu": "^2.1.17", - "@radix-ui/react-label": "^2.1.2", - "@radix-ui/react-popover": "^1.1.5", + "@radix-ui/react-checkbox": "^1.4.1", + "@radix-ui/react-collapsible": "^1.2.1", + "@radix-ui/react-dialog": "^1.3.1", + "@radix-ui/react-dismissable-layer": "1.2.1", + "@radix-ui/react-dropdown-menu": "^2.2.1", + "@radix-ui/react-label": "^2.1.17", + "@radix-ui/react-popover": "^1.3.1", "@radix-ui/react-radio-group": "^1.4.7", - "@radix-ui/react-slider": "^1.2.2", + "@radix-ui/react-slider": "^1.6.1", "@radix-ui/react-slot": "^1.2.2", - "@radix-ui/react-switch": "^1.1.2", - "@radix-ui/react-tabs": "^1.1.2", + "@radix-ui/react-switch": "^1.4.1", + "@radix-ui/react-tabs": "^1.2.1", "@tanstack/react-virtual": "^3.13.24", "class-variance-authority": "^0.7.1", "framer-motion": "^12.5.0", - "input-otp": "^1.4.2", + "input-otp": "^1.5.0", "next": ">=15", "prismjs": "^1.30.0", "react": "^19", "react-dom": "^19" }, "devDependencies": { - "@radix-ui/react-avatar": "1.1.10", - "@radix-ui/react-checkbox": "^1.1.3", - "@radix-ui/react-collapsible": "^1.1.3", - "@radix-ui/react-dialog": "^1.1.5", - "@radix-ui/react-dismissable-layer": "1.1.19", - "@radix-ui/react-dropdown-menu": "^2.1.17", - "@radix-ui/react-label": "^2.1.2", - "@radix-ui/react-popover": "^1.1.5", - "@radix-ui/react-radio-group": "1.4.7", - "@radix-ui/react-slider": "^1.2.2", - "@radix-ui/react-slot": "1.2.2", - "@radix-ui/react-switch": "^1.1.2", - "@radix-ui/react-tabs": "^1.1.2", + "@radix-ui/react-avatar": "1.3.1", + "@radix-ui/react-checkbox": "1.4.1", + "@radix-ui/react-collapsible": "1.2.1", + "@radix-ui/react-dialog": "1.3.1", + "@radix-ui/react-dismissable-layer": "1.2.1", + "@radix-ui/react-dropdown-menu": "2.2.1", + "@radix-ui/react-label": "2.1.17", + "@radix-ui/react-popover": "1.3.1", + "@radix-ui/react-radio-group": "1.5.1", + "@radix-ui/react-slider": "1.6.1", + "@radix-ui/react-slot": "1.5.0", + "@radix-ui/react-switch": "1.4.1", + "@radix-ui/react-tabs": "1.2.1", "@sim/tsconfig": "workspace:*", "@tanstack/react-virtual": "3.13.24", "@types/prismjs": "^1.26.5", "@types/react": "^19", "@types/react-dom": "^19", - "class-variance-authority": "^0.7.1", + "class-variance-authority": "0.7.1", "framer-motion": "^12.5.0", - "input-otp": "^1.4.2", + "input-otp": "1.5.0", "next": "16.4.0", "prismjs": "^1.30.0", "react": "19.2.4", "react-dom": "19.2.4", "typescript": "^7.0.2", - "vitest": "^5.0.1" + "vitest": "^5.0.4" } } diff --git a/packages/logger/package.json b/packages/logger/package.json index 2dcd6c3e48d..8ab3743a27e 100644 --- a/packages/logger/package.json +++ b/packages/logger/package.json @@ -31,8 +31,8 @@ }, "devDependencies": { "@sim/tsconfig": "workspace:*", - "@types/node": "24.2.1", + "@types/node": "24.19.2", "typescript": "^7.0.2", - "vitest": "^5.0.1" + "vitest": "^5.0.4" } } diff --git a/packages/platform-authz/package.json b/packages/platform-authz/package.json index fe5092ef28b..8ffdad06755 100644 --- a/packages/platform-authz/package.json +++ b/packages/platform-authz/package.json @@ -41,11 +41,11 @@ "dependencies": { "@sim/db": "workspace:*", "@sim/realtime-protocol": "workspace:*", - "drizzle-orm": "^0.45.2" + "drizzle-orm": "^0.45.4" }, "devDependencies": { "@sim/tsconfig": "workspace:*", - "@types/node": "24.2.1", + "@types/node": "24.19.2", "typescript": "^7.0.2" } } diff --git a/packages/realtime-protocol/package.json b/packages/realtime-protocol/package.json index a698bb54ea1..978f256f277 100644 --- a/packages/realtime-protocol/package.json +++ b/packages/realtime-protocol/package.json @@ -54,6 +54,6 @@ "devDependencies": { "@sim/tsconfig": "workspace:*", "typescript": "^7.0.2", - "vitest": "^5.0.1" + "vitest": "^5.0.4" } } diff --git a/packages/runtime-secrets/package.json b/packages/runtime-secrets/package.json index d3323455d07..dd5518143a0 100644 --- a/packages/runtime-secrets/package.json +++ b/packages/runtime-secrets/package.json @@ -25,14 +25,14 @@ "test:watch": "vitest" }, "dependencies": { - "@aws-sdk/client-secrets-manager": "3.1117.0", + "@aws-sdk/client-secrets-manager": "3.1150.0", "@sim/logger": "workspace:*", "@sim/utils": "workspace:*" }, "devDependencies": { "@sim/tsconfig": "workspace:*", - "@types/node": "24.2.1", + "@types/node": "24.19.2", "typescript": "^7.0.2", - "vitest": "^5.0.1" + "vitest": "^5.0.4" } } diff --git a/packages/security/package.json b/packages/security/package.json index 4b2d6d9bc46..78e5be749ac 100644 --- a/packages/security/package.json +++ b/packages/security/package.json @@ -65,8 +65,8 @@ }, "devDependencies": { "@sim/tsconfig": "workspace:*", - "@types/node": "24.2.1", + "@types/node": "24.19.2", "typescript": "^7.0.2", - "vitest": "^5.0.1" + "vitest": "^5.0.4" } } diff --git a/packages/sim-cli/package.json b/packages/sim-cli/package.json index 303dac51d08..b3d4ef6cb0a 100644 --- a/packages/sim-cli/package.json +++ b/packages/sim-cli/package.json @@ -60,10 +60,10 @@ "@sim/tsconfig": "workspace:*", "@sim/utils": "workspace:*", "@types/js-yaml": "4.0.9", - "@types/node": "24.2.1", + "@types/node": "24.19.2", "@types/proper-lockfile": "4.1.4", "typescript": "^7.0.2", - "vitest": "^5.0.1" + "vitest": "^5.0.4" }, "exports": { "./embed": { diff --git a/packages/sim-setup/package.json b/packages/sim-setup/package.json index 44f1f8e78e1..48636ad6eb1 100644 --- a/packages/sim-setup/package.json +++ b/packages/sim-setup/package.json @@ -54,10 +54,10 @@ "@sim/security": "workspace:*", "@sim/tsconfig": "workspace:*", "@sim/utils": "workspace:*", - "@types/node": "24.2.1", + "@types/node": "24.19.2", "chalk": "5.6.2", "postgres": "^3.4.5", "typescript": "^7.0.2", - "vitest": "^5.0.1" + "vitest": "^5.0.4" } } diff --git a/packages/terminal-protocol/package.json b/packages/terminal-protocol/package.json index f023cef8bd5..882228e920b 100644 --- a/packages/terminal-protocol/package.json +++ b/packages/terminal-protocol/package.json @@ -28,8 +28,8 @@ }, "devDependencies": { "@sim/tsconfig": "workspace:*", - "@types/node": "24.2.1", + "@types/node": "24.19.2", "typescript": "^7.0.2", - "vitest": "^5.0.1" + "vitest": "^5.0.4" } } diff --git a/packages/testing/package.json b/packages/testing/package.json index 5bde248b04c..ccc85269579 100644 --- a/packages/testing/package.json +++ b/packages/testing/package.json @@ -63,7 +63,7 @@ "peerDependencies": { "next": ">=15 <17", "stripe": ">=18 <19", - "vitest": "^5.0.1" + "vitest": "^5.0.4" }, "peerDependenciesMeta": { "stripe": { @@ -75,7 +75,7 @@ "next": "16.4.0", "stripe": "18.5.0", "typescript": "^7.0.2", - "vitest": "^5.0.1" + "vitest": "^5.0.4" }, "dependencies": { "@sim/auth": "workspace:*", diff --git a/packages/ts-sdk/package.json b/packages/ts-sdk/package.json index 2cc07c7327e..26c7bddfb5d 100644 --- a/packages/ts-sdk/package.json +++ b/packages/ts-sdk/package.json @@ -37,9 +37,9 @@ "license": "Apache-2.0", "devDependencies": { "@sim/tsconfig": "workspace:*", - "@types/node": "24.2.1", + "@types/node": "24.19.2", "typescript": "^7.0.2", - "vitest": "^5.0.1" + "vitest": "^5.0.4" }, "engines": { "node": ">=18" diff --git a/packages/utils/package.json b/packages/utils/package.json index 497cad35e92..f27d613b91b 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -92,6 +92,6 @@ "devDependencies": { "@sim/tsconfig": "workspace:*", "typescript": "^7.0.2", - "vitest": "^5.0.1" + "vitest": "^5.0.4" } } diff --git a/packages/workflow-persistence/package.json b/packages/workflow-persistence/package.json index 712da721ea6..241f15049f3 100644 --- a/packages/workflow-persistence/package.json +++ b/packages/workflow-persistence/package.json @@ -45,13 +45,13 @@ "@sim/logger": "workspace:*", "@sim/utils": "workspace:*", "@sim/workflow-types": "workspace:*", - "@xyflow/react": "12.11.3", - "drizzle-orm": "^0.45.2" + "@xyflow/react": "12.12.0", + "drizzle-orm": "^0.45.4" }, "devDependencies": { "@sim/tsconfig": "workspace:*", - "@types/node": "24.2.1", + "@types/node": "24.19.2", "typescript": "^7.0.2", - "vitest": "^5.0.1" + "vitest": "^5.0.4" } } diff --git a/packages/workflow-renderer/package.json b/packages/workflow-renderer/package.json index ce1bb04760d..d6ff7cad371 100644 --- a/packages/workflow-renderer/package.json +++ b/packages/workflow-renderer/package.json @@ -65,11 +65,11 @@ "@sim/tsconfig": "workspace:*", "@sim/utils": "workspace:*", "@sim/workflow-types": "workspace:*", - "@testing-library/jest-dom": "^6.6.3", - "@types/hast": "^3.0.4", + "@testing-library/jest-dom": "^6.10.0", + "@types/hast": "3.0.5", "@types/react": "^19", "@types/react-dom": "^19", - "@xyflow/react": "12.11.3", + "@xyflow/react": "12.12.0", "jsdom": "^26.0.0", "react": "19.2.4", "react-dom": "19.2.4", @@ -77,6 +77,6 @@ "remark-gfm": "^4.0.1", "streamdown": "2.5.0", "typescript": "^7.0.2", - "vitest": "^5.0.1" + "vitest": "^5.0.4" } } diff --git a/packages/workflow-types/package.json b/packages/workflow-types/package.json index 87fc00d40bc..3e351e7fe59 100644 --- a/packages/workflow-types/package.json +++ b/packages/workflow-types/package.json @@ -31,7 +31,7 @@ }, "devDependencies": { "@sim/tsconfig": "workspace:*", - "@xyflow/react": "12.11.3", + "@xyflow/react": "12.12.0", "typescript": "^7.0.2" } } diff --git a/scripts/check-test-types.baseline.json b/scripts/check-test-types.baseline.json index dfb87847f4d..d0d62062e90 100644 --- a/scripts/check-test-types.baseline.json +++ b/scripts/check-test-types.baseline.json @@ -1118,7 +1118,6 @@ "TS2353": 1 }, "apps/sim/lib/core/network/gateway.server.test.ts": { - "TS2724": 1, "TS2740": 2 }, "apps/sim/lib/core/network/resource-scope.server.test.ts": { @@ -1311,9 +1310,6 @@ "TS2345": 3, "TS2739": 8 }, - "apps/sim/lib/execution/remote-sandbox/session-file-snapshot.test.ts": { - "TS2322": 1 - }, "apps/sim/lib/execution/remote-sandbox/session-sandbox.test.ts": { "TS2322": 1 }, diff --git a/scripts/check-unused-exports.baseline.json b/scripts/check-unused-exports.baseline.json index b8165c3fe12..819df44b2ea 100644 --- a/scripts/check-unused-exports.baseline.json +++ b/scripts/check-unused-exports.baseline.json @@ -4054,7 +4054,6 @@ "apps/sim/lib/billing/core/usage-analytics.ts#UsageBreakdownEntry", "apps/sim/lib/billing/core/usage.ts#checkUsageStatus", "apps/sim/lib/billing/core/usage.ts#getOrgLastPeriodCost", - "apps/sim/lib/billing/core/usage.ts#updateUserUsageLimit", "apps/sim/lib/billing/credits/balance.ts#CreditBalanceInfo", "apps/sim/lib/billing/credits/balance.ts#getCreditBalance", "apps/sim/lib/billing/cycle-close.ts#CycleCloseStatus", From 72855bc5d5ac84e1e4423f7b9bcb24444442ab34 Mon Sep 17 00:00:00 2001 From: Waleed Date: Mon, 19 Oct 2026 15:50:49 -0700 Subject: [PATCH 03/12] chore(mothership): drop unused worker contract copies (#9228) --- apps/sim/lib/mothership/generated/account.ts | 26 -- .../lib/mothership/generated/computer-use.ts | 300 ------------------ .../lib/mothership/generated/local-files.ts | 40 --- apps/sim/lib/mothership/generated/protocol.ts | 7 - knip.jsonc | 6 +- .../src/computer-use.generated.ts | 3 - 6 files changed, 1 insertion(+), 381 deletions(-) delete mode 100644 apps/sim/lib/mothership/generated/account.ts delete mode 100644 apps/sim/lib/mothership/generated/computer-use.ts delete mode 100644 apps/sim/lib/mothership/generated/local-files.ts diff --git a/apps/sim/lib/mothership/generated/account.ts b/apps/sim/lib/mothership/generated/account.ts deleted file mode 100644 index 13514c76a54..00000000000 --- a/apps/sim/lib/mothership/generated/account.ts +++ /dev/null @@ -1,26 +0,0 @@ -// GENERATED — do not edit. Source of truth: mothership worker packages/contracts/src/account.ts -// Regenerate with `bun run contracts:sync` in the worker. - -import { z } from "zod"; - -export const ListCustomerKeys = z.strictObject({ userId: z.string().trim().min(1).max(200) }); -export const CreateCustomerKey = ListCustomerKeys.extend({ name: z.string().trim().max(200).optional() }); -export const DeleteCustomerKey = ListCustomerKeys.extend({ apiKeyId: z.uuid() }); - -export const CleanupChats = z.strictObject({ chatIds: z.array(z.uuid()).min(1).max(1000) }); - -export const AdminReportRange = z - .strictObject({ - start: z.iso.datetime({ offset: true }), - end: z.iso.datetime({ offset: true }), - userId: z.string().max(200).optional(), - }) - .refine((range) => Date.parse(range.start) <= Date.parse(range.end), "Start must precede end"); -export const IssueLicense = z.strictObject({ - name: z.string().trim().min(1).max(200), - approvalReference: z.string().trim().min(1).max(2000), - expirationDate: z.string().trim().optional(), -}); -export const LicenseDetails = z - .strictObject({ id: z.uuid().optional(), name: z.string().min(1).max(200).optional() }) - .refine((input) => Boolean(input.id || input.name), "License id or name is required"); diff --git a/apps/sim/lib/mothership/generated/computer-use.ts b/apps/sim/lib/mothership/generated/computer-use.ts deleted file mode 100644 index 71f908ed036..00000000000 --- a/apps/sim/lib/mothership/generated/computer-use.ts +++ /dev/null @@ -1,300 +0,0 @@ -// GENERATED — do not edit. Source of truth: mothership worker packages/contracts/src/computer-use.ts -// Regenerate with `bun run contracts:sync` in the worker. - -import { z } from "zod"; - -const BundleId = z - .string() - .min(1) - .max(255) - .describe( - "Exact bundleId returned by list_apps or a known installed macOS app. get_app_state may launch it.", - ); -const SnapshotId = z - .string() - .min(1) - .max(128) - .describe("Latest unconsumed snapshotId from get_app_state for this app. Actions consume it."); -const ElementId = z.string().min(1).max(128).describe("Element reference from that snapshot."); -const WindowId = z.string().min(1).max(128).describe("Window reference from that snapshot."); -/** Input fields shared across actions keep one description: Anthropic flattens the union and anyOfs differing copies. */ -const TargetWindowId = WindowId.optional().describe( - "Window reference from an earlier snapshot of this app. If omitted, get_app_state and press_key use the app's focused window; coordinate actions use the window the snapshot selected.", -); -const IncludeScreenshot = z - .boolean() - .optional() - .describe( - "Set true to include a screenshot in the returned state. On actions it overrides observeAfter.includeScreenshot.", - ); -const Coordinate = z.number().nonnegative().max(100_000); -const ObserveAfter = { - observeAfter: z - .strictObject({ includeScreenshot: z.boolean().optional() }) - .optional() - .describe( - "Every mutation returns fresh app state by default. Set includeScreenshot to true to include an image; otherwise no screenshot is captured. Observation failure never retries the action.", - ), - includeScreenshot: IncludeScreenshot, -}; -const InputSequenceStep = z.discriminatedUnion("action", [ - z.strictObject({ action: z.literal("type_text"), text: z.string().max(32_000) }), - z.strictObject({ action: z.literal("press_key"), key: z.string().min(1).max(128) }), -]); -const ElementTarget = { bundleId: BundleId, snapshotId: SnapshotId, elementId: ElementId }; -const PointTarget = { - bundleId: BundleId, - snapshotId: SnapshotId, - windowId: TargetWindowId, - x: Coordinate, - y: Coordinate, -}; -const ClickOptions = { - button: z.enum(["left", "right"]).optional(), - clickCount: z.number().int().min(1).max(3).optional(), -}; -const ScrollOffsets = { - deltaX: z - .number() - .min(-10_000) - .max(10_000) - .optional() - .describe( - "Horizontal scroll distance in points; positive scrolls right, negative left. Omit for 0 when deltaY is set.", - ), - deltaY: z - .number() - .min(-10_000) - .max(10_000) - .optional() - .describe( - "Vertical scroll distance in points; positive scrolls down, negative up. Omit for 0 when deltaX is set.", - ), -}; - -const hasScrollDistance = (input: { deltaX?: number | undefined; deltaY?: number | undefined }) => - input.deltaX !== undefined || input.deltaY !== undefined; - -/** Strict branches require an observed, unambiguous target before native input. */ -export const ComputerUseSchema = z.union([ - z.strictObject({ action: z.literal("status") }), - z.strictObject({ action: z.literal("list_apps") }), - z.strictObject({ action: z.literal("activate_app"), bundleId: BundleId, ...ObserveAfter }), - z.strictObject({ - action: z.literal("get_app_state"), - bundleId: BundleId, - windowId: TargetWindowId, - includeScreenshot: IncludeScreenshot, - }), - z.strictObject({ action: z.literal("click"), ...ElementTarget, ...ObserveAfter, ...ClickOptions }), - z.strictObject({ action: z.literal("click"), ...PointTarget, ...ObserveAfter, ...ClickOptions }), - z.strictObject({ - action: z.literal("type_text"), - ...ObserveAfter, - ...ElementTarget, - text: z.string().max(32_000).describe("Literal text to type into the observed editable element."), - }), - z.strictObject({ - action: z.literal("press_key"), - ...ObserveAfter, - bundleId: BundleId, - snapshotId: SnapshotId, - windowId: TargetWindowId, - elementId: ElementId.optional(), - key: z - .string() - .min(1) - .max(128) - .describe( - "One key or chord, such as Enter, Tab, Escape, or Cmd+A. With elementId, focuses that element first.", - ), - }), - z - .strictObject({ action: z.literal("scroll"), ...ElementTarget, ...ObserveAfter, ...ScrollOffsets }) - .refine(hasScrollDistance, "Scroll needs deltaX or deltaY."), - z - .strictObject({ action: z.literal("scroll"), ...PointTarget, ...ObserveAfter, ...ScrollOffsets }) - .refine(hasScrollDistance, "Scroll needs deltaX or deltaY."), - z.strictObject({ - action: z.literal("drag"), - ...PointTarget, - ...ObserveAfter, - toX: Coordinate, - toY: Coordinate, - }), - z.strictObject({ - action: z.literal("set_value"), - ...ObserveAfter, - ...ElementTarget, - value: z.string().max(32_000).describe("Replacement value for an accessibility-writable element."), - }), - z.strictObject({ - action: z.literal("input_sequence"), - ...ElementTarget, - ...ObserveAfter, - activateFirst: z - .boolean() - .optional() - .describe( - "Explicitly bring this app to the foreground before the batch. Defaults to false; leave omitted for background input. An inactive app alone does not require activation. Do not set true when the user requires background operation. Editor, window, and geometry checks still apply.", - ), - steps: z - .array(InputSequenceStep) - .min(1) - .max(32) - .refine( - (steps) => - steps.reduce((total, step) => total + (step.action === "type_text" ? step.text.length : 0), 0) <= - 32_000, - "Combined sequence text exceeds 32000 UTF-16 code units", - ) - .describe( - "Sequential input into this observed editor. Stops if editor/window focus changes. At most 32 steps and 32000 total text code units; never automatically retry a partial sequence.", - ), - }), - z.strictObject({ - action: z.literal("perform_action"), - ...ObserveAfter, - ...ElementTarget, - accessibilityAction: z.string().min(1).max(128).describe("Exact action advertised by this element."), - }), -]); -export type ComputerUseInput = z.infer; - -export const ComputerUseStatusSchema = z.strictObject({ - kind: z.literal("status"), - platform: z.literal("darwin"), - accessibility: z.boolean(), - screenRecording: z.boolean(), -}); -export type ComputerUseStatus = z.infer; - -export const ComputerUseAppSchema = z.strictObject({ - bundleId: BundleId, - name: z.string().max(1024), - pid: z.number().int().positive().optional(), - isActive: z.boolean(), -}); -export type ComputerUseApp = z.infer; - -export const ComputerUseWindowSchema = z.strictObject({ - windowId: WindowId, - title: z.string().max(4096), - x: z.number(), - y: z.number(), - width: z.number().nonnegative(), - height: z.number().nonnegative(), -}); -export type ComputerUseWindow = z.infer; - -const ComputerUseNodeSchema = z.strictObject({ - elementId: ElementId, - role: z.string().max(128), - parentId: ElementId.optional(), - label: z.string().max(8192).optional(), - value: z.string().max(32_000).optional(), - enabled: z.boolean().optional(), - focused: z - .boolean() - .optional() - .describe( - "Accessibility focus within this app; does not imply the app is foreground or an item is selected.", - ), - editable: z.boolean().optional(), - placeholder: z.string().max(1024).optional(), - actions: z.array(z.string().max(128)).max(128), - windowId: WindowId.optional(), - x: z.number().optional().describe("Global screen coordinate in points, not window-local."), - y: z.number().optional().describe("Global screen coordinate in points, not window-local."), - width: z.number().nonnegative().optional(), - height: z.number().nonnegative().optional(), -}); - -export const ComputerUseScreenshotSchema = z.strictObject({ - base64: z.string().min(1).max(11_200_000), - mimeType: z.literal("image/png"), - width: z.number().int().positive(), - height: z.number().int().positive(), -}); - -export const ComputerUseSnapshotSchema = z.strictObject({ - kind: z.literal("state"), - bundleId: BundleId, - isActive: z - .boolean() - .optional() - .describe( - "Whether this app was foreground when observed. Omitted means unknown; inactive apps may still support background controls.", - ), - snapshotId: SnapshotId, - windowId: WindowId, - windows: z.array(ComputerUseWindowSchema).max(100), - nodes: z.array(ComputerUseNodeSchema).max(2000), - truncated: z.boolean(), - screenshot: ComputerUseScreenshotSchema.optional(), - screenshotError: z.string().max(2000).optional(), -}); -export type ComputerUseSnapshot = z.infer; - -export const ComputerUseResultSchema = z.discriminatedUnion("kind", [ - ComputerUseStatusSchema, - z.strictObject({ kind: z.literal("apps"), apps: z.array(ComputerUseAppSchema).max(1000) }), - ComputerUseSnapshotSchema, - z - .strictObject({ - kind: z.literal("action"), - action: z.enum([ - "activate_app", - "click", - "type_text", - "press_key", - "scroll", - "drag", - "set_value", - "perform_action", - "input_sequence", - ]), - bundleId: BundleId, - dispatched: z.literal(true), - verified: z.boolean(), - sequence: z - .strictObject({ - completedSteps: z.number().int().min(0).max(32), - totalSteps: z.number().int().min(1).max(32), - error: z.string().min(1).max(2000).optional(), - }) - .optional(), - observation: ComputerUseSnapshotSchema.optional(), - observationError: z.string().min(1).max(2000).optional(), - }) - .superRefine((result, ctx) => { - if (result.action === "input_sequence" && !result.sequence) - ctx.addIssue({ - code: "custom", - path: ["sequence"], - message: "Input sequences require dispatch progress", - }); - if (result.sequence && result.sequence.completedSteps > result.sequence.totalSteps) - ctx.addIssue({ - code: "custom", - path: ["sequence", "completedSteps"], - message: "Completed steps cannot exceed total steps", - }); - }), -]); -export type ComputerUseResult = z.infer; - -export const ComputerUseNativeErrorSchema = z.strictObject({ - code: z.string().min(1).max(128), - message: z.string().min(1).max(2000), - dispatchState: z.literal("not_started").optional(), -}); -export type ComputerUseNativeError = z.infer; - -export const ComputerUseNativeReplySchema = z.union([ - z.strictObject({ id: z.string().min(1).max(128), result: ComputerUseResultSchema }), - z.strictObject({ - id: z.string().min(1).max(128), - error: ComputerUseNativeErrorSchema, - }), -]); diff --git a/apps/sim/lib/mothership/generated/local-files.ts b/apps/sim/lib/mothership/generated/local-files.ts deleted file mode 100644 index c61a102217d..00000000000 --- a/apps/sim/lib/mothership/generated/local-files.ts +++ /dev/null @@ -1,40 +0,0 @@ -// GENERATED — do not edit. Source of truth: mothership worker packages/contracts/src/local-files.ts -// Regenerate with `bun run contracts:sync` in the worker. - -import { z } from "zod"; - -export const ReadLocalFileSchema = z.strictObject({ - path: z - .string() - .min(1) - .max(4096) - .describe("Absolute path or ~/ path on the user's machine. A directory lists its children."), - offset: z.number().int().nonnegative().optional().describe("Byte offset for a text read, default 0."), - limit: z - .number() - .int() - .min(1) - .max(64000) - .optional() - .describe( - "Maximum text bytes, default 64000. Images/PDFs use visual content; PDFs include the first 20 pages.", - ), -}); -export const ImportLocalFilesSchema = z.strictObject({ - path: z - .string() - .min(1) - .max(4096) - .describe("Absolute path or ~/ path of a file or directory on the user's machine."), - targetWorkspaceId: z - .uuid() - .describe( - "Explicit destination Sim workspace ID. In organization mode, discover accessible workspaces before choosing the destination.", - ), - folderId: z - .uuid() - .optional() - .describe( - "Optional existing destination folder ID. Directories retain their root folder and subdirectories.", - ), -}); diff --git a/apps/sim/lib/mothership/generated/protocol.ts b/apps/sim/lib/mothership/generated/protocol.ts index fe803f93934..d73605eeed4 100644 --- a/apps/sim/lib/mothership/generated/protocol.ts +++ b/apps/sim/lib/mothership/generated/protocol.ts @@ -496,13 +496,6 @@ export const TitleRequest = z.strictObject({ }); export type TitleRequest = z.infer; -/** The 409 body for a duplicate send while a sibling instance streams (S32). */ -export interface ActiveStreamConflict { - error: "active_stream"; - streamId: string; - status: string; -} - /** The 426 body for protocol version skew (S43). */ export interface ProtocolMismatch { error: "protocol_version_mismatch"; diff --git a/knip.jsonc b/knip.jsonc index 99112b5952e..13a62400003 100644 --- a/knip.jsonc +++ b/knip.jsonc @@ -36,11 +36,7 @@ // Compile-time fixture compatibility assertion, included by tsconfig. "lib/table/fixture-contract.ts", // scripts/generate-docs.ts imports this through pathToFileURL. - "app/(landing)/integrations/data/landing-content.ts", - // Mirrored from the sibling worker's contracts:sync, not app-owned. - "lib/mothership/generated/account.ts", - "lib/mothership/generated/local-files.ts", - "lib/mothership/generated/computer-use.ts" + "app/(landing)/integrations/data/landing-content.ts" ], // Required/discoverable barrels whose children have direct live imports. // Ignore only the barrel file finding, so it cannot keep dead children alive. diff --git a/packages/desktop-bridge/src/computer-use.generated.ts b/packages/desktop-bridge/src/computer-use.generated.ts index 71f908ed036..6cd48b45022 100644 --- a/packages/desktop-bridge/src/computer-use.generated.ts +++ b/packages/desktop-bridge/src/computer-use.generated.ts @@ -167,7 +167,6 @@ export const ComputerUseStatusSchema = z.strictObject({ accessibility: z.boolean(), screenRecording: z.boolean(), }); -export type ComputerUseStatus = z.infer; export const ComputerUseAppSchema = z.strictObject({ bundleId: BundleId, @@ -175,7 +174,6 @@ export const ComputerUseAppSchema = z.strictObject({ pid: z.number().int().positive().optional(), isActive: z.boolean(), }); -export type ComputerUseApp = z.infer; export const ComputerUseWindowSchema = z.strictObject({ windowId: WindowId, @@ -185,7 +183,6 @@ export const ComputerUseWindowSchema = z.strictObject({ width: z.number().nonnegative(), height: z.number().nonnegative(), }); -export type ComputerUseWindow = z.infer; const ComputerUseNodeSchema = z.strictObject({ elementId: ElementId, From 4f2645452d2d6c8f07c0c49b08c5a24a8a5c415a Mon Sep 17 00:00:00 2001 From: Waleed Date: Mon, 19 Oct 2026 16:32:37 -0700 Subject: [PATCH 04/12] feat(library): Best Pipedream Alternatives in 2026 with Visual Builders (#9229) * feat(library): Best Pipedream Alternatives in 2026 with Visual Builders * Pi Babysit: address PR #9229 feedback * docs(library): verify and correct pipedream alternatives facts --------- Co-authored-by: Sim Pi Agent --- .../index.mdx | 123 ++++++++++++++++++ .../cover.jpg | Bin 0 -> 32699 bytes 2 files changed, 123 insertions(+) create mode 100644 apps/sim/content/library/best-pipedream-alternatives-2026/index.mdx create mode 100644 apps/sim/public/library/best-pipedream-alternatives-2026/cover.jpg diff --git a/apps/sim/content/library/best-pipedream-alternatives-2026/index.mdx b/apps/sim/content/library/best-pipedream-alternatives-2026/index.mdx new file mode 100644 index 00000000000..2d4d0d9e240 --- /dev/null +++ b/apps/sim/content/library/best-pipedream-alternatives-2026/index.mdx @@ -0,0 +1,123 @@ +--- +slug: best-pipedream-alternatives-2026 +title: 'Best Pipedream Alternatives in 2026 with Visual Builders' +description: 'Pipedream Workflows shuts down March 31, 2027. Compare visual alternatives with AI agents: Sim, Zapier, Make, n8n, and Workato on pricing and hosting.' +seoTitle: 'Pipedream Alternatives: 5 Visual Builders' +date: 2026-10-19 +updated: 2026-10-19 +authors: + - andrew +readingTime: 9 +tags: [AI Agents, Automation, Visual Builders, Pipedream, Sim] +ogImage: /library/best-pipedream-alternatives-2026/cover.jpg +draft: false +faq: + - q: "What happens to my existing Pipedream workflows?" + a: "Pipedream says existing workflows keep running normally through March 31, 2027, and all Workflows data is deleted by April 30, 2027. Its export tool downloads the structure of your workflows as JSON, one project at a time. Rebuild and test their triggers, code steps, and connected accounts in your new tool before switching off the originals." + - q: "Can a visual builder still run custom code?" + a: "Yes. Sim's Function block runs JavaScript, Python, or Shell code as one step of a workflow, and its API block sends an HTTP request and passes the response to later steps. n8n's Code node supports JavaScript and Python." + - q: "Does self-hosting keep AI agent data private?" + a: "Self-hosting gives you control over where the workflow runs, but a hosted AI model still receives the data you send it. A self-hosted Sim deployment supports local models through Ollama and vLLM. Check the model connection, logs, and storage before treating any deployment as private." + - q: "How should I compare pricing across tools?" + a: "Estimate a typical month of runs rather than comparing entry prices. Zapier counts successful tasks, Make consumes credits per module action, and n8n counts workflow executions. Sim charges per user on paid plans and includes a monthly credit allowance. A workflow with many steps can therefore produce different bills across tools. Include seats, expected usage, overages, and any hosting costs in your estimate." +--- + +## TL;DR + +- **Sim** is an open-source AI workspace for teams to build, deploy, and manage AI agents. Choose it if you want a [workflow builder with AI agent blocks](https://docs.sim.ai/introduction) and the option to build in Chat or with code. +- **Zapier** suits you if you want straightforward trigger-and-action automations. +- **Make** suits you if you want visual branching with routers and filters in an interface that also hosts AI agents. +- **n8n** suits you if you can manage a more technical builder and want a [free self-hosted Community Edition](https://docs.n8n.io/deploy/host-n8n/community-edition-features) with a dedicated [AI Agent node](https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent/). +- **Workato** suits you if enterprise integration and governance matter more than self-serve simplicity. + +Pipedream's [Workflows product shuts down on March 31, 2027](https://pipedream.com/docs/workflows), so teams using it need an alternative before then. + +## Why teams are leaving Pipedream for a visual builder + +Pipedream's Workflows product is [in maintenance mode, no longer accepts signups or subscriptions, and shuts down on March 31, 2027](https://pipedream.com/docs/workflows). Existing workflows keep running until then, and all Workflows data, including the credentials and OAuth tokens for connected accounts, will be permanently deleted by April 30, 2027. Workday [announced a deal to acquire Pipedream](https://newsroom.workday.com/2025-11-19-Workday-Signs-Definitive-Agreement-to-Acquire-Pipedream) in November 2025 and [has since closed it](https://newsroom.workday.com/2026-02-24-Workday-Announces-Fiscal-2026-Fourth-Quarter-and-Full-Year-Financial-Results). Pipedream now focuses on [Connect](https://pipedream.com/docs/connect), a developer toolkit that adds integrations to your own app or AI agent through SDKs, APIs, and an MCP server. MCP (Model Context Protocol) is a standard that lets AI apps call outside tools. Connect does not replace the visual builder for people who need to create automations without writing code. + +Workflows was built around code. Any step could run [Node.js, Python, Go, or Bash](https://pipedream.com/docs/workflows/building-workflows/code), and Pipedream offers [Data Stores as key-value storage](https://pipedream.com/docs/workflows/building-workflows/code/python/using-data-stores) rather than spreadsheet-like tables. + +For a replacement, assess how far you can build visually before you need code and what its AI agents can do. Then check whether you can run it on your own infrastructure, whether it connects to your apps, and whether its pricing lets you estimate costs for your expected usage. Our [AI workflow automation buyer's checklist](https://www.sim.ai/library/ai-workflow-automation-platform-buyers-checklist) provides a broader set of evaluation questions. + +## Comparison table + +As of October 2026, these are the main differences among the five alternatives: + +| Rank | Tool | Starting price | Visual vs code | Runs on your infrastructure | Integrations | AI agent support | +|---|---|---|---|---|---|---| +| 1 | Sim | [Free](https://www.sim.ai/pricing), 1,000 one-time credits | Visual builder, Chat, and code | Yes, with the Apache 2.0 core; [enterprise features are separately licensed](https://github.com/simstudioai/sim/blob/main/apps/sim/ee/LICENSE) | [270+](https://www.sim.ai/pricing) | Agent blocks and an MCP server | +| 2 | Zapier | [Free](https://zapier.com/pricing), 100 tasks/month | Visual, with optional JavaScript or Python code steps | No self-hosted edition listed | [9,000+ apps](https://zapier.com/pricing) | [Zapier Agents, Chatbots, and MCP](https://zapier.com/pricing) | +| 3 | Make | [Free](https://www.make.com/en/pricing), 1,000 credits/month | Visual, with an HTTP app for any API | Cloud scenarios; an Enterprise [on-prem agent](https://help.make.com/on-premise-agent?v=2) reaches local systems | [3,500+ apps](https://www.make.com/en/pricing) | [Make AI Agents](https://www.make.com/en/ai-agents) in the same visual platform | +| 4 | n8n | [Free self-hosted Community Edition](https://docs.n8n.io/deploy/host-n8n/community-edition-features) | Visual, with JavaScript and Python code steps | Yes | [Over 500](https://n8n.io/) | [Dedicated AI Agent node](https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent/) | +| 5 | Workato | [Free](https://www.workato.com/free), 50K one-time credits | [Workflow orchestration](https://www.workato.com/free) | Cloud platform; an [on-prem agent](https://docs.workato.com/on-prem) connects private systems to Workato cloud | [Thousands of SaaS apps, databases, and ERPs](https://www.workato.com/integrations) | [Agent Studio and Genies](https://www.workato.com/free) | + +### Sim + +**Best for** Teams that want a [Pipedream alternative](https://www.sim.ai/comparisons/pipedream) where non-developers can build AI agents without making code steps the default. + +**What it is** Sim is an open-source AI workspace for teams, where you build, deploy, and manage AI agents. Chat, the workflow builder, Tables, Files, and a Knowledge Base for your agents' documents sit in one workspace. You can build an agent by describing it in Chat, connecting blocks in the workflow builder, or using the API and SDKs. In the workflow builder, you connect blocks into agent logic, configure their inputs, and inspect execution step by step. The [three build methods](https://docs.sim.ai/introduction) let a non-technical colleague start in Chat or the workflow builder while a developer adds programmatic control when needed. For more context on this category, see our comparison of the [best AI workflow builders](https://www.sim.ai/library/best-ai-workflow-builders). + +**Pros** Sim's [MCP server](https://docs.sim.ai/mcp/overview) lets an external AI app, such as Claude, manage workspaces, run and deploy workflows, and work with tables, files, knowledge bases, and logs. A colleague can use an agent to operate workflows without editing the workflow builder or writing a Pipedream-style code step. + +Anyone can self-host Sim's Apache 2.0 core for free with Docker Compose or Kubernetes; [enterprise features have a separate license](https://github.com/simstudioai/sim/blob/main/apps/sim/ee/LICENSE). The [`bunx sim-setup` wizard](https://docs.sim.ai/platform/self-hosting/docker) creates a deployment directory, generates secrets, and starts the published Sim images with Docker Compose. Self-hosted Sim [supports local models](https://docs.sim.ai/platform/self-hosting/docker) through Ollama, vLLM, LM Studio, or LiteLLM. That gives you a way to run core workflows on infrastructure you manage rather than sending every agent request to a hosted model. [Sim's repository](https://github.com/simstudioai/sim) documents the setup and core license. + +**Cons** Self-hosting Sim still requires someone to maintain Docker and the deployment. The Apache 2.0 license covers Sim's core, but enterprise features are under the separate [Sim Enterprise License](https://github.com/simstudioai/sim/blob/main/apps/sim/ee/LICENSE), and production use of them requires an active Sim Enterprise subscription. + +**Pricing** Sim's [plans](https://www.sim.ai/pricing) are Free with 1,000 one-time credits (worth $5), Pro at $25 per user per month with 6,000 monthly credits plus a 2,000-credit weekly refresh, Max at $100 per user per month with 25,000 monthly credits plus a 4,000-credit weekly refresh, and Enterprise at custom pricing. The pricing table lists supported Self Hosting as an Enterprise feature, alongside SSO (single sign-on, one company login for every app) and SOC 2 compliance. That support plan is separate from the Apache 2.0 core, which anyone can self-host for free. + +### Zapier + +**Best for** Zapier suits non-technical teams that want to build automations around familiar triggers and actions. + +**What it is** Zapier's builder connects apps through Zaps. A trigger is the event that starts a Zap, and actions are the events the Zap performs afterward. [Code steps can run custom JavaScript or Python](https://help.zapier.com/hc/en-us/articles/45405528551181-Using-Code-by-Zapier) inside a Zap. + +**Pros** Zapier gives you a straightforward way to build routine workflows without writing code. According to its [limits documentation](https://help.zapier.com/hc/en-us/articles/8496181445261-Zap-limits), a task counts when an action step runs successfully, while triggers, filters, and certain built-in tools do not count as tasks. + +**Cons** The [Free plan](https://zapier.com/pricing) is limited to two-step Zaps, so multi-step automation requires a paid plan. Zapier does not list a self-hosted edition. + +**Pricing** The [free plan](https://zapier.com/pricing) includes 100 tasks per month, and Professional starts at $19.99 per month. Paid-plan customers can use [pay-per-task billing](https://help.zapier.com/hc/en-us/articles/15279018245901-How-pay-per-task-billing-works-in-Zapier) to keep workflows running beyond the included task allowance. + +### Make + +**Best for** Choose Make if you want more visual control than Zapier offers without taking on n8n's more technical builder. + +**What it is** Make lets you build automations, called scenarios, in a visual interface. A [router](https://help.make.com/router) branches a scenario into several chains of modules, with filters that set the conditions for each route. [Subscenarios](https://help.make.com/subscenarios) let you split a large scenario into smaller parts and reuse logic across parent scenarios. + +**Pros** Make's branching tools help you inspect and change multi-step workflows without writing code. The [HTTP app](https://apps.make.com/http) connects to API services that have no Make integration. [Make AI Agents](https://www.make.com/en/ai-agents) run in the same visual platform and expose how agents reason and use tools. + +**Cons** For scenarios to reach applications and databases on your local network, Make requires its [on-prem agent](https://help.make.com/on-premise-agent?v=2), which is available only to Enterprise customers. AI modules that use Make's AI Provider consume credits based on tokens as well as operations, which makes AI-heavy scenarios harder to estimate. + +**Pricing** Make [consumes credits](https://help.make.com/credits?fromSubscription=true) when modules perform actions, and non-AI app operations generally use one credit. Make's AI Provider accounts for tokens and operations. The [free plan](https://www.make.com/en/pricing) includes 1,000 credits per month, and paid plans are named Core, Pro, Teams, and Enterprise. + +### n8n + +**Best for** Teams that want to self-host workflows and build AI agents, and can manage a more technical visual builder. + +**What it is** n8n lets you connect apps visually, with a [Code node](https://docs.n8n.io/build/code-in-n8n) for JavaScript or Python when a workflow needs custom logic. It offers a free self-hosted Community Edition alongside paid cloud and self-hosted plans. + +**Pros** n8n's [AI Agent node](https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent/) connects a chat model and one or more tools, and the agent decides which tools to call to complete a task. [AI agents can also use attached memory](https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent/tools-agent). Self-hosting gives you control over where workflows run. Our guide to [open-source AI agent platforms](https://www.sim.ai/library/open-source-ai-agent-platforms) explains how licensing and deployment differ across tools in this category. + +**Cons** You take on running and maintaining the deployment when you self-host. The free [Community Edition](https://docs.n8n.io/deploy/host-n8n/community-edition-features) does not include every collaboration and access-control feature available in paid editions. + +**Pricing** The self-hosted Community Edition is free. [Cloud Starter](https://n8n.io/pricing/) costs €20 per month billed annually. n8n prices its cloud plans by monthly workflow executions regardless of workflow complexity. + +### Workato + +**Best for** Organizations that need IT oversight and governance of integrations more than a self-serve builder. + +**What it is** Workato is a cloud integration platform with workflow orchestration and agent capabilities. Its [on-prem agent](https://docs.workato.com/on-prem) runs inside your private network and creates a secure connection to Workato cloud without requiring inbound firewall access. + +**Pros** The on-prem agent lets your IT staff connect internal systems while the integration platform stays cloud-managed. Workato offers [pre-built connectors](https://www.workato.com/integrations) for SaaS apps, databases, and ERPs, both on-prem and in the cloud. + +**Cons** The on-prem agent connects your network to Workato cloud rather than hosting the platform on your infrastructure. The [Enterprise plan](https://www.workato.com/free) has no published price, so you need to ask Workato for a quote. + +**Pricing** Workato's [plans](https://www.workato.com/free) are Free with 50K one-time credits, Pro at $100 per month with 3.5K credits per month and up to 3 users per workspace, and Enterprise at custom pricing. Its pricing model uses Workato credits, so compare the included allowance and expected usage with a sales quote for enterprise requirements. + +## Why Sim fits non-developers who need AI agents + +Sim gives non-developers a visual way to build AI agents without closing off more technical work. You can describe a workflow in Chat, refine it in the workflow builder, and use the API or SDKs when you need code. Those [build methods](https://docs.sim.ai/introduction) let a non-technical colleague work on the same workflow that a developer can extend. + +Sim also lets external AI apps operate the workflows you build. Through its [MCP server](https://docs.sim.ai/mcp/overview), an agent can manage workspaces and run or deploy workflows. Sim publishes its core under Apache 2.0, so anyone can self-host it for free; the [separately licensed enterprise features](https://github.com/simstudioai/sim/blob/main/apps/sim/ee/LICENSE) require an active Enterprise subscription for production use. + +Together, those options make Sim a strong fit if you need an approachable builder, agent control, and a path to hosting the software yourself. If you are moving existing automations, the [Sim and Pipedream comparison](https://www.sim.ai/comparisons/pipedream) covers that decision in more detail. You can also compare the design choices behind [AI-native and traditional workflow automation](https://www.sim.ai/library/ai-native-workflow-automation-vs-traditional-automation). diff --git a/apps/sim/public/library/best-pipedream-alternatives-2026/cover.jpg b/apps/sim/public/library/best-pipedream-alternatives-2026/cover.jpg new file mode 100644 index 0000000000000000000000000000000000000000..973cce088134786a6ec8c4efae9b6dabd0f3f303 GIT binary patch literal 32699 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 E1!DBvkpKVy literal 0 HcmV?d00001 From 064f10d5b2797fee2276210a950aa64571e20a8f Mon Sep 17 00:00:00 2001 From: Waleed Date: Mon, 19 Oct 2026 16:33:05 -0700 Subject: [PATCH 05/12] feat(library): Best Vellum Alternatives in 2026 for Non-Engineers (#9230) * feat(library): Best Vellum Alternatives in 2026 for Non-Engineers * docs(library): verify and correct Vellum alternatives facts --------- Co-authored-by: Sim Pi Agent --- .../best-vellum-alternatives-2026/index.mdx | 131 ++++++++++++++++++ .../best-vellum-alternatives-2026/cover.jpg | Bin 0 -> 29380 bytes 2 files changed, 131 insertions(+) create mode 100644 apps/sim/content/library/best-vellum-alternatives-2026/index.mdx create mode 100644 apps/sim/public/library/best-vellum-alternatives-2026/cover.jpg diff --git a/apps/sim/content/library/best-vellum-alternatives-2026/index.mdx b/apps/sim/content/library/best-vellum-alternatives-2026/index.mdx new file mode 100644 index 00000000000..cd0e74e6ad6 --- /dev/null +++ b/apps/sim/content/library/best-vellum-alternatives-2026/index.mdx @@ -0,0 +1,131 @@ +--- +slug: best-vellum-alternatives-2026 +title: 'Best Vellum Alternatives in 2026 for Non-Engineers' +description: 'Compare Vellum alternatives for non-engineers across visual building, evaluation, deployment, self-hosting, and pricing.' +date: 2026-10-19 +updated: 2026-10-19 +authors: + - andrew +readingTime: 7 +tags: [AI Agents, Vellum Alternatives, AI Tools, Sim] +ogImage: /library/best-vellum-alternatives-2026/cover.jpg +draft: false +faq: + - q: "What makes an AI builder friendly to non-engineers?" + a: "You should be able to connect steps visually, test outputs, and deploy a workflow without writing code. Sim also lets you build and edit workflows through plain-language requests." + - q: "Does Vellum have a free plan?" + a: "Vellum does not publish pricing for its AI development platform on vellum.ai. The vellum.ai pricing page covers only its Personal Assistant product, which offers a free start with your first tasks included, then Mighty at $30 per month, Super at $100, Ultra at $200, and a configurable Custom plan. A banner on that page says the Personal Assistant platform shuts down on November 2, 2026." + - q: "Is Sim really free to self-host?" + a: "Yes. Sim's Apache 2.0-licensed core has no self-hosting license fee, and you can run it with Docker Compose or Kubernetes. You still pay for your infrastructure and any model usage. Enterprise features such as single sign-on (SSO), which lets people log in with their company account, need an Enterprise subscription for production use under the Sim Enterprise License." + - q: "How does evaluation tooling differ?" + a: "Vellum runs Test Suites of test cases with expected outputs, scored by metrics from 0 to 1, for regression testing before you deploy a change to a Prompt or Workflow. Sim offers an Evaluator block for scoring workflow outputs and a Guardrails block for validation. Relevance AI lists agent evaluations on Enterprise and A/B testing on Team and Enterprise, Gumloop has an Evaluations view on each agent's Performance page, and Dify and Langflow focus on debugging tools such as run history, Playground testing, and traces." + - q: "How can I migrate from Vellum?" + a: "Rebuild your workflows in Sim, transfer your prompts and test cases, and compare outputs before switching live traffic. Check the Sim and Vellum comparison for differences in building and deployment options." +--- + +## TL;DR + +- **Sim** ranks first. It is an open-source AI workspace for teams, where non-engineers can build and deploy AI agents in the visual builder or ask Sim in Chat to create and edit workflows. Sim Cloud has a free plan, and [Sim's Apache 2.0 core can be self-hosted, with enterprise features covered by a separate license](https://github.com/simstudioai/sim/blob/main/apps/sim/ee/LICENSE). See the [Sim and Vellum comparison](https://www.sim.ai/comparisons/vellum). +- **Gumloop** is best for business teams that want an AI agent builder that starts from a description of the job. +- **Relevance AI** is best for go-to-market teams that want self-serve agent plans and an enterprise upgrade path. +- **Dify** is best for teams that want a visual builder with a free, self-hostable Community edition. +- **Langflow** is best for experimenting with visual AI flows under an MIT license. + +## Why non-engineers look past Vellum + +[Vellum's documentation describes an end-to-end AI development platform](https://docs.vellum.ai/home/getting-started/overview) where technical and non-technical team members work together. Its [Agent Builder](https://docs.vellum.ai/product/agent-builder/agent-builder-sme) builds Workflows from plain-language instructions. The friction for non-engineers shows up elsewhere. + +First, the platform is organized around a release process. Vellum separates [Prompt Sandboxes, Workflow Sandboxes, Test Suites, Deployments, and Environments](https://docs.vellum.ai/product/deployments/environments), and supports [Release Reviews](https://docs.vellum.ai/product/deployments/release-reviews) modeled on pull request reviews. Its Workflows documentation describes the end goal as deploying a Workflow and calling [an API to invoke it from an application](https://docs.vellum.ai/product/workflows/introduction). That model serves teams shipping AI features inside an existing product. + +Second, it is hard to evaluate the AI development platform from Vellum's public website. As of October 2026, the [vellum.ai pricing page](https://www.vellum.ai/pricing) lists plans for Vellum's personal assistant product, while a separate notice says that the [Personal Assistant platform will shut down on November 2, 2026](https://www.vellum.ai/vellum-assistant-platform-shutdown). The AI development platform described in the docs has no published price on vellum.ai, and [self-hosted Vellum](https://docs.vellum.ai/self-hosting/getting-started/introduction) is arranged by contacting the team. + +The alternatives below are compared on how you build, evaluation and testing tools, deployment options, self-hosting, and published pricing. For a broader market view, see the guides to [AI agent platforms](https://www.sim.ai/library/best-ai-agent-platforms-2026) and [AI agent workflow builders](https://www.sim.ai/library/ai-agent-workflow-builders-multi-step-tasks). + +## Comparison table + +| Rank and tool | How you build | Evaluation and testing | Deployment | Self-hosting | Starting price | +|---|---|---|---|---|---| +| 1. [Sim](https://www.sim.ai/comparisons/vellum) | Visual builder, plus Chat for creating and editing workflows in plain language | [Evaluator](https://docs.sim.ai/workflows/blocks/evaluator) and [Guardrails](https://docs.sim.ai/workflows/blocks/guardrails) blocks | [API, chat interface, scheduled or webhook trigger, or MCP server tool](https://docs.sim.ai/workflows/deployment) (MCP is a protocol that lets AI apps call tools) | [Apache 2.0 core via Docker Compose or Kubernetes; enterprise features are separately licensed](https://github.com/simstudioai/sim/blob/main/apps/sim/ee/LICENSE) | [Free; Pro from $25 per user per month](https://www.sim.ai/pricing) | +| 2. [Gumloop](https://www.gumloop.com/pricing) | Agent builder that starts by asking what the agent should handle | [Evaluations and Insights on an agent Performance page](https://docs.gumloop.com/core-concepts/agent_performance) | Gumloop cloud, or [VPC deployment on Enterprise](https://www.gumloop.com/enterprise) (a VPC is a private network in your own cloud account) | [VPC deployment in your AWS, Azure, or Google Cloud environment](https://www.gumloop.com/enterprise) | [Pro from $37 per month after a 14-day trial](https://www.gumloop.com/pricing) | +| 3. [Relevance AI](https://relevanceai.com/pricing) | [Invent, an AI solutions engineer that helps teams decide what to automate and turn their expertise into agents](https://relevanceai.com/) | [A/B testing on Team; agent evaluations on Enterprise](https://relevanceai.com/docs/get-started/pricing) | [Agents receive tasks through native app triggers, webhooks, and cron schedules](https://relevanceai.com/enterprise) | [No self-hosted edition is listed](https://relevanceai.com/docs/get-started/pricing) | [Pricing docs list Pro from $19 per month billed annually](https://relevanceai.com/docs/get-started/pricing); the [pricing page](https://relevanceai.com/pricing) lists only custom Enterprise | +| 4. [Dify](https://dify.ai/pricing) | [Workflow Studio visual builder](https://dify.ai/workflows) for agentic workflows | [Node-level testing and run history](https://docs.dify.ai/en/cloud/use-dify/debug/history-and-logs) | [Web app, API, or embed](https://docs.dify.ai/en/cloud/use-dify/publish/README) | [Community edition under a modified Apache 2.0 license](https://github.com/langgenius/dify/blob/main/LICENSE) | [Sandbox free; Professional $59 per workspace per month or $590 annually](https://dify.ai/pricing) | +| 5. [Langflow](https://www.langflow.org/) | Low-code visual builder aimed at technical teams | [Playground testing and built-in traces](https://docs.langflow.org/traces) | [API, embedded chat widget, or MCP server](https://docs.langflow.org/concepts-publish) | [MIT-licensed; Desktop, Docker, or Python package](https://github.com/langflow-ai/langflow/blob/main/LICENSE) | [Free and open source; you host it](https://github.com/langflow-ai/langflow/blob/main/LICENSE) | + +### Sim + +Sim is an open-source AI workspace for teams. It gives non-engineers two ways to build an agent without writing code. You can describe a workflow in Chat and ask Sim to create or edit it, or connect blocks in the visual builder. Developers can also extend workflows with code. [Compared with Vellum's release-oriented platform](https://www.sim.ai/comparisons/vellum), Sim offers a more direct starting point for people who need to build without dedicated engineering help. + +Sim also puts testing controls in the workflow builder. An [Evaluator block](https://docs.sim.ai/workflows/blocks/evaluator) asks a model for numeric scores against metrics you define. A [Guardrails block](https://docs.sim.ai/workflows/blocks/guardrails) validates content and reports whether the check passed; connect a downstream Condition when the result should change the execution path. + +You can deploy a finished workflow through an [API, chat interface, scheduled or webhook trigger, or MCP server tool](https://docs.sim.ai/workflows/deployment). [Sim's Apache 2.0 core can be self-hosted with Docker Compose or Kubernetes, while `apps/sim/ee` is governed by the separate Sim Enterprise License](https://github.com/simstudioai/sim/blob/main/apps/sim/ee/LICENSE). Enterprise features such as single sign-on (SSO), which lets people log in with their company account, and audit logs require an active Enterprise subscription for production use. + +**Best for:** Non-engineer teams that want to build, test, and deploy agents visually while retaining a self-hosting option. + +**Pros:** Chat can draft or edit workflows, and built-in blocks let teams configure output checks without code. + +**Cons:** Sim no longer offers a pre-built workflow template gallery. On Sim Cloud, [Free credits do not refresh and synchronous runs on the Free plan time out after five minutes](https://www.sim.ai/pricing). + +**Pricing:** As of October 2026, [Sim Cloud Free includes 1,000 one-time credits; Pro costs $25 per user per month with 6,000 included credits and a 2,000-credit weekly refresh; Max costs $100 per user per month with 25,000 included credits and a 4,000-credit weekly refresh](https://www.sim.ai/pricing). [Self-hosting Sim's core has no license fee, but enterprise features have separate terms](https://github.com/simstudioai/sim/blob/main/apps/sim/ee/LICENSE), and you pay for infrastructure and model usage. + +### Gumloop + +Gumloop describes itself as a [multiplayer AI agent builder](https://www.gumloop.com/) that lets business teams build agents while administrators control access. Its [guided setup asks what a new agent should take care of and configures the agent from the answer](https://docs.gumloop.com/core-concepts/profile_settings). + +**Best for:** Business teams that want to build agents by describing the job rather than wiring each step. + +**Pros:** The agent builder starts from a plain description of the job, while [Evaluations and Insights sit on the agent's Performance page](https://docs.gumloop.com/core-concepts/agent_performance). + +**Cons:** There is no self-hosted edition on the pricing page. Data-residency control instead comes through [VPC deployment on Enterprise in an AWS, Azure, or Google Cloud environment](https://www.gumloop.com/enterprise). + +**Pricing:** As of October 2026, [Pro starts at $37 per month after a free 14-day trial](https://www.gumloop.com/pricing). Enterprise uses custom pricing. + +### Relevance AI + +Relevance AI positions itself around an "AI Workforce," and its [enterprise page](https://relevanceai.com/enterprise) pitches the platform to domain experts as well as technical teams. + +**Best for:** Go-to-market teams that want self-serve agent building with an enterprise upgrade path. + +**Pros:** [Pro includes unlimited agents and tools, while Team adds A/B testing and Enterprise adds agent evaluations, enterprise triggers, SSO, role-based access control (RBAC, which sets permissions by role), and audit logs](https://relevanceai.com/docs/get-started/pricing). The platform also lists [more than 2,000 integrations](https://relevanceai.com/integrations). + +**Cons:** [The Free plan is retired for new and existing accounts](https://relevanceai.com/docs/get-started/pricing), and organization-wide controls are reserved for the custom Enterprise tier. + +**Pricing:** Relevance AI's two official pricing pages disagree. As of October 2026, its [pricing page](https://relevanceai.com/pricing) lists only an Enterprise plan with custom pricing, while its [pricing documentation](https://relevanceai.com/docs/get-started/pricing) lists Pro from $19 per month billed annually ($29 monthly) and Team from $234 per month billed annually ($349 monthly), and says the Free plan is retired. Confirm current plans with Relevance AI before you buy. + +### Dify + +Dify is a platform for building AI applications with [Workflow Studio](https://dify.ai/workflows), a visual builder for agentic workflows. You can test nodes and review [run history](https://docs.dify.ai/en/cloud/use-dify/debug/history-and-logs), then [deploy an app](https://docs.dify.ai/en/cloud/use-dify/publish/README) as a web app, API, or embed. + +**Best for:** Teams that want a visual LLM application builder with a self-hosting option. + +**Pros:** [Dify Cloud has a free Sandbox plan, and the Community edition can be self-deployed](https://dify.ai/pricing). + +**Cons:** Dify's [license](https://github.com/langgenius/dify/blob/main/LICENSE) is a modified Apache 2.0 license. It requires a commercial license for specified multi-tenant use and restricts removing or changing logo and copyright information in the frontend, so review the terms before adopting it. + +**Pricing:** As of October 2026, [Dify Cloud's Sandbox plan is free, Professional costs $59 per workspace per month or $590 per year, and Team costs $159 per workspace per month or $1,590 per year](https://dify.ai/pricing). Enterprise is custom-priced. + +### Langflow + +Langflow is a [low-code builder for agentic and retrieval-augmented generation (RAG) applications](https://www.langflow.org/), meaning apps that answer from your own documents. Its [source code is MIT-licensed](https://github.com/langflow-ai/langflow/blob/main/LICENSE), and its documentation is aimed at developers, data scientists, and teams building retrieval and multi-agent applications. + +**Best for:** Teams that want a freely licensed starting point for testing AI flow ideas and can manage the technical setup. + +**Pros:** You can [install Langflow Desktop, use Docker, or install a Python package](https://docs.langflow.org/get-started-installation), test flows in the Playground, and review [execution traces](https://docs.langflow.org/traces). Flows can run through an [API, an embedded chat widget, or an MCP server](https://docs.langflow.org/concepts-publish). + +**Cons:** The [deployment guide](https://docs.langflow.org/deployment-overview) focuses on running Langflow on your own infrastructure. Someone on your team needs to manage that infrastructure. + +**Pricing:** Langflow is free and open source under the [MIT license](https://github.com/langflow-ai/langflow/blob/main/LICENSE). You pay for the infrastructure and models you use. + +## Choosing the right alternative + +- If you need to self-host on a budget, choose Sim. [Sim's core is Apache 2.0 and can be self-hosted, while enterprise features use a separate license](https://github.com/simstudioai/sim/blob/main/apps/sim/ee/LICENSE); [self-hosted Vellum](https://docs.vellum.ai/self-hosting/getting-started/introduction) is arranged through Vellum's team. +- If you want self-serve plans for go-to-market agents, consider Relevance AI. Its [pricing documentation lists Pro and Team prices](https://relevanceai.com/docs/get-started/pricing), while its [pricing page](https://relevanceai.com/pricing) shows only custom Enterprise. +- If your team wants to describe an agent's job and let the builder set it up, consider Gumloop. +- If you want source-code access, compare Dify and Langflow. Dify combines a hosted cloud with a self-deployable Community edition under [additional license conditions](https://github.com/langgenius/dify/blob/main/LICENSE), while Langflow uses the [MIT license](https://github.com/langflow-ai/langflow/blob/main/LICENSE) and is self-hosted. + +The related comparisons of [open-source AI agent platforms](https://www.sim.ai/library/open-source-ai-agent-platforms) and [AI agent evaluation platforms](https://www.sim.ai/library/best-ai-agent-evaluation-platforms-2026) go deeper on licensing and testing. + +## Conclusion + +For a team without dedicated engineers, the useful test is whether non-technical people can build, evaluate, and deploy an agent without a sales call. Sim ranks first here because Chat and the visual builder support building, its Evaluator and Guardrails blocks support testing, and workflows can deploy through chat interfaces, APIs, triggers, or MCP server tools. [Sim's Apache 2.0 core can also be self-hosted at no license cost, with enterprise features governed by separate terms](https://github.com/simstudioai/sim/blob/main/apps/sim/ee/LICENSE). + +[Try Sim](https://www.sim.ai) or read the [full Vellum comparison](https://www.sim.ai/comparisons/vellum). diff --git a/apps/sim/public/library/best-vellum-alternatives-2026/cover.jpg b/apps/sim/public/library/best-vellum-alternatives-2026/cover.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ea0b04bdd34a2113a3ff066bbc227b5ca356b8d9 GIT binary patch literal 29380 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 Date: Mon, 19 Oct 2026 16:45:03 -0700 Subject: [PATCH 06/12] feat(library): Best Langflow Alternatives in 2026 for Production AI Workflows (#9233) * feat(library): Best Langflow Alternatives in 2026 for Production AI Workflows * Pi Babysit: address PR #9233 feedback * docs(library): verify and correct langflow alternatives facts --------- Co-authored-by: Sim Pi Agent --- .../best-langflow-alternatives-2026/index.mdx | 114 ++++++++++++++++++ .../best-langflow-alternatives-2026/cover.jpg | Bin 0 -> 28547 bytes 2 files changed, 114 insertions(+) create mode 100644 apps/sim/content/library/best-langflow-alternatives-2026/index.mdx create mode 100644 apps/sim/public/library/best-langflow-alternatives-2026/cover.jpg diff --git a/apps/sim/content/library/best-langflow-alternatives-2026/index.mdx b/apps/sim/content/library/best-langflow-alternatives-2026/index.mdx new file mode 100644 index 00000000000..231ba8fa235 --- /dev/null +++ b/apps/sim/content/library/best-langflow-alternatives-2026/index.mdx @@ -0,0 +1,114 @@ +--- +slug: best-langflow-alternatives-2026 +title: 'Best Langflow Alternatives in 2026 for Production AI Workflows' +description: 'Compare Langflow alternatives for production AI workflows: Sim, Dify, n8n, and LangGraph on license, self-hosting, run inspection, and pricing.' +seoTitle: 'Best Langflow Alternatives for Production in 2026' +date: 2026-10-19 +updated: 2026-10-19 +authors: + - andrew +readingTime: 8 +tags: [AI Agents, Workflow Automation, Open Source, Comparisons, Sim] +ogImage: /library/best-langflow-alternatives-2026/cover.jpg +draft: false +faq: + - q: "Is Langflow open source, and can you use it in production?" + a: "Yes, Langflow is MIT-licensed, and Langflow OSS gives you full source access and a self-managed deployment option. For SSO, role-based access, and audit trails, IBM directs Langflow-built agents to watsonx Orchestrate." + - q: "What is the easiest self-hosted Langflow alternative?" + a: "Sim offers an interactive sim-setup wizard that provisions the database, generates secrets, and starts Sim with Docker Compose, making it a practical starting point if you want a visual builder you can run yourself. Its self-hosting docs suggest 2 CPU cores, 12 GiB of RAM, and 20 GiB of SSD storage for evaluation. Production use of enterprise features requires an Enterprise subscription." + - q: "Which alternative has the best built-in observability and versioning?" + a: "Sim, Langflow, and Dify all include built-in, step-by-step run traces. Sim's Logs record each block's inputs, outputs, errors, and timing, and Sim keeps a history of each workflow's deployed versions with rollback. LangGraph relies on LangSmith, a separate product, for tracing." + - q: "Can you migrate Langflow flows to another tool?" + a: "This comparison does not cover a direct import path from Langflow into any of these alternatives. Plan to recreate the flow in your chosen tool, then test its behavior and deployment before replacing the Langflow version." +--- + +## TL;DR + +- **Sim**, the open-source AI workspace where teams build, deploy, and manage AI agents, fits teams that want a visual builder they can run on their own infrastructure, with per-block run traces. Anyone can self-host [Sim's Apache 2.0 core](https://github.com/simstudioai/sim/blob/main/LICENSE) for free; [enterprise features use a separate license](https://github.com/simstudioai/sim/blob/main/apps/sim/ee/LICENSE). SSO (single sign-on with your company's identity provider), audit logs, and supported self-hosting are part of the Enterprise plan. +- **Langflow** fits teams building visual prototypes, especially if they already use IBM watsonx Orchestrate, which [IBM positions](https://www.ibm.com/new/announcements/prototype-to-production-langflow-and-ibm-watsonx-orchestrate-si) as the enterprise runtime for Langflow-built agents. +- **Dify** fits teams willing to operate a larger self-hosted stack under a modified Apache 2.0 license. +- **n8n** fits teams whose AI agents need to work inside broader automation workflows. +- **LangGraph** fits developers who prefer code-level control over visual building. +- **Flowise** is no longer an option for new projects: it [reached end of life on August 31, 2026](https://flowiseai.com/sunset). + +## Why teams look past Langflow for production + +Langflow makes it easy to build and test an agent visually, but IBM describes a harder step after the prototype. In its [announcement about moving Langflow agents into production](https://www.ibm.com/new/announcements/prototype-to-production-langflow-and-ibm-watsonx-orchestrate-si), IBM says teams "build impressive demos, only to hit a wall when scaling securely, integrating workflows, and meeting enterprise requirements." IBM presents watsonx Orchestrate as its answer: an enterprise-grade runtime for Langflow-built agents, "complete with SSO, RBAC, audit trails and orchestration." RBAC is role-based access control, which limits what each person can see and change. + +You can deploy Langflow without Orchestrate. Langflow is MIT-licensed and its [GitHub repository](https://github.com/langflow-ai/langflow) is actively maintained. [IBM lists](https://www.ibm.com/products/langflow) options to deploy a flow as a REST service using Docker or deploy it to Langflow Cloud, and Langflow's docs cover a [production Kubernetes Helm chart](https://docs.langflow.org/deployment-kubernetes-prod). The governance features IBM highlights for enterprise use, including SSO, role-based access, and audit trails, are the ones it ties to the Orchestrate integration. + +For each alternative, the comparison examines license terms, the self-hosting path, and deployment options. It also covers built-in run inspection and published pricing. Pricing and product availability were checked as of October 2026. For a wider market view, see the comparisons of [AI workflow builders](https://www.sim.ai/library/best-ai-workflow-builders) and [open-source AI agent platforms](https://www.sim.ai/library/open-source-ai-agent-platforms). + +## Comparison table + +| Tool | License | Self-Hosting | Deployment Options | Built-in Run Inspection | Published Pricing | +|---|---|---|---|---|---| +| **1. Sim** | [Apache 2.0 core](https://github.com/simstudioai/sim/blob/main/LICENSE), with [enterprise features under the separate Sim Enterprise License](https://github.com/simstudioai/sim/blob/main/apps/sim/ee/LICENSE) | Yes, via [Docker Compose or Kubernetes (Helm)](https://docs.sim.ai/platform/self-hosting) | Sim Cloud or self-hosted. Deploy workflows as an API, a chat interface, or an MCP tool | [Per-block trace](https://docs.sim.ai/logs-debugging/logging) of inputs, outputs, errors, and timing | [Free $0, Pro $25/user/month, Max $100/user/month, Enterprise custom](https://www.sim.ai/pricing) | +| **2. Dify** | [Modified Apache 2.0](https://github.com/langgenius/dify/blob/main/LICENSE) with added conditions | Yes, [Docker Compose](https://docs.dify.ai/en/self-host/deploy/quick-start/docker-compose) | [Web app, API, website embed, or MCP server](https://docs.dify.ai/en/self-host/use-dify/publish/README) | [Logs with a node-by-node trace](https://docs.dify.ai/en/self-host/use-dify/monitor/logs) | [Cloud: Sandbox free, Professional $590/workspace/year, Team $1,590/workspace/year](https://dify.ai/pricing) | +| **3. n8n** | [Sustainable Use License](https://github.com/n8n-io/n8n/blob/master/LICENSE.md), which n8n describes as fair-code, not open source | Yes: Community, Business, and Enterprise editions | n8n Cloud or self-hosted | [Execution history](https://docs.n8n.io/build/understand-workflows/understand-executions) per workflow | [Cloud Starter €20/month, Pro €50/month, self-hosted Business €667/month (billed annually), Enterprise custom](https://n8n.io/pricing/) | +| **4. LangGraph** | [MIT](https://github.com/langchain-ai/langgraph) | Yes for the library. A standalone Agent Server needs a [LangSmith license key](https://docs.langchain.com/langsmith/deploy-standalone-server) | Self-managed code or LangSmith Deployment | Through LangSmith, a separate product | [LangSmith Developer $0 (1 seat), Plus $39/seat/month, Enterprise custom](https://www.langchain.com/pricing) | +| **5. Langflow** | [MIT](https://github.com/langflow-ai/langflow) | Yes, Docker or a Kubernetes Helm chart | [Docker REST service, Langflow Cloud, or watsonx Orchestrate](https://www.ibm.com/products/langflow). Flows can also be [served as MCP tools](https://docs.langflow.org/mcp-server) | [Native per-component traces](https://docs.langflow.org/traces) | No license fee for Langflow OSS. IBM's Langflow page does not list Elite Support or Orchestrate prices | + +## Sim + +**Best for** Sim is the open-source AI workspace where teams build, deploy, and manage AI agents. It suits you if you want a visual builder that can move into production with self-hosting, several ways to deploy a workflow, and controls for enterprise access. Alongside the visual builder (Workflows), the workspace includes Chat, where you talk to Sim to build and manage agents in natural language, plus Tables, Files, and a Knowledge Base your agents can draw on. + +**Pros** Sim's core uses the [Apache 2.0 license](https://github.com/simstudioai/sim/blob/main/LICENSE), with [enterprise features covered by the separate Sim Enterprise License](https://github.com/simstudioai/sim/blob/main/apps/sim/ee/LICENSE). You can [deploy a workflow](https://docs.sim.ai/workflows/deployment) as an API, a chat interface, or an MCP tool. MCP (Model Context Protocol) is a protocol that lets AI apps call tools, so other AI applications can call your workflow. Those options let you use the same workflow in an application, a user-facing conversation, or another agent without rebuilding its logic. Sim connects to [270+ integrations](https://www.sim.ai/integrations) and [28 model providers](https://www.sim.ai/models). + +Sim's [Logs](https://docs.sim.ai/logs-debugging/logging) trace each run block by block, with each block's inputs, outputs, errors, and timing, plus a usage breakdown of the run's cost. When an agent fails midway, you can inspect the block that failed rather than infer the cause from its final response. Each workflow also keeps [deployed versions that can be compared or rolled back](https://docs.sim.ai/workflows/deployment). For more detail on evaluating traces, read the guide to [AI agent observability](https://www.sim.ai/library/ai-agent-observability). If Langflow's deployment and governance options leave you assembling additional infrastructure, [Sim's Langflow comparison](https://www.sim.ai/comparisons/langflow) details its deployment options and Enterprise controls. + +**Cons** The Apache 2.0 core does not make every feature free. Anyone can self-host [Sim's core](https://github.com/simstudioai/sim/blob/main/LICENSE) at no cost with Docker Compose or Kubernetes, while [enterprise features such as SSO, SCIM user provisioning, audit logs, and access control have separate terms](https://github.com/simstudioai/sim/blob/main/apps/sim/ee/LICENSE) and require an Enterprise subscription for production use. [Sim's pricing table](https://www.sim.ai/pricing) also lists supported self-hosting as an Enterprise feature alongside SSO and SOC 2 compliance. Check which features you need before treating the core license as your complete plan. The distinction is also covered in this guide to [Apache 2.0 and fair-code licenses](https://www.sim.ai/library/apache-2-0-vs-fair-code). + +**Pricing** [Sim's Free plan](https://www.sim.ai/pricing) costs $0 and includes 1,000 one-time credits and 30 days of log retention. Pro costs $25 per user per month, with 6,000 credits per month, a weekly refresh of 2,000 credits, and unlimited log retention. Max costs $100 per user per month, with 25,000 credits per month and a weekly refresh of 4,000 credits. Enterprise uses custom pricing and adds access control, SSO, SOC 2 compliance, supported self-hosting, and dedicated support. Enterprise organizations can also set log retention from 1 day to 5 years or keep logs forever. + +## Langflow + +**Best for** Langflow suits you if you want to build and test AI agents visually before choosing how to deploy them. [IBM lists more than 100 integrations](https://www.ibm.com/products/langflow) for the open-source edition. + +**Pros** IBM offers [four Langflow options](https://www.ibm.com/products/langflow). Langflow OSS provides the visual builder, full source access, and community support. Langflow Desktop supports local development and exports flows to a cloud-ready format. IBM Elite Support for Langflow adds professional support for OSS users and targets enterprises that need SLAs, and the watsonx Orchestrate integration provides an enterprise-grade runtime. Langflow also records [native traces](https://docs.langflow.org/traces) with each component's inputs, outputs, timing, errors, and token usage, and can act as an [MCP server](https://docs.langflow.org/mcp-server) that exposes your flows as tools. + +**Cons** For [enterprise deployment](https://www.ibm.com/new/announcements/prototype-to-production-langflow-and-ibm-watsonx-orchestrate-si), IBM points to Orchestrate for SSO, role-based access, and audit trails. If you need those controls and do not already use Orchestrate, adopting Langflow for production can mean adopting a second IBM product. + +**Pricing** Langflow OSS is [MIT-licensed](https://github.com/langflow-ai/langflow), so there is no license fee to self-manage it. [IBM's Langflow product page](https://www.ibm.com/products/langflow) does not list prices for Elite Support or the Orchestrate integration. + +## Dify + +**Best for** Dify suits you if you want to build and deploy AI applications and can operate a larger self-hosted installation. + +**Pros** Dify supports workflows, a [Human Input node](https://docs.dify.ai/en/self-host/use-dify/nodes/human-input) that pauses a run for a person's review, and [knowledge bases](https://docs.dify.ai/en/self-host/use-dify/knowledge/readme) built from imported data. You can [deploy applications](https://docs.dify.ai/en/self-host/use-dify/publish/README) as web apps, APIs, website embeds, or MCP servers. Its [logs](https://docs.dify.ai/en/self-host/use-dify/monitor/logs) let you inspect conversations and workflow runs, including a node-by-node trace that shows where a run failed or slowed down. + +**Cons** Dify uses a [modified Apache 2.0 license](https://github.com/langgenius/dify/blob/main/LICENSE). You need a commercial license to run a multi-tenant service from its source code, and you may not remove or modify the logo or copyright information in its frontend. Its [Docker Compose installation](https://docs.dify.ai/en/self-host/deploy/quick-start/docker-compose) starts seven core services and eight dependent components. The stated minimum is two CPU cores and 4 GiB of RAM, before accounting for your workload. + +**Pricing** [Dify Cloud](https://dify.ai/pricing) offers a free Sandbox plan, Professional at $590 per workspace per year, and Team at $1,590 per workspace per year. The self-hosted Community edition is free, and the self-hosted Enterprise edition, which includes a commercial license, uses custom pricing. + +## n8n + +**Best for** You need a workflow-automation tool that connects services and can add an AI agent to an existing process. n8n places its [AI Agent node inside regular workflows](https://docs.n8n.io/build/integrate-ai/ai-examples/human-in-the-loop-for-tools), so it fits integration-heavy work better than a project centered on agent design. + +**Pros** n8n offers self-hosted editions and [queue mode](https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/enable-queue-mode), which uses worker instances to distribute executions. You can also [require human approval](https://docs.n8n.io/build/integrate-ai/ai-examples/human-in-the-loop-for-tools) before an AI Agent runs a selected tool, giving you an approval point for sensitive actions. + +**Cons** n8n's [Sustainable Use License](https://github.com/n8n-io/n8n/blob/master/LICENSE.md) limits use to your own internal business purposes or non-commercial use, and n8n [describes the license as fair-code](https://docs.n8n.io/n8n-community-license) rather than open source. Its [license guidance](https://docs.n8n.io/n8n-community-license/community-license/license-faq) says internal use is fine as long as you are not making n8n available to your customers for them to connect their accounts and build workflows. If you are building that kind of multi-tenant product, check the licensing terms before adopting it. + +**Pricing** [n8n's pricing page](https://n8n.io/pricing/) lists Cloud Starter at €20 per month and Pro at €50 per month, both billed annually. The self-hosted Business plan is €667 per month billed annually, Enterprise is custom, and the self-hosted Community Edition is available from its repository. + +## LangGraph + +**Best for** LangGraph suits you if your engineers want to define agent orchestration in code rather than assemble it in a visual builder. The [Python](https://github.com/langchain-ai/langgraph) and [TypeScript](https://github.com/langchain-ai/langgraphjs) libraries can run on infrastructure you manage. + +**Pros** [Checkpointers](https://docs.langchain.com/oss/python/langgraph/persistence) save agent state so a run can resume after an interruption. For an approval gate, [`interrupt()`](https://docs.langchain.com/oss/python/langgraph/interrupts) pauses execution, and `Command(resume=...)` resumes it with a person's decision. + +**Cons** The core library uses the [MIT license](https://github.com/langchain-ai/langgraph), but running the packaged [standalone Agent Server](https://docs.langchain.com/langsmith/deploy-standalone-server) requires a LangSmith license key, and [self-hosted LangSmith](https://docs.langchain.com/langsmith/deploy-to-self-hosted-overview) requires an Enterprise plan. You also need to build and maintain more of the deployment yourself than you would with a visual platform. + +**Pricing** The MIT-licensed library has no license fee. [LangSmith](https://www.langchain.com/pricing), which provides tracing and managed deployment, offers a Developer plan at $0 for one seat, Plus at $39 per seat per month, and custom Enterprise pricing. + +## A note on Flowise + +Flowise was a common Langflow alternative, but it is no longer viable for new projects. The team [announced the wind-down](https://flowiseai.com/sunset) on July 29, 2026 with an immediate code freeze, archived the repository in August 2026, and reached end of life on August 31, 2026, when official core team presence on Discord and GitHub ended. The [Apache 2.0 code remains available to fork](https://flowiseai.com/sunset), but existing deployments should plan a migration. + +## Choosing the right Langflow alternative + +If you want the open-source AI workspace for teams, with a visual builder you can self-host under an OSI-approved core license, choose Sim. [Sim's Apache 2.0 core](https://github.com/simstudioai/sim/blob/main/LICENSE) runs on your infrastructure for free, while [production use of enterprise features such as SSO and audit logs requires an Enterprise subscription](https://github.com/simstudioai/sim/blob/main/apps/sim/ee/LICENSE). Check which features you need before deciding which plan fits. + +If your main need is connecting business apps, choose n8n for workflow automation. Review its license before using it to offer workflows to customers. Choose LangGraph if you want to write and operate orchestration code yourself, while accounting for the [LangSmith license key](https://docs.langchain.com/langsmith/deploy-standalone-server) its standalone Agent Server requires. + +If you already use IBM watsonx Orchestrate, keeping Langflow may make sense. [IBM supplies enterprise governance through Orchestrate](https://www.ibm.com/new/announcements/prototype-to-production-langflow-and-ibm-watsonx-orchestrate-si). For a closer look at that trade-off, compare [Sim and Langflow](https://www.sim.ai/comparisons/langflow). diff --git a/apps/sim/public/library/best-langflow-alternatives-2026/cover.jpg b/apps/sim/public/library/best-langflow-alternatives-2026/cover.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a5704245497a124e845ce25fb3575337ce3a3189 GIT binary patch literal 28547 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 Date: Mon, 19 Oct 2026 16:57:40 -0700 Subject: [PATCH 07/12] improvement(deps): shared Standard Webhooks verifier, MCP SDK 1.32.1, tiptap 3.31.4 with the prosemirror paste XSS fix (#9236) * improvement(webhooks): share one Standard Webhooks verifier across providers * improvement(mcp): upgrade MCP SDK to 1.32.1 and keep cross-origin redirect handling in our SSRF guard * fix(mcp): let the SSRF guard own redirects on OAuth legs the SDK drives * fix(editor): upgrade tiptap to 3.31.4 with a single prosemirror copy to pick up the paste XSS fix * chore(deps): drop svix from the lockfile * improvement(webhooks,mcp): share the Standard Webhooks 401 mapping and make guard-owned redirects the default * chore(security): drop a duplicated malformed-secret test case --- apps/sim/app/api/mcp/oauth/start/route.ts | 2 +- .../app/api/webhooks/agentmail/route.test.ts | 22 +- apps/sim/app/api/webhooks/agentmail/route.ts | 30 +-- .../agentmail/thread-scope.integration.ts | 14 +- .../rich-markdown-editor/extensions.ts | 8 +- .../field-upload.test.tsx | 17 +- .../image-input-rule.test.ts | 7 +- .../rich-markdown-editor/image-schema.ts | 11 +- .../rich-markdown-editor/link-input-rule.ts | 11 +- .../rich-markdown-editor/list-item.ts | 21 +- .../rich-markdown-editor/ordered-list.ts | 7 +- .../round-trip-safety.test.ts | 8 +- .../rich-markdown-editor/text-input-rule.ts | 41 --- apps/sim/lib/mcp/client.ts | 3 + apps/sim/lib/mcp/oauth/probe.ts | 3 +- apps/sim/lib/mcp/pinned-fetch.ts | 31 ++- .../mcp/transport-redirects.server.test.ts | 242 ++++++++++++++++++ apps/sim/lib/webhooks/providers/clerk.ts | 65 +---- apps/sim/lib/webhooks/providers/granola.ts | 68 +---- apps/sim/lib/webhooks/providers/incidentio.ts | 78 +----- apps/sim/lib/webhooks/providers/linq.ts | 67 +---- apps/sim/lib/webhooks/providers/loops.ts | 71 +---- apps/sim/lib/webhooks/providers/resend.ts | 64 +---- apps/sim/lib/webhooks/providers/utils.ts | 44 ++++ apps/sim/package.json | 37 ++- bun.lock | 121 +++++---- package.json | 4 + packages/security/package.json | 4 + .../security/src/standard-webhooks.test.ts | 202 +++++++++++++++ packages/security/src/standard-webhooks.ts | 88 +++++++ 30 files changed, 835 insertions(+), 556 deletions(-) delete mode 100644 apps/sim/app/workspace/[workspaceId]/files/components/file-viewer/rich-markdown-editor/text-input-rule.ts create mode 100644 apps/sim/lib/mcp/transport-redirects.server.test.ts create mode 100644 packages/security/src/standard-webhooks.test.ts create mode 100644 packages/security/src/standard-webhooks.ts diff --git a/apps/sim/app/api/mcp/oauth/start/route.ts b/apps/sim/app/api/mcp/oauth/start/route.ts index 7d84573a5f2..0bcbf06ef49 100644 --- a/apps/sim/app/api/mcp/oauth/start/route.ts +++ b/apps/sim/app/api/mcp/oauth/start/route.ts @@ -49,7 +49,7 @@ const DCR_UNSUPPORTED_MESSAGE = /** * The MCP SDK throws a plain `Error` (no typed class or code) when an auth server lacks a * `registration_endpoint`, so this string-match is the only available signal. Pinned to - * `@modelcontextprotocol/sdk` v1.31.0 `registerClient` (client/auth.js): "Incompatible auth + * `@modelcontextprotocol/sdk` v1.32.1 `registerClient` (client/auth.js): "Incompatible auth * server: does not support dynamic client registration". If a version bump rephrases this, the * 422 branch silently stops firing (users get a generic 500) — update the substring here. */ diff --git a/apps/sim/app/api/webhooks/agentmail/route.test.ts b/apps/sim/app/api/webhooks/agentmail/route.test.ts index 91368c9e1e7..e386790bd17 100644 --- a/apps/sim/app/api/webhooks/agentmail/route.test.ts +++ b/apps/sim/app/api/webhooks/agentmail/route.test.ts @@ -15,16 +15,8 @@ const { mockVerify, mockExecuteInboxTask } = vi.hoisted(() => ({ mockExecuteInboxTask: vi.fn(), })) -vi.mock('svix', () => ({ - Webhook: class { - private readonly secret: string - constructor(secret: string) { - this.secret = secret - } - verify(payload: string, headers: Record) { - return mockVerify(this.secret, payload, headers) - } - }, +vi.mock('@sim/security/standard-webhooks', () => ({ + verifyStandardWebhook: mockVerify, })) vi.mock('@/lib/core/admission/gate', () => admissionGateMock) @@ -92,9 +84,7 @@ describe('POST /api/webhooks/agentmail', () => { mockTryAdmit.mockReturnValue({ release: mockRelease }) mockExecuteInboxTask.mockResolvedValue(undefined) - mockVerify.mockImplementation(() => { - throw new Error('signature mismatch') - }) + mockVerify.mockReturnValue({ valid: false, reason: 'no_matching_signature' }) }) it('checks the signature against only the secret the payload routes to', async () => { @@ -106,12 +96,14 @@ describe('POST /api/webhooks/agentmail', () => { expect(mockEq).toHaveBeenCalledWith(schemaMock.workspace.inboxProviderId, TARGET_INBOX_ID) expect(dbChainMockFns.limit).toHaveBeenCalledWith(1) expect(mockVerify).toHaveBeenCalledTimes(1) - expect(mockVerify).toHaveBeenCalledWith('whsec_b', expect.any(String), expect.any(Object)) + expect(mockVerify).toHaveBeenCalledWith( + expect.objectContaining({ secret: 'whsec_b', headerPrefix: 'svix' }) + ) }) it('rejects a payload naming an inbox no workspace owns, without hashing it', async () => { queueTableRows(schemaMock.workspace, []) - mockVerify.mockReturnValue(undefined) + mockVerify.mockReturnValue({ valid: true }) const response = await POST( webhookRequest(envelope({ inbox_id: 'agent-unknown@agentmail.to' })) diff --git a/apps/sim/app/api/webhooks/agentmail/route.ts b/apps/sim/app/api/webhooks/agentmail/route.ts index fc5767d8bbb..8a3bb8dc96f 100644 --- a/apps/sim/app/api/webhooks/agentmail/route.ts +++ b/apps/sim/app/api/webhooks/agentmail/route.ts @@ -8,12 +8,12 @@ import { workspace, } from '@sim/db' import { createLogger } from '@sim/logger' +import { verifyStandardWebhook } from '@sim/security/standard-webhooks' import { getErrorMessage } from '@sim/utils/errors' import { generateId } from '@sim/utils/id' import { tasks } from '@trigger.dev/sdk' import { and, eq, gt, ne, sql } from 'drizzle-orm' import { NextResponse } from 'next/server' -import { Webhook } from 'svix' import { agentMailEnvelopeSchema, agentMailMessageSchema, @@ -41,22 +41,8 @@ const MAX_EMAILS_PER_HOUR = 20 const AGENTMAIL_BODY_LABEL = 'AgentMail webhook body' -/** Svix throws on a bad signature, stale timestamp, or malformed header. */ -function verifiesAgainst( - secret: string, - rawBody: string, - headers: Record -): boolean { - try { - new Webhook(secret).verify(rawBody, headers) - return true - } catch { - return false - } -} - /** - * Bound the unauthenticated AgentMail webhook body before buffering it for Svix + * Bound the unauthenticated AgentMail webhook body before buffering it for * signature verification, so an oversized payload cannot exhaust pod memory. */ async function readAgentMailBody(req: Request): Promise { @@ -106,7 +92,7 @@ export const POST = withRouteHandler(async (req: Request) => { } /** - * Route to one tenant before hashing: svix HMACs the whole body synchronously, + * Route to one tenant before hashing: verification HMACs the whole body synchronously, * so checking every workspace secret would let one unauthenticated request cost * a hash per tenant. `inbox_id` is attacker-controlled but only selects which * secret to check — verification still binds the payload's inbox to the workspace. @@ -129,7 +115,15 @@ export const POST = withRouteHandler(async (req: Request) => { .where(eq(workspace.inboxProviderId, inboxId)) .limit(1) - if (!result || !verifiesAgainst(result.webhookSecret, rawBody, headersResult.data)) { + if ( + !result || + !verifyStandardWebhook({ + secret: result.webhookSecret, + rawBody, + headers: req.headers, + headerPrefix: 'svix', + }).valid + ) { logger.warn('Webhook signature verification failed', { payloadInboxId: inboxId }) return NextResponse.json({ error: 'Unauthorized' }, { status: 401 }) } diff --git a/apps/sim/app/api/webhooks/agentmail/thread-scope.integration.ts b/apps/sim/app/api/webhooks/agentmail/thread-scope.integration.ts index 639eb7e93b0..7b642c7825a 100644 --- a/apps/sim/app/api/webhooks/agentmail/thread-scope.integration.ts +++ b/apps/sim/app/api/webhooks/agentmail/thread-scope.integration.ts @@ -4,7 +4,7 @@ import { deleteWorkspaceFixture, insertWorkspaceFixture } from '@sim/db/testing/ * `In-Reply-To` header — a value every recipient of the agent's reply holds. Against * real PostgreSQL, a reply delivered to one workspace's inbox must never reach a chat, * task, or transcript owned by another workspace, while a reply inside the workspace - * still continues its thread. The webhook is signed with the real Svix scheme. + * still continues its thread. The webhook is signed per the Standard Webhooks spec. */ import { authBanMock } from '@sim/testing/mocks/auth-ban.mock' import { @@ -40,6 +40,7 @@ vi.mock('@/lib/mothership/inbox/executor', () => ({ executeInboxTask: mockExecuteInboxTask, })) +import { createHmac } from 'node:crypto' import { db } from '@sim/db' import { copilotChats, @@ -53,7 +54,6 @@ import { import { generateId } from '@sim/utils/id' import { and, eq, inArray } from 'drizzle-orm' import { NextRequest } from 'next/server' -import { Webhook } from 'svix' import { persistCopilotChatTurn } from '@/lib/mothership/chat/messages-store' import { buildPersistedUserMessage } from '@/lib/mothership/chat/persisted-message' import { POST } from '@/app/api/webhooks/agentmail/route' @@ -142,15 +142,19 @@ async function deliver( }, }) const svixId = `msg_${generateId()}` - const timestamp = new Date() + const timestamp = String(Math.floor(Date.now() / 1000)) + const key = Buffer.from(ws.secret.slice('whsec_'.length), 'base64') + const signature = createHmac('sha256', key) + .update(`${svixId}.${timestamp}.${body}`) + .digest('base64') return POST( new NextRequest('http://localhost:3000/api/webhooks/agentmail', { method: 'POST', headers: { 'content-type': 'application/json', 'svix-id': svixId, - 'svix-timestamp': String(Math.floor(timestamp.getTime() / 1000)), - 'svix-signature': new Webhook(ws.secret).sign(svixId, timestamp, body), + 'svix-timestamp': timestamp, + 'svix-signature': `v1,${signature}`, }, body, }), diff --git a/apps/sim/app/workspace/[workspaceId]/files/components/file-viewer/rich-markdown-editor/extensions.ts b/apps/sim/app/workspace/[workspaceId]/files/components/file-viewer/rich-markdown-editor/extensions.ts index cbe6bd271c7..ec146a5f7a7 100644 --- a/apps/sim/app/workspace/[workspaceId]/files/components/file-viewer/rich-markdown-editor/extensions.ts +++ b/apps/sim/app/workspace/[workspaceId]/files/components/file-viewer/rich-markdown-editor/extensions.ts @@ -168,8 +168,8 @@ function guardParagraphLeading(text: string): string { * paragraph renders as just its inline children; this override wraps that with the leading guard. */ const BlockSafeParagraph = Paragraph.extend({ - parseMarkdown: (token, helpers) => { - const parsed = Paragraph.config.parseMarkdown?.(token, helpers) ?? [] + parseMarkdown(token, helpers) { + const parsed = this.parent?.(token, helpers) ?? [] return Array.isArray(parsed) ? parsed : splitBlockImageParagraph(parsed) }, renderMarkdown: (node: JSONContent, h, context) => { @@ -271,8 +271,8 @@ export function createMarkdownContentExtensions( nodeViews.mention ?? MarkdownMention, TaskList, TaskItem.extend({ - parseMarkdown: (token, helpers) => { - const parsed = TaskItem.config.parseMarkdown?.(token, helpers) ?? [] + parseMarkdown(token, helpers) { + const parsed = this.parent?.(token, helpers) ?? [] if (Array.isArray(parsed)) return parsed const content = (parsed.content ?? []).flatMap(splitBlockImageParagraph) if (content[0]?.type !== 'paragraph') content.unshift({ type: 'paragraph' }) diff --git a/apps/sim/app/workspace/[workspaceId]/files/components/file-viewer/rich-markdown-editor/field-upload.test.tsx b/apps/sim/app/workspace/[workspaceId]/files/components/file-viewer/rich-markdown-editor/field-upload.test.tsx index f8119e61534..ea1256e9fc0 100644 --- a/apps/sim/app/workspace/[workspaceId]/files/components/file-viewer/rich-markdown-editor/field-upload.test.tsx +++ b/apps/sim/app/workspace/[workspaceId]/files/components/file-viewer/rich-markdown-editor/field-upload.test.tsx @@ -57,6 +57,10 @@ async function render( ) await act(async () => vi.advanceTimersByTimeAsync(10)) } + +/** ProseMirror buffers inline atoms at a block start with an empty separator ``. */ +const RENDERED_IMAGE = 'img:not(.ProseMirror-separator)' + function editor() { return host.querySelector('.tiptap')!.editor } @@ -116,9 +120,9 @@ describe('field upload completion boundary', () => { expect(host.querySelector('strong')?.textContent).toBe('Tail') expect(host.querySelector('a')?.getAttribute('href')).toBe('/destination') expect( - Array.from(host.querySelectorAll('img')).map((image) => image.getAttribute('src')) + Array.from(host.querySelectorAll(RENDERED_IMAGE)).map((image) => image.getAttribute('src')) ).toEqual(['/api/files/view/uploaded', '/other.png']) - expect(host.querySelector('img')?.getAttribute('alt')).toBe('Original alt') + expect(host.querySelector(RENDERED_IMAGE)?.getAttribute('alt')).toBe('Original alt') expect(owner.getMarkdown()).toContain('width="123"') expect(owner.getMarkdown()).not.toContain('/inline?') expect(() => owner.state.doc.check()).not.toThrow() @@ -151,10 +155,11 @@ describe('field upload completion boundary', () => { expect(upload).not.toHaveBeenCalled() expect(host.querySelector('h2')?.textContent).toBe('Caption') expect(owner.state.doc.textContent).toContain('Tail') - expect(Array.from(host.querySelectorAll('img')).map((image) => image.alt)).toEqual([ - 'One', - 'Two', - ]) + expect( + Array.from(host.querySelectorAll(RENDERED_IMAGE)).map( + (image) => image.alt + ) + ).toEqual(['One', 'Two']) const images: Array<{ src: string; width: string; href: string | null }> = [] owner.state.doc.descendants((node) => { if (node.type.name === 'image' || node.type.name === 'inlineImage') { diff --git a/apps/sim/app/workspace/[workspaceId]/files/components/file-viewer/rich-markdown-editor/image-input-rule.test.ts b/apps/sim/app/workspace/[workspaceId]/files/components/file-viewer/rich-markdown-editor/image-input-rule.test.ts index 0c458c877fd..cba31abbc26 100644 --- a/apps/sim/app/workspace/[workspaceId]/files/components/file-viewer/rich-markdown-editor/image-input-rule.test.ts +++ b/apps/sim/app/workspace/[workspaceId]/files/components/file-viewer/rich-markdown-editor/image-input-rule.test.ts @@ -217,7 +217,7 @@ describe.each([ expect(editor.getText()).toBe(`Prefix ${source}\n\nAfter`) }) - it('undoes a collaborative conversion without removing peer text', () => { + it('undoes a collaborative conversion to its source, then the input, without removing peer text', () => { const seed = markdownToYDoc('TARGET\n\nAfter') const a = createPeer(seed) const b = createPeer(seed) @@ -232,9 +232,14 @@ describe.each([ Y.applyUpdate(a.doc, Y.encodeStateAsUpdate(b.doc)) expect(a.editor.commands.undo()).toBe(true) Y.applyUpdate(b.doc, Y.encodeStateAsUpdate(a.doc)) + expect(a.editor.getText()).toBe(`Prefix ${source}\n\nPeer text`) + expect(b.editor.getJSON()).toEqual(a.editor.getJSON()) + expect(a.editor.commands.undo()).toBe(true) + Y.applyUpdate(b.doc, Y.encodeStateAsUpdate(a.doc)) expect(a.editor.getText()).toBe('TARGET\n\nPeer text') expect(b.editor.getJSON()).toEqual(a.editor.getJSON()) expect(a.editor.commands.redo()).toBe(true) + expect(a.editor.commands.redo()).toBe(true) Y.applyUpdate(b.doc, Y.encodeStateAsUpdate(a.doc)) assertConverted(a.editor) expect(a.editor.getText()).toContain('Peer text') diff --git a/apps/sim/app/workspace/[workspaceId]/files/components/file-viewer/rich-markdown-editor/image-schema.ts b/apps/sim/app/workspace/[workspaceId]/files/components/file-viewer/rich-markdown-editor/image-schema.ts index 90ac478a52d..971a4d35c97 100644 --- a/apps/sim/app/workspace/[workspaceId]/files/components/file-viewer/rich-markdown-editor/image-schema.ts +++ b/apps/sim/app/workspace/[workspaceId]/files/components/file-viewer/rich-markdown-editor/image-schema.ts @@ -5,7 +5,6 @@ import { Plugin } from '@tiptap/pm/state' import { Lexer, Tokenizer } from 'marked' import { imageTypeAt } from '@/app/workspace/[workspaceId]/files/components/file-viewer/rich-markdown-editor/image-node' import { normalizeLinkHref } from '@/app/workspace/[workspaceId]/files/components/file-viewer/rich-markdown-editor/markdown-fidelity' -import { createTextInputRulePlugins } from '@/app/workspace/[workspaceId]/files/components/file-viewer/rich-markdown-editor/text-input-rule' /** * React-free schema half of the image node. Lives apart from {@link ./image} (its React resize node @@ -187,10 +186,8 @@ const ImageSchema = Image.extend({ }) export const MarkdownImage = ImageSchema.extend({ - addProseMirrorPlugins() { - return createTextInputRulePlugins( - this.editor, - this.name, + addInputRules() { + return [ new InputRule({ find: new RegExp(`${inputRegex.source}(?![\\s\\S])`), handler: ({ state, range, match }) => { @@ -201,8 +198,8 @@ export const MarkdownImage = ImageSchema.extend({ .replaceRangeWith(from, range.to, type.create({ alt, src, title: title ?? null })) .scrollIntoView() }, - }) - ) + }), + ] }, addCommands() { return { diff --git a/apps/sim/app/workspace/[workspaceId]/files/components/file-viewer/rich-markdown-editor/link-input-rule.ts b/apps/sim/app/workspace/[workspaceId]/files/components/file-viewer/rich-markdown-editor/link-input-rule.ts index 9b6fdd2bde4..0af971c3c64 100644 --- a/apps/sim/app/workspace/[workspaceId]/files/components/file-viewer/rich-markdown-editor/link-input-rule.ts +++ b/apps/sim/app/workspace/[workspaceId]/files/components/file-viewer/rich-markdown-editor/link-input-rule.ts @@ -1,6 +1,5 @@ import { Extension, InputRule } from '@tiptap/core' import { normalizeLinkHref } from '@/app/workspace/[workspaceId]/files/components/file-viewer/rich-markdown-editor/markdown-fidelity' -import { createTextInputRulePlugins } from '@/app/workspace/[workspaceId]/files/components/file-viewer/rich-markdown-editor/text-input-rule' /** * Typed markdown link: `[text](url)` or `[text](url "title")`, completed by the closing `)`. The URL @@ -20,10 +19,8 @@ const LINK_INPUT_RULE = /(? { @@ -41,7 +38,7 @@ export const MarkdownLinkInputRule = Extension.create({ tr.addMark(range.from, markEnd, linkType.create({ href, title: title || null })) tr.removeStoredMark(linkType) }, - }) - ) + }), + ] }, }) diff --git a/apps/sim/app/workspace/[workspaceId]/files/components/file-viewer/rich-markdown-editor/list-item.ts b/apps/sim/app/workspace/[workspaceId]/files/components/file-viewer/rich-markdown-editor/list-item.ts index d7ba61acb45..763d71426cd 100644 --- a/apps/sim/app/workspace/[workspaceId]/files/components/file-viewer/rich-markdown-editor/list-item.ts +++ b/apps/sim/app/workspace/[workspaceId]/files/components/file-viewer/rich-markdown-editor/list-item.ts @@ -1,20 +1,33 @@ -import { ListItem } from '@tiptap/extension-list' +import { type RenderContext, renderNestedMarkdownContent } from '@tiptap/core' +import { getListMarker, ListItem } from '@tiptap/extension-list' import { splitBlockImageParagraph } from '@/app/workspace/[workspaceId]/files/components/file-viewer/rich-markdown-editor/block-image-paragraph' +function listItemMarker(context: RenderContext): string { + if (context.parentType !== 'orderedList') return '- ' + const { start, type } = context.meta?.parentAttrs ?? {} + const first = (typeof start === 'number' && start) || 1 + return getListMarker(typeof type === 'string' ? type : null, first - 1 + context.index, '. ') +} + /** * Markdown items may start with a nested block, but the list-item schema requires a paragraph * first. Supply that empty paragraph before Yjs hydration can discard the invalid subtree. + * + * Nested blocks keep the two-space indent under every marker. Upstream aligns ordered-item + * children to the marker width, but its ordered-list tokenizer strips one column less, so a + * fenced code block inside a numbered item would gain a leading space on every save. Drop + * this override once the upstream ordered-list tokenizer strips the full marker width. */ export const MarkdownListItem = ListItem.extend({ - parseMarkdown: (token, helpers) => { - const parsed = ListItem.config.parseMarkdown?.(token, helpers) ?? [] + parseMarkdown(token, helpers) { + const parsed = this.parent?.(token, helpers) ?? [] if (Array.isArray(parsed)) return parsed const content = (parsed.content ?? []).flatMap(splitBlockImageParagraph) if (content[0]?.type !== 'paragraph') content.unshift({ type: 'paragraph' }) return { ...parsed, content } }, renderMarkdown: (node, helpers, context) => { - const rendered = ListItem.config.renderMarkdown?.(node, helpers, context) ?? '' + const rendered = renderNestedMarkdownContent(node, helpers, listItemMarker(context)) /** Marked misreads an opening empty `- ` line as prose when it has a trailing space. */ return rendered.replace(/^-[ \t]+(?=\n|$)/, '-') }, diff --git a/apps/sim/app/workspace/[workspaceId]/files/components/file-viewer/rich-markdown-editor/ordered-list.ts b/apps/sim/app/workspace/[workspaceId]/files/components/file-viewer/rich-markdown-editor/ordered-list.ts index ee630359935..1cf1ac644ea 100644 --- a/apps/sim/app/workspace/[workspaceId]/files/components/file-viewer/rich-markdown-editor/ordered-list.ts +++ b/apps/sim/app/workspace/[workspaceId]/files/components/file-viewer/rich-markdown-editor/ordered-list.ts @@ -14,7 +14,6 @@ import { excludeTableBlockInputRules } from '@/app/workspace/[workspaceId]/files */ export function createJoiningOrderedList() { const delimiters = new WeakMap() - const parse = OrderedList.config.parseMarkdown return OrderedList.extend({ addInputRules() { @@ -22,8 +21,8 @@ export function createJoiningOrderedList() { joinListInputRules(this.parent?.() ?? [], this.type, { compatible: orderedListContinues }) ) }, - parseMarkdown: (token, helpers) => { - if (!token.ordered || !token.items?.length) return parse?.(token, helpers) ?? [] + parseMarkdown(token, helpers) { + if (!token.ordered || !token.items?.length) return this.parent?.(token, helpers) ?? [] /** * The upstream tokenizer retains each item's raw marker but ignores delimiter changes. @@ -61,7 +60,7 @@ export function createJoiningOrderedList() { ), })), } - const parsedList = parse?.(resolved, helpers) ?? [] + const parsedList = this.parent?.(resolved, helpers) ?? [] if (Array.isArray(parsedList)) return parsedList /** Use the registered item parser so empty items retain their schema-required paragraph. */ const parsed = { ...parsedList, content: helpers.parseChildren(resolved.items) } diff --git a/apps/sim/app/workspace/[workspaceId]/files/components/file-viewer/rich-markdown-editor/round-trip-safety.test.ts b/apps/sim/app/workspace/[workspaceId]/files/components/file-viewer/rich-markdown-editor/round-trip-safety.test.ts index a5d251eadbf..b0e3e378e45 100644 --- a/apps/sim/app/workspace/[workspaceId]/files/components/file-viewer/rich-markdown-editor/round-trip-safety.test.ts +++ b/apps/sim/app/workspace/[workspaceId]/files/components/file-viewer/rich-markdown-editor/round-trip-safety.test.ts @@ -167,7 +167,13 @@ describe('isRoundTripSafe', () => { }) it('rejects non-idempotent churn', () => { - expect(isRoundTripSafe('render `` a`b `` inline')).toBe(false) + expect(isRoundTripSafe('10. ten\n ```\n code\n ```')).toBe(false) + }) + + it('keeps fenced code inside a numbered item editable and byte-stable', () => { + const source = '1. step\n ```\n code\n ```\n2. next\n' + expect(serializeMarkdownDocument(source)).toBe(source) + expect(isRoundTripSafe(source)).toBe(true) }) it('keeps HTML images with unsupported attributes in source mode', () => { diff --git a/apps/sim/app/workspace/[workspaceId]/files/components/file-viewer/rich-markdown-editor/text-input-rule.ts b/apps/sim/app/workspace/[workspaceId]/files/components/file-viewer/rich-markdown-editor/text-input-rule.ts deleted file mode 100644 index 70d0578e1cd..00000000000 --- a/apps/sim/app/workspace/[workspaceId]/files/components/file-viewer/rich-markdown-editor/text-input-rule.ts +++ /dev/null @@ -1,41 +0,0 @@ -import { type Editor, InputRule, inputRulesPlugin, isExtensionRulesEnabled } from '@tiptap/core' - -/** - * Materializes the actual text-input event before converting its syntax. Native rule ranges may - * extend past the current document for multi-character input; the native plugin still owns undo - * and composition, whose text is already in the document. - */ -export function createTextInputRulePlugins(editor: Editor, name: string, rule: InputRule) { - const extension = editor.extensionManager.extensions.find((item) => item.name === name) - if (!extension || !isExtensionRulesEnabled(extension, editor.options.enableInputRules)) return [] - - let pendingInput: { from: number; to: number; text: string } | null = null - const plugin = inputRulesPlugin({ - editor, - rules: [ - new InputRule({ - find: rule.find, - undoable: rule.undoable, - handler: (props) => { - if (!pendingInput) return rule.handler(props) - const { from, to, text } = pendingInput - props.state.tr.insertText(text, from, to) - return rule.handler({ - ...props, - range: { from: props.range.from, to: from + text.length }, - }) - }, - }), - ], - }) - const handleTextInput = plugin.props.handleTextInput - plugin.props.handleTextInput = (view, from, to, text, defaultTr) => { - pendingInput = { from, to, text } - try { - return handleTextInput?.call(plugin, view, from, to, text, defaultTr) - } finally { - pendingInput = null - } - } - return [plugin] -} diff --git a/apps/sim/lib/mcp/client.ts b/apps/sim/lib/mcp/client.ts index 0c466bbfe3d..3f843362398 100644 --- a/apps/sim/lib/mcp/client.ts +++ b/apps/sim/lib/mcp/client.ts @@ -150,6 +150,9 @@ export class McpClient { authProvider: useOauth ? this.authProvider : undefined, ...(useOauth ? {} : { requestInit: { headers: this.config.headers } }), fetch: (input, init) => runInOutboundScope(() => transportFetch(input, init)), + // The SDK's default ('same-origin') refuses cross-origin redirects; the guarded + // fetch already follows them with per-hop SSRF checks and cross-origin header stripping. + redirectPolicy: 'follow', }) this.client = new Client( diff --git a/apps/sim/lib/mcp/oauth/probe.ts b/apps/sim/lib/mcp/oauth/probe.ts index c39f521fe01..0af0b40484d 100644 --- a/apps/sim/lib/mcp/oauth/probe.ts +++ b/apps/sim/lib/mcp/oauth/probe.ts @@ -39,7 +39,8 @@ export async function detectMcpAuthType( const pinned = resolvedIP ? createPinnedFetchWithDispatcher(resolvedIP, { profile: MCP_EGRESS_PROFILE }) : undefined - const probeFetch: FetchLike = pinned?.fetch ?? createSsrfGuardedMcpFetch({ serverUrl: url }) + const probeFetch: FetchLike = + pinned?.fetch ?? createSsrfGuardedMcpFetch({ serverUrl: url, followRedirects: 'caller' }) const controller = new AbortController() const timer = setTimeout(() => controller.abort(), PROBE_TIMEOUT_MS) diff --git a/apps/sim/lib/mcp/pinned-fetch.ts b/apps/sim/lib/mcp/pinned-fetch.ts index 84a044f9bda..959a29532e9 100644 --- a/apps/sim/lib/mcp/pinned-fetch.ts +++ b/apps/sim/lib/mcp/pinned-fetch.ts @@ -1,6 +1,7 @@ import type { FetchLike } from '@modelcontextprotocol/sdk/shared/transport.js' import { createLogger } from '@sim/logger' import { isPrivateIp } from '@sim/security/ssrf' +import { omit } from '@sim/utils/object' import { createPinnedFetchWithDispatcher, createSsrfGuardedFetchWithDispatcher, @@ -125,6 +126,11 @@ function requestHref(input: string | URL | Request): string { return String(input) } +/** Drops the caller's `redirect` mode, so the guard follows under per-hop validation. */ +function withoutRedirectMode(init: RequestInit | undefined): RequestInit | undefined { + return init?.redirect === undefined ? init : omit(init, ['redirect']) +} + /** * Wraps the transport's same-origin fetch so a request to any other origin is * judged as content and validated per request, never inheriting the configured @@ -137,15 +143,21 @@ function requestHref(input: string | URL | Request): string { * {@link MCP_EGRESS_PROFILE} (honors the allowlist, permits loopback off-hosted) * or, worse, be pinned onto the server's private address. Same-origin requests — * the JSON-RPC transport itself — keep the persistent guarded path. + * + * Both paths follow redirects themselves whatever `redirect` mode arrives: the SDK + * also hands this fetch to its direct `auth()` calls (coordinated refresh), which + * send `redirect: 'manual'` and follow only same-origin hops on their own. */ function splitByConfiguredOrigin( sameOrigin: typeof fetch, serverUrl: string | undefined ): typeof fetch { - if (!serverUrl || !URL.canParse(serverUrl)) return sameOrigin - const configuredOrigin = new URL(serverUrl).origin - const crossOrigin = createSsrfGuardedMcpFetch({ serverUrl }) - return async (input, init) => { + const configuredOrigin = + serverUrl && URL.canParse(serverUrl) ? new URL(serverUrl).origin : undefined + const crossOrigin = configuredOrigin ? createSsrfGuardedMcpFetch({ serverUrl }) : undefined + return async (input, callerInit) => { + const init = withoutRedirectMode(callerInit) + if (!crossOrigin) return sameOrigin(input, init) const target = requestHref(input) const sameAsConfigured = URL.canParse(target) && new URL(target).origin === configuredOrigin return sameAsConfigured ? sameOrigin(input, init) : crossOrigin(target, init) @@ -342,19 +354,24 @@ function releaseStreamOnSettle( * `Response` is a detached in-memory copy. Only our own deadline is relabeled to `McpError`. * * @param timeoutMs Per-request deadline in ms (defaults to 30s; override for tests). + * @param followRedirects Who decides how a redirect is handled. `'guard'` (default) ignores + * the request's `redirect` mode and always follows under per-hop validation, because the + * SDK's `auth()`/discovery sends `redirect: 'manual'` and would otherwise drop a + * cross-origin hop. `'caller'` honors it, for the auth-type probe that needs a 3xx as is. * @throws McpSsrfError if a request URL resolves to a blocked IP address * @throws McpError if a request exceeds `timeoutMs` */ export function createSsrfGuardedMcpFetch( - options: { serverUrl?: string; timeoutMs?: number } = {} + options: { serverUrl?: string; timeoutMs?: number; followRedirects?: 'caller' | 'guard' } = {} ): FetchLike { - const { serverUrl, timeoutMs = OAUTH_FETCH_TIMEOUT_MS } = options + const { serverUrl, timeoutMs = OAUTH_FETCH_TIMEOUT_MS, followRedirects = 'guard' } = options // The origin the operator configured. A leg that stays on it is the server // they chose; everything else was named by that server's metadata. let configuredOrigin: string | undefined if (serverUrl && URL.canParse(serverUrl)) configuredOrigin = new URL(serverUrl).origin - return (async (url, init) => { + return (async (url, callerInit) => { + const init = followRedirects === 'guard' ? withoutRedirectMode(callerInit) : callerInit const target = typeof url === 'string' ? url : url.href const host = URL.canParse(target) ? new URL(target).host : target const sameAsConfigured = diff --git a/apps/sim/lib/mcp/transport-redirects.server.test.ts b/apps/sim/lib/mcp/transport-redirects.server.test.ts new file mode 100644 index 00000000000..f8d05d2a299 --- /dev/null +++ b/apps/sim/lib/mcp/transport-redirects.server.test.ts @@ -0,0 +1,242 @@ +/** + * Redirects across the MCP SDK and our SSRF guard, over real loopback sockets. + * Nothing between the SDK and the wire is mocked: two local servers on different + * ports are two origins, and loopback is reachable under the self-hosted profile. + */ +import { createServer, type IncomingHttpHeaders, type Server } from 'node:http' +import type { AddressInfo } from 'node:net' +import type { OAuthClientProvider } from '@modelcontextprotocol/sdk/client/auth.js' +import { LATEST_PROTOCOL_VERSION } from '@modelcontextprotocol/sdk/types.js' +import { afterEach, describe, expect, it, vi } from 'vitest' +import { McpClient } from '@/lib/mcp/client' +import { mcpAuthGuarded } from '@/lib/mcp/oauth/auth' +import { createGuardedMcpFetch } from '@/lib/mcp/pinned-fetch' + +interface RecordedRequest { + method: string + url: string + headers: IncomingHttpHeaders +} + +interface LocalServer { + origin: string + requests: RecordedRequest[] + close: () => Promise +} + +type Handler = ( + request: RecordedRequest, + body: string, + respond: (status: number, headers: Record, body?: string) => void +) => void + +const servers: LocalServer[] = [] + +async function startServer(handler: Handler): Promise { + const requests: RecordedRequest[] = [] + const server: Server = createServer((req, res) => { + const chunks: Buffer[] = [] + req.on('data', (chunk: Buffer) => chunks.push(chunk)) + req.on('end', () => { + const recorded = { method: req.method ?? '', url: req.url ?? '', headers: req.headers } + requests.push(recorded) + handler(recorded, Buffer.concat(chunks).toString('utf8'), (status, headers, body) => { + res.writeHead(status, headers) + if (body === undefined) res.flushHeaders() + else res.end(body) + }) + }) + }) + await new Promise((resolve) => server.listen(0, '127.0.0.1', resolve)) + const { port } = server.address() as AddressInfo + const local: LocalServer = { + origin: `http://127.0.0.1:${port}`, + requests, + close: () => + new Promise((resolve) => { + server.closeAllConnections() + server.close(() => resolve()) + }), + } + servers.push(local) + return local +} + +afterEach(async () => { + await Promise.all(servers.splice(0).map((server) => server.close())) +}) + +describe('MCP transport redirects', () => { + it('follows a cross-origin redirect of the SSE stream through the guard, without the configured credentials', async () => { + const www = await startServer((_request, _body, respond) => { + respond(200, { 'content-type': 'text/event-stream' }) + }) + const apex = await startServer((request, body, respond) => { + if (request.method === 'GET') { + respond(302, { location: `${www.origin}/mcp` }, '') + return + } + if (request.method === 'DELETE') { + respond(200, {}, '') + return + } + const message = JSON.parse(body) as { id?: number; method: string } + if (message.method !== 'initialize') { + respond(202, {}, '') + return + } + respond( + 200, + { 'content-type': 'application/json', 'mcp-session-id': 'session-1' }, + JSON.stringify({ + jsonrpc: '2.0', + id: message.id, + result: { + protocolVersion: LATEST_PROTOCOL_VERSION, + capabilities: {}, + serverInfo: { name: 'apex', version: '1.0.0' }, + }, + }) + ) + }) + + const client = new McpClient({ + config: { + id: 'server-1', + name: 'Apex', + transport: 'streamable-http', + url: `${apex.origin}/mcp`, + headers: { Authorization: 'Bearer configured-secret', 'X-Api-Key': 'configured-key' }, + }, + }) + try { + await client.connect() + await vi.waitFor(() => expect(www.requests).toHaveLength(1), { timeout: 5_000 }) + } finally { + await client.disconnect() + } + + const apexStream = apex.requests.find((request) => request.method === 'GET') + expect(apexStream?.headers.authorization).toBe('Bearer configured-secret') + const [redirected] = www.requests + expect(redirected.method).toBe('GET') + expect(redirected.url).toBe('/mcp') + expect(redirected.headers.authorization).toBeUndefined() + expect(redirected.headers['x-api-key']).toBeUndefined() + expect(redirected.headers['mcp-session-id']).toBeUndefined() + }) +}) + +const OAUTH_FETCHES = [ + { name: 'the default OAuth fetch', fetchFn: () => undefined }, + { + name: 'the transport fetch reused by coordinated refresh', + fetchFn: (serverUrl: string) => createGuardedMcpFetch(serverUrl).fetch, + }, +] as const + +function recordingProvider() { + const authorizationUrls: URL[] = [] + const provider: OAuthClientProvider = { + get redirectUrl() { + return 'http://127.0.0.1/callback' + }, + get clientMetadata() { + return { redirect_uris: ['http://127.0.0.1/callback'] } + }, + clientInformation: () => ({ client_id: 'client-1' }), + tokens: () => undefined, + saveTokens: () => {}, + redirectToAuthorization: (url) => { + authorizationUrls.push(url) + }, + saveCodeVerifier: () => {}, + codeVerifier: () => 'verifier-1', + } + return { provider, authorizationUrls } +} + +function authorizationServerMetadata(origin: string) { + return JSON.stringify({ + issuer: origin, + authorization_endpoint: `${origin}/authorize`, + token_endpoint: `${origin}/token`, + response_types_supported: ['code'], + code_challenge_methods_supported: ['S256'], + }) +} + +describe('MCP OAuth redirects', () => { + it.each(OAUTH_FETCHES)( + 'follows a cross-origin redirect of protected-resource discovery through $name, without its headers', + async ({ fetchFn }) => { + const json = { 'content-type': 'application/json' } + let apexOrigin = '' + const www = await startServer((_request, _body, respond) => { + respond( + 200, + json, + JSON.stringify({ resource: `${apexOrigin}/mcp`, authorization_servers: [apexOrigin] }) + ) + }) + const apex = await startServer((request, _body, respond) => { + if (request.url === '/.well-known/oauth-protected-resource/mcp') { + respond(302, { location: `${www.origin}${request.url}` }, '') + } else if (request.url === '/.well-known/oauth-authorization-server') { + respond(200, json, authorizationServerMetadata(apexOrigin)) + } else { + respond(404, {}, '') + } + }) + apexOrigin = apex.origin + const serverUrl = `${apex.origin}/mcp` + const { provider, authorizationUrls } = recordingProvider() + + await expect( + mcpAuthGuarded(provider, { serverUrl, fetchFn: fetchFn(serverUrl) }) + ).resolves.toBe('REDIRECT') + + expect(apex.requests[0].headers['mcp-protocol-version']).toBeDefined() + expect(www.requests).toHaveLength(1) + expect(www.requests[0].headers['mcp-protocol-version']).toBeUndefined() + expect(www.requests[0].headers.authorization).toBeUndefined() + expect(authorizationUrls).toHaveLength(1) + expect(authorizationUrls[0].searchParams.get('resource')).toBe(serverUrl) + } + ) + + it.each(OAUTH_FETCHES)( + 'refuses a cross-origin 307 of the token request through $name, as it would forward the body', + async ({ fetchFn }) => { + const elsewhere = await startServer((_request, _body, respond) => respond(200, {}, '{}')) + const apex = await startServer((request, _body, respond) => { + if (request.url === '/.well-known/oauth-authorization-server') { + respond( + 200, + { 'content-type': 'application/json' }, + authorizationServerMetadata(apex.origin) + ) + } else if (request.url === '/token') { + respond(307, { location: `${elsewhere.origin}/token` }, '') + } else { + respond(404, {}, '') + } + }) + const serverUrl = `${apex.origin}/mcp` + const { provider } = recordingProvider() + + await expect( + mcpAuthGuarded(provider, { + serverUrl, + authorizationCode: 'code-1', + fetchFn: fetchFn(serverUrl), + }) + ).rejects.toThrow( + 'Blocked by SSRF policy: cross-origin redirect would forward a request body' + ) + + expect(apex.requests.filter((request) => request.url === '/token')).toHaveLength(1) + expect(elsewhere.requests).toHaveLength(0) + } + ) +}) diff --git a/apps/sim/lib/webhooks/providers/clerk.ts b/apps/sim/lib/webhooks/providers/clerk.ts index 09257d38ecc..631d1e03fd5 100644 --- a/apps/sim/lib/webhooks/providers/clerk.ts +++ b/apps/sim/lib/webhooks/providers/clerk.ts @@ -1,6 +1,4 @@ import { createLogger } from '@sim/logger' -import { safeCompare } from '@sim/security/compare' -import { hmacSha256Base64 } from '@sim/security/hmac' import { NextResponse } from 'next/server' import type { AuthContext, @@ -9,49 +7,10 @@ import type { FormatInputResult, WebhookProviderHandler, } from '@/lib/webhooks/providers/types' +import { verifyStandardWebhookRequest } from '@/lib/webhooks/providers/utils' const logger = createLogger('WebhookProvider:Clerk') -/** - * Verify a Clerk webhook signature using the Svix signing scheme. - * Clerk uses Svix under the hood: HMAC-SHA256 of `${svix-id}.${svix-timestamp}.${body}` - * signed with the base64-decoded `whsec_...` secret, compared against the - * space-delimited, versioned (`v1,`) `svix-signature` header. - */ -function verifySvixSignature( - secret: string, - msgId: string, - timestamp: string, - signatures: string, - rawBody: string -): boolean { - try { - const ts = Number.parseInt(timestamp, 10) - const now = Math.floor(Date.now() / 1000) - if (Number.isNaN(ts) || Math.abs(now - ts) > 5 * 60) { - return false - } - - const secretBytes = Buffer.from(secret.replace(/^whsec_/, ''), 'base64') - const toSign = `${msgId}.${timestamp}.${rawBody}` - const expectedSignature = hmacSha256Base64(toSign, secretBytes) - - const providedSignatures = signatures.split(' ') - for (const versionedSig of providedSignatures) { - const parts = versionedSig.split(',') - if (parts.length !== 2) continue - const sig = parts[1] - if (safeCompare(sig, expectedSignature)) { - return true - } - } - return false - } catch (error) { - logger.error('Error verifying Clerk Svix signature:', error) - return false - } -} - export const clerkHandler: WebhookProviderHandler = { async verifyAuth({ request, @@ -65,19 +24,15 @@ export const clerkHandler: WebhookProviderHandler = { return new NextResponse('Unauthorized - Clerk signing secret is required', { status: 401 }) } - const svixId = request.headers.get('svix-id') - const svixTimestamp = request.headers.get('svix-timestamp') - const svixSignature = request.headers.get('svix-signature') - - if (!svixId || !svixTimestamp || !svixSignature) { - logger.warn(`[${requestId}] Clerk webhook missing Svix signature headers`) - return new NextResponse('Unauthorized - Missing Clerk signature headers', { status: 401 }) - } - - if (!verifySvixSignature(signingSecret, svixId, svixTimestamp, svixSignature, rawBody)) { - logger.warn(`[${requestId}] Clerk Svix signature verification failed`) - return new NextResponse('Unauthorized - Invalid Clerk signature', { status: 401 }) - } + const failure = verifyStandardWebhookRequest({ + request, + rawBody, + requestId, + secret: signingSecret, + providerLabel: 'Clerk', + headerPrefix: 'svix', + }) + if (failure) return failure return null }, diff --git a/apps/sim/lib/webhooks/providers/granola.ts b/apps/sim/lib/webhooks/providers/granola.ts index ce3738181df..b8dfb7dcb9f 100644 --- a/apps/sim/lib/webhooks/providers/granola.ts +++ b/apps/sim/lib/webhooks/providers/granola.ts @@ -1,6 +1,4 @@ import { createLogger } from '@sim/logger' -import { safeCompare } from '@sim/security/compare' -import { hmacSha256Base64 } from '@sim/security/hmac' import { toRecordOrNull } from '@sim/utils/object' import { NextResponse } from 'next/server' import { getNotificationUrl, getProviderConfig } from '@/lib/webhooks/provider-subscription-utils' @@ -14,57 +12,16 @@ import type { SubscriptionResult, WebhookProviderHandler, } from '@/lib/webhooks/providers/types' +import { verifyStandardWebhookRequest } from '@/lib/webhooks/providers/utils' import { GRANOLA_TRIGGER_TO_EVENT_TYPES } from '@/triggers/granola/utils' const logger = createLogger('WebhookProvider:Granola') const GRANOLA_WEBHOOK_ENDPOINTS_URL = 'https://public-api.granola.ai/v1/webhook-endpoints' -/** Granola advises rejecting deliveries whose timestamp is more than a few minutes old. */ -const GRANOLA_WEBHOOK_TIMESTAMP_SKEW_SECONDS = 5 * 60 - /** Scopes used when the trigger leaves the field blank. */ const DEFAULT_GRANOLA_SCOPES = ['personal', 'public'] -/** - * Verify a Granola webhook signature using the Standard Webhooks scheme: - * HMAC-SHA256 of `${webhook-id}.${webhook-timestamp}.${body}` keyed with the - * base64-decoded signing secret (after the `whsec_` prefix), compared against - * the `webhook-signature` header which may carry one or more space-separated - * `v1,` entries. - * @see https://docs.granola.ai/webhooks - */ -function verifyGranolaSignature( - secret: string, - msgId: string, - timestamp: string, - signatures: string, - rawBody: string -): boolean { - try { - const ts = Number.parseInt(timestamp, 10) - const now = Math.floor(Date.now() / 1000) - if (Number.isNaN(ts) || Math.abs(now - ts) > GRANOLA_WEBHOOK_TIMESTAMP_SKEW_SECONDS) { - return false - } - - const secretBytes = Buffer.from(secret.replace(/^whsec_/, ''), 'base64') - const expectedSignature = hmacSha256Base64(`${msgId}.${timestamp}.${rawBody}`, secretBytes) - - for (const versionedSig of signatures.split(' ')) { - const parts = versionedSig.split(',') - if (parts.length !== 2) continue - if (parts[0] === 'v1' && safeCompare(parts[1], expectedSignature)) { - return true - } - } - return false - } catch (error) { - logger.error('Error verifying Granola webhook signature:', error) - return false - } -} - /** * Parse a comma-separated or JSON-array trigger field into a string list. * Trigger fields are free text, so both forms are accepted. @@ -187,21 +144,14 @@ export const granolaHandler: WebhookProviderHandler = { return new NextResponse('Unauthorized - Granola signing secret is required', { status: 401 }) } - const webhookId = request.headers.get('webhook-id') - const webhookTimestamp = request.headers.get('webhook-timestamp') - const webhookSignature = request.headers.get('webhook-signature') - - if (!webhookId || !webhookTimestamp || !webhookSignature) { - logger.warn(`[${requestId}] Granola webhook missing Standard Webhooks signature headers`) - return new NextResponse('Unauthorized - Missing Granola signature headers', { status: 401 }) - } - - if ( - !verifyGranolaSignature(signingSecret, webhookId, webhookTimestamp, webhookSignature, rawBody) - ) { - logger.warn(`[${requestId}] Granola signature verification failed`) - return new NextResponse('Unauthorized - Invalid Granola signature', { status: 401 }) - } + const failure = verifyStandardWebhookRequest({ + request, + rawBody, + requestId, + secret: signingSecret, + providerLabel: 'Granola', + }) + if (failure) return failure return null }, diff --git a/apps/sim/lib/webhooks/providers/incidentio.ts b/apps/sim/lib/webhooks/providers/incidentio.ts index ff0eecba698..1f6acc5294a 100644 --- a/apps/sim/lib/webhooks/providers/incidentio.ts +++ b/apps/sim/lib/webhooks/providers/incidentio.ts @@ -1,6 +1,4 @@ import { createLogger } from '@sim/logger' -import { safeCompare } from '@sim/security/compare' -import { hmacSha256Base64 } from '@sim/security/hmac' import { toStringOrNull } from '@sim/utils/coerce' import { toRecordOrNull } from '@sim/utils/object' import { NextResponse } from 'next/server' @@ -11,53 +9,10 @@ import type { FormatInputResult, WebhookProviderHandler, } from '@/lib/webhooks/providers/types' +import { verifyStandardWebhookRequest } from '@/lib/webhooks/providers/utils' const logger = createLogger('WebhookProvider:Incidentio') -const INCIDENTIO_WEBHOOK_TIMESTAMP_SKEW_SECONDS = 5 * 60 - -/** - * Verify an incident.io webhook signature using the Svix signing scheme. - * incident.io webhooks are powered by Svix: HMAC-SHA256 of - * `${webhook-id}.${webhook-timestamp}.${body}` signed with the base64-decoded - * `whsec_...` secret, compared against the `webhook-signature` header which may - * carry one or more space-separated `v1,` entries. - * @see https://docs.incident.io/integrations/webhooks - */ -function verifyIncidentioSignature( - secret: string, - msgId: string, - timestamp: string, - signatures: string, - rawBody: string -): boolean { - try { - const ts = Number.parseInt(timestamp, 10) - const now = Math.floor(Date.now() / 1000) - if (Number.isNaN(ts) || Math.abs(now - ts) > INCIDENTIO_WEBHOOK_TIMESTAMP_SKEW_SECONDS) { - return false - } - - const secretBytes = Buffer.from(secret.replace(/^whsec_/, ''), 'base64') - const toSign = `${msgId}.${timestamp}.${rawBody}` - const expectedSignature = hmacSha256Base64(toSign, secretBytes) - - const providedSignatures = signatures.split(' ') - for (const versionedSig of providedSignatures) { - const parts = versionedSig.split(',') - if (parts.length !== 2) continue - const sig = parts[1] - if (safeCompare(sig, expectedSignature)) { - return true - } - } - return false - } catch (error) { - logger.error('Error verifying incident.io Svix signature:', error) - return false - } -} - /** * Locate a named entity (incident/alert) within an incident.io webhook body. * @@ -97,29 +52,14 @@ export const incidentioHandler: WebhookProviderHandler = { }) } - const webhookId = request.headers.get('webhook-id') - const webhookTimestamp = request.headers.get('webhook-timestamp') - const webhookSignature = request.headers.get('webhook-signature') - - if (!webhookId || !webhookTimestamp || !webhookSignature) { - logger.warn(`[${requestId}] incident.io webhook missing Svix signature headers`) - return new NextResponse('Unauthorized - Missing incident.io signature headers', { - status: 401, - }) - } - - if ( - !verifyIncidentioSignature( - signingSecret, - webhookId, - webhookTimestamp, - webhookSignature, - rawBody - ) - ) { - logger.warn(`[${requestId}] incident.io Svix signature verification failed`) - return new NextResponse('Unauthorized - Invalid incident.io signature', { status: 401 }) - } + const failure = verifyStandardWebhookRequest({ + request, + rawBody, + requestId, + secret: signingSecret, + providerLabel: 'incident.io', + }) + if (failure) return failure return null }, diff --git a/apps/sim/lib/webhooks/providers/linq.ts b/apps/sim/lib/webhooks/providers/linq.ts index 819b87ce0c7..56ac42570fd 100644 --- a/apps/sim/lib/webhooks/providers/linq.ts +++ b/apps/sim/lib/webhooks/providers/linq.ts @@ -1,6 +1,4 @@ import { createLogger } from '@sim/logger' -import { safeCompare } from '@sim/security/compare' -import { hmacSha256Base64 } from '@sim/security/hmac' import { NextResponse } from 'next/server' import { getNotificationUrl, getProviderConfig } from '@/lib/webhooks/provider-subscription-utils' import type { @@ -13,52 +11,12 @@ import type { SubscriptionResult, WebhookProviderHandler, } from '@/lib/webhooks/providers/types' +import { verifyStandardWebhookRequest } from '@/lib/webhooks/providers/utils' import { LINQ_API_BASE, linqHeaders } from '@/tools/linq/utils' import { LINQ_ALL_WEBHOOK_EVENT_TYPES, LINQ_TRIGGER_TO_EVENT_TYPE } from '@/triggers/linq/utils' const logger = createLogger('WebhookProvider:Linq') -/** Max clock skew tolerated between the webhook timestamp and now (seconds). */ -const MAX_TIMESTAMP_SKEW_SECONDS = 5 * 60 - -/** - * Verify a Linq webhook signature using the Standard Webhooks scheme. - * Linq signs `${webhook-id}.${webhook-timestamp}.${rawBody}` with HMAC-SHA256 using - * the base64-decoded `whsec_...` signing secret, and delivers the result as one or - * more space-separated `v1,` signatures in the `webhook-signature` header. - */ -function verifyLinqSignature( - secret: string, - msgId: string, - timestamp: string, - signatures: string, - rawBody: string -): boolean { - try { - const ts = Number.parseInt(timestamp, 10) - const now = Math.floor(Date.now() / 1000) - if (Number.isNaN(ts) || Math.abs(now - ts) > MAX_TIMESTAMP_SKEW_SECONDS) { - return false - } - - const secretBytes = Buffer.from(secret.replace(/^whsec_/, ''), 'base64') - const toSign = `${msgId}.${timestamp}.${rawBody}` - const expectedSignature = hmacSha256Base64(toSign, secretBytes) - - for (const versionedSig of signatures.split(' ')) { - const parts = versionedSig.split(',') - if (parts.length !== 2) continue - if (safeCompare(parts[1], expectedSignature)) { - return true - } - } - return false - } catch (error) { - logger.error('Error verifying Linq webhook signature:', error) - return false - } -} - /** Parse a comma/whitespace-separated list of phone numbers into a clean array. */ function parsePhoneNumbers(value: unknown): string[] { if (typeof value !== 'string') return [] @@ -81,21 +39,14 @@ export const linqHandler: WebhookProviderHandler = { return new NextResponse('Unauthorized - Linq signing secret is required', { status: 401 }) } - const webhookId = request.headers.get('webhook-id') - const webhookTimestamp = request.headers.get('webhook-timestamp') - const webhookSignature = request.headers.get('webhook-signature') - - if (!webhookId || !webhookTimestamp || !webhookSignature) { - logger.warn(`[${requestId}] Linq webhook missing Standard Webhooks signature headers`) - return new NextResponse('Unauthorized - Missing Linq signature headers', { status: 401 }) - } - - if ( - !verifyLinqSignature(signingSecret, webhookId, webhookTimestamp, webhookSignature, rawBody) - ) { - logger.warn(`[${requestId}] Linq webhook signature verification failed`) - return new NextResponse('Unauthorized - Invalid Linq signature', { status: 401 }) - } + const failure = verifyStandardWebhookRequest({ + request, + rawBody, + requestId, + secret: signingSecret, + providerLabel: 'Linq', + }) + if (failure) return failure return null }, diff --git a/apps/sim/lib/webhooks/providers/loops.ts b/apps/sim/lib/webhooks/providers/loops.ts index 9df04c84858..756610de6f2 100644 --- a/apps/sim/lib/webhooks/providers/loops.ts +++ b/apps/sim/lib/webhooks/providers/loops.ts @@ -1,6 +1,4 @@ import { createLogger } from '@sim/logger' -import { safeCompare } from '@sim/security/compare' -import { hmacSha256Base64 } from '@sim/security/hmac' import { NextResponse } from 'next/server' import type { AuthContext, @@ -9,54 +7,10 @@ import type { FormatInputResult, WebhookProviderHandler, } from '@/lib/webhooks/providers/types' +import { verifyStandardWebhookRequest } from '@/lib/webhooks/providers/utils' const logger = createLogger('WebhookProvider:Loops') -const LOOPS_WEBHOOK_TIMESTAMP_SKEW_SECONDS = 5 * 60 - -/** - * Verify a Loops webhook signature. - * Loops uses a Svix-compatible signing scheme (its own implementation, not Svix-hosted): - * HMAC-SHA256 of `${webhookId}.${timestamp}.${body}` signed with the base64-decoded signing - * secret (provided as `prefix_base64string`). Delivery metadata arrives in the `Webhook-Id` and - * `Webhook-Timestamp` headers, and the `Webhook-Signature` header carries one or more - * space-separated `version,signature` pairs (e.g. `v1,`). - * @see https://loops.so/docs/webhooks - */ -function verifyLoopsSignature( - secret: string, - webhookId: string, - timestamp: string, - signatureHeader: string, - rawBody: string -): boolean { - try { - const ts = Number.parseInt(timestamp, 10) - const now = Math.floor(Date.now() / 1000) - if (Number.isNaN(ts) || Math.abs(now - ts) > LOOPS_WEBHOOK_TIMESTAMP_SKEW_SECONDS) { - return false - } - - const base64Secret = secret.includes('_') ? secret.slice(secret.indexOf('_') + 1) : secret - const secretBytes = Buffer.from(base64Secret, 'base64') - const toSign = `${webhookId}.${timestamp}.${rawBody}` - const expectedSignature = hmacSha256Base64(toSign, secretBytes) - - const providedSignatures = signatureHeader.split(' ') - for (const versionedSig of providedSignatures) { - const parts = versionedSig.split(',') - const sig = parts.length === 2 ? parts[1] : versionedSig - if (sig && safeCompare(sig, expectedSignature)) { - return true - } - } - return false - } catch (error) { - logger.error('Error verifying Loops signature:', error) - return false - } -} - export const loopsHandler: WebhookProviderHandler = { async verifyAuth({ request, @@ -70,19 +24,18 @@ export const loopsHandler: WebhookProviderHandler = { return new NextResponse('Unauthorized - Loops signing secret is required', { status: 401 }) } - const webhookId = request.headers.get('webhook-id') - const timestamp = request.headers.get('webhook-timestamp') - const signature = request.headers.get('webhook-signature') + // Loops secrets are `_` and the prefix is not always `whsec`; + // with no `_`, indexOf is -1 and the whole secret is kept. + const base64Secret = signingSecret.slice(signingSecret.indexOf('_') + 1) - if (!webhookId || !timestamp || !signature) { - logger.warn(`[${requestId}] Loops webhook missing signature headers`) - return new NextResponse('Unauthorized - Missing Loops signature headers', { status: 401 }) - } - - if (!verifyLoopsSignature(signingSecret, webhookId, timestamp, signature, rawBody)) { - logger.warn(`[${requestId}] Loops signature verification failed`) - return new NextResponse('Unauthorized - Invalid Loops signature', { status: 401 }) - } + const failure = verifyStandardWebhookRequest({ + request, + rawBody, + requestId, + secret: base64Secret, + providerLabel: 'Loops', + }) + if (failure) return failure return null }, diff --git a/apps/sim/lib/webhooks/providers/resend.ts b/apps/sim/lib/webhooks/providers/resend.ts index c04289e3a00..d3045a5ab96 100644 --- a/apps/sim/lib/webhooks/providers/resend.ts +++ b/apps/sim/lib/webhooks/providers/resend.ts @@ -1,6 +1,4 @@ import { createLogger } from '@sim/logger' -import { safeCompare } from '@sim/security/compare' -import { hmacSha256Base64 } from '@sim/security/hmac' import { NextResponse } from 'next/server' import { getNotificationUrl, getProviderConfig } from '@/lib/webhooks/provider-subscription-utils' import type { @@ -13,6 +11,7 @@ import type { SubscriptionResult, WebhookProviderHandler, } from '@/lib/webhooks/providers/types' +import { verifyStandardWebhookRequest } from '@/lib/webhooks/providers/utils' import { RESEND_ALL_WEBHOOK_EVENT_TYPES, RESEND_TRIGGER_TO_EVENT_TYPE, @@ -20,45 +19,6 @@ import { const logger = createLogger('WebhookProvider:Resend') -/** - * Verify a Resend webhook signature using the Svix signing scheme. - * Resend uses Svix under the hood: HMAC-SHA256 of `${svix-id}.${svix-timestamp}.${body}` - * signed with the base64-decoded `whsec_...` secret. - */ -function verifySvixSignature( - secret: string, - msgId: string, - timestamp: string, - signatures: string, - rawBody: string -): boolean { - try { - const ts = Number.parseInt(timestamp, 10) - const now = Math.floor(Date.now() / 1000) - if (Number.isNaN(ts) || Math.abs(now - ts) > 5 * 60) { - return false - } - - const secretBytes = Buffer.from(secret.replace(/^whsec_/, ''), 'base64') - const toSign = `${msgId}.${timestamp}.${rawBody}` - const expectedSignature = hmacSha256Base64(toSign, secretBytes) - - const providedSignatures = signatures.split(' ') - for (const versionedSig of providedSignatures) { - const parts = versionedSig.split(',') - if (parts.length !== 2) continue - const sig = parts[1] - if (safeCompare(sig, expectedSignature)) { - return true - } - } - return false - } catch (error) { - logger.error('Error verifying Resend Svix signature:', error) - return false - } -} - export const resendHandler: WebhookProviderHandler = { async verifyAuth({ request, @@ -72,19 +32,15 @@ export const resendHandler: WebhookProviderHandler = { return new NextResponse('Unauthorized - Resend signing secret is required', { status: 401 }) } - const svixId = request.headers.get('svix-id') - const svixTimestamp = request.headers.get('svix-timestamp') - const svixSignature = request.headers.get('svix-signature') - - if (!svixId || !svixTimestamp || !svixSignature) { - logger.warn(`[${requestId}] Resend webhook missing Svix signature headers`) - return new NextResponse('Unauthorized - Missing Resend signature headers', { status: 401 }) - } - - if (!verifySvixSignature(signingSecret, svixId, svixTimestamp, svixSignature, rawBody)) { - logger.warn(`[${requestId}] Resend Svix signature verification failed`) - return new NextResponse('Unauthorized - Invalid Resend signature', { status: 401 }) - } + const failure = verifyStandardWebhookRequest({ + request, + rawBody, + requestId, + secret: signingSecret, + providerLabel: 'Resend', + headerPrefix: 'svix', + }) + if (failure) return failure return null }, diff --git a/apps/sim/lib/webhooks/providers/utils.ts b/apps/sim/lib/webhooks/providers/utils.ts index 5207a79ec36..f6487fefa3f 100644 --- a/apps/sim/lib/webhooks/providers/utils.ts +++ b/apps/sim/lib/webhooks/providers/utils.ts @@ -2,6 +2,7 @@ import type { Logger } from '@sim/logger' import { createLogger } from '@sim/logger' import { safeCompare } from '@sim/security/compare' import { sha256Hex } from '@sim/security/hash' +import { verifyStandardWebhook } from '@sim/security/standard-webhooks' import { NextResponse } from 'next/server' import type { AuthContext, EventFilterContext } from '@/lib/webhooks/providers/types' @@ -49,6 +50,49 @@ interface HmacVerifierOptions { requireSecret?: boolean } +interface StandardWebhookRequestOptions { + request: Pick + rawBody: string + requestId: string + secret: string + providerLabel: string + /** Header names the provider sends; see {@link verifyStandardWebhook}. */ + headerPrefix?: 'webhook' | 'svix' +} + +/** + * Verifies a Standard Webhooks (Svix-format) delivery and maps a failure to the provider's + * 401: `Missing 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 K0r~eG%l``#C7AC3 literal 0 HcmV?d00001 From 76aadfd87869a781b53d1fbf71a47b1cb73ced9f Mon Sep 17 00:00:00 2001 From: Waleed Date: Mon, 19 Oct 2026 16:58:20 -0700 Subject: [PATCH 10/12] feat(library): Best Dust Alternatives in 2026 for AI Agent Workflows (#9232) * feat(library): Best Dust Alternatives in 2026 for AI Agent Workflows * Pi Babysit: address PR #9232 feedback * docs(library): verify and correct Dust alternatives facts --------- Co-authored-by: Sim Pi Agent --- .../best-dust-alternatives-2026/index.mdx | 122 ++++++++++++++++++ .../best-dust-alternatives-2026/cover.jpg | Bin 0 -> 27683 bytes 2 files changed, 122 insertions(+) create mode 100644 apps/sim/content/library/best-dust-alternatives-2026/index.mdx create mode 100644 apps/sim/public/library/best-dust-alternatives-2026/cover.jpg diff --git a/apps/sim/content/library/best-dust-alternatives-2026/index.mdx b/apps/sim/content/library/best-dust-alternatives-2026/index.mdx new file mode 100644 index 00000000000..72bd3519994 --- /dev/null +++ b/apps/sim/content/library/best-dust-alternatives-2026/index.mdx @@ -0,0 +1,122 @@ +--- +slug: best-dust-alternatives-2026 +title: 'Best Dust Alternatives in 2026 for AI Agent Workflows' +seoTitle: 'Best Dust Alternatives for AI Agent Workflows' +description: 'Compare Dust alternatives for AI agent workflows: Sim, n8n, Gumloop, Relevance AI, Zapier Agents, and Glean on hosting and workflow depth.' +date: 2026-10-19 +updated: 2026-10-19 +authors: + - andrew +readingTime: 7 +tags: [AI Agents, Workflow Automation, AI Tools, Sim] +ogImage: /library/best-dust-alternatives-2026/cover.jpg +draft: false +faq: + - q: "Can Dust run multi-step automations?" + a: "Yes, within its agent model. Dust agents use tools that can take actions in third-party platforms, can call other agents, and can run on schedules or webhook triggers. The agent decides which tools to use for each request, so Dust is less suited to automations that must follow the same explicit sequence of steps every run." + - q: "Can Sim handle the knowledge Q&A we use Dust for?" + a: "Yes. Sim knowledge bases let agents retrieve relevant document passages, and you can use them inside workflows. If you need knowledge bases that sync automatically, KB Live Sync is included on Max and Enterprise." + - q: "Which tools can we self-host?" + a: "Anyone can self-host Sim's Apache 2.0 core for free with Docker Compose or Kubernetes. Sim's pricing table lists supported self-hosting as an Enterprise feature alongside SSO and SOC 2, and enterprise features such as SSO and audit logs require an Enterprise subscription for production use. n8n supports self-hosting under its source-available Sustainable Use License. Glean offers a Customer Hosted deployment in your own GCP or AWS account that Glean still operates. Dust's pricing page lists hosted plans with single-tenant deployment on Enterprise and no self-hosted plan. Gumloop's pricing page lists no self-hosted plan, with an optional VPC (a private network in your own cloud account) on Enterprise. Relevance AI's docs describe a multi-tenant hosted service with a US, EU/UK, or AU data region chosen at signup." + - q: "What does \"workflow depth\" mean here?" + a: "Workflow depth describes how much control you have over the steps an agent takes after receiving a request. For example, Sim lets you branch on conditions, repeat steps, run steps in parallel, and pause for human input." +--- + +## TL;DR + +- **Sim** fits teams using Dust that need [multi-step agent workflows](https://docs.sim.ai/workflows) with explicit branching, human review, and knowledge retrieval in one tool. +- **n8n** fits technical teams that want [self-hosted automation](https://docs.n8n.io/deploy/host-n8n) with over 500 integrations and custom code, under a source-available license. +- **Gumloop** fits teams that want agents that use connected tools and [run from schedules, app events, or webhooks](https://docs.gumloop.com/core-concepts/agent_triggers). +- **Relevance AI** fits enterprise teams that want an [AI workforce with agents and tools](https://relevanceai.com/pricing) rather than building each workflow from scratch. +- **Zapier Agents** fits teams that already rely on Zapier and want agents that [act across 9,000+ apps](https://zapier.com/agents). +- **Glean** fits teams comparing enterprise search and knowledge assistants with Dust, rather than prioritizing workflow automation. + +## Why teams outgrow Dust for workflow automation + +Dust works well when you need agents that answer questions across company material. Its [Business plan](https://dust.tt/home/pricing) connects Slack, Notion, GitHub, Drive, and more than 20 other sources, and agents combine instructions, skills, knowledge, and tools. Dust also runs agents on [schedules and webhook triggers](https://docs.dust.tt/docs/user-documentation/agents/triggers), so its agents can do more than answer questions. Business plan seats are Free with 500 lifetime credits, Pro at €24 per seat per month billed yearly (€30 monthly), and Max at €120 per seat per month billed yearly (€150 monthly), excluding VAT. + +The difference is how the steps are defined. In Dust, [the agent evaluates each request and picks a combination of tools](https://docs.dust.tt/docs/user-documentation/agents/tools) to use. Dust's tools documentation does not describe explicit branches, loops, or a step-by-step visual builder. That model suits open-ended requests, but recurring tasks that must follow the same steps every time, with controlled tool access at each step, are easier to build and audit in a workflow builder. Our guide to [AI agent workflow builders](https://www.sim.ai/library/ai-agent-workflow-builders-multi-step-tasks) explains why this distinction matters for multi-step tasks. + +The comparison below weighs pricing, hosting options, workflow depth, knowledge features, and integrations. Prices and product details are current as of October 2026. If Dust already handles your knowledge questions, focus on how each alternative defines workflow steps and controls access to external tools. + +## Comparison at a glance + +Sim is listed first for custom agent workflows, while Dust provides the knowledge-assistant baseline. Listed prices are starting points, not comparable usage allowances. + +| Tool | Starting price | Hosting and self-hosting | Workflow depth | Knowledge features | Integrations | +|---|---|---|---|---|---| +| Sim | [Free (1,000 one-time credits); Pro $25/user/month](https://www.sim.ai/pricing) | [Apache 2.0 core](https://github.com/simstudioai/sim) anyone can self-host; supported self-hosting listed as an Enterprise feature | Visual blocks for branching, loops, parallel runs, human review, and code | [Knowledge bases](https://docs.sim.ai/knowledgebase); KB Live Sync on Max | [273](https://www.sim.ai/integrations) | +| n8n | [€20/month billed annually (2,500 executions)](https://n8n.io/pricing/) | [Yes](https://docs.n8n.io/deploy/host-n8n), under a [source-available license](https://docs.n8n.io/n8n-community-license) | Visual workflows plus a [JavaScript and Python Code node](https://docs.n8n.io/build/code-in-n8n/using-the-code-node) | [Vector store nodes for RAG](https://docs.n8n.io/build/integrate-ai/understand-ai-components/retrieve-relevant-context) | [Over 500](https://n8n.io/) | +| Gumloop | [Pro from $37/month after a 14-day free trial](https://www.gumloop.com/pricing) | No self-hosted plan listed; VPC optional on Enterprise | Agents run from schedules, app events, and webhooks | Company Brain | Connectors plus hosted MCP servers | +| Relevance AI | [Enterprise custom](https://relevanceai.com/pricing); docs list [Pro from $19/month](https://relevanceai.com/docs/get-started/pricing) | [Hosted, multi-tenant; US, EU/UK, or AU region](https://relevanceai.com/docs/admin/security) | Agents, tools, and Workforces | [Knowledge bases that retrieve relevant information](https://relevanceai.com/docs/get-started/core-concepts/knowledge) | [2,000+](https://relevanceai.com/pricing) | +| Zapier Agents | [Free (400 activities/month); Agents Pro $50/month](https://zapier.com/pricing) | Managed cloud | Runs capped at 10 activities (Free) or 40 (paid) | [Company knowledge](https://zapier.com/agents) | [9,000+ apps](https://zapier.com/agents) | +| Glean | Contact sales | [Glean Hosted or Customer Hosted](https://docs.glean.com/get-started/prepare/about-deployment) | [Agent orchestration](https://www.glean.com/ai-agents/agent-orchestration) | Enterprise search | [275+ connectors](https://www.glean.com/platform/connectors) | +| Dust | [Free (500 lifetime credits); Pro €24/seat/month billed yearly](https://dust.tt/home/pricing) | Hosted; single-tenant deployment on Enterprise | Agent tools, multi-agent workflows, and triggers | Connectors to 20+ data sources | Slack, Notion, GitHub, Drive, 20+ more, and any tool via MCP | + +### Sim + +**Best for** + +Sim fits you if Dust handles your company knowledge questions but you need to build multi-step agent workflows with explicit branching. The [Sim and Dust comparison](https://www.sim.ai/comparisons/dust) covers the two approaches side by side. + +**What it is** + +Sim is an open-source AI workspace for teams. Its Workflows module is a visual builder, and it sits alongside Chat, Tables, Files, and [Knowledge Base](https://docs.sim.ai/knowledgebase), whose knowledge bases agents can search for relevant document passages. You connect blocks, configure their inputs, and review each step of a run in the [run logs](https://docs.sim.ai/logs-debugging/logging), where a trace shows every block with its timing, status, inputs, and outputs. + +**Pros** + +Sim gives you direct control over how an agent proceeds. [Agent](https://docs.sim.ai/workflows/blocks/agent), [Condition](https://docs.sim.ai/workflows/blocks/condition), and [Router](https://docs.sim.ai/workflows/blocks/router) blocks let you define different paths. [Loop](https://docs.sim.ai/workflows/blocks/loop) and [Parallel](https://docs.sim.ai/workflows/blocks/parallel) blocks handle repeated or concurrent work. A [Human in the Loop](https://docs.sim.ai/workflows/blocks/human-in-the-loop) block pauses a run until a person submits input, such as an approval, and a downstream Condition can route on that answer. A [Function](https://docs.sim.ai/workflows/blocks/function) block runs custom code. That structure makes a multi-step workflow easier to inspect than a single agent carrying a long set of instructions. For more design context, see [AI agent orchestration frameworks explained](https://www.sim.ai/library/ai-agent-orchestration-frameworks-explained). + +[Sim's Apache 2.0 core](https://github.com/simstudioai/sim) can be [self-hosted](https://docs.sim.ai/platform/self-hosting) with Docker Compose or Kubernetes, with [enterprise-licensed features excluded](https://github.com/simstudioai/sim/blob/main/apps/sim/ee/LICENSE). Its knowledge bases cover the retrieval use case you may already rely on Dust for, and Sim connects to [273 integrations](https://www.sim.ai/integrations). Sim can also [deploy workflows as an MCP server](https://docs.sim.ai/workflows/deployment/mcp) (MCP, the Model Context Protocol, lets AI apps call tools), so compatible AI clients can call them as tools. + +**Cons** + +You have to design the workflow paths yourself, which takes more setup than a straightforward knowledge assistant. Enterprise features such as SSO (single sign-on), SCIM user provisioning, audit logs, and access control use the [separate Sim Enterprise License](https://github.com/simstudioai/sim/blob/main/apps/sim/ee/LICENSE), which requires an active Sim Enterprise subscription for production use. + +**Pricing** + +Sim's [cloud plans](https://www.sim.ai/pricing) are Free with 1,000 one-time credits (worth $5) and 30 days of log retention; Pro at $25 per user per month with 6,000 credits plus a 2,000-credit weekly refresh; Max at $100 per user per month with 25,000 credits plus a 4,000-credit weekly refresh; and Enterprise at custom pricing. Paid plans keep logs without a time limit. KB Live Sync starts on Max, while SSO requires Enterprise. Anyone can self-host [Sim's Apache 2.0 core](https://github.com/simstudioai/sim) for free. The pricing table lists Self Hosting, meaning supported self-hosting, as an Enterprise feature alongside SSO and SOC 2, and enterprise features require an [Enterprise subscription for production use](https://github.com/simstudioai/sim/blob/main/apps/sim/ee/LICENSE). Any self-hosted Sim deployment can run [local models](https://docs.sim.ai/platform/self-hosting) through Ollama, vLLM, LM Studio, or LiteLLM. + +### n8n + +n8n fits technical teams that want to self-host automations and connect a wide range of apps, even if building and maintaining workflows takes more work. [n8n says it offers over 500 integrations](https://n8n.io/), and you can [host n8n on your own infrastructure](https://docs.n8n.io/deploy/host-n8n) rather than use its cloud service. For logic that the visual nodes do not cover, the [Code node](https://docs.n8n.io/build/code-in-n8n/using-the-code-node) runs JavaScript or Python. + +n8n's source code is public, but its [Sustainable Use License](https://github.com/n8n-io/n8n/blob/master/LICENSE.md) limits permitted use and distribution. n8n [describes its licenses as fair-code and source-available](https://docs.n8n.io/n8n-community-license) and does not call itself open source. By comparison, [Sim's core uses Apache 2.0](https://github.com/simstudioai/sim), with a [separate license for enterprise code](https://github.com/simstudioai/sim/blob/main/apps/sim/ee/LICENSE). Our [Apache 2.0 versus fair-code guide](https://www.sim.ai/library/apache-2-0-vs-fair-code) explores the practical difference. + +For cloud use, n8n charges [by monthly workflow executions, regardless of complexity](https://n8n.io/pricing/). Its pricing page lists Starter at €20 per month for 2,500 executions and Pro at €50 per month for 10,000, both billed annually. Business costs €667 per month billed annually for 40,000 executions and is currently self-hosted only, and Enterprise pricing is custom. If you self-host, you also run the infrastructure. + +### Gumloop + +Gumloop fits teams that want a hosted platform for AI agents that work across their tools. Its [pricing page](https://www.gumloop.com/pricing) lists the older workflow builder as "Workflows (Legacy)", so new work centers on agents. [Agent triggers](https://docs.gumloop.com/core-concepts/agent_triggers) can run on a schedule, from an app event, or through a webhook, while its [API](https://docs.gumloop.com/api-reference/getting-started) can trigger automations programmatically. + +Pro starts at $37 per month after a 14-day free trial and includes 20,000 credits per month, unlimited agents, BYOK (bring your own model API keys), and one hosted MCP server. Enterprise pricing is custom. The [pricing page](https://www.gumloop.com/pricing) lists no self-hosted plan, though Enterprise offers an optional VPC, a private network in your own cloud account. + +### Relevance AI + +Relevance AI fits enterprise teams that want specialist agents instead of building each workflow from scratch. Its [Enterprise plan](https://relevanceai.com/pricing) centers on agents, tools, Workforces, integrations, and governance features. + +Relevance AI's two official pricing pages disagree. Its [pricing page](https://relevanceai.com/pricing) lists only an Enterprise plan at custom pricing, with 2,000+ integrations, unlimited agents and tools, SSO, RBAC (role-based access control), and audit logs. Its [pricing documentation](https://relevanceai.com/docs/get-started/pricing) lists Pro from $19 per month billed annually ($29 monthly) and Team from $234 per month billed annually ($349 monthly), and says the Free plan is retired. Agents can use [knowledge bases that retrieve relevant information](https://relevanceai.com/docs/get-started/core-concepts/knowledge), a RAG (retrieval-augmented generation) system, to ground their responses. Relevance AI runs on a [multi-tenant architecture](https://relevanceai.com/docs/admin/security) with a US, EU/UK, or AU data region chosen at signup, and its docs do not describe a self-hosted option. Confirm the current plan with Relevance AI and verify the specific apps your agents need. + +### Zapier Agents + +Zapier Agents fits you if you already use Zapier and want AI agents to act through your existing app connections. Its main draw is access to [more than 9,000 apps](https://zapier.com/agents), and you can equip agents with company knowledge. If you need long, custom agent workflows, check the run limits before choosing it. + +Agents use a separate billing unit called activities, which [does not affect your Zapier task usage](https://zapier.com/pricing). The Free plan includes 400 activities per month, and Agents Pro includes 1,500 for $50 per month or $400 per year. A single agent run is capped at 10 activities on the Free plan or 40 on a paid plan, and at the cap the agent asks before continuing. Those caps can constrain a long multi-step run even when you have activities left for the month. + +### Glean + +Glean fits teams whose primary need remains enterprise search and answers drawn from company knowledge, rather than custom multi-step automation. That makes it a closer alternative to Dust's knowledge-assistant use case than to a workflow builder. + +Glean lists [275+ connectors](https://www.glean.com/platform/connectors), enterprise search, and [agent orchestration](https://www.glean.com/ai-agents/agent-orchestration). Contact Glean for pricing and plan on a demo using your own knowledge sources. For data control, Glean offers a [Customer Hosted deployment](https://docs.glean.com/get-started/prepare/about-deployment) that runs in your own GCP or AWS environment, with Glean responsible for infrastructure and application management. + +## How to choose + +If you mainly need answers from company documents, Dust may still fit. Consider Glean if you want another knowledge-focused option, but expect to contact sales for pricing. + +For lightweight automation, choose Zapier Agents if you already use Zapier's app connections, or Gumloop if you want a hosted agent platform with triggers and schedules. If you need custom workflows that branch, loop, and involve multiple agents, Sim lets you combine those steps with [knowledge retrieval](https://docs.sim.ai/knowledgebase). That makes it a closer fit when Dust answers your questions but cannot easily carry out the work that follows. You can also compare broader licensing and deployment choices in our guide to [open-source AI agent platforms](https://www.sim.ai/library/open-source-ai-agent-platforms). + +Workflow depth and self-hosting may settle the choice. Compare Sim with n8n if you want to run workflows on your own infrastructure. Anyone can self-host [Sim's Apache 2.0 core](https://github.com/simstudioai/sim), while its enterprise features need an [Enterprise subscription for production use](https://github.com/simstudioai/sim/blob/main/apps/sim/ee/LICENSE); n8n uses a source-available license. + +## Conclusion + +If Dust handles your company knowledge questions well, workflow depth should decide whether you add another tool or switch. Sim lets you build agents that branch, loop, and take actions across connected apps while still retrieving information from documents. If you need those workflows, use the [Sim vs Dust comparison](https://www.sim.ai/comparisons/dust) to assess which setup fits. diff --git a/apps/sim/public/library/best-dust-alternatives-2026/cover.jpg b/apps/sim/public/library/best-dust-alternatives-2026/cover.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4f57fb2f263540c206f974ef9aa6ac323d8f818a GIT binary patch literal 27683 zcmeFXWmufevM4&ZL-61Z!GaAC2<}dB_uwwU-ED9k+}$O(1b24}?iL&Z9J1E;t-bC! z&)NI#d!KuMop)xQ?&-I?tgEZ4tNV5Fbp;>{fc@tK2M3FQ`1V0TMnXbH!9qoQ`(Tk^ z;$XggNeIXY@ZNqb)a2yUET5PdnLdf|@`|V`sM^^j{Q&~;{~E{-06IKm9&|Mn1UUc_ z9Rdm+;8pLqYy|i}mmA|LpL(3_yl@8}kn8-CILL*T07S zw<|FGMg-aa?NOroqT_`yX0(>Uq11rQA zY8@@&Zy7kg|2-5lV*53$NN7XxNSP_kT>ur;%JKk>gpTaSTlTSBh50dAs|1xRVW+TT z`Bm(k{N^%ghS|w>vN0Oz{~j8VKAtAA7LP)Df=qfk00dsVYVSE+d;&hLsGD6PRh^O+ z74|gG+B8jtx$(UJNCiX97%$_07YTa6aHcl7`X9o?ZmtB&mjcCv!K7EV*;D7R(XQ}3 zKmS`Kvwt>tAMg9$8uEWS{~rnb9|`<_A^~)tIOXt{xTG|PzraI;muzacXpQbIDOZ+qD;=>@!FAvE z4FgDMW-vcI!zkPp-F&ozz|KD#mSG}#7<*Xo(w8;yTyVkA2LPaYZ;f`4c}6kf8$LXx zC;I}(u%Xk`jjs7QRs#po5e@eXQ3HBL=dpDL1oXr%png6X?!KXgA{=yk1Rxtx?H;lG zVv*t-EjZn>FIsgYTys3RHIaDhu>XDp05?vX^85MU3FaDigBs>Wko=vbLJ-eHqbNVP zR8-DV;a|9_J!fEMbD*^otU|&T*FN5E06QRh{^0Qwsc-+vatMEQO?cNb z8bO3M?u9qjmu9HO!BUaUbmsXnOj~{@ROrQ4C^A;_Cf0lk*91Yv-EFC`ab@NVfZtwV zqB{SqFu99a6F;{v#r_0ICZm1b?K-VCt6cibb6N*GG%qfz;&^47u=lc7JQ8gxrDF`y zIDHIi+%TZU+U=9UxR2~`P-@(@jdCJ}^-?s;ODl8A-G4|7n_fM4wUm-S-|A;~PU3GC zSaoV27kHs=Ae)Xv{?+JfB7vlf-I5zwF0H7nc!zCW#B}f3nbD7RJMbZbjR3mg-v#8D zIibPBk~Ele!Ht#?vDJ3hMeZ2txzj&;-e*4bjvhMuw-2A7xFiMYoX{crz)MZ@96)cJ*bYE0>4q?9qrnRJ3%GD(Ue`nQ*Wgf$2`NE%)lB3_aCkzR;b=Y zn7Vxwd;F5hNtcq(R@vfG&9|2vq<=|>*qjJKU8q*Zqe|y9;r>)2*@KOv+-SXdTe;%? zip4ir?Q`(=pi5y7Gs%p+{J8WL2jxy0aoXd+_k9Y4KWb#bcBGFH{G)p-)5*zk!~a+t z^Cz8h9_eXC0%(V(MFv$|^rNqJcXX4Xe{!+oktNxkl|R+31J!Mbms4H1;D zttquUZ0y#O0;M{^NfkcKc_Vl98JxX83WpPL&YS*CjozJyWe2^C_L_(u0PaI&g1&Xc z`?72)Dd^Y~7+qcSN1616Bd|Pw&#Dp)Kk$1*;ZeGnw=eAJrNG z7I|zn*ojbZpM-WEvH=t+wNq7~F}RQ>v+b*H!q|{VJ}dfW!axX&MOy*<`_)NTkKin6 zRx~CBgn=v+6XM^Z#)9RMa)ENvXJihtzK~pD9|3%Pz5FVMq4jy!JiNV3I)6&Yxdd3m;=uj^MqteOa^A!+O6OFHPgd5 zyBtMfr(w!J#(kF@P246Ab|L{vFcpX6^XL};B;xm#{~Vm;^K`O0+(fTM{F_x}qXs}- zjdMy8(cDekJv{zRD|U%7x#HyC|NbuNmxzpcsm{5zTd{k;wknGT$_o5`UPy433*O{t zY0lmoy7kp{VyqD(&@#pODtz=2R6Zs;Fy{46nVTO85dT|Boco-^?ke}lgFhoO!bgXl zy}`KkS|Rxb$Bqa2qgSlBw3M5~xa9F(JA)|tt!^mc1=gWGeTKOeJv|U$ju;`oZH>(@ zzYc-kejh>$eKD&$+NOiIeq$6lRL* z^vZ{^wF(7Xn|V-MNOEyWw%Qz`9Cc=#P;HfW(VloBn5%Ybs(;*n-#c{Q5zR5t6?-fS zK-Vgq86vDQpCe;_im!dBx40AeAIw5PWGPUGI z%6mC|_LdNA@LCz7xJ$@;IkE77;R; zEy3(4;S1vX&3qVOjy>8eYt;+H5|?yrwi-Py!xAWJ@YB9d{(P)$vjOiOO>}bE*c^j9m_E&V`|-ewLOUuJPu&f;VQQ5XET- zD4V;-uR?i#)^lBDKU}0PV|!))i{HO0aKL47SSMEQ}ykPKK-6alE7Jo+35PzSz3204C#!aD_9z zC)!n}!^D!|3zWFfHKUEp&N8T3cdnflnSxLK74Vhg=TH)=%RzY4eFIq?DJ-g!Q(gs% zY>J6r{#umz_lD0D#*!Ni4{Y%k9NXLH$_nvlLk}%bxE~z9g{A(KGiyBpDlH|cm)2BT zd~J7j^~lS(<)m`{D%`j-&FJp>HNjgZelas3W1l3BTu)e!=zmVX$c_e-A&pv-1*hIj!aSSOD$d=*S3VTx8x9;{pc4(UIyLrqLNMs91AGYvw& zfXOr2io@Jae=1JLuJu^wy5v3NNfy#X?JQ4lP3vn-y7dWJH_oALeyTg9uiyV{QrIYY zqPHGPJw14GU1C`4+RdK1F!QT=>6pW~@9IW5t+-s(*=V9nqIp`SH;&MHzwK(Wu(EY! z&Qx@_$2iC*LrHUIxOLVHWqgE#Rr4v+t20{QKPUFjTNp2uje3O1Ys$0ckMDyj(8+%t z)v61+qsARTW=`&$jD#GJeq%osAwtrS)9+<{EIhA?NDOz(2+%`rZuj9}{3${kk(u&l zn#z|FR3|j*7`>g_iydaFw^@yTg>+a@V04$-=A|(Wa|}=@6ogyuu>-rR-0@S|rQkSz zlt#q6jWxqO)s&rFUH{jV0`@C|ibHJ{#0_zh>P)zbHVles=6i*7mAFU5;iEe~8gmLMy_PNUGmUu0QlM2F4>N0I>IsZhflODV#qq&XlW2xp>6H+r@ z3th(N1@)&^njk*38nSL>L@qmB)^%7sneDZW;jrjlX9#C)DGLClu z2xv%%w@lqz0SO5O06;@PLcsuF-?77?V_;%&VB_GDvH|tUm<7I2ijq^<`Lf1zz2(#3 z-?D5F@PJpqnM&}vC7JD)Vn)@yM)HhTKv$Y^O~NJ$bJpke{qeh|*7jRV0^Xe47+BNw zZ>O>rWm2;9embi;>H+$FuBiq&vShZd$~Sg1e(z!_CrfiF(&yQ=@ARf?*0F>=ejKuJj%u2P?n|IYE~cAPD_1w5ZhN(sY#g3R<&XA26Q9g|Y;GQyWKB^y zaCaMkIXOu+hQCUdO^WbqMYXb-7LmNL*xg=P;a0cR6kPTF*mc1ox3ruHG`7|9?j(nt zh_#X)iDraPXF=FpQw9T#Erc8)?e~@Ol3`Jpe!z?5&R#=>s62)|-z#7Sa_kR|6%`~q zieS=b)*VhR!^n}+5DEgV_AI33nck03A)&GV!V_}QH(-`^{jjw0JaF~=AM}Ff8?bpK zc^pnU^2!xrbA@X2e~VhsP}R;w*Y?CQ=vDtEN;s-2-K-p@?u3dfka$+fO10#E znrYFoQL#nRgG-d_GqZ2%b4N1KsFOtJngq|klPPDZIjek0dG!jgbj=5=u}-=(rniW7 zVELFS-1FaLy4?-r$60=(m)9V~uxfXnVAr#qzeL-Nh??R*ysGPbir#PK{WXn*FZv3g z{N<=QpIa10ll2sQlwivH)zL{xtXV~%sJu+{I>k9v)y*-P(UnCt1Q7GvPab5!Qej~{ z25`wto1OUrCw}C`NkXdh3gB)k!Z}d!cPG-<6!k271zi3fYWmWD*MFYD{`+A@um4Q* zSCs>(S}~<~(WmdzW|^29KT%0VqSakn^bdiC2Z4F|v5f!aRBh2;^jNDPbK>3l~TbRs%wBY<#sn!@WIz;`+uq zfHmsz)kt^Z>{QJ;M+Y6SoH&-VfE<`r=XCp^XT~9}I<$vSWnH~YFUs^ZkLD>rK*49+ zJ|^))uIOv;^U7REVR@vOK2;kOEZryLua}}gPn%~%Ia+sKIjfy}1|6z~qgbjLa8HIT9?zBBwOnTHM@}i#i3e z-Y?LVo9ADx)p(1b@94E|xyFoC#)Z4p=oPTB(Um|mt1u?93r0^a^0tZn6x)aaX-VLlsAeYW&^pj!|1JWAM zp^uJk;8sFErZm5140*5&7xpF9(~O8PlRB83JPyxWGq+p#{d-09&g%UJkQy&4!no@9 z6G!l@ic1w#Z$+=N19{OSrjK3Q$=#KvV*?SqQz8393F4)hkoev}6Dd;+_peBXB^<@t z+Q;#dQ-y=G{#I<`2oCE4I<;wdjXe^Y6jc}#FOR7$%T^DDeEksHX^9cisY=K6_A|@$ zxpUhL&ZQO)&&ofld<9gPz=|2MfhuE=Msey)*i9a$xF=-ife~=&YUT0 z8_+T97TR9{xR)l~EnLyA4N9?GiVX3)szauVw|R8dVofN4(aCI5$vDN}wG|73uOjof z^NkK%GlxXqQd^qGa$~jjWrI%(c>sP0D%z!G5Nr_?#w03Bs!QQyZpL33zr=OGfBZHC1NV=*k=?k(_c`fKzPkq@e>t}UtXR^kWWdvqtB zjHQ`cbCdSq8GZ|lAaf-O>*6J*Zf~kTd`}hf2=z9_19m%=(dL;%C>ExFutfiA#R>Hs6QHNlt zNa6CKIqoz$JpI))=hdloYgwlqGj}X4omdA!wHfjyXmXa)(SM*<98EM^#0l4fVWNK|&rT~6=2fuBAYGu)0b?ZI{>L zen+(+-ncDsps;rfS6mU=-!QyDk*02_t`@9m^24Rq1|&Qm@6k?c(e}rqd2E3V!5TO#Es5kxL_)u zECZIR5z+L5(V7kj2Ek!DLF- z7nzA-YU8s3_7kI8^?WDR0eS@m1?-P4eT`<_VzPC6@&7Q&$X4M=CFSFj%NsCCzevW= zXsqhlr}_Kk%~*=ukqnx&7KMSRW5O#9i?)Z!{eDwJe=~7WlgF$G8xu;2@0J}e$Ulah zt>f*|Q;JH)rc`x}mFLqtwrC5w^eSRZCND-^E~6U7a0pujrYnTqday?-2C8JqR{zoI=hkl_*##K{pg1ua zN6*8$@igo=>upw!Q#;G5#_1hIgVj!4#EE93ep%r}H_nN})rv4&ufo{EC8GB)4vajJ zjU0~4wMPB2Ihekbaux ziY8g7!zY~ABijN8JD1<4PMhBRu%|7lyQONv+LyOX6M5x}%QZCYjBlf=LD-vl3{88& zW`v5T`(Yin4f`JgtU%iALZsGI^0P%0(EvlBsC)^VI~P4yYmWvE4;Qnh>m^ELOv%7lkNl@ieT*_i}<5MpsQ#`*iaylaCq#^ z1eXVQddKoGRJ)-IL&mZY9AgYqchL%`LD3L!-Xi)1-iWBtk&A`L))2LL_?A!S8!=^z zd!_w7OR!q=fH_5H*_zu5JAZPzDhCUv%91Lzu@I4Ju(ovW;t$&1h>td$%y4?lGGi1u z;>nzTirw2;daLT5(`W|$gWX1LHTo@>y5HHj{;|M-k>6;7_{R2n<}{gAl@=-rVsiEe zu^xWG@Ok>lCxi9%Ro|(*m8pA*rKo-WV+N(CjvQ@8b({xU+1>D{P%P>=F9_oi^p|^f z%6W_^pf}6KB4g_;mT*cx4WL$eXzYYT{qLudS9`yC;^cw!7lR6$ZM`pDNx$~YbF)tH zpI`^gVm7IF(SI}i!BjWiCF!D55ugMG(gI~8%UneU9az-+Mm3b-13 z{&895@%cBO)6%|dp9;$YX10)=W4@YM0ud8wFlJFPYvTF z(-z5Zj3yd;;k_%%&N_h2grh5ZQ*|W7-lP4pUY!YjRad**VGfm)3~}9*A2~ef8-OIX z9IoQhIdS%nXPO&`%Dlf+R3&K$-X`@)^j)5@gxCV`*7p|Ap#NB!w4b}5(0Z=bNMZ$k z2Yi^s^QOUW-z}jr=}-KXRZDY2YIOj;Q5cP_(~C77pLR0E#EHv9j`UX#cR_Wcl=94y zU33OTgt>tZP1d^eqh%N5SpkTVWD?XuG%=}rnX-_bk9hho#-Mm{N=0?p3)Bzd2T8=D zf!+LnO|HW#dv!Tb^-a;wjrw^eTc1BB8tYrvAb+^XuE8)cZ7N_*Nes7}0K%2^CYyJr zX2NlednAs}vZs=HFpU3kpBY)+yCI)Dh2q0?qm>5C^n$C%eotQ3Pmib>04tEEkM|{e zy|=4*!&fb3>lyK*jkY}&pT$P+Pr4y0MI7i=d-2LZq#D_jvAR_x+TZKxesyr2{S`rk z)YP(^c%{fyRx^kjzb8Q{MK&HXjB?En*9p+32AlHcB}l~O=Y3qNF5^K0&Y)8iq$$l8 zu)0RGo|Pn%N>G&3%aGq8<9$}`KS-;$s?|>W&&ZsA%$G-xy<0T4{Bq?16 z6HFbRhpeG^>HoNX^)1@on`Bn_NzBJk7E+HP z2>*Z)&nJ@KJ7tdUfWqgGeXb5msOn~PMQN279VHCZ%q8CMMl4R&iHV=15Bt>L7`rQ)DYfl@V>+A4+0(vRd@ zTm2mbf|M9Ov9zph5XaD=f-fVynw5(MAN-t_V+MUwtd7MSu|;Wiq-5}65kGAYBx#KwxSD{A52IAB4gPPL^B@zXt6?}ZDFS;T%eYRrtG~pr57nq9X_C#q>mk} zRa06}VgK@((IR(RG|By$ud;qHB80*GxI!Jo@(82Y+Md|rWo_^!8IPGcXOLL_jfL8J z_t-BAP4#ofjNvyTf(1%wJZzlFHE}GXZY{Dba*kVa6XNGD+2+^Typ+1|?;W<(L+Ql| zGgKy@c>_8jrVm9_JH#5wE!aDsx2|&f+oR7fUIErB=-8^#Ev^}xuD6K=bR1|kD(Ii* zwZJLZT9i2dXlV4Xs7bE?6NIO(ZAP4uUWn*!;kn7&oLLeN;YXRSvA2IYyBKDSf#W*G z{SBjRL06T5%6{VG6OznTA$R9Cxy418ar&g9fZ6VOU|%bCb7p%HHQ|F&bbD?qmXAjn zH~wpQ=_vnFwqbFuJu-#@t{R6tWW>YXJV+6~VUeL?{hU8sr?S7|Fb|No|DnHuO%v$N9 z44!PeG~2^aeI*6R#wsAPo8){!w!SJ{IHWPGdE#g~lGI=T1|?vp)J0}3q&27W@+MS_ zaR+x;?0hN~!TP2q_yRj*a7pjKCngAt8DmqwV;S?Hi?U9%3;GV4S=qHOdU9wzTW8=^ zDMcRCPYH@8A5-kv!pfuX9B4Vlc?)It>R$mmSB2f+pyv4=JhHfEEy5`Ix6N4D>O9>K z_*zc8R>q_95VH=y!HNav#nZ2XNPA1;#wuxPU`iQdU>psB5gu{R*Le$zlIr<8Ym*O7 zV$IF@fGLZ2iQ7I9#W}?D&7+RG%fDhKMQD*7Gd1K~Olw&5%vmox`{$PtuVGYBP`=dS zlLp2e8hid4VgOTF>O%@|uuw#0Tn$)iu-+T;K$Q2!C_+}iHfKV7qB@H-q%_x3naUdm z-s4QzYcmLeiglN?Fut0+Wk0m{wQUuC>ZRJ zCr2U{cL*52B%q-;dHnc zVm9#5bL{L>uc_b>>k$#1Z?kRP=pDzMN=h0L*nxSFt^0|Hgf9fZfzHUJwX;+j+U4u!;K z7-j&LUnw5<>s|WuUlN8D6X-1-W*8n5gDn~qmX~Yd*^6hzzMmwC2@}Q*85*6Se)xXC z{$e0X{Ckc5+4}RIjYT8LyF$G2vA=E9>Cy=wg@ZO|#`4*ERPi%Y*$a)L{t%ckq_`r6 zbMIQZpjpCE52le55PAJ4E?M(408UW+*`GHrBS>#mp+H|BeR(Npt$@-5*^Xap)SqD8 zVV{ILsfeBnm@4`q2d(lB7=dGAaoy>S2iU7D!CSe%5UB}IE=Tq>zeoIu`rb0E@;A>} z-WkEN_a@r{hlQ85*Yte6b126M<;i0zBgt;w$dQu>j%RC0uH6-W~9dh84)DK)Op zQiKes5-rDBi$UkQxvl9ZmRk<8i_=HNqoFWdE^1VZ1iq7zDGx@mR1Gh{SJ0>z$p5m$ z!X}0ntN1X~|H4M1N%lUxLRlF!e80H6ZG52WY5uZW+4EZpp?GzYhaZ6{bMmRJr97l_ zJfiiFke$7rl1QA74GxZQV0XRyELHi7F!yBxC|8+`L6@CCX*78wX8C`~_GFQP4^Pnm zAu-t*8-W$>%^qcOTj4Q8fif2$JG90NB3R< z^RV5}q`xTM+s5DWJn$P${IeJirN*!9K)6G*U)+1kGVe{4sK0Hr!EYPw|3Z|>Y4A?5 zKKsTd#w8y~OJzMrnp^YAN>Q_&e03RqSO>WoGW^roGWL*rHpE|kUuB){qwufBW01!Z zV*!C8jTjmIi-}C>j_y~Q+muvQ@T`Oc7^ypmDD@uilc;5}VtFQQ1dAyzVmRiBzAG&1KW zIpg2De6mr_;~1vf)t9i9jYAUik?o(O7}@E$W7f3?OT)txiV8B+jZI#lzyhZAtoiUc z!{N1~S_bL@ORc&+Y#8NMf6|c|*}=PJu#HUvYUyOw??a{i$;n16KUfH+G+W-`8?}OO zn+Zer&WN{b{^YC1vJ|VwCw$n8aCHn<-Zu2NS;tR&&!3UgF2?%(W@P`RQ+va1u$9%B zv_&bYdcY;v8F!#eFj_hX&qI$<7f0(u6e=y7<3eT}-=v6&sHni5bPa{X{D5UsEoibG zUBx5*%R-hG5{RB*{KFM>N;;Ck_ewuf%zcz-KD))Mw*tl^|Gi76Q?{GzeM*fqB`d3X zz=oAR=)L61S}IGq5${>-xW{$7x5VcPr2W6OeEY3C?Ip|mJF&fXKieWfOm&s0D}8Ob zP`#twF+RVW>Q6r${-IuPiIm$V{NbNSjOQM^9y{Ivdb^Pd=lcd#_ZfnA)Mkyug^dCm z|MJ(46ib*S6el1rzulx$#Ln?g0a-)2{bqqklox}*89{14gVk;NEMq;GY$XKV0)=nT zO%D2$etLUo>~n3GCQs8kQw(WQ|lREHyzkn`fU1r@2o&m;R{F+u?z|oVxZK4k^}5!#gPvyVYhRGZ9-(Ul$8WS$x6AUvBJ1={Bs(W z!gq-N4;ya`G*PShe~5fSn?g*VE+o*MJ1Mbx7os;mVy(e!@5Ns`%>7_-)Q711G4R9V zv*$2_VEmarztr;gYby z!`om4jS37NyvnY;sd=%Jx?Bhdj)i#8&MjiJb9rL-;Jqp zG7tw|=8g;_g>6*gGO zGV>hmL1DE1G}g4e7e~6f&pW*D?Dgo3S4Zr`*@zr11^n@maHuo&H0QB};&YuO)2t#Z z`-(La1I1X9D*tVQ?T1wPsKqo|DXme-suK&9dWQ2wmjs|>Yn~xD$ybjy?RfV=ryS9ySTwXjLeaE=%a~_Lz%{A&QC$S(8HsfWa zd~UMrk~OsIT4c$OE~J*muG`?@y5WNz%%1cEp?k-ZcA0Fqbt)yi@K69 z0({MfkVV8CLiMuj^jn$crVaz7%8%+McBnx9Ybawl?fwcu}lu5lvDDN=>VdFZLByar;#=S z(ODcvcpfv$<0zdua5jg%%>6|zOVwxL3u65baS9^2SdOmy6yZgnPj!FRj$u}Gg2rDY z_v6Y922x7${2^NTKT1sXt{ma0*nbKhpo|$DqL{atK0w1tyVr&EXKxTK#u3Esf6?<5 z5RsW0y}=qnoM40VH{SqOWty9K2jj+Ta7njlNf^iXSj!5kQIT$Y@yNq!9W{PK*2s|K z4WsE=KA0AX0w&+zzK}#RN4z3+xtr)jQaCCyop{d3DN=wcDhKjMXhIk0PQ&DAQ9aBu+rvf8_{W|56ceV);DyTKjXy z)%{MP3L|myzWd_v@Q9iP*4ou#is?wZ1$)snSKZpk0-1%#o7uUmj|Y0CZKqfWKdiCDTqw||8sG5+Y4l8FHOgS%%yiEH1tqH2q zTIaZ0!{wkj!nOUkHT+z5-K9y+>GH`RrYqTrJX9mP-&X8L%ar1%875u?U4QStPbfft zE!Ms9N+|+bBbqGEn*z%8w6u`n@JKAQ)rfgHU2_H_98LDXXd{% zK0!+j#Tm_a;*Bx&xQ(RDjNIBIbv-U-Um5Okjq z=S>$Xgy$%$b)CKf%2B`zI^{bXGfW_H-QaogB-L%9;LuzTnX z+EoBqgB=(5xJJK)O)tjfOE2B)Or<+)-rn3)`USlLL}jSsvd3Qm{Km6F(0EZu><@bE zj7A&3eLT^I>U|T&Cwea5*+=vpWCpKyIgL^B%SsHXag?fjuR0G>&@5e0Jez?*g8dXV z36NNr(O62hQW~OH&hsi61=dpMQ2*@L2uv21cEb}VjCK^zf&fP`bsdwO{op*Mfd#=ikN^`0s!#*o7H4@7pc z*+3aF;{qp~92v@yf{ol#>Jl9f1B{j?2~%P&A2_m~#nsB%+|syee=P7+ie-)Xf>Cionu&^C82qL3ZTy&Gu6y`? zznt~sL(+7}C&5D(MD_Kehz!-1H60GT{I$rkoytz<@Zy}q??GHVPVS4!AhkCqHkb8w zaZc_X01^Tc5*i*J5dj+F?ZzD7?cN*!9r_&x8H)lYxuAjl+qp0dDXXHAvR@p9kfBj* zd`@oN6qfK8egC}fAJfbNj$3S$cD^bBFU8qCgf4fk(ryPcb*h_u@%fQ)i2q~Gb zD8OO<@%%aH1K!>wx6os`EDyh$JlfoB%(HsQyhyC>fB=*o)6h#WH@kfU%u+{C$qtko zs6xGX7s@7Vo?C1xiH^!|`H@u{YYzwZdiO-qg?w4Y8Jx%$D}yc2Ou2}7QHcM08cK;W z)R~pp;5xEqQe@ro6Wl=+yun&jA1c%J+li7iIdr@XR>Qfa!#pSEoh2?$Q(+Cf)DrA% z^~mJVc4Opy#AW}ipbR$Fx}=`*gn1Pr1>at1@uMJc43!#Zhi}6S$e`nT+#H-sk4Z6+sax9Onl}J_pO5Uno{gFOEIdv%0 zW911Zug0itY^Nr3YVME4EeFPOQpc=JS|}bp<~VcGt()_A_VTgx=hTa#^;^t<-LeW& zK|~D7b-uTY0U{aby20{<_V|$5S7pj&gwdSvL7)I_2+LiDgDvJPSY=2!33kfLppkVU zgysXtc9trZ)&WXLjdwg_!|E>@qzYj|qi~t6vLDPY4oE~!7@WWQHu{-O&^6(Q<{1%& zZx_hE0(>MqjX=U?ktC6GMZhb5X*PU_%P97YTxM^&h4NQ`d6h6t6#RmdeFK4OaWFNX zShQ_}tZaA>`Xzy+c#8#lCZFmT^gan1PHis+RI;O0b;fLt+=T`vP8!VJJ zSZu24Go#N8qh@gZpXQxIyYI^qYDp!5-O{?Z-x&=}o#9m{EG;jmz0nyRis84B=96I` zRi|-ylq^6xa&!9dKtBv8%6<-7O-|*^_{~pl`7zYAUF3$|gXjU4Cye!6Q zCAi1_vvFoWUd@=+O?QaUj00tuZk4SjPPb;KO2%^3=5l0IceKOjiGGj2^X`U;=TV5< z`D4_yrJVVmcajMZYMapVvxxq0l~;foLU;4>6cJjTF&}MnMDzhYe5l;QuaqY_rLBPB zWf|-Q)Kj*E(02ucjO80T73%4x9a-C204Q1$T{wC108%&S_A}I@B$Lg0V3QD9tcPZo z?F44z-OO(v@1PXz0n%lVqTN-7kYWoreG^jFD?t7jYcnyFA9h95FzX0hBYz{SK2OBL ze~rEQUYf`+%8#%A`;#d>MhpTVqi{7b+^5u{kAIHch|sC`X7f{s?&V!qk*ZQn!Yauf zV;-TIPSj6&tXF{YTqq+wq`-#}52yPmRpxFR2=0l0zz0n$s|nX0{n)-m()=`8N1)rK zO8Zh$G9sp4F-W0)_*`_D^}R1P{|Batkd0D?c>p~?85BrzQ!_38Ug9J#!;*k9HYNSw zd&GX;cdw_$AR9Cj$BJF zHw6j&m9Ayl$~e+*pL>uZpMh@f=|tU%DZ9F8qQO%xkZm;V61w7{I7anZcVeS8TyXY( zn&hUN`dEXlyOnp3rk#xs^Z!uT*f!WIr$F(|mmRT(Qdn{dCUGGzCK5DkE`Fj^#)$|= z%Yhx~oAE=GrcXcHnsQN<19GKFw4EUG_h4&oJ8~vd7Otx?eth?^&{W_R>0iBis*>T+!cTT6O> z+m}r0599lG?G5Bj>-i+O*og0}P3-8DJ*=ll_Yd^yn6$mOcKq_b(G5Glv+RzUr6<&n z&u#taGxbkaSRq#eBYd!YIl=wi1+9TvQ_$W&t|wM>zv>im;5+7ov+q*X;+R88pE%kl zMaZ>eDph7!(@e9;- zK$vQ{6P-d#dq{vnHxSAl+g}iKwg)_cJ6H|b#iz{JO9^OGt~w{doQP;+eKQP>0tZJb z2`8lUH3XM(H{7#RTZUNuYk9PKBesz)Gx4So=6hTO=mA+x7HW4O7MkF=6gs*jlg|Kb z3c(QA?*0;zUxf_4t8q4RN~yWKQHtsws8eF2?2>rDVrHwXId-`ux@=%GLZ4A?vywV! zx5+iQPfN^J!CHJ&XWU`Mic7%j?IXS#S+h$De_o@V{lmPGS3sW6ZwoOBdoGEePGAS0 z3u|7_6pJQL@oTBn9mj@@2$Ju#kukq|$XZs?z7d-WHxSqls{xE?cKO_Lr&+>OKMeg! z0rxfON=zmSo?st*EhN2|nyos=cMhWH5s8z$TuT(-;PDTmJf$vlUA6kk0Te%!_>NL7 z(U~%IQdSJnkQRfOm=h59VF+^L!>?Tm3Y5sgUgdO3Iid1_Vc}ojBMUt2CWc*hPT*J? zBzo;wt$|izsNS0;dh5X6OnfO9^a=BLjr$ev<-~9q8AiwblP5<9)aK0fquHt=hVTH5 zUG|-RKinMAV)`xEBF73N{@HnINv&N1zez6E-fF={YEI#koE%nlX`D0rQ3n-ICB~bR zNMa@R5-QI7fiDLHu<9k`ocBcvZ_^7S3GSxEPaNNFdg*@CAjLpd0R9nysjOlAQBqAf zSFgExNa9^{JGXZvO0Pv%-4%fq76WYs&p<#l_(`);lAQ$UGr*N%hlXX{vRhrBPYRk} zYH`Xa82rdNuMpB#Sa0)#OMK9FxDmop?3^KTe?=ioO1eAWRKFT_M=gN4@f8pzTB44H z>-tf1+g{g~UC{h0#>gQ8LgH+s1QwfO#Y#<)7DDfsU3Ka?5l8F|K4R9k`E6wOxjr;W*CyyP#To;l!Es5_#m3wc~)^UJSPo-6F`GA*&;z!Dlui(CaPoW$RA z*gp?8R3dm+vkLQmg6Z+zVW=eRNE*Q-%hT%8visi4!g*ZOS~uM725wSnOOtZjwD_0Y z=c}RxBtQb|*BXdx*#DXfLQl5iBfe4&(pCItD}hXtMe*t#8?ZaVoUBj?E^3l)>s0-? z>!+5nk&|3W>K$<85WVjYf|z2iJMe|-dsMR@S@{Y^!3m2{<#}g?WI+F6&OGa(%CCuO zOM|q~xzzBn8Oh{#>_6M6I=3{1Ds%UcRykE;%C(FFkC?_+H>$nZZfB=*LTR~O77C`+ zS2@?qZ3xbl$#UD9)W_py``%lVU)EpY$b3BO6kgr&v0NznDvW7!Y|F8T?TL1FXnzgwe{!?-F}j=AgYL zn5{Kfd{mjcj+iOSLkd>16KBD5i**ro$K%oC`*<<(7L#0}#RlOXGMMQ}W4?P-H{Snl z?RM!**e>V2IWi+DSwP8(AOy+>2tv^+nk4{m6g*I4jdamsxwiFR0R|05xPkm--V{#| zE6HWjYh3Q;JWBd7Llx0vlSe4h(tSMz$(0XQNvzptJRytbR>OVjHsn$DJPclNO2%)7 za`xvL;zL!hc02swQSgUJ53#J9VjR_|T@_H!V8e0u#Z!M930j*a5}_w124b9C%W~9v zrvP_O*mei+hiv$sULE(HMZz~9jsz71YOe%F3F{{0)wbQ7PP~g|FBhRNT!Rk3a3ppk z-q5dv{gkg*UYsVlZ@GKb89Miullyy>{-OfKTr)Qy@z@Nm(OHXYGZkj2<(Z-<%GDj= zAxU!f@L!%heK=AF%e$^TDjNzChCjj?nWZf*1Z>`cT=_^`=TRwP<^mukp^Y1=r#6bj z68s7^(9#2s*tvv$j4~j8mtgmel5<@wvOe7Dskx3QJJgyDKlrhkuuAODum5OzTE+Tt z1`I2%SYBiR3+i>`hMMEZb<$*y&n{`OvZ8YV$#>he2=GNEhC-h-RU!LOyxeR?@A#~@ zvHXsHS_tNkeFeCCeT2n|mYVPIZ8%lXNgj;-#(j<7KR|l*6$WjZNf$LX`2Li}IiUdCk z>(xqQ+kGplZV|uT?qU8=6u#=b6jILT;i+Kzq1_v@k9LL#hJq~#9;By zI$RHZ?*9x@`Z(gzFX$&%yhk%a1RJDYF8{b18?z;-gP~b#aVA+}-6A+UwJ~q<-2*XU zCHT-gK)D*EE4AG+z6(X%0`~vH>czk>{&TV0FZ2sE=iqDlm8`;OCZ&KT)~nqU?ENYm zMXa8FDG4>JNRBAKFKux|;kkSH!4ORu98V3PBn|SQ41q5ZcD&7==UeRVxF;hEBu&lk z>CbOwGM=i|P;tK!3?iT`^79T^x}Dl!yHjmTjxoQ1ZOqZ9H~8Uq%~jGwMvpx+HC@wq z9R3eNbl<;-KOgsy488)|U5y?{?n;37lv6W}p#M?VcZN05b?rt#dZ?j;v4f#jjP6#@{;coV2*sFrHVW+ z@TcTm1JHiiU)6G#)M1}uH<#{w%83_Q)~2|d!ts1c`44~$lv;5CWRcaW>Ew6Up3{N3 z4)UpOdxfmAXeJtQ)mgtamq}`OiiAc^+MGA4JyZ;$Nden#ypt-=P+zp=8!|qL5KsGU z%ZA!APqj8v3Pp^@xATQgCaSVY90vV-(<_7nc!E9}?(rplXLsf_Csy1Cc!yIyMci)Y zdUiia3>crxQT(CUhuNcurZQhQ_Z3m|FLeqo-|-0|(}D#ZoTGE)V+>-|+K^lqh=_uC zS-ZxlWd$6Qa?t>_>cpcm7tILi_V=tUtA%{lyV7!cDM5$AL$-6l4zZ;BgWQgaRkOTI z`=vksyPckoP7x3>=2x_|2(_C_;p}>+Y5dQN7Vvp&7oUpnc%rK=O(7tJcgYPe@Mc*; zec9nECQo>XGd908-<34rEwU&QUcKx}`QELpIIKG)9k_mZY>9m4eKN7J~g zXDo)#RZ;?-mn2@|PY(@J#%L4hn6Z@#<@|=!DqX%1o@8tWdxOmXHHRt7kEB?NsfB9;cI{TT!i8!Irh2$djpYnZo$XU3=GCmRLX^Fs(Q9;=w@Ra23V{ljVK|tP zofzSqez~UquEQ&4D`GJD7s({T2I%6~z*am-n5fF%brhjF7G-{@r+g5u&aUbook zKu9mV=^OFn>4V|THIYt;F_4x>>k1Qn!o>NdB!OFE(-chQMqEp}iX#~X3^M$BltxG0 zaLFv-&1)bgNGXu3%23VFherw#uX++9{hlP;MoKG4?RTOjZ9l=%ZD&YwvAZCuP0u{V z>ts^Ti8ZXJzj24fD2#xG3c-4gZ_`Ra1WC7z<6Gd?%X2J#@>IeQZ#`AvdFsQ2JPu&I zrB=DYxN14+5DQg^$SAIM!y~_}rGg8A9>!R1+1nGvx3!CS;bYi13GXp$$Ub)iX45v1 z{XRRwKiui+{R607#};WM zCL}YEKSv_RWwaslNLQnTe^}khmrB(JZk-G12#h(>sE&kBCQq~h_E{r+X1UZ~Ii$J3 zF4I?7l?(iCl1G-W<`n)rIg{J#I8a~ac8WQ?YsQ0%IG?~ea{Ok!6tI8M(GFL79`XCW z)Tj4h`?N_3kr9?O2wy7p*E0gxT{n|h@U*H2RvA)#K6NF|sqBI6MMsS!LiN(zln>$V z2Jp<-HXog3G`#Ascc|Jz8V z{uQnuCls_zDn|e>(w!-)I)kktL_2C4vx9Q7|3 z&J9nvP_|}!_3`8*G4tU*+DV}0Jlg%F;lE8H_?Uq%LXv7dQC&tc~IHcQ^#-g%_pJD@FLz(T_Mz)IH>0-D$7r~WZaaCkWbfnF-b zV9NdebD+PDR>%N9PtHKENb9Zc>si89@r7DjjL54wCA{B~w@k#(cj>;?-HftokAa?z5m=kt{zXa~oHxXFf)Sfg8*=uZ>k^b2>X!|MJ3 zY!q1DYvvx58jQQIQV|~Omv-C6?S=0Rt*2+C>Sje&xgcL!>MmzmL(Sy^qbWdw{35A**Zt zUuD;L>ro28szs!xbwmo|d*oZ_#s{wnub!`4A^g*djp!VlyP**?YhVjCXvRg&&ggU9 z+cX*rI`HU(u$sti@%0(+=c z`PTjgwz%j>GGR8A%Aama&Ip37b&^4q{Q6!4?rr3h#qwme%m!Yuw(>o zg;7p6zkbq#bt&G19BV_4q@FR3o44l_E^{`Ji)F~Jn+b|)gA=<|A~XzPi`G?Q&=f&U z4zo-4UDLxN56@HmBl}P1Hq$tyEZGIz z$f^@W?b#8`;bL9Ldk$)$!yS1Ct%IygLERw(tNRuX2SW>u>h>Jr(!{m1J&6Ia%>85{ zFNU^xs$UbRONP$zKCF&nI1{NZ^uL&?zmtRAiJy4$CIh#LsIBDZBV{^+HmW}W19;3D z%ct-&+$yShDp=v9f!ftZB^G(w!r`l|#lR=Ud(y8&2S#NSs+1Vl&4j7TMyM)j9;<*1 z8kb)i!xHG~Z_et93zOaer&q9ay}lh#rbHpHL~Wc!FrXyTct$kBb2q+4XK>tC;`ufD`EbSU|Mn5IA@`XV^bK}*_i2WtSZHi5-l?4U z^9rRK%Wo9V;t)KXQk_1B)KB{E;r6{p=LJ+f7s~|C&v9ewy~A$zMOjskLm@|Cfb=8r>cLC1?5Z zjTpmNsfSchooPahqwqJf22T(RD%3Qzw;!tx6hSA^QN-$24tljZ1|9JIMWO z1uj^NeV+oG*I8?wqVu&HhK#G49`#jqxd4anGZ^bvNyjw#L*>e@d}B@0OQ!T0AaelL zJc!hE12erS)^stNqh!^3O+xeJoG}vH6fKL5*OVeHD<<Q0hL!NA;9{IXgYSmqcrJ5BTWD>!6{=`|?il`~9%HY9`=M-iZ z?ZnpsmpxY>wT{-nOFhhjp6g==%LXC;DK;8K?%+yde>n}-NP~&sMs!S{TZ?g9+o4Wb zX5{k*m+E>fD5p1VGBl^1>0O68^=;mg$m3J{jV^Th>7@=VOP|$M_SChN02O{>g8} zyOIkX;FVuuG~pm<^CU=%z!S^3V>I&h9ndRXc(`W;P9Ne}p5mWuaiVAhefv>-k^G#yY@y#@ zD}2RADw`s`5q9qrr*28t=;5~M+_*$%B}3PNqAt2LSje%Kblc-T_@ykcHs2kw{rtnp z$VW?CKfC;)*IWjzH@uVQ7)?Om`Mo{~edP9^H7nc?m4uZ()?a?dQ=x00^youdDRkE&fQ*(RZ5Il;vA zq@p~|df`6+BV{|nv?*!c7ykJUgxUTmvfr76iFF7kJ?|6VYeZe-@CDqWlV}#A^{{`; zE$vghna`Y%NoEIPyw)8TY|tz*?f_lWu;^|2=I|7aD*a&nSsu}v5;$WfTw0R$8n)SA zlkV5CNz808kobJR%$}>1SkX&QL}L4IcRsmt=LMa96cRbqDPHvI%j2KT!EHg-)VIFS z4cFiJ&U#68>k$9?k#}l8*n@5l|ClgCb|TMSksdrfw*3R({~r$)Ox$7A{oNS6w}^w; zPVyJ$qn&HlV%Ig-{nts4{j(PAzsWC%{xi};;#8`h!ybyasjaYfZH)11*-~LtB&q)~ zb(uHtYf($?rkV7zj^9ss4D0(wcIy)Ut$sLLK1#(P6znQRa@=Mt*}>=m)#VmBiph5e zhtjtBrS5_RaTv;jju%SU?A=N#L(TV7N^!OJtMh}rgiZbYWo@AJyysVLldmjMHaI~n z>Od8RlRII@iy2uYbfcK#@&!T{5>%^60II4ms?8pDM!OnFd+ql0rd9F%i|yxz3468O zSP7GAvR^b!kt0cd*?lT=ripf|@Jzh6h;z75k#Sj8_)D}I!YI_Mq-GrnaIX`O?Y`K* z`tMfkpk2LRF(K7Pa*0$HXW!WP9Y5Vx#hJIj{{%jLuFyn!od#zR5s3iOY?ooX)Mm?Vbz%-Dp#kOA4UT70PV+9U z^Dl5}jF>pyg!J}o<2@TR9JQ8a5S6G(UhF1KwzUK6jK|CuzLpB0?9bHu(F`S^_JH&V z;4C9zd?>GKWLf;H>Vntl(8X7ru&cZK2k@vf{i`I-7hDzzDS7?++~@K>S5T}bItPZ< zzmNU8i=#e97|WT-aJw!;<@Ws5enI~LQ2!omzbDB$_l75!)9-As%`~l20i(x?Z1`5Q zfl>D0OMX>NG!Dh0fh;E}8bfzu(_PB^2J&7E>+cmSECC+iiiTn!z+J9{rQ?))h#vXj zq~HJDI(~Wy1|Op}0;pX@fmKDeK5>3(2EO(Z9J9=P*q=YfZKw1Gqu- zR`>pPu4IY2m_hXh?+mQGJ-zOS$@1cU!5UVA(LPQ+aiXZt=&<_(&{Vf$nbmq)4Iz$x z@cE6(stCSqYn^4qW&~VPq+{?uYsRV`j?}8Oium3v?{NW4R-2``ozE$;}(9Cr?!HIzm4kxnDa2CRf z>+!h62^a6nmM#RD!$@ecCUmtPK%0EW7ffKo$u`1bm8W(b%^&zW|G%g6gr9pDFXP#~ z(7oa7D~L8CU##2D!+*BM*qY#F8ox^uV2b9Fd~>6uTBlILh)XK-SsfiaMLnLf%*T6@ zk1ckBRLtkdeV0t11U(SgV75KE5vrhPp--1haB=f?xqT`5mIC^7~l%U3=5 z^O+fbc1qK-ZV9H8wKcCwtJ-*c=-5a*gZ(tT5hm-v+wkL3gS1dO6qi`6V>l5Z0L+gI zn^h3BORz9)4bbI)wFIWAkv@)yVOh-H7o#L77JJ_&e_yGK?8YBJJt-5MYFM?Ku*9(K z9pHkrN^znR~0 zdKdS^Kpo0^rm~Wu&jD zh#2Q0MdVFqxI2>AiAUElYlrWqz|>^PYO4Oqw5QbuL!6B9c)RehLRlly3KAPX0Kahr zISIa+!8>WOzSPE4Z_5|Y1XyG^eCw+c0IPBR@42oLzkb+=nz-1yH@;wh1$^fK*(0cB zZy084W4T3Kc$ya{DpT}A%h%oZ#SG~7*rTX-X8gPgJjhUb{7ZQpr5-qTmIO++<73Ap zb`;*%60^~w=Y&aM>g!f-dyxS&+StT5YkiC>cP)SKEc_<08=SeHJu-0}7;e`8h z>Uda`e|heZbkwBSB{I{)(|Cp|%*IiG_L2nl(a4#66Ow1k8!=V)*o;iXG%N(BpHR!Z z5=WtRRuLqT#BgAuZeSeQ)<}XXy_>IkUVpxO}+%vuf11dQ-p3k@S2S8SO6Jm!Vxow)AT`*5qo! zC`ctVrs!(z`nnG+vW{NH$2T)(x&Cr}RIrhxs%1|4iX6*$7oGJgH=W5wIE*J2tY@K*zK%8DIJa}cvg)#kk2vnWQ_Ro(uP3CjxoQ%IEZVkfu`x%63$k)Lub_`l#z2K%ulwt+<@mB=WT5<6t8 z@_PJxI0mpUJWR_wit@9`CcuN)EgiA#em2@NK#w|$4PgbfiPm^5l7Nz4V z?(iYbCT7GW*&Me%mfFWW^UbT%YvbuM-YGPc-AtREibZ!O`XE)tKxK4|K?SxRsO~|2-%yfma)x#<83@W?+i)HH#rbu z;@#p&Mw%Z%*ui`@AGbQ?kku6A%^fMjK<~6L%H!9n$PSweRe+Cd7f}dcIHq_ zbAy3?+BZV?fVPDyFP3-x|B8fxKU4!7&f?fBu8OW9%$QS;P;lj}K5{0loTa-OqdD~b zC4!hG>WZHELSQ%p;ypQVl93855cmW55ma#UQi4Qu+tI4UVQ%4pl$`lHe|i%0GF z%L_02NBY%GyUA|i;pu>%v+WnXM(|iJ*RB3%d=cDK1ZNn_mVM&7LtziTNUX;__ zU;8SE=XO`ikaDq((r8_|b=#{1#PrnLneC|O$O}=9ZnDLQ<3+c(&Pgi=+tmt3MeG^6 zK`;Q(@;B_qK*ys~sRt24|5z^70DXm>P8)H%&m;uM&|j3VEV%G)Kh%EbN+HNu;%-%U zp`$bs6C-)Z3!3|Out(-24Z3&BesTxpdS*0aW4F~>;GnO_5>tC;koh8xK5CLv=h!|L z<^<#je;E=LiMz4;B1$L=Y&GeQiE`PMb zsg@Nd{B+#%#HB5D>QHSKl_UBpy2}H>JM9plenjhicVu+dCrG*4i}(kd_g9daQpGv?DHjL)&Sf2*g)CL z;SCa$nYGyWDS8?Evv6rXdG#>gJ3Jq92#fmh-zYry#aG3rvdBJMSm>%Nz6(yEQC+(+fQvo+@;1v9PMr;lgpm^$OBt?E5|_pX2Q0HHUOEFitw*4PG1^;Q>;=`9WPKNr(`0x7lft_U zV*cjJWMZRo{j3o Date: Mon, 19 Oct 2026 16:58:34 -0700 Subject: [PATCH 11/12] feat(library): Best Retool Alternatives in 2026 for Building AI Agents (#9231) * feat(library): Best Retool Alternatives in 2026 for Building AI Agents * Pi Babysit: address PR #9231 feedback * docs(library): verify and correct Retool alternatives facts * docs(library): use visual builder in the Retool alternatives Sim description --------- Co-authored-by: Sim Pi Agent --- .../index.mdx | 126 ++++++++++++++++++ .../cover.jpg | Bin 0 -> 28041 bytes 2 files changed, 126 insertions(+) create mode 100644 apps/sim/content/library/best-retool-alternatives-ai-agents-2026/index.mdx create mode 100644 apps/sim/public/library/best-retool-alternatives-ai-agents-2026/cover.jpg diff --git a/apps/sim/content/library/best-retool-alternatives-ai-agents-2026/index.mdx b/apps/sim/content/library/best-retool-alternatives-ai-agents-2026/index.mdx new file mode 100644 index 00000000000..8303a7c0b69 --- /dev/null +++ b/apps/sim/content/library/best-retool-alternatives-ai-agents-2026/index.mdx @@ -0,0 +1,126 @@ +--- +slug: best-retool-alternatives-ai-agents-2026 +title: 'Best Retool Alternatives in 2026 for Building AI Agents' +seoTitle: 'Best Retool Alternatives for AI Agents (2026)' +description: 'Compare Retool alternatives for building AI agents instead of internal apps: Sim, n8n, Dify, Gumloop, and Relevance AI on agents, hosting, and pricing.' +date: 2026-10-19 +updated: 2026-10-19 +authors: + - andrew +readingTime: 8 +tags: [AI Agents, Retool Alternatives, Agent Builders, Sim] +ogImage: /library/best-retool-alternatives-ai-agents-2026/cover.jpg +draft: false +faq: + - q: "Can Retool build AI agents at all?" + a: "Yes. Retool Agents automate work with AI, but Retool bills agent use by the hour, separately from its AI credits for app building. Each billing month includes $50 of free agent usage, which Retool says covers up to 20 hours depending on the model. See the Retool and Sim comparison if your main deliverable is an agent workflow rather than an internal app." + - q: "Is Sim really free to self-host?" + a: "Yes. Anyone can run Sim's Apache 2.0 core with Docker Compose or Kubernetes without paying a license fee. You still pay for infrastructure and model usage. Supported self-hosting is an Enterprise plan feature, and production use of Enterprise features, including SSO and audit logs, requires an Enterprise subscription." + - q: "What's the cheapest way to run production agents?" + a: "No option is cheapest at every usage level. Sim self-hosting removes the core platform license fee, but you must cover infrastructure and model costs. Sim Cloud's free credits are a one-time grant, not a recurring production allowance." + - q: "Which alternative is most open source?" + a: "Sim's core uses the Apache 2.0 license, with a separate license for enterprise features. Dify uses a modified Apache 2.0 license with added conditions, while n8n's Sustainable Use License is source-available and n8n does not call itself open source. Retool is proprietary, and its self-hosted deployment requires a Retool-issued license key." +--- + +## TL;DR + +- **Sim** is an open-source AI workspace where teams build, deploy, and manage AI agents across 28 LLM providers. Retool describes itself as a [development platform for building internal software](https://retool.com/llms.txt), while [Sim's Apache 2.0 core](https://github.com/simstudioai/sim/blob/main/LICENSE) lets anyone self-host agent workflows, subject to the [enterprise-feature exception](https://github.com/simstudioai/sim/blob/main/apps/sim/ee/LICENSE). +- **n8n** fits automations where an [AI Agent node](https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent/) sits inside a larger, mostly fixed workflow. +- **Dify** fits retrieval-heavy chatbots and prompt-based LLM apps. +- **Gumloop** fits teams that want a hosted agent builder with company-wide admin controls. +- **Relevance AI** fits buyers evaluating multi-agent "AI workforce" products with built-in agent evaluations. + +## Why Retool falls short for building AI agents + +Retool fits internal apps better than agent workflows. Its core product builds apps that connect to production data, while Retool Agents is a separately metered product for automating work with AI. If your deliverable is an agent rather than an app for employees to use, evaluate the agent product and its costs apart from Retool's app builder. + +[Retool bills Agents by the hour](https://docs.retool.com/support/billing-usage/agents). Each billing month includes $50 of free agent usage, which Retool says covers up to 20 hours depending on the model you choose. Billable time runs from when an agent is triggered until it returns an answer, excluding time spent waiting for subagents, authentication, or human approval. Failed runs still count. [Hourly rates vary by model](https://docs.retool.com/data-sources/reference/ai-models), and with your own model provider key, Retool charges a flat hourly fee. Retool's [pricing page](https://retool.com/pricing) says Agents do not draw from the AI credit pool that covers app building and AI Actions. + +For an agent-first project, compare what each alternative lets the agent do, which models and external tools it can use, and where you can deploy the finished workflow. Self-hosting terms and pricing matter too, especially if agents will run regularly rather than serve as occasional additions to an internal app. The [AI workflow automation buyer's checklist](https://www.sim.ai/library/ai-workflow-automation-platform-buyers-checklist) provides a broader set of evaluation criteria. + +## Comparison table + +As of October 2026, Retool appears last as the baseline. The other tools are ranked for building agent workflows. Integration figures are each vendor's own description, and vendors define integrations, executions, and credits differently. MCP (Model Context Protocol) is a protocol that lets AI apps call external tools, and a VPC (virtual private cloud) is a private network in your own cloud account. + +| Rank | Tool | Agent capabilities | Integrations | Self-hosting | Pricing | +|---|---|---|---|---|---| +| 1 | Sim | Agent, Evaluator, Guardrails, and Human in the Loop blocks | [270+](https://www.sim.ai/integrations) | Apache 2.0 core, free for anyone; supported self-hosting on Enterprise | Free with 1,000 one-time credits; Pro $25/seat/month | +| 2 | n8n | [AI Agent node with tool sub-nodes](https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent/) | [Over 500](https://n8n.io/) | [Free Community edition](https://docs.n8n.io/deploy/host-n8n/community-edition-features) under the Sustainable Use License | [Cloud from €20/month billed annually](https://n8n.io/pricing/) | +| 3 | Dify | Workflows, knowledge retrieval, and agents | Marketplace tools, MCP servers, and APIs | [Free Community edition](https://dify.ai/pricing/dify-enterprise), single workspace, modified Apache 2.0 | [Free Sandbox; Professional $590/workspace/year; Team $1,590/workspace/year](https://dify.ai/pricing) | +| 4 | Gumloop | Agents with triggers and skills | [100+ MCP integrations](https://www.gumloop.com/llms.txt) | No self-hosted plan listed; optional VPC on Enterprise | [Pro from $37/month after a 14-day free trial](https://www.gumloop.com/pricing) | +| 5 | Relevance AI | Agents and multi-agent workforces with evaluations | [2,000+ integrations](https://relevanceai.com/pricing) | No self-hosted plan listed; data residency on Enterprise | [Enterprise, custom](https://relevanceai.com/pricing); [pricing docs](https://relevanceai.com/docs/get-started/pricing) list Pro from $19/month and Team from $234/month billed annually | +| 6 | Retool | Agents, Workflows, and internal apps | [Native connectors, REST APIs, and GraphQL](https://retool.com/integrations) | [Self-hosted or air-gapped on Enterprise](https://retool.com/pricing); [Retool license key required](https://docs.retool.com/self-hosted/self-managed/tutorials/kubernetes/kubernetes-helm) | [Team $10/builder/month billed annually](https://retool.com/pricing); Agents $50 free usage/month, then hourly | + +### Sim + +**Best for:** You want to build and deploy AI agent workflows, with the option to self-host the core software without a license fee. + +**What it is:** Sim is the open-source AI workspace where teams build, deploy, and manage AI agents. You can assemble Workflows in the visual builder, ask Sim in Chat to build and edit them in plain language, and add JavaScript or Python functions when you need code. For agents that need source material, Sim's Knowledge Base combines vector and full-text search and can sync connected sources such as Google Drive and Slack on a schedule. + +**Pros:** Sim's Agent blocks support 28 LLM providers, and the workspace connects to [270+ integrations](https://www.sim.ai/integrations). A self-hosted Sim deployment can also point Agent blocks at local or self-hosted endpoints such as Ollama, vLLM, LM Studio, or LiteLLM. Workspace bring-your-own-key (BYOK) credentials, meaning your own model provider API keys, work on every Sim Cloud plan. + +You can deploy a workflow as an API, a chat interface, or a tool on an MCP server. [MCP deployment](https://docs.sim.ai/workflows/deployment/mcp) makes a workflow available to external clients with API-key-protected or public access. [Sim's self-hosting documentation](https://docs.sim.ai/platform/self-hosting) covers Docker Compose and Kubernetes. The core is available under Apache 2.0 without a license fee, whatever plan you use, and Sim's pricing table lists supported self-hosting as an Enterprise feature. Code in `apps/sim/ee`, including single sign-on (SSO) and audit logs, is covered by the [Sim Enterprise License](https://github.com/simstudioai/sim/blob/main/apps/sim/ee/LICENSE), which requires an active Enterprise subscription for production use. + +Retool can also be self-hosted, but its [pricing page](https://retool.com/pricing) lists self-hosted and air-gapped deployment on the Enterprise plan, and every self-hosted instance needs a Retool license key. Retool's [Docker setup](https://docs.retool.com/self-hosted/tutorials/docker) is for non-production use only, and its [production deployments](https://docs.retool.com/self-hosted/self-managed/) run on Kubernetes with Helm. See the [full Sim and Retool comparison](https://www.sim.ai/comparisons/retool). + +**Cons:** Self-hosting leaves you responsible for operating the deployment. Sim's free cloud plan grants its credits once rather than refreshing them. Production use of enterprise features such as SSO and audit logs requires an Enterprise subscription. + +**Pricing:** [Sim Cloud pricing and limits](https://docs.sim.ai/platform/costs) list Free at $0 with 1,000 one-time credits, Pro at $25 per seat per month with 6,000 credits per month and a 2,000-credit weekly refresh, and Max at $100 per seat per month with 25,000 credits per month and a 4,000-credit weekly refresh. Enterprise pricing is custom. BYOK calls are paid directly to the model provider, while the workflow base charge and unrelated hosted services can still apply. + +For a wider market view, compare the criteria in [Best AI Agent Platforms and Builders in 2026](https://www.sim.ai/library/best-ai-agent-platforms-2026). + +### n8n + +**Best for:** You want AI steps inside predictable automations rather than an agent-first workspace. + +**What it is:** n8n connects apps through visual workflows. Its [AI Agent node](https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent/) connects to a chat model and tools, then decides which tool to call for a task. + +**Pros:** n8n combines app integrations, optional code, and a choice between n8n Cloud and self-hosting. A self-hosted installation without a paid license key can use the [free Community edition](https://docs.n8n.io/deploy/host-n8n/community-edition-features). + +**Cons:** n8n uses the [Sustainable Use License](https://docs.n8n.io/n8n-community-license/community-license/license-faq), which allows internal business uses but restricts some commercial uses. n8n [does not call itself open source](https://docs.n8n.io/choose-n8n/faircode-license/) and describes the license as fair-code. Sim's core uses Apache 2.0 and centers its workspace on building and managing agents, making it the clearer fit when agents are the main deliverable. + +**Pricing:** [n8n Cloud](https://n8n.io/pricing/) Starter costs €20 per month billed annually with 2,500 workflow executions, and Pro costs €50 per month billed annually with 10,000. The self-hosted Business plan costs €667 per month billed annually with 40,000 executions. The Community edition is free to license and leaves infrastructure costs to the operator. + +### Dify + +**Best for:** You want to build a chatbot that draws heavily on your own documents. + +**What it is:** [Dify](https://github.com/langgenius/dify) combines visual workflows, a knowledge pipeline for document ingestion and retrieval, agents, and model management. + +**Pros:** Dify gives retrieval-heavy apps a focused starting point. You can self-host the free Community edition, which is limited to a single workspace, under the [Dify Open Source License](https://github.com/langgenius/dify/blob/main/LICENSE), a modified Apache 2.0 license with additional conditions. + +**Cons:** The license requires a commercial license to operate a multi-tenant environment, and it prevents removing or modifying Dify's logo or copyright information in its frontend. Check those conditions before building a product on a self-hosted Dify instance. + +**Pricing:** [Dify Cloud](https://dify.ai/pricing) offers a free Sandbox with 200 message credits and five apps. Professional costs $590 per workspace per year with 5,000 message credits per month and 50 apps. Team costs $1,590 per workspace per year with 10,000 message credits per month and 200 apps. Enterprise pricing is custom. + +### Gumloop + +**Best for:** You want a hosted agent builder that people across a company can use, with IT controlling access. + +**What it is:** [Gumloop](https://www.gumloop.com/llms.txt) describes itself as a multiplayer AI agent builder. Agents connect to company apps, run on triggers, use reusable skills, and produce artifacts such as dashboards and documents. Its earlier workflow builder is now listed as Workflows (Legacy) on the pricing page. + +**Pros:** Gumloop describes a model-agnostic builder with more than 100 MCP integrations and enterprise controls including SSO, audit logging, usage monitoring, and VPC deployments. Its [pricing page](https://www.gumloop.com/pricing) lists 35+ models, bring-your-own API keys, unlimited agents, and unlimited seats. + +**Cons:** The pricing page lists no self-hosted plan; VPC deployment is an optional Enterprise control. Pro limits concurrency to 5 workflow runs and 25 agent chats. + +**Pricing:** Pro starts at $37 per month after a 14-day free trial and includes 20,000 credits per month. Enterprise pricing is custom. + +### Relevance AI + +**Best for:** You want to evaluate a product built around multi-agent "AI workforces" rather than internal CRUD apps. + +**What it is:** Relevance AI is a product for building and managing AI agents and multi-agent systems. + +**Pros:** Its [enterprise page](https://relevanceai.com/enterprise) lists human-in-the-loop controls, version control, SSO and SAML, audit logs, data residency, and SOC 2 Type II. Its [pricing page](https://relevanceai.com/pricing) lists agent evaluations, more than 2,000 integrations, and SSO, role-based access control (RBAC), and audit logs on Enterprise. + +**Cons:** Neither official pricing source lists a self-hosted option, and the two disagree on which plans are available, so confirm current plans with the vendor before comparing costs. + +**Pricing:** Relevance AI's two official pricing sources disagree. The [pricing page](https://relevanceai.com/pricing) lists only an Enterprise plan with custom pricing. Its [pricing documentation](https://relevanceai.com/docs/get-started/pricing) lists Pro from $19 per month billed annually ($29 monthly) and Team from $234 per month billed annually ($349 monthly), and says the Free plan is retired. + +## How to choose + +Start with what you need to ship. If staff need an app to view and update database records, Retool fits that job even if you add an agent. If people need an agent they can call through an API or chat interface, consider Sim. For scheduled processes with AI at specific steps, consider n8n. For a focused comparison of visual orchestration products, see [AI Agent Workflow Builders for Multi-Step Tasks](https://www.sim.ai/library/ai-agent-workflow-builders-multi-step-tasks). + +Set hosting and model requirements before comparing prices. Anyone can self-host Sim's Apache 2.0 core without a license fee, subject to the [enterprise-feature exception](https://github.com/simstudioai/sim/blob/main/apps/sim/ee/LICENSE). If you need to switch model providers or use your own API key, check those options alongside hosting terms. The [open-source AI agent platform comparison](https://www.sim.ai/library/open-source-ai-agent-platforms) goes deeper on licenses and deployment tradeoffs. + +For building AI agents rather than internal apps, **Sim ranks first in this comparison** because its core is openly licensed, its workspace is designed around agents, and it supports cloud or self-hosted deployment without locking the workflow to one model provider. diff --git a/apps/sim/public/library/best-retool-alternatives-ai-agents-2026/cover.jpg b/apps/sim/public/library/best-retool-alternatives-ai-agents-2026/cover.jpg new file mode 100644 index 0000000000000000000000000000000000000000..579dcd499984e5f2194e9118aa49431a0a8e491c GIT binary patch literal 28041 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 HGsgcPu`CjE literal 0 HcmV?d00001 From 9a72a84bc74a0374a7081e2b2a4ee26ad2ca548d Mon Sep 17 00:00:00 2001 From: Waleed Date: Mon, 19 Oct 2026 17:22:24 -0700 Subject: [PATCH 12/12] fix(comparisons): stop recommending Flowise after its end of life and source its facts from Flowise (#9239) --- apps/sim/app/(landing)/comparisons/utils.ts | 8 +- .../lib/compare/data/competitors/flowise.ts | 136 +++++++++++------- apps/sim/lib/compare/data/sim.ts | 2 +- apps/sim/lib/compare/data/types.ts | 7 + 4 files changed, 94 insertions(+), 59 deletions(-) diff --git a/apps/sim/app/(landing)/comparisons/utils.ts b/apps/sim/app/(landing)/comparisons/utils.ts index 97f31b944b4..36da0bcde75 100644 --- a/apps/sim/app/(landing)/comparisons/utils.ts +++ b/apps/sim/app/(landing)/comparisons/utils.ts @@ -95,9 +95,11 @@ export interface ComparisonVerdict { export function buildBottomLine(competitor: CompetitorProfile): ComparisonVerdict { const strength = competitor.standoutFeatures[0] - const chooseCompetitor = strength - ? `Choose ${competitor.name} if you specifically need ${lowercaseFirst(strength.title)}: ${strength.description}` - : `Choose ${competitor.name} if its specific strengths, documented above, matter more to your team than an AI-native, self-hostable workspace.` + const chooseCompetitor = + competitor.chooseCompetitorAnswer ?? + (strength + ? `Choose ${competitor.name} if you specifically need ${lowercaseFirst(strength.title)}: ${strength.description}` + : `Choose ${competitor.name} if its specific strengths, documented above, matter more to your team than an AI-native, self-hostable workspace.`) return { chooseSim: `Choose Sim if you want an open-source, self-hostable AI workspace that treats AI agents as first-class citizens: native multi-LLM support, real-time multiplayer editing, human-in-the-loop approvals, and, on the Enterprise plan, environment promotion (dev/qa/prod) and governance (SSO, credential-level permissions, audit logs) built in rather than bolted on.`, diff --git a/apps/sim/lib/compare/data/competitors/flowise.ts b/apps/sim/lib/compare/data/competitors/flowise.ts index 99dd5be6dc6..dbc0746b7e0 100644 --- a/apps/sim/lib/compare/data/competitors/flowise.ts +++ b/apps/sim/lib/compare/data/competitors/flowise.ts @@ -4,7 +4,8 @@ import type { CompetitorProfile } from '@/lib/compare/data/types' /** * Researched and cross-verified against live vendor sources on 2026-07-02. The * end-of-life status in `oneLiner`, `leadAnswer`, and `faqs` was verified against - * flowiseai.com/sunset and the archived GitHub repository on 2026-10-19. + * flowiseai.com/sunset and the archived GitHub repository on 2026-10-19, as were + * the Cloud plans and self-hosting facts that cite them. */ export const flowiseProfile: CompetitorProfile = { id: 'flowise', @@ -28,7 +29,7 @@ export const flowiseProfile: CompetitorProfile = { { question: 'Is Flowise still maintained?', answer: - 'No. The Flowise team announced on July 29, 2026 that it was winding the project down: feature development and pull request review stopped that day, the GitHub repository was archived in August 2026 with its npm packages and Docker images marked deprecated, and the project reached end of life on August 31, 2026, when the core team stopped supporting it on Discord and GitHub. The Apache 2.0 source code stays on GitHub for teams to fork. Sim is an actively developed open-source alternative with an Apache 2.0-licensed core that can be self-hosted or used on Sim Cloud.', + 'No. The Flowise team announced on July 29, 2026 that it was winding the project down: feature development and pull request review stopped that day, the GitHub repository was archived in August 2026, and the project reached end of life on August 31, 2026, when the core team stopped supporting it on Discord and GitHub. The Apache 2.0 source code stays on GitHub for teams to fork. Sim is an actively developed open-source alternative with an Apache 2.0-licensed core that can be self-hosted or used on Sim Cloud.', }, { question: 'How does Sim compare to Flowise for building AI agents?', @@ -51,6 +52,8 @@ export const flowiseProfile: CompetitorProfile = { "Flowise gives more control over the ingestion pipeline, while Sim builds a synced, hybrid-search knowledge base into the workspace. Flowise's Document Store upserts into a choice of vector stores such as Pinecone, Weaviate, Milvus, and FAISS, offers the broadest native set of text splitters, and lets you preview and edit chunks. Sim combines vector and full-text search, supports 15 file types with configurable chunking, uses connectors to continuously sync sources such as Google Drive, Confluence, and Slack, and exposes chunk-level detail with a dedicated chunk editor.", }, ], + chooseCompetitorAnswer: + 'Choose Flowise only if you already run it and are prepared to maintain a fork of its archived Apache 2.0 code yourself: the open-source project reached end of life on August 31, 2026, and its core team no longer reviews or accepts changes.', standoutFeatures: [ { title: 'Choice of vector-store backend, with the broadest native text-splitter menu', @@ -77,19 +80,31 @@ export const flowiseProfile: CompetitorProfile = { }, }, { - title: 'Larger existing open-source community, on the same Apache 2.0 license as Sim', + title: 'Large open-source community, on the same Apache 2.0 license as Sim', description: - 'Both Flowise and Sim are Apache License 2.0 and self-hostable, so the license itself is not a differentiator. Where Flowise stands out is community scale: its GitHub repo has roughly 54,000 stars and an active Discord community built up since 2023.', + 'Both Flowise and Sim are Apache License 2.0 and self-hostable, so the license itself is not a differentiator. Where Flowise stands out is the community it built: its GitHub repository has roughly 55,000 stars. The repository has been archived since August 2026, and official core-team presence on GitHub and Discord ended at end of life on August 31, 2026.', shortDescription: - 'Same Apache 2.0 license as Sim, but a larger existing community: ~54k GitHub stars, active Discord.', + 'Same Apache 2.0 license as Sim, with ~55k GitHub stars on a repository archived since August 2026.', source: { url: 'https://github.com/FlowiseAI/Flowise', label: 'GitHub: FlowiseAI/Flowise', - asOf: '2026-07-02', + asOf: '2026-10-19', }, }, ], limitations: [ + { + title: 'End of life for the open-source project on August 31, 2026', + description: + 'The Flowise team froze the code on July 29, 2026, stopped reviewing or accepting pull requests, archived the GitHub repository in August 2026, and ended official core-team presence on GitHub and Discord on August 31, 2026. The Apache 2.0 code stays available to fork, so any further fixes come from a fork you maintain. The sunset notice does not say what happens to Flowise Cloud.', + shortDescription: + 'End of life since August 31, 2026: archived repository, no core-team maintenance.', + source: { + url: 'https://flowiseai.com/sunset', + label: 'Flowise: The Future of Flowise', + asOf: '2026-10-19', + }, + }, { title: 'Low enterprise-readiness score in third-party benchmarking', description: @@ -145,27 +160,32 @@ export const flowiseProfile: CompetitorProfile = { }, selfHostOption: { value: - "Yes: Flowise's Community Edition is Apache 2.0 and can be self-hosted, including via Docker, on your own infrastructure.", - shortValue: 'Yes, self-hostable via Docker', + "Yes: Flowise's Community Edition is Apache 2.0 and can be self-hosted, including via Docker, on your own infrastructure. The repository has been archived since August 2026 and the project reached end of life on August 31, 2026, so a self-hosted deployment runs the final release or a fork you maintain.", + shortValue: 'Yes, but the archived code is no longer maintained', confidence: 'verified', sources: [ { url: 'https://github.com/FlowiseAI/Flowise/blob/main/LICENSE.md', label: 'GitHub: Flowise LICENSE.md', - asOf: '2026-07-02', + asOf: '2026-10-19', + }, + { + url: 'https://flowiseai.com/sunset', + label: 'Flowise: The Future of Flowise', + asOf: '2026-10-19', }, ], }, deploymentOptions: { value: - 'Flowise offers self-hosted open-source deployment (Docker/npm), a managed multi-tenant Cloud plan, and an Enterprise tier supporting on-premise or air-gapped deployment for regulated industries.', - shortValue: 'Self-hosted, cloud, and enterprise on-prem/air-gapped', + 'Self-hosted open-source deployment (Docker or npm) of the archived code, and a managed Cloud service that flowiseai.com still lists with Free, Starter, and Pro plans, plus on-premises and cloud deployment for enterprises. The sunset notice covers the open-source project and does not say what happens to Flowise Cloud.', + shortValue: 'Self-hosted (archived code) or Flowise Cloud', confidence: 'verified', sources: [ { - url: 'https://www.lindy.ai/blog/flowise-pricing', - label: 'Lindy: Flowise Pricing, Features, and Alternatives for 2026', - asOf: '2026-07-02', + url: 'https://flowiseai.com', + label: 'Flowise: Pricing', + asOf: '2026-10-19', }, { url: 'https://docs.flowiseai.com/using-flowise/workspaces', @@ -652,42 +672,40 @@ export const flowiseProfile: CompetitorProfile = { pricing: { pricingModel: { value: - 'Flowise Cloud prices by monthly prediction (execution) volume plus storage tier, with separate paid plans; self-hosting is free aside from your own infrastructure and LLM costs.', - shortValue: 'Prediction-volume based tiers (cloud), free self-hosting', - confidence: 'estimated', + 'Flowise Cloud plans are priced by monthly predictions (executions) and storage: Free, Starter at $35/month, and Pro at $65/month. Self-hosting the archived open-source code is free aside from your own infrastructure and LLM costs.', + shortValue: 'Prediction-volume tiers (Cloud), free self-hosting', + confidence: 'verified', sources: [ { - url: 'https://www.lindy.ai/blog/flowise-pricing', - label: 'Lindy: Flowise Pricing, Features, and Alternatives for 2026', - asOf: '2026-07-02', + url: 'https://flowiseai.com', + label: 'Flowise: Pricing', + asOf: '2026-10-19', }, ], }, entryPaidPlan: { value: - 'The cheapest paid Cloud plan (Starter) is reported at $35/month, including unlimited flows, 10,000 predictions/month, and 1GB storage.', - detail: - "Sourced from third-party aggregator coverage; Flowise's own pricing page sits behind a login wall.", + 'The cheapest paid Cloud plan (Starter) is $35/month, with unlimited flows and assistants, 10,000 predictions per month, and 1GB of storage.', shortValue: '$35/month Starter: unlimited flows, 10k predictions, 1GB storage', - confidence: 'estimated', + confidence: 'verified', sources: [ { - url: 'https://www.lindy.ai/blog/flowise-pricing', - label: 'Lindy: Flowise Pricing, Features, and Alternatives for 2026', - asOf: '2026-07-02', + url: 'https://flowiseai.com', + label: 'Flowise: Pricing', + asOf: '2026-10-19', }, ], }, freeTier: { value: - 'Yes: a free Cloud plan exists with 2 flows/assistants, 100 predictions per month, and 5MB storage, with community support and Flowise embed branding.', + 'Yes: the free Cloud plan includes 2 flows and assistants, 100 predictions per month, and 5MB of storage, with community support.', shortValue: 'Yes: 2 flows, 100 predictions/month, 5MB storage', - confidence: 'estimated', + confidence: 'verified', sources: [ { - url: 'https://www.lindy.ai/blog/flowise-pricing', - label: 'Lindy: Flowise Pricing, Features, and Alternatives for 2026', - asOf: '2026-07-02', + url: 'https://flowiseai.com', + label: 'Flowise: Pricing', + asOf: '2026-10-19', }, ], }, @@ -718,14 +736,14 @@ export const flowiseProfile: CompetitorProfile = { }, dataResidency: { value: - 'Yes, indirectly: self-hosting (including on-prem/air-gapped Enterprise deployment) lets an organization fully control data location. There is no dedicated regional-cloud-hosting option for the managed Cloud product.', + 'Yes, indirectly: self-hosting the open-source code, or the on-premises deployment flowiseai.com describes for enterprises, lets an organization control data location. flowiseai.com documents no regional hosting option for the managed Cloud product.', shortValue: 'Yes via self-hosting/on-prem; no documented regional cloud option', confidence: 'estimated', sources: [ { - url: 'https://www.lindy.ai/blog/flowise-pricing', - label: 'Lindy: Flowise Pricing, Features, and Alternatives for 2026', - asOf: '2026-07-02', + url: 'https://flowiseai.com', + label: 'Flowise: Pricing', + asOf: '2026-10-19', }, ], }, @@ -970,48 +988,51 @@ export const flowiseProfile: CompetitorProfile = { support: { supportChannels: { value: - 'Flowise offers community support (GitHub, Discord) on free/self-hosted tiers, priority support on the Pro Cloud plan, and personalized/dedicated support on Enterprise.', - shortValue: 'Community (free), priority (Pro), dedicated (Enterprise)', - confidence: 'estimated', + 'flowiseai.com lists community support on the Free and Starter Cloud plans and priority support on the Pro plan. Official core-team presence on GitHub and Discord ended when the open-source project reached end of life on August 31, 2026.', + shortValue: 'Community (Free, Starter), priority (Pro); core team left GitHub/Discord', + confidence: 'verified', sources: [ { - url: 'https://www.lindy.ai/blog/flowise-pricing', - label: 'Lindy: Flowise Pricing, Features, and Alternatives for 2026', - asOf: '2026-07-02', + url: 'https://flowiseai.com', + label: 'Flowise: Pricing', + asOf: '2026-10-19', + }, + { + url: 'https://flowiseai.com/sunset', + label: 'Flowise: The Future of Flowise', + asOf: '2026-10-19', }, ], }, sla: { - value: - 'A formal SLA (99.99% uptime) is offered on the Enterprise plan per third-party coverage; no SLA is documented for lower tiers.', - detail: 'No official Flowise SLA page confirms this figure.', - shortValue: 'Yes, ~99.99% SLA claimed on Enterprise plan', - confidence: 'estimated', + value: 'Not documented: flowiseai.com publishes no uptime SLA for any plan.', + shortValue: 'No published SLA', + confidence: 'verified', sources: [ { - url: 'https://www.lindy.ai/blog/flowise-pricing', - label: 'Lindy: Flowise Pricing, Features, and Alternatives for 2026', - asOf: '2026-07-08', + url: 'https://flowiseai.com', + label: 'Flowise: Pricing', + asOf: '2026-10-19', }, ], }, community: { value: - "Flowise's GitHub repository has approximately 54,000 stars (Apache 2.0 licensed core), with an active Discord community whose exact member count is not published.", - shortValue: '~54,000 GitHub stars, active Discord community', + "Flowise's GitHub repository has approximately 55,000 stars (Apache 2.0 licensed core). The repository has been archived since August 2026, and official core-team presence on GitHub and Discord ended on August 31, 2026.", + shortValue: '~55,000 GitHub stars on an archived repository', confidence: 'verified', sources: [ { url: 'https://github.com/FlowiseAI/Flowise', label: 'GitHub: FlowiseAI/Flowise', - asOf: '2026-07-02', + asOf: '2026-10-19', }, ], }, companyMaturity: { value: - 'Flowise was founded in April 2023 (Y Combinator-backed), raised approximately $500K in early funding, and was acquired by Workday in August 2025, bringing enterprise backing while keeping the open-source Community Edition intact.', - shortValue: 'Founded 2023 (YC), acquired by Workday Aug 2025', + 'Flowise was founded in April 2023 (Y Combinator-backed), raised approximately $500K in early funding, and was acquired by Workday in August 2025. The open-source project reached end of life on August 31, 2026.', + shortValue: 'Founded 2023 (YC), acquired by Workday Aug 2025, EOL Aug 2026', confidence: 'verified', sources: [ { @@ -1019,6 +1040,11 @@ export const flowiseProfile: CompetitorProfile = { label: 'PR Newswire: Workday Acquires Flowise', asOf: '2026-07-02', }, + { + url: 'https://flowiseai.com/sunset', + label: 'Flowise: The Future of Flowise', + asOf: '2026-10-19', + }, ], }, academy: { diff --git a/apps/sim/lib/compare/data/sim.ts b/apps/sim/lib/compare/data/sim.ts index 6d0440244b3..a25d488304d 100644 --- a/apps/sim/lib/compare/data/sim.ts +++ b/apps/sim/lib/compare/data/sim.ts @@ -798,7 +798,7 @@ export const simProfile: CompetitorProfile = { }, freeTier: { value: - 'Yes: Free plan with 1,000 one-time credits (worth $5), granted once at signup and never refreshed — no monthly reset and no weekly refresh (weekly refresh is a paid-plan feature)', + 'Yes: Free plan with 1,000 one-time credits (worth $5 on Sim Cloud), granted once at signup and never refreshed — no monthly reset and no weekly refresh (weekly refresh is a paid-plan feature)', shortValue: 'Free plan, 1,000 one-time credits', confidence: 'verified', sources: [ diff --git a/apps/sim/lib/compare/data/types.ts b/apps/sim/lib/compare/data/types.ts index 57827d88881..60ba1f9cbb7 100644 --- a/apps/sim/lib/compare/data/types.ts +++ b/apps/sim/lib/compare/data/types.ts @@ -232,6 +232,13 @@ export interface CompetitorProfile { * decides it. 3-5 sentences. */ betterThanAnswer?: Prose + /** + * Replaces the generated "Choose {name} if…" verdict, which is built from the + * first standout feature. Set it when that feature no longer makes the + * competitor a recommendation, such as a discontinued product. Names the + * competitor and states the condition under which it still fits. + */ + chooseCompetitorAnswer?: string /** * Hand-written FAQs answering this competitor's tracked buyer prompts, shown * ahead of the generated FAQ set. Answer-first, and every answer names both