diff --git a/apps/www/app/api/revalidate/route.ts b/apps/www/app/api/revalidate/route.ts
new file mode 100644
index 00000000..5ae0f76e
--- /dev/null
+++ b/apps/www/app/api/revalidate/route.ts
@@ -0,0 +1,14 @@
+import { revalidatePath } from "next/cache";
+import { type NextRequest, NextResponse } from "next/server";
+
+export async function POST(request: NextRequest) {
+ const token = request.headers.get("authorization")?.replace("Bearer ", "");
+
+ if (token !== process.env.REVALIDATION_TOKEN) {
+ return NextResponse.json({ error: "Unauthorized" }, { status: 401 });
+ }
+
+ revalidatePath("/changelog");
+
+ return NextResponse.json({ revalidated: true });
+}
diff --git a/apps/www/app/changelog/data.ts b/apps/www/app/changelog/data.ts
new file mode 100644
index 00000000..a91639d1
--- /dev/null
+++ b/apps/www/app/changelog/data.ts
@@ -0,0 +1,94 @@
+import { allChangelogs } from "content-collections";
+
+const GITHUB_REPO = "unkeyed/unkey";
+const CHANGELOG_PATH = "docs/product/changelog";
+
+function parseFrontmatter(source: string): {
+ title: string;
+ description?: string;
+ tags: string[];
+} {
+ const match = source.match(/^---\n([\s\S]*?)\n---/);
+ if (!match) {
+ return { title: "", tags: ["product"] };
+ }
+
+ const fm = match[1];
+
+ const get = (key: string) => {
+ const m = fm.match(new RegExp(`^${key}:\\s*(.+)$`, "m"));
+ return m ? m[1].replace(/^["']|["']$/g, "").trim() : undefined;
+ };
+
+ const tags = ["product"];
+
+ return { title: get("title") ?? "", description: get("description"), tags };
+}
+
+async function fetchProductChangelogs() {
+ try {
+ const headers: HeadersInit = { Accept: "application/vnd.github.v3+json" };
+ if (process.env.GITHUB_TOKEN) {
+ headers.Authorization = `Bearer ${process.env.GITHUB_TOKEN}`;
+ }
+
+ const res = await fetch(
+ `https://api.github.com/repos/${GITHUB_REPO}/contents/${CHANGELOG_PATH}`,
+ { headers, next: { revalidate: 86400 } },
+ );
+ if (!res.ok) {
+ return [];
+ }
+
+ const entries = (await res.json()) as Array<{
+ type: string;
+ name: string;
+ download_url: string;
+ }>;
+
+ const mdxFiles = entries.filter((f) => f.type === "file" && f.name.endsWith(".mdx"));
+
+ const results = await Promise.all(
+ mdxFiles.map(async (file) => {
+ try {
+ const raw = await fetch(file.download_url, {
+ next: { revalidate: 86400 },
+ });
+ if (!raw.ok) {
+ console.error(`Failed to fetch changelog file ${file.name}: ${raw.status}`);
+ return null;
+ }
+ const source = (await raw.text()).replace(/^noindex:\s*.+$/m, "");
+ const date = file.name.slice(0, -4); // YYYY-MM-DD from filename
+ const { title, description, tags } = parseFrontmatter(source);
+ return { slug: date, date, title, description, tags, source };
+ } catch (err) {
+ console.error(`Failed to process changelog file ${file.name}:`, err);
+ return null;
+ }
+ }),
+ );
+
+ return results.filter((entry) => entry !== null);
+ } catch (err) {
+ console.error("Failed to fetch product changelogs:", err);
+ return [];
+ }
+}
+
+export async function getAllChangelogs() {
+ const productEntries = await fetchProductChangelogs();
+
+ const collectionEntries = allChangelogs.map((e) => ({
+ ...e,
+ _kind: "collection" as const,
+ }));
+ const githubEntries = productEntries.map((e) => ({
+ ...e,
+ _kind: "github" as const,
+ }));
+
+ return [...collectionEntries, ...githubEntries].sort(
+ (a, b) => new Date(b.date).getTime() - new Date(a.date).getTime(),
+ );
+}
diff --git a/apps/www/app/changelog/page.tsx b/apps/www/app/changelog/page.tsx
index 807ea47c..7e00dff2 100644
--- a/apps/www/app/changelog/page.tsx
+++ b/apps/www/app/changelog/page.tsx
@@ -1,17 +1,17 @@
import { RainbowDarkButton } from "@/components/button";
-import { CTA } from "@/components/cta";
-
import { ChangelogGridItem } from "@/components/changelog/changelog-grid-item";
+import { changelogMdxComponents } from "@/components/changelog/changelog-mdx-components";
import { SideList } from "@/components/changelog/side-list";
+import { CTA } from "@/components/cta";
+import { MDX } from "@/components/mdx-content";
import { ChangelogLight } from "@/components/svg/changelog";
-import { allChangelogs } from "content-collections";
import { formatDate } from "date-fns";
import { ArrowRight } from "lucide-react";
+import { MDXRemote } from "next-mdx-remote/rsc";
+import { getAllChangelogs } from "./data";
export default async function Changelogs() {
- const changelogs = allChangelogs.sort((a, b) => {
- return new Date(b.date).getTime() - new Date(a.date).getTime();
- });
+ const changelogs = await getAllChangelogs();
return (
<>
@@ -48,8 +48,18 @@ export default async function Changelogs() {
- {changelogs?.map((changelog) => (
-
+ {changelogs.map((entry) => (
+
+ {entry._kind === "collection" ? (
+
+ ) : (
+
+ )}
+
))}
diff --git a/apps/www/app/sitemap.ts b/apps/www/app/sitemap.ts
index a4e625e1..6fdbbdc9 100644
--- a/apps/www/app/sitemap.ts
+++ b/apps/www/app/sitemap.ts
@@ -1,5 +1,6 @@
-import { allChangelogs, allGlossaries, allPolicies, allPosts } from "content-collections";
-import type { Changelog, Glossary, Policy, Post } from "content-collections";
+import { getAllChangelogs } from "@/app/changelog/data";
+import { allGlossaries, allPolicies, allPosts } from "content-collections";
+import type { Glossary, Policy, Post } from "content-collections";
import type { MetadataRoute } from "next";
export default async function sitemap(): Promise {
const baseUrl = "https://www.unkey.com";
@@ -13,7 +14,8 @@ export default async function sitemap(): Promise {
url: `${baseUrl}/policies/${policy.slug}`,
}));
- const changelogs: MetadataRoute.Sitemap = allChangelogs.map((changelog: Changelog) => ({
+ const allChangelogEntries = await getAllChangelogs();
+ const changelogs: MetadataRoute.Sitemap = allChangelogEntries.map((changelog) => ({
url: `${baseUrl}/changelog#${changelog.slug}`,
lastModified: changelog.date,
}));
diff --git a/apps/www/app/templates/client.tsx b/apps/www/app/templates/client.tsx
index e4385efd..8998770e 100644
--- a/apps/www/app/templates/client.tsx
+++ b/apps/www/app/templates/client.tsx
@@ -34,12 +34,12 @@ import { zodResolver } from "@hookform/resolvers/zod";
import { ArrowRight, SearchX, VenetianMask } from "lucide-react";
import Link from "next/link";
import { useEffect, useMemo } from "react";
-import { useForm } from "react-hook-form";
+import { type Resolver, useForm } from "react-hook-form";
import { type Framework, type Language, templates } from "./data";
export function TemplatesClient() {
const form = useForm({
- resolver: zodResolver(schema),
+ resolver: zodResolver(schema) as Resolver,
defaultValues: getDefaulTemplatesFormValues(),
reValidateMode: "onChange",
});
diff --git a/apps/www/components/changelog/callouts.tsx b/apps/www/components/changelog/callouts.tsx
new file mode 100644
index 00000000..af4141a9
--- /dev/null
+++ b/apps/www/components/changelog/callouts.tsx
@@ -0,0 +1,193 @@
+import type { ReactNode } from "react";
+
+type CalloutProps = {
+ children: ReactNode;
+ title?: string;
+};
+
+const variants = {
+ info: {
+ border: "border-l-[#3DC5FA]",
+ bg: "bg-[#3DC5FA]/10",
+ titleColor: "text-[#3DC5FA]",
+ icon: (
+
+ ),
+ },
+ success: {
+ border: "border-l-[#3CEEAE]",
+ bg: "bg-[#3CEEAE]/10",
+ titleColor: "text-[#3CEEAE]",
+ icon: (
+
+ ),
+ },
+ warning: {
+ border: "border-l-[#FFD55D]",
+ bg: "bg-[#FFD55D]/10",
+ titleColor: "text-[#FFD55D]",
+ icon: (
+
+ ),
+ },
+ error: {
+ border: "border-l-[#FB1048]",
+ bg: "bg-[#FB1048]/10",
+ titleColor: "text-[#FB1048]",
+ icon: (
+
+ ),
+ },
+} as const;
+
+type VariantKey = keyof typeof variants;
+
+function Callout({ children, title, variant }: CalloutProps & { variant: VariantKey }) {
+ const v = variants[variant];
+ return (
+
+
{v.icon}
+
+ {title &&
{title}
}
+ {children}
+
+
+ );
+}
+
+export const Note = ({ children, title }: CalloutProps) => (
+
+ {children}
+
+);
+
+export const Info = ({ children, title }: CalloutProps) => (
+
+ {children}
+
+);
+
+export const Tip = ({ children, title }: CalloutProps) => (
+
+ {children}
+
+);
+
+export const Check = ({ children, title }: CalloutProps) => (
+
+ {children}
+
+);
+
+export const Warning = ({ children, title }: CalloutProps) => (
+
+ {children}
+
+);
+
+export const Danger = ({ children, title }: CalloutProps) => (
+
+ {children}
+
+);
diff --git a/apps/www/components/changelog/changelog-grid-item.tsx b/apps/www/components/changelog/changelog-grid-item.tsx
index ebc2c7db..8177c306 100644
--- a/apps/www/components/changelog/changelog-grid-item.tsx
+++ b/apps/www/components/changelog/changelog-grid-item.tsx
@@ -1,17 +1,27 @@
-import { MDX } from "@/components/mdx-content";
import { Separator } from "@/components/ui/separator";
import { cn } from "@/lib/utils";
-import type { Changelog } from "content-collections";
import Link from "next/link";
+import type { ReactNode } from "react";
import { Frame } from "../../components/frame";
import { ImageWithBlur } from "../image-with-blur";
import { XShareButton } from "../x-share-button";
+
+type ChangelogMeta = {
+ slug: string;
+ title: string;
+ description?: string | null;
+ date: string;
+ tags?: string[];
+ image?: string | null;
+};
+
type Props = {
- changelog: Changelog;
+ changelog: ChangelogMeta;
+ children: ReactNode;
className?: string;
};
-export async function ChangelogGridItem({ className, changelog }: Props) {
+export function ChangelogGridItem({ className, changelog, children }: Props) {
const baseUrl = process.env.VERCEL_URL
? `https://${process.env.VERCEL_URL}`
: "http://localhost:3000";
@@ -41,7 +51,9 @@ export async function ChangelogGridItem({ className, changelog }: Props) {
{changelog.title}
- {changelog.description}
+ {changelog.description && (
+ {changelog.description}
+ )}
{changelog.image && (
@@ -59,7 +71,7 @@ export async function ChangelogGridItem({ className, changelog }: Props) {
"prose-sm md:prose-md prose-strong:text-white/90 prose-code:text-white/80 prose-code:bg-white/10 prose-code:px-2 prose-code:py-1 prose-code:border-white/20 prose-code:rounded-md prose-pre:p-0 prose-pre:m-0 prose-pre:leading-6",
)}
>
-
+ {children}
= {
+ 1: "grid-cols-1",
+ 2: "grid-cols-2",
+ 3: "grid-cols-3",
+ 4: "grid-cols-4",
+ };
+ return {children}
;
+}
+
+// Rewrite relative links (e.g. /platform/instances/overview) to absolute docs URLs
+function ChangelogAnchor({ href, ...props }: AnchorHTMLAttributes) {
+ const resolvedHref = href?.startsWith("/") ? `https://unkey.com/docs${href}` : href;
+ return (
+
+ );
+}
+
+// Use the marketing site's Frame with a default size, since it requires the size prop
+function ChangelogFrame({
+ children,
+ className,
+}: {
+ children: ReactNode;
+ className?: string;
+}) {
+ return (
+
+ {children}
+
+ );
+}
+
+// Mintlify MDX uses and as children of and
+const Tab = (Tabs as any).Item;
+const Step = (Steps as any).Item;
+
+export const changelogMdxComponents = {
+ // Base HTML element overrides from the marketing site
+ ...MdxComponents,
+
+ // Override the default anchor to rewrite relative paths to absolute docs URLs
+ a: ChangelogAnchor,
+
+ Mermaid,
+ Frame: ChangelogFrame,
+
+ // Callout variants — built on the marketing site's Alert component
+ Note,
+ Info,
+ Tip,
+ Check,
+ Warning,
+ Danger,
+
+ // Mintlify layout & content components
+ Card,
+ CardGroup,
+ Accordion,
+ Tabs,
+ Tab,
+ Steps,
+ Step,
+ Badge,
+ CodeGroup,
+ Columns,
+} as Record;
diff --git a/apps/www/components/changelog/mintlify-wrappers.tsx b/apps/www/components/changelog/mintlify-wrappers.tsx
new file mode 100644
index 00000000..3f5f76cd
--- /dev/null
+++ b/apps/www/components/changelog/mintlify-wrappers.tsx
@@ -0,0 +1,19 @@
+"use client";
+
+// Re-export Mintlify components as client components so they can be safely
+// imported into a server module and passed to MDXRemote as component references.
+export {
+ Accordion,
+ Badge,
+ Card,
+ Check,
+ CodeGroup,
+ Columns,
+ Danger,
+ Info,
+ Note,
+ Steps,
+ Tabs,
+ Tip,
+ Warning,
+} from "@mintlify/components";
diff --git a/apps/www/components/frame.tsx b/apps/www/components/frame.tsx
index 74c1b936..75354c5b 100644
--- a/apps/www/components/frame.tsx
+++ b/apps/www/components/frame.tsx
@@ -1,4 +1,5 @@
import { cn } from "@/lib/utils";
+import type { ReactNode } from "react";
export function Frame({
as: Component = "div",
@@ -9,7 +10,7 @@ export function Frame({
as?: any;
size: "sm" | "md" | "lg";
className?: string;
- children: React.ReactNode;
+ children: ReactNode;
}) {
return (
diff --git a/apps/www/components/mdx-components.tsx b/apps/www/components/mdx-components.tsx
new file mode 100644
index 00000000..94487261
--- /dev/null
+++ b/apps/www/components/mdx-components.tsx
@@ -0,0 +1,81 @@
+import { ImageZoom } from "fumadocs-ui/components/image-zoom";
+import type { ImageProps } from "next/image";
+import Image from "next/image";
+import type { DetailedHTMLProps, ImgHTMLAttributes, JSX } from "react";
+import { BlogCodeBlock, BlogCodeBlockSingle } from "./blog/blog-code-block";
+import { BlogList, BlogListItem, BlogListNumbered, type BlogListProps } from "./blog/blog-list";
+import { BlogQuote, type BlogQuoteProps } from "./blog/blog-quote";
+import { Alert } from "./ui/alert/alert";
+
+export const MdxComponents = {
+ Image: (props: ImageProps) =>
+ props.width || props.fill ? (
+
+ ) : (
+
+ ),
+ ImageZoom: (props: ImageProps) => ,
+ img: (props: DetailedHTMLProps, HTMLImageElement>) => (
+
+ ),
+ Callout: Alert,
+ th: (props: JSX.IntrinsicAttributes) => (
+ |
+ ),
+ tr: (props: JSX.IntrinsicAttributes) => (
+
+ ),
+ td: (props: JSX.IntrinsicAttributes) => (
+ |
+ ),
+ a: (props: JSX.IntrinsicAttributes) => (
+
+ ),
+ blockquote: (props: BlogQuoteProps) => BlogQuote(props),
+ BlogQuote: (props: BlogQuoteProps) => BlogQuote(props),
+ ol: (props: BlogListProps) => BlogListNumbered(props),
+ ul: (props: BlogListProps) => BlogList(props),
+ li: (props: BlogListProps) => BlogListItem(props),
+ h1: (props: any) => (
+
+ ),
+ h2: (props: JSX.IntrinsicAttributes) => (
+
+ ),
+ h3: (props: JSX.IntrinsicAttributes) => (
+
+ ),
+ h4: (props: JSX.IntrinsicAttributes) => (
+
+ ),
+ p: (props: JSX.IntrinsicAttributes) => (
+
+ ),
+ code: (props: JSX.IntrinsicAttributes) => (
+
+ ),
+ pre: (props: JSX.IntrinsicAttributes) => ,
+ BlogCodeBlock,
+};
diff --git a/apps/www/components/mdx-content.tsx b/apps/www/components/mdx-content.tsx
index 90ab5c89..0f35b510 100644
--- a/apps/www/components/mdx-content.tsx
+++ b/apps/www/components/mdx-content.tsx
@@ -1,90 +1,7 @@
import { Mermaid } from "@/components/mermaid";
import { useMDXComponent } from "@content-collections/mdx/react";
-import { ImageZoom } from "fumadocs-ui/components/image-zoom";
-import type { ImageProps } from "next/image";
-import Image from "next/image";
-import type { DetailedHTMLProps, ImgHTMLAttributes, JSX } from "react";
-import { BlogCodeBlock, BlogCodeBlockSingle } from "./blog/blog-code-block";
-import { BlogList, BlogListItem, BlogListNumbered, type BlogListProps } from "./blog/blog-list";
-import { BlogQuote, type BlogQuoteProps } from "./blog/blog-quote";
-import { Alert } from "./ui/alert/alert";
-
-export const MdxComponents = {
- Image: (props: ImageProps) =>
- props.width || props.fill ? (
-
- ) : (
-
- ),
- ImageZoom: (props: ImageProps) => ,
- img: (props: DetailedHTMLProps, HTMLImageElement>) => (
-
- ),
- Callout: Alert,
- th: (props: JSX.IntrinsicAttributes) => (
- |
- ),
- tr: (props: JSX.IntrinsicAttributes) => (
-
- ),
- td: (props: JSX.IntrinsicAttributes) => (
- |
- ),
- a: (props: JSX.IntrinsicAttributes) => (
-
- ),
- blockquote: (props: BlogQuoteProps) => BlogQuote(props),
- BlogQuote: (props: BlogQuoteProps) => BlogQuote(props),
- ol: (props: BlogListProps) => BlogListNumbered(props),
- ul: (props: BlogListProps) => BlogList(props),
- li: (props: BlogListProps) => BlogListItem(props),
- h1: (props: any) => (
-
- ),
- h2: (props: JSX.IntrinsicAttributes) => (
-
- ),
- h3: (props: JSX.IntrinsicAttributes) => (
-
- ),
- h4: (props: JSX.IntrinsicAttributes) => (
-
- ),
- p: (props: JSX.IntrinsicAttributes) => (
-
- ),
- code: (props: JSX.IntrinsicAttributes) => (
-
- ),
- pre: (props: JSX.IntrinsicAttributes) => ,
- BlogCodeBlock,
-};
+import { MdxComponents } from "./mdx-components";
+export { MdxComponents } from "./mdx-components";
interface MDXProps {
code: string;
diff --git a/apps/www/content-collections.ts b/apps/www/content-collections.ts
index bf1f3e41..8d22da7f 100644
--- a/apps/www/content-collections.ts
+++ b/apps/www/content-collections.ts
@@ -2,9 +2,7 @@ import { defineCollection, defineConfig } from "@content-collections/core";
import { compileMDX } from "@content-collections/mdx";
import { remarkGfm, remarkHeading, remarkStructure } from "fumadocs-core/mdx-plugins";
import GithubSlugger from "github-slugger";
-import { categoryEnum } from "./app/glossary/data";
-import { faqSchema } from "./lib/schemas/faq-schema";
-import { takeawaysSchema } from "./lib/schemas/takeaways-schema";
+import { categories } from "./app/glossary/data";
const posts = defineCollection({
name: "posts",
@@ -24,9 +22,9 @@ const posts = defineCollection({
});
const slugger = new GithubSlugger();
const regXHeader = /\n(?#+)\s+(?.+)/g;
- const tableOfContents = Array.from(document.content.matchAll(regXHeader)).map(({ groups }) => {
- const flag = groups?.flag;
- const content = groups?.content;
+ const tableOfContents = Array.from(document.content.matchAll(regXHeader)).map((match) => {
+ const flag = match.groups?.flag;
+ const content = match.groups?.content;
return {
level: flag?.length,
text: content,
@@ -51,7 +49,7 @@ const changelog = defineCollection({
title: z.string(),
description: z.string().optional(),
date: z.string(),
- tags: z.array(z.string()),
+ tags: z.array(z.string()).default(["product"]),
image: z.string().optional(),
}),
transform: async (document, context) => {
@@ -116,9 +114,20 @@ const glossary = defineCollection({
description: z.string(),
h1: z.string(),
term: z.string(),
- categories: z.array(categoryEnum),
- takeaways: takeawaysSchema,
- faq: faqSchema,
+ categories: z.array(z.enum(categories.map((c) => c.slug) as [string, ...string[]])),
+ takeaways: z.object({
+ tldr: z.string(),
+ definitionAndStructure: z.array(z.object({ key: z.string(), value: z.string() })),
+ historicalContext: z.array(z.object({ key: z.string(), value: z.string() })),
+ usageInAPIs: z.object({
+ tags: z.array(z.string()),
+ description: z.string(),
+ }),
+ bestPractices: z.array(z.string()),
+ recommendedReading: z.array(z.object({ title: z.string(), url: z.string() })),
+ didYouKnow: z.string(),
+ }),
+ faq: z.array(z.object({ question: z.string(), answer: z.string() })),
updatedAt: z.string(),
slug: z.string(),
}),
@@ -131,9 +140,9 @@ const glossary = defineCollection({
const regXHeader = /(?:^|\n)(?#+)\s+(?.+)/g;
const tableOfContents = Array.from(document.content.matchAll(regXHeader))
- .map(({ groups }) => {
- const flag = groups?.flag;
- const content = groups?.content;
+ .map((match) => {
+ const flag = match.groups?.flag;
+ const content = match.groups?.content;
// Only include headers that are not the main title (h1)
if (flag && flag.length > 1) {
return {
@@ -144,7 +153,7 @@ const glossary = defineCollection({
}
return null;
})
- .filter(Boolean); // Remove null entries
+ .filter((item): item is NonNullable => item !== null);
return {
...document,
mdx,
diff --git a/apps/www/next.config.js b/apps/www/next.config.js
index 092f2f7b..319bc751 100644
--- a/apps/www/next.config.js
+++ b/apps/www/next.config.js
@@ -12,6 +12,7 @@ const withBundleAnalyzer = require("@next/bundle-analyzer")({
/** @type {import('next').NextConfig} */
const nextConfig = {
+ transpilePackages: ["@mintlify/components"],
pageExtensions: ["tsx", "mdx", "ts", "js"],
reactStrictMode: true,
cacheComponents: true,
diff --git a/apps/www/package.json b/apps/www/package.json
index 95a0b808..c26bff09 100644
--- a/apps/www/package.json
+++ b/apps/www/package.json
@@ -13,6 +13,7 @@
"@c15t/nextjs": "^1.7.0",
"@faker-js/faker": "^8.4.1",
"@hookform/resolvers": "^3.3.4",
+ "@mintlify/components": "^1.0.14",
"@next/bundle-analyzer": "16.0.0",
"@planetscale/database": "^1.11.0",
"@radix-ui/react-accordion": "^1.2.0",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 7c94c62d..7e6572be 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -308,6 +308,9 @@ importers:
'@hookform/resolvers':
specifier: ^3.3.4
version: 3.10.0(react-hook-form@7.55.0(react@19.2.0))
+ '@mintlify/components':
+ specifier: ^1.0.14
+ version: 1.0.14(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
'@next/bundle-analyzer':
specifier: 16.0.0
version: 16.0.0
@@ -688,9 +691,34 @@ packages:
resolution: {integrity: sha512-VtPOkrdPHZsKc/clNqyi9WUA8TINkZ4cGk63UUE3u4pmB2k+ZMQRDuIOagv8UVd6j7k0T3+RRIb7beKTebNbcw==}
engines: {node: '>=6.9.0'}
+ '@babel/runtime@7.29.2':
+ resolution: {integrity: sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g==}
+ engines: {node: '>=6.9.0'}
+
'@bany/curl-to-json@1.2.8':
resolution: {integrity: sha512-hPt9KUM2sGZ5Ojx3O9utjzUgjRZI3CZPAlLf+cRY9EUzVs7tWt1OpA0bhEUTX2PEEkOeyZ6sC0tAQMOHh9ld+Q==}
+ '@base-ui/react@1.1.0':
+ resolution: {integrity: sha512-ikcJRNj1mOiF2HZ5jQHrXoVoHcNHdBU5ejJljcBl+VTLoYXR6FidjTN86GjO6hyshi6TZFuNvv0dEOgaOFv6Lw==}
+ engines: {node: '>=14.0.0'}
+ peerDependencies:
+ '@types/react': ^17 || ^18 || ^19
+ react: ^17 || ^18 || ^19
+ react-dom: ^17 || ^18 || ^19
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+
+ '@base-ui/utils@0.2.4':
+ resolution: {integrity: sha512-smZwpMhjO29v+jrZusBSc5T+IJ3vBb9cjIiBjtKcvWmRj9Z4DWGVR3efr1eHR56/bqY5a4qyY9ElkOY5ljo3ng==}
+ peerDependencies:
+ '@types/react': ^17 || ^18 || ^19
+ react: ^17 || ^18 || ^19
+ react-dom: ^17 || ^18 || ^19
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+
'@biomejs/biome@1.9.4':
resolution: {integrity: sha512-1rkd7G70+o9KkTn5KLmDYXihGoTaIGO9PIIN2ZB7UJxFrWw04CZHPYiMRjYsaDvVV7hP1dYNRLxSANLaBFGpog==}
engines: {node: '>=14.21.3'}
@@ -1419,15 +1447,36 @@ packages:
'@floating-ui/core@1.6.9':
resolution: {integrity: sha512-uMXCuQ3BItDUbAMhIXw7UPXRfAlOAvZzdK9BWpE60MCn+Svt3aLn9jsPTi/WNGlRUu2uI0v5S7JiIUsbsvh3fw==}
+ '@floating-ui/core@1.7.5':
+ resolution: {integrity: sha512-1Ih4WTWyw0+lKyFMcBHGbb5U5FtuHJuujoyyr5zTaWS5EYMeT6Jb2AuDeftsCsEuchO+mM2ij5+q9crhydzLhQ==}
+
'@floating-ui/dom@1.6.13':
resolution: {integrity: sha512-umqzocjDgNRGTuO7Q8CU32dkHkECqI8ZdMZ5Swb6QAM0t5rnlrN3lGo1hdpscRd3WS8T6DKYK4ephgIH9iRh3w==}
+ '@floating-ui/dom@1.7.6':
+ resolution: {integrity: sha512-9gZSAI5XM36880PPMm//9dfiEngYoC6Am2izES1FF406YFsjvyBMmeJ2g4SAju3xWwtuynNRFL2s9hgxpLI5SQ==}
+
'@floating-ui/react-dom@2.1.2':
resolution: {integrity: sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==}
peerDependencies:
react: '>=16.8.0'
react-dom: '>=16.8.0'
+ '@floating-ui/react-dom@2.1.8':
+ resolution: {integrity: sha512-cC52bHwM/n/CxS87FH0yWdngEZrjdtLW/qVruo68qg+prK7ZQ4YGdut2GyDVpoGeAYe/h899rVeOVm6Oi40k2A==}
+ peerDependencies:
+ react: '>=16.8.0'
+ react-dom: '>=16.8.0'
+
+ '@floating-ui/react@0.26.28':
+ resolution: {integrity: sha512-yORQuuAtVpiRjpMhdc0wJj06b9JFjrYF4qp96j++v2NBpbi6SEGF7donUJ3TMieerQ6qVkAv1tgr7L4r5roTqw==}
+ peerDependencies:
+ react: '>=16.8.0'
+ react-dom: '>=16.8.0'
+
+ '@floating-ui/utils@0.2.11':
+ resolution: {integrity: sha512-RiB/yIh78pcIxl6lLMG0CgBXAZ2Y0eVHqMPYugu+9U0AeT6YBeiJpf7lbdJNIugFP5SIjwNRgo4DhR1Qxi26Gg==}
+
'@floating-ui/utils@0.2.9':
resolution: {integrity: sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg==}
@@ -1448,6 +1497,13 @@ packages:
engines: {node: '>=6'}
hasBin: true
+ '@headlessui/react@2.2.0':
+ resolution: {integrity: sha512-RzCEg+LXsuI7mHiSomsu/gBJSjpupm6A1qIZ5sWjd7JhARNlMiSA4kKfJpCKwU9tE+zMRterhhrP74PvfJrpXQ==}
+ engines: {node: '>=10'}
+ peerDependencies:
+ react: ^18 || ^19 || ^19.0.0-rc
+ react-dom: ^18 || ^19 || ^19.0.0-rc
+
'@hono/node-server@1.19.11':
resolution: {integrity: sha512-dr8/3zEaB+p0D2n/IUrlPF1HZm586qgJNXK1a9fhg/PzdtkK7Ksd5l312tJX2yBuALqDYBlG20QEbayqPyxn+g==}
engines: {node: '>=18.14.1'}
@@ -1465,6 +1521,9 @@ packages:
'@iconify/utils@2.3.0':
resolution: {integrity: sha512-GmQ78prtwYW6EtzXRU1rY+KwOKfz32PD7iJh6Iyqw68GiKuoZ2A6pRtzWONz5VQJbp50mEjXh/7NkumtrAgRKA==}
+ '@iconify/utils@3.1.0':
+ resolution: {integrity: sha512-Zlzem1ZXhI1iHeeERabLNzBHdOa4VhQbqAcOQaMKuTuyZCpwKbC2R4Dd0Zo3g9EAc+Y4fiarO8HIHRAth7+skw==}
+
'@img/colour@1.0.0':
resolution: {integrity: sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw==}
engines: {node: '>=18'}
@@ -1652,6 +1711,16 @@ packages:
'@mermaid-js/parser@0.4.0':
resolution: {integrity: sha512-wla8XOWvQAwuqy+gxiZqY+c7FokraOTHRWMsbB4AgRx9Sy7zKslNyejy7E+a77qHfey5GXw/ik3IXv/NHMJgaA==}
+ '@mermaid-js/parser@0.6.3':
+ resolution: {integrity: sha512-lnjOhe7zyHjc+If7yT4zoedx2vo4sHaTmtkl1+or8BRTnCtDmcTpAjpzDSfCZrshM5bCoz0GyidzadJAH1xobA==}
+
+ '@mintlify/components@1.0.14':
+ resolution: {integrity: sha512-UC7TWWafE9yiidrTv9g8Zm37YbkblxIiBCgalkpC/JoBEWKu4m7xZy/Ir95tzM/M5Nm5j/6o9eykAwNBfQ2v/Q==}
+ engines: {node: '>=20.0.0'}
+ peerDependencies:
+ react: ^18.0.0 || ^19.0.0
+ react-dom: ^18.0.0 || ^19.0.0
+
'@modelcontextprotocol/sdk@1.9.0':
resolution: {integrity: sha512-Jq2EUCQpe0iyO5FGpzVYDNFR6oR53AIrwph9yWl7uSc7IWUMsrmpmSaTGra5hQNunXpM+9oit85p924jWuHzUA==}
engines: {node: '>=18'}
@@ -2751,6 +2820,43 @@ packages:
'@radix-ui/rect@1.1.1':
resolution: {integrity: sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==}
+ '@react-aria/focus@3.21.5':
+ resolution: {integrity: sha512-V18fwCyf8zqgJdpLQeDU5ZRNd9TeOfBbhLgmX77Zr5ae9XwaoJ1R3SFJG1wCJX60t34AW+aLZSEEK+saQElf3Q==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+ react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+
+ '@react-aria/interactions@3.27.1':
+ resolution: {integrity: sha512-M3wLpTTmDflI0QGNK0PJNUaBXXfeBXue8ZxLMngfc1piHNiH4G5lUvWd9W14XVbqrSCVY8i8DfGrNYpyyZu0tw==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+ react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+
+ '@react-aria/ssr@3.9.10':
+ resolution: {integrity: sha512-hvTm77Pf+pMBhuBm760Li0BVIO38jv1IBws1xFm1NoL26PU+fe+FMW5+VZWyANR6nYL65joaJKZqOdTQMkO9IQ==}
+ engines: {node: '>= 12'}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+
+ '@react-aria/utils@3.33.1':
+ resolution: {integrity: sha512-kIx1Sj6bbAT0pdqCegHuPanR9zrLn5zMRiM7LN12rgRf55S19ptd9g3ncahArifYTRkfEU9VIn+q0HjfMqS9/w==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+ react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+
+ '@react-stately/flags@3.1.2':
+ resolution: {integrity: sha512-2HjFcZx1MyQXoPqcBGALwWWmgFVUk2TuKVIQxCbRq7fPyWXIl6VHcakCLurdtYC2Iks7zizvz0Idv48MQ38DWg==}
+
+ '@react-stately/utils@3.11.0':
+ resolution: {integrity: sha512-8LZpYowJ9eZmmYLpudbo/eclIRnbhWIJZ994ncmlKlouNzKohtM8qTC6B1w1pwUbiwGdUoyzLuQbeaIor5Dvcw==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+
+ '@react-types/shared@3.33.1':
+ resolution: {integrity: sha512-oJHtjvLG43VjwemQDadlR5g/8VepK56B/xKO2XORPHt9zlW6IZs3tZrYlvH29BMvoqC7RtE7E5UjgbnbFtDGag==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
+
'@reduxjs/toolkit@2.8.2':
resolution: {integrity: sha512-MYlOhQ0sLdw4ud48FoC5w0dH9VfWQjtCjreKwYTT3l+r427qYC5Y8PihNutepr8XrNaBUDQo9khWUwQxZaqt5A==}
peerDependencies:
@@ -2823,24 +2929,36 @@ packages:
'@shikijs/core@2.5.0':
resolution: {integrity: sha512-uu/8RExTKtavlpH7XqnVYBrfBkUc20ngXiX9NSrBhOVZYv/7XQRKUyhtkeflY5QsxC0GbJThCerruZfsUaSldg==}
+ '@shikijs/core@3.21.0':
+ resolution: {integrity: sha512-AXSQu/2n1UIQekY8euBJlvFYZIw0PHY63jUzGbrOma4wPxzznJXTXkri+QcHeBNaFxiiOljKxxJkVSoB3PjbyA==}
+
'@shikijs/engine-javascript@1.29.2':
resolution: {integrity: sha512-iNEZv4IrLYPv64Q6k7EPpOCE/nuvGiKl7zxdq0WFuRPF5PAE9PRo2JGq/d8crLusM59BRemJ4eOqrFrC4wiQ+A==}
'@shikijs/engine-javascript@2.5.0':
resolution: {integrity: sha512-VjnOpnQf8WuCEZtNUdjjwGUbtAVKuZkVQ/5cHy/tojVVRIRtlWMYVjyWhxOmIq05AlSOv72z7hRNRGVBgQOl0w==}
+ '@shikijs/engine-javascript@3.21.0':
+ resolution: {integrity: sha512-ATwv86xlbmfD9n9gKRiwuPpWgPENAWCLwYCGz9ugTJlsO2kOzhOkvoyV/UD+tJ0uT7YRyD530x6ugNSffmvIiQ==}
+
'@shikijs/engine-oniguruma@1.29.2':
resolution: {integrity: sha512-7iiOx3SG8+g1MnlzZVDYiaeHe7Ez2Kf2HrJzdmGwkRisT7r4rak0e655AcM/tF9JG/kg5fMNYlLLKglbN7gBqA==}
'@shikijs/engine-oniguruma@2.5.0':
resolution: {integrity: sha512-pGd1wRATzbo/uatrCIILlAdFVKdxImWJGQ5rFiB5VZi2ve5xj3Ax9jny8QvkaV93btQEwR/rSz5ERFpC5mKNIw==}
+ '@shikijs/engine-oniguruma@3.21.0':
+ resolution: {integrity: sha512-OYknTCct6qiwpQDqDdf3iedRdzj6hFlOPv5hMvI+hkWfCKs5mlJ4TXziBG9nyabLwGulrUjHiCq3xCspSzErYQ==}
+
'@shikijs/langs@1.29.2':
resolution: {integrity: sha512-FIBA7N3LZ+223U7cJDUYd5shmciFQlYkFXlkKVaHsCPgfVLiO+e12FmQE6Tf9vuyEsFe3dIl8qGWKXgEHL9wmQ==}
'@shikijs/langs@2.5.0':
resolution: {integrity: sha512-Qfrrt5OsNH5R+5tJ/3uYBBZv3SuGmnRPejV9IlIbFH3HTGLDlkqgHymAlzklVmKBjAaVmkPkyikAV/sQ1wSL+w==}
+ '@shikijs/langs@3.21.0':
+ resolution: {integrity: sha512-g6mn5m+Y6GBJ4wxmBYqalK9Sp0CFkUqfNzUy2pJglUginz6ZpWbaWjDB4fbQ/8SHzFjYbtU6Ddlp1pc+PPNDVA==}
+
'@shikijs/rehype@1.29.2':
resolution: {integrity: sha512-sxi53HZe5XDz0s2UqF+BVN/kgHPMS9l6dcacM4Ra3ZDzCJa5rDGJ+Ukpk4LxdD1+MITBM6hoLbPfGv9StV8a5Q==}
@@ -2853,15 +2971,24 @@ packages:
'@shikijs/themes@2.5.0':
resolution: {integrity: sha512-wGrk+R8tJnO0VMzmUExHR+QdSaPUl/NKs+a4cQQRWyoc3YFbUzuLEi/KWK1hj+8BfHRKm2jNhhJck1dfstJpiw==}
+ '@shikijs/themes@3.21.0':
+ resolution: {integrity: sha512-BAE4cr9EDiZyYzwIHEk7JTBJ9CzlPuM4PchfcA5ao1dWXb25nv6hYsoDiBq2aZK9E3dlt3WB78uI96UESD+8Mw==}
+
'@shikijs/transformers@2.5.0':
resolution: {integrity: sha512-SI494W5X60CaUwgi8u4q4m4s3YAFSxln3tzNjOSYqq54wlVgz0/NbbXEb3mdLbqMBztcmS7bVTaEd2w0qMmfeg==}
+ '@shikijs/transformers@3.21.0':
+ resolution: {integrity: sha512-CZwvCWWIiRRiFk9/JKzdEooakAP8mQDtBOQ1TKiCaS2E1bYtyBCOkUzS8akO34/7ufICQ29oeSfkb3tT5KtrhA==}
+
'@shikijs/types@1.29.2':
resolution: {integrity: sha512-VJjK0eIijTZf0QSTODEXCqinjBn0joAHQ+aPSBzrv4O2d/QSbsMw+ZeSRx03kV34Hy7NzUvV/7NqfYGRLrASmw==}
'@shikijs/types@2.5.0':
resolution: {integrity: sha512-ygl5yhxki9ZLNuNpPitBWvcy9fsSKKaRuO4BAlMyagszQidxcpLAr0qiW/q43DtSIDxO6hEbtYLiFZNXO/hdGw==}
+ '@shikijs/types@3.21.0':
+ resolution: {integrity: sha512-zGrWOxZ0/+0ovPY7PvBU2gIS9tmhSUUt30jAcNV0Bq0gb2S98gwfjIs1vxlmH5zM7/4YxLamT6ChlqqAJmPPjA==}
+
'@shikijs/vscode-textmate@10.0.2':
resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==}
@@ -2870,6 +2997,14 @@ packages:
engines: {node: '>= 8.0.0'}
hasBin: true
+ '@sindresorhus/slugify@2.2.1':
+ resolution: {integrity: sha512-MkngSCRZ8JdSOCHRaYd+D01XhvU3Hjy6MGl06zhOk614hp9EOAp5gIkBeQg7wtmxpitU6eAL4kdiRMcJa2dlrw==}
+ engines: {node: '>=12'}
+
+ '@sindresorhus/transliterate@1.6.0':
+ resolution: {integrity: sha512-doH1gimEu3A46VX6aVxpHTeHrytJAG6HgdxntYnCFiIFHEM/ZGpG8KiZGBChchjQmG0XFIBL552kBTjVcMZXwQ==}
+ engines: {node: '>=12'}
+
'@sqltools/formatter@1.2.5':
resolution: {integrity: sha512-Uy0+khmZqUrUGm5dmMqVlnvufZRSK0FbYzVgp0UMstm+F5+W2/jnEEQyc9vo1ZR/E5ZI/B1WjjoTqBqwJL6Krw==}
@@ -3007,9 +3142,18 @@ packages:
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
+ '@tanstack/react-virtual@3.13.23':
+ resolution: {integrity: sha512-XnMRnHQ23piOVj2bzJqHrRrLg4r+F86fuBcwteKfbIjJrtGxb4z7tIvPVAe4B+4UVwo9G4Giuz5fmapcrnZ0OQ==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
+ react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
+
'@tanstack/store@0.7.0':
resolution: {integrity: sha512-CNIhdoUsmD2NolYuaIs8VfWM467RK6oIBAW4nPEKZhg1smZ+/CwtCdpURgp7nxSqOaV9oKkzdWD80+bC66F/Jg==}
+ '@tanstack/virtual-core@3.13.23':
+ resolution: {integrity: sha512-zSz2Z2HNyLjCplANTDyl3BcdQJc2k1+yyFoKhNRmCr7V7dY8o8q5m8uFTI1/Pg1kL+Hgrz6u3Xo6eFUB7l66cg==}
+
'@team-plain/typescript-sdk@2.19.0':
resolution: {integrity: sha512-BloaZrzHLS2jfgdM9Q/wvpmkHw8ZoVCNaq3z5YsR8NOgbDuVNdzmAUzGqMDmdCRiZ5xbD8CUILHxap1AAJrY5A==}
@@ -3309,6 +3453,11 @@ packages:
engines: {node: '>=0.4.0'}
hasBin: true
+ acorn@8.16.0:
+ resolution: {integrity: sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==}
+ engines: {node: '>=0.4.0'}
+ hasBin: true
+
ai@4.3.9:
resolution: {integrity: sha512-P2RpV65sWIPdUlA4f1pcJ11pB0N1YmqPVLEmC4j8WuBwKY0L3q9vGhYPh0Iv+spKHKyn0wUbMfas+7Z6nTfS0g==}
engines: {node: '>=18'}
@@ -3552,10 +3701,17 @@ packages:
color-string@1.9.1:
resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==}
+ color@4.2.3:
+ resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==}
+ engines: {node: '>=12.5.0'}
+
combined-stream@1.0.8:
resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
engines: {node: '>= 0.8'}
+ comlink@4.4.2:
+ resolution: {integrity: sha512-OxGdvBmJuNKSCMO4NTl1L47VRp6xn2wG4F/2hYzB6tiCb709otOxtEYCSvK80PtjODfXXZu8ds+Nw5kVCjqd2g==}
+
comma-separated-tokens@1.0.8:
resolution: {integrity: sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==}
@@ -3827,6 +3983,9 @@ packages:
dagre-d3-es@7.0.11:
resolution: {integrity: sha512-tvlJLyQf834SylNKax8Wkzco/1ias1OPw8DcUMDE7oUIoSEW25riQVuiu/0OWEFqT0cxHT3Pa9/D82Jr47IONw==}
+ dagre-d3-es@7.0.13:
+ resolution: {integrity: sha512-efEhnxpSuwpYOKRm/L5KbqoZmNNukHa/Flty4Wp62JRvgH2ojwVgPgdYyr4twpieZnyRDdIH7PY2mopX26+j2Q==}
+
data-uri-to-buffer@3.0.1:
resolution: {integrity: sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og==}
engines: {node: '>= 6'}
@@ -4636,6 +4795,10 @@ packages:
hast-util-whitespace@3.0.0:
resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==}
+ hast@1.0.0:
+ resolution: {integrity: sha512-vFUqlRV5C+xqP76Wwq2SrM0kipnmpxJm7OfvVXpB35Fp+Fn4MV+ozr+JZr5qFvyR1q/U+Foim2x+3P+x9S1PLA==}
+ deprecated: Renamed to rehype
+
hastscript@6.0.0:
resolution: {integrity: sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w==}
@@ -4994,6 +5157,9 @@ packages:
lodash@4.17.21:
resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
+ lodash@4.17.23:
+ resolution: {integrity: sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==}
+
long@5.3.2:
resolution: {integrity: sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==}
@@ -5015,6 +5181,11 @@ packages:
peerDependencies:
react: ^16.5.1 || ^17.0.0 || ^18.0.0
+ lucide-react@0.453.0:
+ resolution: {integrity: sha512-kL+RGZCcJi9BvJtzg2kshO192Ddy9hv3ij+cPrVPWSRzgCWCVazoQJxOjAwgK53NomL07HB7GPHW120FimjNhQ==}
+ peerDependencies:
+ react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0-rc
+
lucide-react@0.456.0:
resolution: {integrity: sha512-DIIGJqTT5X05sbAsQ+OhA8OtJYyD4NsEMCA/HQW/Y6ToPQ7gwbtujIoeAaup4HpHzV35SQOarKAWH8LYglB6eA==}
peerDependencies:
@@ -5035,6 +5206,11 @@ packages:
engines: {node: '>= 18'}
hasBin: true
+ marked@16.4.2:
+ resolution: {integrity: sha512-TI3V8YYWvkVf3KJe1dRkpnjs68JUPyEa5vjKrp1XEEJUAOaQc+Qj+L1qWbPd0SJuAdQkFU0h73sXXqwDYxsiDA==}
+ engines: {node: '>= 20'}
+ hasBin: true
+
math-intrinsics@1.1.0:
resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==}
engines: {node: '>= 0.4'}
@@ -5147,6 +5323,9 @@ packages:
resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
engines: {node: '>= 8'}
+ mermaid@11.12.2:
+ resolution: {integrity: sha512-n34QPDPEKmaeCG4WDMGy0OT6PSyxKCfy2pJgShP+Qow2KLrvWjclwbc3yXfSIf4BanqWEhQEpngWwNp/XhZt6w==}
+
mermaid@11.6.0:
resolution: {integrity: sha512-PE8hGUy1LDlWIHWBP05SFdqUHGmRcCcK4IzpOKPE35eOw+G9zZgcnMpyunJVUEOgb//KBORPjysKndw8bFLuRg==}
@@ -5404,6 +5583,9 @@ packages:
mlly@1.7.4:
resolution: {integrity: sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==}
+ mlly@1.8.2:
+ resolution: {integrity: sha512-d+ObxMQFmbt10sretNDytwt85VrbkhhUA/JBGm1MPaWJ65Cl4wOgLaB1NYvJSZ0Ef03MMEU/0xpPMXUIQ29UfA==}
+
module-details-from-path@1.0.3:
resolution: {integrity: sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A==}
@@ -5589,12 +5771,18 @@ packages:
once@1.4.0:
resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
+ oniguruma-parser@0.12.1:
+ resolution: {integrity: sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w==}
+
oniguruma-to-es@2.3.0:
resolution: {integrity: sha512-bwALDxriqfKGfUufKGGepCzu9x7nJQuoRoAFp4AnwehhC2crqrDIAP/uN2qdlsAvSMpeRC3+Yzhqc7hLmle5+g==}
oniguruma-to-es@3.1.1:
resolution: {integrity: sha512-bUH8SDvPkH3ho3dvwJwfonjlQ4R80vjyvrU8YpxuROddv55vAEJrTuCuCVUhhsHbtlD9tGGbaNApGQckXhS8iQ==}
+ oniguruma-to-es@4.3.5:
+ resolution: {integrity: sha512-Zjygswjpsewa0NLTsiizVuMQZbp0MDyM6lIt66OxsF21npUDlzpHi1Mgb/qhQdkb+dWFTzJmFbEWdvZgRho8eQ==}
+
openai-zod-to-json-schema@1.0.3:
resolution: {integrity: sha512-CFU+KtOmX1dk2nPCZcGYgbrI3YLJJgMSehx1mLbH1A2fsRmZevHzMau6vFIhtkCpHWkGQ3ossA4a0OzVHlGrkw==}
engines: {node: '>=18'}
@@ -5987,6 +6175,11 @@ packages:
react: '>= 15.0.0'
react-dom: '>= 15.0.0'
+ react-use-rect@2.0.6:
+ resolution: {integrity: sha512-as/VEIPY9SrS4E7T/rXQ59aqQ+XKvl/5E6fI5ODmrQv6WJup2CFNA9ja3BMq13ge1dhgBFOHicZC1ZKXLUQtTA==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.2 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc
+
react@18.3.1:
resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==}
engines: {node: '>=0.10.0'}
@@ -6058,6 +6251,9 @@ packages:
regex@6.0.1:
resolution: {integrity: sha512-uorlqlzAKjKQZ5P+kTJr3eeJGSVroLKoHmquUj4zHWuR+hEyNqlXsSKlYYF5F4NI6nl7tWCs0apKJ0lmfsXAPA==}
+ regex@6.1.0:
+ resolution: {integrity: sha512-6VwtthbV4o/7+OaAF9I5L5V3llLEsoPyq9P1JVXkedTP33c7MfCG0/5NOPcSJn0TzXcG9YUrR0gQSWioew3LDg==}
+
rehype-raw@7.0.0:
resolution: {integrity: sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==}
@@ -6235,6 +6431,9 @@ packages:
shiki@2.5.0:
resolution: {integrity: sha512-mI//trrsaiCIPsja5CNfsyNOqgAZUb6VpJA+340toL42UpzQlXpwRV9nch69X6gaUxrr9kaOOa6e3y3uAkGFxQ==}
+ shiki@3.21.0:
+ resolution: {integrity: sha512-N65B/3bqL/TI2crrXr+4UivctrAGEjmsib5rPMMPpFp1xAx/w03v8WZ9RDDFYteXoEgY7qZ4HGgl5KBIu1153w==}
+
side-channel-list@1.0.0:
resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==}
engines: {node: '>= 0.4'}
@@ -6409,6 +6608,9 @@ packages:
peerDependencies:
react: ^16.11.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
+ tabbable@6.4.0:
+ resolution: {integrity: sha512-05PUHKSNE8ou2dwIxTngl4EzcnsCDZGJ/iCLtDflR/SHB/ny14rXc+qU5P4mG9JkusiV7EivzY9Mhm55AzAvCg==}
+
tagged-tag@1.0.0:
resolution: {integrity: sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng==}
engines: {node: '>=20'}
@@ -6646,6 +6848,9 @@ packages:
ufo@1.6.1:
resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==}
+ ufo@1.6.3:
+ resolution: {integrity: sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q==}
+
uncrypto@0.1.3:
resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==}
@@ -6745,6 +6950,11 @@ packages:
peerDependencies:
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
+ use-sync-external-store@1.6.0:
+ resolution: {integrity: sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
+
usehooks-ts@3.1.1:
resolution: {integrity: sha512-I4diPp9Cq6ieSUH2wu+fDAVQO43xwtulo+fKEidHUwZPnYImbtkTjzIJYcDcJqxgmX31GVqNFURodvcgHcW0pA==}
engines: {node: '>=16.15.0'}
@@ -7328,10 +7538,37 @@ snapshots:
dependencies:
regenerator-runtime: 0.14.1
+ '@babel/runtime@7.29.2': {}
+
'@bany/curl-to-json@1.2.8':
dependencies:
minimist: 1.2.8
+ '@base-ui/react@1.1.0(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
+ dependencies:
+ '@babel/runtime': 7.29.2
+ '@base-ui/utils': 0.2.4(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@floating-ui/react-dom': 2.1.8(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@floating-ui/utils': 0.2.11
+ react: 19.2.0
+ react-dom: 19.2.0(react@19.2.0)
+ reselect: 5.1.1
+ tabbable: 6.4.0
+ use-sync-external-store: 1.6.0(react@19.2.0)
+ optionalDependencies:
+ '@types/react': 19.2.2
+
+ '@base-ui/utils@0.2.4(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
+ dependencies:
+ '@babel/runtime': 7.29.2
+ '@floating-ui/utils': 0.2.11
+ react: 19.2.0
+ react-dom: 19.2.0(react@19.2.0)
+ reselect: 5.1.1
+ use-sync-external-store: 1.6.0(react@19.2.0)
+ optionalDependencies:
+ '@types/react': 19.2.2
+
'@biomejs/biome@1.9.4':
optionalDependencies:
'@biomejs/cli-darwin-arm64': 1.9.4
@@ -8019,11 +8256,20 @@ snapshots:
dependencies:
'@floating-ui/utils': 0.2.9
+ '@floating-ui/core@1.7.5':
+ dependencies:
+ '@floating-ui/utils': 0.2.11
+
'@floating-ui/dom@1.6.13':
dependencies:
'@floating-ui/core': 1.6.9
'@floating-ui/utils': 0.2.9
+ '@floating-ui/dom@1.7.6':
+ dependencies:
+ '@floating-ui/core': 1.7.5
+ '@floating-ui/utils': 0.2.11
+
'@floating-ui/react-dom@2.1.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0)':
dependencies:
'@floating-ui/dom': 1.6.13
@@ -8036,6 +8282,22 @@ snapshots:
react: 19.2.0
react-dom: 19.2.0(react@19.2.0)
+ '@floating-ui/react-dom@2.1.8(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
+ dependencies:
+ '@floating-ui/dom': 1.7.6
+ react: 19.2.0
+ react-dom: 19.2.0(react@19.2.0)
+
+ '@floating-ui/react@0.26.28(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
+ dependencies:
+ '@floating-ui/react-dom': 2.1.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@floating-ui/utils': 0.2.9
+ react: 19.2.0
+ react-dom: 19.2.0(react@19.2.0)
+ tabbable: 6.4.0
+
+ '@floating-ui/utils@0.2.11': {}
+
'@floating-ui/utils@0.2.9': {}
'@formatjs/intl-localematcher@0.5.10':
@@ -8058,6 +8320,15 @@ snapshots:
protobufjs: 7.5.4
yargs: 17.7.2
+ '@headlessui/react@2.2.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
+ dependencies:
+ '@floating-ui/react': 0.26.28(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@react-aria/focus': 3.21.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@react-aria/interactions': 3.27.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@tanstack/react-virtual': 3.13.23(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ react: 19.2.0
+ react-dom: 19.2.0(react@19.2.0)
+
'@hono/node-server@1.19.11(hono@4.12.9)':
dependencies:
hono: 4.12.9
@@ -8085,6 +8356,12 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ '@iconify/utils@3.1.0':
+ dependencies:
+ '@antfu/install-pkg': 1.1.0
+ '@iconify/types': 2.0.0
+ mlly: 1.8.2
+
'@img/colour@1.0.0':
optional: true
@@ -8275,6 +8552,31 @@ snapshots:
dependencies:
langium: 3.3.1
+ '@mermaid-js/parser@0.6.3':
+ dependencies:
+ langium: 3.3.1
+
+ '@mintlify/components@1.0.14(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
+ dependencies:
+ '@base-ui/react': 1.1.0(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@headlessui/react': 2.2.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@shikijs/transformers': 3.21.0
+ '@sindresorhus/slugify': 2.2.1
+ clsx: 2.1.1
+ color: 4.2.3
+ comlink: 4.4.2
+ hast: 1.0.0
+ lodash: 4.17.23
+ lucide-react: 0.453.0(react@19.2.0)
+ mermaid: 11.12.2
+ react: 19.2.0
+ react-dom: 19.2.0(react@19.2.0)
+ react-use-rect: 2.0.6(react@19.2.0)
+ shiki: 3.21.0
+ tailwind-merge: 2.6.0
+ transitivePeerDependencies:
+ - '@types/react'
+
'@modelcontextprotocol/sdk@1.9.0':
dependencies:
content-type: 1.0.5
@@ -9881,6 +10183,55 @@ snapshots:
'@radix-ui/rect@1.1.1': {}
+ '@react-aria/focus@3.21.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
+ dependencies:
+ '@react-aria/interactions': 3.27.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@react-aria/utils': 3.33.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@react-types/shared': 3.33.1(react@19.2.0)
+ '@swc/helpers': 0.5.15
+ clsx: 2.1.1
+ react: 19.2.0
+ react-dom: 19.2.0(react@19.2.0)
+
+ '@react-aria/interactions@3.27.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
+ dependencies:
+ '@react-aria/ssr': 3.9.10(react@19.2.0)
+ '@react-aria/utils': 3.33.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@react-stately/flags': 3.1.2
+ '@react-types/shared': 3.33.1(react@19.2.0)
+ '@swc/helpers': 0.5.15
+ react: 19.2.0
+ react-dom: 19.2.0(react@19.2.0)
+
+ '@react-aria/ssr@3.9.10(react@19.2.0)':
+ dependencies:
+ '@swc/helpers': 0.5.15
+ react: 19.2.0
+
+ '@react-aria/utils@3.33.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
+ dependencies:
+ '@react-aria/ssr': 3.9.10(react@19.2.0)
+ '@react-stately/flags': 3.1.2
+ '@react-stately/utils': 3.11.0(react@19.2.0)
+ '@react-types/shared': 3.33.1(react@19.2.0)
+ '@swc/helpers': 0.5.15
+ clsx: 2.1.1
+ react: 19.2.0
+ react-dom: 19.2.0(react@19.2.0)
+
+ '@react-stately/flags@3.1.2':
+ dependencies:
+ '@swc/helpers': 0.5.15
+
+ '@react-stately/utils@3.11.0(react@19.2.0)':
+ dependencies:
+ '@swc/helpers': 0.5.15
+ react: 19.2.0
+
+ '@react-types/shared@3.33.1(react@19.2.0)':
+ dependencies:
+ react: 19.2.0
+
'@reduxjs/toolkit@2.8.2(react-redux@9.2.0(@types/react@19.1.8)(react@19.1.0)(redux@5.0.1))(react@19.1.0)':
dependencies:
'@standard-schema/spec': 1.0.0
@@ -9977,6 +10328,13 @@ snapshots:
'@types/hast': 3.0.4
hast-util-to-html: 9.0.5
+ '@shikijs/core@3.21.0':
+ dependencies:
+ '@shikijs/types': 3.21.0
+ '@shikijs/vscode-textmate': 10.0.2
+ '@types/hast': 3.0.4
+ hast-util-to-html: 9.0.5
+
'@shikijs/engine-javascript@1.29.2':
dependencies:
'@shikijs/types': 1.29.2
@@ -9989,6 +10347,12 @@ snapshots:
'@shikijs/vscode-textmate': 10.0.2
oniguruma-to-es: 3.1.1
+ '@shikijs/engine-javascript@3.21.0':
+ dependencies:
+ '@shikijs/types': 3.21.0
+ '@shikijs/vscode-textmate': 10.0.2
+ oniguruma-to-es: 4.3.5
+
'@shikijs/engine-oniguruma@1.29.2':
dependencies:
'@shikijs/types': 1.29.2
@@ -9999,6 +10363,11 @@ snapshots:
'@shikijs/types': 2.5.0
'@shikijs/vscode-textmate': 10.0.2
+ '@shikijs/engine-oniguruma@3.21.0':
+ dependencies:
+ '@shikijs/types': 3.21.0
+ '@shikijs/vscode-textmate': 10.0.2
+
'@shikijs/langs@1.29.2':
dependencies:
'@shikijs/types': 1.29.2
@@ -10007,6 +10376,10 @@ snapshots:
dependencies:
'@shikijs/types': 2.5.0
+ '@shikijs/langs@3.21.0':
+ dependencies:
+ '@shikijs/types': 3.21.0
+
'@shikijs/rehype@1.29.2':
dependencies:
'@shikijs/types': 1.29.2
@@ -10033,11 +10406,20 @@ snapshots:
dependencies:
'@shikijs/types': 2.5.0
+ '@shikijs/themes@3.21.0':
+ dependencies:
+ '@shikijs/types': 3.21.0
+
'@shikijs/transformers@2.5.0':
dependencies:
'@shikijs/core': 2.5.0
'@shikijs/types': 2.5.0
+ '@shikijs/transformers@3.21.0':
+ dependencies:
+ '@shikijs/core': 3.21.0
+ '@shikijs/types': 3.21.0
+
'@shikijs/types@1.29.2':
dependencies:
'@shikijs/vscode-textmate': 10.0.2
@@ -10048,6 +10430,11 @@ snapshots:
'@shikijs/vscode-textmate': 10.0.2
'@types/hast': 3.0.4
+ '@shikijs/types@3.21.0':
+ dependencies:
+ '@shikijs/vscode-textmate': 10.0.2
+ '@types/hast': 3.0.4
+
'@shikijs/vscode-textmate@10.0.2': {}
'@shuding/opentype.js@1.4.0-beta.0':
@@ -10055,6 +10442,15 @@ snapshots:
fflate: 0.7.4
string.prototype.codepointat: 0.2.1
+ '@sindresorhus/slugify@2.2.1':
+ dependencies:
+ '@sindresorhus/transliterate': 1.6.0
+ escape-string-regexp: 5.0.0
+
+ '@sindresorhus/transliterate@1.6.0':
+ dependencies:
+ escape-string-regexp: 5.0.0
+
'@sqltools/formatter@1.2.5': {}
'@standard-schema/spec@1.0.0': {}
@@ -10178,8 +10574,16 @@ snapshots:
react-dom: 19.2.0(react@19.2.0)
use-sync-external-store: 1.5.0(react@19.2.0)
+ '@tanstack/react-virtual@3.13.23(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
+ dependencies:
+ '@tanstack/virtual-core': 3.13.23
+ react: 19.2.0
+ react-dom: 19.2.0(react@19.2.0)
+
'@tanstack/store@0.7.0': {}
+ '@tanstack/virtual-core@3.13.23': {}
+
'@team-plain/typescript-sdk@2.19.0':
dependencies:
'@graphql-typed-document-node/core': 3.2.0(graphql@16.10.0)
@@ -10494,6 +10898,8 @@ snapshots:
acorn@8.15.0: {}
+ acorn@8.16.0: {}
+
ai@4.3.9(react@19.2.0)(zod@3.24.2):
dependencies:
'@ai-sdk/provider': 1.1.3
@@ -10833,10 +11239,17 @@ snapshots:
color-name: 1.1.4
simple-swizzle: 0.2.2
+ color@4.2.3:
+ dependencies:
+ color-convert: 2.0.1
+ color-string: 1.9.1
+
combined-stream@1.0.8:
dependencies:
delayed-stream: 1.0.0
+ comlink@4.4.2: {}
+
comma-separated-tokens@1.0.8: {}
comma-separated-tokens@2.0.3: {}
@@ -11116,6 +11529,11 @@ snapshots:
d3: 7.9.0
lodash-es: 4.17.21
+ dagre-d3-es@7.0.13:
+ dependencies:
+ d3: 7.9.0
+ lodash-es: 4.17.21
+
data-uri-to-buffer@3.0.1: {}
date-fns@3.6.0: {}
@@ -11928,6 +12346,8 @@ snapshots:
dependencies:
'@types/hast': 3.0.4
+ hast@1.0.0: {}
+
hastscript@6.0.0:
dependencies:
'@types/hast': 2.3.10
@@ -12226,6 +12646,8 @@ snapshots:
lodash@4.17.21: {}
+ lodash@4.17.23: {}
+
long@5.3.2: {}
longest-streak@3.1.0: {}
@@ -12253,6 +12675,10 @@ snapshots:
dependencies:
react: 19.2.0
+ lucide-react@0.453.0(react@19.2.0):
+ dependencies:
+ react: 19.2.0
+
lucide-react@0.456.0(react@19.2.0):
dependencies:
react: 19.2.0
@@ -12267,6 +12693,8 @@ snapshots:
marked@15.0.11: {}
+ marked@16.4.2: {}
+
math-intrinsics@1.1.0: {}
mdast-util-definitions@5.1.2:
@@ -12570,6 +12998,29 @@ snapshots:
merge2@1.4.1: {}
+ mermaid@11.12.2:
+ dependencies:
+ '@braintree/sanitize-url': 7.1.1
+ '@iconify/utils': 3.1.0
+ '@mermaid-js/parser': 0.6.3
+ '@types/d3': 7.4.3
+ cytoscape: 3.32.0
+ cytoscape-cose-bilkent: 4.1.0(cytoscape@3.32.0)
+ cytoscape-fcose: 2.2.0(cytoscape@3.32.0)
+ d3: 7.9.0
+ d3-sankey: 0.12.3
+ dagre-d3-es: 7.0.13
+ dayjs: 1.11.19
+ dompurify: 3.2.5
+ katex: 0.16.22
+ khroma: 2.1.0
+ lodash-es: 4.17.21
+ marked: 16.4.2
+ roughjs: 4.6.6
+ stylis: 4.3.6
+ ts-dedent: 2.2.0
+ uuid: 11.1.0
+
mermaid@11.6.0:
dependencies:
'@braintree/sanitize-url': 7.1.1
@@ -13109,6 +13560,13 @@ snapshots:
pkg-types: 1.3.1
ufo: 1.6.1
+ mlly@1.8.2:
+ dependencies:
+ acorn: 8.16.0
+ pathe: 2.0.3
+ pkg-types: 1.3.1
+ ufo: 1.6.3
+
module-details-from-path@1.0.3: {}
module-details-from-path@1.0.4: {}
@@ -13276,6 +13734,8 @@ snapshots:
dependencies:
wrappy: 1.0.2
+ oniguruma-parser@0.12.1: {}
+
oniguruma-to-es@2.3.0:
dependencies:
emoji-regex-xs: 1.0.0
@@ -13288,6 +13748,12 @@ snapshots:
regex: 6.0.1
regex-recursion: 6.0.2
+ oniguruma-to-es@4.3.5:
+ dependencies:
+ oniguruma-parser: 0.12.1
+ regex: 6.1.0
+ regex-recursion: 6.0.2
+
openai-zod-to-json-schema@1.0.3(zod@3.24.2):
dependencies:
zod: 3.24.2
@@ -13405,7 +13871,7 @@ snapshots:
pkg-types@1.3.1:
dependencies:
confbox: 0.1.8
- mlly: 1.7.4
+ mlly: 1.8.2
pathe: 2.0.3
pkg-types@2.1.0:
@@ -13738,6 +14204,10 @@ snapshots:
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
+ react-use-rect@2.0.6(react@19.2.0):
+ dependencies:
+ react: 19.2.0
+
react@18.3.1:
dependencies:
loose-envify: 1.4.0
@@ -13839,6 +14309,10 @@ snapshots:
dependencies:
regex-utilities: 2.3.0
+ regex@6.1.0:
+ dependencies:
+ regex-utilities: 2.3.0
+
rehype-raw@7.0.0:
dependencies:
'@types/hast': 3.0.4
@@ -14160,6 +14634,17 @@ snapshots:
'@shikijs/vscode-textmate': 10.0.2
'@types/hast': 3.0.4
+ shiki@3.21.0:
+ dependencies:
+ '@shikijs/core': 3.21.0
+ '@shikijs/engine-javascript': 3.21.0
+ '@shikijs/engine-oniguruma': 3.21.0
+ '@shikijs/langs': 3.21.0
+ '@shikijs/themes': 3.21.0
+ '@shikijs/types': 3.21.0
+ '@shikijs/vscode-textmate': 10.0.2
+ '@types/hast': 3.0.4
+
side-channel-list@1.0.0:
dependencies:
es-errors: 1.3.0
@@ -14332,6 +14817,8 @@ snapshots:
react: 19.2.0
use-sync-external-store: 1.5.0(react@19.2.0)
+ tabbable@6.4.0: {}
+
tagged-tag@1.0.0: {}
tailwind-merge@2.6.0: {}
@@ -14534,6 +15021,8 @@ snapshots:
ufo@1.6.1: {}
+ ufo@1.6.3: {}
+
uncrypto@0.1.3: {}
undici-types@6.19.8: {}
@@ -14682,6 +15171,10 @@ snapshots:
dependencies:
react: 19.2.0
+ use-sync-external-store@1.6.0(react@19.2.0):
+ dependencies:
+ react: 19.2.0
+
usehooks-ts@3.1.1(react@19.1.0):
dependencies:
lodash.debounce: 4.0.8