diff --git a/apps/docs/package.json b/apps/docs/package.json index 493b4d26c..9036d74cc 100644 --- a/apps/docs/package.json +++ b/apps/docs/package.json @@ -23,7 +23,7 @@ "@radix-ui/react-slot": "^1.1.0", "@radix-ui/react-tooltip": "^1.1.2", "@radix-ui/themes": "^3.1.1", - "ai": "^3.2.19", + "ai": "^3.2.22", "class-variance-authority": "^0.7.0", "clsx": "^2.1.1", "fumadocs-core": "12.4.2", diff --git a/examples/search-agent-for-e-commerce/package.json b/examples/search-agent-for-e-commerce/package.json index 44907870a..ae16a71d7 100644 --- a/examples/search-agent-for-e-commerce/package.json +++ b/examples/search-agent-for-e-commerce/package.json @@ -16,7 +16,7 @@ "@radix-ui/react-popover": "^1.1.1", "@radix-ui/react-slot": "^1.1.0", "@radix-ui/react-tooltip": "^1.1.2", - "ai": "^3.2.19", + "ai": "^3.2.22", "class-variance-authority": "^0.7.0", "clsx": "^2.1.1", "embla-carousel-autoplay": "^8.1.6", diff --git a/examples/with-inline-suggestions/package.json b/examples/with-inline-suggestions/package.json index d0c44ff1e..c30cfd62b 100644 --- a/examples/with-inline-suggestions/package.json +++ b/examples/with-inline-suggestions/package.json @@ -15,7 +15,7 @@ "@radix-ui/react-avatar": "^1.1.0", "@radix-ui/react-slot": "^1.1.0", "@radix-ui/react-tooltip": "^1.1.2", - "ai": "^3.2.19", + "ai": "^3.2.22", "class-variance-authority": "^0.7.0", "clsx": "^2.1.1", "lucide-react": "^0.407.0", diff --git a/examples/with-openai-assistants/package.json b/examples/with-openai-assistants/package.json index 00a7c9e17..a66b8e604 100644 --- a/examples/with-openai-assistants/package.json +++ b/examples/with-openai-assistants/package.json @@ -13,12 +13,12 @@ "@assistant-ui/react": "workspace:*", "@assistant-ui/react-ai-sdk": "workspace:*", "@radix-ui/react-avatar": "^1.1.0", - "ai": "^3.2.19", + "ai": "^3.2.22", "class-variance-authority": "^0.7.0", "clsx": "^2.1.1", "lucide-react": "^0.407.0", "next": "14.2.5", - "openai": "^4.52.5", + "openai": "^4.52.7", "react": "^18", "react-dom": "^18", "tailwind-merge": "^2.4.0", diff --git a/examples/with-playground/next-env.d.ts b/examples/with-playground/next-env.d.ts new file mode 100644 index 000000000..4f11a03dc --- /dev/null +++ b/examples/with-playground/next-env.d.ts @@ -0,0 +1,5 @@ +/// +/// + +// NOTE: This file should not be edited +// see https://nextjs.org/docs/basic-features/typescript for more information. diff --git a/examples/with-vercel-ai-rsc/package.json b/examples/with-vercel-ai-rsc/package.json index abb06178d..5fda80d85 100644 --- a/examples/with-vercel-ai-rsc/package.json +++ b/examples/with-vercel-ai-rsc/package.json @@ -16,7 +16,7 @@ "@radix-ui/react-icons": "^1.3.0", "@radix-ui/react-slot": "^1.1.0", "@radix-ui/react-tooltip": "^1.1.2", - "ai": "3.2.19", + "ai": "3.2.22", "class-variance-authority": "^0.7.0", "clsx": "^2.1.1", "lucide-react": "^0.407.0", diff --git a/packages/react-markdown/src/primitives/MarkdownText.tsx b/packages/react-markdown/src/primitives/MarkdownText.tsx index d9de761c7..a9bba68ef 100644 --- a/packages/react-markdown/src/primitives/MarkdownText.tsx +++ b/packages/react-markdown/src/primitives/MarkdownText.tsx @@ -1,3 +1,5 @@ +"use client"; + import { INTERNAL, useContentPartText } from "@assistant-ui/react"; import type { ComponentType, FC } from "react"; import ReactMarkdown, { type Options } from "react-markdown"; diff --git a/packages/react/package.json b/packages/react/package.json index 89e18fcdd..0ff2db487 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -29,7 +29,7 @@ "conversational-ui", "conversational-ai" ], - "version": "0.4.0", + "version": "0.4.1", "license": "MIT", "exports": { ".": { diff --git a/packages/react/src/primitives/contentPart/ContentPartText.tsx b/packages/react/src/primitives/contentPart/ContentPartText.tsx index 3fc21a083..d178beba5 100644 --- a/packages/react/src/primitives/contentPart/ContentPartText.tsx +++ b/packages/react/src/primitives/contentPart/ContentPartText.tsx @@ -1,3 +1,5 @@ +"use client"; + import { Primitive } from "@radix-ui/react-primitive"; import { type ElementRef, forwardRef, ComponentPropsWithoutRef } from "react"; import { useContentPartText } from "../../primitive-hooks/contentPart/useContentPartText"; diff --git a/packages/react/src/ui/thread-config.tsx b/packages/react/src/ui/thread-config.tsx index 50a604f10..140631d94 100644 --- a/packages/react/src/ui/thread-config.tsx +++ b/packages/react/src/ui/thread-config.tsx @@ -1,3 +1,5 @@ +"use client"; + import { FC, PropsWithChildren, createContext, useContext } from "react"; import { AvatarProps } from "./base/avatar"; diff --git a/packages/react/src/utils/hooks/useSmooth.tsx b/packages/react/src/utils/hooks/useSmooth.tsx index a44a13912..d74a374f6 100644 --- a/packages/react/src/utils/hooks/useSmooth.tsx +++ b/packages/react/src/utils/hooks/useSmooth.tsx @@ -1,3 +1,5 @@ +"use client"; + import { useEffect, useState } from "react"; class TextStreamAnimator { @@ -7,7 +9,8 @@ class TextStreamAnimator { public targetText: string = ""; constructor( - private setText: (callback: (prevText: string) => string) => void, + public currentText: string, + private setText: (newText: string) => void, ) {} start() { @@ -28,40 +31,35 @@ class TextStreamAnimator { const deltaTime = currentTime - this.lastUpdateTime; let timeToConsume = deltaTime; - this.setText((currentText) => { - const targetText = this.targetText; - - if (currentText === targetText) { - this.animationFrameId = null; - return currentText; - } - - const remainingChars = targetText.length - currentText.length; - const baseTimePerChar = Math.min(5, 250 / remainingChars); + const remainingChars = this.targetText.length - this.currentText.length; + const baseTimePerChar = Math.min(5, 250 / remainingChars); - let charsToAdd = 0; - while (timeToConsume >= baseTimePerChar && charsToAdd < remainingChars) { - charsToAdd++; - timeToConsume -= baseTimePerChar; - } + let charsToAdd = 0; + while (timeToConsume >= baseTimePerChar && charsToAdd < remainingChars) { + charsToAdd++; + timeToConsume -= baseTimePerChar; + } + if (charsToAdd !== remainingChars) { this.animationFrameId = requestAnimationFrame(this.animate); - - if (charsToAdd === 0) { - return currentText; - } - - const newText = targetText.slice(0, currentText.length + charsToAdd); - this.lastUpdateTime = currentTime - timeToConsume; - return newText; - }); + } else { + this.animationFrameId = null; + } + if (charsToAdd === 0) return; + + this.currentText = this.targetText.slice( + 0, + this.currentText.length + charsToAdd, + ); + this.lastUpdateTime = currentTime - timeToConsume; + this.setText(this.currentText); }; } export const useSmooth = (text: string, smooth: boolean = false) => { const [displayedText, setDisplayedText] = useState(text); const [animatorRef] = useState( - new TextStreamAnimator(setDisplayedText), + new TextStreamAnimator(text, setDisplayedText), ); useEffect(() => { @@ -72,8 +70,10 @@ export const useSmooth = (text: string, smooth: boolean = false) => { if (!text.startsWith(animatorRef.targetText)) { setDisplayedText(text); + animatorRef.currentText = text; animatorRef.targetText = text; animatorRef.stop(); + return; } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 896c1e3e4..1d57d215b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -69,8 +69,8 @@ importers: specifier: ^3.1.1 version: 3.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) ai: - specifier: ^3.2.19 - version: 3.2.19(openai@4.52.5)(react@18.3.1)(svelte@4.2.18)(vue@3.4.31(typescript@5.5.3))(zod@3.23.8) + specifier: ^3.2.22 + version: 3.2.22(openai@4.52.7)(react@18.3.1)(svelte@4.2.18)(vue@3.4.31(typescript@5.5.3))(zod@3.23.8) class-variance-authority: specifier: ^0.7.0 version: 0.7.0 @@ -79,22 +79,22 @@ importers: version: 2.1.1 fumadocs-core: specifier: 12.4.2 - version: 12.4.2(@types/react@18.3.3)(next@14.2.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 12.4.2(@types/react@18.3.3)(next@14.2.5(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) fumadocs-mdx: specifier: 8.2.33 - version: 8.2.33(fumadocs-core@12.4.2(@types/react@18.3.3)(next@14.2.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(next@14.2.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + version: 8.2.33(fumadocs-core@12.4.2(@types/react@18.3.3)(next@14.2.5(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(next@14.2.5(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) fumadocs-ui: specifier: 12.4.2 - version: 12.4.2(@types/react-dom@18.3.0)(@types/react@18.3.3)(next@14.2.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tailwindcss@3.4.4) + version: 12.4.2(@types/react-dom@18.3.0)(@types/react@18.3.3)(next@14.2.5(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tailwindcss@3.4.4) geist: specifier: ^1.3.1 - version: 1.3.1(next@14.2.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + version: 1.3.1(next@14.2.5(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) lucide-react: specifier: ^0.407.0 version: 0.407.0(react@18.3.1) next: specifier: ^14.2.5 - version: 14.2.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 14.2.5(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: specifier: ^18.3.1 version: 18.3.1 @@ -163,8 +163,8 @@ importers: specifier: ^1.1.2 version: 1.1.2(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) ai: - specifier: ^3.2.19 - version: 3.2.19(openai@4.52.5)(react@18.3.1)(svelte@4.2.18)(vue@3.4.31(typescript@5.5.3))(zod@3.23.8) + specifier: ^3.2.22 + version: 3.2.22(openai@4.52.7)(react@18.3.1)(svelte@4.2.18)(vue@3.4.31(typescript@5.5.3))(zod@3.23.8) class-variance-authority: specifier: ^0.7.0 version: 0.7.0 @@ -185,7 +185,7 @@ importers: version: 5.0.7 next: specifier: 14.2.5 - version: 14.2.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 14.2.5(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: specifier: ^18.3.1 version: 18.3.1 @@ -248,8 +248,8 @@ importers: specifier: ^1.1.2 version: 1.1.2(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) ai: - specifier: ^3.2.19 - version: 3.2.19(openai@4.52.5)(react@18.3.1)(svelte@4.2.18)(vue@3.4.31(typescript@5.5.3))(zod@3.23.8) + specifier: ^3.2.22 + version: 3.2.22(openai@4.52.7)(react@18.3.1)(svelte@4.2.18)(vue@3.4.31(typescript@5.5.3))(zod@3.23.8) class-variance-authority: specifier: ^0.7.0 version: 0.7.0 @@ -261,7 +261,7 @@ importers: version: 0.407.0(react@18.3.1) next: specifier: 14.2.5 - version: 14.2.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 14.2.5(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: specifier: ^18 version: 18.3.1 @@ -315,8 +315,8 @@ importers: specifier: ^1.1.0 version: 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) ai: - specifier: ^3.2.19 - version: 3.2.19(openai@4.52.5)(react@18.3.1)(svelte@4.2.18)(vue@3.4.31(typescript@5.5.3))(zod@3.23.8) + specifier: ^3.2.22 + version: 3.2.22(openai@4.52.7)(react@18.3.1)(svelte@4.2.18)(vue@3.4.31(typescript@5.5.3))(zod@3.23.8) class-variance-authority: specifier: ^0.7.0 version: 0.7.0 @@ -328,10 +328,10 @@ importers: version: 0.407.0(react@18.3.1) next: specifier: 14.2.5 - version: 14.2.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 14.2.5(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) openai: - specifier: ^4.52.5 - version: 4.52.5 + specifier: ^4.52.7 + version: 4.52.7 react: specifier: ^18 version: 18.3.1 @@ -373,6 +373,64 @@ importers: specifier: ^5 version: 5.5.3 + examples/with-playground: + dependencies: + '@ai-sdk/openai': + specifier: ^0.0.36 + version: 0.0.36(zod@3.23.8) + '@ai-sdk/react': + specifier: ^0.0.20 + version: 0.0.20(react@18.3.1)(zod@3.23.8) + '@assistant-ui/react': + specifier: workspace:* + version: link:../../packages/react + '@assistant-ui/react-ai-sdk': + specifier: workspace:* + version: link:../../packages/react-ai-sdk + ai: + specifier: ^3.2.22 + version: 3.2.22(openai@4.52.7)(react@18.3.1)(svelte@4.2.18)(vue@3.4.31(typescript@5.5.3))(zod@3.23.8) + next: + specifier: 14.2.5 + version: 14.2.5(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: + specifier: ^18 + version: 18.3.1 + react-dom: + specifier: ^18 + version: 18.3.1(react@18.3.1) + tailwindcss-animate: + specifier: ^1.0.7 + version: 1.0.7(tailwindcss@3.4.4) + devDependencies: + '@assistant-ui/tsconfig': + specifier: workspace:^ + version: link:../../packages/tsconfig + '@types/node': + specifier: ^20 + version: 20.14.10 + '@types/react': + specifier: ^18 + version: 18.3.3 + '@types/react-dom': + specifier: ^18 + version: 18.3.0 + eslint: + specifier: ^8 + version: 8.57.0 + eslint-config-next: + specifier: 14.2.5 + version: 14.2.5(eslint@8.57.0)(typescript@5.5.3) + postcss: + specifier: ^8 + version: 8.4.39 + tailwindcss: + specifier: ^3.4.4 + version: 3.4.4 + typescript: + specifier: ^5 + version: 5.5.3 + examples/with-react-hook-form: dependencies: '@ai-sdk/openai': @@ -422,7 +480,7 @@ importers: version: 0.407.0(react@18.3.1) next: specifier: 14.2.5 - version: 14.2.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 14.2.5(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: specifier: ^18 version: 18.3.1 @@ -503,8 +561,8 @@ importers: specifier: ^1.1.2 version: 1.1.2(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) ai: - specifier: 3.2.19 - version: 3.2.19(openai@4.52.5)(react@18.3.1)(svelte@4.2.18)(vue@3.4.31(typescript@5.5.3))(zod@3.23.8) + specifier: 3.2.22 + version: 3.2.22(openai@4.52.7)(react@18.3.1)(svelte@4.2.18)(vue@3.4.31(typescript@5.5.3))(zod@3.23.8) class-variance-authority: specifier: ^0.7.0 version: 0.7.0 @@ -519,7 +577,7 @@ importers: version: 5.0.7 next: specifier: 14.2.5 - version: 14.2.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 14.2.5(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: specifier: ^18.3.1 version: 18.3.1 @@ -726,7 +784,7 @@ importers: version: 18.3.3 ai: specifier: ^3.1.x - version: 3.2.19(openai@4.52.5)(react@18.3.1)(svelte@4.2.18)(vue@3.4.31(typescript@5.5.3))(zod@3.23.8) + version: 3.2.19(openai@4.52.7)(react@18.3.1)(svelte@4.2.18)(vue@3.4.31(typescript@5.5.3))(zod@3.23.8) react: specifier: ^18 version: 18.3.1 @@ -963,6 +1021,15 @@ packages: peerDependencies: zod: ^3.0.0 + '@ai-sdk/provider-utils@0.0.14': + resolution: {integrity: sha512-PCQFN3MlC6DShS/81IFU9NVvt9OekQGiZTEowRc2AwAwWrDsv7er3UkcMswFAL/Z7xZKjgu0dZTNH1z9oUlo7A==} + engines: {node: '>=18'} + peerDependencies: + zod: ^3.0.0 + peerDependenciesMeta: + zod: + optional: true + '@ai-sdk/provider-utils@1.0.2': resolution: {integrity: sha512-57f6O4OFVNEpI8Z8o+K40tIB3YQiTw+VCql/qrAO9Utq7Ti1o6+X9tvm177DlZJL7ft0Rwzvgy48S9YhrEKgmA==} engines: {node: '>=18'} @@ -972,6 +1039,10 @@ packages: zod: optional: true + '@ai-sdk/provider@0.0.10': + resolution: {integrity: sha512-NzkrtREQpHID1cTqY/C4CI30PVOaXWKYytDR2EcytmFgnP7Z6+CrGIA/YCnNhYAuUm6Nx+nGpRL/Hmyrv7NYzg==} + engines: {node: '>=18'} + '@ai-sdk/provider@0.0.12': resolution: {integrity: sha512-oOwPQD8i2Ynpn22cur4sk26FW3mSy6t6/X/K1Ay2yGBKYiSpRyLfObhOrZEGsXDx+3euKy4nEZ193R36NM+tpQ==} engines: {node: '>=18'} @@ -988,6 +1059,18 @@ packages: zod: optional: true + '@ai-sdk/react@0.0.20': + resolution: {integrity: sha512-L/PFqvT+rZd/aYZekEWXuVW3zooJEZAf2O5wL5JeKi71slBEuKZGGZP/7GzyX+8Uhl3JOg4wOdJTO/dogWzbAQ==} + engines: {node: '>=18'} + peerDependencies: + react: ^18 || ^19 + zod: ^3.0.0 + peerDependenciesMeta: + react: + optional: true + zod: + optional: true + '@ai-sdk/solid@0.0.13': resolution: {integrity: sha512-n+0PG7qtS3OY+OjTzRAhH1NxH09g5/71+TXBnpaxjDIZ02KK46JL4Tk4n0aI9r1HS1n9R/nx0Uiqu2UIPaVtgA==} engines: {node: '>=18'} @@ -997,6 +1080,15 @@ packages: solid-js: optional: true + '@ai-sdk/solid@0.0.14': + resolution: {integrity: sha512-9esGkm7/jocNELfGstrd3TYgWycXLP0OG6LXGGaEXd7v75eEp067avoLgQuPdWmzjnJD2U7N8u4wXa0lLd0WQQ==} + engines: {node: '>=18'} + peerDependencies: + solid-js: ^1.7.7 + peerDependenciesMeta: + solid-js: + optional: true + '@ai-sdk/svelte@0.0.14': resolution: {integrity: sha512-6CyuiUXgIXpgLuL7PE1evVZtO8OjqD/Pjz5vGXnSjgbP8+tTZU5nglFYwEdwJ1rKssohnyGuAXA7+9+vTVhZMw==} engines: {node: '>=18'} @@ -1006,6 +1098,15 @@ packages: svelte: optional: true + '@ai-sdk/svelte@0.0.15': + resolution: {integrity: sha512-k4WwNgAddrQhumC6ogjZ/MPEk9kn3xEcD4CLX4CURX7y+641ktDIcZr5KeS+4o9U/jTrjSbYBJVr5HjoWm+Ixg==} + engines: {node: '>=18'} + peerDependencies: + svelte: ^3.0.0 || ^4.0.0 + peerDependenciesMeta: + svelte: + optional: true + '@ai-sdk/ui-utils@0.0.11': resolution: {integrity: sha512-1Ag67zp0xue0i4g6TUF8L7YPkmYPlX3iiDUY9tsMqVjViqnvG6458fc2Mnh2yGgDjt0URv0rpjORPquxO/Llgw==} engines: {node: '>=18'} @@ -1015,6 +1116,15 @@ packages: zod: optional: true + '@ai-sdk/ui-utils@0.0.12': + resolution: {integrity: sha512-ivveEuneZPOUKqcIqZRCr2NUD+LJC8mYfL7jJRWaCr+JZqdYZ+5uR/nc8GKCly2TcC9/qoF3zxQuZEn0c5805g==} + engines: {node: '>=18'} + peerDependencies: + zod: ^3.0.0 + peerDependenciesMeta: + zod: + optional: true + '@ai-sdk/vue@0.0.13': resolution: {integrity: sha512-uBw8ZzvPev02dlfk7jQeRyd3mx4EkvGnxhxHnZlSJY6tqkLx8XMfR6vx4dwphbjiAXQWqOFUb0rZyr/JyQfREg==} engines: {node: '>=18'} @@ -1024,6 +1134,15 @@ packages: vue: optional: true + '@ai-sdk/vue@0.0.15': + resolution: {integrity: sha512-e8JBjZWV7MYdGcgiZCNp2qso/HdqJ2hSRD54oEELfiHgVf2y3FLnnRnc4M1MwyvX6WaVYvAd6+pdDgwVjU7h1Q==} + engines: {node: '>=18'} + peerDependencies: + vue: ^3.3.4 + peerDependenciesMeta: + vue: + optional: true + '@alloc/quick-lru@5.2.0': resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} engines: {node: '>=10'} @@ -1521,6 +1640,10 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} + '@opentelemetry/api@1.9.0': + resolution: {integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==} + engines: {node: '>=8.0.0'} + '@pkgjs/parseargs@0.11.0': resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} @@ -2607,6 +2730,24 @@ packages: zod: optional: true + ai@3.2.22: + resolution: {integrity: sha512-2u2YT6cf/bTRexUtSiSDco/3/z/xlQ9iiW3y2aH05RwDlj9Q6rpALsTdjRNcglI+OBPaXUEORB/bD1dRwxob6Q==} + engines: {node: '>=18'} + peerDependencies: + openai: ^4.42.0 + react: ^18 || ^19 + svelte: ^3.0.0 || ^4.0.0 + zod: ^3.0.0 + peerDependenciesMeta: + openai: + optional: true + react: + optional: true + svelte: + optional: true + zod: + optional: true + ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} @@ -4463,8 +4604,8 @@ packages: resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} engines: {node: '>=12'} - openai@4.52.5: - resolution: {integrity: sha512-qqH8GsyPE3z06took/2uWOGqRcrZNlRoPAsihpg4jsl0+2Dfelnw6HDDMep0EI2Cfzw75nn3vHRZehep/IZzxg==} + openai@4.52.7: + resolution: {integrity: sha512-dgxA6UZHary6NXUHEDj5TWt8ogv0+ibH+b4pT5RrWMjiRZVylNwLcw/2ubDrX5n0oUmHX/ZgudMJeemxzOvz7A==} hasBin: true optionator@0.9.4: @@ -5622,6 +5763,15 @@ snapshots: '@ai-sdk/provider-utils': 1.0.2(zod@3.23.8) zod: 3.23.8 + '@ai-sdk/provider-utils@0.0.14(zod@3.23.8)': + dependencies: + '@ai-sdk/provider': 0.0.10 + eventsource-parser: 1.1.2 + nanoid: 3.3.6 + secure-json-parse: 2.7.0 + optionalDependencies: + zod: 3.23.8 + '@ai-sdk/provider-utils@1.0.2(zod@3.23.8)': dependencies: '@ai-sdk/provider': 0.0.12 @@ -5631,6 +5781,10 @@ snapshots: optionalDependencies: zod: 3.23.8 + '@ai-sdk/provider@0.0.10': + dependencies: + json-schema: 0.4.0 + '@ai-sdk/provider@0.0.12': dependencies: json-schema: 0.4.0 @@ -5644,12 +5798,27 @@ snapshots: react: 18.3.1 zod: 3.23.8 + '@ai-sdk/react@0.0.20(react@18.3.1)(zod@3.23.8)': + dependencies: + '@ai-sdk/provider-utils': 1.0.2(zod@3.23.8) + '@ai-sdk/ui-utils': 0.0.12(zod@3.23.8) + swr: 2.2.0(react@18.3.1) + optionalDependencies: + react: 18.3.1 + zod: 3.23.8 + '@ai-sdk/solid@0.0.13(zod@3.23.8)': dependencies: '@ai-sdk/ui-utils': 0.0.11(zod@3.23.8) transitivePeerDependencies: - zod + '@ai-sdk/solid@0.0.14(zod@3.23.8)': + dependencies: + '@ai-sdk/ui-utils': 0.0.12(zod@3.23.8) + transitivePeerDependencies: + - zod + '@ai-sdk/svelte@0.0.14(svelte@4.2.18)(zod@3.23.8)': dependencies: '@ai-sdk/provider-utils': 1.0.2(zod@3.23.8) @@ -5660,6 +5829,16 @@ snapshots: transitivePeerDependencies: - zod + '@ai-sdk/svelte@0.0.15(svelte@4.2.18)(zod@3.23.8)': + dependencies: + '@ai-sdk/provider-utils': 1.0.2(zod@3.23.8) + '@ai-sdk/ui-utils': 0.0.12(zod@3.23.8) + sswr: 2.1.0(svelte@4.2.18) + optionalDependencies: + svelte: 4.2.18 + transitivePeerDependencies: + - zod + '@ai-sdk/ui-utils@0.0.11(zod@3.23.8)': dependencies: '@ai-sdk/provider-utils': 1.0.2(zod@3.23.8) @@ -5667,6 +5846,13 @@ snapshots: optionalDependencies: zod: 3.23.8 + '@ai-sdk/ui-utils@0.0.12(zod@3.23.8)': + dependencies: + '@ai-sdk/provider-utils': 1.0.2(zod@3.23.8) + secure-json-parse: 2.7.0 + optionalDependencies: + zod: 3.23.8 + '@ai-sdk/vue@0.0.13(vue@3.4.31(typescript@5.5.3))(zod@3.23.8)': dependencies: '@ai-sdk/ui-utils': 0.0.11(zod@3.23.8) @@ -5676,6 +5862,16 @@ snapshots: transitivePeerDependencies: - zod + '@ai-sdk/vue@0.0.15(vue@3.4.31(typescript@5.5.3))(zod@3.23.8)': + dependencies: + '@ai-sdk/provider-utils': 0.0.14(zod@3.23.8) + '@ai-sdk/ui-utils': 0.0.12(zod@3.23.8) + swrv: 1.0.4(vue@3.4.31(typescript@5.5.3)) + optionalDependencies: + vue: 3.4.31(typescript@5.5.3) + transitivePeerDependencies: + - zod + '@alloc/quick-lru@5.2.0': {} '@ampproject/remapping@2.3.0': @@ -6285,6 +6481,8 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.17.1 + '@opentelemetry/api@1.9.0': {} + '@pkgjs/parseargs@0.11.0': optional: true @@ -7430,7 +7628,7 @@ snapshots: dependencies: humanize-ms: 1.2.1 - ai@3.2.19(openai@4.52.5)(react@18.3.1)(svelte@4.2.18)(vue@3.4.31(typescript@5.5.3))(zod@3.23.8): + ai@3.2.19(openai@4.52.7)(react@18.3.1)(svelte@4.2.18)(vue@3.4.31(typescript@5.5.3))(zod@3.23.8): dependencies: '@ai-sdk/provider': 0.0.12 '@ai-sdk/provider-utils': 1.0.2(zod@3.23.8) @@ -7447,7 +7645,33 @@ snapshots: sswr: 2.1.0(svelte@4.2.18) zod-to-json-schema: 3.22.5(zod@3.23.8) optionalDependencies: - openai: 4.52.5 + openai: 4.52.7 + react: 18.3.1 + svelte: 4.2.18 + zod: 3.23.8 + transitivePeerDependencies: + - solid-js + - vue + + ai@3.2.22(openai@4.52.7)(react@18.3.1)(svelte@4.2.18)(vue@3.4.31(typescript@5.5.3))(zod@3.23.8): + dependencies: + '@ai-sdk/provider': 0.0.12 + '@ai-sdk/provider-utils': 1.0.2(zod@3.23.8) + '@ai-sdk/react': 0.0.20(react@18.3.1)(zod@3.23.8) + '@ai-sdk/solid': 0.0.14(zod@3.23.8) + '@ai-sdk/svelte': 0.0.15(svelte@4.2.18)(zod@3.23.8) + '@ai-sdk/ui-utils': 0.0.12(zod@3.23.8) + '@ai-sdk/vue': 0.0.15(vue@3.4.31(typescript@5.5.3))(zod@3.23.8) + '@opentelemetry/api': 1.9.0 + eventsource-parser: 1.1.2 + json-schema: 0.4.0 + jsondiffpatch: 0.6.0 + nanoid: 3.3.6 + secure-json-parse: 2.7.0 + sswr: 2.1.0(svelte@4.2.18) + zod-to-json-schema: 3.22.5(zod@3.23.8) + optionalDependencies: + openai: 4.52.7 react: 18.3.1 svelte: 4.2.18 zod: 3.23.8 @@ -8516,7 +8740,7 @@ snapshots: fsevents@2.3.3: optional: true - fumadocs-core@12.4.2(@types/react@18.3.3)(next@14.2.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + fumadocs-core@12.4.2(@types/react@18.3.3)(next@14.2.5(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: '@formatjs/intl-localematcher': 0.5.4 '@shikijs/rehype': 1.10.3 @@ -8524,7 +8748,7 @@ snapshots: flexsearch: 0.7.21 github-slugger: 2.0.0 negotiator: 0.6.3 - next: 14.2.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + next: 14.2.5(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) npm-to-yarn: 2.2.1 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -8540,20 +8764,20 @@ snapshots: - '@types/react' - supports-color - fumadocs-mdx@8.2.33(fumadocs-core@12.4.2(@types/react@18.3.3)(next@14.2.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(next@14.2.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)): + fumadocs-mdx@8.2.33(fumadocs-core@12.4.2(@types/react@18.3.3)(next@14.2.5(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(next@14.2.5(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)): dependencies: '@mdx-js/mdx': 3.0.1 cross-spawn: 7.0.3 estree-util-value-to-estree: 3.1.2 fast-glob: 3.3.2 - fumadocs-core: 12.4.2(@types/react@18.3.3)(next@14.2.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + fumadocs-core: 12.4.2(@types/react@18.3.3)(next@14.2.5(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) gray-matter: 4.0.3 - next: 14.2.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + next: 14.2.5(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) zod: 3.23.8 transitivePeerDependencies: - supports-color - fumadocs-ui@12.4.2(@types/react-dom@18.3.0)(@types/react@18.3.3)(next@14.2.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tailwindcss@3.4.4): + fumadocs-ui@12.4.2(@types/react-dom@18.3.0)(@types/react@18.3.3)(next@14.2.5(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tailwindcss@3.4.4): dependencies: '@radix-ui/react-accordion': 1.2.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@radix-ui/react-collapsible': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -8565,9 +8789,9 @@ snapshots: '@tailwindcss/typography': 0.5.13(tailwindcss@3.4.4) class-variance-authority: 0.7.0 cmdk: 1.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - fumadocs-core: 12.4.2(@types/react@18.3.3)(next@14.2.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + fumadocs-core: 12.4.2(@types/react@18.3.3)(next@14.2.5(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) lucide-react: 0.400.0(react@18.3.1) - next: 14.2.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + next: 14.2.5(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) next-themes: 0.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -8590,9 +8814,9 @@ snapshots: functions-have-names@1.2.3: {} - geist@1.3.1(next@14.2.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)): + geist@1.3.1(next@14.2.5(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)): dependencies: - next: 14.2.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + next: 14.2.5(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) gensync@1.0.0-beta.2: {} @@ -9766,7 +9990,7 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - next@14.2.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + next@14.2.5(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: '@next/env': 14.2.5 '@swc/helpers': 0.5.5 @@ -9787,6 +10011,7 @@ snapshots: '@next/swc-win32-arm64-msvc': 14.2.5 '@next/swc-win32-ia32-msvc': 14.2.5 '@next/swc-win32-x64-msvc': 14.2.5 + '@opentelemetry/api': 1.9.0 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros @@ -9882,7 +10107,7 @@ snapshots: dependencies: mimic-fn: 4.0.0 - openai@4.52.5: + openai@4.52.7: dependencies: '@types/node': 18.19.39 '@types/node-fetch': 2.6.11