diff --git a/apps/playground/package.json b/apps/playground/package.json
index 9775556..88ba084 100644
--- a/apps/playground/package.json
+++ b/apps/playground/package.json
@@ -12,7 +12,7 @@
},
"dependencies": {
"@ai-sdk/openai": "3.0.0-beta.74",
- "@ai-sdk/react": "^2.0.106",
+ "@ai-sdk/react": "3.0.0-beta.131",
"@tpmjs/env": "workspace:*",
"@tpmjs/hello": "workspace:*",
"@tpmjs/search-registry": "workspace:*",
diff --git a/apps/playground/src/app/api/chat/route.ts b/apps/playground/src/app/api/chat/route.ts
index 608004a..390aa4f 100644
--- a/apps/playground/src/app/api/chat/route.ts
+++ b/apps/playground/src/app/api/chat/route.ts
@@ -82,7 +82,7 @@ export async function POST(request: NextRequest) {
try {
// biome-ignore lint/style/noNonNullAssertion: Tool created with tool() always has execute
- const searchResult = await searchTpmjsToolsTool.execute!(
+ const result = await searchTpmjsToolsTool.execute!(
{
query: userQuery,
limit: 5, // Get top 5 relevant tools
@@ -90,6 +90,13 @@ export async function POST(request: NextRequest) {
{} as any
);
+ // Type assertion: searchTpmjsToolsTool returns direct result, not AsyncIterable
+ const searchResult = result as {
+ query: string;
+ matchCount: number;
+ tools: any[];
+ };
+
console.log(`📦 Found ${searchResult.matchCount} matching tools`);
if (searchResult.tools && searchResult.tools.length > 0) {
diff --git a/apps/playground/src/app/api/tools/route.ts b/apps/playground/src/app/api/tools/route.ts
index fe0b316..23d55b7 100644
--- a/apps/playground/src/app/api/tools/route.ts
+++ b/apps/playground/src/app/api/tools/route.ts
@@ -7,15 +7,22 @@ export const dynamic = 'force-dynamic';
export async function GET() {
try {
// Search for all tools (empty query returns all)
- const result = await searchTpmjsToolsTool.execute({
- query: '',
- limit: 100,
- });
+ // biome-ignore lint/style/noNonNullAssertion: Tool created with tool() always has execute
+ const result = await searchTpmjsToolsTool.execute!(
+ {
+ query: '',
+ limit: 100,
+ },
+ {} as any
+ );
+
+ // Type assertion: searchTpmjsToolsTool returns direct result, not AsyncIterable
+ const searchResult = result as { query: string; matchCount: number; tools: any[] };
return NextResponse.json({
success: true,
- tools: result.tools,
- total: result.total,
+ tools: searchResult.tools,
+ total: searchResult.matchCount,
});
} catch (error) {
console.error('Failed to fetch tools:', error);
diff --git a/apps/playground/src/components/chat/ChatMessages.tsx b/apps/playground/src/components/chat/ChatMessages.tsx
index 33dfbf0..21ffa23 100644
--- a/apps/playground/src/components/chat/ChatMessages.tsx
+++ b/apps/playground/src/components/chat/ChatMessages.tsx
@@ -1,22 +1,11 @@
'use client';
+import type { UIMessage } from 'ai';
import { useEffect, useRef } from 'react';
import { MessageBubble } from './MessageBubble';
-interface Message {
- id: string;
- role: 'user' | 'assistant' | 'system';
- content: string;
- createdAt?: Date;
- toolInvocations?: Array<{
- toolName: string;
- args: unknown;
- result?: unknown;
- }>;
-}
-
interface ChatMessagesProps {
- messages: Message[];
+ messages: UIMessage[];
isStreaming?: boolean;
}
diff --git a/apps/playground/src/components/chat/MessageBubble.tsx b/apps/playground/src/components/chat/MessageBubble.tsx
index 5f1be82..8e85993 100644
--- a/apps/playground/src/components/chat/MessageBubble.tsx
+++ b/apps/playground/src/components/chat/MessageBubble.tsx
@@ -2,28 +2,11 @@
import { Badge } from '@tpmjs/ui/Badge/Badge';
import { Card, CardContent } from '@tpmjs/ui/Card/Card';
+import type { UIMessage } from 'ai';
import { Streamdown } from 'streamdown';
-interface MessagePart {
- type: string; // Can be 'text', 'tool-{toolName}', 'step-start', etc.
- text?: string;
- toolCallId?: string;
- input?: unknown;
- output?: unknown;
- state?: string;
- providerMetadata?: unknown;
-}
-
-interface Message {
- id: string;
- role: 'user' | 'assistant';
- content: string;
- parts?: MessagePart[];
- createdAt?: Date;
-}
-
interface MessageBubbleProps {
- message: Message;
+ message: UIMessage;
isStreaming?: boolean;
}
@@ -33,15 +16,6 @@ export function MessageBubble({
}: MessageBubbleProps): React.ReactElement {
const isUser = message.role === 'user';
- // Debug: Log message structure
- console.log('Message:', {
- id: message.id,
- role: message.role,
- content: message.content,
- parts: message.parts,
- fullMessage: message,
- });
-
return (
@@ -51,7 +25,7 @@ export function MessageBubble({
{isUser ? 'You' : 'AI'}
- {new Date(message.createdAt || Date.now()).toLocaleTimeString()}
+ {new Date().toLocaleTimeString()}
@@ -78,39 +52,43 @@ export function MessageBubble({
// Render tool calls (type starts with 'tool-')
if (part.type.startsWith('tool-')) {
const toolName = part.type.replace('tool-', '');
+ // Type assertion for tool parts
+ const toolPart = part as any;
return (
🔧
{toolName}
- {part.state && (
+ {toolPart.state && (
- {part.state}
+ {toolPart.state}
)}
{/* Tool Input */}
-
-
- Input:
+ {toolPart.input && (
+
+
+ Input:
+
+
+ {JSON.stringify(toolPart.input, null, 2)}
+
-
- {JSON.stringify(part.input, null, 2)}
-
-
+ )}
{/* Tool Output */}
- {part.output && (
+ {toolPart.output && (
Output:
- {JSON.stringify(part.output, null, 2)}
+ {JSON.stringify(toolPart.output, null, 2)}
)}
@@ -122,11 +100,9 @@ export function MessageBubble({
})}
) : (
- // Fallback to content if no parts
+ // Fallback if no parts
-
- {message.content || '...'}
-
+ ...
)}
diff --git a/apps/playground/src/components/sidebar/SettingsSidebar.tsx b/apps/playground/src/components/sidebar/SettingsSidebar.tsx
index c4888e3..abab7bc 100644
--- a/apps/playground/src/components/sidebar/SettingsSidebar.tsx
+++ b/apps/playground/src/components/sidebar/SettingsSidebar.tsx
@@ -48,7 +48,9 @@ export function SettingsSidebar(): React.ReactElement {
const exists = envVars.some((env) => env.key === newKey);
if (exists) {
// Update existing
- setEnvVars(envVars.map((env) => (env.key === newKey ? { key: newKey, value: newValue } : env)));
+ setEnvVars(
+ envVars.map((env) => (env.key === newKey ? { key: newKey, value: newValue } : env))
+ );
} else {
// Add new
setEnvVars([...envVars, { key: newKey, value: newValue }]);
@@ -71,12 +73,16 @@ export function SettingsSidebar(): React.ReactElement {
- Environment Variables {envVars.length}
+ Environment Variables{' '}
+
+ {envVars.length}
+
- Add API keys and other environment variables. They will be forwarded to tool executions.
+ Add API keys and other environment variables. They will be forwarded to tool
+ executions.
{/* Add new env var form */}
@@ -95,7 +101,7 @@ export function SettingsSidebar(): React.ReactElement {
onChange={(e) => setNewValue(e.target.value)}
className="font-mono text-xs"
/>
-
+
Add Variable
@@ -106,14 +112,22 @@ export function SettingsSidebar(): React.ReactElement {
No environment variables set
) : (
envVars.map((env) => (
-
+
{env.key}
{env.value ? '•'.repeat(Math.min(env.value.length, 20)) : '(empty)'}
-
handleRemoveEnvVar(env.key)} size="sm" variant="ghost" className="ml-2">
+ handleRemoveEnvVar(env.key)}
+ size="sm"
+ variant="ghost"
+ className="ml-2"
+ >
×
@@ -126,8 +140,8 @@ export function SettingsSidebar(): React.ReactElement {
{/* Info Section */}
- Note: Environment variables are stored locally in your browser and sent with each tool
- execution request.
+ Note: Environment variables are stored locally in your browser and sent
+ with each tool execution request.
diff --git a/apps/playground/src/hooks/useChat.ts b/apps/playground/src/hooks/useChat.ts
index 8f39c86..f85fcc7 100644
--- a/apps/playground/src/hooks/useChat.ts
+++ b/apps/playground/src/hooks/useChat.ts
@@ -11,7 +11,7 @@ import { useEnvVars } from '~/components/sidebar/SettingsSidebar';
* Handles SSE streaming with tool calls and UI message protocol
* Includes conversation ID tracking for dynamic tool loading
*/
-export function useChat() {
+export function useChat(): ReturnType & { conversationId: string } {
// Generate stable conversation ID for session
const [conversationId] = useState(() => nanoid());
@@ -19,35 +19,22 @@ export function useChat() {
const envVars = useEnvVars();
// Convert env vars to object format
- const envObject = envVars.reduce((acc, { key, value }) => {
- acc[key] = value;
- return acc;
- }, {} as Record);
+ const envObject = envVars.reduce(
+ (acc, { key, value }) => {
+ acc[key] = value;
+ return acc;
+ },
+ {} as Record
+ );
const chat = useAISDKChat({
transport: new DefaultChatTransport({
api: '/api/chat',
+ body: {
+ conversationId, // Pass conversation ID to API
+ env: envObject, // Pass environment variables to API
+ },
}),
- body: {
- conversationId, // Pass conversation ID to API
- env: envObject, // Pass environment variables to API
- },
- onResponse: (response: Response) => {
- // Handle "tools loaded" response
- if (response.headers.get('content-type')?.includes('application/json')) {
- response
- .json()
- .then((data: any) => {
- if (data.type === 'tools_loaded') {
- console.log('🔧 Tools loaded:', data.loaded);
- // Optionally show toast/notification
- }
- })
- .catch(() => {
- // Ignore JSON parsing errors for non-JSON responses
- });
- }
- },
});
return {
diff --git a/apps/playground/src/lib/tool-loader.ts b/apps/playground/src/lib/tool-loader.ts
index 0e04d1d..0e1b825 100644
--- a/apps/playground/src/lib/tool-loader.ts
+++ b/apps/playground/src/lib/tool-loader.ts
@@ -43,25 +43,6 @@ export async function loadTpmjsTool(packageName: string, exportName: string): Pr
}
}
-/**
- * Type guard to check if an object is a valid AI SDK tool
- */
-// biome-ignore lint/suspicious/noExplicitAny: Tool types from AI SDK are complex and using any is appropriate here
-function isCoreTool(obj: unknown): obj is Record {
- if (typeof obj !== 'object' || obj === null) {
- return false;
- }
-
- const tool = obj as Record;
-
- // Check for required AI SDK tool properties
- return (
- typeof tool.description === 'string' &&
- typeof tool.parameters === 'object' &&
- typeof tool.execute === 'function'
- );
-}
-
/**
* Sanitize tool name to match OpenAI's requirements
* Pattern: ^[a-zA-Z0-9_-]+$ (only letters, numbers, underscores, hyphens)
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 956925d..9b254c5 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -48,8 +48,8 @@ importers:
specifier: 3.0.0-beta.74
version: 3.0.0-beta.74(effect@3.18.4)(zod@4.1.13)
'@ai-sdk/react':
- specifier: ^2.0.106
- version: 2.0.106(react@19.2.0)(zod@4.1.13)
+ specifier: 3.0.0-beta.131
+ version: 3.0.0-beta.131(effect@3.18.4)(react@19.2.0)(zod@4.1.13)
'@tpmjs/env':
specifier: workspace:*
version: link:../../packages/env
@@ -139,6 +139,15 @@ importers:
specifier: ^5.9.3
version: 5.9.3
+ apps/railway-executor:
+ dependencies:
+ cors:
+ specifier: ^2.8.5
+ version: 2.8.5
+ express:
+ specifier: ^4.18.2
+ version: 4.22.1
+
apps/web:
dependencies:
'@ai-sdk/openai':
@@ -648,6 +657,12 @@ packages:
peerDependencies:
zod: ^3.25.76 || ^4.1.8
+ '@ai-sdk/gateway@2.0.0-beta.70':
+ resolution: {integrity: sha512-m3Gm5ldzsyjTqqf09khMeA50mgwXAfeKTNblY/RTjgt2D5rgUnN+cvQNEsfiQcH9g/BwI0BAhow7TfuynLv85A==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ zod: ^3.25.76 || ^4.1.8
+
'@ai-sdk/gateway@2.0.18':
resolution: {integrity: sha512-sDQcW+6ck2m0pTIHW6BPHD7S125WD3qNkx/B8sEzJp/hurocmJ5Cni0ybExg6sQMGo+fr/GWOwpHF1cmCdg5rQ==}
engines: {node: '>=18'}
@@ -682,6 +697,22 @@ packages:
effect:
optional: true
+ '@ai-sdk/provider-utils@4.0.0-beta.41':
+ resolution: {integrity: sha512-6wNC7WkOdEYO2q/oWLsFOz3TFzeAyBHMUW6NOTe3Hq6JAHROgNHcuLTn8AjIJKUHR8Jv4Pi7ZgzmO9U1v5UAzg==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ '@valibot/to-json-schema': ^1.3.0
+ arktype: ^2.1.22
+ effect: ^3.18.4
+ zod: ^3.25.76 || ^4.1.8
+ peerDependenciesMeta:
+ '@valibot/to-json-schema':
+ optional: true
+ arktype:
+ optional: true
+ effect:
+ optional: true
+
'@ai-sdk/provider@2.0.0':
resolution: {integrity: sha512-6o7Y2SeO9vFKB8lArHXehNuusnpddKPk7xqL7T2/b+OvXMRIXUO1rR4wcv1hAFUAT9avGZshty3Wlua/XA7TvA==}
engines: {node: '>=18'}
@@ -690,15 +721,15 @@ packages:
resolution: {integrity: sha512-Ss0tgCZwzccS6MREhjAI28lkAV5PfJnoBFbv8mas74Cs5OseFKqxg3dEd1lRL8mf4Qapu1xpBLkV4/ldSShSdA==}
engines: {node: '>=18'}
- '@ai-sdk/react@2.0.106':
- resolution: {integrity: sha512-TU8ONNhm64GI7O60UDCcOz9CdyCp3emQwSYrSnq+QWBNgS8vDlRQ3ZwXyPNAJQdXyBTafVS2iyS0kvV+KXaPAQ==}
+ '@ai-sdk/provider@3.0.0-beta.23':
+ resolution: {integrity: sha512-C8X5urwwxCM8GzdMiEnI5ZtRSv+rs17smwubTy0S+dFm9aSVui92ED5U42TJvDivEpDsHbMhuNI8sxRbtFQduQ==}
+ engines: {node: '>=18'}
+
+ '@ai-sdk/react@3.0.0-beta.131':
+ resolution: {integrity: sha512-X0ZzL+TNxIZISPDbATNve4YinPc4g4HKsHQdmI8qQW1l80MbTc8UXqlucmFbFz9LHRWSnAFaOu7cPtW0H2bt4Q==}
engines: {node: '>=18'}
peerDependencies:
- react: ^18 || ^19 || ^19.0.0-rc
- zod: ^3.25.76 || ^4.1.8
- peerDependenciesMeta:
- zod:
- optional: true
+ react: ^18 || ^19
'@alloc/quick-lru@5.2.0':
resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==}
@@ -2638,6 +2669,10 @@ packages:
'@vitest/utils@2.1.9':
resolution: {integrity: sha512-v0psaMSkNJ3A2NMrUEHFRzJtDPFn+/VWZ5WxImB21T9fjucJRmS7xCS3ppEnARb9y11OAzaD+P2Ps+b+BGX5iQ==}
+ accepts@1.3.8:
+ resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==}
+ engines: {node: '>= 0.6'}
+
acorn-jsx-walk@2.0.0:
resolution: {integrity: sha512-uuo6iJj4D4ygkdzd6jPtcxs8vZgDX9YFIkqczGImoypX2fQ4dVImmu3UzA4ynixCIMTrEOWW+95M2HuBaCEOVA==}
@@ -2671,6 +2706,12 @@ packages:
peerDependencies:
zod: ^3.25.76 || ^4.1.8
+ ai@6.0.0-beta.130:
+ resolution: {integrity: sha512-bUCElVpUfTTuhg0ahZWGR8rnVsiRHMZiUln9S0FRImasC9+ksD9tqxohevs8ifX8epohzcJqj8Vlvrp5aXw+tg==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ zod: ^3.25.76 || ^4.1.8
+
ajv@6.12.6:
resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
@@ -2728,6 +2769,9 @@ packages:
resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==}
engines: {node: '>= 0.4'}
+ array-flatten@1.1.1:
+ resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==}
+
array-includes@3.1.9:
resolution: {integrity: sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==}
engines: {node: '>= 0.4'}
@@ -2825,6 +2869,10 @@ packages:
bm25@0.1.1:
resolution: {integrity: sha512-K208JmBoEkt995CFSncQ+8VdxpnzTguxDAcb93pTuRBVYWvehievYYAHJiFkMzuTzLZXAGZAOxGlaAFdNbF6XA==}
+ body-parser@1.20.4:
+ resolution: {integrity: sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==}
+ engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
+
brace-expansion@1.1.12:
resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==}
@@ -2849,6 +2897,10 @@ packages:
peerDependencies:
esbuild: '>=0.18'
+ bytes@3.1.2:
+ resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==}
+ engines: {node: '>= 0.8'}
+
c12@3.1.0:
resolution: {integrity: sha512-uWoS8OU1MEIsOv8p/5a82c3H31LsWVR5qiyXVfBNOzfffjUWtPnhAb4BYI2uG2HfGmZmFjCtui5XNWaps+iFuw==}
peerDependencies:
@@ -2999,13 +3051,32 @@ packages:
resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==}
engines: {node: ^14.18.0 || >=16.10.0}
+ content-disposition@0.5.4:
+ resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==}
+ engines: {node: '>= 0.6'}
+
+ content-type@1.0.5:
+ resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==}
+ engines: {node: '>= 0.6'}
+
convert-source-map@2.0.0:
resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
+ cookie-signature@1.0.7:
+ resolution: {integrity: sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==}
+
+ cookie@0.7.2:
+ resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==}
+ engines: {node: '>= 0.6'}
+
cookie@1.0.2:
resolution: {integrity: sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==}
engines: {node: '>=18'}
+ cors@2.8.5:
+ resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==}
+ engines: {node: '>= 0.10'}
+
cose-base@1.0.3:
resolution: {integrity: sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==}
@@ -3201,6 +3272,14 @@ packages:
dayjs@1.11.19:
resolution: {integrity: sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==}
+ debug@2.6.9:
+ resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+
debug@3.2.7:
resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==}
peerDependencies:
@@ -3254,6 +3333,10 @@ packages:
resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
engines: {node: '>=0.4.0'}
+ depd@2.0.0:
+ resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==}
+ engines: {node: '>= 0.8'}
+
dependency-cruiser@17.3.1:
resolution: {integrity: sha512-yWwszB4GKIBKK/xiHSQ6TVIV6k8byd+gMGT2RMQ+03wb1jGH48cSsLH29iUUZgGtKyLSH51NurbnjXV0+niUjA==}
engines: {node: ^20.12||^22||>=24}
@@ -3266,6 +3349,10 @@ packages:
destr@2.0.5:
resolution: {integrity: sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==}
+ destroy@1.2.0:
+ resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==}
+ engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
+
detect-indent@6.1.0:
resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==}
engines: {node: '>=8'}
@@ -3315,6 +3402,9 @@ packages:
eastasianwidth@0.2.0:
resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
+ ee-first@1.1.1:
+ resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
+
effect@3.18.4:
resolution: {integrity: sha512-b1LXQJLe9D11wfnOKAk3PKxuqYshQ0Heez+y5pnkd3jLj1yx9QhM72zZ9uUrOQyNvrs2GZZd/3maL0ZV18YuDA==}
@@ -3331,6 +3421,14 @@ packages:
resolution: {integrity: sha512-i6UzDscO/XfAcNYD75CfICkmfLedpyPDdozrLMmQc5ORaQcdMoc21OnlEylMIqI7U8eniKrPMxxtj8k0vhmJhA==}
engines: {node: '>=14'}
+ encodeurl@1.0.2:
+ resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==}
+ engines: {node: '>= 0.8'}
+
+ encodeurl@2.0.0:
+ resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==}
+ engines: {node: '>= 0.8'}
+
enhanced-resolve@5.18.3:
resolution: {integrity: sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==}
engines: {node: '>=10.13.0'}
@@ -3406,6 +3504,9 @@ packages:
resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==}
engines: {node: '>=6'}
+ escape-html@1.0.3:
+ resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==}
+
escape-string-regexp@4.0.0:
resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
engines: {node: '>=10'}
@@ -3550,6 +3651,10 @@ packages:
resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
engines: {node: '>=0.10.0'}
+ etag@1.8.1:
+ resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==}
+ engines: {node: '>= 0.6'}
+
eventsource-parser@3.0.6:
resolution: {integrity: sha512-Vo1ab+QXPzZ4tCa8SwIHJFaSzy4R6SHf7BY79rFBDf0idraZWAkYrDjDj8uWaSm3S2TK+hJ7/t1CEmZ7jXw+pg==}
engines: {node: '>=18.0.0'}
@@ -3558,6 +3663,10 @@ packages:
resolution: {integrity: sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==}
engines: {node: '>=12.0.0'}
+ express@4.22.1:
+ resolution: {integrity: sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==}
+ engines: {node: '>= 0.10.0'}
+
exsolve@1.0.8:
resolution: {integrity: sha512-LmDxfWXwcTArk8fUEnOfSZpHOJ6zOMUJKOtFLFqJLoKJetuQG874Uc7/Kki7zFLzYybmZhp1M7+98pfMqeX8yA==}
@@ -3617,6 +3726,10 @@ packages:
resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
engines: {node: '>=8'}
+ finalhandler@1.3.2:
+ resolution: {integrity: sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==}
+ engines: {node: '>= 0.8'}
+
find-up@4.1.0:
resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==}
engines: {node: '>=8'}
@@ -3669,9 +3782,17 @@ packages:
engines: {node: '>=18.3.0'}
hasBin: true
+ forwarded@0.2.0:
+ resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==}
+ engines: {node: '>= 0.6'}
+
fraction.js@5.3.4:
resolution: {integrity: sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==}
+ fresh@0.5.2:
+ resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==}
+ engines: {node: '>= 0.6'}
+
fs-extra@7.0.1:
resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==}
engines: {node: '>=6 <7 || >=8'}
@@ -3881,10 +4002,22 @@ packages:
html-void-elements@3.0.0:
resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==}
+ http-errors@2.0.0:
+ resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==}
+ engines: {node: '>= 0.8'}
+
+ http-errors@2.0.1:
+ resolution: {integrity: sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==}
+ engines: {node: '>= 0.8'}
+
human-id@4.1.2:
resolution: {integrity: sha512-v/J+4Z/1eIJovEBdlV5TYj1IR+ZiohcYGRY+qN/oC9dAfKzVT023N/Bgw37hrKCoVRBvk3bqyzpr2PP5YeTMSg==}
hasBin: true
+ iconv-lite@0.4.24:
+ resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==}
+ engines: {node: '>=0.10.0'}
+
iconv-lite@0.6.3:
resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==}
engines: {node: '>=0.10.0'}
@@ -3938,6 +4071,10 @@ packages:
resolution: {integrity: sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==}
engines: {node: '>=10.13.0'}
+ ipaddr.js@1.9.1:
+ resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==}
+ engines: {node: '>= 0.10'}
+
is-alphabetical@2.0.1:
resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==}
@@ -4403,6 +4540,10 @@ packages:
mdast-util-to-string@4.0.0:
resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==}
+ media-typer@0.3.0:
+ resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==}
+ engines: {node: '>= 0.6'}
+
memoize@10.2.0:
resolution: {integrity: sha512-DeC6b7QBrZsRs3Y02A6A7lQyzFbsQbqgjI6UW0GigGWV+u1s25TycMr0XHZE4cJce7rY/vyw2ctMQqfDkIhUEA==}
engines: {node: '>=18'}
@@ -4410,6 +4551,9 @@ packages:
memoizerific@1.11.3:
resolution: {integrity: sha512-/EuHYwAPdLtXwAwSZkh/Gutery6pD2KYd44oQLhAvQp/50mpyduZh8Q7PYHXTCJ+wuXxt7oij2LXyIJOOYFPog==}
+ merge-descriptors@1.0.3:
+ resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==}
+
merge2@1.4.1:
resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
engines: {node: '>= 8'}
@@ -4417,6 +4561,10 @@ packages:
mermaid@11.12.2:
resolution: {integrity: sha512-n34QPDPEKmaeCG4WDMGy0OT6PSyxKCfy2pJgShP+Qow2KLrvWjclwbc3yXfSIf4BanqWEhQEpngWwNp/XhZt6w==}
+ methods@1.1.2:
+ resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==}
+ engines: {node: '>= 0.6'}
+
micromark-core-commonmark@2.0.3:
resolution: {integrity: sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==}
@@ -4545,6 +4693,11 @@ packages:
resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
engines: {node: '>= 0.6'}
+ mime@1.6.0:
+ resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==}
+ engines: {node: '>=4'}
+ hasBin: true
+
mimic-function@5.0.1:
resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==}
engines: {node: '>=18'}
@@ -4578,6 +4731,9 @@ packages:
resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==}
engines: {node: '>=4'}
+ ms@2.0.0:
+ resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==}
+
ms@2.1.3:
resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
@@ -4616,6 +4772,10 @@ packages:
natural-compare@1.4.0:
resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
+ negotiator@0.6.3:
+ resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==}
+ engines: {node: '>= 0.6'}
+
next-themes@0.4.6:
resolution: {integrity: sha512-pZvgD5L0IEvX5/9GWyHMf3m8BKiVQwsCMHfoFosXtXBMnaS0ZnIJ9ST4b4NqLVKDEm8QBxoNNGNaBv2JNF6XNA==}
peerDependencies:
@@ -4702,6 +4862,10 @@ packages:
ohash@2.0.11:
resolution: {integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==}
+ on-finished@2.4.1:
+ resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==}
+ engines: {node: '>= 0.8'}
+
oniguruma-parser@0.12.1:
resolution: {integrity: sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w==}
@@ -4788,6 +4952,10 @@ packages:
parse5@7.3.0:
resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==}
+ parseurl@1.3.3:
+ resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==}
+ engines: {node: '>= 0.8'}
+
path-data-parser@0.1.0:
resolution: {integrity: sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w==}
@@ -4810,6 +4978,9 @@ packages:
resolution: {integrity: sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==}
engines: {node: 20 || >=22}
+ path-to-regexp@0.1.12:
+ resolution: {integrity: sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==}
+
path-to-regexp@6.3.0:
resolution: {integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==}
@@ -4972,6 +5143,10 @@ packages:
property-information@7.1.0:
resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==}
+ proxy-addr@2.0.7:
+ resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==}
+ engines: {node: '>= 0.10'}
+
proxy-from-env@1.1.0:
resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==}
@@ -4982,12 +5157,24 @@ packages:
pure-rand@6.1.0:
resolution: {integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==}
+ qs@6.14.0:
+ resolution: {integrity: sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==}
+ engines: {node: '>=0.6'}
+
quansync@0.2.11:
resolution: {integrity: sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==}
queue-microtask@1.2.3:
resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
+ range-parser@1.2.1:
+ resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==}
+ engines: {node: '>= 0.6'}
+
+ raw-body@2.5.3:
+ resolution: {integrity: sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==}
+ engines: {node: '>= 0.8'}
+
rc9@2.1.2:
resolution: {integrity: sha512-btXCnMmRIBINM2LDZoEmOogIZU7Qe7zn4BpomSKZ/ykbLObuBdvG+mFq11DL6fjH1DRwHhrlgtYWG96bJiC7Cg==}
@@ -5181,6 +5368,9 @@ packages:
resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==}
engines: {node: '>=0.4'}
+ safe-buffer@5.2.1:
+ resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
+
safe-push-apply@1.0.0:
resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==}
engines: {node: '>= 0.4'}
@@ -5207,6 +5397,18 @@ packages:
engines: {node: '>=10'}
hasBin: true
+ send@0.19.0:
+ resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==}
+ engines: {node: '>= 0.8.0'}
+
+ send@0.19.1:
+ resolution: {integrity: sha512-p4rRk4f23ynFEfcD9LA0xRYngj+IyGiEYyqqOak8kaN0TvNmuxC2dcVeBn62GpCeR2CpWqyHCNScTP91QbAVFg==}
+ engines: {node: '>= 0.8.0'}
+
+ serve-static@1.16.2:
+ resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==}
+ engines: {node: '>= 0.8.0'}
+
set-function-length@1.2.2:
resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==}
engines: {node: '>= 0.4'}
@@ -5219,6 +5421,9 @@ packages:
resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==}
engines: {node: '>= 0.4'}
+ setprototypeof@1.2.0:
+ resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==}
+
sharp@0.34.5:
resolution: {integrity: sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
@@ -5295,6 +5500,10 @@ packages:
stackback@0.0.2:
resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==}
+ statuses@2.0.1:
+ resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==}
+ engines: {node: '>= 0.8'}
+
statuses@2.0.2:
resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==}
engines: {node: '>= 0.8'}
@@ -5499,6 +5708,10 @@ packages:
resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
engines: {node: '>=8.0'}
+ toidentifier@1.0.1:
+ resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==}
+ engines: {node: '>=0.6'}
+
tough-cookie@6.0.0:
resolution: {integrity: sha512-kXuRi1mtaKMrsLUxz3sQYvVl37B0Ns6MzfrtV5DvJceE9bPyspOqk9xxv7XbZWcfLWbFmm997vl83qUWVJA64w==}
engines: {node: '>=16'}
@@ -5629,6 +5842,10 @@ packages:
resolution: {integrity: sha512-xxCJm+Bckc6kQBknN7i9fnP/xobQRsRQxR01CztFkp/h++yfVxUUcmMgfR2HttJx/dpWjS9ubVuyspJv24Q9DA==}
engines: {node: '>=20'}
+ type-is@1.6.18:
+ resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==}
+ engines: {node: '>= 0.6'}
+
typed-array-buffer@1.0.3:
resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==}
engines: {node: '>= 0.4'}
@@ -5698,6 +5915,10 @@ packages:
resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==}
engines: {node: '>= 4.0.0'}
+ unpipe@1.0.0:
+ resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==}
+ engines: {node: '>= 0.8'}
+
unplugin@1.16.1:
resolution: {integrity: sha512-4/u/j4FrCKdi17jaxuJA0jClGxB1AvU2hw/IuayPc4ay1XGaJs/rbb4v5WKwAjNifjmXK9PIFyuPiaK8azyR9w==}
engines: {node: '>=14.0.0'}
@@ -5728,6 +5949,10 @@ packages:
util@0.12.5:
resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==}
+ utils-merge@1.0.1:
+ resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==}
+ engines: {node: '>= 0.4.0'}
+
uuid@11.1.0:
resolution: {integrity: sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==}
hasBin: true
@@ -5736,6 +5961,10 @@ packages:
resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==}
hasBin: true
+ vary@1.1.2:
+ resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==}
+ engines: {node: '>= 0.8'}
+
vfile-location@5.0.3:
resolution: {integrity: sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==}
@@ -6012,6 +6241,17 @@ snapshots:
- arktype
- effect
+ '@ai-sdk/gateway@2.0.0-beta.70(effect@3.18.4)(zod@4.1.13)':
+ dependencies:
+ '@ai-sdk/provider': 3.0.0-beta.23
+ '@ai-sdk/provider-utils': 4.0.0-beta.41(effect@3.18.4)(zod@4.1.13)
+ '@vercel/oidc': 3.0.5
+ zod: 4.1.13
+ transitivePeerDependencies:
+ - '@valibot/to-json-schema'
+ - arktype
+ - effect
+
'@ai-sdk/gateway@2.0.18(zod@3.25.76)':
dependencies:
'@ai-sdk/provider': 2.0.0
@@ -6019,13 +6259,6 @@ snapshots:
'@vercel/oidc': 3.0.5
zod: 3.25.76
- '@ai-sdk/gateway@2.0.18(zod@4.1.13)':
- dependencies:
- '@ai-sdk/provider': 2.0.0
- '@ai-sdk/provider-utils': 3.0.18(zod@4.1.13)
- '@vercel/oidc': 3.0.5
- zod: 4.1.13
-
'@ai-sdk/openai@3.0.0-beta.74(effect@3.18.4)(zod@4.1.13)':
dependencies:
'@ai-sdk/provider': 3.0.0-beta.22
@@ -6043,13 +6276,6 @@ snapshots:
eventsource-parser: 3.0.6
zod: 3.25.76
- '@ai-sdk/provider-utils@3.0.18(zod@4.1.13)':
- dependencies:
- '@ai-sdk/provider': 2.0.0
- '@standard-schema/spec': 1.0.0
- eventsource-parser: 3.0.6
- zod: 4.1.13
-
'@ai-sdk/provider-utils@4.0.0-beta.40(effect@3.18.4)(zod@3.25.76)':
dependencies:
'@ai-sdk/provider': 3.0.0-beta.22
@@ -6068,6 +6294,15 @@ snapshots:
optionalDependencies:
effect: 3.18.4
+ '@ai-sdk/provider-utils@4.0.0-beta.41(effect@3.18.4)(zod@4.1.13)':
+ dependencies:
+ '@ai-sdk/provider': 3.0.0-beta.23
+ '@standard-schema/spec': 1.0.0
+ eventsource-parser: 3.0.6
+ zod: 4.1.13
+ optionalDependencies:
+ effect: 3.18.4
+
'@ai-sdk/provider@2.0.0':
dependencies:
json-schema: 0.4.0
@@ -6076,15 +6311,22 @@ snapshots:
dependencies:
json-schema: 0.4.0
- '@ai-sdk/react@2.0.106(react@19.2.0)(zod@4.1.13)':
+ '@ai-sdk/provider@3.0.0-beta.23':
dependencies:
- '@ai-sdk/provider-utils': 3.0.18(zod@4.1.13)
- ai: 5.0.106(zod@4.1.13)
+ json-schema: 0.4.0
+
+ '@ai-sdk/react@3.0.0-beta.131(effect@3.18.4)(react@19.2.0)(zod@4.1.13)':
+ dependencies:
+ '@ai-sdk/provider-utils': 4.0.0-beta.41(effect@3.18.4)(zod@4.1.13)
+ ai: 6.0.0-beta.130(effect@3.18.4)(zod@4.1.13)
react: 19.2.0
swr: 2.3.7(react@19.2.0)
throttleit: 2.1.0
- optionalDependencies:
- zod: 4.1.13
+ transitivePeerDependencies:
+ - '@valibot/to-json-schema'
+ - arktype
+ - effect
+ - zod
'@alloc/quick-lru@5.2.0': {}
@@ -7962,6 +8204,11 @@ snapshots:
loupe: 3.2.1
tinyrainbow: 1.2.0
+ accepts@1.3.8:
+ dependencies:
+ mime-types: 2.1.35
+ negotiator: 0.6.3
+
acorn-jsx-walk@2.0.0: {}
acorn-jsx@5.3.2(acorn@8.15.0):
@@ -7986,14 +8233,6 @@ snapshots:
'@opentelemetry/api': 1.9.0
zod: 3.25.76
- ai@5.0.106(zod@4.1.13):
- dependencies:
- '@ai-sdk/gateway': 2.0.18(zod@4.1.13)
- '@ai-sdk/provider': 2.0.0
- '@ai-sdk/provider-utils': 3.0.18(zod@4.1.13)
- '@opentelemetry/api': 1.9.0
- zod: 4.1.13
-
ai@6.0.0-beta.124(effect@3.18.4)(zod@3.25.76):
dependencies:
'@ai-sdk/gateway': 2.0.0-beta.68(effect@3.18.4)(zod@3.25.76)
@@ -8018,6 +8257,18 @@ snapshots:
- arktype
- effect
+ ai@6.0.0-beta.130(effect@3.18.4)(zod@4.1.13):
+ dependencies:
+ '@ai-sdk/gateway': 2.0.0-beta.70(effect@3.18.4)(zod@4.1.13)
+ '@ai-sdk/provider': 3.0.0-beta.23
+ '@ai-sdk/provider-utils': 4.0.0-beta.41(effect@3.18.4)(zod@4.1.13)
+ '@opentelemetry/api': 1.9.0
+ zod: 4.1.13
+ transitivePeerDependencies:
+ - '@valibot/to-json-schema'
+ - arktype
+ - effect
+
ajv@6.12.6:
dependencies:
fast-deep-equal: 3.1.3
@@ -8072,6 +8323,8 @@ snapshots:
call-bound: 1.0.4
is-array-buffer: 3.0.5
+ array-flatten@1.1.1: {}
+
array-includes@3.1.9:
dependencies:
call-bind: 1.0.8
@@ -8194,6 +8447,23 @@ snapshots:
dependencies:
lodash: 4.17.21
+ body-parser@1.20.4:
+ dependencies:
+ bytes: 3.1.2
+ content-type: 1.0.5
+ debug: 2.6.9
+ depd: 2.0.0
+ destroy: 1.2.0
+ http-errors: 2.0.1
+ iconv-lite: 0.4.24
+ on-finished: 2.4.1
+ qs: 6.14.0
+ raw-body: 2.5.3
+ type-is: 1.6.18
+ unpipe: 1.0.0
+ transitivePeerDependencies:
+ - supports-color
+
brace-expansion@1.1.12:
dependencies:
balanced-match: 1.0.2
@@ -8222,6 +8492,8 @@ snapshots:
esbuild: 0.27.0
load-tsconfig: 0.2.5
+ bytes@3.1.2: {}
+
c12@3.1.0:
dependencies:
chokidar: 4.0.3
@@ -8370,10 +8642,25 @@ snapshots:
consola@3.4.2: {}
+ content-disposition@0.5.4:
+ dependencies:
+ safe-buffer: 5.2.1
+
+ content-type@1.0.5: {}
+
convert-source-map@2.0.0: {}
+ cookie-signature@1.0.7: {}
+
+ cookie@0.7.2: {}
+
cookie@1.0.2: {}
+ cors@2.8.5:
+ dependencies:
+ object-assign: 4.1.1
+ vary: 1.1.2
+
cose-base@1.0.3:
dependencies:
layout-base: 1.0.2
@@ -8600,6 +8887,10 @@ snapshots:
dayjs@1.11.19: {}
+ debug@2.6.9:
+ dependencies:
+ ms: 2.0.0
+
debug@3.2.7:
dependencies:
ms: 2.1.3
@@ -8640,6 +8931,8 @@ snapshots:
delayed-stream@1.0.0: {}
+ depd@2.0.0: {}
+
dependency-cruiser@17.3.1:
dependencies:
acorn: 8.15.0
@@ -8667,6 +8960,8 @@ snapshots:
destr@2.0.5: {}
+ destroy@1.2.0: {}
+
detect-indent@6.1.0: {}
detect-libc@2.1.2:
@@ -8710,6 +9005,8 @@ snapshots:
eastasianwidth@0.2.0: {}
+ ee-first@1.1.1: {}
+
effect@3.18.4:
dependencies:
'@standard-schema/spec': 1.0.0
@@ -8723,6 +9020,10 @@ snapshots:
empathic@2.0.0: {}
+ encodeurl@1.0.2: {}
+
+ encodeurl@2.0.0: {}
+
enhanced-resolve@5.18.3:
dependencies:
graceful-fs: 4.2.11
@@ -8933,6 +9234,8 @@ snapshots:
escalade@3.2.0: {}
+ escape-html@1.0.3: {}
+
escape-string-regexp@4.0.0: {}
escape-string-regexp@5.0.0: {}
@@ -9355,10 +9658,48 @@ snapshots:
esutils@2.0.3: {}
+ etag@1.8.1: {}
+
eventsource-parser@3.0.6: {}
expect-type@1.2.2: {}
+ express@4.22.1:
+ dependencies:
+ accepts: 1.3.8
+ array-flatten: 1.1.1
+ body-parser: 1.20.4
+ content-disposition: 0.5.4
+ content-type: 1.0.5
+ cookie: 0.7.2
+ cookie-signature: 1.0.7
+ debug: 2.6.9
+ depd: 2.0.0
+ encodeurl: 2.0.0
+ escape-html: 1.0.3
+ etag: 1.8.1
+ finalhandler: 1.3.2
+ fresh: 0.5.2
+ http-errors: 2.0.1
+ merge-descriptors: 1.0.3
+ methods: 1.1.2
+ on-finished: 2.4.1
+ parseurl: 1.3.3
+ path-to-regexp: 0.1.12
+ proxy-addr: 2.0.7
+ qs: 6.14.0
+ range-parser: 1.2.1
+ safe-buffer: 5.2.1
+ send: 0.19.1
+ serve-static: 1.16.2
+ setprototypeof: 1.2.0
+ statuses: 2.0.2
+ type-is: 1.6.18
+ utils-merge: 1.0.1
+ vary: 1.1.2
+ transitivePeerDependencies:
+ - supports-color
+
exsolve@1.0.8: {}
extend@3.0.2: {}
@@ -9417,6 +9758,18 @@ snapshots:
dependencies:
to-regex-range: 5.0.1
+ finalhandler@1.3.2:
+ dependencies:
+ debug: 2.6.9
+ encodeurl: 2.0.0
+ escape-html: 1.0.3
+ on-finished: 2.4.1
+ parseurl: 1.3.3
+ statuses: 2.0.2
+ unpipe: 1.0.0
+ transitivePeerDependencies:
+ - supports-color
+
find-up@4.1.0:
dependencies:
locate-path: 5.0.0
@@ -9473,8 +9826,12 @@ snapshots:
dependencies:
fd-package-json: 2.0.0
+ forwarded@0.2.0: {}
+
fraction.js@5.3.4: {}
+ fresh@0.5.2: {}
+
fs-extra@7.0.1:
dependencies:
graceful-fs: 4.2.11
@@ -9775,8 +10132,28 @@ snapshots:
html-void-elements@3.0.0: {}
+ http-errors@2.0.0:
+ dependencies:
+ depd: 2.0.0
+ inherits: 2.0.4
+ setprototypeof: 1.2.0
+ statuses: 2.0.1
+ toidentifier: 1.0.1
+
+ http-errors@2.0.1:
+ dependencies:
+ depd: 2.0.0
+ inherits: 2.0.4
+ setprototypeof: 1.2.0
+ statuses: 2.0.2
+ toidentifier: 1.0.1
+
human-id@4.1.2: {}
+ iconv-lite@0.4.24:
+ dependencies:
+ safer-buffer: 2.1.2
+
iconv-lite@0.6.3:
dependencies:
safer-buffer: 2.1.2
@@ -9816,6 +10193,8 @@ snapshots:
interpret@3.1.1: {}
+ ipaddr.js@1.9.1: {}
+
is-alphabetical@2.0.1: {}
is-alphanumerical@2.0.1:
@@ -10365,6 +10744,8 @@ snapshots:
dependencies:
'@types/mdast': 4.0.4
+ media-typer@0.3.0: {}
+
memoize@10.2.0:
dependencies:
mimic-function: 5.0.1
@@ -10373,6 +10754,8 @@ snapshots:
dependencies:
map-or-similar: 1.5.0
+ merge-descriptors@1.0.3: {}
+
merge2@1.4.1: {}
mermaid@11.12.2:
@@ -10398,6 +10781,8 @@ snapshots:
ts-dedent: 2.2.0
uuid: 11.1.0
+ methods@1.1.2: {}
+
micromark-core-commonmark@2.0.3:
dependencies:
decode-named-character-reference: 1.2.0
@@ -10642,6 +11027,8 @@ snapshots:
dependencies:
mime-db: 1.52.0
+ mime@1.6.0: {}
+
mimic-function@5.0.1: {}
min-indent@1.0.1: {}
@@ -10671,6 +11058,8 @@ snapshots:
mri@1.2.0: {}
+ ms@2.0.0: {}
+
ms@2.1.3: {}
msw@2.12.3(@types/node@22.19.1)(typescript@5.9.3):
@@ -10714,6 +11103,8 @@ snapshots:
natural-compare@1.4.0: {}
+ negotiator@0.6.3: {}
+
next-themes@0.4.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0):
dependencies:
react: 19.2.0
@@ -10805,6 +11196,10 @@ snapshots:
ohash@2.0.11: {}
+ on-finished@2.4.1:
+ dependencies:
+ ee-first: 1.1.1
+
oniguruma-parser@0.12.1: {}
oniguruma-to-es@4.3.4:
@@ -10915,6 +11310,8 @@ snapshots:
dependencies:
entities: 6.0.1
+ parseurl@1.3.3: {}
+
path-data-parser@0.1.0: {}
path-exists@4.0.0: {}
@@ -10933,6 +11330,8 @@ snapshots:
lru-cache: 11.2.2
minipass: 7.1.2
+ path-to-regexp@0.1.12: {}
+
path-to-regexp@6.3.0: {}
path-type@4.0.0: {}
@@ -11077,16 +11476,34 @@ snapshots:
property-information@7.1.0: {}
+ proxy-addr@2.0.7:
+ dependencies:
+ forwarded: 0.2.0
+ ipaddr.js: 1.9.1
+
proxy-from-env@1.1.0: {}
punycode@2.3.1: {}
pure-rand@6.1.0: {}
+ qs@6.14.0:
+ dependencies:
+ side-channel: 1.1.0
+
quansync@0.2.11: {}
queue-microtask@1.2.3: {}
+ range-parser@1.2.1: {}
+
+ raw-body@2.5.3:
+ dependencies:
+ bytes: 3.1.2
+ http-errors: 2.0.1
+ iconv-lite: 0.4.24
+ unpipe: 1.0.0
+
rc9@2.1.2:
dependencies:
defu: 6.1.4
@@ -11388,6 +11805,8 @@ snapshots:
has-symbols: 1.1.0
isarray: 2.0.5
+ safe-buffer@5.2.1: {}
+
safe-push-apply@1.0.0:
dependencies:
es-errors: 1.3.0
@@ -11411,6 +11830,51 @@ snapshots:
semver@7.7.3: {}
+ send@0.19.0:
+ dependencies:
+ debug: 2.6.9
+ depd: 2.0.0
+ destroy: 1.2.0
+ encodeurl: 1.0.2
+ escape-html: 1.0.3
+ etag: 1.8.1
+ fresh: 0.5.2
+ http-errors: 2.0.0
+ mime: 1.6.0
+ ms: 2.1.3
+ on-finished: 2.4.1
+ range-parser: 1.2.1
+ statuses: 2.0.1
+ transitivePeerDependencies:
+ - supports-color
+
+ send@0.19.1:
+ dependencies:
+ debug: 2.6.9
+ depd: 2.0.0
+ destroy: 1.2.0
+ encodeurl: 2.0.0
+ escape-html: 1.0.3
+ etag: 1.8.1
+ fresh: 0.5.2
+ http-errors: 2.0.0
+ mime: 1.6.0
+ ms: 2.1.3
+ on-finished: 2.4.1
+ range-parser: 1.2.1
+ statuses: 2.0.1
+ transitivePeerDependencies:
+ - supports-color
+
+ serve-static@1.16.2:
+ dependencies:
+ encodeurl: 2.0.0
+ escape-html: 1.0.3
+ parseurl: 1.3.3
+ send: 0.19.0
+ transitivePeerDependencies:
+ - supports-color
+
set-function-length@1.2.2:
dependencies:
define-data-property: 1.1.4
@@ -11433,6 +11897,8 @@ snapshots:
es-errors: 1.3.0
es-object-atoms: 1.1.1
+ setprototypeof@1.2.0: {}
+
sharp@0.34.5:
dependencies:
'@img/colour': 1.0.0
@@ -11539,6 +12005,8 @@ snapshots:
stackback@0.0.2: {}
+ statuses@2.0.1: {}
+
statuses@2.0.2: {}
std-env@3.10.0: {}
@@ -11793,6 +12261,8 @@ snapshots:
dependencies:
is-number: 7.0.0
+ toidentifier@1.0.1: {}
+
tough-cookie@6.0.0:
dependencies:
tldts: 7.0.19
@@ -11934,6 +12404,11 @@ snapshots:
dependencies:
tagged-tag: 1.0.0
+ type-is@1.6.18:
+ dependencies:
+ media-typer: 0.3.0
+ mime-types: 2.1.35
+
typed-array-buffer@1.0.3:
dependencies:
call-bound: 1.0.4
@@ -12049,6 +12524,8 @@ snapshots:
universalify@0.1.2: {}
+ unpipe@1.0.0: {}
+
unplugin@1.16.1:
dependencies:
acorn: 8.15.0
@@ -12104,10 +12581,14 @@ snapshots:
is-typed-array: 1.1.15
which-typed-array: 1.1.19
+ utils-merge@1.0.1: {}
+
uuid@11.1.0: {}
uuid@9.0.1: {}
+ vary@1.1.2: {}
+
vfile-location@5.0.3:
dependencies:
'@types/unist': 3.0.3