codacus commited on
Commit
2553814
·
2 Parent(s): dd24ccc 9766763

Merge remote-tracking branch 'upstream/main'

Browse files
app/commit.json CHANGED
@@ -1 +1 @@
1
- { "commit": "77073a5e7f759ae8e5752628131d0c56df6b5c34" , "version": "" }
 
1
+ { "commit": "78505ed2f347dd3a7778b4c1c7c38c89ecacedd3" , "version": "" }
app/components/chat/AssistantMessage.tsx CHANGED
@@ -1,13 +1,30 @@
1
  import { memo } from 'react';
2
  import { Markdown } from './Markdown';
 
3
 
4
  interface AssistantMessageProps {
5
  content: string;
 
6
  }
7
 
8
- export const AssistantMessage = memo(({ content }: AssistantMessageProps) => {
 
 
 
 
 
 
 
 
 
 
9
  return (
10
  <div className="overflow-hidden w-full">
 
 
 
 
 
11
  <Markdown html>{content}</Markdown>
12
  </div>
13
  );
 
1
  import { memo } from 'react';
2
  import { Markdown } from './Markdown';
3
+ import type { JSONValue } from 'ai';
4
 
5
  interface AssistantMessageProps {
6
  content: string;
7
+ annotations?: JSONValue[];
8
  }
9
 
10
+ export const AssistantMessage = memo(({ content, annotations }: AssistantMessageProps) => {
11
+ const filteredAnnotations = (annotations?.filter(
12
+ (annotation: JSONValue) => annotation && typeof annotation === 'object' && Object.keys(annotation).includes('type'),
13
+ ) || []) as { type: string; value: any }[];
14
+
15
+ const usage: {
16
+ completionTokens: number;
17
+ promptTokens: number;
18
+ totalTokens: number;
19
+ } = filteredAnnotations.find((annotation) => annotation.type === 'usage')?.value;
20
+
21
  return (
22
  <div className="overflow-hidden w-full">
23
+ {usage && (
24
+ <div className="text-sm text-bolt-elements-textSecondary mb-2">
25
+ Tokens: {usage.totalTokens} (prompt: {usage.promptTokens}, completion: {usage.completionTokens})
26
+ </div>
27
+ )}
28
  <Markdown html>{content}</Markdown>
29
  </div>
30
  );
app/components/chat/Chat.client.tsx CHANGED
@@ -116,13 +116,22 @@ export const ChatImpl = memo(
116
  apiKeys,
117
  files,
118
  },
 
119
  onError: (error) => {
120
  logger.error('Request failed\n\n', error);
121
  toast.error(
122
  'There was an error processing your request: ' + (error.message ? error.message : 'No details were returned'),
123
  );
124
  },
125
- onFinish: () => {
 
 
 
 
 
 
 
 
126
  logger.debug('Finished streaming');
127
  },
128
  initialMessages,
 
116
  apiKeys,
117
  files,
118
  },
119
+ sendExtraMessageFields: true,
120
  onError: (error) => {
121
  logger.error('Request failed\n\n', error);
122
  toast.error(
123
  'There was an error processing your request: ' + (error.message ? error.message : 'No details were returned'),
124
  );
125
  },
126
+ onFinish: (message, response) => {
127
+ const usage = response.usage;
128
+
129
+ if (usage) {
130
+ console.log('Token usage:', usage);
131
+
132
+ // You can now use the usage data as needed
133
+ }
134
+
135
  logger.debug('Finished streaming');
136
  },
137
  initialMessages,
app/components/chat/Messages.client.tsx CHANGED
@@ -65,7 +65,11 @@ export const Messages = React.forwardRef<HTMLDivElement, MessagesProps>((props:
65
  </div>
66
  )}
67
  <div className="grid grid-col-1 w-full">
68
- {isUserMessage ? <UserMessage content={content} /> : <AssistantMessage content={content} />}
 
 
 
 
69
  </div>
70
  {!isUserMessage && (
71
  <div className="flex gap-2 flex-col lg:flex-row">
 
65
  </div>
66
  )}
67
  <div className="grid grid-col-1 w-full">
68
+ {isUserMessage ? (
69
+ <UserMessage content={content} />
70
+ ) : (
71
+ <AssistantMessage content={content} annotations={message.annotations} />
72
+ )}
73
  </div>
74
  {!isUserMessage && (
75
  <div className="flex gap-2 flex-col lg:flex-row">
app/components/chat/UserMessage.tsx CHANGED
@@ -12,42 +12,36 @@ interface UserMessageProps {
12
  export function UserMessage({ content }: UserMessageProps) {
13
  if (Array.isArray(content)) {
14
  const textItem = content.find((item) => item.type === 'text');
15
- const textContent = sanitizeUserMessage(textItem?.text || '');
16
  const images = content.filter((item) => item.type === 'image' && item.image);
17
 
18
  return (
19
  <div className="overflow-hidden pt-[4px]">
20
- <div className="flex items-start gap-4">
21
- <div className="flex-1">
22
- <Markdown limitedMarkdown>{textContent}</Markdown>
23
- </div>
24
- {images.length > 0 && (
25
- <div className="flex-shrink-0 w-[160px]">
26
- {images.map((item, index) => (
27
- <div key={index} className="relative">
28
- <img
29
- src={item.image}
30
- alt={`Uploaded image ${index + 1}`}
31
- className="w-full h-[160px] rounded-lg object-cover border border-bolt-elements-borderColor"
32
- />
33
- </div>
34
- ))}
35
- </div>
36
- )}
37
  </div>
38
  </div>
39
  );
40
  }
41
 
42
- const textContent = sanitizeUserMessage(content);
43
 
44
  return (
45
  <div className="overflow-hidden pt-[4px]">
46
- <Markdown limitedMarkdown>{textContent}</Markdown>
47
  </div>
48
  );
49
  }
50
 
51
- function sanitizeUserMessage(content: string) {
52
  return content.replace(MODEL_REGEX, '').replace(PROVIDER_REGEX, '');
53
  }
 
12
  export function UserMessage({ content }: UserMessageProps) {
13
  if (Array.isArray(content)) {
14
  const textItem = content.find((item) => item.type === 'text');
15
+ const textContent = stripMetadata(textItem?.text || '');
16
  const images = content.filter((item) => item.type === 'image' && item.image);
17
 
18
  return (
19
  <div className="overflow-hidden pt-[4px]">
20
+ <div className="flex flex-col gap-4">
21
+ {textContent && <Markdown html>{textContent}</Markdown>}
22
+ {images.map((item, index) => (
23
+ <img
24
+ key={index}
25
+ src={item.image}
26
+ alt={`Image ${index + 1}`}
27
+ className="max-w-full h-auto rounded-lg"
28
+ style={{ maxHeight: '512px', objectFit: 'contain' }}
29
+ />
30
+ ))}
 
 
 
 
 
 
31
  </div>
32
  </div>
33
  );
34
  }
35
 
36
+ const textContent = stripMetadata(content);
37
 
38
  return (
39
  <div className="overflow-hidden pt-[4px]">
40
+ <Markdown html>{textContent}</Markdown>
41
  </div>
42
  );
43
  }
44
 
45
+ function stripMetadata(content: string) {
46
  return content.replace(MODEL_REGEX, '').replace(PROVIDER_REGEX, '');
47
  }
app/components/settings/features/FeaturesTab.tsx CHANGED
@@ -3,8 +3,8 @@ import { Switch } from '~/components/ui/Switch';
3
  import { useSettings } from '~/lib/hooks/useSettings';
4
 
5
  export default function FeaturesTab() {
6
- const { debug, enableDebugMode, isLocalModel, enableLocalModels, enableEventLogs, latestBranch, enableLatestBranch } =
7
- useSettings();
8
 
9
  const handleToggle = (enabled: boolean) => {
10
  enableDebugMode(enabled);
 
3
  import { useSettings } from '~/lib/hooks/useSettings';
4
 
5
  export default function FeaturesTab() {
6
+
7
+ const { debug, enableDebugMode, isLocalModel, enableLocalModels, enableEventLogs, latestBranch, enableLatestBranch } = useSettings();
8
 
9
  const handleToggle = (enabled: boolean) => {
10
  enableDebugMode(enabled);
app/lib/hooks/useSettings.tsx CHANGED
@@ -99,7 +99,6 @@ export function useSettings() {
99
  if (checkCommit === undefined) {
100
  checkCommit = commit.commit;
101
  }
102
-
103
  if (savedLatestBranch === undefined || checkCommit !== commit.commit) {
104
  // If setting hasn't been set by user, check version
105
  checkIsStableVersion().then((isStable) => {
 
99
  if (checkCommit === undefined) {
100
  checkCommit = commit.commit;
101
  }
 
102
  if (savedLatestBranch === undefined || checkCommit !== commit.commit) {
103
  // If setting hasn't been set by user, check version
104
  checkIsStableVersion().then((isStable) => {
app/routes/api.chat.ts CHANGED
@@ -1,4 +1,5 @@
1
  import { type ActionFunctionArgs } from '@remix-run/cloudflare';
 
2
  import { MAX_RESPONSE_SEGMENTS, MAX_TOKENS } from '~/lib/.server/llm/constants';
3
  import { CONTINUE_PROMPT } from '~/lib/.server/llm/prompts';
4
  import { streamText, type Messages, type StreamingOptions } from '~/lib/.server/llm/stream-text';
@@ -9,17 +10,15 @@ export async function action(args: ActionFunctionArgs) {
9
  return chatAction(args);
10
  }
11
 
12
- function parseCookies(cookieHeader: string) {
13
- const cookies: any = {};
14
 
15
- // Split the cookie string by semicolons and spaces
16
  const items = cookieHeader.split(';').map((cookie) => cookie.trim());
17
 
18
  items.forEach((item) => {
19
  const [name, ...rest] = item.split('=');
20
 
21
  if (name && rest) {
22
- // Decode the name and value, and join value parts in case it contains '='
23
  const decodedName = decodeURIComponent(name.trim());
24
  const decodedValue = decodeURIComponent(rest.join('=').trim());
25
  cookies[decodedName] = decodedValue;
@@ -36,8 +35,6 @@ async function chatAction({ context, request }: ActionFunctionArgs) {
36
  }>();
37
 
38
  const cookieHeader = request.headers.get('Cookie');
39
-
40
- // Parse the cookie's value (returns an object or null if no cookie exists)
41
  const apiKeys = JSON.parse(parseCookies(cookieHeader || '').apiKeys || '{}');
42
  const providerSettings: Record<string, IProviderSetting> = JSON.parse(
43
  parseCookies(cookieHeader || '').providers || '{}',
@@ -45,12 +42,42 @@ async function chatAction({ context, request }: ActionFunctionArgs) {
45
 
46
  const stream = new SwitchableStream();
47
 
 
 
 
 
 
 
48
  try {
49
  const options: StreamingOptions = {
50
  toolChoice: 'none',
51
- onFinish: async ({ text: content, finishReason }) => {
 
 
 
 
 
 
 
 
52
  if (finishReason !== 'length') {
53
- return stream.close();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
54
  }
55
 
56
  if (stream.switches >= MAX_RESPONSE_SEGMENTS) {
@@ -73,7 +100,7 @@ async function chatAction({ context, request }: ActionFunctionArgs) {
73
  providerSettings,
74
  });
75
 
76
- return stream.switchSource(result.toAIStream());
77
  },
78
  };
79
 
@@ -86,7 +113,7 @@ async function chatAction({ context, request }: ActionFunctionArgs) {
86
  providerSettings,
87
  });
88
 
89
- stream.switchSource(result.toAIStream());
90
 
91
  return new Response(stream.readable, {
92
  status: 200,
@@ -95,7 +122,7 @@ async function chatAction({ context, request }: ActionFunctionArgs) {
95
  },
96
  });
97
  } catch (error: any) {
98
- console.log(error);
99
 
100
  if (error.message?.includes('API key')) {
101
  throw new Response('Invalid or missing API key', {
 
1
  import { type ActionFunctionArgs } from '@remix-run/cloudflare';
2
+ import { createDataStream } from 'ai';
3
  import { MAX_RESPONSE_SEGMENTS, MAX_TOKENS } from '~/lib/.server/llm/constants';
4
  import { CONTINUE_PROMPT } from '~/lib/.server/llm/prompts';
5
  import { streamText, type Messages, type StreamingOptions } from '~/lib/.server/llm/stream-text';
 
10
  return chatAction(args);
11
  }
12
 
13
+ function parseCookies(cookieHeader: string): Record<string, string> {
14
+ const cookies: Record<string, string> = {};
15
 
 
16
  const items = cookieHeader.split(';').map((cookie) => cookie.trim());
17
 
18
  items.forEach((item) => {
19
  const [name, ...rest] = item.split('=');
20
 
21
  if (name && rest) {
 
22
  const decodedName = decodeURIComponent(name.trim());
23
  const decodedValue = decodeURIComponent(rest.join('=').trim());
24
  cookies[decodedName] = decodedValue;
 
35
  }>();
36
 
37
  const cookieHeader = request.headers.get('Cookie');
 
 
38
  const apiKeys = JSON.parse(parseCookies(cookieHeader || '').apiKeys || '{}');
39
  const providerSettings: Record<string, IProviderSetting> = JSON.parse(
40
  parseCookies(cookieHeader || '').providers || '{}',
 
42
 
43
  const stream = new SwitchableStream();
44
 
45
+ const cumulativeUsage = {
46
+ completionTokens: 0,
47
+ promptTokens: 0,
48
+ totalTokens: 0,
49
+ };
50
+
51
  try {
52
  const options: StreamingOptions = {
53
  toolChoice: 'none',
54
+ onFinish: async ({ text: content, finishReason, usage }) => {
55
+ console.log('usage', usage);
56
+
57
+ if (usage) {
58
+ cumulativeUsage.completionTokens += usage.completionTokens || 0;
59
+ cumulativeUsage.promptTokens += usage.promptTokens || 0;
60
+ cumulativeUsage.totalTokens += usage.totalTokens || 0;
61
+ }
62
+
63
  if (finishReason !== 'length') {
64
+ return stream
65
+ .switchSource(
66
+ createDataStream({
67
+ async execute(dataStream) {
68
+ dataStream.writeMessageAnnotation({
69
+ type: 'usage',
70
+ value: {
71
+ completionTokens: cumulativeUsage.completionTokens,
72
+ promptTokens: cumulativeUsage.promptTokens,
73
+ totalTokens: cumulativeUsage.totalTokens,
74
+ },
75
+ });
76
+ },
77
+ onError: (error: any) => `Custom error: ${error.message}`,
78
+ }),
79
+ )
80
+ .then(() => stream.close());
81
  }
82
 
83
  if (stream.switches >= MAX_RESPONSE_SEGMENTS) {
 
100
  providerSettings,
101
  });
102
 
103
+ return stream.switchSource(result.toDataStream());
104
  },
105
  };
106
 
 
113
  providerSettings,
114
  });
115
 
116
+ stream.switchSource(result.toDataStream());
117
 
118
  return new Response(stream.readable, {
119
  status: 200,
 
122
  },
123
  });
124
  } catch (error: any) {
125
+ console.error(error);
126
 
127
  if (error.message?.includes('API key')) {
128
  throw new Response('Invalid or missing API key', {
app/routes/api.enhancer.ts CHANGED
@@ -1,5 +1,6 @@
1
  import { type ActionFunctionArgs } from '@remix-run/cloudflare';
2
- import { StreamingTextResponse, parseStreamPart } from 'ai';
 
3
  import { streamText } from '~/lib/.server/llm/stream-text';
4
  import { stripIndents } from '~/utils/stripIndent';
5
  import type { IProviderSetting, ProviderInfo } from '~/types/model';
@@ -73,32 +74,32 @@ async function enhancerAction({ context, request }: ActionFunctionArgs) {
73
  `[Model: ${model}]\n\n[Provider: ${providerName}]\n\n` +
74
  stripIndents`
75
  You are a professional prompt engineer specializing in crafting precise, effective prompts.
76
- Your task is to enhance prompts by making them more specific, actionable, and effective.
77
-
78
- I want you to improve the user prompt that is wrapped in \`<original_prompt>\` tags.
79
-
80
- For valid prompts:
81
- - Make instructions explicit and unambiguous
82
- - Add relevant context and constraints
83
- - Remove redundant information
84
- - Maintain the core intent
85
- - Ensure the prompt is self-contained
86
- - Use professional language
87
-
88
- For invalid or unclear prompts:
89
- - Respond with a clear, professional guidance message
90
- - Keep responses concise and actionable
91
- - Maintain a helpful, constructive tone
92
- - Focus on what the user should provide
93
- - Use a standard template for consistency
94
-
95
- IMPORTANT: Your response must ONLY contain the enhanced prompt text.
96
- Do not include any explanations, metadata, or wrapper tags.
97
-
98
- <original_prompt>
99
- ${message}
100
- </original_prompt>
101
- `,
102
  },
103
  ],
104
  env: context.cloudflare.env,
@@ -113,7 +114,7 @@ async function enhancerAction({ context, request }: ActionFunctionArgs) {
113
 
114
  for (const line of lines) {
115
  try {
116
- const parsed = parseStreamPart(line);
117
 
118
  if (parsed.type === 'text') {
119
  controller.enqueue(encoder.encode(parsed.value));
@@ -128,7 +129,12 @@ async function enhancerAction({ context, request }: ActionFunctionArgs) {
128
 
129
  const transformedStream = result.toDataStream().pipeThrough(transformStream);
130
 
131
- return new StreamingTextResponse(transformedStream);
 
 
 
 
 
132
  } catch (error: unknown) {
133
  console.log(error);
134
 
 
1
  import { type ActionFunctionArgs } from '@remix-run/cloudflare';
2
+
3
+ //import { StreamingTextResponse, parseStreamPart } from 'ai';
4
  import { streamText } from '~/lib/.server/llm/stream-text';
5
  import { stripIndents } from '~/utils/stripIndent';
6
  import type { IProviderSetting, ProviderInfo } from '~/types/model';
 
74
  `[Model: ${model}]\n\n[Provider: ${providerName}]\n\n` +
75
  stripIndents`
76
  You are a professional prompt engineer specializing in crafting precise, effective prompts.
77
+ Your task is to enhance prompts by making them more specific, actionable, and effective.
78
+
79
+ I want you to improve the user prompt that is wrapped in \`<original_prompt>\` tags.
80
+
81
+ For valid prompts:
82
+ - Make instructions explicit and unambiguous
83
+ - Add relevant context and constraints
84
+ - Remove redundant information
85
+ - Maintain the core intent
86
+ - Ensure the prompt is self-contained
87
+ - Use professional language
88
+
89
+ For invalid or unclear prompts:
90
+ - Respond with clear, professional guidance
91
+ - Keep responses concise and actionable
92
+ - Maintain a helpful, constructive tone
93
+ - Focus on what the user should provide
94
+ - Use a standard template for consistency
95
+
96
+ IMPORTANT: Your response must ONLY contain the enhanced prompt text.
97
+ Do not include any explanations, metadata, or wrapper tags.
98
+
99
+ <original_prompt>
100
+ ${message}
101
+ </original_prompt>
102
+ `,
103
  },
104
  ],
105
  env: context.cloudflare.env,
 
114
 
115
  for (const line of lines) {
116
  try {
117
+ const parsed = JSON.parse(line);
118
 
119
  if (parsed.type === 'text') {
120
  controller.enqueue(encoder.encode(parsed.value));
 
129
 
130
  const transformedStream = result.toDataStream().pipeThrough(transformStream);
131
 
132
+ return new Response(transformedStream, {
133
+ status: 200,
134
+ headers: {
135
+ 'Content-Type': 'text/plain; charset=utf-8',
136
+ },
137
+ });
138
  } catch (error: unknown) {
139
  console.log(error);
140
 
package.json CHANGED
@@ -73,7 +73,7 @@
73
  "@xterm/addon-fit": "^0.10.0",
74
  "@xterm/addon-web-links": "^0.11.0",
75
  "@xterm/xterm": "^5.5.0",
76
- "ai": "^3.4.33",
77
  "date-fns": "^3.6.0",
78
  "diff": "^5.2.0",
79
  "file-saver": "^2.0.5",
 
73
  "@xterm/addon-fit": "^0.10.0",
74
  "@xterm/addon-web-links": "^0.11.0",
75
  "@xterm/xterm": "^5.5.0",
76
+ "ai": "^4.0.13",
77
  "date-fns": "^3.6.0",
78
  "diff": "^5.2.0",
79
  "file-saver": "^2.0.5",
pnpm-lock.yaml CHANGED
@@ -141,8 +141,8 @@ importers:
141
  specifier: ^5.5.0
142
  version: 5.5.0
143
  ai:
144
- specifier: ^3.4.33
145
146
  date-fns:
147
  specifier: ^3.6.0
148
  version: 3.6.0
@@ -351,8 +351,8 @@ packages:
351
  zod:
352
  optional: true
353
 
354
- '@ai-sdk/[email protected].22':
355
- resolution: {integrity: sha512-YHK2rpj++wnLVc9vPGzGFP3Pjeld2MwhKinetA0zKXOoHAT/Jit5O8kZsxcSlJPu9wvcGT1UGZEjZrtO7PfFOQ==}
356
  engines: {node: '>=18'}
357
  peerDependencies:
358
  zod: ^3.0.0
@@ -360,8 +360,8 @@ packages:
360
  zod:
361
  optional: true
362
 
363
- '@ai-sdk/provider-utils@1.0.9':
364
- resolution: {integrity: sha512-yfdanjUiCJbtGoRGXrcrmXn0pTyDfRIeY6ozDG96D66f2wupZaZvAgKptUa3zDYXtUCQQvcNJ+tipBBfQD/UYA==}
365
  engines: {node: '>=18'}
366
  peerDependencies:
367
  zod: ^3.0.0
@@ -369,8 +369,8 @@ packages:
369
  zod:
370
  optional: true
371
 
372
- '@ai-sdk/[email protected].2':
373
- resolution: {integrity: sha512-IAvhKhdlXqiSmvx/D4uNlFYCl8dWT+M9K+IuEcSgnE2Aj27GWu8sDIpAf4r4Voc+wOUkOECVKQhFo8g9pozdjA==}
374
  engines: {node: '>=18'}
375
  peerDependencies:
376
  zod: ^3.0.0
@@ -390,16 +390,16 @@ packages:
390
  resolution: {integrity: sha512-XMsNGJdGO+L0cxhhegtqZ8+T6nn4EoShS819OvCgI2kLbYTIvk0GWFGD0AXJmxkxs3DrpsJxKAFukFR7bvTkgQ==}
391
  engines: {node: '>=18'}
392
 
393
- '@ai-sdk/[email protected]':
394
- resolution: {integrity: sha512-dQkfBDs2lTYpKM8389oopPdQgIU007GQyCbuPPrV+K6MtSII3HBfE0stUIMXUb44L+LK1t6GXPP7wjSzjO6uKg==}
395
- engines: {node: '>=18'}
396
-
397
  '@ai-sdk/[email protected]':
398
  resolution: {integrity: sha512-mV+3iNDkzUsZ0pR2jG0sVzU6xtQY5DtSCBy3JFycLp6PwjyLw/iodfL3MwdmMCRJWgs3dadcHejRnMvF9nGTBg==}
399
  engines: {node: '>=18'}
400
 
401
- '@ai-sdk/react@0.0.70':
402
- resolution: {integrity: sha512-GnwbtjW4/4z7MleLiW+TOZC2M29eCg1tOUpuEiYFMmFNZK8mkrqM0PFZMo6UsYeUYMWqEOOcPOU9OQVJMJh7IQ==}
 
 
 
 
403
  engines: {node: '>=18'}
404
  peerDependencies:
405
  react: ^18 || ^19 || ^19.0.0-rc
@@ -410,26 +410,8 @@ packages:
410
  zod:
411
  optional: true
412
 
413
- '@ai-sdk/solid@0.0.54':
414
- resolution: {integrity: sha512-96KWTVK+opdFeRubqrgaJXoNiDP89gNxFRWUp0PJOotZW816AbhUf4EnDjBjXTLjXL1n0h8tGSE9sZsRkj9wQQ==}
415
- engines: {node: '>=18'}
416
- peerDependencies:
417
- solid-js: ^1.7.7
418
- peerDependenciesMeta:
419
- solid-js:
420
- optional: true
421
-
422
- '@ai-sdk/[email protected]':
423
- resolution: {integrity: sha512-SyF9ItIR9ALP9yDNAD+2/5Vl1IT6kchgyDH8xkmhysfJI6WrvJbtO1wdQ0nylvPLcsPoYu+cAlz1krU4lFHcYw==}
424
- engines: {node: '>=18'}
425
- peerDependencies:
426
- svelte: ^3.0.0 || ^4.0.0 || ^5.0.0
427
- peerDependenciesMeta:
428
- svelte:
429
- optional: true
430
-
431
- '@ai-sdk/[email protected]':
432
- resolution: {integrity: sha512-Z5QYJVW+5XpSaJ4jYCCAVG7zIAuKOOdikhgpksneNmKvx61ACFaf98pmOd+xnjahl0pIlc/QIe6O4yVaJ1sEaw==}
433
  engines: {node: '>=18'}
434
  peerDependencies:
435
  zod: ^3.0.0
@@ -437,15 +419,6 @@ packages:
437
  zod:
438
  optional: true
439
 
440
- '@ai-sdk/[email protected]':
441
- resolution: {integrity: sha512-+ofYlnqdc8c4F6tM0IKF0+7NagZRAiqBJpGDJ+6EYhDW8FHLUP/JFBgu32SjxSxC6IKFZxEnl68ZoP/Z38EMlw==}
442
- engines: {node: '>=18'}
443
- peerDependencies:
444
- vue: ^3.3.4
445
- peerDependenciesMeta:
446
- vue:
447
- optional: true
448
-
449
  '@ampproject/[email protected]':
450
  resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==}
451
  engines: {node: '>=6.0.0'}
@@ -2370,35 +2343,6 @@ packages:
2370
  '@vitest/[email protected]':
2371
  resolution: {integrity: sha512-dwSoui6djdwbfFmIgbIjX2ZhIoG7Ex/+xpxyiEgIGzjliY8xGkcpITKTlp6B4MgtGkF2ilvm97cPM96XZaAgcA==}
2372
 
2373
- '@vue/[email protected]':
2374
- resolution: {integrity: sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==}
2375
-
2376
- '@vue/[email protected]':
2377
- resolution: {integrity: sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==}
2378
-
2379
- '@vue/[email protected]':
2380
- resolution: {integrity: sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==}
2381
-
2382
- '@vue/[email protected]':
2383
- resolution: {integrity: sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==}
2384
-
2385
- '@vue/[email protected]':
2386
- resolution: {integrity: sha512-NaCwtw8o48B9I6L1zl2p41OHo/2Z4wqYGGIK1Khu5T7yxrn+ATOixn/Udn2m+6kZKB/J7cuT9DbWWhRxqixACg==}
2387
-
2388
- '@vue/[email protected]':
2389
- resolution: {integrity: sha512-Fj4YRQ3Az0WTZw1sFe+QDb0aXCerigEpw418pw1HBUKFtnQHWzwojaukAs2X/c9DQz4MQ4bsXTGlcpGxU/RCIw==}
2390
-
2391
- '@vue/[email protected]':
2392
- resolution: {integrity: sha512-dLaj94s93NYLqjLiyFzVs9X6dWhTdAlEAciC3Moq7gzAc13VJUdCnjjRurNM6uTLFATRHexHCTu/Xp3eW6yoog==}
2393
-
2394
- '@vue/[email protected]':
2395
- resolution: {integrity: sha512-wAi4IRJV/2SAW3htkTlB+dHeRmpTiVIK1OGLWV1yeStVSebSQQOwGwIq0D3ZIoBj2C2qpgz5+vX9iEBkTdk5YA==}
2396
- peerDependencies:
2397
- vue: 3.5.13
2398
-
2399
- '@vue/[email protected]':
2400
- resolution: {integrity: sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==}
2401
-
2402
  '@web3-storage/[email protected]':
2403
  resolution: {integrity: sha512-BEO6al7BYqcnfX15W2cnGR+Q566ACXAT9UQykORCWW80lmkpWsnEob6zJS1ZVBKsSJC8+7vJkHwlp+lXG1UCdw==}
2404
 
@@ -2434,11 +2378,6 @@ packages:
2434
  peerDependencies:
2435
  acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
2436
 
2437
2438
- resolution: {integrity: sha512-xsc9Xv0xlVfwp2o7sQ+GCQ1PgbkdcpWdTzrwXxO3xDMTAywVS3oXVOcOHuRjAPkS4P9b+yc/qNF15460v+jp4Q==}
2439
- peerDependencies:
2440
- acorn: '>=8.9.0'
2441
-
2442
2443
  resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==}
2444
  engines: {node: '>=0.4.0'}
@@ -2452,24 +2391,15 @@ packages:
2452
  resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==}
2453
  engines: {node: '>=8'}
2454
 
2455
- ai@3.4.33:
2456
- resolution: {integrity: sha512-plBlrVZKwPoRTmM8+D1sJac9Bq8eaa2jiZlHLZIWekKWI1yMWYZvCCEezY9ASPwRhULYDJB2VhKOBUUeg3S5JQ==}
2457
  engines: {node: '>=18'}
2458
  peerDependencies:
2459
- openai: ^4.42.0
2460
  react: ^18 || ^19 || ^19.0.0-rc
2461
- sswr: ^2.1.0
2462
- svelte: ^3.0.0 || ^4.0.0 || ^5.0.0
2463
  zod: ^3.0.0
2464
  peerDependenciesMeta:
2465
- openai:
2466
- optional: true
2467
  react:
2468
  optional: true
2469
- sswr:
2470
- optional: true
2471
- svelte:
2472
- optional: true
2473
  zod:
2474
  optional: true
2475
 
@@ -2506,10 +2436,6 @@ packages:
2506
  resolution: {integrity: sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==}
2507
  engines: {node: '>=10'}
2508
 
2509
2510
- resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==}
2511
- engines: {node: '>= 0.4'}
2512
-
2513
2514
  resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==}
2515
 
@@ -2537,10 +2463,6 @@ packages:
2537
  resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==}
2538
  engines: {node: '>= 0.4'}
2539
 
2540
2541
- resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==}
2542
- engines: {node: '>= 0.4'}
2543
-
2544
2545
  resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==}
2546
 
@@ -3149,9 +3071,6 @@ packages:
3149
  jiti:
3150
  optional: true
3151
 
3152
3153
- resolution: {integrity: sha512-U9JedYYjCnadUlXk7e1Kr+aENQhtUaoaV9+gZm1T8LC/YBAPJx3NSPIAurFOC0U5vrdSevnUJS2/wUVxGwPhng==}
3154
-
3155
3156
  resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==}
3157
  engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
@@ -3164,9 +3083,6 @@ packages:
3164
  resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==}
3165
  engines: {node: '>=0.10'}
3166
 
3167
3168
- resolution: {integrity: sha512-ZlQmCCK+n7SGoqo7DnfKaP1sJZa49P01/dXzmjCASSo04p72w8EksT2NMK8CEX8DhKsfJXANioIw8VyHNsBfvQ==}
3169
-
3170
3171
  resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
3172
  engines: {node: '>=4.0'}
@@ -3820,9 +3736,6 @@ packages:
3820
  resolution: {integrity: sha512-9rrA30MRRP3gBD3HTGnC6cDFpaE1kVDWxWgqWJUN0RvDNAo+Nz/9GxB+nHOH0ifbVFy0hSA1V6vFDvnx54lTEQ==}
3821
  engines: {node: '>=14'}
3822
 
3823
3824
- resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==}
3825
-
3826
3827
  resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
3828
  engines: {node: '>=10'}
@@ -5190,11 +5103,6 @@ packages:
5190
  resolution: {integrity: sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==}
5191
  engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
5192
 
5193
5194
- resolution: {integrity: sha512-Cqc355SYlTAaUt8iDPaC/4DPPXK925PePLMxyBKuWd5kKc5mwsG3nT9+Mq2tyguL5s7b4Jg+IRMpTRsNTAfpSQ==}
5195
- peerDependencies:
5196
- svelte: ^4.0.0 || ^5.0.0-next.0
5197
-
5198
5199
  resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==}
5200
 
@@ -5285,23 +5193,11 @@ packages:
5285
  resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
5286
  engines: {node: '>= 0.4'}
5287
 
5288
5289
- resolution: {integrity: sha512-2I/mjD8cXDpKfdfUK+T6yo/OzugMXIm8lhyJUFM5F/gICMYnkl3C/+4cOSpia8TqpDsi6Qfm5+fdmBNMNmaf2g==}
5290
- engines: {node: '>=18'}
5291
-
5292
5293
  resolution: {integrity: sha512-QtxqyclFeAsxEUeZIYmsaQ0UjimSq1RZ9Un7I68/0ClKK/U3LoyQunwkQfJZr2fc22DfIXLNDc2wFyTEikCUpg==}
5294
  peerDependencies:
5295
  react: ^16.11.0 || ^17.0.0 || ^18.0.0
5296
 
5297
5298
- resolution: {integrity: sha512-LqVcOHSB4cPGgitD1riJ1Hh4vdmITOp+BkmfmXRh4hSF/t7EnS4iD+SOTmq7w5pPm/SiPeto4ADbKS6dHUDWFA==}
5299
-
5300
5301
- resolution: {integrity: sha512-zjEkcP8Ywmj+xOJW3lIT65ciY/4AL4e/Or7Gj0MzU3zBJNMdJiT8geVZhINavnlHRMMCcJLHhraLTAiDOTmQ9g==}
5302
- peerDependencies:
5303
- vue: '>=3.2.26 < 4'
5304
-
5305
5306
  resolution: {integrity: sha512-8lD+t2KrrScJ/7KXCSyfhT3/hRq78rC0wBFqNJXv3mZyn6hW2ypM05JmlSvtqRbeq6jqA94oHbxAr2vYsJ8vDA==}
5307
  engines: {node: '>=16.0.0'}
@@ -5721,14 +5617,6 @@ packages:
5721
5722
  resolution: {integrity: sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==}
5723
 
5724
5725
- resolution: {integrity: sha512-wmeiSMxkZCSc+PM2w2VRsOYAZC8GdipNFRTsLSfodVqI9mbejKeXEGr8SckuLnrQPGe3oJN5c3K0vpoU9q/wCQ==}
5726
- peerDependencies:
5727
- typescript: '*'
5728
- peerDependenciesMeta:
5729
- typescript:
5730
- optional: true
5731
-
5732
5733
  resolution: {integrity: sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==}
5734
 
@@ -5843,9 +5731,6 @@ packages:
5843
5844
  resolution: {integrity: sha512-UeVBXie8cA35DS6+nBkls68xaBBXCye0CNznrhszZjTbRVnJKQuNsyLKBTTL4ln1o1rh2PKtv35twV7irj5SEg==}
5845
 
5846
5847
- resolution: {integrity: sha512-rAbqEGa8ovJy4pyBxZM70hg4pE6gDgaQ0Sl9M3enG3I0d6H4XSAM3GeNGLKnsBpuijUow064sf7ww1nutC5/3w==}
5848
-
5849
5850
  resolution: {integrity: sha512-5wlSS0bXfF/BrL4jPAbz9da5hDlDptdEppYfe+x4eIJ7jioqKG9uUxOwPzqof09u/XeVdrgFu29lZi+8XNDJtA==}
5851
  peerDependencies:
@@ -5908,15 +5793,6 @@ snapshots:
5908
  optionalDependencies:
5909
  zod: 3.23.8
5910
 
5911
5912
- dependencies:
5913
- '@ai-sdk/provider': 0.0.26
5914
- eventsource-parser: 1.1.2
5915
- nanoid: 3.3.8
5916
- secure-json-parse: 2.7.0
5917
- optionalDependencies:
5918
- zod: 3.23.8
5919
-
5920
5921
  dependencies:
5922
  '@ai-sdk/provider': 0.0.17
@@ -5935,6 +5811,15 @@ snapshots:
5935
  optionalDependencies:
5936
  zod: 3.23.8
5937
 
 
 
 
 
 
 
 
 
 
5938
  '@ai-sdk/[email protected]':
5939
  dependencies:
5940
  json-schema: 0.4.0
@@ -5947,61 +5832,32 @@ snapshots:
5947
  dependencies:
5948
  json-schema: 0.4.0
5949
 
5950
- '@ai-sdk/provider@0.0.26':
5951
  dependencies:
5952
  json-schema: 0.4.0
5953
 
5954
- '@ai-sdk/[email protected].1':
5955
  dependencies:
5956
  json-schema: 0.4.0
5957
 
5958
- '@ai-sdk/react@0.0.70([email protected])([email protected])':
5959
  dependencies:
5960
- '@ai-sdk/provider-utils': 1.0.22([email protected])
5961
- '@ai-sdk/ui-utils': 0.0.50([email protected])
5962
  swr: 2.2.5([email protected])
5963
  throttleit: 2.1.0
5964
  optionalDependencies:
5965
  react: 18.3.1
5966
  zod: 3.23.8
5967
 
5968
- '@ai-sdk/solid@0.0.54([email protected])':
5969
- dependencies:
5970
- '@ai-sdk/provider-utils': 1.0.22([email protected])
5971
- '@ai-sdk/ui-utils': 0.0.50([email protected])
5972
- transitivePeerDependencies:
5973
- - zod
5974
-
5975
5976
- dependencies:
5977
- '@ai-sdk/provider-utils': 1.0.22([email protected])
5978
- '@ai-sdk/ui-utils': 0.0.50([email protected])
5979
- sswr: 2.1.0([email protected])
5980
- optionalDependencies:
5981
- svelte: 5.4.0
5982
- transitivePeerDependencies:
5983
- - zod
5984
-
5985
5986
  dependencies:
5987
- '@ai-sdk/provider': 0.0.26
5988
- '@ai-sdk/provider-utils': 1.0.22([email protected])
5989
- json-schema: 0.4.0
5990
- secure-json-parse: 2.7.0
5991
  zod-to-json-schema: 3.23.5([email protected])
5992
  optionalDependencies:
5993
  zod: 3.23.8
5994
 
5995
5996
- dependencies:
5997
- '@ai-sdk/provider-utils': 1.0.22([email protected])
5998
- '@ai-sdk/ui-utils': 0.0.50([email protected])
5999
6000
- optionalDependencies:
6001
- vue: 3.5.13([email protected])
6002
- transitivePeerDependencies:
6003
- - zod
6004
-
6005
  '@ampproject/[email protected]':
6006
  dependencies:
6007
  '@jridgewell/gen-mapping': 0.3.5
@@ -8045,60 +7901,6 @@ snapshots:
8045
  loupe: 3.1.2
8046
  tinyrainbow: 1.2.0
8047
 
8048
- '@vue/[email protected]':
8049
- dependencies:
8050
- '@babel/parser': 7.26.2
8051
- '@vue/shared': 3.5.13
8052
- entities: 4.5.0
8053
- estree-walker: 2.0.2
8054
- source-map-js: 1.2.1
8055
-
8056
- '@vue/[email protected]':
8057
- dependencies:
8058
- '@vue/compiler-core': 3.5.13
8059
- '@vue/shared': 3.5.13
8060
-
8061
- '@vue/[email protected]':
8062
- dependencies:
8063
- '@babel/parser': 7.26.2
8064
- '@vue/compiler-core': 3.5.13
8065
- '@vue/compiler-dom': 3.5.13
8066
- '@vue/compiler-ssr': 3.5.13
8067
- '@vue/shared': 3.5.13
8068
- estree-walker: 2.0.2
8069
- magic-string: 0.30.14
8070
- postcss: 8.4.49
8071
- source-map-js: 1.2.1
8072
-
8073
- '@vue/[email protected]':
8074
- dependencies:
8075
- '@vue/compiler-dom': 3.5.13
8076
- '@vue/shared': 3.5.13
8077
-
8078
- '@vue/[email protected]':
8079
- dependencies:
8080
- '@vue/shared': 3.5.13
8081
-
8082
- '@vue/[email protected]':
8083
- dependencies:
8084
- '@vue/reactivity': 3.5.13
8085
- '@vue/shared': 3.5.13
8086
-
8087
- '@vue/[email protected]':
8088
- dependencies:
8089
- '@vue/reactivity': 3.5.13
8090
- '@vue/runtime-core': 3.5.13
8091
- '@vue/shared': 3.5.13
8092
- csstype: 3.1.3
8093
-
8094
8095
- dependencies:
8096
- '@vue/compiler-ssr': 3.5.13
8097
- '@vue/shared': 3.5.13
8098
- vue: 3.5.13([email protected])
8099
-
8100
- '@vue/[email protected]': {}
8101
-
8102
  '@web3-storage/[email protected]': {}
8103
 
8104
  '@webcontainer/[email protected]': {}
@@ -8129,10 +7931,6 @@ snapshots:
8129
  dependencies:
8130
  acorn: 8.14.0
8131
 
8132
8133
- dependencies:
8134
- acorn: 8.14.0
8135
-
8136
8137
  dependencies:
8138
  acorn: 8.14.0
@@ -8144,29 +7942,18 @@ snapshots:
8144
  clean-stack: 2.2.0
8145
  indent-string: 4.0.0
8146
 
8147
8148
  dependencies:
8149
- '@ai-sdk/provider': 0.0.26
8150
- '@ai-sdk/provider-utils': 1.0.22([email protected])
8151
- '@ai-sdk/react': 0.0.70([email protected])([email protected])
8152
- '@ai-sdk/solid': 0.0.54([email protected])
8153
- '@ai-sdk/svelte': 0.0.57([email protected])([email protected])
8154
- '@ai-sdk/ui-utils': 0.0.50([email protected])
8155
8156
  '@opentelemetry/api': 1.9.0
8157
- eventsource-parser: 1.1.2
8158
- json-schema: 0.4.0
8159
  jsondiffpatch: 0.6.0
8160
- secure-json-parse: 2.7.0
8161
  zod-to-json-schema: 3.23.5([email protected])
8162
  optionalDependencies:
8163
  react: 18.3.1
8164
- sswr: 2.1.0([email protected])
8165
- svelte: 5.4.0
8166
  zod: 3.23.8
8167
- transitivePeerDependencies:
8168
- - solid-js
8169
- - vue
8170
 
8171
8172
  dependencies:
@@ -8198,8 +7985,6 @@ snapshots:
8198
  dependencies:
8199
  tslib: 2.8.1
8200
 
8201
8202
-
8203
8204
 
8205
@@ -8230,8 +8015,6 @@ snapshots:
8230
  dependencies:
8231
  possible-typed-array-names: 1.0.0
8232
 
8233
8234
-
8235
8236
 
8237
@@ -8931,8 +8714,6 @@ snapshots:
8931
  transitivePeerDependencies:
8932
  - supports-color
8933
 
8934
8935
-
8936
8937
  dependencies:
8938
  acorn: 8.14.0
@@ -8949,11 +8730,6 @@ snapshots:
8949
  dependencies:
8950
  estraverse: 5.3.0
8951
 
8952
8953
- dependencies:
8954
- '@jridgewell/sourcemap-codec': 1.5.0
8955
- '@types/estree': 1.0.6
8956
-
8957
8958
  dependencies:
8959
  estraverse: 5.3.0
@@ -9680,8 +9456,6 @@ snapshots:
9680
  mlly: 1.7.3
9681
  pkg-types: 1.2.1
9682
 
9683
9684
-
9685
9686
  dependencies:
9687
  p-locate: 5.0.0
@@ -11492,11 +11266,6 @@ snapshots:
11492
  dependencies:
11493
  minipass: 7.1.2
11494
 
11495
11496
- dependencies:
11497
- svelte: 5.4.0
11498
- swrev: 4.0.0
11499
-
11500
11501
 
11502
@@ -11587,34 +11356,12 @@ snapshots:
11587
 
11588
11589
 
11590
11591
- dependencies:
11592
- '@ampproject/remapping': 2.3.0
11593
- '@jridgewell/sourcemap-codec': 1.5.0
11594
- '@types/estree': 1.0.6
11595
- acorn: 8.14.0
11596
- acorn-typescript: 1.4.13([email protected])
11597
- aria-query: 5.3.2
11598
- axobject-query: 4.1.0
11599
- esm-env: 1.2.1
11600
- esrap: 1.2.3
11601
- is-reference: 3.0.3
11602
- locate-character: 3.0.0
11603
- magic-string: 0.30.14
11604
- zimmerframe: 1.1.2
11605
-
11606
11607
  dependencies:
11608
  client-only: 0.0.1
11609
  react: 18.3.1
11610
  use-sync-external-store: 1.2.2([email protected])
11611
 
11612
11613
-
11614
11615
- dependencies:
11616
- vue: 3.5.13([email protected])
11617
-
11618
11619
  dependencies:
11620
  sync-message-port: 1.1.3
@@ -12092,16 +11839,6 @@ snapshots:
12092
 
12093
12094
 
12095
12096
- dependencies:
12097
- '@vue/compiler-dom': 3.5.13
12098
- '@vue/compiler-sfc': 3.5.13
12099
- '@vue/runtime-dom': 3.5.13
12100
- '@vue/server-renderer': 3.5.13([email protected]([email protected]))
12101
- '@vue/shared': 3.5.13
12102
- optionalDependencies:
12103
- typescript: 5.7.2
12104
-
12105
12106
 
12107
@@ -12214,8 +11951,6 @@ snapshots:
12214
  mustache: 4.2.0
12215
  stacktracey: 2.1.8
12216
 
12217
12218
-
12219
12220
  dependencies:
12221
  zod: 3.23.8
 
141
  specifier: ^5.5.0
142
  version: 5.5.0
143
  ai:
144
+ specifier: ^4.0.13
145
146
  date-fns:
147
  specifier: ^3.6.0
148
  version: 3.6.0
 
351
  zod:
352
  optional: true
353
 
354
+ '@ai-sdk/[email protected].9':
355
+ resolution: {integrity: sha512-yfdanjUiCJbtGoRGXrcrmXn0pTyDfRIeY6ozDG96D66f2wupZaZvAgKptUa3zDYXtUCQQvcNJ+tipBBfQD/UYA==}
356
  engines: {node: '>=18'}
357
  peerDependencies:
358
  zod: ^3.0.0
 
360
  zod:
361
  optional: true
362
 
363
+ '@ai-sdk/provider-utils@2.0.2':
364
+ resolution: {integrity: sha512-IAvhKhdlXqiSmvx/D4uNlFYCl8dWT+M9K+IuEcSgnE2Aj27GWu8sDIpAf4r4Voc+wOUkOECVKQhFo8g9pozdjA==}
365
  engines: {node: '>=18'}
366
  peerDependencies:
367
  zod: ^3.0.0
 
369
  zod:
370
  optional: true
371
 
372
+ '@ai-sdk/[email protected].4':
373
+ resolution: {integrity: sha512-GMhcQCZbwM6RoZCri0MWeEWXRt/T+uCxsmHEsTwNvEH3GDjNzchfX25C8ftry2MeEOOn6KfqCLSKomcgK6RoOg==}
374
  engines: {node: '>=18'}
375
  peerDependencies:
376
  zod: ^3.0.0
 
390
  resolution: {integrity: sha512-XMsNGJdGO+L0cxhhegtqZ8+T6nn4EoShS819OvCgI2kLbYTIvk0GWFGD0AXJmxkxs3DrpsJxKAFukFR7bvTkgQ==}
391
  engines: {node: '>=18'}
392
 
 
 
 
 
393
  '@ai-sdk/[email protected]':
394
  resolution: {integrity: sha512-mV+3iNDkzUsZ0pR2jG0sVzU6xtQY5DtSCBy3JFycLp6PwjyLw/iodfL3MwdmMCRJWgs3dadcHejRnMvF9nGTBg==}
395
  engines: {node: '>=18'}
396
 
397
+ '@ai-sdk/provider@1.0.2':
398
+ resolution: {integrity: sha512-YYtP6xWQyaAf5LiWLJ+ycGTOeBLWrED7LUrvc+SQIWhGaneylqbaGsyQL7VouQUeQ4JZ1qKYZuhmi3W56HADPA==}
399
+ engines: {node: '>=18'}
400
+
401
+ '@ai-sdk/[email protected]':
402
+ resolution: {integrity: sha512-8Hkserq0Ge6AEi7N4hlv2FkfglAGbkoAXEZ8YSp255c3PbnZz6+/5fppw+aROmZMOfNwallSRuy1i/iPa2rBpQ==}
403
  engines: {node: '>=18'}
404
  peerDependencies:
405
  react: ^18 || ^19 || ^19.0.0-rc
 
410
  zod:
411
  optional: true
412
 
413
+ '@ai-sdk/ui-utils@1.0.5':
414
+ resolution: {integrity: sha512-DGJSbDf+vJyWmFNexSPUsS1AAy7gtsmFmoSyNbNbJjwl9hRIf2dknfA1V0ahx6pg3NNklNYFm53L8Nphjovfvg==}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
415
  engines: {node: '>=18'}
416
  peerDependencies:
417
  zod: ^3.0.0
 
419
  zod:
420
  optional: true
421
 
 
 
 
 
 
 
 
 
 
422
  '@ampproject/[email protected]':
423
  resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==}
424
  engines: {node: '>=6.0.0'}
 
2343
  '@vitest/[email protected]':
2344
  resolution: {integrity: sha512-dwSoui6djdwbfFmIgbIjX2ZhIoG7Ex/+xpxyiEgIGzjliY8xGkcpITKTlp6B4MgtGkF2ilvm97cPM96XZaAgcA==}
2345
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2346
  '@web3-storage/[email protected]':
2347
  resolution: {integrity: sha512-BEO6al7BYqcnfX15W2cnGR+Q566ACXAT9UQykORCWW80lmkpWsnEob6zJS1ZVBKsSJC8+7vJkHwlp+lXG1UCdw==}
2348
 
 
2378
  peerDependencies:
2379
  acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
2380
 
 
 
 
 
 
2381
2382
  resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==}
2383
  engines: {node: '>=0.4.0'}
 
2391
  resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==}
2392
  engines: {node: '>=8'}
2393
 
2394
+ ai@4.0.18:
2395
+ resolution: {integrity: sha512-BTWzalLNE1LQphEka5xzJXDs5v4xXy1Uzr7dAVk+C/CnO3WNpuMBgrCymwUv0VrWaWc8xMQuh+OqsT7P7JyekQ==}
2396
  engines: {node: '>=18'}
2397
  peerDependencies:
 
2398
  react: ^18 || ^19 || ^19.0.0-rc
 
 
2399
  zod: ^3.0.0
2400
  peerDependenciesMeta:
 
 
2401
  react:
2402
  optional: true
 
 
 
 
2403
  zod:
2404
  optional: true
2405
 
 
2436
  resolution: {integrity: sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==}
2437
  engines: {node: '>=10'}
2438
 
 
 
 
 
2439
2440
  resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==}
2441
 
 
2463
  resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==}
2464
  engines: {node: '>= 0.4'}
2465
 
 
 
 
 
2466
2467
  resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==}
2468
 
 
3071
  jiti:
3072
  optional: true
3073
 
 
 
 
3074
3075
  resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==}
3076
  engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
 
3083
  resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==}
3084
  engines: {node: '>=0.10'}
3085
 
 
 
 
3086
3087
  resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
3088
  engines: {node: '>=4.0'}
 
3736
  resolution: {integrity: sha512-9rrA30MRRP3gBD3HTGnC6cDFpaE1kVDWxWgqWJUN0RvDNAo+Nz/9GxB+nHOH0ifbVFy0hSA1V6vFDvnx54lTEQ==}
3737
  engines: {node: '>=14'}
3738
 
 
 
 
3739
3740
  resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
3741
  engines: {node: '>=10'}
 
5103
  resolution: {integrity: sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==}
5104
  engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
5105
 
 
 
 
 
 
5106
5107
  resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==}
5108
 
 
5193
  resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
5194
  engines: {node: '>= 0.4'}
5195
 
 
 
 
 
5196
5197
  resolution: {integrity: sha512-QtxqyclFeAsxEUeZIYmsaQ0UjimSq1RZ9Un7I68/0ClKK/U3LoyQunwkQfJZr2fc22DfIXLNDc2wFyTEikCUpg==}
5198
  peerDependencies:
5199
  react: ^16.11.0 || ^17.0.0 || ^18.0.0
5200
 
 
 
 
 
 
 
 
 
5201
5202
  resolution: {integrity: sha512-8lD+t2KrrScJ/7KXCSyfhT3/hRq78rC0wBFqNJXv3mZyn6hW2ypM05JmlSvtqRbeq6jqA94oHbxAr2vYsJ8vDA==}
5203
  engines: {node: '>=16.0.0'}
 
5617
5618
  resolution: {integrity: sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==}
5619
 
 
 
 
 
 
 
 
 
5620
5621
  resolution: {integrity: sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==}
5622
 
 
5731
5732
  resolution: {integrity: sha512-UeVBXie8cA35DS6+nBkls68xaBBXCye0CNznrhszZjTbRVnJKQuNsyLKBTTL4ln1o1rh2PKtv35twV7irj5SEg==}
5733
 
 
 
 
5734
5735
  resolution: {integrity: sha512-5wlSS0bXfF/BrL4jPAbz9da5hDlDptdEppYfe+x4eIJ7jioqKG9uUxOwPzqof09u/XeVdrgFu29lZi+8XNDJtA==}
5736
  peerDependencies:
 
5793
  optionalDependencies:
5794
  zod: 3.23.8
5795
 
 
 
 
 
 
 
 
 
 
5796
5797
  dependencies:
5798
  '@ai-sdk/provider': 0.0.17
 
5811
  optionalDependencies:
5812
  zod: 3.23.8
5813
 
5814
5815
+ dependencies:
5816
+ '@ai-sdk/provider': 1.0.2
5817
+ eventsource-parser: 3.0.0
5818
+ nanoid: 3.3.8
5819
+ secure-json-parse: 2.7.0
5820
+ optionalDependencies:
5821
+ zod: 3.23.8
5822
+
5823
  '@ai-sdk/[email protected]':
5824
  dependencies:
5825
  json-schema: 0.4.0
 
5832
  dependencies:
5833
  json-schema: 0.4.0
5834
 
5835
+ '@ai-sdk/provider@1.0.1':
5836
  dependencies:
5837
  json-schema: 0.4.0
5838
 
5839
+ '@ai-sdk/[email protected].2':
5840
  dependencies:
5841
  json-schema: 0.4.0
5842
 
5843
+ '@ai-sdk/react@1.0.6([email protected])([email protected])':
5844
  dependencies:
5845
+ '@ai-sdk/provider-utils': 2.0.4([email protected])
5846
+ '@ai-sdk/ui-utils': 1.0.5([email protected])
5847
  swr: 2.2.5([email protected])
5848
  throttleit: 2.1.0
5849
  optionalDependencies:
5850
  react: 18.3.1
5851
  zod: 3.23.8
5852
 
5853
+ '@ai-sdk/ui-utils@1.0.5([email protected])':
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5854
  dependencies:
5855
+ '@ai-sdk/provider': 1.0.2
5856
+ '@ai-sdk/provider-utils': 2.0.4([email protected])
 
 
5857
  zod-to-json-schema: 3.23.5([email protected])
5858
  optionalDependencies:
5859
  zod: 3.23.8
5860
 
 
 
 
 
 
 
 
 
 
 
5861
  '@ampproject/[email protected]':
5862
  dependencies:
5863
  '@jridgewell/gen-mapping': 0.3.5
 
7901
  loupe: 3.1.2
7902
  tinyrainbow: 1.2.0
7903
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7904
  '@web3-storage/[email protected]': {}
7905
 
7906
  '@webcontainer/[email protected]': {}
 
7931
  dependencies:
7932
  acorn: 8.14.0
7933
 
 
 
 
 
7934
7935
  dependencies:
7936
  acorn: 8.14.0
 
7942
  clean-stack: 2.2.0
7943
  indent-string: 4.0.0
7944
 
7945
7946
  dependencies:
7947
+ '@ai-sdk/provider': 1.0.2
7948
+ '@ai-sdk/provider-utils': 2.0.4([email protected])
7949
+ '@ai-sdk/react': 1.0.6([email protected])([email protected])
7950
+ '@ai-sdk/ui-utils': 1.0.5([email protected])
 
 
 
7951
  '@opentelemetry/api': 1.9.0
 
 
7952
  jsondiffpatch: 0.6.0
 
7953
  zod-to-json-schema: 3.23.5([email protected])
7954
  optionalDependencies:
7955
  react: 18.3.1
 
 
7956
  zod: 3.23.8
 
 
 
7957
 
7958
7959
  dependencies:
 
7985
  dependencies:
7986
  tslib: 2.8.1
7987
 
 
 
7988
7989
 
7990
 
8015
  dependencies:
8016
  possible-typed-array-names: 1.0.0
8017
 
 
 
8018
8019
 
8020
 
8714
  transitivePeerDependencies:
8715
  - supports-color
8716
 
 
 
8717
8718
  dependencies:
8719
  acorn: 8.14.0
 
8730
  dependencies:
8731
  estraverse: 5.3.0
8732
 
 
 
 
 
 
8733
8734
  dependencies:
8735
  estraverse: 5.3.0
 
9456
  mlly: 1.7.3
9457
  pkg-types: 1.2.1
9458
 
 
 
9459
9460
  dependencies:
9461
  p-locate: 5.0.0
 
11266
  dependencies:
11267
  minipass: 7.1.2
11268
 
 
 
 
 
 
11269
11270
 
11271
 
11356
 
11357
11358
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
11359
11360
  dependencies:
11361
  client-only: 0.0.1
11362
  react: 18.3.1
11363
  use-sync-external-store: 1.2.2([email protected])
11364
 
 
 
 
 
 
 
11365
11366
  dependencies:
11367
  sync-message-port: 1.1.3
 
11839
 
11840
11841
 
 
 
 
 
 
 
 
 
 
 
11842
11843
 
11844
 
11951
  mustache: 4.2.0
11952
  stacktracey: 2.1.8
11953
 
 
 
11954
11955
  dependencies:
11956
  zod: 3.23.8